From 15a15d2a0e4586d6bf493d9768e0ac09a70867dd Mon Sep 17 00:00:00 2001 From: Garry Tan Date: Fri, 3 Apr 2026 23:03:36 -0700 Subject: [PATCH] chore: autoplan DX POLISH mode + review log schema for new devex fields Adds mode selection, persona, competitive, and magical moment override rules to autoplan Phase 3.5. Documents new review log fields (mode, persona, competitive_tier) in the plan-file-review-report schema. Syncs package.json version to VERSION. Co-Authored-By: Claude Opus 4.6 (1M context) --- autoplan/SKILL.md | 30 +++++++++++++++++++++++++++++- autoplan/SKILL.md.tmpl | 5 ++++- package.json | 2 +- scripts/resolvers/review.ts | 2 +- 4 files changed, 35 insertions(+), 4 deletions(-) diff --git a/autoplan/SKILL.md b/autoplan/SKILL.md index 6f144f5e..bcfb6224 100644 --- a/autoplan/SKILL.md +++ b/autoplan/SKILL.md @@ -447,6 +447,31 @@ artifacts that inform the plan, not code changes: These are read-only in spirit — they inspect the live site, generate visual artifacts, or get independent opinions. They do NOT modify project source files. +## Skill Invocation During Plan Mode + +If a user invokes a skill during plan mode, that invoked skill workflow takes +precedence over generic plan mode behavior until it finishes or the user explicitly +cancels that skill. + +Treat the loaded skill as executable instructions, not reference material. Follow +it step by step. Do not summarize, skip, reorder, or shortcut its steps. + +If the skill says to use AskUserQuestion, do that. Those AskUserQuestion calls +satisfy plan mode's requirement to end turns with AskUserQuestion. + +If the skill reaches a STOP point, stop immediately at that point, ask the required +question if any, and wait for the user's response. Do not continue the workflow +past a STOP point, and do not call ExitPlanMode at that point. + +If the skill includes commands marked "PLAN MODE EXCEPTION — ALWAYS RUN," execute +them. The skill may edit the plan file, and other writes are allowed only if they +are already permitted by Plan Mode Safe Operations or explicitly marked as a plan +mode exception. + +Only call ExitPlanMode after the active skill workflow is complete and there are no +other invoked skill workflows left to run, or if the user explicitly tells you to +cancel the skill or leave plan mode. + ## Plan Status Footer When you are in plan mode and about to call ExitPlanMode: @@ -1089,7 +1114,10 @@ Override: every AskUserQuestion → auto-decide using the 6 principles. Log: "Phase 3.5 skipped — no developer-facing scope detected." **Override rules:** -- Focus areas: all relevant DX dimensions (P1) +- Mode selection: DX POLISH +- Persona: infer from README/docs, pick the most common developer type (P6) +- Competitive benchmark: run searches if WebSearch available, use reference benchmarks otherwise (P1) +- Magical moment: pick the lowest-effort delivery vehicle that achieves the competitive tier (P5) - Getting started friction: always optimize toward fewer steps (P5, simpler over clever) - Error message quality: always require problem + cause + fix (P1, completeness) - API/CLI naming: consistency wins over cleverness (P5) diff --git a/autoplan/SKILL.md.tmpl b/autoplan/SKILL.md.tmpl index 035311bf..18868a3d 100644 --- a/autoplan/SKILL.md.tmpl +++ b/autoplan/SKILL.md.tmpl @@ -541,7 +541,10 @@ Override: every AskUserQuestion → auto-decide using the 6 principles. Log: "Phase 3.5 skipped — no developer-facing scope detected." **Override rules:** -- Focus areas: all relevant DX dimensions (P1) +- Mode selection: DX POLISH +- Persona: infer from README/docs, pick the most common developer type (P6) +- Competitive benchmark: run searches if WebSearch available, use reference benchmarks otherwise (P1) +- Magical moment: pick the lowest-effort delivery vehicle that achieves the competitive tier (P5) - Getting started friction: always optimize toward fewer steps (P5, simpler over clever) - Error message quality: always require problem + cause + fix (P1, completeness) - API/CLI naming: consistency wins over cleverness (P5) diff --git a/package.json b/package.json index ce4e266e..748116e7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gstack", - "version": "0.15.3.0", + "version": "0.15.4.0", "description": "Garry's Stack — Claude Code skills + fast headless browser. One repo, one install, entire AI engineering workflow.", "license": "MIT", "type": "module", diff --git a/scripts/resolvers/review.ts b/scripts/resolvers/review.ts index fe3a1318..bfe600b6 100644 --- a/scripts/resolvers/review.ts +++ b/scripts/resolvers/review.ts @@ -94,7 +94,7 @@ Parse each JSONL entry. Each skill logs different fields: → Findings: "{issues_found} issues, {critical_gaps} critical gaps" - **plan-design-review**: \\\`status\\\`, \\\`initial_score\\\`, \\\`overall_score\\\`, \\\`unresolved\\\`, \\\`decisions_made\\\`, \\\`commit\\\` → Findings: "score: {initial_score}/10 → {overall_score}/10, {decisions_made} decisions" -- **plan-devex-review**: \\\`status\\\`, \\\`initial_score\\\`, \\\`overall_score\\\`, \\\`product_type\\\`, \\\`tthw_current\\\`, \\\`tthw_target\\\`, \\\`unresolved\\\`, \\\`commit\\\` +- **plan-devex-review**: \\\`status\\\`, \\\`initial_score\\\`, \\\`overall_score\\\`, \\\`product_type\\\`, \\\`tthw_current\\\`, \\\`tthw_target\\\`, \\\`mode\\\`, \\\`persona\\\`, \\\`competitive_tier\\\`, \\\`unresolved\\\`, \\\`commit\\\` → Findings: "score: {initial_score}/10 → {overall_score}/10, TTHW: {tthw_current} → {tthw_target}" - **devex-review**: \\\`status\\\`, \\\`overall_score\\\`, \\\`product_type\\\`, \\\`tthw_measured\\\`, \\\`dimensions_tested\\\`, \\\`dimensions_inferred\\\`, \\\`boomerang\\\`, \\\`commit\\\` → Findings: "score: {overall_score}/10, TTHW: {tthw_measured}, {dimensions_tested} tested/{dimensions_inferred} inferred"