/research
Gather external knowledge the spec needs and distill it into §R — the durable research log — so build grounds in facts instead of hallucinating library behavior. Each finding cites a source; unsourced claims are flagged, never written as fact. Triggers when a spec decision
$ npx -y skills add JuliusBrussee/cavekit --skill research --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/research
Context preview
The summary Claude sees to decide when to auto-load this skill.
Gather external knowledge the spec needs and distill it into §R — the durable research log — so build grounds in facts instead of hallucinating library behavior. Each finding cites a source; unsourced claims are flagged, never written as fact. Triggers when a spec decision
SKILL.md
research.SKILL.mdname: research
description: |
Gather external knowledge the spec needs and distill it into §R — the durable
research log — so build grounds in facts instead of hallucinating library
behavior. Each finding cites a source; unsourced claims are flagged, never
written as fact. Triggers when a spec decision hinges on a library/API/best
practice the agent is unsure of, when the user says "research this", "what's
the best lib for…", "check current best practice", or invokes /ck:research.
Defers the §R write to the spec skill.
research — external knowledge → §R
**Every finding cites a source. No source → flag it `?`, never write a guess as fact.**
"Process without library context gives you well-organized hallucinations." Build invents a plausible-but-wrong API & §B fills with avoidable bugs. Research is the external oracle: pull the real fact once, log it caveman, never re-derive.
WHEN TO RESEARCH
- A §C/§I/§V decision hinges on a lib, API, version, or pattern you are unsure of.
- You are about to assume how an external dependency behaves.
- The idea touches a domain with real prior art (auth, payments, crypto, rate-limit).
- `/grill` parked a `?` that the outside world must answer.
Skip when the build touches only code you already wrote. Research scales to the unknown, ⊥ to habit.
FOUR STEPS
1. SCOPE
Turn the unknown into 1-3 concrete questions. Vague "research auth" → "JWT lib for Node ESM, maintained?" + "refresh-token rotation: current best practice?". A scoped question gets a citable answer; a vague one gets an essay.
2. GATHER
Use web search / docs tools. Prefer primary sources: official docs, the repo, the RFC, the paper. Two independent sources beat one confident blog. For a big sweep, spawn a sub-agent so the raw pages never touch this context — it returns only the distilled finding + source.
3. DISTILL
Crush each answer to one caveman line + its source. Drop the prose. The §R row is the memory; the tab you read is not.
> R3|refresh token|rotate on use, revoke family on reuse-detect|datatracker.ietf.org/doc/html/rfc6819#section-5.2.2.3
4. HAND OFF
Emit the §R rows & hand to the **spec** skill to append. If a finding changes a constraint or interface, note the §C/§I edit for spec too. Research proposes; spec writes.
SOURCE DISCIPLINE
- Cite a URL, repo, RFC, or paper per row. Verbatim identifiers/versions.
- Could not verify → write the row but flag `?` in the finding & say so. An
unverified claim labeled honestly is fine; one disguised as fact is a future §B.
- Conflicting sources → log both, let the user pick. ⊥ silently average them.
WHEN TO STOP
Done when every scoped question has a sourced §R row (or an honest `?`), and no build decision still rests on an unchecked assumption. ⊥ research past the questions you scoped — that is just burning the attention budget.
BOUNDARIES
- ⊥ write SPEC.md. Hand §R rows to spec.
- ⊥ write a finding as fact without a source.
- ⊥ dump raw pages into context or §R. Distill or it does not land.
- ⊥ research what you can read in the repo. Local truth > web guess.
Read more
name: research description: | Gather external knowledge the spec needs and distill it into §R — the durable research log — so build grounds in facts instead of hallucinating library behavior. Each finding cites a source; unsourced claims are flagged, never written as fact. Triggers when a spec decision hinges on a library/API/best practice the agent is unsure of, when the user says "research this", "what's the best lib for…", "check current best practice", or invokes /ck:research. Defers the §R write to the spec skill.
research — external knowledge → §R
**Every finding cites a source. No source → flag it `?`, never write a guess as fact.**
"Process without library context gives you well-organized hallucinations." Build invents a plausible-but-wrong API & §B fills with avoidable bugs. Research is the external oracle: pull the real fact once, log it caveman, never re-derive.
WHEN TO RESEARCH
- A §C/§I/§V decision hinges on a lib, API, version, or pattern you are unsure of.
- You are about to assume how an external dependency behaves.
- The idea touches a domain with real prior art (auth, payments, crypto, rate-limit).
- `/grill` parked a `?` that the outside world must answer.
Skip when the build touches only code you already wrote. Research scales to the unknown, ⊥ to habit.
FOUR STEPS
1. SCOPE
Turn the unknown into 1-3 concrete questions. Vague "research auth" → "JWT lib for Node ESM, maintained?" + "refresh-token rotation: current best practice?". A scoped question gets a citable answer; a vague one gets an essay.
2. GATHER
Use web search / docs tools. Prefer primary sources: official docs, the repo, the RFC, the paper. Two independent sources beat one confident blog. For a big sweep, spawn a sub-agent so the raw pages never touch this context — it returns only the distilled finding + source.
3. DISTILL
Crush each answer to one caveman line + its source. Drop the prose. The §R row is the memory; the tab you read is not.
> R3|refresh token|rotate on use, revoke family on reuse-detect|datatracker.ietf.org/doc/html/rfc6819#section-5.2.2.3
4. HAND OFF
Emit the §R rows & hand to the **spec** skill to append. If a finding changes a constraint or interface, note the §C/§I edit for spec too. Research proposes; spec writes.
SOURCE DISCIPLINE
- Cite a URL, repo, RFC, or paper per row. Verbatim identifiers/versions.
- Could not verify → write the row but flag `?` in the finding & say so. An
unverified claim labeled honestly is fine; one disguised as fact is a future §B.
- Conflicting sources → log both, let the user pick. ⊥ silently average them.
WHEN TO STOP
Done when every scoped question has a sourced §R row (or an honest `?`), and no build decision still rests on an unchecked assumption. ⊥ research past the questions you scoped — that is just burning the attention budget.
BOUNDARIES
- ⊥ write SPEC.md. Hand §R rows to spec.
- ⊥ write a finding as fact without a source.
- ⊥ dump raw pages into context or §R. Distill or it does not land.
- ⊥ research what you can read in the repo. Local truth > web guess.
A Claude Code plugin that turns natural language into blueprints, blueprints into parallel build plans, and build plans into working software with automated iteration, validation, and cross-model peer review.
Other skills on ck.
- /backprop
Bug → spec protocol. When a bug is found or a test fails, trace the cause, decide whether a new §V invariant would catch recurrence, append to §B. This is the one non-obvious thing SDD does that plan-then-execute doesn't. Triggers on test failure, bug report, post-mortem, or
Open skill - /build
Plan-then-execute implementation against SPEC.md. Native single-thread loop, no sub-agents. On test or build failure, auto-invokes the backprop skill before retrying — a failed verification always considers whether a new §V invariant would prevent recurrence. Triggers when the
Open skill - /caveman
Caveman encoding for SPEC.md and spec-adjacent writes. Loaded by /spec, /build, /check. Cuts tokens ~75% vs prose while staying precise. Triggers on any write to SPEC.md or when user says "caveman", "compress this", "be brief".
Open skill - /check
Read-only drift detector. Diffs SPEC.md against current code and reports violations grouped by severity. Writes nothing — suggests remedies via the spec or build skills but never invokes them. Triggers when the user asks to check drift, audit the spec, verify invariants, or ask
Open skill - /deepen
Optional design-improvement pass for when you have spare usage to drain. Finds the shallowest modules in the code the spec touches, researches a deeper design, and proposes refactors that shrink interfaces and hide decisions — behavior held constant, tests green before and
Open skill - /grill
Calibrated interrogation of a fuzzy idea before it becomes a spec. Asks one question at a time, recommends an answer, and lands each answer in §G (goal) or §C (constraints) — unknowns parked as `?` items, never guessed. The cheapest place to kill a bad idea is before §T exists.
Open skill

