Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ Invoke them by name (e.g., `/office-hours`).
|-------|-------------|
| `/office-hours` | Start here. Reframes your product idea before you write code. |
| `/plan-ceo-review` | CEO-level review: find the 10-star product in the request. |
| `/plan-pm-review` | PM-mode review: RICE prioritization, JTBD segmentation, acceptance criteria. |
| `/plan-eng-review` | Lock architecture, data flow, edge cases, and tests. |
| `/plan-design-review` | Rate each design dimension 0-10, explain what a 10 looks like. |
| `/plan-devex-review` | DX-mode review: TTHW, magical moments, friction points, persona traces. |
Expand Down
45 changes: 45 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,50 @@
# Changelog

## [1.44.0.0] - 2026-05-23

## **`/plan-pm-review` ships: RICE prioritization, JTBD segmentation, and acceptance criteria land as the missing PM voice in the review pipeline.**
## **`/autoplan` gains Phase 1.5 between CEO and Eng review — plans with 5+ deliverables, multiple user segments, or TODOS conflicts now get a cut list before architecture commits.**

The plan review pipeline had a gap: the CEO review tells you what to build, the eng review locks in how to build it, but nobody asked who it's for, what to cut, or what "done" actually means. `/plan-pm-review` fills that role.

Three modes, each sharpening the plan before engineering touches it. PRIORITIZE applies RICE scoring (Reach x Impact x Confidence / Effort) to every item and produces a ranked cut list with explicit tradeoffs. SHARPEN turns vague plan items into acceptance criteria and done definitions — a done condition is valid only if a QA engineer can verify it without asking the developer a question. SEGMENT runs JTBD analysis: who is the primary user, what job are they hiring this product to do, what tool are they firing when they switch, and does the plan actually solve the job or just the surface feature. All three modes produce an explicit "NOT in scope" section so deferred items are tracked, not forgotten.

For AI-assisted projects, RICE effort is measured in CC+gstack time (not human-team months), so scores look dramatically different from traditional PM estimates. A task that takes a human team two weeks takes CC thirty minutes. The cut list reflects that.

### The numbers that matter

New skill: `plan-pm-review/` (1464 lines, ~17K tokens — comparable to `/plan-eng-review`).
`/autoplan` Phase 1.5 adds 60 lines to `autoplan/SKILL.md.tmpl` with skip conditions so small plans with a named segment pass through at zero cost.

| Item | Before | After |
|------|--------|-------|
| Plan review voices | CEO + Eng (+Design, +DX conditional) | CEO + PM + Eng (+Design, +DX conditional) |
| RICE scoring in pipeline | Not available | Auto-runs for plans >5 deliverables or multiple segments |
| Acceptance criteria | Manual (user responsibility) | SHARPEN mode produces testable done conditions for every item |
| JTBD analysis | Not available | SEGMENT mode: functional + emotional + social job, firing trigger, success metric |
| `/autoplan` phases | 4 phases (1 CEO + optional Design + Eng + optional DX) | 5 phases (1 CEO + optional PM + optional Design + Eng + optional DX) |

### What this means for builders

Plans that hit `/autoplan` with five or more deliverables now get a PM pass before the architecture is locked. That means cuts are surfaced while they're still cheap (before eng commits to data models and test plans), user segments are named explicitly, and every item has a testable done condition. For smaller plans, Phase 1.5 skips automatically.

To run the PM review standalone: `/plan-pm-review`. To get it inline with the full pipeline: `/autoplan` (Phase 1.5 triggers automatically when warranted).

### Itemized changes

#### Added

- **`plan-pm-review/SKILL.md.tmpl`**: New skill template. Three modes: PRIORITIZE (RICE scorecard + cut list + ranked roadmap + risk-adjusted confidence table), SHARPEN (acceptance criteria format + sharpness audit), SEGMENT (JTBD framework blocks + segment coverage matrix + misalignment flags). Requires explicit scope challenge (five forcing questions) before any mode runs. All modes produce "NOT in scope" and "What already exists" sections. JSONL task emission via `{{TASKS_SECTION_EMIT:pm-review}}` feeds into `/autoplan` aggregation.
- **`plan-pm-review/SKILL.md`**: Generated from the template above.

#### Changed

- **`scripts/resolvers/tasks-section.ts`**: Added `'pm-review'` to `VALID_PHASES` so `{{TASKS_SECTION_EMIT:pm-review}}` resolves without throwing.
- **`autoplan/SKILL.md.tmpl`**: Phase 1.5 (PM Review) inserted between Phase 1 (CEO) and Phase 2 (Design). Skip conditions: plan <= 3 deliverables AND segment already named AND no TODOS conflicts. Run conditions: >5 work items OR multiple user segments OR borderline scope OR TODOS conflicts. Auto-selects mode (PRIORITIZE by default, SEGMENT if personas unclear, SHARPEN if items vague). Updated Pre-Gate Verification checklist, Review Scores summary, and Completion review log section.
- **`autoplan/SKILL.md`**: Regenerated.
- **`AGENTS.md`**: Added `/plan-pm-review` entry.
- **`docs/skills.md`**: Added `/plan-pm-review` table row and full section.

## [1.43.3.0] - 2026-05-21

## **Headed Chromium embedded by external supervisors stops auto-shutting-down after 30 minutes of HTTP idle.**
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.43.3.0
1.44.0.0
61 changes: 59 additions & 2 deletions autoplan/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -1208,18 +1208,60 @@ Sections 1-10 — for EACH section, run the evaluation criteria from the loaded
> Consensus: [X/6 confirmed, Y disagreements → surfaced at gate].
> Passing to Phase 2.

Do NOT begin Phase 2 until all Phase 1 outputs are written to the plan file
Do NOT begin Phase 1.5 until all Phase 1 outputs are written to the plan file
and the premise gate has been passed.

---

**Pre-Phase 2 checklist (verify before starting):**
**Pre-Phase 1.5 checklist (verify before starting):**
- [ ] CEO completion summary written to plan file
- [ ] CEO dual voices ran (Codex + Claude subagent, or noted unavailable)
- [ ] CEO consensus table produced
- [ ] Premise gate passed (user confirmed)
- [ ] Phase-transition summary emitted

## Phase 1.5: PM Review (conditional — run when prioritization or user-segment clarity is needed)

**Skip condition:** Skip Phase 1.5 if ALL of the following are true:
- The plan has 3 or fewer distinct deliverables (no prioritization needed)
- The target user segment is already explicitly named in the CEO review
- No TODOS.md items compete with this plan's scope

If skipping, log: "Phase 1.5 skipped — plan scope is small and segment is already
defined."

**Run condition:** Run Phase 1.5 if ANY of the following is true:
- The CEO review produced more than 5 distinct work items
- The plan touches multiple user segments or personas
- Any CEO review item was classified as "borderline scope"
- TODOS.md exists with items that may conflict or overlap

Follow plan-pm-review/SKILL.md in **PRIORITIZE** mode by default. Switch to
**SEGMENT** mode if the CEO review surfaced user-segment ambiguity, or **SHARPEN**
mode if the CEO review produced vague scope items without acceptance criteria.

**Override rules:**
- Mode selection: auto-select based on what the CEO review revealed (PRIORITIZE
by default; SEGMENT if personas are unclear; SHARPEN if items are vague)
- RICE scoring: use CC+gstack effort estimates, not human-team estimates
- Cut list: P3 items → TODOS.md automatically (P3)
- AskUserQuestion: suppress all except items with Confidence < 50% or where both
CEO and PM scoring conflict — surface those at the Final Gate

**PHASE 1.5 COMPLETE.** Emit phase-transition summary:
> **Phase 1.5 complete.** PM mode: [PRIORITIZE/SEGMENT/SHARPEN]. Items scored: N.
> P1 items: N. P2 items: N. P3 items deferred to TODOS: N.
> Passing to Phase 2.

---

**Pre-Phase 2 checklist (verify before starting):**
- [ ] CEO completion summary written to plan file
- [ ] CEO dual voices ran (Codex + Claude subagent, or noted unavailable)
- [ ] CEO consensus table produced
- [ ] Premise gate passed (user confirmed)
- [ ] Phase 1.5 ran (or skipped with reason logged)

## Phase 2: Design Review (conditional — skip if no UI scope)

Follow plan-design-review/SKILL.md — all 7 dimensions, full depth.
Expand Down Expand Up @@ -1556,6 +1598,15 @@ produced. Check the plan file and conversation for each item.
- [ ] Dual voices ran (Codex + Claude subagent, or noted unavailable)
- [ ] CEO consensus table produced

**Phase 1.5 (PM) outputs — only if ran (not skipped):**
- [ ] Mode selected (PRIORITIZE / SHARPEN / SEGMENT) and logged
- [ ] Scope challenge: primary user named, riskiest assumption identified
- [ ] Mode-specific output produced (RICE table OR acceptance criteria OR JTBD blocks)
- [ ] "NOT in scope" section written
- [ ] "What already exists" section written
- [ ] TODOS cross-reference ran
- [ ] Phase 1.5 ran (or explicitly skipped with reason logged)

**Phase 2 (Design) outputs — only if UI scope detected:**
- [ ] All 7 dimensions evaluated with scores
- [ ] Issues identified and auto-decided
Expand Down Expand Up @@ -1708,6 +1759,7 @@ I recommend [X] — [principle]. But [Y] is also viable:
### Review Scores
- CEO: [summary]
- CEO Voices: Codex [summary], Claude subagent [summary], Consensus [X/6 confirmed]
- PM: [mode run + key finding, or "skipped, plan ≤3 deliverables + segment already named"]
- Design: [summary or "skipped, no UI scope"]
- Design Voices: Codex [summary], Claude subagent [summary], Consensus [X/7 confirmed] (or "skipped")
- Eng: [summary]
Expand Down Expand Up @@ -1766,6 +1818,11 @@ TIMESTAMP=$(date -u +%Y-%m-%dT%H:%M:%SZ)
~/.claude/skills/gstack/bin/gstack-review-log '{"skill":"plan-eng-review","timestamp":"'"$TIMESTAMP"'","status":"STATUS","unresolved":N,"critical_gaps":N,"issues_found":N,"mode":"FULL_REVIEW","via":"autoplan","commit":"'"$COMMIT"'"}'
```

If Phase 1.5 ran (PM scope):
```bash
~/.claude/skills/gstack/bin/gstack-review-log '{"skill":"plan-pm-review","timestamp":"'"$TIMESTAMP"'","status":"STATUS","unresolved":N,"critical_gaps":0,"mode":"MODE","via":"autoplan","commit":"'"$COMMIT"'"}'
```

If Phase 2 ran (UI scope):
```bash
~/.claude/skills/gstack/bin/gstack-review-log '{"skill":"plan-design-review","timestamp":"'"$TIMESTAMP"'","status":"STATUS","unresolved":N,"via":"autoplan","commit":"'"$COMMIT"'"}'
Expand Down
61 changes: 59 additions & 2 deletions autoplan/SKILL.md.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -380,18 +380,60 @@ Sections 1-10 — for EACH section, run the evaluation criteria from the loaded
> Consensus: [X/6 confirmed, Y disagreements → surfaced at gate].
> Passing to Phase 2.

Do NOT begin Phase 2 until all Phase 1 outputs are written to the plan file
Do NOT begin Phase 1.5 until all Phase 1 outputs are written to the plan file
and the premise gate has been passed.

---

**Pre-Phase 2 checklist (verify before starting):**
**Pre-Phase 1.5 checklist (verify before starting):**
- [ ] CEO completion summary written to plan file
- [ ] CEO dual voices ran (Codex + Claude subagent, or noted unavailable)
- [ ] CEO consensus table produced
- [ ] Premise gate passed (user confirmed)
- [ ] Phase-transition summary emitted

## Phase 1.5: PM Review (conditional — run when prioritization or user-segment clarity is needed)

**Skip condition:** Skip Phase 1.5 if ALL of the following are true:
- The plan has 3 or fewer distinct deliverables (no prioritization needed)
- The target user segment is already explicitly named in the CEO review
- No TODOS.md items compete with this plan's scope

If skipping, log: "Phase 1.5 skipped — plan scope is small and segment is already
defined."

**Run condition:** Run Phase 1.5 if ANY of the following is true:
- The CEO review produced more than 5 distinct work items
- The plan touches multiple user segments or personas
- Any CEO review item was classified as "borderline scope"
- TODOS.md exists with items that may conflict or overlap

Follow plan-pm-review/SKILL.md in **PRIORITIZE** mode by default. Switch to
**SEGMENT** mode if the CEO review surfaced user-segment ambiguity, or **SHARPEN**
mode if the CEO review produced vague scope items without acceptance criteria.

**Override rules:**
- Mode selection: auto-select based on what the CEO review revealed (PRIORITIZE
by default; SEGMENT if personas are unclear; SHARPEN if items are vague)
- RICE scoring: use CC+gstack effort estimates, not human-team estimates
- Cut list: P3 items → TODOS.md automatically (P3)
- AskUserQuestion: suppress all except items with Confidence < 50% or where both
CEO and PM scoring conflict — surface those at the Final Gate

**PHASE 1.5 COMPLETE.** Emit phase-transition summary:
> **Phase 1.5 complete.** PM mode: [PRIORITIZE/SEGMENT/SHARPEN]. Items scored: N.
> P1 items: N. P2 items: N. P3 items deferred to TODOS: N.
> Passing to Phase 2.

---

**Pre-Phase 2 checklist (verify before starting):**
- [ ] CEO completion summary written to plan file
- [ ] CEO dual voices ran (Codex + Claude subagent, or noted unavailable)
- [ ] CEO consensus table produced
- [ ] Premise gate passed (user confirmed)
- [ ] Phase 1.5 ran (or skipped with reason logged)

## Phase 2: Design Review (conditional — skip if no UI scope)

Follow plan-design-review/SKILL.md — all 7 dimensions, full depth.
Expand Down Expand Up @@ -728,6 +770,15 @@ produced. Check the plan file and conversation for each item.
- [ ] Dual voices ran (Codex + Claude subagent, or noted unavailable)
- [ ] CEO consensus table produced

**Phase 1.5 (PM) outputs — only if ran (not skipped):**
- [ ] Mode selected (PRIORITIZE / SHARPEN / SEGMENT) and logged
- [ ] Scope challenge: primary user named, riskiest assumption identified
- [ ] Mode-specific output produced (RICE table OR acceptance criteria OR JTBD blocks)
- [ ] "NOT in scope" section written
- [ ] "What already exists" section written
- [ ] TODOS cross-reference ran
- [ ] Phase 1.5 ran (or explicitly skipped with reason logged)

**Phase 2 (Design) outputs — only if UI scope detected:**
- [ ] All 7 dimensions evaluated with scores
- [ ] Issues identified and auto-decided
Expand Down Expand Up @@ -807,6 +858,7 @@ I recommend [X] — [principle]. But [Y] is also viable:
### Review Scores
- CEO: [summary]
- CEO Voices: Codex [summary], Claude subagent [summary], Consensus [X/6 confirmed]
- PM: [mode run + key finding, or "skipped, plan ≤3 deliverables + segment already named"]
- Design: [summary or "skipped, no UI scope"]
- Design Voices: Codex [summary], Claude subagent [summary], Consensus [X/7 confirmed] (or "skipped")
- Eng: [summary]
Expand Down Expand Up @@ -865,6 +917,11 @@ TIMESTAMP=$(date -u +%Y-%m-%dT%H:%M:%SZ)
~/.claude/skills/gstack/bin/gstack-review-log '{"skill":"plan-eng-review","timestamp":"'"$TIMESTAMP"'","status":"STATUS","unresolved":N,"critical_gaps":N,"issues_found":N,"mode":"FULL_REVIEW","via":"autoplan","commit":"'"$COMMIT"'"}'
```

If Phase 1.5 ran (PM scope):
```bash
~/.claude/skills/gstack/bin/gstack-review-log '{"skill":"plan-pm-review","timestamp":"'"$TIMESTAMP"'","status":"STATUS","unresolved":N,"critical_gaps":0,"mode":"MODE","via":"autoplan","commit":"'"$COMMIT"'"}'
```

If Phase 2 ran (UI scope):
```bash
~/.claude/skills/gstack/bin/gstack-review-log '{"skill":"plan-design-review","timestamp":"'"$TIMESTAMP"'","status":"STATUS","unresolved":N,"via":"autoplan","commit":"'"$COMMIT"'"}'
Expand Down
21 changes: 21 additions & 0 deletions docs/skills.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Detailed guides for every gstack skill — philosophy, workflow, and examples.
|-------|----------------|--------------|
| [`/office-hours`](#office-hours) | **YC Office Hours** | Start here. Six forcing questions that reframe your product before you write code. Pushes back on your framing, challenges premises, generates implementation alternatives. Design doc feeds into every downstream skill. |
| [`/plan-ceo-review`](#plan-ceo-review) | **CEO / Founder** | Rethink the problem. Find the 10-star product hiding inside the request. Four modes: Expansion, Selective Expansion, Hold Scope, Reduction. |
| [`/plan-pm-review`](#plan-pm-review) | **Product Manager** | RICE/ICE prioritization, JTBD segmentation, acceptance criteria. Three modes: PRIORITIZE (cut list + ranked roadmap), SHARPEN (testable done conditions), SEGMENT (who is this for and what job does it do). |
| [`/plan-eng-review`](#plan-eng-review) | **Eng Manager** | Lock in architecture, data flow, diagrams, edge cases, and tests. Forces hidden assumptions into the open. |
| [`/plan-design-review`](#plan-design-review) | **Senior Designer** | Interactive plan-mode design review. Rates each dimension 0-10, explains what a 10 looks like, fixes the plan. Works in plan mode. |
| [`/design-consultation`](#design-consultation) | **Design Partner** | Build a complete design system from scratch. Knows the landscape, proposes creative risks, generates realistic product mockups. Design at the heart of all other phases. |
Expand Down Expand Up @@ -171,6 +172,26 @@ Visions and decisions are persisted to `~/.gstack/projects/` so they survive bey

---

## `/plan-pm-review`

This is my **product manager mode**.

After the CEO review has validated direction, I want the plan stress-tested through a PM lens before engineering locks in architecture. Three things tend to go wrong without this step: teams build the wrong thing perfectly, no one writes down what "done" means, and the user segments are never named — so everyone has a different mental model of who they're building for.

`/plan-pm-review` runs one of three modes:

**PRIORITIZE** — Apply RICE scoring (Reach × Impact × Confidence / Effort) to every item. The output is a ranked cut list: what ships, what defers, and what the model recommends cutting. For AI-assisted projects, effort is measured in CC+gstack time (not human-team time), so RICE scores look very different from traditional PM estimates.

**SHARPEN** — Turn vague plan items into acceptance criteria and done definitions. Every item leaves with a testable "done" condition and a user-facing outcome statement. A done condition is valid only if a QA engineer can verify it without asking the developer a question.

**SEGMENT** — JTBD (Jobs to Be Done) pass: who is this for, what job are they hiring it to do, what tool are they firing when they pick this, and whether the plan actually addresses the job or just the surface feature. Produces a segment-to-feature coverage matrix.

All three modes produce a "NOT in scope" section (explicit deferrals) and a "What already exists" section (existing product coverage that prevents feature duplication).

`/plan-pm-review` feeds into `/plan-eng-review` — RICE-scored P1 items make the architecture review much more focused. Vague plans produce vague arch reviews. The full pipeline is: `office-hours → plan-ceo-review → plan-pm-review → plan-eng-review → ship`.

---

## `/plan-eng-review`

This is my **eng manager mode**.
Expand Down
1 change: 1 addition & 0 deletions gstack/llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ Conventions:
- [/plan-design-review](plan-design-review/SKILL.md): Designer's eye plan review — interactive, like CEO and Eng review.
- [/plan-devex-review](plan-devex-review/SKILL.md): Interactive developer experience plan review.
- [/plan-eng-review](plan-eng-review/SKILL.md): Eng manager-mode plan review.
- [/plan-pm-review](plan-pm-review/SKILL.md): Product manager-mode plan review.
- [/plan-tune](plan-tune/SKILL.md): Self-tuning question sensitivity + developer psychographic for gstack (v1: observational).
- [/qa](qa/SKILL.md): Systematically QA test a web application and fix bugs found.
- [/qa-only](qa-only/SKILL.md): Report-only QA testing.
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "gstack",
"version": "1.43.2.0",
"version": "1.44.0.0",
"description": "Garry's Stack — Claude Code skills + fast headless browser. One repo, one install, entire AI engineering workflow.",
"license": "MIT",
"type": "module",
Expand Down
Loading