feat(ce-plan,ce-brainstorm): universal planning and brainstorming for non-software tasks (#519)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -19,7 +19,7 @@ The primary entry points for engineering work, invoked as slash commands:
|
||||
|-------|-------------|
|
||||
| `/ce:ideate` | Discover high-impact project improvements through divergent ideation and adversarial filtering |
|
||||
| `/ce:brainstorm` | Explore requirements and approaches before planning |
|
||||
| `/ce:plan` | Transform features into structured implementation plans grounded in repo patterns, with automatic confidence checking |
|
||||
| `/ce:plan` | Create structured plans for any multi-step task -- software features, research workflows, events, study plans -- with automatic confidence checking |
|
||||
| `/ce:review` | Structured code review with tiered persona agents, confidence gating, and dedup pipeline |
|
||||
| `/ce:work` | Execute work items systematically |
|
||||
| `/ce:compound` | Document solved problems to compound team knowledge |
|
||||
|
||||
@@ -56,6 +56,20 @@ If the user references an existing brainstorm topic or document, or there is an
|
||||
- Confirm with the user before resuming: "Found an existing requirements doc for [topic]. Should I continue from this, or start fresh?"
|
||||
- If resuming, summarize the current state briefly, continue from its existing decisions and outstanding questions, and update the existing document instead of creating a duplicate
|
||||
|
||||
#### 0.1b Classify Task Domain
|
||||
|
||||
Before proceeding to Phase 0.2, classify whether this is a software task. The key question is: **does the task involve building, modifying, or architecting software?** -- not whether the task *mentions* software topics.
|
||||
|
||||
**Software** (continue to Phase 0.2) -- the task references code, repositories, APIs, databases, or asks to build/modify/debug/deploy software.
|
||||
|
||||
**Non-software brainstorming** (route to universal brainstorming) -- BOTH conditions must be true:
|
||||
- None of the software signals above are present
|
||||
- The task describes something the user wants to explore, decide, or think through in a non-software domain
|
||||
|
||||
**Neither** (respond directly, skip all brainstorming phases) -- the input is a quick-help request, error message, factual question, or single-step task that doesn't need a brainstorm.
|
||||
|
||||
**If non-software brainstorming is detected:** Read `references/universal-brainstorming.md` and use those facilitation principles to brainstorm with the user naturally. Do not follow the software brainstorming phases below.
|
||||
|
||||
#### 0.2 Assess Whether Brainstorming Is Needed
|
||||
|
||||
**Clear requirements indicators:**
|
||||
@@ -125,6 +139,7 @@ Before generating approaches, challenge the request to catch misframing. Match d
|
||||
Follow the Interaction Rules above. Use the platform's blocking question tool when available.
|
||||
|
||||
**Guidelines:**
|
||||
- Ask what the user is already thinking before offering your own ideas. This surfaces hidden context and prevents fixation on AI-generated framings.
|
||||
- Start broad (problem, users, value) then narrow (constraints, exclusions, edge cases)
|
||||
- Clarify the problem frame, validate assumptions, and ask about success criteria
|
||||
- Make requirements concrete enough that planning will not need to invent behavior
|
||||
@@ -138,6 +153,10 @@ Follow the Interaction Rules above. Use the platform's blocking question tool wh
|
||||
|
||||
If multiple plausible directions remain, propose **2-3 concrete approaches** based on research and conversation. Otherwise state the recommended direction directly.
|
||||
|
||||
Use at least one non-obvious angle — inversion (what if we did the opposite?), constraint removal (what if X weren't a limitation?), or analogy from how another domain solves this. The first approaches that come to mind are usually variations on the same axis.
|
||||
|
||||
Present approaches first, then evaluate. Let the user see all options before hearing which one is recommended — leading with a recommendation before the user has seen alternatives anchors the conversation prematurely.
|
||||
|
||||
When useful, include one deliberately higher-upside alternative:
|
||||
- Identify what adjacent addition or reframing would most increase usefulness, compounding value, or durability without disproportionate carrying cost. Present it as a challenger option alongside the baseline, not as the default. Omit it when the work is already obviously over-scoped or the baseline request is clearly the right move.
|
||||
|
||||
@@ -147,7 +166,7 @@ For each approach, provide:
|
||||
- Key risks or unknowns
|
||||
- When it's best suited
|
||||
|
||||
Lead with your recommendation and explain why. Prefer simpler solutions when added complexity creates real carrying cost, but do not reject low-cost, high-value polish just because it is not strictly necessary.
|
||||
After presenting all approaches, state your recommendation and explain why. Prefer simpler solutions when added complexity creates real carrying cost, but do not reject low-cost, high-value polish just because it is not strictly necessary.
|
||||
|
||||
If one approach is clearly best and alternatives are not meaningful, skip the menu and state the recommendation directly.
|
||||
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
# Universal Brainstorming Facilitator
|
||||
|
||||
This file is loaded when ce:brainstorm detects a non-software task (Phase 0). It replaces the software-specific brainstorming phases with facilitation principles for any domain. Do not follow the software brainstorming workflow (Phases 0.2 through 4). Instead, absorb these principles and facilitate the brainstorm naturally.
|
||||
|
||||
---
|
||||
|
||||
## Your role
|
||||
|
||||
Be a thinking partner, not an answer machine. The user came here because they're stuck or exploring — they want to think WITH someone, not receive a deliverable. Resist the urge to generate a complete solution immediately. A premature answer anchors the conversation and kills exploration.
|
||||
|
||||
**Match the tone to the stakes.** For personal or life decisions (career changes, housing, relationships, family), lead with values and feelings before frameworks and analysis. Ask what matters to them, not just what the options are. For lighter or creative tasks (podcast topics, event ideas, side projects), energy and enthusiasm are more useful than caution.
|
||||
|
||||
## How to start
|
||||
|
||||
**Assess scope first.** Not every brainstorm needs deep exploration:
|
||||
- **Quick** (user has a clear goal, just needs a sounding board): Confirm understanding, offer a few targeted suggestions or reactions, done in 2-3 exchanges.
|
||||
- **Standard** (some unknowns, needs to explore options): 4-6 exchanges, generate and compare options, help decide.
|
||||
- **Full** (vague goal, lots of uncertainty, or high-stakes decision): Deep exploration, many exchanges, structured convergence.
|
||||
|
||||
**Ask what they're already thinking.** Before offering ideas, find out what the user has considered, tried, or rejected. This prevents fixation on AI-generated ideas and surfaces hidden constraints.
|
||||
|
||||
**When the user represents a group** (couple, family, team) — surface whose preferences are in play and where they diverge. The brainstorm shifts from "help you decide" to "help you find alignment." Ask about each person's priorities, not just the speaker's.
|
||||
|
||||
**Understand before generating.** Spend time on the problem before jumping to solutions. "What would success look like?" and "What have you already ruled out?" reveal more than "Here are 10 ideas."
|
||||
|
||||
## How to explore and generate
|
||||
|
||||
**Use diverse angles to avoid repetitive ideas.** When generating options, vary your approach across exchanges:
|
||||
- Inversion: "What if you did the opposite of the obvious choice?"
|
||||
- Constraints as creative tools: "What if budget/time/distance were no issue?" then "What if you had to do it for free?"
|
||||
- Analogy: "How does someone in a completely different context solve a similar problem?"
|
||||
- What the user hasn't considered: introduce lateral ideas from unexpected directions
|
||||
|
||||
**Separate generation from evaluation.** When exploring options, don't critique them in the same breath. Generate first, evaluate later. Make the transition explicit when it's time to narrow.
|
||||
|
||||
**Offer options to react to when the user is stuck.** People who can't generate from scratch can often evaluate presented options. Use multi-select questions to gather preferences efficiently. Always include a skip option for users who want to move faster.
|
||||
|
||||
**Keep presented options to 3-5 at any decision point.** More causes analysis paralysis.
|
||||
|
||||
## How to converge
|
||||
|
||||
When the conversation has enough material to narrow — reflect back what you've heard. Name the user's priorities as they've emerged through the conversation (what excited them, what they rejected, what they asked about). Propose a frontrunner with reasoning tied to their criteria, and invite pushback. Keep final options to 3-5 max. Don't force a final decision if the user isn't there yet — clarity on direction is a valid outcome.
|
||||
|
||||
## When to wrap up
|
||||
|
||||
**Always synthesize a summary in the chat.** Before offering any next steps, reflect back what emerged: key decisions, the direction chosen, open threads, and any assumptions made. This is the primary output of the brainstorm — the user should be able to read the summary and know what they landed on.
|
||||
|
||||
**Then offer next steps** using the platform's question tool (`AskUserQuestion` in Claude Code, `request_user_input` in Codex, `ask_user` in Gemini):
|
||||
- **Create a plan** → hand off to `/ce:plan` with the decided goal and constraints
|
||||
- **Save summary to disk** → write the summary as a markdown file in the current working directory
|
||||
- **Share to Proof** → load the `proof` skill to create a shareable web link for others to review
|
||||
- **Done** → the conversation was the value, no artifact needed
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: ce:plan
|
||||
description: "Transform feature descriptions or requirements into structured implementation plans grounded in repo patterns and research. Also deepen existing plans with interactive review of sub-agent findings. Use for plan creation when the user says 'plan this', 'create a plan', 'write a tech plan', 'plan the implementation', 'how should we build', 'what's the approach for', 'break this down', or when a brainstorm/requirements document is ready for technical planning. Use for plan deepening when the user says 'deepen the plan', 'deepen my plan', 'deepening pass', or uses 'deepen' in reference to a plan. Best when requirements are at least roughly defined; for exploratory or ambiguous requests, prefer ce:brainstorm first."
|
||||
argument-hint: "[optional: feature description, requirements doc path, plan path to deepen, or improvement idea]"
|
||||
description: "Create structured plans for any multi-step task -- software features, research workflows, events, study plans, or any goal that benefits from structured breakdown. Also deepen existing plans with interactive review of sub-agent findings. Use for plan creation when the user says 'plan this', 'create a plan', 'write a tech plan', 'plan the implementation', 'how should we build', 'what's the approach for', 'break this down', 'plan a trip', 'create a study plan', or when a brainstorm/requirements document is ready for planning. Use for plan deepening when the user says 'deepen the plan', 'deepen my plan', 'deepening pass', or uses 'deepen' in reference to a plan. For exploratory or ambiguous requests where the user is unsure what to do, prefer ce:brainstorm first."
|
||||
argument-hint: "[optional: feature description, requirements doc path, plan path to deepen, or any task to plan]"
|
||||
---
|
||||
|
||||
# Create Technical Plan
|
||||
@@ -22,7 +22,7 @@ Ask one question at a time. Prefer a concise single-select choice when natural o
|
||||
|
||||
<feature_description> #$ARGUMENTS </feature_description>
|
||||
|
||||
**If the feature description above is empty, ask the user:** "What would you like to plan? Please describe the feature, bug fix, or improvement you have in mind."
|
||||
**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."
|
||||
|
||||
Do not proceed until you have a clear planning input.
|
||||
|
||||
@@ -67,12 +67,24 @@ If the user references an existing plan file or there is an obvious recent match
|
||||
|
||||
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`), 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.
|
||||
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 `# Title` heading with `Created:` date instead of frontmatter), route to `references/universal-planning.md` for 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), respond directly without any planning workflow.
|
||||
|
||||
#### 0.2 Find Upstream Requirements Document
|
||||
|
||||
Before asking planning questions, search `docs/brainstorms/` for files matching `*-requirements.md`.
|
||||
|
||||
@@ -0,0 +1,110 @@
|
||||
# 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-invocation` context: output "This is a non-software task. The LFG/SLFG pipeline requires ce:work, which only supports software tasks. Use `/ce:plan` directly 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.
|
||||
|
||||
**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 `# Title` heading, followed by `Created: YYYY-MM-DD` on the next line. No YAML frontmatter.
|
||||
|
||||
2. **Share to Proof** — View the plan on the web and get a shareable link. Load the `proof` skill to create and share the document. Useful for sharing with others who aren't in the terminal.
|
||||
|
||||
3. **Both** — Save to disk and share to Proof.
|
||||
|
||||
Do not offer `/ce:work` (software-only) or issue creation (not applicable to non-software plans).
|
||||
@@ -11,7 +11,7 @@ CRITICAL: You MUST execute every step below IN ORDER. Do NOT skip any required s
|
||||
|
||||
2. `/ce:plan $ARGUMENTS`
|
||||
|
||||
GATE: STOP. Verify that the `ce:plan` workflow produced a plan file in `docs/plans/`. If no plan file was created, run `/ce:plan $ARGUMENTS` again. Do NOT proceed to step 3 until a written plan exists. **Record the plan file path** — it will be passed to ce:review in step 4.
|
||||
GATE: STOP. If ce:plan reported the task is non-software and cannot be processed in pipeline mode, stop the pipeline and inform the user that LFG requires software tasks. Otherwise, verify that the `ce:plan` workflow produced a plan file in `docs/plans/`. If no plan file was created, run `/ce:plan $ARGUMENTS` again. Do NOT proceed to step 3 until a written plan exists. **Record the plan file path** — it will be passed to ce:review in step 4.
|
||||
|
||||
3. `/ce:work`
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ Swarm-enabled LFG. Run these steps in order, parallelizing where indicated. Do n
|
||||
## Sequential Phase
|
||||
|
||||
1. **Optional:** If the `ralph-loop` skill is available, run `/ralph-loop:ralph-loop "finish all slash commands" --completion-promise "DONE"`. If not available or it fails, skip and continue to step 2 immediately.
|
||||
2. `/ce:plan $ARGUMENTS` — **Record the plan file path** from `docs/plans/` for steps 4 and 6.
|
||||
2. `/ce:plan $ARGUMENTS` — If ce:plan reported the task is non-software and cannot be processed in pipeline mode, stop the pipeline and inform the user that SLFG requires software tasks. Otherwise, **record the plan file path** from `docs/plans/` for steps 4 and 6.
|
||||
3. `/ce:work` — **Use swarm mode**: Make a Task list and launch an army of agent swarm subagents to build the plan
|
||||
|
||||
## Parallel Phase
|
||||
|
||||
Reference in New Issue
Block a user