implement
Skill170 starsChanged 52 days agoMITView on GitHub
Turn a spec into reviewed, shippable code. Use when the user asks to implement a spec.
191 other projects use a version of this.
Adopted by
Most recently taken up by
- revisit-studies/studytheir own version, first seen Nov 9, 2026
- dz114879/skillstheir own version, first seen Nov 8, 2026
- Dimon94/dveritytheir own version, first seen Nov 8, 2026
- Dimon94/skillstheir own version, first seen Nov 8, 2026
- The-Vibe-Company/quivrtheir own version, first seen Nov 8, 2026
- miklschmidt/archboardtheir own version, first seen Nov 8, 2026
Used with
Projects with it also use setup-ts-deep-modules, ask-matt 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.
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
GoogleSkillask-matt
Ask which skill or flow fits your situation. A router over the skills in this repo.
Also in 91 projects that use this
RoentekSkillloop-me
Grill me about specs for the workflows I want to build, within this workspace.
Also in 50 projects that use this
AWSSkillto-questionnaire
Turn a decision you can't fully answer into a questionnaire for someone else to fill in.
Also in 88 projects that use this
ryotaroh180105Skillclaude-handoff
Hand the current conversation off to a fresh background agent that picks up the work immediately.
Also in 42 projects that use this
GoogleSkillto-spec
Turn the current conversation into a spec and publish it to the project issue tracker — no interview, just synthesis of what you've already discussed.
Also in 168 projects that use this
- +3 more from google
Other versions191 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 191
- mattpocock/skills★ 309ksame name
- QuivrHQ/quivr★ 40ksame name
- The-Vibe-Company/quivr★ 40ksame name
- foambubble/foam★ 17ksame name
- formbricks/formbricks★ 13ksame name
- ArcReel/ArcReel★ 6.3ksame name
- vinvcn/mattpocock-skills-zh-CN★ 5.5ksame name
- fallow-rs/fallow★ 5.3ksame name
- withcoral/coral★ 4.9ksame name
- bestofjs/bestofjs★ 3.1ksame name
181 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 repository3 other files it gives its agents.
- create-specSkill
- kick-offSkill
- setup-kikoSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
13 rules. 0 are common, 7 are distinctive, and 6 are very specific to this project.
0
Common
Most of the 171 edited versions we read keep these.
7
Distinctive
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 20
Do not initialize or repair .kiko.
- Distinctive: line 28
ask which spec to build.
- Very specific: line 34
Run scripts/prepare-implement-dir with $KIKO_ROOT and $SPEC_DIR as its arguments, and use the returned path as IMPLEMENT_DIR, per 2.1 …
- Very specific: line 68
Write $IMPLEMENT_DIR/dispatch/<name>.md — a manifest, per 2.3 Manifests:
- Distinctive: line 88
When the subagent returns, continue to Step 6.
- Very specific: line 92
Read the result at the manifest's Output path.
- Very specific: line 94
When a complete result is available, adopt it by appending the matching line to $PROGRESS_FILE, reusing the dispatch's <name>.
- Distinctive: line 104
When a result reports both a spec issue and an external blocker, route by the spec issue.
- Distinctive: line 148
Read and follow references/spec-amendment.md: whether the spec stands or was amended, it ends by dispatching a successor through the …
- Distinctive: line 156
Not now — continue to Step 14.
- Very specific: line 164
If the successor also stops short, show the user its Remaining and ask how to proceed.
- Distinctive: line 172
Ask the user how to land the work in every repository the run touched, the ones in the latest adopted result's repository blocks:
- Distinctive: line 178
Do as they choose.
“Common” is measured: kept by at least 6 in 10 of the 171 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
Orchestrate implementation from a spec: the controller dispatches fresh roles (subagents) to implement and review. The controller never implements, reviews, or fixes anything itself.
1 Workflow
Start with Step 1.
Step 1: Check kiko workspace
Set PROJECT_ROOT to the opened project root's absolute path. Run scripts/check-kiko with $PROJECT_ROOT as its only argument, and use the returned path as KIKO_ROOT.
- Exit 3: ask the user to run the
setup-kikoskill at the project root, then retry. - Any other nonzero exit: report the error and stop.
Do not initialize or repair .kiko. On success, continue to Step 2.
Step 2: Resolve spec
Resolve SPEC_DIR, the absolute path of a spec directory directly under $KIKO_ROOT/docs, from the first available source:
- the path named when this skill was invoked;
- the spec directory this conversation is already working on;
- ask which spec to build.
Then continue to Step 3.
Step 3: Prepare the implementation directory
Run scripts/prepare-implement-dir with $KIKO_ROOT and $SPEC_DIR as its arguments, and use the returned path as IMPLEMENT_DIR, per 2.1 Implementation directory. On a nonzero exit, show the error and ask the user to fix what it names, then retry from Step 2.
On success, derive:
SPEC_SLUG=$(basename "$SPEC_DIR")
SPEC_FILE="$SPEC_DIR/spec.md"
FACTS_FILE="$SPEC_DIR/facts.md"
DECISIONS_FILE="$SPEC_DIR/decisions.md"$FACTS_FILE— the roles'Facts, per references/facts.md.$DECISIONS_FILE— the decisions made so far toward the outcome, per 2.5 Decisions.
Then check every repository at or under $PROJECT_ROOT for uncommitted content: the roles create the work branch from the current branch, so anything left uncommitted would end up in their work. If any tree is not clean, show the user what you found right away, before looking into anything else, and offer the choice:
- the agent commits it as it stands, one commit per repository on its current branch;
- the user commits, stashes, or discards it themselves and tells the agent when every tree is clean;
- the run ends (Step 14).
Then show the user, for each repository, the branch the work branch will be created from, its head, and how far it is ahead of or behind its upstream: reviewers see only Base..Head, so nothing later revisits where Base came from.
Then continue to Step 4.
Step 4: Read progress file
PROGRESS_FILE="$IMPLEMENT_DIR/progress.md"$PROGRESS_FILE is the run's index, per 2.2 Progress file. Create it empty if it does not exist. If it is empty, continue to Step 5. If its last record is Complete, tell the user this spec is already built and stop. Otherwise resume: read the records and the artifacts they point to, determine which step the run reached, and continue from that step.
Step 5: Dispatch the implementer
Write $IMPLEMENT_DIR/dispatch/<name>.md — a manifest, per 2.3 Manifests:
Role: implementer
Branch: kiko/$SPEC_SLUG
Spec: $SPEC_FILE
Facts: $FACTS_FILE
Output: $IMPLEMENT_DIR/results/<name>.mdBranch is the spec's work branch: in every repository it modifies, the role works on this branch, creating it from the repository's current branch on first touch.
Append this record to $PROGRESS_FILE:
Implement — dispatch/<name>.mdThen dispatch the role per 2.4 Dispatch; its role contract is references/implementer.md and its manifest is the file just written.
When the subagent returns, continue to Step 6.
Step 6: Read the subagent result
Read the result at the manifest's Output path. If the subagent returns ERROR: or the result is incomplete, determine how to proceed from the cause and the work already done.
When a complete result is available, adopt it by appending the matching line to $PROGRESS_FILE, reusing the dispatch's <name>. A review result with a Fix section is a review+fix result.
Implementation result — results/<name>.md
Review result — results/<name>.md
Review+fix result — results/<name>.mdThen continue by result type: implementation → Step 7; review or review+fix → Step 9.
When a result reports both a spec issue and an external blocker, route by the spec issue.
Step 7: Route the implementation result
DONE→ Step 8.BLOCKED→ spec issue: Step 10; external blocker: Step 11; otherwise Step 12.
Step 8: Dispatch the reviewer
Write $IMPLEMENT_DIR/dispatch/<name>.md — a manifest, per 2.3 Manifests:
Role: reviewer
Branch: kiko/$SPEC_SLUG
Spec: $SPEC_FILE
Facts: $FACTS_FILE
Output: $IMPLEMENT_DIR/results/<name>.md
Prior result: <absolute-result-path>
First finding ID: F<n>Prior resultis the latest adopted result, per 2.6 Results: the implementation result to review, or the review result whose fixes to verify.First finding IDis one greater than the highest finding ID in any adopted review or review+fix result, orF1if none.
Append this record to $PROGRESS_FILE:
Review — dispatch/<name>.mdThen dispatch the role per 2.4 Dispatch; its role contract is references/reviewer.md and its manifest is the file just written.
When the subagent returns, continue to Step 6.
Step 9: Route the review result
Status: clean→ Step 13.Status: issueswithoutFix→ spec issue: Step 10; external blocker: Step 11.Fix: DONEwhose fixes changed no behavior → Step 13. The fixes changed no behavior when the behavior check returnsUNCHANGEDfor every repository the result lists, from theHeaditsPrior resultrecords for it (itsBasewhen the prior result does not list it) to itsHead.- Any other
Fix: DONE→ Step 8, so a fresh reviewer verifies the fixes; when this is the third or a laterFix: DONEresult since the latestImplementation resultorSpec amendmentrecord, read and follow references/finding-gate.md instead. Fix: BLOCKED→ spec issue: Step 10; external blocker: Step 11; otherwise Step 12.
Step 10: Handle a spec issue
Read and follow references/spec-amendment.md: whether the spec stands or was amended, it ends by dispatching a successor through the reporting result's successor dispatch step.
Step 11: Handle an external blocker
The reporting result names something outside the repositories that blocks progress and the user action that clears it. Show the user both and ask how to proceed.
- Cleared — dispatch a successor through the reporting result's successor dispatch step.
- Changed — the user drops, defers, or substitutes the blocked obligation instead.
- Not now — continue to Step 14; the next run resumes here.
For Changed, edit the spec to say what the user decided, keeping the rules the spec amendment draft follows for identifiers and A coverage; append the [user] decision per 2.5 Decisions and a Spec amendment — DECISION<n> record to $PROGRESS_FILE, and commit the spec with the decision when tracked. Give a deferred obligation a task line in $KIKO_ROOT/TODO.md. Then dispatch a successor as for Cleared.
Step 12: Handle a blocked attempt
The role stopped short with neither a spec issue nor an external blocker; its Remaining says what stopped it, what was tried, and what is needed. Dispatch one successor through the reporting result's successor dispatch step: a fresh attempt holding that record either finishes or stops short again.
If the successor also stops short, show the user its Remaining and ask how to proceed.
- Continue — dispatch another successor, after the user acts on what is needed if they can.
- Changed — the user drops, defers, or substitutes the obligation instead: proceed as for Changed in Step 11.
- Not now — continue to Step 14; the next run resumes here.
Step 13: Complete
Ask the user how to land the work in every repository the run touched, the ones in the latest adopted result's repository blocks:
- the agent merges
kiko/$SPEC_SLUGinto the branch it was created from — itsCreated from, or the branch the user names where no result records it — and deletes it; - the agent pushes the branch for the user to open a pull request;
- the branch stays as it is.
Do as they choose.
Append Complete to $PROGRESS_FILE.
Report Complete to the user: the key outcomes and every Concern in adopted implementation results that names a decision the user has not made, brief and to the point. The run ends here.
Step 14: Incomplete
The run stops before every obligation is proven. Revert nothing.
Report Incomplete to the user: the cause, the next action, the work branch holding the partial work, and that a later run on the same spec resumes from here — brief and to the point. The run ends here.
2 Concepts
2.1 Implementation directory
The implementation directory ($IMPLEMENT_DIR) is one spec's run state: it persists across invocations and is not committed. It contains only:
progress.md
dispatch/
results/Files in the subdirectories are immutable: never edit or overwrite one — supersede it with a new file. Basenames are random, such as openssl rand -hex 4 gives; a result shares its dispatch's <name>.
2.2 Progress file
The progress file ($PROGRESS_FILE) is an append-only index in order: the last record is where the run stands, and a dispatch record stands even when no result for it is ever adopted. The file contains only these records:
Implement — dispatch/<name>.md
Implementation result — results/<name>.md
Review — dispatch/<name>.md
Review result — results/<name>.md
Review+fix result — results/<name>.md
Risk acceptance — DECISION<n>
Spec amendment — DECISION<n>
Complete2.3 Manifests
A manifest is one dispatch's complete, immutable task statement — everything the role receives beyond its role contract.
Prior result
Prior result: <absolute-result-path>
Prior disposition: spec-issue-rejectedPrior result names the latest adopted result, the one the role starts from per 2.6 Results. Every reviewer manifest carries it; an implementer manifest carries it as a successor after a blocked attempt, an external blocker, or a spec issue, whether rejected or adopted as an amendment. Only the rejected case adds the fixed Prior disposition line.
Successor dispatch step
A successor is dispatched through the step matching the reported result's type: an implementation result through Step 5, a review or review+fix result through Step 8.
2.4 Dispatch
Dispatch every role as a fresh subagent with exactly this prompt:
Follow the role contract:
<absolute-role-contract-path>
Execute the manifest:
<absolute-manifest-path>
Write the result to the manifest's Output path.
Return only `RESULT: <path>`, or `ERROR: <reason>` if the manifest cannot be safely executed or a complete result cannot be written.One exception. A successor after a spec issue or an external blocker whose role matches the subagent that wrote its Prior result continues that subagent, sending it the same prompt with the new manifest, when the harness can resume a returned subagent with its context intact — in Claude Code, a message to the agent by name. When it cannot, or that subagent no longer exists, dispatch a fresh subagent. A successor after a blocked attempt is always a fresh subagent.
2.5 Decisions
$DECISIONS_FILE holds one entry per decision made toward the outcome. The entries before this run were written while the spec was formed; during the run only the controller appends, on a spec amendment or a risk acceptance, and commits what it appended when the spec directory is tracked in Git: the write roles refuse a dirty tree. Append-only, never edited or deleted; a changed decision is a new entry that says which ID it supersedes. Numbers in DECISION<n> increase and are never reused.
- DECISION<n> [user] <question>
<answer>
- DECISION<n> [controller] <question>
<answer>[user] records the user's decision, in their words where given; [controller] records a decision the controller made itself. The facts a decision rests on are appended to $FACTS_FILE, verified for what the controller established and user for what the user supplied, and named in the answer. Question and answer together have one reading for someone with no run history. Name the R, D, A, or O concerned, and quote a finding rather than only citing F<n>: .implement/ is not committed, so the finding cannot be looked up later. No role receives this file.
2.6 Results
Results are cumulative: a role reads only its Prior result, and the controller takes repository state from the latest adopted result. Every result carries forward the repository blocks of its Prior result — every repository on the work branch, with Base the commit the branch was created from, Created from where recorded, and Head updated to the current commit — and adds any repository this dispatch first touched. A review result also carries forward the findings its Prior result lists. Everything else in a result is that dispatch's own report.
2.7 Behavior check
Dispatch a fresh subagent with exactly this prompt, one line per repository:
Read the diff of each repository below between its two commits, excluding `.kiko/`, and change nothing:
<repository-path> <from-sha> <to-sha>
Decide whether any change can make something that runs behave differently: the product, or any tool the project runs on it. That depends on how the project uses the changed file; look in the repository when it decides the answer.
Return only `UNCHANGED` if you established, for every change, that nothing behaves differently. Otherwise return only `CHANGED: <path:line> <reason>`, naming the first change you could not establish that for.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.

