From deb80ddecc20e31544bbf49f711b770ed54bfa1d Mon Sep 17 00:00:00 2001 From: Garry Tan Date: Tue, 11 Aug 2026 17:57:08 -0700 Subject: [PATCH] fix(autoplan): skip the scope gate when following loaded review skills MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit autoplan Step 3 reads plan-eng-review / plan-design-review SKILL.md verbatim, and its section skip list omitted the scope gate — so autoplan ingested a hard-STOP AskUserQuestion that contradicts its every-question-auto-decides contract. One skip-list line fixes it; a static toContain pin in skill-validation keeps the entry load-bearing. Co-Authored-By: Claude Fable 5 --- autoplan/SKILL.md | 1 + autoplan/SKILL.md.tmpl | 1 + test/skill-validation.test.ts | 9 +++++++++ 3 files changed, 11 insertions(+) diff --git a/autoplan/SKILL.md b/autoplan/SKILL.md index a8e480914..35d4f7355 100644 --- a/autoplan/SKILL.md +++ b/autoplan/SKILL.md @@ -1079,6 +1079,7 @@ Read each file using the Read tool: **Section skip list — when following a loaded skill file, SKIP these sections (they are already handled by /autoplan):** - Preamble (run first) +- Scope gate (the plan under review is already the target) - AskUserQuestion Format - Completeness Principle — Boil the Ocean - Search Before Building diff --git a/autoplan/SKILL.md.tmpl b/autoplan/SKILL.md.tmpl index b2eaca9fd..0f054dacf 100644 --- a/autoplan/SKILL.md.tmpl +++ b/autoplan/SKILL.md.tmpl @@ -215,6 +215,7 @@ Read each file using the Read tool: **Section skip list — when following a loaded skill file, SKIP these sections (they are already handled by /autoplan):** - Preamble (run first) +- Scope gate (the plan under review is already the target) - AskUserQuestion Format - Completeness Principle — Boil the Ocean - Search Before Building diff --git a/test/skill-validation.test.ts b/test/skill-validation.test.ts index 99d4eb83b..edd45c288 100644 --- a/test/skill-validation.test.ts +++ b/test/skill-validation.test.ts @@ -134,6 +134,15 @@ describe('SKILL.md command validation', () => { const result = validateSkill(skill); expect(result.snapshotFlagErrors).toHaveLength(0); }); + + test('autoplan section skip list includes the scope gate', () => { + // autoplan Step 3 reads plan-eng-review / plan-design-review SKILL.md + // verbatim; without this skip-list entry it ingests their scope gate — a + // hard-STOP AskUserQuestion that contradicts autoplan's auto-decide + // contract. Nothing else pins the skip-list contents. + const md = fs.readFileSync(path.join(ROOT, 'autoplan', 'SKILL.md'), 'utf-8'); + expect(md).toContain('- Scope gate (the plan under review is already the target)'); + }); }); describe('Command registry consistency', () => {