From devrites
Stress-test a single non-trivial decision via CLAIM → EXTRACT → DOUBT → RECONCILE → STOP with `devrites-doubt-reviewer` for an independent take. Use when the user says "are we sure", "double-check this", "what could go wrong", or a boundary / data-model / auth / public-API / migration change is about to commit. Not for post-merge review or trivial choices.
How this skill is triggered — by the user, by Claude, or both
Slash command
/devrites:devrites-doubtThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
A pre-mortem on a single decision, not a final review. Find what's wrong before it's
A pre-mortem on a single decision, not a final review. Find what's wrong before it's load-bearing.
Introducing branching logic · crossing a module/service boundary · changing the data model · modifying auth/authz · changing a public API · touching migrations · changing a browser/user flow · relying on an assumption tests can't prove · working in unfamiliar code · claiming "this is safe", "this scales", or "this matches the spec".
.claude/agents/devrites-doubt-reviewer) so it has no anchoring context.When the claim is "this new module / boundary / wrapper is worth it", apply the deletion test before standing it: imagine the abstraction never existed — does its complexity vanish (it was a pass-through, the abstraction was added on speculation) or does the same complexity re-appear distributed across N callers (it concentrates real complexity, deletion would smear it)? Pass-throughs that fail the test get downgraded to "not yet" — wait for the second real caller before standing the seam.
codegraph (codegraph_impact / codegraph_callers) or graphify over file
reads — they answer impact in one call without polluting context.decisions.md. Discard "noise" with a one-line reason. Re-check
"contract misread" against the actual contract text.When .devrites/AFK exists and the user is away, escalated to user is unavailable in
real time. Map the verdict to a questions.md entry instead of a synchronous prompt:
Gate: plus .devrites/AFK
allow_gates, default [advisory]): append a questions.md entry with
gate: advisory, record the trade-off in decisions.md, and proceed with the best
inference. The advisory is surfaced by /rite-status so the user sees it on return.questions.md entry with gate: blocking, set state.md Status: awaiting_human,
fire the notify: hook, and STOP. AFK never silently accepts irreversible risk.The 3-loop limit still applies — after 3 cycles, the verdict is escalated to user and
the unresolved doubt becomes a blocking question regardless of AFK config.
Claim: ...
Verdict: holds | revised | escalated to user
Actionable findings handled: ...
Trade-offs accepted (→ decisions.md): ...
npx claudepluginhub viktorsbaikers/devrites --plugin devritesGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.