/spec-kickoff
The comprehension layer of the planwright pipeline (REQ-B2.4, REQ-B2.2):
a section-by-section walkthrough of a spec bundle until human and agent
hold the same understanding, recorded as specs/<spec>/kickoff-brief.md —
the durable contract (two-brief model, D-3). Downstream skills
(/execute-task, /orchestrate) operate from the brief, not the spec; what
this walkthrough gets wrong, execution gets wrong.
Sign-off is the first key of a two-key launch (D-44): it flips the spec
Draft→Ready and, on a clean completion, marks the spec PR ready (D-6, D-7; the
walkthrough is the bundle's review). The human's merge is the second key,
making the Ready spec operational (the first dispatch derives Active, not this
skill). This skill marks only the spec PR ready, never merges, never dispatches
execution.
Doctrine
This skill is procedure, not doctrine. Resolve and read the run-start rule
docs via the rule-doc resolution convention
(scripts/resolve-rule-doc.sh <doc-name> under the resolved planwright
root); their definitions govern wherever this skill names a concept:
security-posture — artifact data-hygiene: the brief and risk register are
committed.
Invoking plugin scripts (REQ-D1.1, D-7). Call scripts/<name>.sh by the
resolved literal absolute path, never $VAR/scripts/<name>.sh —
doctrine/plugin-script-invocation.md.
spec-format (pre-flight step 2) — the meta-spec: bundle format, status
lifecycle, amendment ritual, sign-off records, content anchors, and sanctioned
anchor command forms. This skill is the writer its sign-off rules name; it
follows them exactly. Three more, at Sign-off step 1:
discovery-rigor — the lens checklist, coverage table, and fan-out behind the
lens review.
autopilot-reflex — the altitude gate (D-11) behind the altitude check.
validation-rigor — validation of lens findings before disposition.
If any of those five does not resolve — at run start or point of use — halt
naming the missing doc and the chain consulted (REQ-K1.7). The rest degrade
gracefully instead:
decision-domains — the gap check's catalog. Absent: note it in one line,
skip the gap check, and record the skip in the brief.
interaction-style — governs the flow's exchanges; kickoff-dialogue
(point-of-use) records their /spec-kickoff instantiation. Either doc absent:
follow the inline summary (progress indicator, small bites, selectors with a
recommendation, running summary) and the walk/sign-off spine below, and note
which is missing.
kickoff-verification — the kickoff lens/verification mechanics: the mid-walk
lens (walkthrough), the stale-reference sweep and sign-off lens-review scope,
fan-out, and altitude check (sign-off), and the terminal ready-flip CI gate
(step 8). Each pass's load-bearing spine stays inline.
Absent: run each from
that spine and its halt-if-absent base (discovery-rigor, autopilot-reflex),
and skip the ready-flip, leaving the PR draft (fail closed).
Doctrine manifest (the reading model above in machine-parseable form, per
doctrine/instruction-hygiene.md; run-start loads before work begins,
point-of-use loads at the named step or branch):
Doctrine: run-start security-posture
Doctrine: run-start interaction-style
Doctrine: point-of-use spec-format (pre-flight step 2)
Doctrine: point-of-use discovery-rigor (the sign-off lens pass)
Doctrine: point-of-use autopilot-reflex (the sign-off altitude check)
Doctrine: point-of-use validation-rigor (lens-finding validation)
Doctrine: point-of-use decision-domains (the sign-off gap check)
Doctrine: point-of-use kickoff-verification (kickoff lens/sweep passes and the ready-flip gate)
Doctrine: point-of-use kickoff-dialogue (discipline instantiation, approval summary, structured-log emit)
Modes
Modes, selected at pre-flight from status and brief state:
- First activation (Draft, no signed brief — or a partial one, see
resumability): the full walkthrough through first sign-off, the
Draft→Ready flip, push, draft PR, and — on clean completion — the terminal
spec-PR ready-flip (sign-off step 8).
- Delta re-walkthrough (Ready or Active, signed brief): entered when
pre-flight step 2's freshness comparison finds changed spec content (the remedy
REQ-F1.9's gate names) or the human asks. Walk only the delta; the lens pass is
delta-scoped; the outcome is an appended amendment-log entry with a fresh
anchor.
- Amendment (Active; human-declared, never inferred): the REQ-A3.3
meaning-class vs expression-only split, applied at sign-off (sign-off steps 1
and 5).
Change-handling scales with the lifecycle stage (REQ-D1.4). A Ready bundle
takes pre-merge changes through a delta re-walkthrough / re-sign-off — not the
amendment ritual — and the spec PR stays as it was. The amendment ritual is
reserved for an Active bundle (work in flight), where the change coordinates
with execution underway.
A Done bundle reopens to Draft first (the REQ-A1.6 reopen cycle below) — never
amended in place. The per-class ritual detail (expression-only changelog +
self-re-anchor vs. meaning-class delta lens pass + fresh anchor) is
spec-format's amendment ritual.
A reopened bundle (Status Draft with a complete signed brief — the
REQ-A3.1 / REQ-A1.6 reopen cycle, entered when /spec-draft --extend flips a
Done spec back to Draft) is a scoped kickoff of the delta, not a first
activation: walk the extension delta in the delta re-walkthrough shape, and the
sign-off flips Draft→Ready again (the delta's first dispatch derives Active). A
Done spec has nothing to kick off: point at /spec-draft --extend. Retired and
Superseded are terminal: refuse — no skill-driven transition leaves them.
Pre-flight
- Parse
$ARGUMENTS. Expect a spec path (specs/<spec> or the bare
<spec>). Validate the <spec> segment against the anchored, full-string
pattern ^[a-z0-9][a-z0-9-]*$, maximum length 64 (REQ-A1.8), before it
appears in any path, branch name, or command; a failing identifier is never
interpolated. No argument: list the bundles under specs/
(underscore-prefixed accumulators are not bundles) and ask.
- Verify the bundle and select the mode. All four files must exist
(
requirements.md, design.md, tasks.md, test-spec.md). A missing file
or unreadable status is a structural defect: surface it and point at
/spec-draft. Resolve and read spec-format here. Read the **Status:**
line:
- Draft → first activation; a resume when step 6 finds a partial
brief; a reopened-bundle delta kickoff when the brief is complete
and signed (per the Modes section).
- Ready or Active with a signed brief → run the freshness comparison:
parse the brief's most recent anchor entry, recompute the anchor with the
command it records, and compare. Mismatch → delta re-walkthrough;
derive the delta from the four spec files' git history since the entry plus
any uncommitted changes, and confirm scope with the human first. Match
→ nothing is stale; ask what the human brings (a re-walk on request, or —
on an Active bundle — an amendment, always human-declared; a Ready bundle's
pre-merge change is the delta re-walk path, REQ-D1.4). On a format-version 2
bundle the stored header rests at Ready — Active is derived — so distinguish
Ready from Active via the render (
mise run status specs/<spec>), never a
stored Active. Brief or anchor entry absent, unparseable, or
non-sanctioned (e.g. a hand-flipped spec that never had a kickoff) → the
sign-off record needs creating or repairing; this skill's sign-off flow is
the repair REQ-F1.9 names: walk it as a whole-bundle delta re-walkthrough (a
missing brief gets the full first-activation structure minus the
already-done flip).
- Done / Retired / Superseded → per the Modes section.
- Run the validator.
scripts/spec-validate.sh specs/<spec> when present
and executable. Draft findings are warnings: surface them, fix structural
ones with the human before walking, and record the outcome for the brief
header. Ready or Active findings are errors (status-aware — Ready blocks on
errors exactly as Active does): surface them and carry each
into the walk as a must-fix item; the delta walk fixes them, and sign-off
step 4's re-validation refuses to record while any remain. Validator absent
or not executable: an authoring path degrades rather than halts (REQ-K1.7) —
but a merged signed-off bundle is dispatchable, so this run's sign-off lands
unvalidated (whether or not it flips Draft→Ready). Naming the Draft→Ready
flip only when this run flips, ask the human whether to proceed anyway or
stop, install the validator, and re-run.
- Read the config.
commit_on_kickoff, mark_spec_pr_ready_on_kickoff,
and kickoff_ready_ci_wait (default 10m) from config/defaults.yml
overridden by <repo>/.claude/planwright.local.yml (local wins). The
booleans default true; an absent, unreadable, or malformed value falls back
to its default with a one-line warning.
mark_spec_pr_ready_on_kickoff gates the terminal ready-flip and
kickoff_ready_ci_wait bounds its CI wait (sign-off step 8).
- Resolve the working location (D-44, graceful in every starting state).
The spec branch is
planwright/<spec>/spec (the namespace tasks-pr-sync
no-ops on); the spec worktree is <repo>/.claude/worktrees/<spec>-spec (D-37).
- Already in the spec worktree: proceed; on dirty/diverged state, surface
it and ask first — never auto-stash, auto-commit, or clean.
- In the main checkout or an unrelated worktree: if the spec worktree
exists, print the re-open command (
claude --worktree <spec>-spec) and stop;
if only the branch exists (worktree pruned), recreate it via Claude Code's
native mechanism (never raw git worktree, D-37); if neither (a retrofit
bundle that never went through /spec-draft), create both, then git switch -c planwright/<spec>/spec inside it, off the current main view.
- Not a git repository: degrade per REQ-K1.7 — say so up front, walk and
write the brief in place, skip every branch/commit/push/PR step, and surface
at the end what was skipped. No remote configured: proceed; the push/PR
step degrades when reached.
- Detect a partial brief (resumability). If
kickoff-brief.md exists,
classify it: per-section Signed off: lines present but no final sign-off
record with an anchor → a killed session left a resumable partial brief.
Present the running summary of every signed section, confirm it still stands,
and resume at the first unsigned section — signed sections are not re-walked
unless the human asks. A final record lacking its anchor line is the same case
(anchor-written-last, by design): resume at the sign-off step.
- Surface the optional independent walkthrough (suggest only). Recommend
/spec-walkthrough specs/<spec> for an unaided cold read — the complement to
this guided dialogue, not a replacement, never a dependency (REQ-F1.1,
REQ-F1.2, D-11; comprehend-first stays in-band, per kickoff-dialogue). This
skill never performs it.
The walkthrough
Section by section, in the brief's required structure (spec-format defines
it; written incrementally, one section to disk as signed). It covers components
1–7; the rest (sign-off section, amendment log) are written by the
sign-off flow below, not walked. Every exchange follows the interaction-style
rules
(progress indicator [section <n>/7], small bites, selectors with a
recommendation, running summary after each section) and instantiates the three
disciplines in-band, and emits the structured decision/transcript log the eval
grades, per kickoff-dialogue (REQ-F1.1, REQ-G1.3): comprehend-first (section
2), with adaptive-level calibration (frontier detection, fade, a lightweight
per-concept uptake estimate, no learner model; REQ-B1.3, REQ-B1.4, D-4);
backward-chaining completeness bounded per pass; present without steering. Each
section ends with an explicit
Signed off: <date> line — what resumability keys on.
- Header block. Spec path, spec commit at walkthrough start, walkthrough
date, validator outcome from pre-flight. Written first, no sign-off needed.
- Goal & glossary. Restate the goal in the agent's own words — a
restatement, not a summary: what the spec is for, rules out, and assumes.
Surface implicit terms (vocabulary the spec uses but never defines) and
record resolutions to every ambiguity the restatement exposes.
- Requirements walkthrough. Per REQ group: restate the group's intent,
probe edge cases and gaps Socratically, and record per-group outcomes and
decisions. Collect spec edits in a consolidated list rather than scattering
them (applied per the edit rules below).
- Design walkthrough. Every D-ID accounted for — confirmed (rationale
intact), amended (what changed and why), or superseded — with a reconciled
ledger. A design decision that contradicts a walked requirement is an
inconsistency (below), not a ledger entry.
- Verification approach. Review the coverage mix across test-spec tags,
state verification ownership (which CI runs
[test] entries, who sweeps
[manual]), and check for dead paths — REQs whose named verification cannot
actually run.
- Task graph. Reconstruct the dependency graph from the
Dependencies:
lines (authoritative; any diagram is derived), identify parallelism and the
effort-weighted critical path, and record deliberate non-edges so nobody
"fixes" them later.
- Risk register. Numbered rows of risk + mitigation / early signal.
Inputs: risks surfaced during the walk, the human's cold-review questions,
and the decision-domains gap check — walk the catalog against the spec
(the prose seed plus overlay-added domains via the merged path
scripts/resolve-catalog.sh decision-domains, so adopter/team additions
count, REQ-D1.1); any catalogued domain the spec touches but never decides
becomes a risk-register row naming the domain and the undecided question
(REQ-G1.4, D-39). Catalog absent: record the one-line skip here. Open
questions must be resolved into decisions or explicitly accepted risks before
sign-off.
Spec edits during the walkthrough. A Draft bundle is unsigned: edits land
in place, applied with the human section by section, and the consolidated list
is recorded in the brief. On a signed bundle the stage-scaled change-handling
above governs (REQ-D1.4); post-merge changes follow spec-format's supersede /
changelog rules. An agent-authored meaning-class edit applied here also gets the
mid-walk delta-scoped lens pass at the point of application — its disposition
recorded in the brief section carrying it, an erroring pass surfaced
(kickoff-verification, REQ-B1.4, D-5).
The inconsistency halt (REQ-B2.3). A genuine spec inconsistency — two
requirements that contradict, a design decision that contradicts a requirement,
a Done-when no deliverable can satisfy — halts the walkthrough rather than being
papered over. Present the contradiction with both readings and the smallest
edit that resolves each way. The human resolves by editing the spec (the
affected sections re-walk) or recording an explicit override in the brief
(the contradiction stands, named, with the chosen reading and rationale). Until
one happens there is no sign-off, no Ready flip, and no anchor entry: the run
ends with the partial brief on disk and the halt reason stated. Fail closed.
Sign-off
Sign-off runs only when every section above is signed and no inconsistency is
open. Its steps are ordered so a session killed at any point fails closed: the
most recent anchor entry never describes spec content that was not walked.
- The lens review pass. On a re-walkthrough or amendment, first ask the
human to classify the delta on the REQ-A3.3 axis (recorded later in the
Class: line, but needed now to scope this pass). Then run the
Discovery-Rigor lens review of the bundle per kickoff-verification (scope,
fan-out, and the canonical lens-coverage table there; D-45, REQ-A3.3). The
kickoff-specific altitude check (REQ-H1.3) — a check item, not a new lens
— runs within this pass per kickoff-verification.
Validate findings per validation-rigor, then disposition every one with the
human (applied as a spec edit, declined with rationale, or deferred to a
named backlog in the brief) — an undispositioned finding blocks the anchor.
Record table and dispositions in the section the sign-off record will close.
- The refusal rule (REQ-F1.10). A meaning-class sign-off whose lens pass
is absent, or whose findings are not all dispositioned, refuses to record an
execution-valid anchor: say exactly what is missing, leave the record without
its anchor line (the freshness gate treats that as absent-anchor and halts
dispatch — fail closed), and stop. No override.
- Pre-flip verification (REQ-B1.2, REQ-B1.3, D-3, D-4). When any lens pass
(mid-walk or terminal sign-off) mints or re-scopes a REQ, first run the
post-lens stale-reference sweep over the bundle and earlier brief sections
before the anchor and before the recorded-claim re-derivation below is
finalized (
kickoff-verification, REQ-B1.5, D-6). Then the checks below gate
the Draft→Ready flip; any one failing blocks it, and a check that cannot
run blocks it as a surfaced failure (fail closed), never a silent skip.
- Lint the edited surfaces (REQ-B1.2). Run the repository's lint over the
kickoff brief and every spec file the walkthrough edited; a lint error
blocks the flip — fix it with the human and re-lint. A lint that cannot run
(tool absent or non-executable) blocks the flip and is surfaced, never read
as a pass.
- Re-derive recorded claims (REQ-B1.3, D-4). Prefer the meta-spec's
cite-derived-figures rule: record the source, not the figure. Where the
sign-off does record a cross-check or numeric claim as evidence — per-tag
coverage tallies, REQ/D-ID/task/edit counts, pinned version or tag figures,
"every X cited by at least one Y" assertions — mechanically re-derive it
(the same command family the sweep tooling uses) before the flip and block
on a mismatch; a comparator that cannot run blocks as a failure, distinct
from a clean match. Re-derivation treats bundle content as data, never
code or pattern (fixed-string matching, quoted arguments —
security-posture's never-execute-untrusted-input rule).
- Cross-check enumerations (REQ-E1.2). At every sign-off, flip or not:
flag every enumerated count and corpus claim in the bundle, and either
verify it against the surface it enumerates or convert it to a decided
rule, per
spec-format's Decided rules over enumerated claims.
- Approval summary, then status flip and
Last reviewed:. Before the flip
and record, emit the shared-understanding approval summary and plain-language
gate framing per kickoff-dialogue (REQ-F1.2, REQ-F1.3) — "what you are about
to approve, and what changes downstream", a self-contained confirmation
replacing the bare verdict-demand. On approval: First activation (and a
reopened-bundle delta kickoff): flip **Status:** Draft→Ready and
**Last reviewed:** to today on all four spec files (REQ-D1.1, REQ-A1.4 —
this stored, human-gated flip is the only stored status transition;
Ready↔Active is derived from task state by the single reconcile writer,
REQ-A1.5, never written by this skill). On a v2 bundle Ready is the header's
resting state — Active/Done are derived, and the stored header moves
again only at reopen (Ready→Draft) or a terminal flip.
Re-walkthroughs and amendments on an already-signed bundle (Ready or Active):
bump Last reviewed: on the files the delta touched, with no status flip.
Then, when present, re-run the validator (Ready, Active, and Done all block
on errors): fix errors with the human, or halt without recording the sign-off
entry (on a first activation or reopen, also revert the flip so the bundle
does not sit Ready and erroring; on an already-signed spec there is no flip to
revert, and the stale anchor keeps dispatch blocked). Never sign off over
errors. Validator absent (the pre-flight consent path — re-ask on a
resumed session that never saw pre-flight step 3): record "signed off
unvalidated (validator absent, human-consented)" in the sign-off section,
adding "including the Draft→Ready flip" only when this run flipped.
- The sign-off record (record format, sanctioned anchor command forms, and
writers rule per
spec-format's Sign-off records and content anchors;
REQ-F1.10). Write it into the brief's sign-off section (first activation) or
as an appended amendment-log entry (everything later) — sections above the
amendment log are append-only after first sign-off. Carry Class:,
Lens-pass: (meaning-class only), and the anchor line last (the
fail-closed ordering). Compute the anchor
with scripts/spec-anchor.sh specs/<spec> after every spec-file edit of this
run (flip, Last reviewed:, applied findings) is on disk; it fails closed on
a defective bundle — surface its stderr and stop with no anchor line, never
hand-roll it. Absent that script, descend spec-format's sanctioned-form
list (logical before interim whole-file), recording the exact command used. It
writes an expression-only entry only when the human classified the entire
delta expression-only.
- Commit (D-41) when
commit_on_kickoff is true: one commit on
planwright/<spec>/spec with the brief, the four spec files, and any
observation fragment from this run — first activation feat(spec): <spec> kickoff, brief + Ready flip; later events docs(spec): <spec> <event> (e.g. delta re-walkthrough, amendment). New commits only —
never force-push, amend, squash, or rebase (REQ-J1.4). Opt-out: leave the
work uncommitted, say so, and skip push/PR.
- Push and draft PR (REQ-B2.4, D-44). Run the Observations and Maintenance
steps below before pushing (step 8's ready-flip issues no commit), so their
chore commits land before the push.
Terminal re-anchor (REQ-C1.4, D-5): anchored content edited after the
sign-off record was written takes
spec-format's recompute-and-re-record
ritual as the final pre-push step. Then push:
git push -u origin planwright/<spec>/spec. Then the PR: if one exists for
the branch, update its body; otherwise gh pr create --draft with --title
and --body. The title must pass the conventional PR-title lint
(scripts/check-commit-msgs.sh, enforced in CI at 100 chars):
feat(spec): <spec> kickoff sign-off for a first activation, docs(spec): <spec> <event> for later events. The body carries the spec path, brief path,
walkthrough scope (full or delta), validator outcome, lens-pass summary, and
the anchor. On no remote, push rejection, or gh absence/auth failure:
degrade per REQ-K1.6/K1.7 — the work is committed; record a note in the
spec's tasks.md ## Awaiting input section naming the pending push/PR step
and the failure, surface it in the handoff, and stop. Never retry into an
opaque failure.
- Mark the spec PR ready (terminal step, D-6/D-7; REQ-D1.2, REQ-D1.3,
REQ-D1.5). Only on a clean completion — the
sign-off record above is written with its anchor (no inconsistency halt, no
carried open question, every lens finding dispositioned) and any configured
verification has converged. That verification is the configurable
review_sequence-class mechanism (D-7,
customization-overlay D-6 / REQ-D1.3), not a hardcoded core step: in bare
core it is this skill's own walkthrough and Discovery-Rigor lens pass; an
overlay may run an additional review pass over the spec PR whose terminal
step is this flip. When
mark_spec_pr_ready_on_kickoff is true (pre-flight step 4) and the
completion is clean, un-draft the spec PR — but first gate the flip on the
head SHA's CI per kickoff-verification (REQ-B1.1, D-3), then check its
state (gh pr view <spec-PR> --json isDraft,state) and run gh pr ready <spec-PR> only while it is still a draft; skip it when the PR is already
ready or merged/closed (a benign no-op whose non-zero exit would wrongly trip
the degradation path). This is the narrow exception to bootstrap
D-26's all-drafts rule: only the spec PR, and only this skill, marks a PR
ready; task PRs stay drafts (reviewed by the execution and review
skills). Merge stays the human's second key —
never auto-merge.
- Do not flip when the completion is not clean by the criteria above: leave
the PR draft and say so in the handoff.
- Opt-out:
mark_spec_pr_ready_on_kickoff: false suppresses the flip;
the PR stays draft and the human un-drafts it by hand.
- Degrade, never retry into opacity (bootstrap REQ-K1.6/K1.7): if the
flip itself fails — no remote,
gh absent or auth failure, PR not found —
the recorded sign-off stands (never roll it back); record the pending
ready-flip in the spec's tasks.md ## Awaiting input section naming the
failure, surface it in the handoff, and stop.
Hand off. Report: mode and scope, sections walked, spec edits applied,
gap-check outcome, lens-pass summary, the anchor, commit/push/PR outcome (or
degradation notes), the spec PR's ready/draft state (with the reason when it
stayed draft), and the next step — merge the spec PR (now ready), then
/orchestrate specs/<spec>.
Data hygiene throughout (security-posture): the brief, risk register, and
PR body are committed — no secrets, credentials, internal hostnames, or
sensitive detail; neutralize what discussion surfaces before writing it.
Observations
When anything outside this kickoff's scope surfaces during the walk (doctrine or
tooling gaps, recurring friction, an uncatalogued decision domain), record one
fragment per item through the shared helper scripts/obs-record.sh --slug <topic> --scope <repo> --text '<observation>' (resolved under the planwright
root) and commit it (with the sign-off commit, or as its own chore commit);
surface a non-zero helper exit rather than dropping the observation. Do not act
on observations during the kickoff; they are seed material for /spec-draft.
Maintenance
Before the push step on a run that reaches sign-off (so the chore commit lands
pushed), or at the halt point otherwise, compare these instructions against the
resolved doctrine docs listed above (REQ-B3.2, D-42) — especially spec-format
and decision-domains. If a concept this skill names has changed meaning,
gained or lost a step, or moved between docs, record a drift observation through
the shared helper (scripts/obs-record.sh --slug skill-drift --scope <repo> --text 'skill-drift(spec-kickoff): <what>' — keeping the skill-drift(...)
prefix; in repositories without specs/, surface the drift to the user
instead), commit it as its own chore commit, and tell the user what drifted;
surface a non-zero helper exit rather than dropping it. Do not edit this skill or
the doctrine docs to resolve the drift; /spec-draft owns folding drift into
spec amendments.
1---2name: spec-kickoff3description: Walk a spec bundle section by section to mutual understanding, producing the signed-off kickoff brief downstream skills execute from. On sign-off: runs the Discovery-Rigor lens pass, flips Draft to Ready, records the sign-off record (anchor last), commits, pushes, opens a draft PR, then on clean completion marks the spec PR ready (mark_spec_pr_ready_on_kickoff opt-out). Also runs delta re-walkthroughs and amendments; halts on genuine spec inconsistency rather than papering over it.4---56# /spec-kickoff78The comprehension layer of the planwright pipeline (REQ-B2.4, REQ-B2.2):9a section-by-section walkthrough of a spec bundle until human and agent10hold the same understanding, recorded as `specs/<spec>/kickoff-brief.md` —11the durable contract (two-brief model, D-3). Downstream skills12(`/execute-task`, `/orchestrate`) operate from the brief, not the spec; what13this walkthrough gets wrong, execution gets wrong.1415Sign-off is the first key of a two-key launch (D-44): it flips the spec16Draft→Ready and, on a clean completion, marks the spec PR ready (D-6, D-7; the17walkthrough is the bundle's review). The human's merge is the second key,18making the Ready spec operational (the first dispatch derives Active, not this19skill). This skill marks only the spec PR ready, never merges, never dispatches20execution.2122## Doctrine2324This skill is procedure, not doctrine. Resolve and read the run-start rule25docs via the rule-doc resolution convention26(`scripts/resolve-rule-doc.sh <doc-name>` under the resolved planwright27root); their definitions govern wherever this skill names a concept:2829- `security-posture` — artifact data-hygiene: the brief and risk register are30 committed.3132**Invoking plugin scripts (REQ-D1.1, D-7).** Call `scripts/<name>.sh` by the33**resolved literal absolute path**, never `$VAR/scripts/<name>.sh` —34`doctrine/plugin-script-invocation.md`.3536`spec-format` (pre-flight step 2) — the meta-spec: bundle format, status37lifecycle, amendment ritual, sign-off records, content anchors, and sanctioned38anchor command forms. This skill is the writer its sign-off rules name; it39follows them exactly. Three more, at Sign-off step 1:4041- `discovery-rigor` — the lens checklist, coverage table, and fan-out behind the42 lens review.43- `autopilot-reflex` — the altitude gate (D-11) behind the altitude check.44- `validation-rigor` — validation of lens findings before disposition.4546If any of those five does not resolve — at run start or point of use — halt47naming the missing doc and the chain consulted (REQ-K1.7). The rest degrade48gracefully instead:4950- `decision-domains` — the gap check's catalog. Absent: note it in one line,51 skip the gap check, and record the skip in the brief.52- `interaction-style` — governs the flow's exchanges; `kickoff-dialogue`53 (point-of-use) records their `/spec-kickoff` instantiation. Either doc absent:54 follow the inline summary (progress indicator, small bites, selectors with a55 recommendation, running summary) and the walk/sign-off spine below, and note56 which is missing.57- `kickoff-verification` — the kickoff lens/verification mechanics: the mid-walk58 lens (walkthrough), the stale-reference sweep and sign-off lens-review scope,59 fan-out, and altitude check (sign-off), and the terminal ready-flip CI gate60 (step 8). Each pass's load-bearing spine stays inline.61 Absent: run each from62 that spine and its halt-if-absent base (`discovery-rigor`, `autopilot-reflex`),63 and skip the ready-flip, leaving the PR draft (fail closed).6465Doctrine manifest (the reading model above in machine-parseable form, per66`doctrine/instruction-hygiene.md`; `run-start` loads before work begins,67`point-of-use` loads at the named step or branch):6869Doctrine: run-start security-posture70Doctrine: run-start interaction-style71Doctrine: point-of-use spec-format (pre-flight step 2)72Doctrine: point-of-use discovery-rigor (the sign-off lens pass)73Doctrine: point-of-use autopilot-reflex (the sign-off altitude check)74Doctrine: point-of-use validation-rigor (lens-finding validation)75Doctrine: point-of-use decision-domains (the sign-off gap check)76Doctrine: point-of-use kickoff-verification (kickoff lens/sweep passes and the ready-flip gate)77Doctrine: point-of-use kickoff-dialogue (discipline instantiation, approval summary, structured-log emit)7879## Modes8081Modes, selected at pre-flight from status and brief state:8283- **First activation** (Draft, no signed brief — or a partial one, see84 resumability): the full walkthrough through first sign-off, the85 Draft→Ready flip, push, draft PR, and — on clean completion — the terminal86 spec-PR ready-flip (sign-off step 8).87- **Delta re-walkthrough** (Ready or Active, signed brief): entered when88 pre-flight step 2's freshness comparison finds changed spec content (the remedy89 REQ-F1.9's gate names) or the human asks. Walk only the delta; the lens pass is90 delta-scoped; the outcome is an appended amendment-log entry with a fresh91 anchor.92- **Amendment** (Active; human-declared, never inferred): the REQ-A3.393 meaning-class vs expression-only split, applied at sign-off (sign-off steps 194 and 5).9596**Change-handling scales with the lifecycle stage (REQ-D1.4).** A Ready bundle97takes pre-merge changes through a delta re-walkthrough / re-sign-off — not the98amendment ritual — and the spec PR stays as it was. The amendment ritual is99reserved for an Active bundle (work in flight), where the change coordinates100with execution underway.101A Done bundle reopens to Draft first (the REQ-A1.6 reopen cycle below) — never102amended in place. The per-class ritual detail (expression-only changelog +103self-re-anchor vs. meaning-class delta lens pass + fresh anchor) is104`spec-format`'s *amendment ritual*.105106A **reopened bundle** (Status Draft with a complete signed brief — the107REQ-A3.1 / REQ-A1.6 reopen cycle, entered when `/spec-draft --extend` flips a108Done spec back to Draft) is a scoped kickoff of the delta, not a first109activation: walk the extension delta in the delta re-walkthrough shape, and the110sign-off flips Draft→Ready again (the delta's first dispatch derives Active). A111Done spec has nothing to kick off: point at `/spec-draft --extend`. Retired and112Superseded are terminal: refuse — no skill-driven transition leaves them.113114## Pre-flight1151161. **Parse `$ARGUMENTS`.** Expect a spec path (`specs/<spec>` or the bare117 `<spec>`). Validate the `<spec>` segment against the anchored, full-string118 pattern `^[a-z0-9][a-z0-9-]*$`, maximum length 64 (REQ-A1.8), **before** it119 appears in any path, branch name, or command; a failing identifier is never120 interpolated. No argument: list the bundles under `specs/`121 (underscore-prefixed accumulators are not bundles) and ask.1222. **Verify the bundle and select the mode.** All four files must exist123 (`requirements.md`, `design.md`, `tasks.md`, `test-spec.md`). A missing file124 or unreadable status is a structural defect: surface it and point at125 `/spec-draft`. Resolve and read `spec-format` here. Read the `**Status:**`126 line:127 - **Draft** → first activation; a resume when step 6 finds a partial128 brief; a reopened-bundle delta kickoff when the brief is complete129 and signed (per the Modes section).130 - **Ready or Active with a signed brief** → run the freshness comparison:131 parse the brief's most recent anchor entry, recompute the anchor with the132 command it records, and compare. **Mismatch** → delta re-walkthrough;133 derive the delta from the four spec files' git history since the entry plus134 any uncommitted changes, and confirm scope with the human first. **Match**135 → nothing is stale; ask what the human brings (a re-walk on request, or —136 on an Active bundle — an amendment, always human-declared; a Ready bundle's137 pre-merge change is the delta re-walk path, REQ-D1.4). On a format-version 2138 bundle the stored header rests at Ready — Active is derived — so distinguish139 Ready from Active via the render (`mise run status specs/<spec>`), never a140 stored `Active`. **Brief or anchor entry absent, unparseable, or141 non-sanctioned** (e.g. a hand-flipped spec that never had a kickoff) → the142 sign-off record needs creating or repairing; this skill's sign-off flow is143 the repair REQ-F1.9 names: walk it as a whole-bundle delta re-walkthrough (a144 missing brief gets the full first-activation structure minus the145 already-done flip).146 - **Done / Retired / Superseded** → per the Modes section.1473. **Run the validator.** `scripts/spec-validate.sh specs/<spec>` when present148 and executable. Draft findings are warnings: surface them, fix structural149 ones with the human before walking, and record the outcome for the brief150 header. Ready or Active findings are errors (status-aware — Ready blocks on151 errors exactly as Active does): surface them and carry each152 into the walk as a must-fix item; the delta walk fixes them, and sign-off153 step 4's re-validation refuses to record while any remain. Validator absent154 or not executable: an authoring path degrades rather than halts (REQ-K1.7) —155 but a merged signed-off bundle is dispatchable, so this run's sign-off lands156 unvalidated (whether or not it flips Draft→Ready). Naming the Draft→Ready157 flip only when this run flips, ask the human whether to proceed anyway or158 stop, install the validator, and re-run.1594. **Read the config.** `commit_on_kickoff`, `mark_spec_pr_ready_on_kickoff`,160 and `kickoff_ready_ci_wait` (default `10m`) from `config/defaults.yml`161 overridden by `<repo>/.claude/planwright.local.yml` (local wins). The162 booleans default `true`; an absent, unreadable, or malformed value falls back163 to its default with a one-line warning.164 `mark_spec_pr_ready_on_kickoff` gates the terminal ready-flip and165 `kickoff_ready_ci_wait` bounds its CI wait (sign-off step 8).1665. **Resolve the working location** (D-44, graceful in every starting state).167 The spec branch is `planwright/<spec>/spec` (the namespace `tasks-pr-sync`168 no-ops on); the spec worktree is `<repo>/.claude/worktrees/<spec>-spec` (D-37).169 - **Already in the spec worktree:** proceed; on dirty/diverged state, surface170 it and ask first — never auto-stash, auto-commit, or clean.171 - **In the main checkout or an unrelated worktree:** if the spec worktree172 exists, print the re-open command (`claude --worktree <spec>-spec`) and stop;173 if only the branch exists (worktree pruned), recreate it via Claude Code's174 native mechanism (never raw `git worktree`, D-37); if neither (a retrofit175 bundle that never went through `/spec-draft`), create both, then `git switch176 -c planwright/<spec>/spec` inside it, off the current main view.177 - **Not a git repository:** degrade per REQ-K1.7 — say so up front, walk and178 write the brief in place, skip every branch/commit/push/PR step, and surface179 at the end what was skipped. **No remote configured:** proceed; the push/PR180 step degrades when reached.1816. **Detect a partial brief** (resumability). If `kickoff-brief.md` exists,182 classify it: per-section `Signed off:` lines present but no final sign-off183 record with an anchor → a killed session left a resumable partial brief.184 Present the running summary of every signed section, confirm it still stands,185 and resume at the first unsigned section — signed sections are not re-walked186 unless the human asks. A final record lacking its anchor line is the same case187 (anchor-written-last, by design): resume at the sign-off step.1887. **Surface the optional independent walkthrough (suggest only).** Recommend189 `/spec-walkthrough specs/<spec>` for an unaided cold read — the complement to190 this guided dialogue, not a replacement, never a dependency (REQ-F1.1,191 REQ-F1.2, D-11; comprehend-first stays in-band, per `kickoff-dialogue`). This192 skill never performs it.193194## The walkthrough195196Section by section, in the brief's required structure (`spec-format` defines197it; written incrementally, one section to disk as signed). It covers components1981–7; the rest (sign-off section, amendment log) are written by the199sign-off flow below, not walked. Every exchange follows the `interaction-style`200rules201(progress indicator `[section <n>/7]`, small bites, selectors with a202recommendation, running summary after each section) and **instantiates the three203disciplines in-band, and emits the structured decision/transcript log the eval204grades, per `kickoff-dialogue`** (REQ-F1.1, REQ-G1.3): comprehend-first (section2052), with **adaptive-level calibration** (frontier detection, fade, a lightweight206per-concept uptake estimate, no learner model; REQ-B1.3, REQ-B1.4, D-4);207backward-chaining completeness bounded per pass; present without steering. Each208section ends with an explicit209`Signed off: <date>` line — what resumability keys on.2102111. **Header block.** Spec path, spec commit at walkthrough start, walkthrough212 date, validator outcome from pre-flight. Written first, no sign-off needed.2132. **Goal & glossary.** Restate the goal in the agent's own words — a214 restatement, not a summary: what the spec is for, rules out, and assumes.215 Surface implicit terms (vocabulary the spec uses but never defines) and216 record resolutions to every ambiguity the restatement exposes.2173. **Requirements walkthrough.** Per REQ group: restate the group's intent,218 probe edge cases and gaps Socratically, and record per-group outcomes and219 decisions. Collect spec edits in a consolidated list rather than scattering220 them (applied per the edit rules below).2214. **Design walkthrough.** Every D-ID accounted for — confirmed (rationale222 intact), amended (what changed and why), or superseded — with a reconciled223 ledger. A design decision that contradicts a walked requirement is an224 inconsistency (below), not a ledger entry.2255. **Verification approach.** Review the coverage mix across test-spec tags,226 state verification ownership (which CI runs `[test]` entries, who sweeps227 `[manual]`), and check for dead paths — REQs whose named verification cannot228 actually run.2296. **Task graph.** Reconstruct the dependency graph from the `Dependencies:`230 lines (authoritative; any diagram is derived), identify parallelism and the231 effort-weighted critical path, and record deliberate non-edges so nobody232 "fixes" them later.2337. **Risk register.** Numbered rows of risk + mitigation / early signal.234 Inputs: risks surfaced during the walk, the human's cold-review questions,235 and the **decision-domains gap check** — walk the catalog against the spec236 (the prose seed plus overlay-added domains via the merged path237 `scripts/resolve-catalog.sh decision-domains`, so adopter/team additions238 count, REQ-D1.1); any catalogued domain the spec touches but never decides239 becomes a risk-register row naming the domain and the undecided question240 (REQ-G1.4, D-39). Catalog absent: record the one-line skip here. Open241 questions must be resolved into decisions or explicitly accepted risks before242 sign-off.243244**Spec edits during the walkthrough.** A Draft bundle is unsigned: edits land245in place, applied with the human section by section, and the consolidated list246is recorded in the brief. On a signed bundle the stage-scaled change-handling247above governs (REQ-D1.4); post-merge changes follow `spec-format`'s supersede /248changelog rules. An agent-authored meaning-class edit applied here also gets the249mid-walk delta-scoped lens pass at the point of application — its disposition250recorded in the brief section carrying it, an erroring pass surfaced251(`kickoff-verification`, REQ-B1.4, D-5).252253**The inconsistency halt (REQ-B2.3).** A genuine spec inconsistency — two254requirements that contradict, a design decision that contradicts a requirement,255a Done-when no deliverable can satisfy — halts the walkthrough rather than being256papered over. Present the contradiction with both readings and the smallest257edit that resolves each way. The human resolves by **editing the spec** (the258affected sections re-walk) or **recording an explicit override in the brief**259(the contradiction stands, named, with the chosen reading and rationale). Until260one happens there is no sign-off, no Ready flip, and no anchor entry: the run261ends with the partial brief on disk and the halt reason stated. Fail closed.262263## Sign-off264265Sign-off runs only when every section above is signed and no inconsistency is266open. Its steps are ordered so a session killed at any point fails closed: the267most recent anchor entry never describes spec content that was not walked.2682691. **The lens review pass.** On a re-walkthrough or amendment, first ask the270 human to classify the delta on the REQ-A3.3 axis (recorded later in the271 `Class:` line, but needed now to scope this pass). Then run the272 Discovery-Rigor lens review of the bundle per `kickoff-verification` (scope,273 fan-out, and the canonical lens-coverage table there; D-45, REQ-A3.3). The274 **kickoff-specific altitude check (REQ-H1.3)** — a check item, not a new lens275 — runs within this pass per `kickoff-verification`.276 Validate findings per `validation-rigor`, then disposition every one with the277 human (applied as a spec edit, declined with rationale, or deferred to a278 named backlog in the brief) — an undispositioned finding blocks the anchor.279 Record table and dispositions in the section the sign-off record will close.2802. **The refusal rule (REQ-F1.10).** A meaning-class sign-off whose lens pass281 is absent, or whose findings are not all dispositioned, refuses to record an282 execution-valid anchor: say exactly what is missing, leave the record without283 its anchor line (the freshness gate treats that as absent-anchor and halts284 dispatch — fail closed), and stop. No override.2853. **Pre-flip verification (REQ-B1.2, REQ-B1.3, D-3, D-4).** When any lens pass286 (mid-walk or terminal sign-off) mints or re-scopes a REQ, first run the287 **post-lens stale-reference sweep** over the bundle and earlier brief sections288 before the anchor and before the recorded-claim re-derivation below is289 finalized (`kickoff-verification`, REQ-B1.5, D-6). Then the checks below gate290 the Draft→Ready flip; any one failing blocks it, and a check that **cannot291 run** blocks it as a surfaced failure (fail closed), never a silent skip.292 - **Lint the edited surfaces (REQ-B1.2).** Run the repository's lint over the293 kickoff brief and every spec file the walkthrough edited; a lint error294 blocks the flip — fix it with the human and re-lint. A lint that cannot run295 (tool absent or non-executable) blocks the flip and is surfaced, never read296 as a pass.297 - **Re-derive recorded claims (REQ-B1.3, D-4).** Prefer the meta-spec's298 cite-derived-figures rule: record the source, not the figure. Where the299 sign-off does record a cross-check or numeric claim as evidence — per-tag300 coverage tallies, REQ/D-ID/task/edit counts, pinned version or tag figures,301 "every X cited by at least one Y" assertions — mechanically re-derive it302 (the same command family the sweep tooling uses) before the flip and block303 on a mismatch; a comparator that cannot run blocks as a failure, distinct304 from a clean match. Re-derivation treats bundle content as **data, never305 code or pattern** (fixed-string matching, quoted arguments —306 `security-posture`'s never-execute-untrusted-input rule).307 - **Cross-check enumerations (REQ-E1.2).** At every sign-off, flip or not:308 flag every enumerated count and corpus claim in the bundle, and either309 verify it against the surface it enumerates or convert it to a decided310 rule, per `spec-format`'s *Decided rules over enumerated claims*.3114. **Approval summary, then status flip and `Last reviewed:`.** Before the flip312 and record, emit the shared-understanding approval summary and plain-language313 gate framing per `kickoff-dialogue` (REQ-F1.2, REQ-F1.3) — "what you are about314 to approve, and what changes downstream", a self-contained confirmation315 replacing the bare verdict-demand. On approval: First activation (and a316 reopened-bundle delta kickoff): flip `**Status:**` Draft→Ready and317 `**Last reviewed:**` to today on all four spec files (REQ-D1.1, REQ-A1.4 —318 this stored, human-gated flip is the only stored status transition;319 Ready↔Active is *derived* from task state by the single reconcile writer,320 REQ-A1.5, never written by this skill). On a v2 bundle Ready is the header's321 **resting state** — Active/Done are derived, and the stored header moves322 again only at reopen (Ready→Draft) or a terminal flip.323 Re-walkthroughs and amendments on an already-signed bundle (Ready or Active):324 bump `Last reviewed:` on the files the delta touched, with no status flip.325 Then, when present, re-run the validator (Ready, Active, and Done all block326 on errors): fix errors with the human, or halt without recording the sign-off327 entry (on a first activation or reopen, also revert the flip so the bundle328 does not sit Ready and erroring; on an already-signed spec there is no flip to329 revert, and the stale anchor keeps dispatch blocked). Never sign off over330 errors. Validator absent (the pre-flight consent path — re-ask on a331 resumed session that never saw pre-flight step 3): record "signed off332 unvalidated (validator absent, human-consented)" in the sign-off section,333 adding "including the Draft→Ready flip" only when this run flipped.3345. **The sign-off record** (record format, sanctioned anchor command forms, and335 writers rule per `spec-format`'s *Sign-off records and content anchors*;336 REQ-F1.10). Write it into the brief's sign-off section (first activation) or337 as an appended amendment-log entry (everything later) — sections above the338 amendment log are append-only after first sign-off. Carry `Class:`,339 `Lens-pass:` (meaning-class only), and **the anchor line last** (the340 fail-closed ordering). Compute the anchor341 with `scripts/spec-anchor.sh specs/<spec>` after every spec-file edit of this342 run (flip, `Last reviewed:`, applied findings) is on disk; it fails closed on343 a defective bundle — surface its stderr and stop with no anchor line, never344 hand-roll it. Absent that script, descend `spec-format`'s sanctioned-form345 list (logical before interim whole-file), recording the exact command used. It346 writes an expression-only entry only when the human classified the entire347 delta expression-only.3486. **Commit** (D-41) when `commit_on_kickoff` is true: one commit on349 `planwright/<spec>/spec` with the brief, the four spec files, and any350 observation fragment from this run — first activation `feat(spec):351 <spec> kickoff, brief + Ready flip`; later events `docs(spec): <spec>352 <event>` (e.g. `delta re-walkthrough`, `amendment`). New commits only —353 never force-push, amend, squash, or rebase (REQ-J1.4). Opt-out: leave the354 work uncommitted, say so, and skip push/PR.3557. **Push and draft PR** (REQ-B2.4, D-44). Run the Observations and Maintenance356 steps below before pushing (step 8's ready-flip issues no commit), so their357 chore commits land before the push.358 **Terminal re-anchor (REQ-C1.4, D-5):** anchored content edited after the359 sign-off record was written takes `spec-format`'s recompute-and-re-record360 ritual as the final pre-push step. Then push:361 `git push -u origin planwright/<spec>/spec`. Then the PR: if one exists for362 the branch, update its body; otherwise `gh pr create --draft` with `--title`363 and `--body`. The title must pass the conventional PR-title lint364 (`scripts/check-commit-msgs.sh`, enforced in CI at 100 chars):365 `feat(spec): <spec> kickoff sign-off` for a first activation, `docs(spec):366 <spec> <event>` for later events. The body carries the spec path, brief path,367 walkthrough scope (full or delta), validator outcome, lens-pass summary, and368 the anchor. On no remote, push rejection, or `gh` absence/auth failure:369 degrade per REQ-K1.6/K1.7 — the work is committed; record a note in the370 spec's `tasks.md` `## Awaiting input` section naming the pending push/PR step371 and the failure, surface it in the handoff, and stop. Never retry into an372 opaque failure.3738. **Mark the spec PR ready (terminal step, D-6/D-7; REQ-D1.2, REQ-D1.3,374 REQ-D1.5).** Only on a **clean completion** — the375 sign-off record above is written with its anchor (no inconsistency halt, no376 carried open question, every lens finding dispositioned) and any configured377 verification has converged. That verification is the configurable378 `review_sequence`-class mechanism (D-7,379 customization-overlay D-6 / REQ-D1.3), **not a hardcoded** core step: in bare380 core it is this skill's own walkthrough and Discovery-Rigor lens pass; an381 overlay may run an additional review pass over the spec PR whose terminal382 step is this flip. When383 `mark_spec_pr_ready_on_kickoff` is true (pre-flight step 4) and the384 completion is clean, un-draft the spec PR — but **first gate the flip on the385 head SHA's CI** per `kickoff-verification` (REQ-B1.1, D-3), then **check its386 state** (`gh pr view <spec-PR> --json isDraft,state`) and run `gh pr ready387 <spec-PR>` **only while it is still a draft**; skip it when the PR is already388 ready or merged/closed (a benign no-op whose non-zero exit would wrongly trip389 the degradation path). This is the narrow exception to bootstrap390 D-26's all-drafts rule: **only the spec PR**, and only this skill, marks a PR391 ready; **task PRs stay drafts** (reviewed by the execution and review392 skills). Merge stays the human's second key —393 **never auto-merge**.394 - **Do not flip** when the completion is not clean by the criteria above: leave395 the PR draft and say so in the handoff.396 - **Opt-out:** `mark_spec_pr_ready_on_kickoff: false` suppresses the flip;397 the PR stays draft and the human un-drafts it by hand.398 - **Degrade, never retry into opacity (bootstrap REQ-K1.6/K1.7):** if the399 flip itself fails — no remote, `gh` absent or auth failure, PR not found —400 the recorded sign-off stands (never roll it back); record the pending401 ready-flip in the spec's `tasks.md` `## Awaiting input` section naming the402 failure, surface it in the handoff, and stop.403404**Hand off.** Report: mode and scope, sections walked, spec edits applied,405gap-check outcome, lens-pass summary, the anchor, commit/push/PR outcome (or406degradation notes), the spec PR's ready/draft state (with the reason when it407stayed draft), and the next step — merge the spec PR (now ready), then408`/orchestrate specs/<spec>`.409410**Data hygiene throughout (`security-posture`):** the brief, risk register, and411PR body are committed — no secrets, credentials, internal hostnames, or412sensitive detail; neutralize what discussion surfaces before writing it.413414## Observations415416When anything outside this kickoff's scope surfaces during the walk (doctrine or417tooling gaps, recurring friction, an uncatalogued decision domain), record one418fragment per item through the shared helper `scripts/obs-record.sh --slug419<topic> --scope <repo> --text '<observation>'` (resolved under the planwright420root) and commit it (with the sign-off commit, or as its own chore commit);421surface a non-zero helper exit rather than dropping the observation. Do not act422on observations during the kickoff; they are seed material for `/spec-draft`.423424## Maintenance425426Before the push step on a run that reaches sign-off (so the chore commit lands427pushed), or at the halt point otherwise, compare these instructions against the428resolved doctrine docs listed above (REQ-B3.2, D-42) — especially `spec-format`429and `decision-domains`. If a concept this skill names has changed meaning,430gained or lost a step, or moved between docs, record a drift observation through431the shared helper (`scripts/obs-record.sh --slug skill-drift --scope <repo>432--text 'skill-drift(spec-kickoff): <what>'` — keeping the `skill-drift(...)`433prefix; in repositories without `specs/`, surface the drift to the user434instead), commit it as its own chore commit, and tell the user what drifted;435surface a non-zero helper exit rather than dropping it. Do not edit this skill or436the doctrine docs to resolve the drift; `/spec-draft` owns folding drift into437spec amendments.