reading-agent
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)
- Citation key (e.g.,
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
1. [Finding 1]
2. [Finding 2]
3. [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:
1. YAML frontmatter with all available identifiers
2. All sections from Bibliographic Info through Analytical Notes
3. At least 3 key quotes with page numbers
4. 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
More from nealcaren/sociology-skillset
writing-editor
Edit prose to sound more natural, direct, and engaging. Works top-down through four levels (Document → Paragraph → Sentence → Word) with human checkpoints at each stage. Fixes LLM patterns, writerly bad habits, and style deficits. Works for academic papers, reports, memos, essays, blog posts, proposals, and other nonfiction. Use when prose sounds robotic, dull, or inaccessible.
15mcp-zotero
(DEPRECATED) Operate Zotero libraries through the MCP server. Replaced by local BibTeX pipeline — use references.bib + library/ instead.
12bibliography-builder
Build bibliographies from manuscript citations by extracting in-text citations, matching them against a references.bib file, identifying issues, and generating a formatted reference list.
12revision-coordinator
Orchestrate manuscript revision by routing feedback to specialized writing skills
10mixed-methods-findings-writer
>
9abstract-builder
Craft publication-ready abstracts for sociology articles. Guides archetype selection, move sequencing, and calibration based on analysis of 193 abstracts from SP, SF, AJS, and ASR.
9