
Ce:Plan
- 383 installs
- 23.9k repo stars
- Updated August 5, 2026
- everyinc/compound-engineering-plugin
ce:plan is a Compound Engineering agent skill that produces structured, implementation-ready technical plans with milestones, file paths, and test scenarios for developers who need HOW-to-build direction before writing c
About
ce:plan is a multi-phase planning workflow from the Compound Engineering plugin that enriches requirements into durable implementation plans without writing code or running tests. It pairs with ce-brainstorm for WHAT-to-build requirements and hands off to ce-work for execution, supporting markdown or HTML output, confidence checks, and optional ce-doc-review. The SKILL.md defines a Phase 0–5 pipeline covering resume/deepen paths, scoping synthesis, repo research, and post-generation handoff menus. Developers reach for ce:plan when breaking epics into ordered, agent-executable tasks, deepening an existing docs/plans artifact, or converting a bug report or feature idea into a portable plan an implementer can start from confidently.
- Compound Engineering–aligned planning
- Milestone and dependency sequencing
- Agent-executable task breakdown
- Bridges brainstorm output to implementation
- Reduces ad-hoc build thrash
Ce:Plan by the numbers
- 383 all-time installs (skills.sh)
- Ranked #818 of 3,282 Productivity & Planning skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/everyinc/compound-engineering-plugin --skill ceplanAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 383 |
|---|---|
| repo stars | ★ 23.9k |
| Last updated | August 5, 2026 |
| Repository | everyinc/compound-engineering-plugin ↗ |
How do you turn requirements into agent-ready implementation plans?
Break epics into ordered implementation plans, milestones, and agent-executable tasks aligned with Compound Engineering delivery practices before coding begins.
Who is it for?
Developers using Compound Engineering who need a structured, reviewable plan artifact before agents or engineers start implementation.
Skip if: Developers who already need code changes, test runs, or exploratory brainstorming without a concrete planning deliverable—use ce-work or ce-brainstorm instead.
When should I use this skill?
The user asks to plan, break down implementation, deepen an existing plan, or enrich a requirements-only unified plan before coding begins.
What you get
An implementation-ready plan document in docs/plans with scope boundaries, file paths, dependencies, test scenarios, decisions with rationale, and a post-generation handoff menu.
- docs/plans implementation plan
- confidence-check summary
- optional HTML plan export
By the numbers
- Defines a Phase 0–5 multi-phase planning workflow in an 800+ line SKILL.md
- Pairs with ce-brainstorm for requirements and ce-work for execution
Files
Create Technical Plan
Note: The current year is 2026. Use this when dating plans and searching for recent documentation.
ce:brainstorm defines WHAT to build. ce:plan defines HOW to build it. ce:work executes the plan. A prior brainstorm is useful context but never required — ce:plan works from any input: a requirements doc, a bug report, a feature idea, or a rough description.
When directly invoked, always plan. Never classify a direct invocation as "not a planning task" and abandon the workflow. If the input is unclear, ask clarifying questions or use the planning bootstrap (Phase 0.4) to establish enough context — but always stay in the planning workflow.
This workflow produces a durable implementation plan. It does not implement code, run tests, or learn from execution-time results. If the answer depends on changing code and seeing what happens, that belongs in ce:work, not here.
Interaction Method
Use the platform's question tool when available. When asking the user a question, prefer the platform's blocking question tool if one exists (AskUserQuestion in Claude Code, request_user_input in Codex, ask_user in Gemini). Otherwise, present numbered options in chat and wait for the user's reply before proceeding.
Ask one question at a time. Prefer a concise single-select choice when natural options exist.
Feature Description
<feature_description> #$ARGUMENTS </feature_description>
If the feature description above is empty, ask the user: "What would you like to plan? Describe the task, goal, or project you have in mind." Then wait for their response before continuing.
If the input is present but unclear or underspecified, do not abandon — ask one or two clarifying questions, or proceed to Phase 0.4's planning bootstrap to establish enough context. The goal is always to help the user plan, never to exit the workflow.
IMPORTANT: All file references in the plan document must use repo-relative paths (e.g., `src/models/user.rb`), never absolute paths (e.g., `/Users/name/Code/project/src/models/user.rb`). This applies everywhere — implementation unit file lists, pattern references, origin document links, and prose mentions. Absolute paths break portability across machines, worktrees, and teammates.
Core Principles
1. Use requirements as the source of truth - If ce:brainstorm produced a requirements document, planning should build from it rather than re-inventing behavior. 2. Decisions, not code - Capture approach, boundaries, files, dependencies, risks, and test scenarios. Do not pre-write implementation code or shell command choreography. Pseudo-code sketches or DSL grammars that communicate high-level technical design are welcome when they help a reviewer validate direction — but they must be explicitly framed as directional guidance, not implementation specification. 3. Research before structuring - Explore the codebase, institutional learnings, and external guidance when warranted before finalizing the plan. 4. Right-size the artifact - Small work gets a compact plan. Large work gets more structure. The philosophy stays the same at every depth. 5. Separate planning from execution discovery - Resolve planning-time questions here. Explicitly defer execution-time unknowns to implementation. 6. Keep the plan portable - The plan should work as a living document, review artifact, or issue body without embedding tool-specific executor instructions. 7. Carry execution posture lightly when it matters - If the request, origin document, or repo context clearly implies test-first, characterization-first, or another non-default execution posture, reflect that in the plan as a lightweight signal. Do not turn the plan into step-by-step execution choreography.
Plan Quality Bar
Every plan should contain:
- A clear problem frame and scope boundary
- Concrete requirements traceability back to the request or origin document
- Repo-relative file paths for the work being proposed (never absolute paths — see Planning Rules)
- Explicit test file paths for feature-bearing implementation units
- Decisions with rationale, not just tasks
- Existing patterns or code references to follow
- Enumerated test scenarios for each feature-bearing unit, specific enough that an implementer knows exactly what to test without inventing coverage themselves
- Clear dependencies and sequencing
A plan is ready when an implementer can start confidently without needing the plan to write the code for them.
Workflow
Phase 0: Resume, Source, and Scope
0.1 Resume Existing Plan Work When Appropriate
If the user references an existing plan file or there is an obvious recent matching plan in docs/plans/:
- Read it
- Confirm whether to update it in place or create a new plan
- If updating, preserve completed checkboxes and revise only the still-relevant sections
Deepen intent: The word "deepen" (or "deepening") in reference to a plan is the primary trigger for the deepening fast path. When the user says "deepen the plan", "deepen my plan", "run a deepening pass", or similar, the target document is a plan in docs/plans/, not a requirements document. Use any path, keyword, or context the user provides to identify the right plan. If a path is provided, verify it is actually a plan document. If the match is not obvious, confirm with the user before proceeding.
Words like "strengthen", "confidence", "gaps", and "rigor" are NOT sufficient on their own to trigger deepening. These words appear in normal editing requests ("strengthen that section about the diagram", "there are gaps in the test scenarios") and should not cause a holistic deepening pass. Only treat them as deepening intent when the request clearly targets the plan as a whole and does not name a specific section or content area to change — and even then, prefer to confirm with the user before entering the deepening flow.
Once the plan is identified and appears complete (all major sections present, implementation units defined, status: active):
- If the plan lacks YAML frontmatter (non-software plans use a simple
# Titleheading withCreated:date instead of frontmatter), route toreferences/universal-planning.mdfor editing or deepening instead of Phase 5.3. Non-software plans do not use the software confidence check. - Otherwise, short-circuit to Phase 5.3 (Confidence Check and Deepening) in interactive mode. This avoids re-running the full planning workflow and gives the user control over which findings are integrated.
Normal editing requests (e.g., "update the test scenarios", "add a new implementation unit", "strengthen the risk section") should NOT trigger the fast path — they follow the standard resume flow.
If the plan already has a deepened: YYYY-MM-DD frontmatter field and there is no explicit user request to re-deepen, the fast path still applies the same confidence-gap evaluation — it does not force deepening.
0.1b Classify Task Domain
If the task involves building, modifying, or architecting software (references code, repos, APIs, databases, or asks to build/modify/deploy), continue to Phase 0.2.
If the task is about a non-software domain and describes a multi-step goal worth planning, read references/universal-planning.md and follow that workflow instead. Skip all subsequent phases.
If genuinely ambiguous (e.g., "plan a migration" with no other context), ask the user before routing.
For everything else (quick questions, error messages, factual lookups) only when auto-selected, respond directly without any planning workflow. When directly invoked by the user, treat the input as a planning request — ask clarifying questions if needed, but do not exit the workflow.
0.2 Find Upstream Requirements Document
Before asking planning questions, search docs/brainstorms/ for files matching *-requirements.md.
Relevance criteria: A requirements document is relevant if:
- The topic semantically matches the feature description
- It was created within the last 30 days (use judgment to override if the document is clearly still relevant or clearly stale)
- It appears to cover the same user problem or scope
If multiple source documents match, ask which one to use using the platform's blocking question tool when available (see Interaction Method). Otherwise, present numbered options in chat and wait for the user's reply before proceeding.
0.3 Use the Source Document as Primary Input
If a relevant requirements document exists: 1. Read it thoroughly 2. Announce that it will serve as the origin document for planning 3. Carry forward all of the following:
- Problem frame
- Requirements and success criteria
- Scope boundaries
- Key decisions and rationale
- Dependencies or assumptions
- Outstanding questions, preserving whether they are blocking or deferred
4. Use the source document as the primary input to planning and research 5. Reference important carried-forward decisions in the plan with (see origin: <source-path>) 6. Do not silently omit source content — if the origin document discussed it, the plan must address it even if briefly. Before finalizing, scan each section of the origin document to verify nothing was dropped.
If no relevant requirements document exists, planning may proceed from the user's request directly.
0.4 Planning Bootstrap (No Requirements Doc or Unclear Input)
If no relevant requirements document exists, or the input needs more structure:
- Assess whether the request is already clear enough for direct technical planning — if so, continue to Phase 0.5
- If the ambiguity is mainly product framing, user behavior, or scope definition, recommend
ce:brainstormas a suggestion — but always offer to continue planning here as well - If the user wants to continue here (or was already explicit about wanting a plan), run the planning bootstrap below
The planning bootstrap should establish:
- Problem frame
- Intended behavior
- Scope boundaries and obvious non-goals
- Success criteria
- Blocking questions or assumptions
Keep this bootstrap brief. It exists to preserve direct-entry convenience, not to replace a full brainstorm.
If the bootstrap uncovers major unresolved product questions:
- Recommend
ce:brainstormagain - If the user still wants to continue, require explicit assumptions before proceeding
If the bootstrap reveals that a different workflow would serve the user better:
- Symptom without a root cause (user describes broken behavior but hasn't identified why) — announce that investigation is needed before planning and load the
ce:debugskill. A plan requires a known problem to solve; debugging identifies what that problem is. Announce the routing clearly: "This needs investigation before planning — switching to ce:debug to find the root cause." - Clear task ready to execute (known root cause, obvious fix, no architectural decisions) — suggest
ce:workas a faster alternative alongside continuing with planning. The user decides.
0.5 Classify Outstanding Questions Before Planning
If the origin document contains Resolve Before Planning or similar blocking questions:
- Review each one before proceeding
- Reclassify it into planning-owned work only if it is actually a technical, architectural, or research question
- Keep it as a blocker if it would change product behavior, scope, or success criteria
If true product blockers remain:
- Surface them clearly
- Ask the user, using the platform's blocking question tool when available (see Interaction Method), whether to:
1. Resume ce:brainstorm to resolve them 2. Convert them into explicit assumptions or decisions and continue
- Do not continue planning while true blockers remain unresolved
0.6 Assess Plan Depth
Classify the work into one of these plan depths:
- Lightweight - small, well-bounded, low ambiguity
- Standard - normal feature or bounded refactor with some technical decisions to document
- Deep - cross-cutting, strategic, high-risk, or highly ambiguous implementation work
If depth is unclear, ask one targeted question and then continue.
Phase 1: Gather Context
1.1 Local Research (Always Runs)
Prepare a concise planning context summary (a paragraph or two) to pass as input to the research agents:
- If an origin document exists, summarize the problem frame, requirements, and key decisions from that document
- Otherwise use the feature description directly
Run these agents in parallel:
- Task compound-engineering:research:repo-research-analyst(Scope: technology, architecture, patterns. {planning context summary})
- Task compound-engineering:research:learnings-researcher(planning context summary)
Collect:
- Technology stack and versions (used in section 1.2 to make sharper external research decisions)
- Architectural patterns and conventions to follow
- Implementation patterns, relevant files, modules, and tests
- AGENTS.md guidance that materially affects the plan, with CLAUDE.md used only as compatibility fallback when present
- Institutional learnings from
docs/solutions/
Slack context (opt-in) — never auto-dispatch. Route by condition:
- Tools available + user asked: Dispatch
compound-engineering:research:slack-researcherwith the planning context summary in parallel with other Phase 1.1 agents. If the origin document has a Slack context section, pass it verbatim so the researcher focuses on gaps. Include findings in consolidation. - Tools available + user didn't ask: Note in output: "Slack tools detected. Ask me to search Slack for organizational context at any point, or include it in your next prompt."
- No tools + user asked: Note in output: "Slack context was requested but no Slack tools are available. Install and authenticate the Slack plugin to enable organizational context search."
1.1b Detect Execution Posture Signals
Decide whether the plan should carry a lightweight execution posture signal.
Look for signals such as:
- The user explicitly asks for TDD, test-first, or characterization-first work
- The origin document calls for test-first implementation or exploratory hardening of legacy code
- Local research shows the target area is legacy, weakly tested, or historically fragile, suggesting characterization coverage before changing behavior
When the signal is clear, carry it forward silently in the relevant implementation units.
Ask the user only if the posture would materially change sequencing or risk and cannot be responsibly inferred.
1.2 Decide on External Research
Based on the origin document, user signals, and local findings, decide whether external research adds value.
Read between the lines. Pay attention to signals from the conversation so far:
- User familiarity — Are they pointing to specific files or patterns? They likely know the codebase well.
- User intent — Do they want speed or thoroughness? Exploration or execution?
- Topic risk — Security, payments, external APIs warrant more caution regardless of user signals.
- Uncertainty level — Is the approach clear or still open-ended?
Leverage repo-research-analyst's technology context:
The repo-research-analyst output includes a structured Technology & Infrastructure summary. Use it to make sharper external research decisions:
- If specific frameworks and versions were detected (e.g., Rails 7.2, Next.js 14, Go 1.22), pass those exact identifiers to framework-docs-researcher so it fetches version-specific documentation
- If the feature touches a technology layer the scan found well-established in the repo (e.g., existing Sidekiq jobs when planning a new background job), lean toward skipping external research -- local patterns are likely sufficient
- If the feature touches a technology layer the scan found absent or thin (e.g., no existing proto files when planning a new gRPC service), lean toward external research -- there are no local patterns to follow
- If the scan detected deployment infrastructure (Docker, K8s, serverless), note it in the planning context passed to downstream agents so they can account for deployment constraints
- If the scan detected a monorepo and scoped to a specific service, pass that service's tech context to downstream research agents -- not the aggregate of all services. If the scan surfaced the workspace map without scoping, use the feature description to identify the relevant service before proceeding with research
Always lean toward external research when:
- The topic is high-risk: security, payments, privacy, external APIs, migrations, compliance
- The codebase lacks relevant local patterns -- fewer than 3 direct examples of the pattern this plan needs
- Local patterns exist for an adjacent domain but not the exact one -- e.g., the codebase has HTTP clients but not webhook receivers, or has background jobs but not event-driven pub/sub. Adjacent patterns suggest the team is comfortable with the technology layer but may not know domain-specific pitfalls. When this signal is present, frame the external research query around the domain gap specifically, not the general technology
- The user is exploring unfamiliar territory
- The technology scan found the relevant layer absent or thin in the codebase
Skip external research when:
- The codebase already shows a strong local pattern -- multiple direct examples (not adjacent-domain), recently touched, following current conventions
- The user already knows the intended shape
- Additional external context would add little practical value
- The technology scan found the relevant layer well-established with existing examples to follow
Announce the decision briefly before continuing. Examples:
- "Your codebase has solid patterns for this. Proceeding without external research."
- "This involves payment processing, so I'll research current best practices first."
1.3 External Research (Conditional)
If Step 1.2 indicates external research is useful, run these agents in parallel:
- Task compound-engineering:research:best-practices-researcher(planning context summary)
- Task compound-engineering:research:framework-docs-researcher(planning context summary)
1.4 Consolidate Research
Summarize:
- Relevant codebase patterns and file paths
- Relevant institutional learnings
- Organizational context from Slack conversations, if gathered (prior discussions, decisions, or domain knowledge relevant to the feature)
- External references and best practices, if gathered
- Related issues, PRs, or prior art
- Any constraints that should materially shape the plan
1.4b Reclassify Depth When Research Reveals External Contract Surfaces
If the current classification is Lightweight and Phase 1 research found that the work touches any of these external contract surfaces, reclassify to Standard:
- Environment variables consumed by external systems, CI, or other repositories
- Exported public APIs, CLI flags, or command-line interface contracts
- CI/CD configuration files (
.github/workflows/,Dockerfile, deployment scripts) - Shared types or interfaces imported by downstream consumers
- Documentation referenced by external URLs or linked from other systems
This ensures flow analysis (Phase 1.5) runs and the confidence check (Phase 5.3) applies critical-section bonuses. Announce the reclassification briefly: "Reclassifying to Standard — this change touches [environment variables / exported APIs / CI config] with external consumers."
1.5 Flow and Edge-Case Analysis (Conditional)
For Standard or Deep plans, or when user flow completeness is still unclear, run:
- Task compound-engineering:workflow:spec-flow-analyzer(planning context summary, research findings)
Use the output to:
- Identify missing edge cases, state transitions, or handoff gaps
- Tighten requirements trace or verification strategy
- Add only the flow details that materially improve the plan
Phase 2: Resolve Planning Questions
Build a planning question list from:
- Deferred questions in the origin document
- Gaps discovered in repo or external research
- Technical decisions required to produce a useful plan
For each question, decide whether it should be:
- Resolved during planning - the answer is knowable from repo context, documentation, or user choice
- Deferred to implementation - the answer depends on code changes, runtime behavior, or execution-time discovery
Ask the user only when the answer materially affects architecture, scope, sequencing, or risk and cannot be responsibly inferred. Use the platform's blocking question tool when available (see Interaction Method).
Do not run tests, build the app, or probe runtime behavior in this phase. The goal is a strong plan, not partial execution.
Phase 3: Structure the Plan
3.1 Title and File Naming
- Draft a clear, searchable title using conventional format such as
feat: Add user authenticationorfix: Prevent checkout double-submit - Determine the plan type:
feat,fix, orrefactor - Build the filename following the repository convention:
docs/plans/YYYY-MM-DD-NNN-<type>-<descriptive-name>-plan.md - Create
docs/plans/if it does not exist - Check existing files for today's date to determine the next sequence number (zero-padded to 3 digits, starting at 001)
- Keep the descriptive name concise (3-5 words) and kebab-cased
- Examples:
2026-01-15-001-feat-user-authentication-flow-plan.md,2026-02-03-002-fix-checkout-race-condition-plan.md - Avoid: missing sequence numbers, vague names like "new-feature", invalid characters (colons, spaces)
3.2 Stakeholder and Impact Awareness
For Standard or Deep plans, briefly consider who is affected by this change — end users, developers, operations, other teams — and how that should shape the plan. For cross-cutting work, note affected parties in the System-Wide Impact section.
3.3 Break Work into Implementation Units
Break the work into logical implementation units. Each unit should represent one meaningful change that an implementer could typically land as an atomic commit.
Good units are:
- Focused on one component, behavior, or integration seam
- Usually touching a small cluster of related files
- Ordered by dependency
- Concrete enough for execution without pre-writing code
- Marked with checkbox syntax for progress tracking
Avoid:
- 2-5 minute micro-steps
- Units that span multiple unrelated concerns
- Units that are so vague an implementer still has to invent the plan
3.4 High-Level Technical Design (Optional)
Before detailing implementation units, decide whether an overview would help a reviewer validate the intended approach. This section communicates the shape of the solution — how pieces fit together — without dictating implementation.
When to include it:
| Work involves... | Best overview form |
|---|---|
| DSL or API surface design | Pseudo-code grammar or contract sketch |
| Multi-component integration | Mermaid sequence or component diagram |
| Data pipeline or transformation | Data flow sketch |
| State-heavy lifecycle | State diagram |
| Complex branching logic | Flowchart |
| Mode/flag combinations or multi-input behavior | Decision matrix (inputs -> outcomes) |
| Single-component with non-obvious shape | Pseudo-code sketch |
When to skip it:
- Well-patterned work where prose and file paths tell the whole story
- Straightforward CRUD or convention-following changes
- Lightweight plans where the approach is obvious
Choose the medium that fits the work. Do not default to pseudo-code when a diagram communicates better, and vice versa.
Frame every sketch with: "This illustrates the intended approach and is directional guidance for review, not implementation specification. The implementing agent should treat it as context, not code to reproduce."
Keep sketches concise — enough to validate direction, not enough to copy-paste into production.
3.4b Output Structure (Optional)
For greenfield plans that create a new directory structure (new plugin, service, package, or module), include an ## Output Structure section with a file tree showing the expected layout. This gives reviewers the overall shape before diving into per-unit details.
When to include it:
- The plan creates 3+ new files in a new directory hierarchy
- The directory layout itself is a meaningful design decision
When to skip it:
- The plan only modifies existing files
- The plan creates 1-2 files in an existing directory — the per-unit file lists are sufficient
The tree is a scope declaration showing the expected output shape. It is not a constraint — the implementer may adjust the structure if implementation reveals a better layout. The per-unit **Files:** sections remain authoritative for what each unit creates or modifies.
3.5 Define Each Implementation Unit
For each unit, include:
- Goal - what this unit accomplishes
- Requirements - which requirements or success criteria it advances
- Dependencies - what must exist first
- Files - repo-relative file paths to create, modify, or test (never absolute paths)
- Approach - key decisions, data flow, component boundaries, or integration notes
- Execution note - optional, only when the unit benefits from a non-default execution posture such as test-first or characterization-first
- Technical design - optional pseudo-code or diagram when the unit's approach is non-obvious and prose alone would leave it ambiguous. Frame explicitly as directional guidance, not implementation specification
- Patterns to follow - existing code or conventions to mirror
- Test scenarios - enumerate the specific test cases the implementer should write, right-sized to the unit's complexity and risk. Consider each category below and include scenarios from every category that applies to this unit. A simple config change may need one scenario; a payment flow may need a dozen. The quality signal is specificity — each scenario should name the input, action, and expected outcome so the implementer doesn't have to invent coverage. For units with no behavioral change (pure config, scaffolding, styling), use
Test expectation: none -- [reason]instead of leaving the field blank. - Happy path behaviors - core functionality with expected inputs and outputs
- Edge cases (when the unit has meaningful boundaries) - boundary values, empty inputs, nil/null states, concurrent access
- Error and failure paths (when the unit has failure modes) - invalid input, downstream service failures, timeout behavior, permission denials
- Integration scenarios (when the unit crosses layers) - behaviors that mocks alone will not prove, e.g., "creating X triggers callback Y which persists Z". Include these for any unit touching callbacks, middleware, or multi-layer interactions
- Verification - how an implementer should know the unit is complete, expressed as outcomes rather than shell command scripts
Every feature-bearing unit should include the test file path in **Files:**.
Use Execution note sparingly. Good uses include:
Execution note: Start with a failing integration test for the request/response contract.Execution note: Add characterization coverage before modifying this legacy parser.Execution note: Implement new domain behavior test-first.
Do not expand units into literal RED/GREEN/REFACTOR substeps.
3.6 Keep Planning-Time and Implementation-Time Unknowns Separate
If something is important but not knowable yet, record it explicitly under deferred implementation notes rather than pretending to resolve it in the plan.
Examples:
- Exact method or helper names
- Final SQL or query details after touching real code
- Runtime behavior that depends on seeing actual test failures
- Refactors that may become unnecessary once implementation starts
Phase 4: Write the Plan
Use one planning philosophy across all depths. Change the amount of detail, not the boundary between planning and execution.
4.1 Plan Depth Guidance
Lightweight
- Keep the plan compact
- Usually 2-4 implementation units
- Omit optional sections that add little value
Standard
- Use the full core template, omitting optional sections (including High-Level Technical Design) that add no value for this particular work
- Usually 3-6 implementation units
- Include risks, deferred questions, and system-wide impact when relevant
Deep
- Use the full core template plus optional analysis sections where warranted
- Usually 4-8 implementation units
- Group units into phases when that improves clarity
- Include alternatives considered, documentation impacts, and deeper risk treatment when warranted
4.1b Optional Deep Plan Extensions
For sufficiently large, risky, or cross-cutting work, add the sections that genuinely help:
- Alternative Approaches Considered
- Success Metrics
- Dependencies / Prerequisites
- Risk Analysis & Mitigation
- Phased Delivery
- Documentation Plan
- Operational / Rollout Notes
- Future Considerations only when they materially affect current design
Do not add these as boilerplate. Include them only when they improve execution quality or stakeholder alignment.
4.2 Core Plan Template
Omit clearly inapplicable optional sections, especially for Lightweight plans.
---
title: [Plan Title]
type: [feat|fix|refactor]
status: active
date: YYYY-MM-DD
origin: docs/brainstorms/YYYY-MM-DD-<topic>-requirements.md # include when planning from a requirements doc
deepened: YYYY-MM-DD # optional, set when the confidence check substantively strengthens the plan
---
# [Plan Title]
## Overview
[What is changing and why]
## Problem Frame
[Summarize the user/business problem and context. Reference the origin doc when present.]
## Requirements Trace
- R1. [Requirement or success criterion this plan must satisfy]
- R2. [Requirement or success criterion this plan must satisfy]
## Scope Boundaries
- [Explicit non-goal or exclusion]
<!-- Optional: When some items are planned work that will happen in a separate PR, issue,
or repo, use this sub-heading to distinguish them from true non-goals. -->
### Deferred to Separate Tasks
- [Work that will be done separately]: [Where or when -- e.g., "separate PR in repo-x", "future iteration"]
## Context & Research
### Relevant Code and Patterns
- [Existing file, class, component, or pattern to follow]
### Institutional Learnings
- [Relevant `docs/solutions/` insight]
### External References
- [Relevant external docs or best-practice source, if used]
## Key Technical Decisions
- [Decision]: [Rationale]
## Open Questions
### Resolved During Planning
- [Question]: [Resolution]
### Deferred to Implementation
- [Question or unknown]: [Why it is intentionally deferred]
<!-- Optional: Include when the plan creates a new directory structure (greenfield plugin,
new service, new package). Shows the expected output shape at a glance. Omit for plans
that only modify existing files. This is a scope declaration, not a constraint --
the implementer may adjust the structure if implementation reveals a better layout. -->
## Output Structure
[directory tree showing new directories and files]
<!-- Optional: Include this section only when the work involves DSL design, multi-component
integration, complex data flow, state-heavy lifecycle, or other cases where prose alone
would leave the approach shape ambiguous. Omit it entirely for well-patterned or
straightforward work. -->
## High-Level Technical Design
> *This illustrates the intended approach and is directional guidance for review, not implementation specification. The implementing agent should treat it as context, not code to reproduce.*
[Pseudo-code grammar, mermaid diagram, data flow sketch, or state diagram — choose the medium that best communicates the solution shape for this work.]
## Implementation Units
- [ ] **Unit 1: [Name]**
**Goal:** [What this unit accomplishes]
**Requirements:** [R1, R2]
**Dependencies:** [None / Unit 1 / external prerequisite]
**Files:**
- Create: `path/to/new_file`
- Modify: `path/to/existing_file`
- Test: `path/to/test_file`
**Approach:**
- [Key design or sequencing decision]
**Execution note:** [Optional test-first, characterization-first, or other execution posture signal]
**Technical design:** *(optional -- pseudo-code or diagram when the unit's approach is non-obvious. Directional guidance, not implementation specification.)*
**Patterns to follow:**
- [Existing file, class, or pattern]
**Test scenarios:**
<!-- Include only categories that apply to this unit. Omit categories that don't. For units with no behavioral change, use "Test expectation: none -- [reason]" instead of leaving this section blank. -->
- [Scenario: specific input/action -> expected outcome. Prefix with category — Happy path, Edge case, Error path, or Integration — to signal intent]
**Verification:**
- [Outcome that should hold when this unit is complete]
## System-Wide Impact
- **Interaction graph:** [What callbacks, middleware, observers, or entry points may be affected]
- **Error propagation:** [How failures should travel across layers]
- **State lifecycle risks:** [Partial-write, cache, duplicate, or cleanup concerns]
- **API surface parity:** [Other interfaces that may require the same change]
- **Integration coverage:** [Cross-layer scenarios unit tests alone will not prove]
- **Unchanged invariants:** [Existing APIs, interfaces, or behaviors that this plan explicitly does not change — and how the new work relates to them. Include when the change touches shared surfaces and reviewers need blast-radius assurance]
## Risks & Dependencies
| Risk | Mitigation |
|------|------------|
| [Meaningful risk] | [How it is addressed or accepted] |
## Documentation / Operational Notes
- [Docs, rollout, monitoring, or support impacts when relevant]
## Sources & References
- **Origin document:** [docs/brainstorms/YYYY-MM-DD-<topic>-requirements.md](path)
- Related code: [path or symbol]
- Related PRs/issues: #[number]
- External docs: [url]For larger Deep plans, extend the core template only when useful with sections such as:
## Alternative Approaches Considered
- [Approach]: [Why rejected or not chosen]
## Success Metrics
- [How we will know this solved the intended problem]
## Dependencies / Prerequisites
- [Technical, organizational, or rollout dependency]
## Risk Analysis & Mitigation
| Risk | Likelihood | Impact | Mitigation |
|------|-----------|--------|------------|
| [Risk] | [Low/Med/High] | [Low/Med/High] | [How addressed] |
## Phased Delivery
### Phase 1
- [What lands first and why]
### Phase 2
- [What follows and why]
## Documentation Plan
- [Docs or runbooks to update]
## Operational / Rollout Notes
- [Monitoring, migration, feature flag, or rollout considerations]4.3 Planning Rules
- All file paths must be repo-relative — never use absolute paths like
/Users/name/Code/project/src/file.ts. Usesrc/file.tsinstead. Absolute paths make plans non-portable across machines, worktrees, and teammates. When a plan targets a different repo than the document's home, state the target repo once at the top of the plan (e.g.,**Target repo:** my-other-project) and use repo-relative paths throughout - Prefer path plus class/component/pattern references over brittle line numbers
- Keep implementation units checkable with
- [ ]syntax for progress tracking - Do not include implementation code — no imports, exact method signatures, or framework-specific syntax
- Pseudo-code sketches and DSL grammars are allowed in the High-Level Technical Design section and per-unit technical design fields when they communicate design direction. Frame them explicitly as directional guidance, not implementation specification
- Mermaid diagrams are encouraged when they clarify relationships or flows that prose alone would make hard to follow — ERDs for data model changes, sequence diagrams for multi-service interactions, state diagrams for lifecycle transitions, flowcharts for complex branching logic
- Do not include git commands, commit messages, or exact test command recipes
- Do not expand implementation units into micro-step
RED/GREEN/REFACTORinstructions - Do not pretend an execution-time question is settled just to make the plan look complete
4.4 Visual Communication in Plan Documents
When the plan contains 4+ implementation units with non-linear dependencies, 3+ interacting surfaces in System-Wide Impact, 3+ behavioral modes/variants in Overview or Problem Frame, or 3+ interacting decisions in Key Technical Decisions or alternatives in Alternative Approaches, read references/visual-communication.md for diagram and table guidance. This covers plan-structure visuals (dependency graphs, interaction diagrams, comparison tables) — not solution-design diagrams, which are covered in Section 3.4.
Phase 5: Final Review, Write File, and Handoff
5.1 Review Before Writing
Before finalizing, check:
- The plan does not invent product behavior that should have been defined in
ce:brainstorm - If there was no origin document, the bounded planning bootstrap established enough product clarity to plan responsibly
- Every major decision is grounded in the origin document or research
- Each implementation unit is concrete, dependency-ordered, and implementation-ready
- If test-first or characterization-first posture was explicit or strongly implied, the relevant units carry it forward with a lightweight
Execution note - Each feature-bearing unit has test scenarios from every applicable category (happy path, edge cases, error paths, integration) — right-sized to the unit's complexity, not padded or skimped
- Test scenarios name specific inputs, actions, and expected outcomes without becoming test code
- Feature-bearing units with blank or missing test scenarios are flagged as incomplete — feature-bearing units must have actual test scenarios, not just an annotation. The
Test expectation: none -- [reason]annotation is only valid for non-feature-bearing units (pure config, scaffolding, styling) - Deferred items are explicit and not hidden as fake certainty
- If a High-Level Technical Design section is included, it uses the right medium for the work, carries the non-prescriptive framing, and does not contain implementation code (no imports, exact signatures, or framework-specific syntax)
- Per-unit technical design fields, if present, are concise and directional rather than copy-paste-ready
- If the plan creates a new directory structure, would an Output Structure tree help reviewers see the overall shape?
- If Scope Boundaries lists items that are planned work for a separate PR or task, are they under
### Deferred to Separate Tasksrather than mixed with true non-goals? - Would a visual aid (dependency graph, interaction diagram, comparison table) help a reader grasp the plan structure faster than scanning prose alone?
If the plan originated from a requirements document, re-read that document and verify:
- The chosen approach still matches the product intent
- Scope boundaries and success criteria are preserved
- Blocking questions were either resolved, explicitly assumed, or sent back to
ce:brainstorm - Every section of the origin document is addressed in the plan — scan each section to confirm nothing was silently dropped
5.2 Write Plan File
REQUIRED: Write the plan file to disk before presenting any options.
Use the Write tool to save the complete plan to:
docs/plans/YYYY-MM-DD-NNN-<type>-<descriptive-name>-plan.mdConfirm:
Plan written to docs/plans/[filename]Pipeline mode: If invoked from an automated workflow such as LFG, SLFG, or any disable-model-invocation context, skip interactive questions. Make the needed choices automatically and proceed to writing the plan.
5.3 Confidence Check and Deepening
After writing the plan file, automatically evaluate whether the plan needs strengthening.
Two deepening modes:
- Auto mode (default during plan generation): Runs without asking the user for approval. The user sees what is being strengthened but does not need to make a decision. Sub-agent findings are synthesized directly into the plan.
- Interactive mode (activated by the re-deepen fast path in Phase 0.1): The user explicitly asked to deepen an existing plan. Sub-agent findings are presented individually for review before integration. The user can accept, reject, or discuss each agent's findings. Only accepted findings are synthesized into the plan.
Interactive mode exists because on-demand deepening is a different user posture — the user already has a plan they are invested in and wants to be surgical about what changes. This applies whether the plan was generated by this skill, written by hand, or produced by another tool.
document-review and this confidence check are different:
- Use the
document-reviewskill when the document needs clarity, simplification, completeness, or scope control - This confidence check strengthens rationale, sequencing, risk treatment, and system-wide thinking when the plan is structurally sound but still needs stronger grounding
Pipeline mode: This phase always runs in auto mode in pipeline/disable-model-invocation contexts. No user interaction needed.
5.3.1 Classify Plan Depth and Topic Risk
Determine the plan depth from the document:
- Lightweight - small, bounded, low ambiguity, usually 2-4 implementation units
- Standard - moderate complexity, some technical decisions, usually 3-6 units
- Deep - cross-cutting, high-risk, or strategically important work, usually 4-8 units or phased delivery
Build a risk profile. Treat these as high-risk signals:
- Authentication, authorization, or security-sensitive behavior
- Payments, billing, or financial flows
- Data migrations, backfills, or persistent data changes
- External APIs or third-party integrations
- Privacy, compliance, or user data handling
- Cross-interface parity or multi-surface behavior
- Significant rollout, monitoring, or operational concerns
5.3.2 Gate: Decide Whether to Deepen
- Lightweight plans usually do not need deepening unless they are high-risk
- Standard plans often benefit when one or more important sections still look thin
- Deep or high-risk plans often benefit from a targeted second pass
- Thin local grounding override: If Phase 1.2 triggered external research because local patterns were thin (fewer than 3 direct examples or adjacent-domain match), always proceed to scoring regardless of how grounded the plan appears. When the plan was built on unfamiliar territory, claims about system behavior are more likely to be assumptions than verified facts. The scoring pass is cheap — if the plan is genuinely solid, scoring finds nothing and exits quickly
If the plan already appears sufficiently grounded and the thin-grounding override does not apply, report "Confidence check passed — no sections need strengthening" and skip to Phase 5.3.8 (Document Review). Document-review always runs regardless of whether deepening was needed — the two tools catch different classes of issues.
5.3.3–5.3.7 Deepening Execution
When deepening is warranted, read references/deepening-workflow.md for confidence scoring checklists, section-to-agent dispatch mapping, execution mode selection, research execution, interactive finding review, and plan synthesis instructions. Execute steps 5.3.3 through 5.3.7 from that file, then return here for 5.3.8.
5.3.8–5.4 Document Review, Final Checks, and Post-Generation Options
When reaching this phase, read references/plan-handoff.md for document review instructions (5.3.8), final checks and cleanup (5.3.9), post-generation options menu (5.4), and issue creation. Do not load this file earlier. Document review is mandatory — do not skip it even if the confidence check already ran.
NEVER CODE! Research, decide, and write the plan.
Deepening Workflow
This file contains the confidence-check execution path (5.3.3-5.3.7). Load it only when the deepening gate at 5.3.2 determines that deepening is warranted.
5.3.3 Score Confidence Gaps
Use a checklist-first, risk-weighted scoring pass.
For each section, compute:
- Trigger count - number of checklist problems that apply
- Risk bonus - add 1 if the topic is high-risk and this section is materially relevant to that risk
- Critical-section bonus - add 1 for
Key Technical Decisions,Implementation Units,System-Wide Impact,Risks & Dependencies, orOpen QuestionsinStandardorDeepplans
Treat a section as a candidate if:
- it hits 2+ total points, or
- it hits 1+ point in a high-risk domain and the section is materially important
Choose only the top 2-5 sections by score. If deepening a lightweight plan (high-risk exception), cap at 1-2 sections.
If the plan already has a deepened: date:
- Prefer sections that have not yet been substantially strengthened, if their scores are comparable
- Revisit an already-deepened section only when it still scores clearly higher than alternatives
Section Checklists:
Requirements Trace
- Requirements are vague or disconnected from implementation units
- Success criteria are missing or not reflected downstream
- Units do not clearly advance the traced requirements
- Origin requirements are not clearly carried forward
Context & Research / Sources & References
- Relevant repo patterns are named but never used in decisions or implementation units
- Cited learnings or references do not materially shape the plan
- High-risk work lacks appropriate external or internal grounding
- Research is generic instead of tied to this repo or this plan
Key Technical Decisions
- A decision is stated without rationale
- Rationale does not explain tradeoffs or rejected alternatives
- The decision does not connect back to scope, requirements, or origin context
- An obvious design fork exists but the plan never addresses why one path won
Open Questions
- Product blockers are hidden as assumptions
- Planning-owned questions are incorrectly deferred to implementation
- Resolved questions have no clear basis in repo context, research, or origin decisions
- Deferred items are too vague to be useful later
High-Level Technical Design (when present)
- The sketch uses the wrong medium for the work
- The sketch contains implementation code rather than pseudo-code
- The non-prescriptive framing is missing or weak
- The sketch does not connect to the key technical decisions or implementation units
High-Level Technical Design (when absent) (Standard or Deep plans only)
- The work involves DSL design, API surface design, multi-component integration, complex data flow, or state-heavy lifecycle
- Key technical decisions would be easier to validate with a visual or pseudo-code representation
- The approach section of implementation units is thin and a higher-level technical design would provide context
Implementation Units
- Dependency order is unclear or likely wrong
- File paths or test file paths are missing where they should be explicit
- Units are too large, too vague, or broken into micro-steps
- Approach notes are thin or do not name the pattern to follow
- Test scenarios are vague (don't name inputs and expected outcomes), skip applicable categories (e.g., no error paths for a unit with failure modes, no integration scenarios for a unit crossing layers), or are disproportionate to the unit's complexity
- Feature-bearing units have blank or missing test scenarios (feature-bearing units require actual test scenarios; the
Test expectation: noneannotation is only valid for non-feature-bearing units) - Verification outcomes are vague or not expressed as observable results
System-Wide Impact
- Affected interfaces, callbacks, middleware, entry points, or parity surfaces are missing
- Failure propagation is underexplored
- State lifecycle, caching, or data integrity risks are absent where relevant
- Integration coverage is weak for cross-layer work
Risks & Dependencies / Documentation / Operational Notes
- Risks are listed without mitigation
- Rollout, monitoring, migration, or support implications are missing when warranted
- External dependency assumptions are weak or unstated
- Security, privacy, performance, or data risks are absent where they obviously apply
Use the plan's own Context & Research and Sources & References as evidence. If those sections cite a pattern, learning, or risk that never affects decisions, implementation units, or verification, treat that as a confidence gap.
5.3.4 Report and Dispatch Targeted Research
Before dispatching agents, report what sections are being strengthened and why:
Strengthening [section names] — [brief reason for each, e.g., "decision rationale is thin", "cross-boundary effects aren't mapped"]For each selected section, choose the smallest useful agent set. Do not run every agent. Use at most 1-3 agents per section and usually no more than 8 agents total.
Use fully-qualified agent names inside Task calls.
Deterministic Section-to-Agent Mapping:
Requirements Trace / Open Questions classification
compound-engineering:workflow:spec-flow-analyzerfor missing user flows, edge cases, and handoff gapscompound-engineering:research:repo-research-analyst(Scope:architecture, patterns) for repo-grounded patterns, conventions, and implementation reality checks
Context & Research / Sources & References gaps
compound-engineering:research:learnings-researcherfor institutional knowledge and past solved problemscompound-engineering:research:framework-docs-researcherfor official framework or library behaviorcompound-engineering:research:best-practices-researcherfor current external patterns and industry guidance- Add
compound-engineering:research:git-history-analyzeronly when historical rationale or prior art is materially missing
Key Technical Decisions
compound-engineering:review:architecture-strategistfor design integrity, boundaries, and architectural tradeoffs- Add
compound-engineering:research:framework-docs-researcherorcompound-engineering:research:best-practices-researcherwhen the decision needs external grounding beyond repo evidence
High-Level Technical Design
compound-engineering:review:architecture-strategistfor validating that the technical design accurately represents the intended approach and identifying gapscompound-engineering:research:repo-research-analyst(Scope:architecture, patterns) for grounding the technical design in existing repo patterns and conventions- Add
compound-engineering:research:best-practices-researcherwhen the technical design involves a DSL, API surface, or pattern that benefits from external validation
Implementation Units / Verification
compound-engineering:research:repo-research-analyst(Scope:patterns) for concrete file targets, patterns to follow, and repo-specific sequencing cluescompound-engineering:review:pattern-recognition-specialistfor consistency, duplication risks, and alignment with existing patterns- Add
compound-engineering:workflow:spec-flow-analyzerwhen sequencing depends on user flow or handoff completeness
System-Wide Impact
compound-engineering:review:architecture-strategistfor cross-boundary effects, interface surfaces, and architectural knock-on impact- Add the specific specialist that matches the risk:
compound-engineering:review:performance-oraclefor scalability, latency, throughput, and resource-risk analysiscompound-engineering:review:security-sentinelfor auth, validation, exploit surfaces, and security boundary reviewcompound-engineering:review:data-integrity-guardianfor migrations, persistent state safety, consistency, and data lifecycle risks
Risks & Dependencies / Operational Notes
- Use the specialist that matches the actual risk:
compound-engineering:review:security-sentinelfor security, auth, privacy, and exploit riskcompound-engineering:review:data-integrity-guardianfor persistent data safety, constraints, and transaction boundariescompound-engineering:review:data-migration-expertfor migration realism, backfills, and production data transformation riskcompound-engineering:review:deployment-verification-agentfor rollout checklists, rollback planning, and launch verificationcompound-engineering:review:performance-oraclefor capacity, latency, and scaling concerns
Agent Prompt Shape:
For each selected section, pass:
- The scope prefix from the mapping above when the agent supports scoped invocation
- A short plan summary
- The exact section text
- Why the section was selected, including which checklist triggers fired
- The plan depth and risk profile
- A specific question to answer
Instruct the agent to return:
- findings that change planning quality
- stronger rationale, sequencing, verification, risk treatment, or references
- no implementation code
- no shell commands
5.3.5 Choose Research Execution Mode
Use the lightest mode that will work:
- Direct mode - Default. Use when the selected section set is small and the parent can safely read the agent outputs inline.
- Artifact-backed mode - Use only when the selected research scope is large enough that inline returns would create unnecessary context pressure.
Signals that justify artifact-backed mode:
- More than 5 agents are likely to return meaningful findings
- The selected section excerpts are long enough that repeating them in multiple agent outputs would be wasteful
- The topic is high-risk and likely to attract bulky source-backed analysis
If artifact-backed mode is not clearly warranted, stay in direct mode.
Artifact-backed mode uses a per-run OS-temp scratch directory. Create it once before dispatching sub-agents and capture its absolute path — pass that absolute path to each sub-agent so they write to it directly. Do not use .context/; the artifacts are per-run throwaway that are cleaned up when deepening ends (see 5.3.6b), matching the repo Scratch Space convention for one-shot artifacts. Do not pass unresolved shell-variable strings to sub-agents; they need the resolved absolute path.
SCRATCH_DIR="$(mktemp -d -t ce-plan-deepen-XXXXXX)"
echo "$SCRATCH_DIR"Refer to the echoed absolute path as <scratch-dir> throughout the rest of this workflow.
5.3.6 Run Targeted Research
Launch the selected agents in parallel using the execution mode chosen above. If the current platform does not support parallel dispatch, run them sequentially instead. Omit the mode parameter when dispatching so the user's configured permission settings apply.
Prefer local repo and institutional evidence first. Use external research only when the gap cannot be closed responsibly from repo context or already-cited sources.
If a selected section can be improved by reading the origin document more carefully, do that before dispatching external agents.
Direct mode: Have each selected agent return its findings directly to the parent. Keep the return payload focused: strongest findings only, the evidence or sources that matter, the concrete planning improvement implied by the finding.
Artifact-backed mode: For each selected agent, pass the absolute <scratch-dir> path captured earlier and instruct the agent to write one compact artifact file inside that directory, then return only a short completion summary. Each artifact should contain: target section, why selected, 3-7 findings, source-backed rationale, the specific plan change implied by each finding. No implementation code, no shell commands.
If an artifact is missing or clearly malformed, re-run that agent or fall back to direct-mode reasoning for that section.
If agent outputs conflict:
- Prefer repo-grounded and origin-grounded evidence over generic advice
- Prefer official framework documentation over secondary best-practice summaries when the conflict is about library behavior
- If a real tradeoff remains, record it explicitly in the plan
5.3.6b Interactive Finding Review (Interactive Mode Only)
Skip this step in auto mode — proceed directly to 5.3.7.
In interactive mode, present each agent's findings to the user before integration. For each agent that returned findings:
1. Summarize the agent and its target section — e.g., "The architecture-strategist reviewed Key Technical Decisions and found:" 2. Present the findings concisely — bullet the key points, not the raw agent output. Include enough context for the user to evaluate: what the agent found, what evidence supports it, and what plan change it implies. 3. Ask the user using the platform's blocking question tool when available (see Interaction Method):
- Accept — integrate these findings into the plan
- Reject — discard these findings entirely
- Discuss — the user wants to talk through the findings before deciding
If the user chooses "Discuss", engage in brief dialogue about the findings and then re-ask with only accept/reject (no discuss option on the second ask). The user makes a deliberate choice either way.
When presenting findings from multiple agents targeting the same section, present them one agent at a time so the user can make independent decisions. Do not merge findings from different agents before showing them.
After all agents have been reviewed, carry only the accepted findings forward to 5.3.7.
If the user accepted no findings, report "No findings accepted — plan unchanged." Then proceed directly to Phase 5.4 (skip document-review and synthesis — the plan was not modified). This interactive-mode-only skip does not apply in auto mode; auto mode always proceeds through 5.3.7 and 5.3.8. No explicit scratch cleanup needed — $SCRATCH_DIR is OS temp and will be cleaned up by the OS; leaving it in place preserves the rejected agent artifacts for debugging.
If findings were accepted and the plan was modified, proceed through 5.3.7 and 5.3.8 as normal — document-review acts as a quality gate on the changes.
5.3.7 Synthesize and Update the Plan
Strengthen only the selected sections. Keep the plan coherent and preserve its overall structure.
In interactive mode: Only integrate findings the user accepted in 5.3.6b. If some findings from different agents touch the same section, reconcile them coherently but do not reintroduce rejected findings.
Allowed changes:
- Clarify or strengthen decision rationale
- Tighten requirements trace or origin fidelity
- Reorder or split implementation units when sequencing is weak
- Add missing pattern references, file/test paths, or verification outcomes
- Expand system-wide impact, risks, or rollout treatment where justified
- Reclassify open questions between
Resolved During PlanningandDeferred to Implementationwhen evidence supports the change - Strengthen, replace, or add a High-Level Technical Design section when the work warrants it and the current representation is weak
- Strengthen or add per-unit technical design fields where the unit's approach is non-obvious
- Add or update
deepened: YYYY-MM-DDin frontmatter when the plan was substantively improved
Do not:
- Add implementation code — no imports, exact method signatures, or framework-specific syntax. Pseudo-code sketches and DSL grammars are allowed
- Add git commands, commit choreography, or exact test command recipes
- Add generic
Research Insightssubsections everywhere - Rewrite the entire plan from scratch
- Invent new product requirements, scope changes, or success criteria without surfacing them explicitly
If research reveals a product-level ambiguity that should change behavior or scope:
- Do not silently decide it here
- Record it under
Open Questions - Recommend
ce:brainstormif the gap is truly product-defining
Plan Handoff
This file contains post-plan-writing instructions: document review, post-generation options, and issue creation. Load it after the plan file has been written and the confidence check (5.3.1-5.3.7) is complete.
5.3.8 Document Review
After the confidence check (and any deepening), run the document-review skill on the plan file. Pass the plan path as the argument. When this step is reached, it is mandatory — do not skip it because the confidence check already ran. The two tools catch different classes of issues.
The confidence check and document-review are complementary:
- The confidence check strengthens rationale, sequencing, risk treatment, and grounding
- Document-review checks coherence, feasibility, scope alignment, and surfaces role-specific issues
If document-review returns findings that were auto-applied, note them briefly when presenting handoff options. If residual P0/P1 findings were surfaced, mention them so the user can decide whether to address them before proceeding.
When document-review returns "Review complete", proceed to Final Checks.
Pipeline mode: If invoked from an automated workflow such as LFG, SLFG, or any disable-model-invocation context, run document-review with mode:headless and the plan path. Headless mode applies auto-fixes silently and returns structured findings without interactive prompts. Address any P0/P1 findings before returning control to the caller.
5.3.9 Final Checks and Cleanup
Before proceeding to post-generation options:
- Confirm the plan is stronger in specific ways, not merely longer
- Confirm the planning boundary is intact
- Confirm origin decisions were preserved when an origin document exists
If artifact-backed mode was used:
- Clean up the temporary scratch directory after the plan is safely updated
- If cleanup is not practical on the current platform, note where the artifacts were left
5.4 Post-Generation Options
Pipeline mode: If invoked from an automated workflow such as LFG, SLFG, or any disable-model-invocation context, skip the interactive menu below and return control to the caller immediately. The plan file has already been written, the confidence check has already run, and document-review has already run — the caller (e.g., lfg, slfg) determines the next step.
After document-review completes, present the options using the platform's blocking question tool (AskUserQuestion in Claude Code, request_user_input in Codex, ask_user in Gemini). If no question tool is available, present the numbered options in chat and wait for the user's reply before proceeding.
Question: "Plan ready at docs/plans/YYYY-MM-DD-NNN-<type>-<name>-plan.md. What would you like to do next?"
Options: 1. Start `/ce:work` (recommended) - Begin implementing this plan in the current session 2. Create Issue - Create a tracked issue from this plan in your configured issue tracker (GitHub or Linear) 3. Open in Proof (web app) — review and comment to iterate with the agent - Open the doc in Every's Proof editor, iterate with the agent via comments, or copy a link to share with others 4. Done for now - Pause; the plan file is saved and can be resumed later
Surface additional document review contextually, not as a menu fixture: When the prior document-review pass surfaced residual P0/P1 findings that the user has not addressed, mention them adjacent to the menu and offer another review pass in prose (e.g., "Document review flagged 2 P1 findings you may want to address — want me to run another pass before you pick?"). Do not add it to the option list.
Based on selection:
- Start `/ce:work` -> Call
/ce:workwith the plan path - Create Issue -> Follow the Issue Creation section below
- Open in Proof (web app) — review and comment to iterate with the agent -> Load the
proofskill in HITL-review mode with: - source file:
docs/plans/<plan_filename>.md - doc title:
Plan: <plan title from frontmatter> - identity:
ai:compound-engineering/Compound Engineering - recommended next step:
/ce:work(shown in the proof skill's final terminal output)
Follow references/hitl-review.md in the proof skill. It uploads the plan, prompts the user for review in Proof's web UI, ingests each thread by reading it fresh and replying in-thread, applies agreed edits as tracked suggestions, and syncs the final markdown back to the plan file atomically on proceed.
When the proof skill returns:
status: proceededwithlocalSynced: true-> the plan on disk now reflects the review. Re-rundocument-reviewon the updated plan before re-rendering the menu — HITL can materially rewrite the plan body, so the prior document-review pass no longer covers the current file and section 5.3.8 requires a review before any handoff option is offered. Then return to the post-generation options with the refreshed residual findings.status: proceededwithlocalSynced: false-> the reviewed version lives in Proof atdocUrlbut the local copy is stale. Offer to pull the Proof doc tolocalPathusing the proof skill's Pull workflow. If the pull happened, re-rundocument-reviewon the pulled file before re-rendering the options (same 5.3.8 rationale — the local plan was materially updated by the pull). If the pull was declined, include a one-line note above the menu that<localPath>is stale vs. Proof — otherwiseStart /ce:workorCreate Issuewill silently use the pre-review copy.status: done_for_now-> the plan on disk may be stale if the user edited in Proof before leaving. Offer to pull the Proof doc tolocalPathso the local plan file stays in sync. If the pull happened, re-rundocument-reviewon the pulled file before re-rendering the options (same 5.3.8 rationale). If the pull was declined, include the stale-local note above the menu.done_for_nowmeans the user stopped the HITL loop — it does not mean they ended the whole plan session; they may still want to start work or create an issue.status: aborted-> fall back to the options without changes.
If the initial upload fails (network error, Proof API down), retry once after a short wait. If it still fails, tell the user the upload didn't succeed and briefly explain why, then return to the options — don't leave them wondering why the option did nothing.
- Done for now -> Display a brief confirmation that the plan file is saved and end the turn
- If the user asks for another document review (either from the contextual prompt when P0/P1 findings remain, or by free-form request) -> Load the
document-reviewskill with the plan path for another pass, then return to the options - Other -> Accept free text for revisions and loop back to options
Issue Creation
When the user selects "Create Issue", detect their project tracker:
1. Read AGENTS.md (or CLAUDE.md for compatibility) at the repo root and look for project_tracker: github or project_tracker: linear. 2. If project_tracker: github:
gh issue create --title "<type>: <title>" --body-file <plan_path>3. If project_tracker: linear:
linear issue create --title "<title>" --description "$(cat <plan_path>)"4. If no tracker is configured, ask the user which tracker they use with the platform's blocking question tool (AskUserQuestion in Claude Code, request_user_input in Codex, ask_user in Gemini). If no question tool is available, ask in chat and wait for the reply. Options: GitHub, Linear, Skip. Then:
- Proceed with the chosen tracker's command above
- Offer to persist the choice by adding
project_tracker: <value>toAGENTS.md, where<value>is the lowercase tracker key (githuborlinear) — not the display label — so future runs match the detector in step 1 and skip this prompt - If
Skip, return to the options without creating an issue
5. If the detected tracker's CLI is not installed or not authenticated, surface a clear error (e.g., "gh CLI not found — install it or create the issue manually") and return to the options.
After issue creation:
- Display the issue URL
- Ask whether to proceed to
/ce:workusing the platform's blocking question tool
Universal Planning Workflow
This file is loaded when ce:plan detects a non-software task (Phase 0.1b). It replaces the software-specific phases (0.2 through 5.1) with a domain-agnostic planning workflow.
Before starting: verify classification
The detection stub in SKILL.md routes here for anything that isn't clearly software. Verify the classification is correct before proceeding:
- Is this actually a software task? The key distinction is task-type, not topic-domain. A study guide about Rust is non-software (producing educational content). A Rust library refactor is software (modifying code). If this is actually software, return to Phase 0.2 in the main SKILL.md.
- Is this a quick-help request, not a planning task? Error messages, factual questions, and single-step tasks don't need a plan. Respond directly and exit. Examples: "zsh: command not found: brew", "what's the capital of France."
- Pipeline mode? If invoked from LFG, SLFG, or any
disable-model-invocationcontext: output "This is a non-software task. The LFG/SLFG pipeline requires ce:work, which only supports software tasks. Use/ce:plandirectly for non-software planning." and stop.
---
Step 1: Assess Ambiguity and Research Need
Evaluate two things before planning:
Would 1-3 quick questions meaningfully improve this plan?
- Default: ask 1-3 questions via Step 1b when the answers would change the plan's structure or content. Always include a final option like "Skip — just make the plan with reasonable assumptions" so the user can opt out instantly.
- Skip questions entirely only when the request already specifies all major variables or the task is simple enough that reasonable assumptions cover it well.
Research need — does this plan depend on facts that change faster than training data?
| Research need | Signals | Action |
|---|---|---|
| None | Generic, timeless, or conceptual plan (study curriculum methodology, project management approach, personal goal breakdown) | Skip research. Model knowledge is sufficient. After structuring the plan, offer: "I based this on general knowledge. Want me to search for [specific thing research would improve]?" — e.g., sourced recipes, current product recommendations, expert frameworks. Only if the user accepts. |
| Recommended | Plan references specific locations, venues, dates, prices, schedules, seasonal availability, or current events — anything where stale information would break the plan (closed restaurants, changed prices, cancelled events, wrong seasonal dates). | Research before planning. Decompose into 2-5 focused research questions and dispatch parallel web searches. In Claude Code, use the Agent tool with model: "haiku" for each search to reduce cost. Collate findings before structuring the plan. |
When research is recommended, do it — don't just offer. Stale recommendations (closed restaurants, rethemed attractions, outdated prices) are worse than no recommendations. The user invoked /ce:plan because they want a good plan, not a disclaimer about training data.
Research decomposition pattern: 1. Identify 2-5 independent research questions based on the task. Good questions target facts the model is least confident about: current prices, hours, availability, recent changes, seasonal specifics. 2. Dispatch parallel web searches (one per question). Keep queries broad at first, then narrow based on findings. 3. Collate findings into a brief research summary before proceeding to planning.
Example for "plan a date night in Seattle this Saturday":
- "Best restaurants open late Saturday in Capitol Hill Seattle 2026"
- "Events happening in Seattle [specific date]"
- "Seattle waterfront current status and hours"
Step 1b: Focused Q&A
Ask up to 3 questions targeting the unknowns that would most change the plan. Use the platform's question tool when available (AskUserQuestion in Claude Code, request_user_input in Codex, ask_user in Gemini). Otherwise, present numbered options in chat and wait for the user's reply.
How to ask well:
- Offer informed options, not open-ended blanks. Instead of "When are you going?", try "Mid-week visits have 30-40% shorter lines — are you flexible on timing?" The question should give the user a frame of reference, not just extract information.
- Use multi-select when several independent choices can be captured in one question. This is compact and respects the user's time.
- Always include a final option like "Skip — just make the plan with reasonable assumptions" so the user can opt out at any point.
Focus on the unknowns specific to this task that would change what the plan recommends or how it's structured. Do not ask more than 3 — after that, proceed with assumptions for anything remaining.
Step 2: Structure the Plan
Create a structured plan guided by these quality principles. Do NOT use the software plan template (implementation units, test scenarios, file paths, etc.).
Format: when to prescribe vs. present options
Not every plan should be a single linear path. Match the format to the task:
| Task type | Best format | Why |
|---|---|---|
| High personal preference (food, entertainment, activities, gifts) | Curated options per category — present 2-3 choices and let the user compose | Preferences vary; a single pick may miss. Options respect the user's taste. |
| Logical sequence (study plan, project timeline, multi-day trip logistics) | Single prescriptive path with clear ordering | Sequencing matters; options at each step create decision paralysis. |
| Hybrid (event with fixed structure but variable details) | Fixed structure with choice points marked | The skeleton is set but specific vendors/venues/activities are options. |
Example: A date night plan should present 2-3 restaurant options, 2-3 activity options, and a suggested flow — not pick one restaurant and build the whole evening around it. A study plan should prescribe a single weekly progression — not present 3 different curricula to choose from.
Formatting: bullets over prose
- Prefer bullets and tables for actionable content (steps, options, logistics, budgets)
- Use prose only for context, rationale, or explanations that connect the dots
- Plans are for scanning and executing, not reading cover-to-cover
Quality principles
- Actionable steps: Each step is specific enough to execute without further research
- Sequenced by dependency: Steps are in the right order, with dependencies noted
- Time-aware: When relevant, include timing, durations, deadlines, or phases
- Resource-identified: Specify what's needed — tools, materials, people, budget, locations
- Contingency-aware: For important decisions, note alternatives or what to do if plans change
- Appropriately detailed: Match detail to task complexity. A weekend trip needs less structure than a 3-month curriculum. A dinner plan should be concise, not a 200-line document.
- Domain-appropriate format: Choose a structure that fits the domain:
- Itinerary for travel (day-by-day, with times and locations)
- Syllabus or curriculum for study plans (topics, resources, milestones)
- Runbook for events (timeline, responsibilities, logistics)
- Project plan for business or operational tasks (phases, owners, deliverables)
- Research plan for investigations (questions, methods, sources)
- Options menu for preference-driven tasks (curated picks per category)
Step 3: Save or Share
After structuring the plan, ask the user how they want to receive it using the platform's question tool (AskUserQuestion in Claude Code, request_user_input in Codex, ask_user in Gemini). Otherwise, present numbered options in chat.
Question: "Plan ready. How would you like to receive it?"
Options:
1. Save to disk — Write the plan as a markdown file. Ask where:
docs/plans/(only show if this directory exists)- Current working directory
/tmp- A custom path
- Use filename convention:
YYYY-MM-DD-<descriptive-name>-plan.md - Start the document with a
# Titleheading, followed byCreated: YYYY-MM-DDon the next line. No YAML frontmatter.
2. Open in Proof (web app) — review and comment to iterate with the agent — Open the doc in Every's Proof editor, iterate with the agent via comments, or copy a link to share with others. Load the proof skill to create and open the document.
3. Save to disk AND open in Proof — Do both: write the markdown file to disk and open the doc in Proof for review.
Do not offer /ce:work (software-only) or issue creation (not applicable to non-software plans).
Visual Communication in Plan Documents
Section 3.4 covers diagrams about the solution being planned (pseudo-code, mermaid sequences, state diagrams). The existing Section 4.3 mermaid rule encourages those solution-design diagrams within Technical Design and per-unit fields. This guidance covers a different concern: visual aids that help readers navigate and comprehend the plan document itself -- dependency graphs, interaction diagrams, and comparison tables that make plan structure scannable.
Visual aids are conditional on content patterns, not on plan depth classification -- a Lightweight plan about a complex multi-unit workflow may warrant a dependency graph; a Deep plan about a straightforward feature may not.
When to include:
| Plan describes... | Visual aid | Placement |
|---|---|---|
| 4+ implementation units with non-linear dependencies (parallelism, diamonds, fan-in/fan-out) | Mermaid dependency graph | Before or after the Implementation Units heading |
| System-Wide Impact naming 3+ interacting surfaces or cross-layer effects | Mermaid interaction or component diagram | Within the System-Wide Impact section |
| Problem/Overview involving 3+ behavioral modes, states, or variants | Markdown comparison table | Within Overview or Problem Frame |
| Key Technical Decisions with 3+ interacting decisions, or Alternative Approaches with 3+ alternatives | Markdown comparison table | Within the relevant section |
When to skip:
- The plan has 3 or fewer units in a straight dependency chain -- the Dependencies field on each unit is sufficient
- Prose already communicates the relationships clearly
- The visual would duplicate what the High-Level Technical Design section already shows
- The visual describes code-level detail (specific method names, SQL columns, API field lists)
Format selection:
- Mermaid (default) for dependency graphs and interaction diagrams -- 5-15 nodes, no in-box annotations, standard flowchart shapes. Use
TB(top-to-bottom) direction so diagrams stay narrow in both rendered and source form. Source should be readable as fallback in diff views and terminals. - ASCII/box-drawing diagrams for annotated flows that need rich in-box content -- file path layouts, decision logic branches, multi-column spatial arrangements. More expressive than mermaid when the diagram's value comes from annotations within nodes. Follow 80-column max for code blocks, use vertical stacking.
- Markdown tables for mode/variant comparisons and decision/approach comparisons.
- Keep diagrams proportionate to the plan. A 6-unit linear chain gets a simple 6-node graph. A complex dependency graph with fan-out and fan-in may need 10-15 nodes -- that is fine if every node earns its place.
- Place inline at the point of relevance, not in a separate section.
- Plan-structure level only -- unit dependencies, component interactions, mode comparisons, impact surfaces. Not implementation architecture, data schemas, or code structure (those belong in Section 3.4).
- Prose is authoritative: when a visual aid and its surrounding prose disagree, the prose governs.
After generating a visual aid, verify it accurately represents the plan sections it illustrates -- correct dependency edges, no missing surfaces, no merged units.
Related skills
How it compares
Choose ce:plan over lightweight task lists when you need traceable requirements, repo-relative paths, test scenarios, and a durable plan artifact agents can execute.
FAQ
What does ce:plan produce?
ce:plan produces an implementation-ready plan document—typically under docs/plans—with repo-relative file paths, implementation units, enumerated test scenarios, dependencies, and decisions with rationale. The skill captures HOW to build, not application code, and ends with a han
How does ce:plan relate to ce-brainstorm and ce-work?
ce-brainstorm defines WHAT to build as a requirements-only unified plan. ce:plan enriches that artifact—or any input—with HOW-to-build structure, milestones, and test scenarios. ce-work then executes the implementation-ready plan ce:plan outputs.
Can ce:plan resume or deepen an existing plan?
ce:plan can resume plans in docs/plans, update them in place, or run a deepening pass via Phase 5.3 when the user asks to strengthen rigor, close gaps, or raise confidence on an already-complete plan artifact.