From phillit
Search philosophy literature across SEP, IEP, PhilPapers, Semantic Scholar, OpenAlex, CORE, arXiv, and NDPR. Supports paper discovery, citation traversal, content enrichment, and recommendations. Verifies citations via CrossRef. Use when searching for philosophy papers or encyclopedia entries, verifying that a citation exists, or collecting literature for a review.
How this skill is triggered — by the user, by Claude, or both
Slash command
/phillit:philosophy-researchThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Search and retrieve academic philosophy literature using structured APIs instead of WebSearch.
scripts/__init__.pyscripts/brave_search.pyscripts/check_setup.pyscripts/citation_context.pyscripts/fetch_iep.pyscripts/fetch_ndpr.pyscripts/fetch_sep.pyscripts/get_abstract.pyscripts/get_iep_context.pyscripts/get_sep_context.pyscripts/output.pyscripts/rate_limiter.pyscripts/s2_batch.pyscripts/s2_citations.pyscripts/s2_formatters.pyscripts/s2_recommend.pyscripts/s2_search.pyscripts/search_arxiv.pyscripts/search_cache.pyscripts/search_core.pySearch and retrieve academic philosophy literature using structured APIs instead of WebSearch.
Setup check: If the current directory has no .phillit/ marker, PhilLit has not been set up here — offer to run /phillit:setup (a quick one-time step) before continuing.
Use this skill when:
# Discover relevant SEP articles
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/search_sep.py "free will"
# Extract structured content from an SEP entry
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/fetch_sep.py freewill --sections "preamble,1,2,bibliography"
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/fetch_sep.py freewill --bibliography-only
# Discover relevant IEP articles (different coverage from SEP)
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/search_iep.py "free will"
# Extract structured content from an IEP entry
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/fetch_iep.py freewill --sections "1,2,3,bibliography"
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/fetch_iep.py freewill --bibliography-only
Parse the bibliographies for foundational works, then search for those papers.
# Philosophy-specific paper search
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/search_philpapers.py "epistemic injustice"
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/search_philpapers.py "virtue epistemology" --recent
# Semantic Scholar - broad academic search
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/s2_search.py "moral responsibility" --field Philosophy --year 2015-2025
# OpenAlex - 250M+ works, cross-disciplinary
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/search_openalex.py "consciousness" --year 2020-2024 --min-citations 10
# CORE - 431M+ research outputs, 46M full texts, excellent for abstracts
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/search_core.py "epistemic injustice" --year 2020-2024
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/search_core.py --doi "10.1111/nous.12191"
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/search_core.py --title "Freedom of the Will" --author "Frankfurt"
# arXiv - preprints, AI ethics, recent work
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/search_arxiv.py "AI alignment ethics" --category cs.AI --recent
Note: CORE API is rate-limited to 5 requests per 10 seconds (free tier, no API key required).
# Get references and citations for a paper
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/s2_citations.py PAPER_ID --both --influential-only
# Find recommendations based on seed papers
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/s2_recommend.py --positive "PAPER_ID1,PAPER_ID2"
# Efficiently fetch metadata for multiple papers
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/s2_batch.py --ids "PAPER_ID1,PAPER_ID2,DOI:10.xxx/yyy"
Enrich entries that lack abstracts. Two sub-steps:
6a. Abstract Resolution — Resolve abstracts from academic APIs (S2 → OpenAlex → CORE fallback):
# Single paper
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/get_abstract.py --doi "10.1111/nous.12191"
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/get_abstract.py --title "Freedom of the Will" --author "Frankfurt" --year 1971
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/get_abstract.py --s2-id "abc123def"
For batch processing, use enrich_bibliography.py (in literature-review scripts):
bash "$PHILLIT_ROOT/bin/phillit-run" skills/literature-review/scripts/enrich_bibliography.py input.bib
6b. NDPR Enrichment — For @book entries that still lack an abstract after step 6a and have High or Medium importance (as noted in the keywords field), use NDPR (Notre Dame Philosophical Reviews) to extract opening summary paragraphs from book reviews:
# Discover NDPR reviews for a book
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/search_ndpr.py "book title or author"
# Extract content from an NDPR review
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/fetch_ndpr.py REVIEW_URL
NDPR extracts are tagged with abstract_source = {ndpr} in BibTeX entries. Note: NDPR content is primarily descriptive of the book's arguments but may include reviewer evaluation.
The batch enrich_bibliography.py script handles both 6a and 6b automatically.
For important papers, extract how they're discussed in authoritative philosophy encyclopedias:
# Extract SEP citation context for a specific paper
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/get_sep_context.py freewill --author "Frankfurt" --year 1971
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/get_sep_context.py freewill --author "Fischer" --year 1998 --coauthor "Ravizza"
# Extract IEP citation context
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/get_iep_context.py freewill --author "Frankfurt" --year 1971
# Verify a paper exists via CrossRef
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/verify_paper.py --title "The Title" --author "Smith" --year 2020
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/verify_paper.py --doi "10.1093/mind/fzv123"
Use fetch_sep.py instead of WebFetch for SEP articles.
fetch_sep.py provides structured extraction:
# Get specific sections
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/fetch_sep.py compatibilism --sections "preamble,1,2"
# Get bibliography only
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/fetch_sep.py freewill --bibliography-only
Use fetch_iep.py for Internet Encyclopedia of Philosophy articles.
fetch_iep.py provides structured extraction similar to SEP:
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/fetch_iep.py compatibilism --sections "1,2,3"
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/fetch_iep.py freewill --bibliography-only
Note: IEP has different coverage than SEP. Use both for comprehensive encyclopedia coverage.
| Script | Purpose | Key Options |
|---|---|---|
s2_search.py | Paper discovery | --bulk, --year, --field, --min-citations |
s2_citations.py | Citation traversal | --references, --citations, --influential-only |
s2_batch.py | Batch paper details | --ids, --file |
s2_recommend.py | Find similar papers | --positive, --negative, --for-paper |
search_openalex.py | Broad academic search | --year, --doi, --id, --cites, --oa-only |
search_arxiv.py | arXiv preprints | --category, --author, --recent, --id |
search_sep.py | SEP discovery | --limit, --all-pages |
fetch_sep.py | SEP content extraction | --sections, --bibliography-only, --related-only |
search_iep.py | IEP discovery | --limit, --all-pages |
fetch_iep.py | IEP content extraction | --sections, --bibliography-only |
search_philpapers.py | PhilPapers search | --limit, --recent |
verify_paper.py | DOI verification | --title, --author, --year, --doi |
search_core.py | CORE API (431M papers) | --doi, --title, --author, --year |
get_abstract.py | Multi-source abstract resolution | --doi, --s2-id, --title, --author |
get_sep_context.py | SEP citation context extraction | --author, --year, --coauthor |
get_iep_context.py | IEP citation context extraction | --author, --year, --coauthor |
search_ndpr.py | NDPR book review discovery | --limit |
fetch_ndpr.py | NDPR content extraction | --sections |
check_setup.py | Environment check | (no options) |
All scripts output JSON with consistent structure:
{
"status": "success|partial|error",
"source": "script_name",
"query": "search query",
"results": [...],
"count": 5,
"errors": []
}
Exit codes: 0=success, 1=not found, 2=config error, 3=API error
Use WebFetch only when scripts don't provide the needed content:
https://doi.org/{doi})Do NOT use WebFetch for:
fetch_sep.py (structured output)s2_search.py or s2_batch.pyverify_paper.py when S2 lacks DOIRequired environment variables (set in .env at the project root — takes priority over shell environment):
BRAVE_API_KEY # Required for SEP/PhilPapers discovery
CROSSREF_MAILTO # Required for CrossRef polite pool
S2_API_KEY # Recommended for Semantic Scholar
OPENALEX_EMAIL # Recommended for OpenAlex polite pool
Check setup with:
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/check_setup.py
npx claudepluginhub ai-4-phi/phillitGuides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.
Provides protocol-based dependency injection patterns for testable Swift code, enabling mocking of file system, network, and external APIs with Swift Testing.