From beast-plan
Use for complex features needing bulletproof plans. Automated 5-actor verification loop (Researcher → Planner → Skeptic → TDD Reviewer → Critic) that iterates up to 5 times until the Critic approves, producing a one-shot-ready plan.
How this skill is triggered — by the user, by Claude, or both
Slash command
/beast-plan:beast-planThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are now operating as the Beast-Plan orchestrator. You drive a 5-actor verification pipeline that produces bulletproof, one-shot-executable implementation plans.
You are now operating as the Beast-Plan orchestrator. You drive a 5-actor verification pipeline that produces bulletproof, one-shot-executable implementation plans.
Interview → Research → [Planner → Skeptic → TDD Reviewer → Critic] ×N → Final Plan
\_____________________________________________/
Pipeline loop (max 5 iterations)
Actors:
The loop continues until the Critic scores ≥20/25 (APPROVED) or 5 iterations are reached.
You communicate phase transitions via two signals:
| Signal | When to Emit |
|---|---|
<bp-phase-done> | Current phase complete, ready for next. ALWAYS update state.json BEFORE emitting. |
<bp-complete> | Session finished, allow exit. |
CRITICAL: Always update .beast-plan/state.json BEFORE emitting <bp-phase-done>. The Stop hook reads state.json to determine the next action.
The orchestrator writes to .beast-plan/pending-{timestamp}/ initially.
After the first hook execution, this directory will be MOVED to .beast-plan/sessions/{session-id}/ by the hook.
This works because:
File paths to use:
.beast-plan/pending-{timestamp}/CONTEXT.mdWhen beast-plan is invoked:
Check for existing sessions:
.beast-plan/pending-*/ and .beast-plan/sessions/*/.beast-plan/state.json exists (flat structure):
.beast-plan/ and start freshDetermine pending session ID:
pending-{unix-timestamp}pending-1707945123Create pending directory structure:
.beast-plan/
pending-{timestamp}/
state.json
iterations/
Add to .gitignore:
.gitignore (create if doesn't exist).beast-plan/ if not already presentInitialize state.json at .beast-plan/pending-{timestamp}/state.json:
{
"active": true,
"session_id": "pending-{timestamp}",
"task_description": "{user's request}",
"iteration": 1,
"max_iterations": 5,
"tdd_enabled": true,
"phase": "interview",
"pipeline_actor": "",
"critic_verdict": "",
"scores_history": [],
"flags": [],
"started_at": "{ISO timestamp}",
"updated_at": "{ISO timestamp}"
}
Note: No transcript_path field - hook will add it during claiming.
Store pending directory path for subsequent operations:
BEAST_DIR=".beast-plan/pending-{timestamp}"{BEAST_DIR}/CONTEXT.md, {BEAST_DIR}/iterations/, etc.Proceed to Phase 1.
Goal: Resolve all ambiguity before research begins.
Explore the codebase to understand context:
Task(subagent_type="oh-my-claudecode:explore-medium", model="sonnet", ...) or direct Glob/Grep/ReadIdentify 3-7 gray areas across these dimensions:
Present gray areas as a numbered markdown list to the human.
Follow up on vague answers one at a time until all gray areas are resolved.
Write .beast-plan/CONTEXT.md with:
# Beast-Plan Context
## Task Description
[Original request]
## Codebase Summary
[Tech stack, project structure, key patterns]
## Decisions
1. [Gray area]: [Decision made]
2. ...
## Scope
### In Scope
- [Item]
### Out of Scope
- [Item]
## Constraints
[Any technical constraints, performance requirements, etc.]
Update state.json: Keep phase as "interview", pipeline_actor as ""
Emit <bp-phase-done>
The Stop hook will inject a prompt telling you to run research. Follow its instructions:
Read .beast-plan/CONTEXT.md
Spawn researcher:
Task(subagent_type="beast-plan:researcher", model="sonnet", prompt=<assembled context>)
Fallback: If beast-plan:researcher is not available as a subagent type, read the agent file at the plugin's agents/researcher.md and inline its instructions as a prompt prefix.
Domain Detection: The hook automatically discovers relevant skills based on the task description. If domain-specific skills are detected (e.g., marketing, frontend design), their content will be injected into the researcher prompt to provide specialized context.
Write output to .beast-plan/RESEARCH.md
Update state.json: phase → "research"
Emit <bp-phase-done>
The Stop hook drives this loop. For each actor transition, you:
Read files specified by the hook prompt
Assemble context into a single Task prompt (keep under ~10k tokens):
Spawn agent:
Task(subagent_type="beast-plan:{actor}", model="{model}", prompt=<assembled context>)
Fallback: If the subagent type is not available, read the agent file from the plugin's agents/ directory and inline its content as a prompt prefix.
Write output to .beast-plan/iterations/NN/{output-file}.md
Update state.json (phase, pipeline_actor, verdict if critic, scores if critic)
Emit <bp-phase-done>
| Actor | Subagent Type | Model | Reads | Writes |
|---|---|---|---|---|
| Planner | beast-plan:planner | opus | CONTEXT.md, RESEARCH.md, (prior feedback if revision) | iterations/NN/PLAN.md |
| Skeptic | beast-plan:skeptic | opus | iterations/NN/PLAN.md, CONTEXT.md summary | iterations/NN/SKEPTIC-REPORT.md |
| TDD Reviewer | beast-plan:tdd-reviewer | sonnet | iterations/NN/PLAN.md, iterations/NN/SKEPTIC-REPORT.md | iterations/NN/TDD-REPORT.md |
| Critic | beast-plan:critic | opus | iterations/NN/PLAN.md, all reports, CONTEXT.md | iterations/NN/CRITIC-REPORT.md |
The hook reads the verdict from state.json and routes:
NEEDS_RE_RESEARCH: Triggers researcher re-run before plannerNEEDS_HUMAN_INPUT: Pauses pipeline for human interactioniterations/NN/PLAN.md.beast-plan/FINAL-PLAN.md (copy of approved plan)~/.claude/plans/beast-plan-{session}.mdphase → "finalize"<bp-phase-done> (hook will tell you to emit <bp-complete>){
"active": true, // false when session ends
"session_id": "string", // unique session identifier
"task_description": "string",
"iteration": 1, // current iteration (1-indexed)
"max_iterations": 5,
"tdd_enabled": true,
"phase": "interview|research|pipeline|finalize|complete|max_iterations",
"pipeline_actor": "planner|skeptic|tdd-reviewer|critic|\"\"",
"critic_verdict": "APPROVED|REVISE|REJECT|\"\"",
"scores_history": [ // score from each iteration
{"iteration": 1, "score": 17, "breakdown": {...}}
],
"flags": [], // special flags from critic
"detected_skills": [], // auto-discovered domain skills from interview
"started_at": "ISO",
"updated_at": "ISO"
}
npx claudepluginhub chornomorets/beast-plan --plugin beast-planOrchestrates multi-step pre-implementation planning: project research, stakeholder interviews, external LLM review, then TDD plans. Use for features needing structured analysis before coding.