rite-temper
Temper a readied spec before planning. Use when the user says "temper this", "strategy review", "pre-mortem the spec", or asks if we are over/under-building. Not for code review or final seal.
Files6
View on GitHubSKILL.mdpack/.claude/skills/rite-temper/SKILL.md
GitHub<!-- loads: {"always":["devrites-lib/reference/standards/core.md","devrites-lib/reference/standards/code-navigation.md","devrites-lib/reference/standards/code-index.md","devrites-lib/reference/orchestration-profiles.md","devrites-lib/reference/standards/agents.md","rite-temper/reference/significance.md","rite-temper/reference/scope-modes.md","rite-temper/reference/review-dimensions.md","rite-temper/reference/strategy-template.md","rite-temper/reference/anti-patterns.md"],"triggers":{"afk":["devrites-lib/reference/standards/afk-hitl.md"],"applicability":["devrites-lib/reference/standards/repository-topology.md","devrites-lib/reference/standards/data-integrity.md","devrites-lib/reference/standards/integration-reliability.md"],"documentation":["devrites-lib/reference/standards/documentation.md"],"elicitation":["devrites-lib/reference/standards/elicitation.md"],"yagni":["devrites-lib/reference/standards/patterns.md","devrites-lib/reference/standards/coding-style.md"]},"workspace":["brief.md","spec.md","state.md","decisions.md","assumptions.md","questions.md","decision-coverage.md","strategy.md","design-brief.md"],"workspaceByRole":{"strategy-reviewer":["brief.md","spec.md","decision-coverage.md","decisions.md","strategy.md","state.md"]},"rootOnly":["devrites-lib/reference/standards/code-index.md","devrites-lib/reference/orchestration-profiles.md","devrites-lib/reference/standards/afk-hitl.md"]} -->
Rules consulted (read on demand from
Read-set manifest:
devrites-engine context <slug> --phase temperbundles every file named below into one deduplicated read. Trigger names map to the conditional rules in the sections that follow.
/rite-temper: review scope and risk before planning
Review the readied spec for ambition, scope, pre-mortem risk and unnecessary surface. Fold accepted decisions into the canonical contract before
/rite-define. This step is optional for small work and skips low-stakes specs, but
/rite-autocomplete always invokes it. Read the active workspace first; if there
is no readied spec.md, tell the user to run /rite-spec. Review depth follows
devrites-lib/reference/orchestration-profiles.md;
the required exact strategy reviewer never changes with profile.
Rules consulted (read on demand from .claude/skills/devrites-lib/reference/standards/)
Pull on demand: patterns.md +
coding-style.md (the over-engineering / YAGNI rubric, trigger yagni; reuse the pack's standard, don't
invent one), documentation.md (ADR-style decisions.md entries), afk-hitl.md
(irreversible-risk list + gate ceiling), elicitation.md (the move-set to deepen a section
that needs more than the default pre-mortem) selected by the section's risk). Load
repository-topology.md, data-integrity.md, or integration-reliability.md only when
the spec applicability map triggers that risk family.
Operating rules
- Raise outcome ambition without expanding the solution unnecessarily. Solve the underlying problem without adding speculative capability or abstraction.
- Route every scope change through the Spec Drift Guard. A scope change takes effect
only when
spec.mdrecords the confirmed decision. Growth (expand, extra acceptance) needs a resolved humanquestions.mdqid, so an unattended run holds it open. Irreversible-risk still pauses. - Apply maximum caution to hard-to-reverse changes. Auth, migration, public API, and data-model changes always pause under the irreversible-risk list.
- Honest verdict. Never round "needs work" up to "ready"; record every scope call's why.
- Search before asking. Apply
afk-hitl.mddecision ownership; only human-owned calls enter the interactive walk. - You write; the reviewer judges. You are the single canonical writer (
strategy.md+ the spec edits); the reviewer agent is read-only. - Require spec-quality checklists for significant features. Before hardening,
confirm
checklists/<domain>.mdexist and pass (spec-checklists.md); a scope expansion you fold in adds its own rows (new Success/Acceptance criteria get checklist rows too). A folded expansion with an unquantified criterion is a CRITICAL failure that reopens the readiness gate.
Workflow
- Read
.claude/skills/devrites-lib/reference/standards/core.md, then resolve the active slug, require itsstate.md, and read the cursor directly. Then read the workspace:spec.md,decision-coverage.md(+decisions.md,assumptions.md,design-brief.mdif UI),state.md. Requirestate.mdspec_gate: passed(legacySpec gate:accepted): else STOP →/rite-spec. RequireDecision coverage: CLEAR: else STOP →/rite-clarify. If a plan already exists, scope changes route through/rite-plan repair(record indrift.md), not a blind spec edit. - Significance test:
reference/significance.md. Low-stakes / shape-not-meaning work → write the exact one-lineskipped — low stakes (<trigger>)verdict tostrategy.md, setstate.mdPhase: temper+Next step: /rite-define, and recommend it. Otherwise fire the full pass below. - FORWARD pass + mode selection:
reference/scope-modes.md. First, the one-sentence-intent test: state the whole change's intent in a single sentence. If you can't without an "and" that joins two unrelated outcomes, it is two features: the scope-creep signal; recommend splitting or narrowing the spec before continuing. Apply the same test to size: a spec whose honest decomposition would exceed the feature ceiling (roughly ten slices or more than ~20 acceptance criteria) is a feature sequence; recommend the thinnest shippable subset now and name the continuations as Non-goals. Then consider the 10-star outcome for the underlying problem and choose exactly one scope mode (expandopt-in ·selective·hold-rigor·reduce-to-MVP) with its rationale and the condition that would change the choice.$ARGUMENTS--modeis a hint, not a command. - INVERSION pass: pre-mortem in past tense ("it shipped and failed: what went wrong"),
each top risk carrying likelihood + mitigation + the slice it will bind to; then the YAGNI
ledger (each candidate scope item gets the "imagine the later refactor" test; defer unless
now-cost is trivial AND deferred-cost is large).
Interruption pre-mortem: audit the spec forecast and assumptions for unresolved behavior,
proof prerequisites, approvals, access, and irreversible gates. Resolve facts and reversible
details now; retain only unavailable-pre-code or mandatory action-time checkpoints.
Challenge each
not applicabledecision against live evidence and each applicable topology/data/integration row against its worst credible partial-state/recovery case.- Deepen on demand. When a scope decision, requirement, or risk needs more analysis
than the default pre-mortem provides, choose 3-5 techniques from
elicitation.mdwhose when-to-reach-for-it matches that section's risk (irreversible decision → Red-Team/Blue-Team + Assumption Audit; sizing → Delphi; vague requirement → Steelman-then-Attack), offer them, and run the chosen one on that section. Record what changed, not the technique name. The default passes remain sufficient when no deeper analysis is needed.
- Deepen on demand. When a scope decision, requirement, or risk needs more analysis
than the default pre-mortem provides, choose 3-5 techniques from
- Score the 9 dimensions:
reference/review-dimensions.md. Cite evidence before the band; gate on the floor (the weakest dimension, not an average). Completion: all nine dimensions have cited evidence, a band, and one explicit floor verdict. - Review human-owned findings with the human; do not batch them.
strategy.mdrecords the interactive review but does not replace it. Present each material scope decision throughAskUserQuestion, one at a time, best-guess + why. Each material scope call ends as a recorded decision: a resolvedquestions.mdqid (HITL) or adecisions.mdADR (AFK; never forexpandor extra acceptance, which need a human-resolved qid): so the review leaves an auditable record outside chat. (AFK gate policy —reference/significance.md— autocomplete applieshold-rigor,reduce-to-MVPand a skip, but holdsexpandand extra acceptance for a human qid; irreversible-risk always pauses.) Apply objective clarity, mitigation, and assumption fixes directly. - Write
strategy.md+ fold back:reference/strategy-template.md. Choose the drift path based on whether a plan exists: noplan.mdyet (the normal pre-define case) → updatespec.mdthrough the Spec Drift Guard. Success metrics (outcome-level, no AC id) and Acceptance criteria for each opt-in expansion / cut, Non-goals for every deferred item, Constraints and invariants, with top failure modes + mitigations folded into Failure and recovery behavior rows, and the Open questions table;plan.mdalready exists → do not editspec.mdhere: write the deltas todrift.mdand hand off to/rite-plan repair. Either way, appenddecisions.md(one ADR per scope call: context · decision · why-not · what-would-change-it) andassumptions.md(every "we'll probably need X" → assumption-to-verify). (every delta carries the step-5 recorded decision; an untraceable fold is invalid). Re-check the spec Readiness gate (it fails if any folded scope delta lacks its decision or leaves a foreseeable human build choice). After any edit tobrief.md,spec.md,decisions.md,assumptions.md, orquestions.md, re-scan the affected coverage rows, assumption audit, residual uncertainty, and closed gates.openrows, an unowned material assumption, or an open blocking/escalating question routes/rite-clarify/HITL. Only after the matrix is re-closed may the phase advance. SetPhase: temper;Next step: /rite-defineonly after verification. Unapproved irreversible choices and unresolved growth qids setAwaiting human. Objective below-bar findings continue correction. - Adversarial verification loop: ask the exact
devrites-strategy-reviewerthrough the native fresh-context contract inagents.md, with only its--role strategy-reviewerread-set (hardened spec,strategy.md, claim-check artifacts) + rubric, no authoring reasoning. Fold technical findings into one correction; exact strategy reviewer rechecks open findings and affected coverage/regressions under the canonical retry contract: Product/scope choices and unapproved irreversible risk remain human gates; technical exhaustion preserves blocker/reproduction. If the named agent is unavailable, stop for HITL. After an accepted edit to a coverage-bound input, repeat step 6's native coverage revalidation before handoff. - STOP. Report the mode, the scope deltas, and the floor verdict; recommend
/rite-define.
Mid-flight discipline. Do not replace the interactive review with
strategy.md, expand implementation surface without need, grow scope outside the Drift Guard, or score before citing evidence. Seereference/anti-patterns.md.