diff --git a/.agents/skills/gstack-plan-ceo-review/SKILL.md b/.agents/skills/gstack-plan-ceo-review/SKILL.md index 999a6942..55246900 100644 --- a/.agents/skills/gstack-plan-ceo-review/SKILL.md +++ b/.agents/skills/gstack-plan-ceo-review/SKILL.md @@ -339,6 +339,21 @@ DESIGN=$(ls -t ~/.gstack/projects/$SLUG/*-$BRANCH-design-*.md 2>/dev/null | head ``` 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. +**Handoff note check** (reuses $SLUG and $BRANCH from the design doc check above): +```bash +HANDOFF=$(ls -t ~/.gstack/projects/$SLUG/*-$BRANCH-ceo-handoff-*.md 2>/dev/null | head -1) +[ -n "$HANDOFF" ] && echo "HANDOFF_FOUND: $HANDOFF" || echo "NO_HANDOFF" +``` +If this block runs in a separate shell from the design doc check, recompute $SLUG and $BRANCH first using the same commands from that block. +If a handoff note is found: read it. This contains system audit findings and discussion +from a prior CEO review session that paused so the user could run `/office-hours`. Use it +as additional context alongside the design doc. The handoff note helps you avoid re-asking +questions the user already answered. Do NOT skip any steps — run the full review, but use +the handoff note to inform your analysis and avoid redundant questions. + +Tell the user: "Found a handoff note from your prior CEO review session. I'll use that +context to pick up where we left off." + ## Prerequisite Skill Offer When the design doc check above prints "No design doc found," offer the prerequisite @@ -358,6 +373,39 @@ Options: If they skip: "No worries — standard review. If you ever want sharper input, try /office-hours first next time." Then proceed normally. Do not re-offer later in the session. +**Handoff note save (BENEFITS_FROM):** If the user chose A (run /office-hours first), +save a handoff context note before they leave. Reuse $SLUG and $BRANCH from the +design doc check block above (they use the same `remote-slug || basename` fallback +that handles repos without an origin remote). Then run: +```bash +mkdir -p ~/.gstack/projects/$SLUG +USER=$(whoami) +DATETIME=$(date +%Y%m%d-%H%M%S) +``` +Write to `~/.gstack/projects/$SLUG/$USER-$BRANCH-ceo-handoff-$DATETIME.md`: +```markdown +# CEO Review Handoff Note + +Generated by /plan-ceo-review on {date} +Branch: {branch} +Repo: {owner/repo} + +## Why I paused +User chose to run /office-hours first (no design doc found). + +## System Audit Summary +{Summarize what the system audit found — recent git history, diff scope, +CLAUDE.md key points, TODOS.md relevant items, known pain points} + +## Discussion So Far +{Empty — handoff happened before Step 0. Frontend/UI scope detection has not +run yet — it will be assessed when the review resumes.} +``` + +Tell the user: "Context saved. Run /office-hours in another window. When you come back +and invoke /plan-ceo-review, I'll pick up the context automatically — including the +design doc /office-hours produces." + **Mid-session detection:** During Step 0A (Premise Challenge), if the user can't articulate the problem, keeps changing the problem statement, answers with "I'm not sure," or is clearly exploring rather than reviewing — offer `/office-hours`: @@ -370,6 +418,15 @@ sure," or is clearly exploring rather than reviewing — offer `/office-hours`: Options: A) Yes, run /office-hours first. B) No, keep going. If they keep going, proceed normally — no guilt, no re-asking. +**Handoff note save (mid-session):** If the user chose A (run /office-hours first from +mid-session detection), save a handoff context note with the same format above, but +include any Step 0A progress in the "Discussion So Far" section — premises discussed, +problem framing attempts, user answers so far. Use the same bash block to generate the +file path. + +Tell the user: "Context saved with your discussion so far. Run /office-hours, then +come back to /plan-ceo-review." + When reading TODOS.md, specifically: * Note any TODOs this plan touches, blocks, or unlocks * Check if deferred work from prior reviews relates to this plan @@ -957,6 +1014,16 @@ List every ASCII diagram in files this plan touches. Still accurate? ### Unresolved Decisions If any AskUserQuestion goes unanswered, note it here. Never silently default. +## Handoff Note Cleanup + +After producing the Completion Summary, clean up any handoff notes for this branch — +the review is complete and the context is no longer needed. + +```bash +source <(~/.codex/skills/gstack/bin/gstack-slug 2>/dev/null) +rm -f ~/.gstack/projects/$SLUG/*-$BRANCH-ceo-handoff-*.md 2>/dev/null || true +``` + ## Review Log After producing the Completion Summary above, persist the review result. diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c9fe9d5..46656b2f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## [0.9.5.0] - 2026-03-20 — Test Coverage Catalog + See Something, Say Something +## [0.9.5.0] - 2026-03-21 — Test Coverage Catalog + See Something, Say Something ### Added @@ -13,6 +13,7 @@ - **Pre-existing test failures no longer block shipping.** When `/ship` hits a test failure that wasn't caused by your branch, gstack classifies it (in-branch vs pre-existing) and offers options: fix now, add as P0 TODO, assign to the author, or skip. Only in-branch failures block the workflow. - **`bin/gstack-repo-mode` detects solo vs collaborative repos.** Uses 90-day git history with an 80% threshold, 7-day cache, and config override (`gstack-config set repo_mode solo`). Every skill's preamble now outputs `REPO_MODE`. - **"See Something, Say Something" is now a universal principle.** Every gstack skill notices issues outside your branch — deprecation warnings, dead code, env problems — and flags them. In solo mode, it offers to fix. In collaborative mode, it flags and moves on. +- **CEO review saves context when handing off to `/office-hours`.** When `/plan-ceo-review` suggests running `/office-hours` first, it now saves a handoff note with your system audit findings and any discussion so far. When you come back and re-invoke `/plan-ceo-review`, it picks up that context automatically — no more starting from scratch. ### Fixed diff --git a/plan-ceo-review/SKILL.md b/plan-ceo-review/SKILL.md index cb69be06..8f53877b 100644 --- a/plan-ceo-review/SKILL.md +++ b/plan-ceo-review/SKILL.md @@ -347,6 +347,21 @@ DESIGN=$(ls -t ~/.gstack/projects/$SLUG/*-$BRANCH-design-*.md 2>/dev/null | head ``` 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. +**Handoff note check** (reuses $SLUG and $BRANCH from the design doc check above): +```bash +HANDOFF=$(ls -t ~/.gstack/projects/$SLUG/*-$BRANCH-ceo-handoff-*.md 2>/dev/null | head -1) +[ -n "$HANDOFF" ] && echo "HANDOFF_FOUND: $HANDOFF" || echo "NO_HANDOFF" +``` +If this block runs in a separate shell from the design doc check, recompute $SLUG and $BRANCH first using the same commands from that block. +If a handoff note is found: read it. This contains system audit findings and discussion +from a prior CEO review session that paused so the user could run `/office-hours`. Use it +as additional context alongside the design doc. The handoff note helps you avoid re-asking +questions the user already answered. Do NOT skip any steps — run the full review, but use +the handoff note to inform your analysis and avoid redundant questions. + +Tell the user: "Found a handoff note from your prior CEO review session. I'll use that +context to pick up where we left off." + ## Prerequisite Skill Offer When the design doc check above prints "No design doc found," offer the prerequisite @@ -366,6 +381,39 @@ Options: If they skip: "No worries — standard review. If you ever want sharper input, try /office-hours first next time." Then proceed normally. Do not re-offer later in the session. +**Handoff note save (BENEFITS_FROM):** If the user chose A (run /office-hours first), +save a handoff context note before they leave. Reuse $SLUG and $BRANCH from the +design doc check block above (they use the same `remote-slug || basename` fallback +that handles repos without an origin remote). Then run: +```bash +mkdir -p ~/.gstack/projects/$SLUG +USER=$(whoami) +DATETIME=$(date +%Y%m%d-%H%M%S) +``` +Write to `~/.gstack/projects/$SLUG/$USER-$BRANCH-ceo-handoff-$DATETIME.md`: +```markdown +# CEO Review Handoff Note + +Generated by /plan-ceo-review on {date} +Branch: {branch} +Repo: {owner/repo} + +## Why I paused +User chose to run /office-hours first (no design doc found). + +## System Audit Summary +{Summarize what the system audit found — recent git history, diff scope, +CLAUDE.md key points, TODOS.md relevant items, known pain points} + +## Discussion So Far +{Empty — handoff happened before Step 0. Frontend/UI scope detection has not +run yet — it will be assessed when the review resumes.} +``` + +Tell the user: "Context saved. Run /office-hours in another window. When you come back +and invoke /plan-ceo-review, I'll pick up the context automatically — including the +design doc /office-hours produces." + **Mid-session detection:** During Step 0A (Premise Challenge), if the user can't articulate the problem, keeps changing the problem statement, answers with "I'm not sure," or is clearly exploring rather than reviewing — offer `/office-hours`: @@ -378,6 +426,15 @@ sure," or is clearly exploring rather than reviewing — offer `/office-hours`: Options: A) Yes, run /office-hours first. B) No, keep going. If they keep going, proceed normally — no guilt, no re-asking. +**Handoff note save (mid-session):** If the user chose A (run /office-hours first from +mid-session detection), save a handoff context note with the same format above, but +include any Step 0A progress in the "Discussion So Far" section — premises discussed, +problem framing attempts, user answers so far. Use the same bash block to generate the +file path. + +Tell the user: "Context saved with your discussion so far. Run /office-hours, then +come back to /plan-ceo-review." + When reading TODOS.md, specifically: * Note any TODOs this plan touches, blocks, or unlocks * Check if deferred work from prior reviews relates to this plan @@ -965,6 +1022,16 @@ List every ASCII diagram in files this plan touches. Still accurate? ### Unresolved Decisions If any AskUserQuestion goes unanswered, note it here. Never silently default. +## Handoff Note Cleanup + +After producing the Completion Summary, clean up any handoff notes for this branch — +the review is complete and the context is no longer needed. + +```bash +source <(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null) +rm -f ~/.gstack/projects/$SLUG/*-$BRANCH-ceo-handoff-*.md 2>/dev/null || true +``` + ## Review Log After producing the Completion Summary above, persist the review result. diff --git a/plan-ceo-review/SKILL.md.tmpl b/plan-ceo-review/SKILL.md.tmpl index 8dce40eb..fea6879c 100644 --- a/plan-ceo-review/SKILL.md.tmpl +++ b/plan-ceo-review/SKILL.md.tmpl @@ -111,8 +111,56 @@ DESIGN=$(ls -t ~/.gstack/projects/$SLUG/*-$BRANCH-design-*.md 2>/dev/null | head ``` 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. +**Handoff note check** (reuses $SLUG and $BRANCH from the design doc check above): +```bash +HANDOFF=$(ls -t ~/.gstack/projects/$SLUG/*-$BRANCH-ceo-handoff-*.md 2>/dev/null | head -1) +[ -n "$HANDOFF" ] && echo "HANDOFF_FOUND: $HANDOFF" || echo "NO_HANDOFF" +``` +If this block runs in a separate shell from the design doc check, recompute $SLUG and $BRANCH first using the same commands from that block. +If a handoff note is found: read it. This contains system audit findings and discussion +from a prior CEO review session that paused so the user could run `/office-hours`. Use it +as additional context alongside the design doc. The handoff note helps you avoid re-asking +questions the user already answered. Do NOT skip any steps — run the full review, but use +the handoff note to inform your analysis and avoid redundant questions. + +Tell the user: "Found a handoff note from your prior CEO review session. I'll use that +context to pick up where we left off." + {{BENEFITS_FROM}} +**Handoff note save (BENEFITS_FROM):** If the user chose A (run /office-hours first), +save a handoff context note before they leave. Reuse $SLUG and $BRANCH from the +design doc check block above (they use the same `remote-slug || basename` fallback +that handles repos without an origin remote). Then run: +```bash +mkdir -p ~/.gstack/projects/$SLUG +USER=$(whoami) +DATETIME=$(date +%Y%m%d-%H%M%S) +``` +Write to `~/.gstack/projects/$SLUG/$USER-$BRANCH-ceo-handoff-$DATETIME.md`: +```markdown +# CEO Review Handoff Note + +Generated by /plan-ceo-review on {date} +Branch: {branch} +Repo: {owner/repo} + +## Why I paused +User chose to run /office-hours first (no design doc found). + +## System Audit Summary +{Summarize what the system audit found — recent git history, diff scope, +CLAUDE.md key points, TODOS.md relevant items, known pain points} + +## Discussion So Far +{Empty — handoff happened before Step 0. Frontend/UI scope detection has not +run yet — it will be assessed when the review resumes.} +``` + +Tell the user: "Context saved. Run /office-hours in another window. When you come back +and invoke /plan-ceo-review, I'll pick up the context automatically — including the +design doc /office-hours produces." + **Mid-session detection:** During Step 0A (Premise Challenge), if the user can't articulate the problem, keeps changing the problem statement, answers with "I'm not sure," or is clearly exploring rather than reviewing — offer `/office-hours`: @@ -125,6 +173,15 @@ sure," or is clearly exploring rather than reviewing — offer `/office-hours`: Options: A) Yes, run /office-hours first. B) No, keep going. If they keep going, proceed normally — no guilt, no re-asking. +**Handoff note save (mid-session):** If the user chose A (run /office-hours first from +mid-session detection), save a handoff context note with the same format above, but +include any Step 0A progress in the "Discussion So Far" section — premises discussed, +problem framing attempts, user answers so far. Use the same bash block to generate the +file path. + +Tell the user: "Context saved with your discussion so far. Run /office-hours, then +come back to /plan-ceo-review." + When reading TODOS.md, specifically: * Note any TODOs this plan touches, blocks, or unlocks * Check if deferred work from prior reviews relates to this plan @@ -652,6 +709,16 @@ List every ASCII diagram in files this plan touches. Still accurate? ### Unresolved Decisions If any AskUserQuestion goes unanswered, note it here. Never silently default. +## Handoff Note Cleanup + +After producing the Completion Summary, clean up any handoff notes for this branch — +the review is complete and the context is no longer needed. + +```bash +source <(~/.claude/skills/gstack/bin/gstack-slug 2>/dev/null) +rm -f ~/.gstack/projects/$SLUG/*-$BRANCH-ceo-handoff-*.md 2>/dev/null || true +``` + ## Review Log After producing the Completion Summary above, persist the review result.