Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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:
.claude/skills/plan-ceo-review/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-11 | ✗→✓ | ▲ Improved | — | — |
| case-08 | ✗→✓ | ▲ Improved | — | — |
| case-12 | ✗→✓ | ▲ Improved | — | — |
| case-16 | ✗→✓ | ▲ Improved | — | — |
| case-09 | ✗→✓ | ▲ Improved | — | — |
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 -20Read 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:
bashREPO=$(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:
markdown--- 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 ← BADSTOP. 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) │ │ │ │ │
└─────────────┴──────────────┴──────────────┴──────────────┴────────────┘| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-11 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-22 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-08 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-14 | pass→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-12 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-10 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-16 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-04 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-03 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-09 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-15 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-06 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-13 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-07 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-18 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-01 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-02 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-05 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
case-17 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-19 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-20 | fail→pass | — | — | — | — | — | — | — | — | — | — | — | — |
case-21 | fail→fail | — | — | — | — | — | — | — | — | — | — | — | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 18 counted toward the lift figure. The other 4 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +59 percentage points is the difference between those two pass rates over the 18 comparable cases. 3 cases got worse with the skill loaded, and they are included in that figure.
The per-case answers from this run were removed by the retention sweep, so the case table below shows the verdicts without the text either arm produced. The counts above were recorded at the time and are unaffected. Answers are now kept for 180 days.
Other measured skills in the registry, with their headline benchmark lift.