Reading Agent
Create structured reading notes for academic papers. This skill can operate standalone or integrate with lit-synthesis.
Project Integration
This skill reads from project.yaml when available:
From project.yaml
paths: lit_synthesis: literature/synthesis/
Project type: This skill works for all project types. Reading and analyzing literature is essential for qualitative, quantitative, and mixed methods research.
Saves reading notes to literature/synthesis/reading-notes/ by default, or to the path specified in project.yaml .
File Management
This skill uses git to track progress. After creating or updating reading notes:
- Stage and commit: git add [files] && git commit -m "reading-agent: Notes for [author-year]"
Do NOT create version-suffixed copies (e.g., -v2 , -final , -working ). The git history serves as the version trail.
When to Use This Skill
Use this skill when you need to:
-
Create reading notes for a single paper
-
Batch-process multiple PDFs into structured notes
-
Extract consistent metadata and analysis across papers
-
Prepare papers for literature synthesis
Quick Start
/reading-agent
I need to read: /path/to/paper.pdf
Or with a citation key:
/reading-agent
Citation key: smithCulturalFrames2020
Workflow
Step 0: Identify the Paper
Ask the user for:
-
Paper source: PDF path, citation key (for local library lookup), or pasted text
-
Identifiers (at least one, prefer citation key):
-
Citation key (e.g., smithCulturalFrames2020 ) — from lit-search database or references.bib
-
OpenAlex ID (e.g., W2123456789 )
-
DOI (e.g., 10.1086/123456 )
Step 1: Access Paper Content
If PDF or EPUB provided (new paper): Ingest into the local library (converts to markdown + adds metadata to references.bib ):
uv run plugins/sociology-skillset/scripts/ingest.py --file "/path/to/paper.pdf"
Copies to library/pdfs/, converts to library/markdown/ (docling for PDFs, pandoc for EPUBs), appends to references.bib
If PDF provided for a paper already in references.bib (e.g., from lit-search but PDF was missing):
uv run plugins/sociology-skillset/scripts/ingest.py --file "/path/to/paper.pdf" --citekey Thompson2022_Inequality --update
Converts the PDF, copies files to library/, updates the existing bib entry with pdf_path and md_path
If citation key provided: Look up the key in references.bib to find the md_path field, then read the markdown file at that path directly.
If markdown/text: Use directly.
Step 2: Read and Extract
For single-paper mode (default): Read the paper directly and create structured notes.
For batch mode: Spawn haiku agents using the Task tool:
Task tool parameters:
- subagent_type: "general-purpose"
- model: "haiku"
- prompt: [reading prompt with content and identifiers]
- description: "Read paper: AuthorYear"
Step 3: Save Notes
Save reading notes to: reading-notes/author-year-slug.md
The filename uses author-year-slug for readability, but frontmatter identifiers are the authoritative match back to source papers.
Reading Note Template
All reading notes must follow this structure with required frontmatter:
citation_key: smithCulturalFrames2020 # From references.bib or lit-search database (preferred) openalex_id: W2123456789 # From lit-search database doi: 10.1086/123456 # Digital Object Identifier first_author: Smith year: 2020 short_title: cultural-frames
Smith 2020 - Cultural Frames
Bibliographic Info
- Authors: [all authors]
- Year: [publication year]
- Title: [full title]
- Journal: [venue/publisher]
- DOI: [as link if available]
- OpenAlex: https://openalex.org/W2123456789
Core Argument
[1-2 sentences: What is the paper arguing?]
Theoretical Framework
- Tradition: [e.g., Bourdieusian, institutionalist, interactionist, framing theory]
- Key concepts: [list main theoretical concepts used]
- Theory deployment: [description | extension | critique | synthesis]
Empirical Strategy
- Data: [what kind of data - interviews, content analysis, survey, etc.]
- Methods: [how data was analyzed]
- Sample: [who/what was studied, N if applicable]
Key Findings
- [Finding 1]
- [Finding 2]
- [Finding 3]
Contribution Claim
[What does the paper claim to contribute to the literature?]
Limitations
[As noted by the authors]
Key Quotes
"[Quote 1 - captures core argument or key concept]" (p. X)
"[Quote 2 - methodological or theoretical insight]" (p. Y)
"[Quote 3 - finding or implication]" (p. Z)
Connections
[What other papers, concepts, or debates does this connect to?]
Analytical Notes
[Your observations: How is the argument constructed? What assumptions underlie it? How does this relate to the broader project?]
Batch Processing Mode
For multiple papers:
-
Gather papers: List of PDFs, EPUBs, or citation keys
-
Ingest all files: Run uv run plugins/sociology-skillset/scripts/ingest.py --file <pdf> on each
-
Prepare identifiers: From lit-search database or references.bib
-
Spawn parallel agents: Multiple haiku agents via Task tool
-
Collect outputs: Save to reading-notes/ directory
Example batch invocation:
/reading-agent
Batch process these papers:
- /papers/smith2020.pdf (DOI: 10.1086/123456)
- /papers/jones2019.pdf (OpenAlex: W2123456789)
- Citation key: brownMovementSpillover2021
The skill will spawn haiku agents in parallel for cost-effective processing.
Haiku Agent Prompt
When spawning agents for batch processing, use this prompt template:
You are a research assistant creating structured reading notes for a sociology literature synthesis project.
Paper Identifiers
- Citation Key: {citation_key}
- OpenAlex ID: {openalex_id}
- DOI: {doi}
- PDF source: {pdf_path}
Paper Content
{markdown_content}
Instructions
Create reading notes following the exact template structure provided. Include:
- YAML frontmatter with all available identifiers
- All sections from Bibliographic Info through Analytical Notes
- At least 3 key quotes with page numbers
- Specific, observable details rather than vague summaries
Focus on:
- What the paper ARGUES, not just what it studies
- How theory is DEPLOYED, not just what theory is mentioned
- TENSIONS or gaps the paper leaves unresolved
Scripts
PDF/EPUB Conversion
Always use ingest.py to add papers — this ensures the PDF, markdown, and references.bib metadata stay linked via the citation key:
uv run plugins/sociology-skillset/scripts/ingest.py --file "/path/to/paper.pdf"
Uses docling for PDFs (with --image-export-mode placeholder ) and pandoc for EPUBs. Files are organized as library/pdfs/{citekey}.pdf and library/markdown/{citekey}.md .
Setup
Install dependencies:
pip install docling # for PDF conversion brew install pandoc # for EPUB conversion (or apt-get install pandoc)
Integration with Other Skills
From lit-search: Use the database.json to get OpenAlex IDs and DOIs for papers you've identified.
Finding related papers: Use semantic search to discover related papers in your library:
uv run plugins/sociology-skillset/scripts/rag.py search "topic from the paper you just read"
To lit-synthesis: Reading notes feed directly into:
-
Phase 2: Theoretical mapping (uses Tradition and Key concepts)
-
Phase 3: Thematic clustering (uses Findings and Methods)
-
Phase 4: Debate mapping (uses Connections and Analytical Notes)
With argument-builder: Key quotes and contribution claims inform prose drafting.
Model Recommendations
Mode Model Rationale
Single paper (deep) Opus Nuanced analysis, theoretical depth
Batch processing Haiku Cost-effective structured extraction
Use Opus when you need to understand how an argument is constructed. Use Haiku when you need consistent extraction across many papers.
Output Directory Structure
reading-notes/ ├── smith2020-cultural-frames.md ├── jones2019-institutional-logics.md ├── brown2021-movement-spillover.md └── ...
Each file contains full structured notes with frontmatter identifiers for reliable cross-referencing.
Starting the Reading
When the user invokes this skill:
Identify source:
"What paper do you want to read? Provide a PDF path, citation key (for local library lookup), or paste the text."
Gather identifiers:
"What identifiers do you have? I need at least one of: citation key, OpenAlex ID, or DOI."
Choose mode (if multiple papers):
"Single paper or batch? For batch, I'll spawn haiku agents to process in parallel."
Confirm output location:
"I'll save reading notes to reading-notes/ . Does that work, or do you want a different location?"
Begin reading: Convert PDF if needed, then extract structured notes.
Key Reminders
-
Identifiers are essential: Every note needs at least one unique identifier in frontmatter (prefer citation_key )
-
Quotes need page numbers: Include (p. X) for every quote
-
Arguments over summaries: Capture what the paper argues, not just what it describes
-
Tensions are valuable: Note unresolved questions and potential gaps
-
Consistency enables synthesis: Following the template exactly allows cross-paper analysis