From efa519b8811db22df7e8d396d2b2dd68312fafc0 Mon Sep 17 00:00:00 2001 From: Garry Tan Date: Tue, 17 Mar 2026 05:50:04 -0700 Subject: [PATCH] =?UTF-8?q?chore:=20rename=20/brainstorm=20=E2=86=92=20/of?= =?UTF-8?q?fice-hours=20across=20references?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update CHANGELOG, CLAUDE.md, TODOS, design-consultation, plan-ceo-review, and gen-skill-docs to reference the new office-hours skill name. Co-Authored-By: Claude Opus 4.6 (1M context) --- CHANGELOG.md | 10 +++++----- CLAUDE.md | 2 +- TODOS.md | 4 ++-- design-consultation/SKILL.md | 12 ++++++------ design-consultation/SKILL.md.tmpl | 12 ++++++------ {brainstorm => office-hours}/SKILL.md | 0 {brainstorm => office-hours}/SKILL.md.tmpl | 0 plan-ceo-review/SKILL.md | 2 +- plan-ceo-review/SKILL.md.tmpl | 2 +- scripts/gen-skill-docs.ts | 2 +- 10 files changed, 23 insertions(+), 23 deletions(-) rename {brainstorm => office-hours}/SKILL.md (100%) rename {brainstorm => office-hours}/SKILL.md.tmpl (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 939d3b95..14bf1c2e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,21 +3,21 @@ ## 0.6.0 — 2026-03-16 ### Added -- **New `/brainstorm` skill — think before you build.** Socratic design exploration that runs before planning. Asks clarifying questions one at a time, challenges your premises, forces you to consider 2-3 implementation approaches, then writes a design doc. The design doc feeds directly into `/plan-ceo-review` and `/plan-eng-review`. You can now do `brainstorm → plan → implement → review → QA → ship → retro` — the full lifecycle. +- **New `/office-hours` skill — think before you build.** YC-style office hours that run before planning. Asks clarifying questions one at a time, challenges your premises, forces you to consider 2-3 implementation approaches, then writes a design doc. The design doc feeds directly into `/plan-ceo-review` and `/plan-eng-review`. You can now do `office-hours → plan → implement → review → QA → ship → retro` — the full lifecycle. - **New `/debug` skill — find the root cause, not the symptom.** Systematic debugging with an Iron Law: no fixes without root cause investigation first. Traces data flow, matches against known bug patterns, tests hypotheses one at a time. If 3 fixes fail, it stops and questions the architecture instead of thrashing. - **Every skill now knows when to stop.** New escalation protocol across all skills: DONE, DONE_WITH_CONCERNS, BLOCKED, NEEDS_CONTEXT. "It is always OK to stop and say 'this is too hard for me.' Bad work is worse than no work." - **/ship now re-verifies before pushing.** New verification gate (Step 6.5): if code changed during review fixes, tests must pass again before push. No more "should work now" — run it and prove it. - **/review now catches scope drift.** Before reviewing code quality, Step 1.5 compares the diff against TODOS.md and commit messages. Flags files changed that weren't in the plan, and requirements that weren't addressed in the diff. - **/review now cites evidence for every claim.** "This pattern is safe" requires a line reference. "Tests cover this" requires a test name. No more "probably handled." - **/plan-ceo-review now forces you to consider alternatives.** Step 0C-bis requires 2-3 implementation approaches before mode selection — one minimal, one ideal. You pick the approach, then the review runs against it. -- **Design docs flow downstream automatically.** `/brainstorm` writes design docs to `~/.gstack/projects/`. `/plan-ceo-review` and `/plan-eng-review` discover and read them during their pre-review audits. Branch-filtered lookup with fallback. -- **Design lineage tracking.** Brainstorm the same feature twice? The second design doc links to the first via a `Supersedes:` field. Trace how your design evolved. +- **Design docs flow downstream automatically.** `/office-hours` writes design docs to `~/.gstack/projects/`. `/plan-ceo-review` and `/plan-eng-review` discover and read them during their pre-review audits. Branch-filtered lookup with fallback. +- **Design lineage tracking.** Run office hours on the same feature twice? The second design doc links to the first via a `Supersedes:` field. Trace how your design evolved. ### Fixed -- Branch names with `/` (like `garrytan/better-process`) no longer break artifact filenames. Fixed in `/brainstorm` and `/plan-eng-review` test plan artifacts. +- Branch names with `/` (like `garrytan/better-process`) no longer break artifact filenames. Fixed in `/office-hours` and `/plan-eng-review` test plan artifacts. ### For contributors -- New structural tests for `/brainstorm` (Phase headers, Design Doc, Supersedes, Smart-skip) and `/debug` (Iron Law, Root Cause, Pattern Analysis, Hypothesis, DEBUG REPORT, 3-strike). +- New structural tests for `/office-hours` (Phase headers, Design Doc, Supersedes, Smart-skip) and `/debug` (Iron Law, Root Cause, Pattern Analysis, Hypothesis, DEBUG REPORT, 3-strike). - Escalation protocol assertions added to all preamble skills (DONE_WITH_CONCERNS, BLOCKED, NEEDS_CONTEXT). - Two new TODOs: design docs → Supabase team store sync (P2), /plan-design-review skill (P2). diff --git a/CLAUDE.md b/CLAUDE.md index 1b3ed112..42f632c8 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -49,7 +49,7 @@ gstack/ ├── review/ # PR review skill ├── plan-ceo-review/ # /plan-ceo-review skill ├── plan-eng-review/ # /plan-eng-review skill -├── brainstorm/ # /brainstorm skill (Socratic design exploration) +├── office-hours/ # /office-hours skill (YC-style design exploration) ├── debug/ # /debug skill (systematic root-cause debugging) ├── retro/ # Retrospective skill ├── document-release/ # /document-release skill (post-ship doc updates) diff --git a/TODOS.md b/TODOS.md index 7eac1e58..f293e706 100644 --- a/TODOS.md +++ b/TODOS.md @@ -374,7 +374,7 @@ **Priority:** P3 **Depends on:** Ref staleness Parts 1+2 (shipped) -## Brainstorm / Design +## Office Hours / Design ### Design docs → Supabase team store sync @@ -382,7 +382,7 @@ **Why:** Cross-team design discovery at scale. Local `~/.gstack/projects/$SLUG/` keyword-grep discovery works for same-machine users now, but Supabase sync makes it work across the whole team. Duplicate ideas surface, everyone sees what's been explored. -**Context:** /brainstorm writes design docs to `~/.gstack/projects/$SLUG/`. The team store already syncs test plans, retro snapshots, QA reports. Design docs follow the same pattern — just add a sync adapter. +**Context:** /office-hours writes design docs to `~/.gstack/projects/$SLUG/`. The team store already syncs test plans, retro snapshots, QA reports. Design docs follow the same pattern — just add a sync adapter. **Effort:** S **Priority:** P2 diff --git a/design-consultation/SKILL.md b/design-consultation/SKILL.md index 47f48558..66826978 100644 --- a/design-consultation/SKILL.md +++ b/design-consultation/SKILL.md @@ -136,17 +136,17 @@ cat package.json 2>/dev/null | head -20 ls src/ app/ pages/ components/ 2>/dev/null | head -30 ``` -Look for brainstorm output: +Look for office-hours output: ```bash SLUG=$(git remote get-url origin 2>/dev/null | sed 's|.*[:/]\([^/]*/[^/]*\)\.git$|\1|;s|.*[:/]\([^/]*/[^/]*\)$|\1|' | tr '/' '-') -ls ~/.gstack/projects/$SLUG/*brainstorm* 2>/dev/null | head -5 -ls .context/*brainstorm* .context/attachments/*brainstorm* 2>/dev/null | head -5 +ls ~/.gstack/projects/$SLUG/*office-hours* 2>/dev/null | head -5 +ls .context/*office-hours* .context/attachments/*office-hours* 2>/dev/null | head -5 ``` -If brainstorm output exists, read it — the product context is pre-filled. +If office-hours output exists, read it — the product context is pre-filled. -If the codebase is empty and purpose is unclear, say: *"I don't have a clear picture of what you're building yet. Want to brainstorm first with `/brainstorm`? Once we know the product direction, we can set up the design system."* +If the codebase is empty and purpose is unclear, say: *"I don't have a clear picture of what you're building yet. Want to explore first with `/office-hours`? Once we know the product direction, we can set up the design system."* --- @@ -160,7 +160,7 @@ Ask the user a single question that covers everything you need to know. Pre-fill 3. "Want me to research what top products in your space are doing for design, or should I work from my design knowledge?" 4. **Explicitly say:** "At any point you can just drop into chat and we'll talk through anything — this isn't a rigid form, it's a conversation." -If the README or brainstorm gives you enough context, pre-fill and confirm: *"From what I can see, this is [X] for [Y] in the [Z] space. Sound right? And would you like me to research competitors, or should I work from what I know?"* +If the README or office-hours output gives you enough context, pre-fill and confirm: *"From what I can see, this is [X] for [Y] in the [Z] space. Sound right? And would you like me to research competitors, or should I work from what I know?"* --- diff --git a/design-consultation/SKILL.md.tmpl b/design-consultation/SKILL.md.tmpl index 11d868fa..68ea9d28 100644 --- a/design-consultation/SKILL.md.tmpl +++ b/design-consultation/SKILL.md.tmpl @@ -46,17 +46,17 @@ cat package.json 2>/dev/null | head -20 ls src/ app/ pages/ components/ 2>/dev/null | head -30 ``` -Look for brainstorm output: +Look for office-hours output: ```bash SLUG=$(git remote get-url origin 2>/dev/null | sed 's|.*[:/]\([^/]*/[^/]*\)\.git$|\1|;s|.*[:/]\([^/]*/[^/]*\)$|\1|' | tr '/' '-') -ls ~/.gstack/projects/$SLUG/*brainstorm* 2>/dev/null | head -5 -ls .context/*brainstorm* .context/attachments/*brainstorm* 2>/dev/null | head -5 +ls ~/.gstack/projects/$SLUG/*office-hours* 2>/dev/null | head -5 +ls .context/*office-hours* .context/attachments/*office-hours* 2>/dev/null | head -5 ``` -If brainstorm output exists, read it — the product context is pre-filled. +If office-hours output exists, read it — the product context is pre-filled. -If the codebase is empty and purpose is unclear, say: *"I don't have a clear picture of what you're building yet. Want to brainstorm first with `/brainstorm`? Once we know the product direction, we can set up the design system."* +If the codebase is empty and purpose is unclear, say: *"I don't have a clear picture of what you're building yet. Want to explore first with `/office-hours`? Once we know the product direction, we can set up the design system."* --- @@ -70,7 +70,7 @@ Ask the user a single question that covers everything you need to know. Pre-fill 3. "Want me to research what top products in your space are doing for design, or should I work from my design knowledge?" 4. **Explicitly say:** "At any point you can just drop into chat and we'll talk through anything — this isn't a rigid form, it's a conversation." -If the README or brainstorm gives you enough context, pre-fill and confirm: *"From what I can see, this is [X] for [Y] in the [Z] space. Sound right? And would you like me to research competitors, or should I work from what I know?"* +If the README or office-hours output gives you enough context, pre-fill and confirm: *"From what I can see, this is [X] for [Y] in the [Z] space. Sound right? And would you like me to research competitors, or should I work from what I know?"* --- diff --git a/brainstorm/SKILL.md b/office-hours/SKILL.md similarity index 100% rename from brainstorm/SKILL.md rename to office-hours/SKILL.md diff --git a/brainstorm/SKILL.md.tmpl b/office-hours/SKILL.md.tmpl similarity index 100% rename from brainstorm/SKILL.md.tmpl rename to office-hours/SKILL.md.tmpl diff --git a/plan-ceo-review/SKILL.md b/plan-ceo-review/SKILL.md index dc1de1ce..f0d4b9b5 100644 --- a/plan-ceo-review/SKILL.md +++ b/plan-ceo-review/SKILL.md @@ -184,7 +184,7 @@ DESIGN=$(ls -t ~/.gstack/projects/$SLUG/*-$BRANCH-design-*.md 2>/dev/null | head [ -z "$DESIGN" ] && DESIGN=$(ls -t ~/.gstack/projects/$SLUG/*-design-*.md 2>/dev/null | head -1) [ -n "$DESIGN" ] && echo "Design doc found: $DESIGN" || echo "No design doc found" ``` -If a design doc exists (from `/brainstorm`), read it. Use it as the source of truth for the problem statement, constraints, and chosen approach. If it has a `Supersedes:` field, note that this is a revised design. +If a design doc exists (from `/office-hours`), read it. Use it as the source of truth for the problem statement, constraints, and chosen approach. If it has a `Supersedes:` field, note that this is a revised design. When reading TODOS.md, specifically: * Note any TODOs this plan touches, blocks, or unlocks diff --git a/plan-ceo-review/SKILL.md.tmpl b/plan-ceo-review/SKILL.md.tmpl index 5ac18876..6876f538 100644 --- a/plan-ceo-review/SKILL.md.tmpl +++ b/plan-ceo-review/SKILL.md.tmpl @@ -77,7 +77,7 @@ DESIGN=$(ls -t ~/.gstack/projects/$SLUG/*-$BRANCH-design-*.md 2>/dev/null | head [ -z "$DESIGN" ] && DESIGN=$(ls -t ~/.gstack/projects/$SLUG/*-design-*.md 2>/dev/null | head -1) [ -n "$DESIGN" ] && echo "Design doc found: $DESIGN" || echo "No design doc found" ``` -If a design doc exists (from `/brainstorm`), read it. Use it as the source of truth for the problem statement, constraints, and chosen approach. If it has a `Supersedes:` field, note that this is a revised design. +If a design doc exists (from `/office-hours`), read it. Use it as the source of truth for the problem statement, constraints, and chosen approach. If it has a `Supersedes:` field, note that this is a revised design. When reading TODOS.md, specifically: * Note any TODOs this plan touches, blocks, or unlocks diff --git a/scripts/gen-skill-docs.ts b/scripts/gen-skill-docs.ts index 165f40be..7aa24a13 100644 --- a/scripts/gen-skill-docs.ts +++ b/scripts/gen-skill-docs.ts @@ -897,7 +897,7 @@ function findTemplates(): string[] { path.join(ROOT, 'plan-ceo-review', 'SKILL.md.tmpl'), path.join(ROOT, 'plan-eng-review', 'SKILL.md.tmpl'), path.join(ROOT, 'retro', 'SKILL.md.tmpl'), - path.join(ROOT, 'brainstorm', 'SKILL.md.tmpl'), + path.join(ROOT, 'office-hours', 'SKILL.md.tmpl'), path.join(ROOT, 'debug', 'SKILL.md.tmpl'), path.join(ROOT, 'gstack-upgrade', 'SKILL.md.tmpl'), path.join(ROOT, 'plan-design-review', 'SKILL.md.tmpl'),