build
Skill4 starsChanged 19 days agoMITView on GitHub
Execute the plan or spec on file in small build-and-check loops (for spec-sized tickets, subagents that see only the record do the building), then run the independent review and ask before shipping. This is the implement and check phase. /ticket starts it on approval, and every build ends with a /review verdict.
156 other projects use a version of this.
Adopted by
Most recently taken up by
- jskswamy/skillstheir own version, first seen Nov 8, 2026
- domengabrovsek/agent-configtheir own version, first seen Nov 8, 2026
- domengabrovsek/claudetheir own version, first seen Nov 8, 2026
- lilly-builds/senior-engineer-modetheir own version, first seen Nov 8, 2026
- endqwerty/endstacktheir own version, first seen Nov 8, 2026
- DnsQueen/orcinus-skillstheir own version, first seen Nov 8, 2026
Used with
Projects with it also use backprop, finances 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.
JuliusBrusseeSkillbackprop
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 explicit user ask.
Also in 4 projects that use this
GerardoRdz96Skillfinances
Use when Gera talks about his money — logging an expense ("I spent X on Y"), checking where he stands this pay-period, closing a period, planning debt payoff, onboarding his financial picture, or asking for budgeting/finance opinions. Servy's financial brain. Triggers — "I spent", "log this expense", "where am I this period", "close the period", "how's my budget", "debt plan", "should I pay off", "finances onboard", "/finances".
Also in 3 projects that use this
cpiprintSkillfavicon
Generate favicons from a source image
Also in 3 projects that use this
madeehahassanSkillGo-Live
Pre-launch checklist. Use before making any app public, sharing a link externally, or announcing a product launch. Adapts to Claude Code, claude.ai, and Cowork.
Also in 3 projects that use this
JuliusBrusseeSkilldeepen
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 after. Proposes §I/§V/§T edits, never silent rewrites. Triggers when the user says "deepen this", "improve the design", "this module feels shallow", "pull complexity down", "use spare budget on the codebase", or invokes /ck:deepen. Leans on the codebase-design skill's deep-module vocabulary when present.
Also in 3 projects that use this
synaptiaiSkillgate
Create a BDSK review_gate artifact. Defines a checkpoint that controls whether generated output may proceed toward acceptance. Use when defining quality, security, or scope gates for execution plans.
Also in 5 projects that use this
Other versions156 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 156
- FalkorDB/FalkorDB★ 10ksame name
- microsoft/microsoft-ui-xaml★ 8.6ksame name
- NexaAI/nexa-sdk★ 8.5ksame name
- hathach/tinyusb★ 7.3ksame name
- parcadei/Continuous-Claude★ 3.9ksame name
- parcadei/Continuous-Claude-v2★ 3.9ksame name
- parcadei/Continuous-Claude-v3★ 3.9ksame name
- pytorch/TensorRT★ 3ksame name
- oxsecurity/megalinter★ 2.6ksame name
- iPlug2/iPlug2★ 2.4ksame name
146 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.
The file
We split this skill into the rules it gives an agent
7 rules. 0 are common, 1 is distinctive, and 6 are very specific to this project.
0
Common
Most of the 143 edited versions we read keep these.
1
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 34
Read capabilities from this skill's kit_paths.py --json probe the first time a question comes up, and keep the result.
- Very specific: line 65
Find the blueprint: Read <ticket-dir>/plan.md first — its Scope, Deliverables and Validation strategy are the acceptance criteria — and …
- Distinctive: line 89
Treat the blueprint as the source of truth, but validate each step independently — don't blindly follow.
- Very specific: line 92
Then load the team's standards: run bash "$(git rev-parse --show-toplevel 2>/dev/null || echo .)/bin/tw" team_docs.py --kind standards and …
- Very specific: line 129
When its status is request-changes (a /review run on its own, or a build that stopped at the cap), do not redo Phase 2 from the start: go …
- Very specific: line 169
When the build passes its own gates, run /review <owner>/<id> — the qualified locator, so the review cannot re-resolve a bare id to a …
- Very specific: line 215
When the human says stop, say plainly that the ticket carries a REQUEST-CHANGES verdict and /ship will refuse it.
“Common” is measured: kept by at least 6 in 10 of the 143 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
/build
The build + check step of the lifecycle. /ticket already did every read-only planning step — the
plan, and the spec when the plan called for one — and the human approved that package. /ticket
starts this skill in the same window on that approval; run it directly to resume a build, or to
build from a plan someone else approved. It executes the package, validating each step
independently, and ends by running /review on the ticket. The only exit toward /ship is an
APPROVE verdict; quality is ensured by the system, not by remembering to invoke a step.
The work runs in one window, but the execution should not lean on the planning conversation: the plan and spec are the handoff, and a build that needs the chat to make sense of them has found a gap in the record. When the runtime allows it, a spec-sized ticket is built by subagents that are given only the record (step 2b), which tests that handoff without opening a second window.
Reads the merged config (tools/effective_config.py, never raw stack.yaml). Warehouse-agnostic via
seams.warehouse, and works the same when that seam holds several targets — or none.
Ticket locator: run
bash "$(git rev-parse --show-toplevel 2>/dev/null || echo .)/bin/tw" whoami.py
first (show the "Working as …" line). <ticket-id> is owner/id (exact) or a bare id, resolved
against the resolved person's tickets/<owner>/ first, then other owners — a bare id two or more
foreign owners share is a hard stop listing the owner/id choices, never a pick.
How this skill asks the person something
<!-- ticketwright:ask-rule:begin -->The kit's one question rule, the same in every skill that asks:
- Read
capabilitiesfrom this skill'skit_paths.py --jsonprobe the first time a question comes up, and keep the result. capabilities.structured_questionsisyesandcapabilities.question_toolis notnone→ ask with that tool, withincapabilities.question_limits(when that saysunknown: one question per call, at most four options). Group up to the limit only questions that do not depend on each other's answers; ask a dependent question after the one it depends on.- Otherwise (
no/unknown, or the probe failed) → ask in chat as a short numbered list, one question at a time unless this skill says a set goes in one round, and wait for an explicit answer. - The question content is the same either way; only how it is shown changes. No skill names a
runtime's tool: the runtime's own adapter (
adapters/runtime/<name>.md) does. A question tool is not available inside a subagent, so the main session asks. - Never invent an option. Options come from what this run found or the fixed choices a step names. A recommended option goes first, marked recommended, with where it came from; the person still picks. Each option says what choosing it changes, and free text is always possible (the tool's own "Other", or "or tell me something else" in prose).
- Whatever the person needs to answer is already in chat before the question, so a picker never hides it.
- A reply the kit asks for word for word (
ship unreviewed, theyesbefore destructive SQL) stays typed: an unreviewed ship or an irreversible write is never one click. The external-send gate (go ahead) is asked like any other question once the full delivery plan is in chat: its first option is "Go ahead", which delivers exactly the printed plan, and with no question tool the person typesgo ahead.
<!-- ticketwright:ask-rule:end -->In this skill the questions are the human_review_handoff: all sign-offs (step 4), the ship
question and the replan offer (step 8). Its probe is step 2b's kit_paths.py --json. Step 5's
destructive-SQL yes stays typed.
Phase 1 — Load what was approved
- Find the blueprint. Read
<ticket-dir>/plan.mdfirst — its Scope, Deliverables and Validation strategy are the acceptance criteria — and take the value on thespec:line of its Next step section (that line only; an older plan's header also explains the values, and must not be matched). Then branch, halting by name:- No
plan.md→ stop: "No plan is on file for<owner>/<id>— run/ticket <owner>/<id>first; every ticket is scoped before it is built." (A spec passed as an argument does not substitute: the plan is the approval record.) spec:names a path → that spec is the executable detail; load it (the argument path wins if one was given). The path is repo-root-relative (<ticket-dir>/specs/<id>-<slug>.md); a barespecs/<id>-<slug>.mdfrom an older plan resolves inside<ticket-dir>, never at the repo root. If the named file does not exist → stop: "plan.mdfor<owner>/<id>names a spec that is not on file — run/ticket <owner>/<id>to finish scoping."spec: not required→ the plan is the blueprint.spec: after-root-cause→ run only the plan's investigation steps (read-only against the warehouse, plus QC queries that reproduce the problem). When the root cause is known, apply the one condition this skill owns: if the fix creates or alters a persisted object others depend on (a warehouse object, a model, a published report), route back to/ticket <owner>/<id>Phase 4 in replan mode — follow its instructions in full, in this window: the spec is written from the real cause and approved, and replan mode returns control here without starting another build. Continue from step 2 with the new spec (its targets need the preflight too). If the fix touches nothing persisted (a corrected export, a documented answer), record the cause in the README and continue.- Anything else on that line (blank, a
{{token}}, a value not listed) → stop and name it; a plan the build cannot read is not an approved plan. Treat the blueprint as the source of truth, but validate each step independently — don't blindly follow; a plan or spec can be wrong, and finding that out here is what the small loops below are for. Then load the team's standards: runbash "$(git rev-parse --show-toplevel 2>/dev/null || echo .)/bin/tw" team_docs.py --kind standardsand read each doc (a path directly, a link live with whatever reader this runtime has). Build to them. A doc you cannot open goes in the README's Assumptions as unreadable, so/reviewknows it was not followed knowingly.none configuredneeds no note.
- No
- Preflight each warehouse target the blueprint names (resolve per
adapters/README.md§ Multi-target seams; verify each; halt with that target's auth notes). No warehouse configured ⇒ the build is code/analysis/document work — skip the warehouse steps below cleanly. 2b. Choose who does the work — probe the runtime the same way/reviewdoes:bash "$(git rev-parse --show-toplevel 2>/dev/null || echo .)/bin/tw" kit_paths.py --json, then readcapabilities.subagentsandcapabilities.subagent_isolationand branch on the values only, never on the runtime's name:- Subagent-led — the plan's
spec:line names a spec,subagents: yes, andsubagent_isolationisdocumentedorunestablished. This session orchestrates. For each spec step or object, dispatch one subagent briefed with onlyplan.md, that step's spec section, and the files it touches — never the planning conversation, which is the point: if the subagent cannot do the step from the record, the record has a gap, so fix the plan or spec rather than filling it in from memory. Whensubagent_isolationisunestablished, say so once, verbatim:<!-- ticketwright:user-facing:begin -->Helper agents are building this ticket, but this tool cannot confirm they work without seeing our conversation.
<!-- ticketwright:user-facing:end --> - Inline —
spec: not required(the plan judged the ticket small),spec: after-root-causewhile the investigation runs (it is read-only), or any other probe result (subagentsnotyes, isolationnoneorunknown, a failed probe). This session does the work. When the plan names a spec, say plainly that the build ran in the planning conversation and the plan was not tested as a standalone handoff. A subagent never holds a gate, because it cannot reliably reach the person: it may run reads and the additive dev-target SQL that step 5's policy allows without asking, and it returns everything else to this session — any SQLdb_write_requires_approvalgates, and bothhuman_review_handoffhandoffs. Underhuman_review_handoff: all, that means a subagent returns the SQL it wrote before running any of it, reads included, because step 4 hands generated SQL to the person before its first warehouse run. This session also re-runs each step's gate itself (step 4) rather than taking a subagent's word that it passed. Record the choice in the ticket README as two lines,build_mode: subagent-led | inlineandsubagent_isolation: <as probed>, so the reviewer and the next person can see which build the ticket got. 2c. Pick up an open review before rebuilding. Read the current verdict withbash "$(git rev-parse --show-toplevel 2>/dev/null || echo .)/bin/tw" review_verdict.py --ticket <ticket-dir> --json. When itsstatusisrequest-changes(a/reviewrun on its own, or a build that stopped at the cap), do not redo Phase 2 from the start: go straight to step 8's REQUEST-CHANGES branch with that verdict. Ifplan.mdchanged after that verdict was written (its git history shows a later commit), the replan its scope findings asked for already happened, so treat those findings as handled and carry only the defects forward. When it isawaiting-signoff(the reviewer approved and the person's sign-off never came), do not rebuild either: go straight to step 8's AWAITING-SIGNOFF branch. Any otherstatus→ continue to Phase 2.
- Subagent-led — the plan's
Phase 2 — Implement in small build-and-check loops
- One object / one step at a time. Develop against the warehouse's dev target first
(
seams.warehouse.dev_target, else the key the adapter names in itsdev_key:frontmatter); parameterize values at the top via a CTE params row (WITH params AS (SELECT … AS anchor) … CROSS JOIN params), not a sessionDECLARE/SET— CTE params stay portable and keep CSV exports clean; explicitORDER BYon any export (deterministic_outputs). In a repo with no warehouse seam, verify each deliverable by its own check instead — the document renders, the script runs clean, the numbers cited in the README match the files — exactly as/shipre-verifies them later. - Embed validation between steps — after each, run the relevant gate from the spec (or the
plan's Validation strategy); self-correct before moving on.
Under policy
human_review_handoff: all— the defaultreviewskips this, because the gate lives in/review— put a human in the loop twice: hand the generated SQL over before its first warehouse run (a bad join is cheapest to catch before it costs a warehouse-minute), and hand the exported CSVs over after. Both viabash "$(git rev-parse --show-toplevel 2>/dev/null || echo .)/bin/tw" handoff.sh <paths>, then ask for sign-off as one question (options: continue, or say what to change) and wait before continuing. Say a file was opened only when handoff printed anopened:line for it. With no viewer config,enabled: false, or onlywould run:lines, nothing opened: say so once, with the reason handoff gave (for example "No viewer is configured, so nothing was opened"), list the paths, and carry on. This never blocks a build. - Any mutation ⇒ policy
db_write_requires_approval(off|high_risk|all). Under the defaulthigh_risk: show the exact SQL, explain the change, and wait for explicityesbefore anything irreversible or access-changing (DROP/DELETE/UPDATE/TRUNCATE/MERGE/GRANT/CREATE OR REPLACE/non-ADDALTER); additive SQL may run without asking. Read the policy rather than assuming. Dev-env objects still get shown but are lower-risk. - Keep the record current as you go: the ticket README's Assumptions and Deliverables sections,
filenames carrying record counts, QC queries numbered in
qc_queries/. A build whose only record is the chat transcript is not finished.
Phase 3 — Check (built in, not optional)
- When the build passes its own gates, run
/review <owner>/<id>— the qualified locator, so the review cannot re-resolve a bare id to a different owner's ticket. "Run" here means what it means when/shipruns/refresh index: follow that skill's instructions, in full, for this ticket — there is no mechanical skill-invocation tool, and the emitted runtimes carry this body verbatim, so the instruction travels./reviewdecides on its own capability probe whether the second pass is an independentqc-reviewersubagent or an honestly-labelled inline walk; this skill never pre-judges that. Never write the verdict yourself. - Branch on the verdict
/reviewwrote — read it withbash "$(git rev-parse --show-toplevel 2>/dev/null || echo .)/bin/tw" review_verdict.py --ticket <ticket-dir> --json(the highest-numberedqc_queries/<n>_review_verdict.md, itsverdict:line), never by eye:- APPROVE → if the person already answered
/review's sign-off withship(or "Approve and ship"), they have said to ship: do not ask again, and go straight to/shipbelow. If they signed off and chose not to ship yet, stop and name/ship <owner>/<id>for later. Otherwise (the sign-off gate isoff, so nobody has been asked), ask as one question, options "Ship now" and "Not yet":<!-- ticketwright:user-facing:begin -->Review approved. Ship now?
<!-- ticketwright:user-facing:end -->On yes, follow/ship <owner>/<id>'s instructions in full, in this window./shipstill shows every tracker comment, chat post and PR and waits for approval before anything leaves the repo, and thereview_verdict_guardhook still asks at push time, so this question only saves you typing the command. On no, stop and name/ship <owner>/<id>for later. - AWAITING-SIGNOFF → the reviewer approved and the person has not answered the sign-off
yet. Follow
/review <owner>/<id>'s step ⑤.4 instructions for this ticket (itsshipreply counts there too). That step rewrites the record; this skill still never writes a verdict itself. Then branch again on the rewritten verdict. Never treat this status as an approval. - REQUEST-CHANGES → read each finding's
kind:and tier. A finding with nokind:(an older reviewer) counts asdefect.- No hard-halt
scopefinding → apply the remediation list, re-run the affected gates from Phase 2, and run/review <owner>/<id>again — from this step, never by re-entering/buildfrom the top (a build inside a build re-resolves everything and never returns here). A Warn-tierscopefinding is listed for the person, not acted on. Two REQUEST-CHANGES rounds is the cap: after the second, stop and hand the findings to the human rather than looping — a defect the build cannot clear is a scoping problem or a data problem, not a retry problem — and offer the replan below as one way forward, as one question (options "Replan" and "Stop here"). - Any hard-halt
scopefinding (or the person chose a replan at the cap) → the plan is wrong, so rebuilding will not fix it. Run/ticket <owner>/<id>Phase 4 in replan mode: follow its instructions in full, in this window. It updatesplan.mdand the spec in place, gets a fresh approval, names the build steps the change affects, and returns control here without starting another build. Then redo, from step 2 (a new spec can name a new target), those steps and the remediation of everydefectfinding in the same verdict, and run/review <owner>/<id>again from step 7. This build still owns the review rounds and the ship question. A replan restarts the two-round count, because the rounds measured a plan that no longer exists; what bounds repeated replans is that each one needs the person's approval. When the human says stop, say plainly that the ticket carries a REQUEST-CHANGES verdict and/shipwill refuse it. There is no path from REQUEST-CHANGES to/ship.
- No hard-halt
- APPROVE → if the person already answered
Pattern
Plan and spec are authored in /ticket (read-only, approved once); this skill executes them, with
subagents that see only the record when the ticket is spec-sized, and closes with the independent
check. The PRP spec/execute split, kept in one window, with the check made part of the build and a
route back to planning when the check finds the plan was wrong.
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.

