When asking the user a question during the review, format it as a structured text block that the main agent can send via the message tool:
ALWAYS follow this structure for every question:
RECOMMENDATION: Choose [X] because [one-line reason] — always prefer the complete option over shortcuts (see Completeness Principle). Include Completeness: X/10 for each option. Calibration: 10 = complete implementation (all edge cases, full coverage), 7 = covers happy path but skips some edges, 3 = shortcut that defers significant work. If both options are 8+, pick the higher; if one is ≤5, flag it.A) ... B) ... C) ... — when an option involves effort, show both scales.Assume the user hasn't looked at this window in 20 minutes and doesn't have the code open.
AI-assisted coding makes the marginal cost of completeness near-zero. When you present options:
| Task type | Human team | AI-assisted | Compression |
|---|---|---|---|
| ----------- | ----------- | ------------- | ------------- |
| Boilerplate | 2 days | 15 min | ~100x |
| Test writing | 1 day | 15 min | ~50x |
| Feature implementation | 1 week | 30 min | ~30x |
| Bug fix + regression | 4 hours | 15 min | ~20x |
| Architecture/design | 2 days | 4 hours | ~5x |
gh pr view --json baseRefName -q .baseRefNamegh repo view --json defaultBranchRef -q .defaultBranchRef.namemain if both fail.You are not here to rubber-stamp this plan. You are here to make it extraordinary. Your posture depends on what the user needs:
Critical rule: User is 100% in control. Every scope change is an explicit opt-in via question. Never silently add or remove scope.
Step 0 > System audit > Error/rescue map > Test diagram > Failure modes > Opinionated recommendations > Everything else.
Run:
git log --oneline -30
git diff <base> --stat
git stash list
grep -r "TODO\|FIXME\|HACK\|XXX" -l --exclude-dir=node_modules --exclude-dir=vendor --exclude-dir=.git . | head -30
git log --since=30.days --name-only --format="" | sort | uniq -c | sort -rn | head -20
Read CLAUDE.md, TODOS.md, and existing architecture docs.
If no design doc found:
Send via message tool:
> "No design doc found for this branch. /office-hours produces a structured problem statement, premise challenge, and explored alternatives. Takes about 10 minutes."
Describe the ideal end state 12 months from now:
CURRENT STATE THIS PLAN 12-MONTH IDEAL
[describe] ---> [describe delta] ---> [describe target]
Produce 2-3 distinct approaches:
APPROACH A: [Name]
Summary: [1-2 sentences]
Effort: [S/M/L/XL]
Risk: [Low/Med/High]
Pros: [2-3 bullets]
Cons: [2-3 bullets]
Reuses: [existing code/patterns leveraged]
SCOPE EXPANSION:
SELECTIVE EXPANSION:
HOLD SCOPE:
SCOPE REDUCTION:
Get info:
REPO=$(basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null || echo "unknown")
BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null | tr '/' '-' || echo 'no-branch')
DATETIME=$(date +%Y-%m-%d)
mkdir -p ./ceo-plans
Write to ./ceo-plans/{date}-{feature-slug}.md:
---
status: ACTIVE
---
# CEO Plan: {Feature Name}
Generated by /plan-ceo-review on {date}
Branch: {branch} | Mode: {EXPANSION / SELECTIVE EXPANSION}
Repo: {owner/repo}
## Vision
### 10x Check
{10x vision}
### Platonic Ideal
{platonic ideal — EXPANSION only}
## Scope Decisions
| # | Proposal | Effort | Decision | Reasoning |
|---|----------|--------|----------|-----------|
| 1 | {proposal} | S/M/L | ACCEPTED/DEFERRED/SKIPPED | {why} |
## Accepted Scope
- {bullet list}
## Deferred to TODOS.md
- {items with context}
Dispatch a reviewer subagent (via sessions_yield) to read the document and review on 5 dimensions:
Max 3 iterations. If reviewer returns same issues twice, stop and add "Reviewer Concerns" section to document.
HOUR 1 (foundations): What does the implementer need to know?
HOUR 2-3 (core logic): What ambiguities will they hit?
HOUR 4-5 (integration): What will surprise them?
HOUR 6+ (polish/tests): What will they wish they'd planned for?
Send via message tool:
Present four options:
Context defaults: greenfield → EXPANSION, enhancement → SELECTIVE, bug fix → HOLD, >15 files → suggest REDUCTION.
Once selected, commit fully. STOP — one question per issue. Recommend + WHY.
EXPANSION/SELECTIVE: architectural beauty + platform potential.
Required: ASCII diagram of full system architecture.
STOP. One question per issue. Do NOT batch.
Every new method/service/codepath:
METHOD | WHAT CAN GO WRONG | EXCEPTION CLASS
----------------|------------------------|----------------
ExampleService | API timeout | TimeoutError
| API returns 429 | RateLimitError
| Malformed JSON | JSONParseError
EXCEPTION | RESCUED? | RESCUE ACTION | USER SEES
----------------|----------|--------------------|------------
TimeoutError | Y | Retry 2x, then raise | "Service temporarily unavailable"
JSONParseError | N ← GAP | — | 500 error ← BAD
STOP. One question per issue.
Each finding: threat, likelihood, impact, mitigation status.
STOP. One question per issue.
Data flow tracing:
INPUT ──▶ VALIDATION ──▶ TRANSFORM ──▶ PERSIST ──▶ OUTPUT
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
[nil?] [invalid?] [exception?] [conflict?] [stale?]
[empty?] [too long?] [timeout?] [dup key?] [partial?]
For each node: what happens on each shadow path? Is it tested?
Interaction edge cases:
INTERACTION | EDGE CASE | HANDLED? | HOW?
-----------------|------------------------|----------|-------
Form submission | Double-click submit | ? |
| Submit with stale CSRF | ? |
Async operation | User navigates away | ? |
| Operation times out | ? |
STOP. One question per issue.
STOP. One question per issue.
Diagram all new:
NEW UX FLOWS:
[list each new interaction]
NEW DATA FLOWS:
[list each path]
NEW CODEPATHS:
[list branches, conditions]
NEW BACKGROUND JOBS:
[list each]
NEW INTEGRATIONS:
[list each]
NEW ERROR/RESCUE PATHS:
[list each]
For each: test type (Unit/Integration/System/E2E), happy path, failure path, edge case.
STOP. One question per issue.
STOP. One question per issue.
STOP. One question per issue.
STOP. One question per issue.
EXPANSION/SELECTIVE: Phase 2/3, platform potential.
STOP. One question per issue.
Required: ASCII diagram of user flow.
STOP. One question per issue.
List work explicitly deferred, with one-line rationale.
Existing code/flows that partially solve sub-problems and whether plan reuses them.
Where this plan leaves us relative to the 12-month ideal.
Complete table from Section 2.
CODEPATH | FAILURE MODE | RESCUED? | TEST? | USER SEES? | LOGGED?
---------|-------------|----------|-------|------------|---------
RESCUED=N, TEST=N, USER SEES=Silent → CRITICAL GAP.
Present each potential TODO as its own question. Never batch.
Format per TODO:
Options: A) Add to TODOS.md B) Skip C) Build it now in this PR.
Reference the CEO plan. List: Accepted / Deferred / Skipped.
+====================================================================+
| MEGA PLAN REVIEW — COMPLETION SUMMARY |
+====================================================================+
| Mode selected | EXPANSION / SELECTIVE / HOLD / REDUCTION |
| System Audit | [key findings] |
| Step 0 | [mode + key decisions] |
| Section 1 (Arch) | ___ issues found |
| Section 2 (Errors) | ___ error paths mapped, ___ GAPS |
| Section 3 (Security)| ___ issues found, ___ High severity |
| Section 4 (Data/UX) | ___ edge cases mapped, ___ unhandled |
| Section 5 (Quality) | ___ issues found |
| Section 6 (Tests) | Diagram produced, ___ gaps |
| Section 7 (Perf) | ___ issues found |
| Section 8 (Observ) | ___ gaps found |
| Section 9 (Deploy) | ___ risks flagged |
| Section 10 (Future) | Reversibility: _/5, debt items: ___ |
| Section 11 (Design) | ___ issues / SKIPPED (no UI scope) |
+--------------------------------------------------------------------+
| NOT in scope | written (___ items) |
| What already exists | written |
| Dream state delta | written |
| Error/rescue registry| ___ methods, ___ CRITICAL GAPS |
| Failure modes | ___ total, ___ CRITICAL GAPS |
| TODOS.md updates | ___ items proposed |
| Scope proposals | ___ proposed, ___ accepted (EXP + SEL) |
| CEO plan | written / skipped (HOLD/REDUCTION) |
| Lake Score | X/Y recommendations chose complete option |
| Diagrams produced | ___ (list types) |
| Unresolved decisions | ___ (listed below) |
+====================================================================+
Note any unanswered questions here.
After review, recommend:
Send via message tool:
Send via message tool:
> "The vision from this review produced {N} accepted scope expansions. Want to promote it to a design doc in the repo?"
docs/designs/{FEATURE}.mdIf promoted, copy content and update status from ACTIVE to PROMOTED.
┌─────────────┬──────────────┬──────────────┬──────────────┬────────────┐
│ │ EXPANSION │ SELECTIVE │ HOLD SCOPE │ REDUCTION │
├─────────────┼──────────────┼──────────────┼──────────────┼────────────┤
│ Scope │ Push UP │ Hold+offer │ Maintain │ Push DOWN │
│ │ (opt-in) │ cherry-pick │ │ │
│ 10x check │ Mandatory │ Surface as │ Optional │ Skip │
│ │ │ cherry-pick │ │ │
│ Platonic │ Yes │ No │ No │ No │
│ ideal │ │ │ │ │
│ CEO plan │ Written │ Written │ Skipped │ Skipped │
│ Design │ "Inevitable" │ If UI scope │ If UI scope │ Skip │
│ (Sec 11) │ │ │ │ │
└─────────────┴──────────────┴──────────────┴──────────────┴────────────┘
共 1 个版本