Refills a research project's docs/ folder by mining real artifacts already in the repo — git log, README, pyproject.toml, jupyter notebooks, .bib files, papers/ directory, existing experiment scripts, and prior docs/ entries. Use this skill whenever the user says "populate the docs", "fill in CLAUDE.md", "refresh docs/", "update findings.md from experiments", "import papers into literature.md", or has a research repo with empty TODO-laden docs/ files. Idempotent — safe to re-run; never overwrites user-written content; never fabricates research questions, hypotheses, or results. Pairs with the bootstrap-research skill: bootstrap creates the structure, populate fills it from project state. Also run after cloning someone else's research repo to onboard quickly, after a few weeks of work to refresh findings.md, or after adding new papers to refresh literature.md.
How this skill is triggered — by the user, by Claude, or both
Slash command
/populate-research-docs:populate-research-docsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Mines the project's existing artifacts (git, README, code, notebooks, papers, prior docs/) to fill in the `docs/` folder produced by the `bootstrap-research` skill. Designed to be re-run anytime — first-time onboarding, periodic refresh, or after a paper drop.
Mines the project's existing artifacts (git, README, code, notebooks, papers, prior docs/) to fill in the docs/ folder produced by the bootstrap-research skill. Designed to be re-run anytime — first-time onboarding, periodic refresh, or after a paper drop.
Read, don't invent. Every line written must trace back to a concrete source in the repo. When the source is missing or ambiguous, leave the existing TODO: marker and report it as needing human input. A wrong fact is worse than a TODO:.
bootstrap-research (the natural pairing — bootstrap scaffolds, populate fills).findings.md from experiments.md.papers/ or appending to .bib — to refresh literature.md.Before any work:
pwd and ls -la. Confirm cwd looks like a real project root (not $HOME / mono-repo root). If unclear, ask which directory to work on.CLAUDE.md and docs/ exist. If neither exists → tell the user to run bootstrap-research first; do not silently create them. If only CLAUDE.md exists (no docs/), ask whether to scaffold docs/ first via bootstrap, or proceed with CLAUDE.md-only updates.Run these in parallel where possible:
| Source | Tool | Feeds |
|---|---|---|
git log --oneline -50 | bash | progress.md recent activity, contributor list |
git log --since='3 months ago' --pretty=format:'%h %ad %s' --date=short | bash | recent decisions / progress |
README.md | Read | overview.md (research question, scope, methodology) |
pyproject.toml / requirements.txt / Cargo.toml | Read | overview.md tech stack section, CLAUDE.md tech stack |
*.ipynb (top-level + notebooks/) | bash + jq/python | experiments.md candidate entries, findings.md if results explicit |
*.bib, references.bib | Read | literature.md Read / Reading queue |
papers/, references/, lit/ | ls | literature.md reading queue (PDF filenames) |
experiments/, runs/, logs/ | ls -R | experiments.md ID inference, architecture.md runs layout |
src/, *.py outside notebooks | bash + grep | architecture.md swap points and pipeline shape |
Existing docs/experiments.md | Read | source for findings.md distillation |
Existing docs/decisions.md | Read | cross-check against commit messages mentioning "decided" |
For each docs file: read first, then merge conservatively. Never overwrite a non-TODO line. Insert auto-content under a clearly marked block:
<!-- auto-populated YYYY-MM-DD by populate-research-docs — review and edit -->
<auto-content here>
<!-- /auto-populated -->
Re-running the skill replaces only the content inside these markers (idempotency). User edits outside the markers are preserved.
overview.md?, or has a "Research question:" / "We ask:" / "Hypothesis:" line). Otherwise leave the TODO and report it.progress.mdAppend a new dated section (today) summarizing recent git activity:
## YYYY-MM-DD — auto-populated snapshot
### Recent activity (last 30 days)
- <commit subject> (<hash>, <date>)
- ...
### Detected state
- Notebooks: N total, last modified <date>
- Experiment outputs: <runs/ subfolders count, latest>
- Open TODOs in code: <grep count>
Do not rewrite past progress.md entries. Append only.
experiments.mdHighest-risk file. Be conservative.
experiments/ or runs/ directories have subfolders that look like experiment outputs (config + log + checkpoint pattern), draft stub entries under a section titled ## Detected runs (auto, please verify):
## YYYY-MM-DD-auto — <subfolder name>
**Setup** (auto-detected):
- Code: <script or commit if findable>
- Params: <from config.yaml/json if present>
- Seed: <if logged>
**Result**: TODO: pull from <log path>
**Hypothesis**: TODO: human input — not inferable
Never invent the hypothesis. Leave it TODO: so the user knows to fill it.[UNVERIFIED] and reference the notebook + cell number.findings.mdOnly run distillation if experiments.md has ≥3 real (non-stub) entries. Otherwise skip and report.
works, does not improve, unclear, surprising).findings.md must reference the experiment ID it came from.literature.md.bib files: extract @article / @inproceedings entries → put in Read if the user has cited them anywhere (grep for the bibkey across project), else Reading queue.papers/ / references/ / lit/ → Reading queue with the filename. Do not invent takeaways.src/loss.py:42").decisions.mdgit log for commit messages matching decided|decision|chose|settled|switched to|going with → suggest an entry per match with the commit date and message.[AUTO — verify] prefix so the user can confirm and clean up.architecture.mdOnly update if file exists (bootstrap creates it conditionally). Do not create it if missing — defer to bootstrap's signal logic.
src/data.py → src/model.py → src/train.py exists, draft an ASCII flow. Mark as auto-detected.hydra.utils.instantiate, getattr(models, ...), MODEL_REGISTRY). List what was found.todo.mdScan codebase for TODO: / FIXME: / XXX: comments. Append a section:
## Detected in code (auto, YYYY-MM-DD)
- [ ] `path/to/file.py:42` — <comment text>
Group by directory if list exceeds 20 items. Don't touch the user's Now / Soon / Later sections.
CLAUDE.mdTouch only if there are unresolved {{PLACEHOLDER}} markers or TODO: in the Tech stack / File map / Hard rules sections — fill from current project state. Do not change the workflow / conventions sections (those are user-editable templates, not auto-content).
TODO: is always the safe choice.<!-- auto-populated --> markers. User edits are sacred.CLAUDE.md and docs/ are absent — tell the user to bootstrap first.literature_full.md).auto / UNVERIFIED / [AUTO — verify] so the user can spot and clean them.After running, print a concise summary:
overview.md: filled 2 of 4 TODOs, findings.md: 0 entries (need ≥3 experiments first), etc.TODO: markers that need human input — this is the user's punch list.<!-- auto-populated --> markers and won't clobber your edits."Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Applies a firm's KYC/AML rules grid to parsed onboarding records: assigns risk rating, checks required documents, outputs rule outcomes with citations, and routes for escalation.
Generates daily or weekly digests of activity from connected sources (chat, email, docs, tasks, CRM), highlighting action items, decisions, mentions, and project updates.
npx claudepluginhub torrid-fish/research-init --plugin populate-research-docs