research
Skill2 starsChanged 45 days agoMITView on GitHub
Researches a question or idea and writes a cited markdown note to ~/notes/research, which an independent agent then verifies. Runs when the user types /research.
189 other projects use a version of this.
Adopted by
Most recently taken up by
- dialog-db/dialog-dbtheir own version, first seen Nov 9, 2026
- howells/skillstheir own version, first seen Nov 8, 2026
- xiaoxiaosrm/dsh-mattpocock-skillstheir own version, first seen Nov 8, 2026
- Suge8/friedbuntheir own version, first seen Nov 8, 2026
- wowyuarm/dsh-agent-teamtheir own version, first seen Nov 8, 2026
- Contexera/dsh-agent-teamtheir own version, first seen Nov 8, 2026
Used with
Projects with it also use daily-arxiv, exp-eval and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
LambenthanSkilldaily-arxiv
每日从 arXiv 拉取新论文,过滤相关性,auto-ingest 高优先级论文,检测 SOTA 更新
Also in 5 projects that use this
LambenthanSkillexp-eval
实验判决门:Review LLM 独立评判实验结果 → 4 种判决路径 → 自动更新 claims confidence、ideas status、graph edges
Also in 5 projects that use this
truongtv22SkillProblem-Solving Techniques
Apply systematic problem-solving techniques for complexity spirals (simplification cascades), innovation blocks (collision-zone thinking), recurring patterns (meta-pattern recognition), assumption constraints (inversion exercise), scale uncertainty (scale game), and dispatch when stuck. Techniques derived from Microsoft Amplifier project patterns adapted for immediate application.
Also in 5 projects that use this
liufeng1976Skillsetup-ts-deep-modules
Wire dependency-cruiser into a TypeScript repo so each package is a deep module — implementation hidden in subfolders, reachable only through its entry-point files. User-invoked.
Also in 43 projects that use this
skyllwtSkillexp-pilot-eval
Pilot result evaluation — read pilot results, apply success criteria, update idea page (pilot_result, failure_reason if failed), generate PILOT_VERDICT_REPORT. Called by /ideate Phase 5 after /exp-pilot-run.
Also in 4 projects that use this
skyllwtSkillexp-pilot-run
Pilot experiment execution — read Pilot Spec YAML, write pilot code, run experiment(Confirm with the user before operation and require the applicant to conduct manual inspection), return results. Called by /ideate Phase 5. Does NOT modify wiki pages or judge pass/fail.
Also in 4 projects that use this
- +5 more from Lambenthan
- +1 more from skyllwt
Other versions189 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 189
- mattpocock/skills★ 309ksame name
- Yeachan-Heo/oh-my-claude-sisyphus★ 41ksame name
- Yeachan-Heo/oh-my-claudecode★ 41ksame name
- QuivrHQ/quivr★ 40ksame name
- The-Vibe-Company/quivr★ 40ksame name
- udecode/plate★ 17ksame name
- openai/plugins★ 7.8ksame name
- ArcReel/ArcReel★ 6.3ksame name
- vinvcn/mattpocock-skills-zh-CN★ 5.5ksame name
- withcoral/coral★ 4.9ksame name
179 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository5 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- cold-reviewSkill
- ideaSkill
- implementSkill
- specSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
23 rules. 0 are common, 6 are distinctive, and 17 are very specific to this project.
0
Common
Most of the 169 edited versions we read keep these.
6
Distinctive
This author's own choices. Worth a look.
17
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 24
Every commit in ~/notes names its files after --: git -C ~/notes commit -m '<message>' -- <files>.
- Very specific: line 43
If git -C ~/notes status fails or ~/notes lacks CLAUDE.md, templates/research.md or, at ideas depth, templates/research-ideas.md, …
- Distinctive: line 47
If an ambiguity would change the research (which cloud, what scale), ask one question with AskUserQuestion.
- Very specific: line 50
Repo context: if the working directory is in a git repo under ~/code, note its path.
- Very specific: line 52
Launch: Run git -C ~/notes status --porcelain --untracked-files=all and keep its output.
- Very specific: line 72
Run ${CLAUDE_PLUGIN_ROOT}/skills/research/scripts/check-note.py --headroom <note>.
- Very specific: line 73
Run git -C ~/notes status --porcelain --untracked-files=all: it lists every new file, where plain --porcelain shows a new directory as one …
- Very specific: line 74
Leave a flagged note only if a brief in another run dir with no reply.md yet names it (grep -l 'Output file: <its absolute path>' …
- Very specific: line 76
Run the research-verifier agent (Agent runs) with the brief Note: <absolute path>.
- Very specific: line 80
Run the check without --headroom, and fix any FAIL lines yourself.
- Very specific: line 85
Run the verifier (Agent runs, in the run dir research-verifier-finish) with the brief above, plus Also check: "<claim>".
- Distinctive: line 90
If it's missing, send it back once: "Your reply has no Prior-art hunt.
- Distinctive: line 91
If it's still missing, say in the report that novelty wasn't independently checked.
- Distinctive: line 115
Every row that isn't CONFIRMED needs a Resolution: corrected, re-cited, or marked *(unverified)* in the text.
- Distinctive: line 116
If the section exists, update the rows checked again, add new ones, drop rows for claims the note no longer makes, and update the date line.
- Very specific: line 120
Run research-verifier in the run dir research-verifier-2, with Note: <absolute path>.
- Very specific: line 121
When it returns, apply its fixes, update Verification and carry on from step 4.
- Very specific: line 123
If round 3's row is CONFIRMED with Bottom line holds: yes, carry on from step 4.
- Distinctive: line 128
every Verification row is CONFIRMED or resolved.
- Very specific: line 132
Ideas depth only: read ${CLAUDE_PLUGIN_ROOT}/skills/research/ideas-finish.md and follow it.
- Very specific: line 133
Rebuild the notes index: run ${CLAUDE_PLUGIN_ROOT}/skills/research/scripts/build-index.py ~/notes.
- Very specific: line 134
Commit: only the files you created or changed in ~/notes (the note, an edited idea note, index.md and, at ideas depth, the evidence note …
- Very specific: line 144
If the recommendation is to change a repo, add a line: the next step is /spec <note>, run from that repo.
“Common” is measured: kept by at least 6 in 10 of the 169 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Research and document
Request: $ARGUMENTS
Progress. Copy this checklist into your reply at the end of every turn that ends while an agent runs, ticked to date, and once more in the final report. When the agent returns, carry on from the first unticked line.
- [ ] Frame: question, depth and output path settled; researcher launched
- [ ] Researcher: note written, check-note.py passes or its FAIL lines sent back
- [ ] Verifier: fixes applied, Verification recorded, round 2 or 3 if the conclusion changed
- [ ] Status set, idea linked, ideas-finish.md done at ideas depth
- [ ] Index rebuilt, notes committed
- [ ] ReportEvery commit in ~/notes names its files after --: git -C ~/notes commit -m '<message>' -- <files>. If git says index.lock exists, retry once.
Run git log, git diff and every other read-only git command except git -C ~/notes status through ${CLAUDE_PLUGIN_ROOT}/hooks/git-read.py. Run one command per Bash call, with each script's full path written out: a shell variable, a cd or a second command in the call isn't pre-approved, so it asks the user.
The research rules are in ${CLAUDE_PLUGIN_ROOT}/hooks/agents/researcher.md and the checking rules in ${CLAUDE_PLUGIN_ROOT}/hooks/agents/research-verifier.md. Don't restate them in briefs.
Agent runs
Each agent runs as a headless, sandboxed session: read ${CLAUDE_PLUGIN_ROOT}/hooks/run-agent.md and follow it. The work dir is ~/notes; the run dir is ~/.cache/agent-runs/<safe basename>/<agent>, where <safe basename> is what ${CLAUDE_PLUGIN_ROOT}/hooks/run-name.py '<note basename>' prints, <note basename> being the note's filename without .md: the name itself if the launcher accepts it, else a safe name for it.
Modes
/research <question or idea path>: full depth; quick for a narrow factual question (a limit, a version, a price, how one feature behaves) with no decision to make; ideas if it asks for ideas, what to build or write, or a ranking, saying in the framing line that you chose it./research quick <question>: Bottom line, a one-line The question, Findings and Sources, 600 words at most./research ideas <question or idea path>: a ranked shortlist from a pool of candidates, the top three filed as idea notes. 2,400 words at most, with the pool after Sources and outside the budget./research finish <research note path> ["claim" ...]: skip to verification: after a session ended early, after a hand edit, or when/specflags a borrowed claim (pass its wording).
1. Frame
If git -C ~/notes status fails or ~/notes lacks CLAUDE.md, templates/research.md or, at ideas depth, templates/research-ideas.md, templates/idea.md or projects/mindshare/attention-evidence.md, name what's missing, point to "Set up ~/notes" in ${CLAUDE_PLUGIN_ROOT}/README.md, and stop. Don't create any.
- Resolve the question.
- An idea note's path: read it, and research the idea as a whole. No request: the question just discussed, or ask in one line and stop.
- If an ambiguity would change the research (which cloud, what scale), ask one question with AskUserQuestion; otherwise list assumptions in the brief.
- Existing work:
grep -ril '<key terms>' ~/notes/research ~/notes/ideas. If a note already covers it, ask whether to update it or write a new one. - Ranking and lenses (ideas depth only). Rank by "likely mindshare" (stars, shares, Hacker News, Reddit and LinkedIn traction, talks, demos) unless the request names another criterion; novelty counts for more than usefulness to clients. Lenses: finding, tool, dataset, game, lab and essay, less any the question rules out.
- Repo context: if the working directory is in a git repo under
~/code, note its path; don't read its files. - Output path:
~/notes/research/YYYY-MM-DD-short-slug.md(today's date, 3–6 word lowercase hyphenated slug), or the existing note if updating. Launch. Run
git -C ~/notes status --porcelain --untracked-files=alland keep its output. Then run theresearcheragent (Agent runs) with this brief. Leave outRank byandLensesexcept at ideas depth.Depth: <full | quick | ideas> Question: <restated question, precise> Rank by: <the ranking criterion, spelled out> Lenses: <finding, tool, dataset, game, lab, essay, or the subset in scope> A good answer must cover: <2–4 success criteria> Assumptions: <assumptions made in framing, or "none"> Output file: <absolute path> (<create it | update the existing note: keep its structure, refresh facts, and add a dated "Updated" line under Bottom line>) Idea note: <absolute path, or "none"> Repo in scope: <absolute path, or "none"> Related notes: <absolute paths found in ~/notes, or "none"> Today's date: <YYYY-MM-DD>- Tell the user in one or two lines the question, the depth, any ranking criterion and the note's path. End your turn.
2. When the researcher finishes
- Run
${CLAUDE_PLUGIN_ROOT}/skills/research/scripts/check-note.py --headroom <note>. If the agent failed, or the note is missing or has no Sources, tell the user and stop; don't commit.- Run
git -C ~/notes status --porcelain --untracked-files=all: it lists every new file, where plain--porcelainshows a new directory as one line. The researcher may write only its note: flag any other changed file under~/notes/researchnot in the output kept at launch, and any change to~/notes/projects/mindshare/attention-evidence.mdor~/notes/ideas/. - Leave a flagged note only if a brief in another run dir with no
reply.mdyet names it (grep -l 'Output file: <its absolute path>' ~/.cache/agent-runs/*/researcher*/brief.md): that run is still going. Show the user the diff of any other as this run's change, and ask. Commit neither.
- Run
- On FAIL, send the FAIL lines to the researcher as a follow-up (
${CLAUDE_PLUGIN_ROOT}/hooks/run-agent.md, Follow-ups) to fix. After two rounds, carry on and report what still fails. - Run the
research-verifieragent (Agent runs) with the briefNote: <absolute path>. Today's date: <YYYY-MM-DD>., addingDepth: ideas: run the prior-art hunt first.at ideas depth. Tell the user in one line that it's being verified. End your turn.
In finish mode, start here:
- Run the check without
--headroom, and fix any FAIL lines yourself. On a length FAIL, cut unverified points only, as step 4 of section 3 says; leave a WARN for up to 10 % over after verification. Leave Verification rows the check says no longer match for the verifier. - Collect the claims to name in the brief:
- claims passed as arguments;
- claims the check reports as no longer matching;
- claims changed since the last verification: find the last
research:commit that touched the note (${CLAUDE_PLUGIN_ROOT}/hooks/git-read.py -C ~/notes log --format='%h %s' -- <note>), then${CLAUDE_PLUGIN_ROOT}/hooks/git-read.py -C ~/notes diff <that commit> -- <note>. Skip this if the note has never been committed, or if~/noteshas no commits yet:logfails there.
- Run the verifier (Agent runs, in the run dir
research-verifier-finish) with the brief above, plusAlso check: "<claim>"; "<claim>"if there are any.
3. When the verifier finishes
The reply needs a Prior art: block, with its queries, and table rows: at ideas depth for #1 and #2 (Novelty rows), and at full depth for any absence claim the Bottom line or Recommendation rests on.
If it's missing, send it back once: "Your reply has no Prior-art hunt. Run it as your instructions describe, every query against every venue, and reply again in full."
If it's still missing, say in the report that novelty wasn't independently checked.
- Apply its fixes to the note:
- WRONG: replace the figure or statement with the corrected one, and update or add the source.
- MISCITED: cite the source the verifier found (add it to Sources).
- UNSUPPORTED or UNREACHABLE: mark the claim (unverified), or soften it to what the sources say.
- Other problems: fix dangling citations; add missed evidence to Findings or Counter-evidence with its source, adjusting the wording it contradicts.
- Prior art (ideas depth): add every
sameandoverlapshit to Findings → Prior art with its source. For a WRONG Novelty row, narrow that cell, and the Bottom line and Recommendation if they repeat it, to what is still new. Cut or narrow pool lines a hit makes redundant.
Record the verification in a
## Verificationsection after Sources (at ideas depth, after the Candidate pool:check-note.pyfails the other order), outside the word budget./specreads it.## Verification Checked on <YYYY-MM-DD> by research-verifier: <N> of <M> claims confirmed, a sample of the note's <K> cited claims. | Claim | Cited | Verdict | Resolution | |---|---|---|---| | <the claim's wording as it now reads in the note> | [4] | CONFIRMED | | | <…> | [7] | WRONG | corrected to <value>, cited [12] | | <…> | [9] | UNREACHABLE | marked *(unverified)*: <why, e.g. GCP page renders with JavaScript> |- Record every row the verifier returned.
<N>and<M>count the CONFIRMED rows and all rows, andcheck-note.pycompares them, so put round details after them ("16 of 21 claims confirmed across both rounds' rows. Round 1: 15 of 18 …"). <K>is the note's count of cited claims, fromcheck-note.py's warning; leave that clause out if the table covers them all.- Every row that isn't CONFIRMED needs a Resolution: corrected, re-cited, or marked (unverified) in the text.
- If the section exists, update the rows checked again, add new ones, drop rows for claims the note no longer makes, and update the date line. A Claim quotes the note's current wording.
- Record every row the verifier returned.
- If the conclusion changed, the rewritten text gets one more check:
- That is
Bottom line holds: no, missed evidence that weakens the recommendation, or at ideas depth asamehit on #1: re-rank the Shortlist, and a new #1 gets its prior-art hunt in round 2. - Revise the Bottom line and Recommendation to match the evidence, set
status: draft, thengit -C ~/notes add <note>and commit with the messageresearch: <title> (conclusion revised, re-verifying). - Run
research-verifierin the run dirresearch-verifier-2, withNote: <absolute path>. Today's date: <YYYY-MM-DD>. Round 2.Tell the user in one line that the conclusion changed and is being re-checked. End your turn. - When it returns, apply its fixes, update Verification and carry on from step 4. If it also says
Bottom line holds: no, leave the note as draft and say so, unless round 3 applies. - Round 3, only when round 2's
norests on an absence claim it narrowed again: apply the narrowing and runresearch-verifierinresearch-verifier-3, withNote: <absolute path>. Today's date: <YYYY-MM-DD>. Round 3: check only "<the narrowed sentence>". - If round 3's row is CONFIRMED with
Bottom line holds: yes, carry on from step 4; if not, leave the note as draft and name the sentence in the report. There is no round 4.
- That is
- Re-run
check-note.py. With a Verification table, up to 10 % over the limit is a WARN; leave it. Cut only on a FAIL, and then cut whole unverified points from Findings or Options. Never cut a sentence a Verification row quotes, a Project health row, the Bottom line, Recommendation or Counter-evidence, nor Shortlist rows or cells. Status: set
status: finalwhen all of these hold:- the check passes;
- the latest verifier says
Bottom line holds: yes; - every Verification row is CONFIRMED or resolved.
A visibly marked claim that can't be verified (a JavaScript-only page, a login wall) doesn't hold a note in draft unless the Bottom line stands on it. Otherwise set
status: draft, even if it wasfinal, and say why.- Link the idea, if there was one: set its
status: exploringif it's stillseed(never moveadopted,parkedordroppedback), and add the research note's path to itsrelated. If the Bottom line recommends against the idea, say so in the report and suggestparkedordropped; that call is the user's. - Ideas depth only: read
${CLAUDE_PLUGIN_ROOT}/skills/research/ideas-finish.mdand follow it. - Rebuild the notes index: run
${CLAUDE_PLUGIN_ROOT}/skills/research/scripts/build-index.py ~/notes. If it fails, say so in the report and commit without the index; don't writeindex.mdyourself. - Commit only the files you created or changed in
~/notes(the note, an edited idea note,index.mdand, at ideas depth, the evidence note and new idea notes):git -C ~/notes add <files>, thengit -C ~/notes commit -m 'research: <title>' -- <files>, following this session's commit attribution rules. Don't push. - Report, one short line for each of these:
- the note path;
- the bottom line in two sentences;
- verification, e.g.
9 of 10 claims confirmed (a sample of 31 cited), 1 corrected, 1 left unverified, and whether the conclusion changed; - the status and, if draft, why;
- the commit hash;
- what its agents cost, from each
run-agent.shrun's last line as${CLAUDE_PLUGIN_ROOT}/hooks/run-agent.mdstep 3 says:Agents cost $<total> (<agent> $<cost>, …), orAgents cost at least $<known> (<agent> unknown, …)when any run's cost is unknown; - at ideas depth: the pool size and lenses covered, the prior-art verdict on #1 and #2, and the idea notes filed.
If the recommendation is to change a repo, add a line: the next step is /spec <note>, run from that repo. If the Recommendation is conditional or the options are close, suggest recording the choice in ~/notes/decisions/ first.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

