Skill v1.0.1
currentAutomated scan100/100+29 new
version: "1.0.1" name: philosophy-research description: 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. allowed-tools: Bash, Read, Write, Grep, WebFetch
Philosophy Research Skill
Search 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.
When to Use This Skill
Use this skill when:
- Searching for philosophy papers, articles, or concepts
- Accessing SEP (Stanford Encyclopedia of Philosophy) content
- Finding citations and references for papers
- Verifying that a paper exists with correct metadata
- Building bibliographies for literature reviews
Search Workflow
Batching: when you have several searches, run them in ONE shellcall —&+waitbetween scripts hitting DIFFERENT APIs, plainsequential lines between calls to the SAME API (its shared rate limiterwould serialize them anyway, and the limiter's file lock is Unix-only,so same-API parallelism buys nothing and can race on Windows). Parallelfan-outs give each script--outputand finish withgrep -m1 '"status"' <files>— full results land in files, one shortattributed status line each lands on screen; sequential same-API chainswith small payloads skip both and just consume the inline stdout(exception:verify_paper.pyalways keeps--output— the metadatacleaner reads its files — while its status prints inline). Never batchacross a dependency: a search whose query is composed from an earliersearch's results is its own call.
Phase 1: SEP & IEP (Most Authoritative)
# Discover relevant SEP articlesbash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/search_sep.py "free will"# Extract structured content from an SEP entrybash "$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 entrybash "$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.
Phase 2: PhilPapers
# Philosophy-specific paper searchbash "$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
Phase 3: Extended Academic Search
# Semantic Scholar - broad academic searchbash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/s2_search.py "moral responsibility" --field Philosophy --year 2015-2025# OpenAlex - 250M+ works, cross-disciplinarybash "$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 abstractsbash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/search_core.py "epistemic injustice" --year 2020-2024bash "$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 workbash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/search_arxiv.py "AI alignment ethics" --category cs.AI --recent
Note: CORE requires a (free) CORE_API_KEY — without one the script skips CORE entirely rather than fight the unauthenticated rate limit. Keyed access is rate-limited to 5 requests per 10 seconds.
Phase 4: Citation Traversal
# Get references and citations for a paperbash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/s2_citations.py PAPER_ID --both --influential-only# Find recommendations based on seed papersbash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/s2_recommend.py --positive "PAPER_ID1,PAPER_ID2"
Phase 5: Batch Details
# Efficiently fetch metadata for multiple papersbash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/s2_batch.py --ids "PAPER_ID1,PAPER_ID2,DOI:10.xxx/yyy"
Phase 6: Content Enrichment
Enrich entries that lack abstracts. Two sub-steps:
6a. Abstract Resolution — Resolve abstracts from academic APIs (S2 → OpenAlex → CORE fallback):
# Single paperbash "$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 1971bash "$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 bookbash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/search_ndpr.py --title "Book Title" --author "AuthorSurname"# Extract content from an NDPR reviewbash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/fetch_ndpr.py --url 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.
Phase 7: Encyclopedia Context Extraction (Optional)
For important papers, extract how they're discussed in authoritative philosophy encyclopedias:
# Extract SEP citation context for a specific paperbash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/get_sep_context.py freewill --author "Frankfurt" --year 1971bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/get_sep_context.py freewill --author "Fischer" --year 1998 --coauthor "Ravizza"# Extract IEP citation contextbash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/get_iep_context.py freewill --author "Frankfurt" --year 1971
Phase 8: Verification
# Verify a paper exists via CrossRefbash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/verify_paper.py --title "The Title" --author "Smith" --year 2020bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/verify_paper.py --doi "10.1093/mind/fzv123"
SEP Content Access
Use `fetch_sep.py` instead of WebFetch for SEP articles.
fetch_sep.py provides structured extraction:
- Preamble (abstract/introduction)
- Individual sections by number
- Bibliography with parsed author/year/title
- Author and publication dates
# Get specific sectionsbash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/fetch_sep.py compatibilism --sections "preamble,1,2"# Get bibliography onlybash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/fetch_sep.py freewill --bibliography-only
IEP Content Access
Use `fetch_iep.py` for Internet Encyclopedia of Philosophy articles.
fetch_iep.py provides structured extraction similar to SEP:
- Preamble, individual sections, bibliography, author information
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.
Available Scripts
| 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 | --title, --author | |
fetch_ndpr.py | NDPR content extraction | --url, --slug | |
check_setup.py | Environment check | --json, --verbose, --skip-api |
Output Format
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
WebFetch Usage
Use WebFetch only when scripts don't provide the needed content:
- PhilPapers entry pages for additional metadata
- Publisher pages for paper details not in S2
- DOI resolution verification (
https://doi.org/{doi})
Do NOT use WebFetch for:
- SEP articles: use
fetch_sep.py(structured output) - Paper abstracts: use
s2_search.pyors2_batch.py
Verification Requirements
- Never fabricate citations - only include papers found via scripts
- Verify DOIs via
verify_paper.pywhen S2 lacks DOI - Omit DOI field if verification fails (never invent DOIs)
- Report gaps if expected papers are not found
Environment
Required environment variables (set in the shell environment or in .env at the project root — a .env value takes priority):
BRAVE_API_KEY # Required for SEP/PhilPapers discoveryCROSSREF_MAILTO # Required for CrossRef polite poolS2_API_KEY # Recommended for Semantic ScholarOPENALEX_EMAIL # Recommended for OpenAlex polite poolOPENALEX_API_KEY # Optional: OpenAlex meters by daily spend, and one review# costs a quarter to a half of the unkeyed $0.10/day. Only# needed above ~4 reviews/day; free at# https://openalex.org/settings/api. On exhaustion PhilLit# says so and continues without OpenAlex.CORE_API_KEY # Optional: CORE searches and CORE abstract fallback are# skipped without it; free at https://core.ac.uk/services/api
Check setup with:
bash "$PHILLIT_ROOT/bin/phillit-run" skills/philosophy-research/scripts/check_setup.py