diff --git a/brainstorm/SKILL.md b/brainstorm/SKILL.md index 0fda722..e9b3536 100644 --- a/brainstorm/SKILL.md +++ b/brainstorm/SKILL.md @@ -32,8 +32,8 @@ Triggers: - A bug-fix iteration (use `debug` directly). - A tidy iteration (use `audit` directly). -- A trivial mechanical edit (≤1 file, ≤30 LOC, no design - judgement). +- A trivial mechanical edit (per the project's CLAUDE.md + "trivial mechanical edits" carve-out). **Skipping is not permitted** for: @@ -242,24 +242,17 @@ Inline checklist (not a subagent dispatch): change (plus the worked user-facing example for a surface cycle)? A load-bearing change described only in prose is a self-review failure to fix, exactly like a placeholder. -6. **Parse-every-block gate.** If the project profile declares - `spec_validation.parsers`, extract every fenced code block - from the spec. For each block whose fence label has a - `parsers` entry: write the block to a temp file with the - entry's `ext`, run the entry's `cmd` with `{file}` - substituted, and require exit 0. A non-zero exit is a +6. **Parse-every-block gate.** Extract every fenced code block + from the spec and run it through the `spec_validation` gate + defined in `docs/profile-schema.md` (which owns the + parser-invocation protocol, the noted no-parser skip, the + malformed-entry failure, and the no-op when the profile + declares no `spec_validation`). A parse failure here is a self-review failure — the spec inlines code that does not parse against the live tool — fix the spec before proceeding; do not pass the unparsed bytes downstream. Paste the - parse-trace (the Run block and its output) into the - brainstorm chat: a visible trace is what attests the gate - fired, and its absence means the gate was skipped. A block - whose fence label has no `parsers` entry is skipped and the - skip is noted ("no parser for fence label X"); never a silent - pass. A malformed entry (`cmd` without `{file}`, or `ext` / - `cmd` missing) is a profile error to surface, not a skip. If - the profile declares no `spec_validation`, this check is a - documented no-op. + parse-trace into the brainstorm chat: a visible trace attests + the gate fired; its absence means it was skipped. Fix issues inline. No need to re-review — fix and commit. diff --git a/planner/SKILL.md b/planner/SKILL.md index 4824e44..c0e9c53 100644 --- a/planner/SKILL.md +++ b/planner/SKILL.md @@ -36,8 +36,8 @@ May be skipped when: - The work is a bug fix where the RED test from `debug` IS the plan (handoff goes straight to `implement` mini-mode). -- The work is a trivial mechanical edit (one file, ≤30 LOC, - no design judgement). +- The work is a trivial mechanical edit (per the project's + CLAUDE.md "trivial mechanical edits" carve-out). **Never skipped** for a standard iteration within an active cycle. "I know the cycle, plan from memory" is exactly the @@ -221,26 +221,21 @@ Before handing the plan off, run this checklist inline: so "nothing ran" cannot masquerade as "nothing regressed". This is a recurring defect family — scrub every Run step whose assertion lives in a filter string. -9. **Parse-the-bytes-you-inline gate.** If the project profile - declares `spec_validation.parsers`, every verbatim code body - the plan inlines into a task step whose fence label has a - `parsers` entry must be parsed clean against the live tool - before hand-off. For each such block: write it to a temp file - with the entry's `ext`, run the entry's `cmd` with `{file}` - substituted, require exit 0. A non-zero exit is a plan failure - — the plan would hand the implementer bytes that do not parse, - the last defensive line before dispatch — fix the plan, do not - hand off. The parse-trace goes into the planner's self-review - activity (the session) as the attestation the gate fired. The - target is the surface-language snippets the plan lifts verbatim - (example programs, fixtures); the project's source-language - test / implementation bodies are NOT the target — the - `implement` compile gate catches those. A block whose fence - label has no entry is skipped and the skip noted ("no parser - for fence label X"); never a silent pass. A malformed entry - (`cmd` without `{file}`, or `ext` / `cmd` missing) is a profile - error to surface, not a skip. If the profile declares no - `spec_validation`, this check is a documented no-op. +9. **Parse-the-bytes-you-inline gate.** Every verbatim code body + the plan inlines into a task step must be run through the + `spec_validation` gate defined in `docs/profile-schema.md` + (which owns the parser-invocation protocol, the noted + no-parser skip, the malformed-entry failure, and the no-op + when the profile declares no `spec_validation`) before + hand-off. The target is the surface-language snippets the plan + lifts verbatim (example programs, fixtures); the project's + source-language test / implementation bodies are NOT the + target — the `implement` compile gate catches those. A parse + failure is a plan failure — the plan would hand the + implementer bytes that do not parse, the last defensive line + before dispatch — fix the plan, do not hand off. The + parse-trace goes into the planner's self-review activity (the + session) as the attestation the gate fired. Fix issues inline.