brewcode:plan
Scannednpx machina-cli add skill kochetkov-ma/claude-brewcode/plan --openclawCreate Plan — [task-dir or SPEC path or plan file]
<instructions>/brewcode:plan Instructions
ROLE: Plan Creator | OUTPUT: PLAN.md + phases/*.md + KNOWLEDGE.jsonl + artifacts/ + backup/
Input Detection
| Input | Action |
|---|---|
Path to {TS}_{NAME}_task/ dir | Read SPEC.md from it |
Path to SPEC.md file | Derive task dir from parent |
.claude/plans/LATEST.md or plan file | Plan Mode: parse plan, create task dir, skip SPEC |
| Empty | Check .claude/TASK.md quick ref for latest task dir |
Flag Parsing
Parse $ARGUMENTS for flags BEFORE input detection:
| Flag | Effect |
|---|---|
-n, --noask | Skip all user questions, auto-approve defaults |
Strip flag from $ARGUMENTS. Remaining text = path.
Workflow (SPEC input)
-
Check Adapted Templates (REQUIRED FIRST)
EXECUTE using Bash tool:
TMPL_DIR=".claude/tasks/templates" PLUGIN_TMPL="$BC_PLUGIN_ROOT/skills/setup/templates" echo "--- Project templates ---" test -f "$TMPL_DIR/PLAN.md.template" && echo "PLAN.md.template OK" || echo "PLAN.md.template MISSING" test -f "$TMPL_DIR/phase.md.template" && echo "phase.md.template OK" || echo "phase.md.template MISSING" test -f "$TMPL_DIR/phase-verify.md.template" && echo "phase-verify.md.template OK" || echo "phase-verify.md.template MISSING" test -f "$TMPL_DIR/phase-final-review.md.template" && echo "phase-final-review.md.template OK" || echo "phase-final-review.md.template MISSING" test -f "$TMPL_DIR/phase-fix.md.template" && echo "phase-fix.md.template OK" || echo "phase-fix.md.template MISSING" echo "--- Plugin fallback templates ---" test -f "$PLUGIN_TMPL/PLAN.md.template" && echo "PLAN.md.template FALLBACK OK" || echo "PLAN.md.template FALLBACK MISSING" test -f "$PLUGIN_TMPL/phase.md.template" && echo "phase.md.template FALLBACK OK" || echo "phase.md.template FALLBACK MISSING" test -f "$PLUGIN_TMPL/phase-verify.md.template" && echo "phase-verify.md.template FALLBACK OK" || echo "phase-verify.md.template FALLBACK MISSING" test -f "$PLUGIN_TMPL/phase-final-review.md.template" && echo "phase-final-review.md.template FALLBACK OK" || echo "phase-final-review.md.template FALLBACK MISSING" test -f "$PLUGIN_TMPL/phase-fix.md.template" && echo "phase-fix.md.template FALLBACK OK" || echo "phase-fix.md.template FALLBACK MISSING"Template resolution order:
- Project templates:
.claude/tasks/templates/{name}.template(adapted by/brewcode:setup) - Plugin fallback:
$BC_PLUGIN_ROOT/skills/setup/templates/{name}.template
STOP if BOTH locations MISSING for any template -- Run
/brewcode:setupfirst to get v3 templates. If project templates missing but plugin fallback exists: WARN "Re-run /brewcode:setup for v3 project-adapted templates. Using plugin defaults." - Project templates:
-
Read SPEC
- Resolve input path per Input Detection table
- Read SPEC.md from task directory
- Extract: goal, requirements, analysis, context files, risks, decisions
-
Scan Project for Reference Examples
- Find 1-2 canonical files per expected phase type (controller, service, test, etc.)
- These become Reference Examples (R1, R2...) in PLAN.md
-
Generate Phase Breakdown (5-12 phases)
Based on SPEC analysis and project structure:
- Each phase = one logical unit of work
- Dependencies between phases identified
- Agents assigned per phase
- Verification phases (NV) after each execution phase
- Final Review (FR) as last phase
-
Present Phases to User (AskUserQuestion)
If
--noask: Skip. Auto-approve all phases.Otherwise: Use AskUserQuestion to present the proposed phase split:
- Phase count and descriptions
- Agent assignments
- Dependency chain
- User can approve, adjust, or request changes
-
Generate Artifacts
Read templates per resolution order from Step 0 (project first, plugin fallback second).
5.1 Create directory structure
.claude/tasks/{TS}_{NAME}_task/ ├── phases/ <-- NEW: individual phase files ├── artifacts/ ├── backup/ ├── KNOWLEDGE.jsonl (0-byte empty file) └── PLAN.md (slim, with Phase Registry)EXECUTE using Bash tool:
TASK_DIR=".claude/tasks/{TS}_{NAME}_task" mkdir -p "$TASK_DIR/phases" "$TASK_DIR/artifacts" "$TASK_DIR/backup" touch "$TASK_DIR/KNOWLEDGE.jsonl"5.2 Generate phase files (from templates)
For EACH execution phase (1, 2, 3, ...):
- Read
phase.md.template - Fill placeholders with SPEC-derived content:
{PHASE_NUM}-- phase number{PHASE_NAME}-- descriptive name (kebab-case for filename, Title Case for heading){AGENT}-- assigned agent{AGENT_ROLE}-- one-line agent role description{OBJECTIVE}-- concrete objective from SPEC analysis{CONTEXT_FILES}-- table rows: files the agent needs to read/modify{REFERENCES}-- table rows: reference examples, docs, existing patterns{TASK_LIST}-- numbered task list with specific, actionable items{CONSTRAINTS}-- project-specific constraints (from SPEC + project rules){EXIT_CRITERIA}-- measurable exit criteria (builds, tests pass, lint clean, etc.){ARTIFACT_DIR}-- e.g.,1-1e(Phase 1 Execution, iter 1){ADDITIONAL_ARTIFACTS}-- files created/modified by this phase
- Write to:
phases/{N}-{name}.md(e.g.,phases/1-create-entity.md)
For EACH verification phase:
- Read
phase-verify.md.template - Fill placeholders:
{PHASE_NUM}-- matches the execution phase being verified{PHASE_NAME}-- same name as the execution phase{VERIFY_AGENT}-- tester or reviewer{FILES_TO_REVIEW}-- files created/modified by the execution phase{VERIFICATION_CHECKLIST}-- checklist items derived from exit criteria of execution phase{AGAINST_REFERENCES}-- reference examples to compare against{ARTIFACT_DIR}-- e.g.,1-1v(Phase 1 Verification, iter 1){AGENT}-- same as{VERIFY_AGENT}
- Write to:
phases/{N}V-verify-{name}.md
For Final Review:
- Read
phase-final-review.md.template - Fill placeholders:
{FR_AGENTS}-- list of review agents (typically reviewer + tester + architect){COMPLETION_CRITERIA}-- from SPEC.md goals/decisions, copied to PLAN.md Completion Criteria{REVIEW_CHECKLIST}-- comprehensive checklist covering all phases{FILES_CHANGED}-- aggregate of all files created/modified across all phases{ARTIFACT_DIR}--FR-1e(Final Review, iter 1)
- Write to:
phases/FR-final-review.md
5.3 Generate PLAN.md (slim v3 format)
Using
PLAN.md.template(project-adapted or plugin fallback):- Fill Phase Registry table with ALL generated phase files
- Each row references the corresponding
phases/{file}.md - Completion Criteria from SPEC.md decisions/goals
- Agents table from project analysis
- Technology Choices from SPEC analysis
- Role Constraints from project rules
5.4 Technology Choices
For each non-trivial choice (library, pattern, approach):
- Document in PLAN.md under Technology Choices section
- Include rationale + alternatives considered and rejected
- Examples: ORM choice, auth library, caching strategy, test framework
- Read
-
Quorum Plan Review (3 agents, mixed expertise)
ONE message with 3 Task calls in PARALLEL: Task(subagent_type="Plan", prompt="Review PLAN.md and ALL files in phases/ against SPEC requirements. Check Phase Registry completeness and phase file content quality.") Task(subagent_type="brewcode:architect", prompt="Review PLAN.md and phases/ files: architecture decisions, technology choices, dependencies between phases, context files accuracy") Task(subagent_type="brewcode:reviewer", prompt="Review PLAN.md and phases/ files: exit criteria measurability, task granularity, risks, verification checklist completeness")Agent prompt template:
> **Context:** BC_PLUGIN_ROOT is available in your context (injected by pre-task.mjs hook). Review PLAN at {PLAN_PATH} and phase files at {TASK_DIR}/phases/ against SPEC at {SPEC_PATH} Check: Phase Registry matches actual phase files, each phase file has filled content (no unfilled placeholders), agent assignments match expertise, dependencies correct, exit criteria measurable, risks mitigated Output: list of remarks with rationaleQuorum rule (2/3): Only remarks confirmed by 2+ agents are accepted.
-
Verification Agent (Traceability Check)
Task(subagent_type="brewcode:reviewer", prompt=" > **Context:** BC_PLUGIN_ROOT is available in your context (injected by pre-task.mjs hook). Verify PLAN and phase files cover ALL SPEC requirements: - Each item from SPEC > Scope > In has at least one phase FILE in phases/ - Each requirement from Original Requirements is addressed in a specific phase file's Tasks section - Phase Registry in PLAN.md matches actual files in phases/ directory Output: traceability matrix (requirement -> phase file) + gaps found")If gaps found: Add missing phase files AND update Phase Registry in PLAN.md before presenting to user in Step 8.
-
Present Review Results (AskUserQuestion)
If
--noask: Auto-accept all quorum-confirmed remarks. Fix all in PLAN.md and phase files.Otherwise: Present confirmed remarks + verification results to user. User approves/rejects each. Fix approved remarks in PLAN.md and phase files.
Workflow (Plan Mode input)
-
Check Templates -- same as SPEC workflow Step 0
-
Read Plan File
- Parse
.claude/plans/LATEST.mdor provided plan file - Extract structure, goals, steps
- Parse
-
Create Task Dir + Scan Project
- Generate timestamp and name slug
- Create
.claude/tasks/{TS}_{NAME}_task/ - Scan project for context files and reference examples
-
Split into Granular Phases (finer than plan)
- Each plan item may become 1-3 phases
- Add verification phases
- Add Final Review phase
-
Present Phases to User (AskUserQuestion)
- Same as SPEC workflow step 4 (respects
--noask)
- Same as SPEC workflow step 4 (respects
-
Generate Artifacts
- Same as SPEC workflow Step 5 (phases/, PLAN.md, KNOWLEDGE.jsonl, artifacts/, backup/)
- No SPEC.md in this flow (plan replaces spec)
-
Lightweight Plan Review (2 agents)
ONE message with 2 Task calls in PARALLEL: Task(subagent_type="brewcode:architect", prompt="Review PLAN.md at {PLAN_PATH} and phases/ files: architecture decisions, phase dependencies, agent assignments") Task(subagent_type="brewcode:reviewer", prompt="Review PLAN.md at {PLAN_PATH} and phases/ files: phase quality, verification criteria, completeness vs source plan")Rule: Both agents must confirm a remark for it to be accepted (2/2 consensus). Fix confirmed remarks in PLAN.md and phase files before proceeding.
Update Quick Ref (REQUIRED)
Add task link to TOP of .claude/TASK.md (preserve history):
IF .claude/TASK.md exists:
1. Read existing content
2. Prepend: ".claude/tasks/{TS}_{NAME}_task/PLAN.md\n---\n"
3. Append: existing content
ELSE:
Create with: ".claude/tasks/{TS}_{NAME}_task/PLAN.md"
Validation (REQUIRED)
EXECUTE using Bash tool:
TS_NAME="{TS}_{NAME}"
TASK_DIR=".claude/tasks/${TS_NAME}_task"
echo "=== Structure ==="
test -d "$TASK_DIR" && echo "TASK_DIR" || echo "TASK_DIR MISSING"
test -f "$TASK_DIR/PLAN.md" && echo "PLAN" || echo "PLAN MISSING"
test -f "$TASK_DIR/KNOWLEDGE.jsonl" && echo "KNOWLEDGE" || echo "KNOWLEDGE MISSING"
test -d "$TASK_DIR/artifacts" && echo "ARTIFACTS" || echo "ARTIFACTS MISSING"
test -d "$TASK_DIR/backup" && echo "BACKUP" || echo "BACKUP MISSING"
test -d "$TASK_DIR/phases" && echo "PHASES_DIR" || echo "PHASES_DIR MISSING"
head -1 .claude/TASK.md 2>/dev/null | grep -q "${TS_NAME}" && echo "QUICK_REF" || echo "QUICK_REF MISSING"
echo "=== Phase Registry vs Files ==="
grep -oP 'phases/[^\s|]+\.md' "$TASK_DIR/PLAN.md" | sort -u | while read -r pf; do
test -f "$TASK_DIR/$pf" && echo "OK $pf" || echo "MISSING $pf"
done
echo "=== Phase files on disk ==="
for f in "$TASK_DIR"/phases/*.md; do
test -f "$f" && echo "EXISTS $(basename $f)" || echo "NO PHASE FILES"
done
STOP if any MISSING -- Create missing artifacts before proceeding.
Output
# Plan Created
## Detection
| Field | Value |
|-------|-------|
| Arguments | `{received args}` |
| Input Type | `{SPEC path or Plan Mode file}` |
| Noask | `{yes or no}` |
## Files Created
- PLAN: .claude/tasks/{TS}_{NAME}_task/PLAN.md
- PHASES: .claude/tasks/{TS}_{NAME}_task/phases/ ({count} files)
- KNOWLEDGE: .claude/tasks/{TS}_{NAME}_task/KNOWLEDGE.jsonl
- ARTIFACTS: .claude/tasks/{TS}_{NAME}_task/artifacts/
- BACKUP: .claude/tasks/{TS}_{NAME}_task/backup/
- QUICK REF: .claude/TASK.md (task added to top, history preserved)
## Phase Files
| File | Type | Agent |
|------|------|-------|
| phases/1-{name}.md | Execution | {agent} |
| phases/1V-verify-{name}.md | Verification | {agent} |
| ... | ... | ... |
| phases/FR-final-review.md | Final Review | reviewer+tester+architect |
Run: /brewcode:start .claude/tasks/{TS}_{NAME}_task/PLAN.md
</instructions>Source
git clone https://github.com/kochetkov-ma/claude-brewcode/blob/main/brewcode/skills/plan/SKILL.mdView on GitHub Overview
brewcode:plan converts SPEC.md or Plan Mode input into an execution PLAN.md, plus supporting phases and artifacts. It detects inputs, validates templates, and scans the project for reference examples to craft a phased, dependency-aware workflow with verification after each phase.
How This Skill Works
The skill parses flags from ARGUMENTS, resolves the input path (SPEC.md, task dir, or plan file), and reads SPEC.md to extract goals, requirements, analysis, and risks. It then scans the project for reference examples, generates 5-12 phases with dependencies and assigned agents, and inserts NV verification steps after each execution phase, finishing with a final review. If --noask is used, all phases are auto-approved without user questions.
When to Use It
- Starting a new project from SPEC.md to produce a repeatable PLAN.md
- Using Plan Mode to recreate a task directory from an existing LATEST.md plan
- Creating a canonical phase breakdown with dependencies and verification steps
- Auto-approving a plan in CI or fast-tracking work with -n / --noask
- Guiding execution by anchoring phases to reference examples found in the project
Quick Start
- Step 1: run brewcode:plan with a path to SPEC.md or a task dir
- Step 2: review PLAN.md and the generated phases, references, and verification steps
- Step 3: adjust SPEC.md if needed or rerun with --noask for automatic approval
Best Practices
- Ensure SPEC.md is complete and accessible in the expected location
- Provide 1-2 canonical reference files per phase type (controller, service, test, etc.)
- Verify required templates exist in both project and plugin template locations
- Review the generated PLAN.md and phase list before execution if not using --noask
- Version-control PLAN.md and related phases to track evolution and decisions
Example Use Cases
- Convert a REST API SPEC.md into a PLAN.md with phases like Design, Implement, Test, Deploy
- Plan a data processing pipeline by deriving phases from SPEC and adding NV checks after each step
- Migrate a monolith feature to microservices by outlining dependent phases and verification
- Use Plan Mode to regenerate a task directory from LATEST.md and align with current templates
- Run with -n to auto-approve a plan in a CI pipeline and proceed to artifact generation