doubt-pass
Adversarial doubt cycle on a plan or design before any code exists — distinct from post-hoc code review. Use when the user asks to doubt this, stress-test a design before building it, poke holes in a plan, find the flaw in an approach, or before committing to a non-trivial architecture or design decision.
- License 许可
- ISC
- 最近更新
- 2026-11-13
- Stars
- ★ 3
- Forks
- 0
01 前言 Front Matter
- name
- doubt-pass
- description
- Adversarial doubt cycle on a plan or design before any code exists — distinct from post-hoc code review. Use when the user asks to doubt this, stress-test a design before building it, poke holes in a plan, find the flaw in an approach, or before committing to a non-trivial architecture or design decision.
02 资源文件 3
- 参考文档reference/adversarial-prompt-template.md1.8 KB
- 参考文档reference/doubt-protocol.md2.3 KB
- 参考文档reference/subtraction-prompt-template.md1.6 KB
03 SKILL.md 正文
doubt-pass — break the plan before you build it
The cheapest bug is the one caught before the code exists. A fresh-context reviewer gets the plan and one job: find where it breaks, not whether it is nice. Bounded at three cycles, every finding classified, with a name for the case where doubt spins and lands nothing.
When to use
- Before a non-trivial architecture or design decision.
- The user asks for a plan to be stress-tested, holes poked, a second opinion — while it is still a plan, no diff yet.
Neighbours: /code-review needs a diff that already exists; whetstone:grill interviews you for requirements. This one sends a fresh agent at an artifact.
Protocol
Five steps, detailed in reference/doubt-protocol.md:
- CLAIM — state the decision in one paragraph.
- EXTRACT — strip it to an artifact plus a contract (inputs, outputs, invariants). Send those two; the reasoning trail stays behind, so the reviewer judges the design rather than your defence of it.
- DOUBT — spawn
whetstone-doubter(Agent,subagent_type: whetstone:whetstone-doubter) with the extracted artifact and contract as its whole input. The agent already carries the adversarial method — "find where this breaks" — and its word budget;reference/adversarial-prompt-template.mdis the mission text to fill and send. Pass nomodel: this break mission runs on the agent's ownopus. It returnsDOUBT: FAILURESorNO FAILURE FOUND. - RECONCILE — tag every returned finding
actionableornot-actionable, each on its own merits. - STOP — at the 3-cycle cap, or at the first cycle that returns nothing new. Fold actionable findings into the plan between cycles.
Subtraction pass
A second mission for the same agent asks what can go, where the doubt asks where the plan breaks. One cycle, no loop. Fill reference/subtraction-prompt-template.md and spawn whetstone-doubter with it. Run it beside the doubt cycle, in the same message, when both apply.
- Ladder — delete > simplify > optimise > automate. New code runs the finer ladder: skip it, reuse an existing pattern, stdlib, the native platform, an installed dependency, a one-liner, then minimal new code with one test when it has logic. "It may be done" is an allowed answer.
- Verdict —
SUBTRACT: NOTHING TO CUTorSUBTRACT: <n> CUTS(n ≥ 1) as the first line, then one line per cut: the piece, the rung, and what still holds without it. - Model — pass the session model's family as the Agent
model. TheadvisorModelsetting is for the advisor alone; this mission does not read it. - Reconcile — tag each cut
actionableornot-actionable, as in step 4. The operator decides a cut that removes something they asked for.
Doubt theater
Zero cumulative actionable findings across every cycle is its own result. Report it as one:
doubt theater — N findings raised, 0 actionable across M cycles. Escalate to a human or ship as-is.
Cycling a reviewer that lands nothing is motion. Naming it keeps it from reading as confidence.
Verification
Done = the loop stopped at ≤ 3 cycles, every finding carries an actionable / not-actionable tag, and the outcome is one of: plan amended with the actionable findings, or an explicit doubt theater note. The cap and the classification are the gate; "let me think about it more" is a different activity.
Dossier breadcrumb
In a repo with a live dossier ledger, record the verdict as one §S line through the dossier plugin's append tooling (the host session reminds when applicable; the first live row is the current dossier). No dossier → skip: this skill ships no hooks and no dossier dependency.
04 同仓库更多 Skills
suite-review
Run the monthly evidence review of this repo's plugin skills. Count each skill's opportunities and uses with the census, read what happened where a skill was not used, put each skill in one bucket, act, and write the actions as predictions with a check date. Use when the operator says "suite review" or "monthly review", or when the suite-review line on LATER.md is due.
tiger-style
Check the column budget of the lines a change adds, and read that change against the TIGER_STYLE shape rules a script cannot judge. Use when the user asks about line length or column limits, to check code shape, what the column check flagged, or why a commit was blocked on a column budget.
tdd-cycle
Drive one vertical slice of behaviour red-green-refactor, seam agreed before the first test. Use when the user asks to add a feature, fix a bug, write code test-first, says "TDD this", "red green refactor", or "write a failing test first". Inside a live dossier:build covenant, invoke dossier:build instead — it composes this skill's run-slice command as its RED/GREEN proof.
prototype
Build a throwaway prototype to answer a design question. Use when the user wants to sanity-check whether a state model or logic feels right, or explore what a UI should look like.
diagnose
Diagnose a hard bug or a performance regression with a feedback loop first, then ranked hypotheses, instrumentation and a regression test. Use when the user says diagnose or debug this, or reports something broken, throwing, failing or slow.
verify
Empirical fact-check for freshness-sensitive claims — versions, EOLs, package latest, GitHub Action SHAs, k8s apiVersions, AI model deprecations, image tags, or anything the model's training cutoff may have staled. Primary sources only. Auto-fires as a PreToolUse hook on Edit/Write, but only in a repo with a `.scratchpad/dossier/` directory; `/dossier:verify` on demand works anywhere. Invoke when user says "verify", "fact-check", "is this current", "/dossier:verify", "double check", or when reviewing freshness claims.