About lit-synthesis
lit-synthesis is a research skill for sociologists who need to turn a local paper collection into an organized understanding of a field. It combines deep reading with theoretical, thematic, and debate mapping to support literature review writing.
Key features
- 01Audit corpus coverage and reading priorities
- 02Create structured notes for papers
- 03Map theories and citation lineages
- 04Cluster papers by themes and methods
- 05Identify debates and contribution gaps
Use cases
- 01Prepare a paper corpus before writing a literature review
- 02Compare theoretical traditions across a collection
- 03Organize findings and disagreements among studies
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ nealcaren/ social-data-analysis --skill lit-synthesisAfter installing, type/lit-synthesisin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
mcp/zotero-setup.mdphases/phase0-corpus-audit.mdphase1-deep-reading.mdphase2-theoretical-mapping.mdphase3-thematic-clustering.mdphase4-debate-mapping.mdphase5-field-synthesis.mdscripts/ingest.pypdf-to-md.shrag.pyread-paper.shreading-agent-prompt.mdDetails
From the project READMELiterature Synthesis
Script paths below are relative to this skill's base directory ($SKILL_DIR), which Claude Code reports when the skill loads.
You help sociologists move from a corpus of papers to a deep understanding of a field. This is the analytical bridge between finding papers (lit-search) and writing your own literature review.
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. Literature synthesis is essential for qualitative, quantitative, and mixed methods research.
Updates progress.yaml when complete:
status:
lit_synthesis: done
artifacts:
field_synthesis: literature/synthesis/field-synthesis.md
Where This Fits
This skill picks up where lit-search leaves off:
| Skill | Role | Key Output |
|---|---|---|
| lit-search | Find papers via OpenAlex | database.json, references.bib, download checklist |
| lit-synthesis | Analyze & organize via local library | field-synthesis.md (with theoretical map, thematic clusters, debate map as sections) |
Input: Papers as markdown files in library/ (converted from PDFs) and references.bib (from lit-search or user's existing library)
Output: Organized understanding of the field to support your literature review
When to Use This Skill
Use this skill when users:
- Have a corpus of papers (from lit-search or their own collection)
- Need to understand the theoretical landscape before writing
- Want to identify debates, tensions, and competing positions
- Need to organize papers thematically or by theoretical tradition
- Want deep reading notes, not just metadata extraction
Core Principles
-
Read deeply, not widely: Better to understand 15 papers thoroughly than 50 superficially.
-
Theoretical traditions matter: Papers exist within intellectual lineages. Map who cites whom and why.
-
Debates are gold: Competing positions create space for contributions. Find the tensions.
-
Organization serves writing: The clusters and maps you create should give your literature review its structure.
-
Full text when possible: Abstracts tell you what; full text tells you how and why.
File Management
This skill uses git to track progress across phases. Before modifying any output file at a new phase:
- Stage and commit current state:
git add [files] && git commit -m "lit-synthesis: Phase N complete" - Then proceed with modifications.
Do NOT create version-suffixed copies (e.g., -v2, -final, -working). The git history serves as the version trail.
Local Library Integration
This skill reads papers from a local library of markdown-converted PDFs alongside references.bib for bibliographic metadata.
Expected Library Layout
project/
├── references.bib # BibTeX from lit-search (or user's reference manager)
└── library/
└── markdown/
├── smith2020-cultural-frames.md
├── jones2019-institutional.md
└── ... # One .md per paper, converted from PDF
Converting PDFs to Markdown
Use the ingest script to add papers to your library:
uv run "$SKILL_DIR"/scripts/ingest.py --file /path/to/paper.pdf
This converts the PDF to markdown in library/markdown/ and adds metadata to references.bib.
Semantic Search
For conceptual/semantic search across your library (e.g., finding passages about a concept even when exact terms differ), use the RAG index:
# Build/update the index (run after adding new papers)
uv run "$SKILL_DIR"/scripts/rag.py index
# Search by meaning
uv run "$SKILL_DIR"/scripts/rag.py search "cultural capital and educational attainment"
For exact keyword search, grep the markdown files directly:
grep -ril "cultural capital" library/markdown/
Using reading-agent Skill
For structured reading notes, use the bundled reading-agent skill:
/reading-agent
Paper: [Author Year - Title]
PDF: /path/to/paper.pdf
DOI: [doi]
The reading-agent skill handles PDF conversion and produces structured notes with:
- Bibliographic info and identifiers
- Core arguments and theoretical frameworks
- Methods and empirical strategy
- Key findings and contribution claims
- Key quotes with page numbers
Batch Processing
For batch processing many papers:
- Convert PDFs: Run
"$SKILL_DIR"/scripts/ingest.py --fileon each paper - Use reading-agent in batch mode:
/reading-agent Batch process these papers: - /papers/smith2020.pdf (DOI: 10.1086/123456) - /papers/jones2019.pdf (OpenAlex: W2123456789) - Collect outputs: Notes saved to
reading-notes/directory
Workflow Phases
Phase 0: Corpus Audit
Goal: Assess what's in the corpus and identify gaps.
Process:
- Review the database from lit-search (or user's reference library)
- Count papers by year, journal, author, theoretical tradition
- Identify potential gaps in coverage
- Prioritize which papers need deep reading vs. skimming
Output: Corpus audit results presented in conversation (statistics and reading priorities).
Pause: User confirms corpus coverage and reading priorities.
Phase 1: Deep Reading
Goal: Close read priority papers and extract analytical insights.
Process:
- For each priority paper, read full text from
library/markdown/ - Extract: argument structure, theoretical framework, key concepts, methodological approach
- Note: how theory is deployed, what evidence supports claims, limitations acknowledged
- Create structured reading notes
Output: reading-notes/ directory with per-paper notes.
Pause: User reviews reading notes for key papers.
Phase 2: Theoretical Mapping
Goal: Identify intellectual traditions and lineages.
Process:
- Identify which theoretical frameworks appear across papers
- Use
uv run "$SKILL_DIR"/scripts/rag.py search "theoretical concept"to find conceptually related passages across the library - Map citation relationships (who cites whom)
- Note foundational texts and their descendants
- Identify "camps" or schools of thought
- Document key concepts and how they're used
Output: ## Theoretical Map section written into field-synthesis.md.
Pause: User reviews theoretical landscape.
Phase 3: Thematic Clustering
Goal: Organize papers by what they study and how.
Process:
- Group papers by empirical focus (population, setting, phenomenon)
- Group papers by theoretical approach
- Group papers by methodological strategy
- Identify papers that bridge multiple clusters
- Note within-cluster consensus and variation
Output: ## Thematic Clusters section appended to field-synthesis.md.
Pause: User reviews clustering logic.
Phase 4: Debate Mapping
Goal: Identify tensions, disagreements, and competing positions.
Process:
- Find explicit disagreements (papers that critique each other)
- Find implicit tensions (contradictory findings or incompatible assumptions)
- Identify unresolved questions the field is grappling with
- Note where evidence is mixed or contested
- Document the "state of the debate" for each tension
Output: ## Debate Map section appended to field-synthesis.md.
Pause: User reviews debates and selects focus areas.
Phase 5: Field Synthesis
Goal: Create comprehensive understanding ready for writing.
Process:
- Synthesize across phases into coherent field understanding
- Identify the most productive gaps for contribution
- Outline candidate contributions and how each fits the user's project
Output: field-synthesis.md completed with integrated understanding and contribution opportunities (builds on sections added in Phases 2–4).
Output Files
lit-synthesis/
├── reading-notes/ # Phase 1: Per-paper notes (kept for batch production)
│ ├── smith2020-cultural-frames.md # Filename: author-year-short-title
│ ├── jones2019-institutional.md
│ └── ... # Each file has identifier frontmatter
└── field-synthesis.md # Comprehensive synthesis with sections for theoretical map, thematic clusters, debate map
Note: Filenames use author-year-short-title.md for human readability, but the frontmatter identifiers (citation_key, OpenAlex ID, DOI) are the authoritative way to match notes back to source papers. The citation_key is preferred because it enables [@citationKey] Pandoc citation syntax in downstream writing skills.
Reading Note Template
For each paper in Phase 1, notes must include identifier frontmatter to enable reliable retrieval across the workflow:
---
# Required: At least one unique identifier
citation_key: smithCulturalFrames2020 # Preferred: from lit-search database or references.bib
openalex_id: W2123456789 # From lit-search database
doi: 10.1086/123456 # Digital Object Identifier
# Recommended: Additional metadata for filtering
first_author: Smith
year: 2020
short_title: cultural-frames
---
# Smith 2020 - Cultural Frames
## Bibliographic Info
- Full citation: [from references.bib or database]
- DOI: [link]
- OpenAlex: https://openalex.org/W2123456789
## Core Argument
[1-2 sentences: What is the paper arguing?]
## Theoretical Framework
- Tradition: [e.g., Bourdieusian, institutionalist, interactionist]
- Key concepts used: [list]
- How theory is deployed: [description vs. extension vs. critique]
## Empirical Strategy
- Data: [what kind]
- Methods: [how analyzed]
- Sample: [who/what]
## Key Findings
1. [Finding 1]
2. [Finding 2]
3. [Finding 3]
## Contribution Claim
[What does the paper claim to contribute?]
## Limitations (as noted by authors)
- [Limitation 1]
- [Limitation 2]
## My Notes
[Your analytical observations, connections to other papers, questions raised]
## Key Quotes
> "[Quote 1]" (p. X)
> "[Quote 2]" (p. Y)
## Tags
[theoretical-tradition] [empirical-focus] [method] [relevant-to-my-project]
Model Recommendations
| Phase | Model | Rationale |
|---|---|---|
| Phase 0: Corpus Audit | Sonnet | Data processing, statistics |
| Phase 1: Deep Reading | Sonnet | Analytical reading of converted markdown |
| Phase 2: Theoretical Mapping | Opus | Pattern recognition, intellectual history |
| Phase 3: Thematic Clustering | Sonnet | Organization, categorization |
| Phase 4: Debate Mapping | Opus | Tension identification, nuance |
| Phase 5: Field Synthesis | Opus | Integration, strategic judgment |
Starting the Synthesis
When the user is ready to begin:
-
Identify the corpus:
"Where are your papers? A folder of PDFs? A
references.bibfrom lit-search? How many papers total?" -
Verify local library setup:
"Do you have PDFs converted to markdown in
library/markdown/? If not, we'll run"$SKILL_DIR"/scripts/ingest.py --fileon each PDF before Phase 1." -
Set priorities:
"Which papers are most central to your project? We'll deep-read those first and skim the rest."
-
Clarify goals:
"What are you trying to understand about this field? Are you looking for gaps, debates, or a specific theoretical tradition?"
-
Proceed with Phase 0 to audit the corpus.
Key Reminders
- Identifiers are essential: Every reading note must have at least one unique identifier (
citation_key, OpenAlex ID, or DOI) in its frontmatter. Prefercitation_keywhen available. - Convert before reading: Run
uv run "$SKILL_DIR"/scripts/ingest.py --file <pdf>for each PDF before Phase 1 begins - Quality over quantity: Deep reading 15 papers beats skimming 50
- Debates are opportunities: Every tension you find is a potential contribution space