plugins/research/skills/research-quality-audit/SKILL.md
Audit a research corpus for shallow stubs, missing sources, and doc-depth issues. Detects docs written from abstracts rather than full papers; can dispatch expansion agents.
npx skillsauth add jmagly/aiwg research-quality-auditInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Audit the research corpus for shallow stubs, incomplete documentation, and missing source files. Detects analysis docs written from abstracts alone (the root cause of the 88-stub incident) and reports doc depth metrics across the corpus.
/research-quality-audit--range REF-XXX:YYY (optional)Audit a specific range of REF identifiers. Default: entire corpus.
--fix (optional)Auto-dispatch expansion agents to deepen stubs. Each stub gets a focused agent that reads the full PDF/source and rewrites the analysis doc.
--threshold N (optional)Minimum line count for a doc to be considered non-stub. Default: 80.
--format (optional)Output format: full (default), summary, or json.
--pdf-check (optional)Also verify that each REF has an actual PDF or source file, not just metadata.
.aiwg/research/findings/REF-*.md
(and/or documentation/references/REF-*.md depending on corpus layout)## headings)pdf_location?sources/text/REF-XXX.txt exist?Classify each doc into quality tiers:
| Tier | Content Lines | Sections | Quotes | Verdict | |------|-------------|----------|--------|---------| | Full | >= 150 | >= 8 | >= 3 | Comprehensive analysis | | Adequate | 80-149 | >= 5 | >= 1 | Meets minimum depth | | Stub | 40-79 | >= 3 | 0 | Written from abstract — needs expansion | | Skeleton | < 40 | any | 0 | Placeholder only — needs full rewrite |
Additional flags:
Research Quality Audit
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Corpus: 372 documents
Threshold: 80 content lines
Quality Distribution:
Full (150+): 124 (33%) ████████████████░░░░░░░░░░
Adequate (80-149): 89 (24%) ████████████░░░░░░░░░░░░░░
Stub (40-79): 98 (26%) █████████████░░░░░░░░░░░░░
Skeleton (<40): 61 (16%) ████████░░░░░░░░░░░░░░░░░░
Statistics:
Mean content lines: 112
Median: 94
Min: 12 (REF-299)
Max: 591 (REF-018)
Source Availability:
PDF present: 348 / 372 (94%)
Full text extracted: 201 / 372 (54%)
Missing PDF: 24 papers
Missing text: 171 papers
Stubs Requiring Expansion (159):
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
REF-253 22 lines skeleton No PDF "Agentic Design Patterns"
REF-254 35 lines skeleton Has PDF "Multi-Agent Debate"
REF-255 45 lines stub Has PDF "Language Agent Tree Search"
REF-256 48 lines stub No text "ReAct: Synergizing Reasoning"
...
Top 10 Shallowest (candidates for immediate expansion):
1. REF-299 12 lines skeleton "Toolformer: Language Models Can..."
2. REF-312 15 lines skeleton "WebArena: A Realistic Web..."
3. REF-253 22 lines skeleton "Agentic Design Patterns..."
...
When --fix is specified:
Auto-Fix Results:
Dispatched: 10 expansion agents (batch 1 of 16)
Expanded: 10 / 10
Mean improvement: 77 → 161 lines (+109%)
Remaining stubs: 149
Run again with --fix to process next batch.
| Component | Relationship |
|-----------|-------------|
| induct-research | Quality audit should auto-run after batch induction |
| corpus-snapshot | Gates on stub rate > 10% (#814) |
| research-lint | ref-frontmatter rule catches incomplete metadata; quality-audit catches shallow content |
| research-status | Doc depth is a component of corpus health scoring |
| research-acquire | For stubs with missing PDFs, triggers acquisition before expansion |
| Tool | What it checks |
|------|---------------|
| research-lint | Structural — frontmatter fields, naming, references resolve |
| research-quality-audit | Depth — is the content substantive? Was the source actually read? |
| research-quality | Evidence — GRADE assessment of the source's research quality |
| corpus-health | Aggregate — overall corpus metrics including depth, structure, coverage |
# Full corpus audit
/research-quality-audit
# Audit specific range
/research-quality-audit --range REF-253:372
# Auto-expand stubs (batch of 10)
/research-quality-audit --fix
# Strict threshold (120 lines minimum)
/research-quality-audit --threshold 120
# Check source file availability
/research-quality-audit --pdf-check
# JSON for programmatic use
/research-quality-audit --format json
data-ai
Report which research-corpus radar sidecars are overdue for refresh. Computes staleness (days since last refresh vs the cadence window) for every radar, sorted most-overdue-first. Runs via `aiwg corpus radar-status`.
data-ai
Aggregate research-corpus radar sidecars into a corpus or per-cluster freshness report — totals, overdue count, per-cluster / per-GRADE / per-trajectory breakdowns, an overdue table, and per-radar rationale snippets. Runs via `aiwg corpus radar-report`.
testing
Scaffold radar/freshness sidecars for research-corpus REFs. Pulls title/authors from the citation sidecar and GRADE from the analysis doc, defaults the refresh cadence from GRADE and the cluster from a corpus-local map, and stamps documentation/radar/REF-XXX-radar.md. Runs via `aiwg corpus radar-init`.
data-ai
Compute an entity's publication trajectory — per-year paper counts, topic drift, hot-streak detection (≥3 consecutive A-grade years), and career phase. Runs via `aiwg corpus profile-temporal`.