
Research Summarizer
- 1.1k installs
- 23.5k repo stars
- Updated July 17, 2026
- alirezarezvani/claude-skills
research-summarizer provides documented workflows for Structured research summarization agent skill for non-dev users. Handles academic papers, web articles, reports, and documentation. Extracts key findings, gener
About
The research-summarizer skill structured research summarization agent skill for non-dev users Handles academic papers web articles reports and documentation Extracts key findings generates comparative analyses and produces properly formatted citations Use when user wants to summarize a research paper compare multiple sources extract citations from documents or create structured research briefs Plugin for Claude Code Codex Gemini CLI and OpenClaw Research Summarizer Read less Structured research summarization workflow that turns dense source material into actionable briefs Built for product managers analysts founders and anyone who reads more than they should have to Not a generic summarize this a repeatable framework that extracts what matters compares across sources and formats citations properly It performs no web search and needs no MCP server It is NOT research litreview academic literature discovery and review-guide generation finds papers via Consensus academic APIs research dossier entity due-diligence built from live web research research notebooklm drives Google's NotebookLM product UI research research the router for open-ended research topic requests that require search.
- `research/litreview` - academic literature *discovery* and review-guide generation (finds papers via Consensus/academi
- `research/dossier` - entity due-diligence built from live web research
- `research/notebooklm` - drives Google's NotebookLM product UI
- `research/research` - the router for open-ended "research [topic]" requests that require searching
- "Summarize this paper / article / report"
Research Summarizer by the numbers
- 1,121 all-time installs (skills.sh)
- +11 installs in the week ending Jul 29, 2026 (Skillselion tracking)
- Ranked #941 of 16,565 AI & Agent Building skills by installs in the Skillselion catalog
- Security screen: HIGH risk (skills.sh audit)
- Data as of Jul 31, 2026 (Skillselion catalog sync)
research-summarizer capabilities & compatibility
- Capabilities
- `research/litreview` academic literature *disc · `research/dossier` entity due diligence built · `research/notebooklm` drives google's notebook · `research/research` the router for open ended · "summarize this paper / article / report"
- Use cases
- documentation
What research-summarizer says it does
Structured research summarization workflow that turns dense source material into actionable briefs.
Built for product managers, analysts, founders, and anyone who reads more than they should have to.
npx skills add https://github.com/alirezarezvani/claude-skills --skill research-summarizerAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1.1k |
|---|---|
| repo stars | ★ 23.5k |
| Security audit | 2 / 3 scanners passed |
| Last updated | July 17, 2026 |
| Repository | alirezarezvani/claude-skills ↗ |
How do I use research-summarizer for the task described in its SKILL.md triggers?
Structured research summarization agent skill for non-dev users. Handles academic papers, web articles, reports, and documentation. Extracts key findings, generates comparative analyses, and produces.
Who is it for?
Teams invoking research-summarizer when the user request matches documented triggers and prerequisites.
Skip if: Skip when cached docs are missing, the request is a negative trigger, or another sibling skill owns the workflow.
When should I use this skill?
Structured research summarization agent skill for non-dev users. Handles academic papers, web articles, reports, and documentation. Extracts key findings, generates comparative analyses, and produces properly formatted c
What you get
Step-by-step guidance grounded in research-summarizer documentation and reference files.
- APA 7 citation blocks
- Narrative research summaries
Files
Research Summarizer
Read less. Understand more. Cite correctly.
Structured research summarization workflow that turns dense source material into actionable briefs. Built for product managers, analysts, founders, and anyone who reads more than they should have to.
Not a generic "summarize this" — a repeatable framework that extracts what matters, compares across sources, and formats citations properly.
---
Scope — Distinct From the research/ Domain
This skill summarizes documents the user already has (papers, articles, reports pasted or attached). It performs no web search and needs no MCP server. It is NOT:
research/litreview— academic literature discovery and review-guide generation (finds papers via Consensus/academic APIs)research/dossier— entity due-diligence built from live web researchresearch/notebooklm— drives Google's NotebookLM product UIresearch/research— the router for open-ended "research [topic]" requests that require searching
If the user asks you to find sources rather than digest supplied ones, route to the research/ domain instead.
---
When This Skill Activates
Recognize these patterns from the user:
- "Summarize this paper / article / report"
- "What are the key findings in this document?"
- "Compare these sources"
- "Extract citations from this PDF"
- "Give me a research brief on [topic]"
- "Break down this whitepaper"
- Any request involving: summarize, research brief, literature review, citation, source comparison
If the user has a document and wants structured understanding → this skill applies.
---
Workflow
Workflow 1 — Single Source Summary
1. Identify source type
- Academic paper → use IMRAD structure (Introduction, Methods, Results, Analysis, Discussion)
- Web article → use claim-evidence-implication structure
- Technical report → use executive summary structure
- Documentation → use reference summary structure
2. Scaffold the brief — python3 scripts/format_summary.py --template academic (or article/report/executive per source type), then fill in every section from the source:
Title: [exact title]
Author(s): [names]
Date: [publication date]
Source Type: [paper | article | report | documentation]
## Key Thesis
[1-2 sentences: the central argument or finding]
## Key Findings
1. [Finding with supporting evidence]
2. [Finding with supporting evidence]
3. [Finding with supporting evidence]
## Methodology
[How they arrived at these findings — data sources, sample size, approach]
## Limitations
- [What the source doesn't cover or gets wrong]
## Actionable Takeaways
- [What to do with this information]
## Notable Quotes
> "[Direct quote]" (p. X)3. Assess quality
- Source credibility (peer-reviewed, reputable outlet, primary vs secondary)
- Evidence strength (data-backed, anecdotal, theoretical)
- Recency (when published, still relevant?)
- Bias indicators (funding source, author affiliation, methodology gaps)
Workflow 2 — Multi-Source Comparison
1. Collect sources (2-5 documents) 2. Summarize each using the single-source workflow above 3. Build comparison matrix
| Dimension | Source A | Source B | Source C |
|------------------|-----------------|-----------------|-----------------|
| Central Thesis | ... | ... | ... |
| Methodology | ... | ... | ... |
| Key Finding | ... | ... | ... |
| Sample/Scope | ... | ... | ... |
| Credibility | High/Med/Low | High/Med/Low | High/Med/Low |4. Synthesize
- Where do sources agree? (convergent findings = stronger signal)
- Where do they disagree? (divergent findings = needs investigation)
- What gaps exist across all sources?
- What's the weight of evidence for each position?
5. Produce synthesis brief
## Consensus Findings
[What most sources agree on]
## Contested Points
[Where sources disagree, with strongest evidence for each side]
## Gaps
[What none of the sources address]
## Recommendation
[Based on weight of evidence, what should the reader believe/do?]Workflow 3 — Citation Extraction
1. Run the extractor — python3 scripts/extract_citations.py document.txt --output json detects DOI/URL/author-year/numbered citations and deduplicates them 2. Review and format the extracted list in the requested style (APA 7 default); manually catch citations the regex missed 3. Classify citations by type:
- Primary sources (original research, data)
- Secondary sources (reviews, meta-analyses, commentary)
- Tertiary sources (textbooks, encyclopedias)
4. Output sorted bibliography with classification tags
Supported citation formats:
- APA 7 (default) — social sciences, business
- IEEE — engineering, computer science
- Chicago — humanities, history
- Harvard — general academic
- MLA 9 — arts, humanities
---
Tooling
scripts/extract_citations.py
CLI utility for extracting and formatting citations from text.
Features:
- Regex-based citation detection (DOI, URL, author-year, numbered references)
- Multiple output formats (APA, IEEE, Chicago, Harvard, MLA)
- JSON export for integration with reference managers
- Deduplication of repeated citations
Usage:
# Extract citations from a file (APA format, default)
python3 scripts/extract_citations.py document.txt
# Specify format
python3 scripts/extract_citations.py document.txt --format ieee
# JSON output
python3 scripts/extract_citations.py document.txt --format apa --output json
# From stdin
cat paper.txt | python3 scripts/extract_citations.py --stdinscripts/format_summary.py
CLI utility that emits blank structured summary scaffolds — you (the model) fill them in from the source. It does not analyze content itself.
Features:
- 6 templates: academic, article, report, executive, comparison, literature
- Configurable scaffold depth (brief, standard, detailed)
- Text and JSON output for downstream tooling
Usage:
# Generate structured summary template
python3 scripts/format_summary.py --template academic
# Brief executive summary format
python3 scripts/format_summary.py --template executive --length brief
# All templates listed
python3 scripts/format_summary.py --list-templates
# JSON output
python3 scripts/format_summary.py --template article --output json---
Quality Assessment Framework
Rate every source on four dimensions:
| Dimension | High | Medium | Low |
|---|---|---|---|
| Credibility | Peer-reviewed, established author | Reputable outlet, known author | Blog, unknown author, no review |
| Evidence | Large sample, rigorous method | Moderate data, sound approach | Anecdotal, no data, opinion |
| Recency | Published within 2 years | 2-5 years old | 5+ years, may be outdated |
| Objectivity | No conflicts, balanced view | Minor affiliations disclosed | Funded by interested party, one-sided |
Overall Rating:
- 4 Highs = Strong source — cite with confidence
- 2+ Mediums = Adequate source — cite with caveats
- 2+ Lows = Weak source — verify independently before citing
---
Summary Templates
See references/summary-templates.md for:
- Academic paper summary template (IMRAD)
- Web article summary template (claim-evidence-implication)
- Technical report template (executive summary)
- Comparative analysis template (matrix + synthesis)
- Literature review template (thematic organization)
See references/citation-formats.md for:
- APA 7 formatting rules and examples
- IEEE formatting rules and examples
- Chicago, Harvard, MLA quick reference
---
Proactive Triggers
Flag these without being asked:
- Source has no date → Note it. Undated sources lose credibility points.
- Source contradicts other sources → Highlight the contradiction explicitly. Don't paper over disagreements.
- Source is behind a paywall → Note limited access. Suggest alternatives if known.
- User provides only one source for a compare → Ask for at least one more. Comparison needs 2+.
- Citations are incomplete → Flag missing fields (year, author, title). Don't invent metadata.
- Source is 5+ years old in a fast-moving field → Warn about potential obsolescence.
---
Installation
One-liner (any tool)
git clone https://github.com/alirezarezvani/claude-skills.git
cp -r claude-skills/product-team/research-summarizer ~/.claude/skills/Multi-tool install (run from the claude-skills repo root)
./scripts/convert.sh --skill research-summarizer --tool codex|gemini|cursor|windsurf|openclawOpenClaw
clawhub install cs-research-summarizer---
Verification Loop
Before delivering any brief, check:
1. Every Key Finding cites a location in the source (section, page, or quote) — no unanchored claims. 2. python3 scripts/extract_citations.py <file> --output json exits 0 and its total matches the bibliography count in your output (investigate any gap). 3. Each source carries a 4-dimension quality rating (table above); weak sources are flagged, not silently included. 4. For comparisons: the matrix has one row per dimension and one column per source — no source skipped. 5. Nothing was invented: missing metadata is marked "not stated", never filled in.
---
Related Skills
- product-analytics — Quantitative analysis. Complementary — use research-summarizer for qualitative sources, product-analytics for metrics.
- competitive-teardown — Competitive research. Complementary — use research-summarizer for individual source analysis, competitive-teardown for market landscape.
- content-production — Content writing. Research-summarizer feeds content-production — summarize sources first, then write.
- product-discovery — Discovery frameworks. Complementary — research-summarizer for desk research, product-discovery for user research.
Citation Formats Quick Reference
APA 7 (American Psychological Association)
Default format for social sciences, business, and product research.
Journal Article
Author, A. A., & Author, B. B. (Year). Title of article. Title of Periodical, volume(issue), page–page. https://doi.org/xxxxx
Example: Smith, J., & Jones, K. (2023). Agile adoption in enterprise organizations. Journal of Product Management, 15(2), 45–62. https://doi.org/10.1234/jpm.2023.001
Book
Author, A. A. (Year). Title of work: Capital letter also for subtitle. Publisher.
Example: Cagan, M. (2018). Inspired: How to create tech products customers love. Wiley.
Web Page
Author, A. A. (Year, Month Day). Title of page. Site Name. URL
Example: Torres, T. (2024, January 15). Continuous discovery in practice. Product Talk. https://www.producttalk.org/discovery
In-Text Citation
- Parenthetical: (Smith & Jones, 2023)
- Narrative: Smith and Jones (2023) found that...
- 3+ authors: (Patel et al., 2022)
---
IEEE (Institute of Electrical and Electronics Engineers)
Standard for engineering, computer science, and technical research.
Format
[N] A. Author, "Title of article," Journal, vol. X, no. Y, pp. Z–Z, Month Year, doi: 10.xxxx.
Journal Article
[1] J. Smith and K. Jones, "Agile adoption in enterprise organizations," J. Prod. Mgmt., vol. 15, no. 2, pp. 45–62, Mar. 2023, doi: 10.1234/jpm.2023.001.
Conference Paper
[2] A. Patel, B. Chen, and C. Kumar, "Cross-functional team performance metrics," in Proc. Int. Conf. Software Eng., 2022, pp. 112–119.
Book
[3] M. Cagan, Inspired: How to Create Tech Products Customers Love. Hoboken, NJ, USA: Wiley, 2018.
In-Text Citation
As shown in [1], agile adoption has increased... Multiple: [1], [3], [5]–[7]
---
Chicago (Notes-Bibliography)
Standard for humanities, history, and some business writing.
Footnote Format
1. First Name Last Name, Title of Book (Place: Publisher, Year), page. 2. First Name Last Name, "Title of Article," Journal Volume, no. Issue (Year): pages.
Bibliography Entry
Last Name, First Name. Title of Book. Place: Publisher, Year. Last Name, First Name. "Title of Article." Journal Volume, no. Issue (Year): pages.
---
Harvard
Common in UK and Australian academic writing.
Format
Author, A.A. (Year) Title of book. Edition. Place: Publisher. Author, A.A. (Year) 'Title of article', Journal, Volume(Issue), pp. X–Y.
In-Text Citation
(Smith and Jones, 2023) Smith and Jones (2023) argue that...
---
MLA 9 (Modern Language Association)
Standard for arts and humanities.
Format
Last, First. Title of Book. Publisher, Year. Last, First. "Title of Article." Journal, vol. X, no. Y, Year, pp. Z–Z.
In-Text Citation
(Smith and Jones 45) Smith and Jones argue that "direct quote" (45).
---
Quick Decision Guide
| Field / Context | Recommended Format |
|---|---|
| Social sciences, business, psychology | APA 7 |
| Engineering, computer science, technical | IEEE |
| Humanities, history, arts | Chicago or MLA |
| UK/Australian academic | Harvard |
| Internal business reports | APA 7 (most widely recognized) |
| Product research briefs | APA 7 |
Summary Templates Reference
Academic Paper (IMRAD)
Use for peer-reviewed journal articles, conference papers, and research studies.
Structure
1. Introduction — What problem does the paper address? Why does it matter? 2. Methods — How was the study conducted? What data, what approach? 3. Results — What did they find? Key numbers, key patterns. 4. Analysis — What do the results mean? How do they compare to prior work? 5. Discussion — What are the implications? Limitations? Future work?
Quality Signals
- Published in a peer-reviewed venue
- Clear methodology section with reproducible steps
- Statistical significance reported (p-values, confidence intervals)
- Limitations acknowledged openly
- Conflicts of interest disclosed
Red Flags
- No methodology section
- Claims without supporting data
- Funded by an entity that benefits from specific results
- Published in a predatory journal (check Beall's List)
---
Web Article (Claim-Evidence-Implication)
Use for blog posts, news articles, opinion pieces, and online publications.
Structure
1. Claim — What is the author arguing or reporting? 2. Evidence — What data, examples, or sources support the claim? 3. Implication — So what? What should the reader do or think differently?
Quality Signals
- Author has relevant expertise or credentials
- Sources are linked and verifiable
- Multiple perspectives acknowledged
- Published on a reputable platform
- Date of publication is clear
Red Flags
- No author attribution
- No sources or citations
- Sensationalist headline vs. measured content
- Affiliate links or sponsored content without disclosure
---
Technical Report (Executive Summary)
Use for industry reports, whitepapers, market research, and internal documents.
Structure
1. Executive Summary — Bottom line in 2-3 sentences 2. Scope — What does this report cover? 3. Key Data — Most important numbers and findings 4. Methodology — How was the data gathered? 5. Recommendations — What should be done based on findings? 6. Relevance — Why does this matter for our specific context?
Quality Signals
- Clear methodology for data collection
- Sample size and composition disclosed
- Published by a recognized research firm or organization
- Methodology section available (even if separate document)
Red Flags
- "Report" is actually a marketing piece for a product
- Data from a single, small, unrepresentative sample
- No methodology disclosure
- Conclusions far exceed what the data supports
---
Comparative Analysis (Matrix + Synthesis)
Use when evaluating 2-5 sources on the same topic.
Comparison Dimensions
- Central thesis — What is each source's main argument?
- Methodology — How did each source arrive at its conclusions?
- Key finding — What is the headline result?
- Sample/scope — How broad or narrow is the evidence?
- Credibility — How trustworthy is the source?
- Recency — When was it published?
Synthesis Framework
1. Convergent findings — Where sources agree (stronger signal) 2. Divergent findings — Where sources disagree (investigate further) 3. Gaps — What no source addresses 4. Weight of evidence — Which position has stronger support?
---
Literature Review (Thematic)
Use when synthesizing 5+ sources into a research overview.
Organization Approaches
- Thematic — Group by topic (preferred for most use cases)
- Chronological — Group by time period (good for showing evolution)
- Methodological — Group by research approach (good for methods papers)
Per-Theme Structure
1. Theme name and scope 2. Key sources that address this theme 3. What the sources say (points of agreement) 4. What the sources disagree on 5. Strength of evidence for each position
Synthesis Checklist
- [ ] All sources categorized into themes
- [ ] Gaps in literature identified
- [ ] Contradictions highlighted (not hidden)
- [ ] Overall state of knowledge summarized
- [ ] Future research directions suggested
#!/usr/bin/env python3
"""
research-summarizer: Citation Extractor
Extract and format citations from text documents. Detects DOIs, URLs,
author-year patterns, and numbered references. Outputs in APA, IEEE,
Chicago, Harvard, or MLA format.
Usage:
python scripts/extract_citations.py document.txt
python scripts/extract_citations.py document.txt --format ieee
python scripts/extract_citations.py document.txt --format apa --output json
python scripts/extract_citations.py --stdin < document.txt
"""
import argparse
import json
import re
import sys
from collections import OrderedDict
# --- Citation Detection Patterns ---
PATTERNS = {
"doi": re.compile(
r"(?:https?://doi\.org/|doi:\s*)(10\.\d{4,}/[^\s,;}\]]+)", re.IGNORECASE
),
"url": re.compile(
r"https?://[^\s,;}\])\"'>]+", re.IGNORECASE
),
"author_year": re.compile(
r"(?:^|\(|\s)([A-Z][a-z]+(?:\s(?:&|and)\s[A-Z][a-z]+)?(?:\set\sal\.?)?)\s*\((\d{4})\)",
),
"numbered_ref": re.compile(
r"^\[(\d+)\]\s+(.+)$", re.MULTILINE
),
"footnote": re.compile(
r"^\d+\.\s+([A-Z].+?(?:\d{4}).+)$", re.MULTILINE
),
}
def extract_dois(text):
"""Extract DOI references."""
citations = []
for match in PATTERNS["doi"].finditer(text):
doi = match.group(1).rstrip(".")
citations.append({
"type": "doi",
"doi": doi,
"raw": match.group(0).strip(),
"url": f"https://doi.org/{doi}",
})
return citations
def extract_urls(text):
"""Extract URL references (excluding DOI URLs already captured)."""
citations = []
for match in PATTERNS["url"].finditer(text):
url = match.group(0).rstrip(".,;)")
if "doi.org" in url:
continue
citations.append({
"type": "url",
"url": url,
"raw": url,
})
return citations
def extract_author_year(text):
"""Extract author-year citations like (Smith, 2023) or Smith & Jones (2021)."""
citations = []
for match in PATTERNS["author_year"].finditer(text):
author = match.group(1).strip()
year = match.group(2)
citations.append({
"type": "author_year",
"author": author,
"year": year,
"raw": f"{author} ({year})",
})
return citations
def extract_numbered_refs(text):
"""Extract numbered reference list entries like [1] Author. Title..."""
citations = []
for match in PATTERNS["numbered_ref"].finditer(text):
num = match.group(1)
content = match.group(2).strip()
citations.append({
"type": "numbered",
"number": int(num),
"content": content,
"raw": f"[{num}] {content}",
})
return citations
def deduplicate(citations):
"""Remove duplicate citations based on raw text."""
seen = OrderedDict()
for c in citations:
key = c.get("doi") or c.get("url") or c.get("raw", "")
key = key.lower().strip()
if key and key not in seen:
seen[key] = c
return list(seen.values())
def classify_source(citation):
"""Classify citation as primary, secondary, or tertiary."""
raw = citation.get("content", citation.get("raw", "")).lower()
if any(kw in raw for kw in ["meta-analysis", "systematic review", "literature review", "survey of"]):
return "secondary"
if any(kw in raw for kw in ["textbook", "encyclopedia", "handbook", "dictionary"]):
return "tertiary"
return "primary"
# --- Formatting ---
def format_apa(citation):
"""Format citation in APA 7 style."""
if citation["type"] == "doi":
return f"https://doi.org/{citation['doi']}"
if citation["type"] == "url":
return f"Retrieved from {citation['url']}"
if citation["type"] == "author_year":
return f"{citation['author']} ({citation['year']})."
if citation["type"] == "numbered":
return citation["content"]
return citation.get("raw", "")
def format_ieee(citation):
"""Format citation in IEEE style."""
if citation["type"] == "doi":
return f"doi: {citation['doi']}"
if citation["type"] == "url":
return f"[Online]. Available: {citation['url']}"
if citation["type"] == "author_year":
return f"{citation['author']}, {citation['year']}."
if citation["type"] == "numbered":
return f"[{citation['number']}] {citation['content']}"
return citation.get("raw", "")
def format_chicago(citation):
"""Format citation in Chicago style."""
if citation["type"] == "doi":
return f"https://doi.org/{citation['doi']}."
if citation["type"] == "url":
return f"{citation['url']}."
if citation["type"] == "author_year":
return f"{citation['author']}. {citation['year']}."
if citation["type"] == "numbered":
return citation["content"]
return citation.get("raw", "")
def format_harvard(citation):
"""Format citation in Harvard style."""
if citation["type"] == "doi":
return f"doi:{citation['doi']}"
if citation["type"] == "url":
return f"Available at: {citation['url']}"
if citation["type"] == "author_year":
return f"{citation['author']} ({citation['year']})"
if citation["type"] == "numbered":
return citation["content"]
return citation.get("raw", "")
def format_mla(citation):
"""Format citation in MLA 9 style."""
if citation["type"] == "doi":
return f"doi:{citation['doi']}."
if citation["type"] == "url":
return f"{citation['url']}."
if citation["type"] == "author_year":
return f"{citation['author']}. {citation['year']}."
if citation["type"] == "numbered":
return citation["content"]
return citation.get("raw", "")
FORMATTERS = {
"apa": format_apa,
"ieee": format_ieee,
"chicago": format_chicago,
"harvard": format_harvard,
"mla": format_mla,
}
# --- Demo Data ---
DEMO_TEXT = """
Recent studies in product management have shown significant shifts in methodology.
According to Smith & Jones (2023), agile adoption has increased by 47% since 2020.
Patel et al. (2022) found that cross-functional teams deliver 2.3x faster.
Several frameworks have been proposed:
[1] Cagan, M. Inspired: How to Create Tech Products Customers Love. Wiley, 2018.
[2] Torres, T. Continuous Discovery Habits. Product Talk LLC, 2021.
[3] Gothelf, J. & Seiden, J. Lean UX. O'Reilly Media, 2021. doi: 10.1234/leanux.2021
For further reading, see https://www.svpg.com/articles/ and the meta-analysis
by Chen (2024) on product discovery effectiveness.
Related work: doi: 10.1145/3544548.3581388
"""
def run_extraction(text, fmt, output_mode):
"""Run full extraction pipeline."""
all_citations = []
all_citations.extend(extract_dois(text))
all_citations.extend(extract_author_year(text))
all_citations.extend(extract_numbered_refs(text))
all_citations.extend(extract_urls(text))
citations = deduplicate(all_citations)
for c in citations:
c["classification"] = classify_source(c)
formatter = FORMATTERS.get(fmt, format_apa)
if output_mode == "json":
result = {
"format": fmt,
"total": len(citations),
"citations": [],
}
for i, c in enumerate(citations, 1):
result["citations"].append({
"index": i,
"type": c["type"],
"classification": c["classification"],
"formatted": formatter(c),
"raw": c.get("raw", ""),
})
print(json.dumps(result, indent=2))
else:
print(f"Citations ({fmt.upper()}) — {len(citations)} found\n")
primary = [c for c in citations if c["classification"] == "primary"]
secondary = [c for c in citations if c["classification"] == "secondary"]
tertiary = [c for c in citations if c["classification"] == "tertiary"]
for label, group in [("Primary Sources", primary), ("Secondary Sources", secondary), ("Tertiary Sources", tertiary)]:
if group:
print(f"### {label}")
for i, c in enumerate(group, 1):
print(f" {i}. {formatter(c)}")
print()
return citations
def main():
parser = argparse.ArgumentParser(
description="research-summarizer: Extract and format citations from text"
)
parser.add_argument("file", nargs="?", help="Input text file (omit for demo)")
parser.add_argument(
"--format", "-f",
choices=["apa", "ieee", "chicago", "harvard", "mla"],
default="apa",
help="Citation format (default: apa)",
)
parser.add_argument(
"--output", "-o",
choices=["text", "json"],
default="text",
help="Output mode (default: text)",
)
parser.add_argument(
"--stdin",
action="store_true",
help="Read from stdin instead of file",
)
args = parser.parse_args()
if args.stdin:
text = sys.stdin.read()
elif args.file:
try:
with open(args.file, "r", encoding="utf-8") as f:
text = f.read()
except FileNotFoundError:
print(f"Error: File not found: {args.file}", file=sys.stderr)
sys.exit(1)
except IOError as e:
print(f"Error reading file: {e}", file=sys.stderr)
sys.exit(1)
else:
print("No input file provided. Running demo...\n")
text = DEMO_TEXT
run_extraction(text, args.format, args.output)
if __name__ == "__main__":
main()
#!/usr/bin/env python3
"""
research-summarizer: Summary Formatter
Generate structured research summary templates for different source types.
Produces fill-in-the-blank frameworks for academic papers, web articles,
technical reports, and executive briefs.
Usage:
python scripts/format_summary.py --template academic
python scripts/format_summary.py --template executive --length brief
python scripts/format_summary.py --list-templates
python scripts/format_summary.py --template article --output json
"""
import argparse
import json
import sys
import textwrap
from datetime import datetime
# --- Templates ---
TEMPLATES = {
"academic": {
"name": "Academic Paper Summary",
"description": "IMRAD structure for peer-reviewed papers and research studies",
"sections": [
("Title", "[Full paper title]"),
("Author(s)", "[Author names, affiliations]"),
("Publication", "[Journal/Conference, Year, DOI]"),
("Source Type", "Academic Paper"),
("Key Thesis", "[1-2 sentences: the central research question and answer]"),
("Methodology", "[Study design, sample size, data sources, analytical approach]"),
("Key Findings", "1. [Finding 1 with supporting data]\n2. [Finding 2 with supporting data]\n3. [Finding 3 with supporting data]"),
("Statistical Significance", "[Key p-values, effect sizes, confidence intervals]"),
("Limitations", "- [Limitation 1: scope, sample, methodology gap]\n- [Limitation 2]"),
("Implications", "- [What this means for practice]\n- [What this means for future research]"),
("Notable Quotes", '> "[Direct quote]" (p. X)'),
("Quality Assessment", "Credibility: [High/Med/Low] | Evidence: [High/Med/Low] | Recency: [High/Med/Low] | Objectivity: [High/Med/Low]"),
],
},
"article": {
"name": "Web Article Summary",
"description": "Claim-evidence-implication structure for online articles and blog posts",
"sections": [
("Title", "[Article title]"),
("Author", "[Author name]"),
("Source", "[Publication/Website, Date, URL]"),
("Source Type", "Web Article"),
("Central Claim", "[1-2 sentences: main argument or thesis]"),
("Supporting Evidence", "1. [Evidence point 1]\n2. [Evidence point 2]\n3. [Evidence point 3]"),
("Counterarguments Addressed", "- [Counterargument and author's response]"),
("Implications", "- [What this means for the reader]"),
("Bias Check", "Author affiliation: [?] | Funding: [?] | Balanced perspective: [Yes/No]"),
("Actionable Takeaways", "- [What to do with this information]\n- [Next step]"),
("Quality Assessment", "Credibility: [High/Med/Low] | Evidence: [High/Med/Low] | Recency: [High/Med/Low] | Objectivity: [High/Med/Low]"),
],
},
"report": {
"name": "Technical Report Summary",
"description": "Structured summary for industry reports, whitepapers, and technical documentation",
"sections": [
("Title", "[Report title]"),
("Organization", "[Publishing organization]"),
("Date", "[Publication date]"),
("Source Type", "Technical Report"),
("Executive Summary", "[2-3 sentences: scope, key conclusion, recommendation]"),
("Scope", "[What the report covers and what it excludes]"),
("Key Data Points", "1. [Statistic or data point with context]\n2. [Statistic or data point with context]\n3. [Statistic or data point with context]"),
("Methodology", "[How data was collected — survey, analysis, case study]"),
("Recommendations", "1. [Recommendation with supporting rationale]\n2. [Recommendation with supporting rationale]"),
("Limitations", "- [Sample bias, geographic scope, time period]"),
("Relevance", "[Why this matters for our context — specific applicability]"),
("Quality Assessment", "Credibility: [High/Med/Low] | Evidence: [High/Med/Low] | Recency: [High/Med/Low] | Objectivity: [High/Med/Low]"),
],
},
"executive": {
"name": "Executive Brief",
"description": "Condensed decision-focused summary for leadership consumption",
"sections": [
("Source", "[Title, Author, Date]"),
("Bottom Line", "[1 sentence: the single most important takeaway]"),
("Key Facts", "1. [Fact]\n2. [Fact]\n3. [Fact]"),
("So What?", "[Why this matters for our business/product/strategy]"),
("Action Required", "- [Specific next step with owner and timeline]"),
("Confidence", "[High/Medium/Low] — based on source quality and evidence strength"),
],
},
"comparison": {
"name": "Comparative Analysis",
"description": "Side-by-side comparison matrix for 2-5 sources on the same topic",
"sections": [
("Topic", "[Research topic or question being compared]"),
("Sources Compared", "1. [Source A — Author, Year]\n2. [Source B — Author, Year]\n3. [Source C — Author, Year]"),
("Comparison Matrix", "| Dimension | Source A | Source B | Source C |\n|-----------|---------|---------|---------|"
"\n| Central Thesis | ... | ... | ... |"
"\n| Methodology | ... | ... | ... |"
"\n| Key Finding | ... | ... | ... |"
"\n| Sample/Scope | ... | ... | ... |"
"\n| Credibility | High/Med/Low | High/Med/Low | High/Med/Low |"),
("Consensus Findings", "[What most sources agree on]"),
("Contested Points", "[Where sources disagree — with strongest evidence for each side]"),
("Gaps", "[What none of the sources address]"),
("Synthesis", "[Weight-of-evidence recommendation: what to believe and do]"),
],
},
"literature": {
"name": "Literature Review",
"description": "Thematic organization of multiple sources for research synthesis",
"sections": [
("Research Question", "[The question this review addresses]"),
("Search Scope", "[Databases, keywords, date range, inclusion/exclusion criteria]"),
("Sources Reviewed", "[Total count, breakdown by type]"),
("Theme 1: [Name]", "Summary: [Theme overview]\nKey Sources: [Author (Year), Author (Year)]\nFindings: [What sources say about this theme]"),
("Theme 2: [Name]", "Summary: [Theme overview]\nKey Sources: [Author (Year), Author (Year)]\nFindings: [What sources say about this theme]"),
("Theme 3: [Name]", "Summary: [Theme overview]\nKey Sources: [Author (Year), Author (Year)]\nFindings: [What sources say about this theme]"),
("Gaps in Literature", "- [Under-researched area 1]\n- [Under-researched area 2]"),
("Synthesis", "[Overall state of knowledge — what we know, what we don't, where to go next]"),
],
},
}
LENGTH_CONFIGS = {
"brief": {"max_sections": 4, "label": "Brief (key points only)"},
"standard": {"max_sections": 99, "label": "Standard (full template)"},
"detailed": {"max_sections": 99, "label": "Detailed (full template with extended guidance)"},
}
def render_template(template_key, length="standard", output_format="text"):
"""Render a summary template."""
template = TEMPLATES[template_key]
sections = template["sections"]
if length == "brief":
# Keep only first 4 sections for brief output
sections = sections[:4]
if output_format == "json":
result = {
"template": template_key,
"name": template["name"],
"description": template["description"],
"length": length,
"generated": datetime.now().strftime("%Y-%m-%d"),
"sections": [],
}
for title, content in sections:
result["sections"].append({
"heading": title,
"placeholder": content,
})
return json.dumps(result, indent=2)
# Text/Markdown output
lines = []
lines.append(f"# {template['name']}")
lines.append(f"_{template['description']}_\n")
lines.append(f"Length: {LENGTH_CONFIGS[length]['label']}")
lines.append(f"Generated: {datetime.now().strftime('%Y-%m-%d')}\n")
lines.append("---\n")
for title, content in sections:
lines.append(f"## {title}\n")
# Indent content for readability
for line in content.split("\n"):
lines.append(line)
lines.append("")
lines.append("---")
lines.append("_Template from research-summarizer skill_")
return "\n".join(lines)
def list_templates(output_format="text"):
"""List all available templates."""
if output_format == "json":
result = []
for key, tmpl in TEMPLATES.items():
result.append({
"key": key,
"name": tmpl["name"],
"description": tmpl["description"],
"sections": len(tmpl["sections"]),
})
return json.dumps(result, indent=2)
lines = []
lines.append("Available Summary Templates\n")
lines.append(f"{'KEY':<15} {'NAME':<30} {'SECTIONS':>8} DESCRIPTION")
lines.append(f"{'─' * 90}")
for key, tmpl in TEMPLATES.items():
lines.append(
f"{key:<15} {tmpl['name']:<30} {len(tmpl['sections']):>8} {tmpl['description'][:40]}"
)
return "\n".join(lines)
def main():
parser = argparse.ArgumentParser(
description="research-summarizer: Generate structured summary templates"
)
parser.add_argument(
"--template", "-t",
choices=list(TEMPLATES.keys()),
help="Template type to generate",
)
parser.add_argument(
"--length", "-l",
choices=["brief", "standard", "detailed"],
default="standard",
help="Output length (default: standard)",
)
parser.add_argument(
"--output", "-o",
choices=["text", "json"],
default="text",
help="Output format (default: text)",
)
parser.add_argument(
"--list-templates",
action="store_true",
help="List all available templates",
)
args = parser.parse_args()
if args.list_templates:
print(list_templates(args.output))
return
if not args.template:
print("No template specified. Available templates:\n")
print(list_templates(args.output))
print("\nUsage: python scripts/format_summary.py --template academic")
return
print(render_template(args.template, args.length, args.output))
if __name__ == "__main__":
main()
Related skills
How it compares
Pick research-summarizer for APA citation plus summary output; use dedicated reference managers when you need persistent libraries or non-APA styles.
FAQ
What does research-summarizer do?
Structured research summarization agent skill for non-dev users. Handles academic papers, web articles, reports, and documentation. Extracts key findings, generates comparative analyses, and produces properly formatted c
When should I use research-summarizer?
Structured research summarization agent skill for non-dev users. Handles academic papers, web articles, reports, and documentation. Extracts key findings, generates comparative analyses, and produces properly formatted c
What are common prerequisites?
--- name: "research-summarizer" description: "Structured research summarization agent skill for non-dev users.
Is Research Summarizer safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.