Review Researcher
Turn a paper-level Obsidian corpus into a researcher-level evidence map. Make omission and unsupported synthesis detectable through a local corpus manifest, full-note reading ledger, exact anchors, and link audits.
Non-Negotiable Order
Execute these gates in order:
- Lock local corpus. Generate and validate the manifest.
- Read every note in full. Build and audit one evidence record per manifest note.
- Synthesize local findings. Do not use web material yet.
- Use non-browser web/API sources only for external context. Verify current role, projects, recent outputs, and missing historical facts.
- Write and audit the Obsidian hub. Link every manifest note and add reverse links.
Do not browse, draft the review, or announce conclusions before Gate 2 passes. Search snippets, frontmatter, abstracts, rg extracts, and existing researcher summaries are not substitutes for reading the complete notes.
Gate 1: Lock The Local Corpus
- Locate the Obsidian vault and
notes/literature/. - Resolve the researcher identity and aliases. Do not merge similarly named people.
- Run:
python <SKILL_DIR>/scripts/prepare_researcher_corpus.py `
--vault <VAULT_ROOT> `
--researcher "<Canonical Name>" `
--alias "<Alias 1>" `
--alias "<Alias 2>" `
--min-papers 10 `
--output "<VAULT_ROOT>/attachments/researcher_reviews/<slug>/corpus-manifest.json"
- Require at least 10 unique matching notes with
citekey,status: analyzed, andpdf_conversion_method: mineru. - If the gate fails, stop and recommend
$survey-researcher-papers. Report the exact missing count or invalid notes.
The manifest is the immutable reading contract for this run. Its reading hash ignores only the generated researcher_review frontmatter line, so adding the final backlink does not invalidate the ledger. Any other note change after reading requires rebuilding that record.
Gate 2: Read Every Note And Prove Coverage
Read every manifest path completely, one note at a time. For long notes, read consecutive chunks until EOF; record chunk progress. Do not sample only the opening, conclusion, or keyword hits.
After each complete note, append one record to reading-ledger.json. Follow references/evidence-ledger-schema.md. Each record must include:
- exact citekey and note SHA-256 from the manifest
- problem being solved
- method/evidence used
- principal result
- important limitation
- trajectory signal for the researcher
Each of the five evidence fields must contain:
- a concise synthesis
- an exact section heading from the note
- a short exact anchor copied from that section
Use at least three distinct note sections per paper. Anchors exist to prove that the note was actually consulted; they are not quotations for the final review.
Audit before continuing:
python <SKILL_DIR>/scripts/audit_reading_ledger.py `
--manifest "<...>/corpus-manifest.json" `
--ledger "<...>/reading-ledger.json"
If any note is absent, duplicated, stale, too shallow, or has a nonmatching anchor, return to that note. Web access and synthesis remain blocked until status is ready.
Gate 3: Local-Only Synthesis
Use only the audited ledger and full local notes to build:
- chronological paper matrix
- recurring problem map
- method and evidence stack
- research trajectory
- representative works by foundation, influence, recency, and user relevance
- descriptive author-position counts
- recurring collaborators
- demonstrated expertise versus review-only interests
- contradictions, negative results, and unresolved gaps
Every paper-level claim in the review must have a nearby Obsidian wikilink. Do not infer PI status, mentorship, corresponding authorship, or contribution from author order alone.
Before browsing, write a short internal local-only conclusion. Preserve it so web material cannot silently overwrite what the papers show.
Gate 4: External Context
Only after Gate 2 passes, use web search and source APIs to verify facts the local corpus cannot establish. Never invoke Browser, Computer Use, Playwright, Selenium, or other UI automation:
- current title and institution
- education dates and student-era publications
- current projects, grants, lab members, and recent outputs outside the corpus
- dynamic citation indicators when useful
Prefer official institutional profiles, lab pages, ORCID, Crossref, publisher records, funder databases, and repositories. Keep external claims in separately sourced paragraphs. Label inference explicitly. Never use a profile's research-interest list as proof that a method was demonstrated in the local papers.
If web evidence conflicts with the local corpus, report the conflict. Do not force a single narrative.
Gate 5: Write The Obsidian Hub
- Copy assets/researcher-review-template.md.
- Save as
notes/supervisors/<Researcher Name> - Researcher review.mdunless the vault has a stronger convention. - Keep the note researcher-specific. Do not include generic methodology, review instructions, audit procedures, or the evidence ledger.
- Link every manifest paper with its exact filename stem.
- Add
researcher_review: "[[<Researcher Name> - Researcher review]]"to each paper's frontmatter. Preserve existing fields and user notes. - Use Markdown links for external sources; do not create unresolved wikilinks for papers absent from the vault.
- Include corpus size, date range, cutoff date, and evidence boundaries.
- Make the
Literature Corpusor reading-set table the single paper-to-note index. In each completed paper'sPapercell, use an Obsidian alias link to the exact readable literature-note filename:[[Readable note filename\|Exact paper title]]. Escape the alias separator as\|inside Markdown tables. - Do not create or retain a separate
Analyzed literature notes, backlinks, or bidirectional-links list that duplicates the table. Reverse-link each literature note through itsresearcher_reviewfrontmatter field instead.
The paper table must include year, the exact literature-note wikilink in the paper-title cell, author position, field, problem, method, result, and limitation. Keep each row concise enough to scan. Never create a speculative table link: if a manifest note is missing or unresolved, fail the gate rather than linking a nonexistent target.
Final Audit
python <SKILL_DIR>/scripts/audit_researcher_review.py `
--vault <VAULT_ROOT> `
--review "<VAULT_ROOT>/notes/supervisors/<Researcher Name> - Researcher review.md" `
--manifest "<...>/corpus-manifest.json" `
--ledger "<...>/reading-ledger.json" `
--min-papers 10
Require:
- reading-ledger audit is
ready - review links every manifest note exactly once as a unique target
- each unique paper target appears in the corpus/reading-set table itself, not in a duplicate standalone link list
- no missing or ambiguous wikilinks
- every linked note has required analysis fields and an explicit reverse link
- review frontmatter
corpus_sizeequals manifest count
Do not report completion while any check fails.
Honest Limitation
No script can prove subjective human-like comprehension. This workflow instead makes shortcuts observable: every file is enumerated and hashed, every paper requires five section-grounded evidence records, external browsing is gated, and the final review must cover the same locked corpus.
Completion Report
Report the hub path, manifest count and date range, reading-ledger status, link-audit status, strongest locally demonstrated themes, externally sourced current context, and unresolved evidence. If Gate 1 fails, report only the deficit and the $survey-researcher-papers next step.