---
name: blueprint
description: Transform feature descriptions into well-structured project plans
argument-hint: "[feature description, bug report, or improvement idea]"
---
# Create a Blueprint
**CRITICAL: This is a WORKFLOW SKILL, not Claude's built-in plan mode.**
Do NOT use EnterPlanMode or ExitPlanMode tools.
## Task Tracking Setup
```
TASK_TRACKING = config_read("task_tracking.enabled", "false")
If TASK_TRACKING:
BLUEPRINT_WORKFLOW_ID = "blueprint-{timestamp}"
PHASE_TASKS = {}
PHASES = [
{num: 1, name: "Discovery", active: "Running discovery"},
{num: 2, name: "Research", active: "Researching codebase"},
{num: 3, name: "Research Validation", active: "Validating research"},
{num: 4, name: "Architecture", active: "Designing architecture"},
{num: 5, name: "Capture Learnings", active: "Capturing learnings"},
{num: 6, name: "Write Plan", active: "Writing plan"},
{num: 7, name: "Review Plan", active: "Reviewing plan"},
{num: 8, name: "User Decision", active: "Awaiting user decision"},
{num: 9, name: "Execution", active: "Executing plan"}
]
For each P in PHASES:
PHASE_TASKS[P.num] = TaskCreate(
subject: "Phase {P.num}: {P.name}",
activeForm: P.active,
metadata: {workflow: BLUEPRINT_WORKFLOW_ID, phase: P.num}
)
# Dependencies: phase 4 blocked by 1-3, then sequential 5→6→7→8→9
TaskUpdate(PHASE_TASKS[4], addBlockedBy: [PHASE_TASKS[1], PHASE_TASKS[2], PHASE_TASKS[3]])
TaskUpdate(PHASE_TASKS[5], addBlockedBy: [PHASE_TASKS[4]])
TaskUpdate(PHASE_TASKS[6], addBlockedBy: [PHASE_TASKS[5]])
TaskUpdate(PHASE_TASKS[7], addBlockedBy: [PHASE_TASKS[6]])
TaskUpdate(PHASE_TASKS[8], addBlockedBy: [PHASE_TASKS[7]])
TaskUpdate(PHASE_TASKS[9], addBlockedBy: [PHASE_TASKS[8]])
```
## Feature Description
$ARGUMENTS
**If empty:** Ask user to describe the feature, bug fix, or improvement.
## Workflow
### Phase 1: Discovery
If TASK_TRACKING: TaskUpdate(PHASE_TASKS[1], status: "in_progress")
```
Skill("blueprint-discovery")
```
Handles: Idea Refinement, Interview decision, Acceptance Criteria, Feature Classification.
**Wait for output:** `discovery_result`
If TASK_TRACKING: TaskUpdate(PHASE_TASKS[1], status: "completed")
### Phase 2: Research
If TASK_TRACKING: TaskUpdate(PHASE_TASKS[2], status: "in_progress")
```
Skill("blueprint-research") feature_description, discovery_result
```
Handles: Toolbox resolution, lessons discovery, parallel research agents, spec review.
**Wait for output:** `research_result`
If TASK_TRACKING: TaskUpdate(PHASE_TASKS[2], status: "completed")
### Phase 3: Research Validation
If TASK_TRACKING: TaskUpdate(PHASE_TASKS[3], status: "in_progress")
Quick checkpoint before architecture. Catches misalignment early.
```
research_summary = summarize research_result:
- Key patterns found (2-3 bullets)
- Similar implementations discovered
- Potential constraints/blockers
AskUserQuestion:
question: "Research found: {research_summary}. Continue to planning?"
header: "Validate"
options:
- label: "Looks good"
description: "Proceed to architecture phase"
- label: "Missing something"
description: "Tell me what to research deeper"
- label: "Wrong direction"
description: "Let's revisit the requirements"
```
**If "Missing something":**
```
AskUserQuestion: "What should I dig into?"
→ Run targeted research agent
→ Append to research_result
→ Return to Phase 3
```
**If "Wrong direction":**
```
→ Return to Phase 1 (Discovery)
```
If TASK_TRACKING: TaskUpdate(PHASE_TASKS[3], status: "completed")
### Phase 4: Architecture
If TASK_TRACKING: TaskUpdate(PHASE_TASKS[4], status: "in_progress")
```
Task(majestic-engineer:plan:architect):
prompt: |
Feature: {feature_description}
Research: {research_result.research_findings}
Spec: {research_result.spec_findings}
Skills: {research_result.skill_content}
Lessons: {research_result.lessons_context}
```
**Wait for output:** `architect_output`
If TASK_TRACKING: TaskUpdate(PHASE_TASKS[4], status: "completed")
### Phase 5: Capture Learnings
If TASK_TRACKING: TaskUpdate(PHASE_TASKS[5], status: "in_progress")
```
PRIMARY_DIR = extract main folder from architect_output.file_recommendations
AGENTS_MD = walk up from PRIMARY_DIR until AGENTS.md found (default: root)
If new patterns or decisions discovered:
Edit(AGENTS_MD, append patterns/decisions)
```
If TASK_TRACKING: TaskUpdate(PHASE_TASKS[5], status: "completed")
### Phase 6: Write Plan
If TASK_TRACKING: TaskUpdate(PHASE_TASKS[6], status: "in_progress")
Apply `plan-builder` skill.
Select template based on complexity:
- **Minimal:** Single file changes, simple bugs
- **Standard:** Most features (default)
- **Comprehensive:** Major features, architectural changes
**Output:** Write to `docs/plans/[YYYYMMDDHHMMSS]_
.md`
If TASK_TRACKING: TaskUpdate(PHASE_TASKS[6], status: "completed")
### Phase 7: Review Plan
If TASK_TRACKING: TaskUpdate(PHASE_TASKS[7], status: "in_progress")
```
Task(majestic-engineer:plan:plan-review):
prompt: "Review plan at {plan_path}"
```
Incorporate feedback and update plan file.
If TASK_TRACKING: TaskUpdate(PHASE_TASKS[7], status: "completed")
### Phase 8: User Decision
If TASK_TRACKING: TaskUpdate(PHASE_TASKS[8], status: "in_progress")
Check auto_preview: `config_read("auto_preview", "false")`
If `true`: `Bash(command: "open {plan_path}")`
```
AskUserQuestion:
question: "Blueprint ready at `{plan_path}`. What next?"
options:
- "Build as single task" → Phase 9a
- "Break into small tasks" → Phase 9b
- "Create as single epic" → Phase 9c
- "Deep dive into specifics" → Phase 8.1
- "Preview plan" → Read and display, return to Phase 8
- "Revise" → Ask what to change, return to Phase 6
- "Review and refine" → Apply document-refinement skill, return to Phase 8
```
**IMPORTANT:** After user selects, EXECUTE that action.
If TASK_TRACKING: TaskUpdate(PHASE_TASKS[8], status: "completed")
**If "Review and refine":**
```
Apply document-refinement skill to {plan_path}
→ Auto-fix minor issues in plan file
→ Present refinement report to user
→ Return to Phase 8
```
### Phase 8.1: Deep Dive
```
AskUserQuestion: "What aspect needs deeper research?"
```
Run focused research:
```
Task(majestic-engineer:research:best-practices-researcher):
prompt: "Deep dive: {aspect} for feature {feature}"
Task(majestic-engineer:research:web-research):
prompt: "{aspect} - patterns, examples, gotchas"
```
Update plan with findings, return to Phase 8.
### Phase 9: Execution
If TASK_TRACKING: TaskUpdate(PHASE_TASKS[9], status: "in_progress")
Dispatch on `user_choice` from Phase 8:
**9a. Single Task** (`user_choice == "Build as single task"`):
```
Skill("build-task") "{plan_path}"
```
End workflow.
**9b. Break Into Tasks** (`user_choice == "Break into small tasks"`):
```
Task(majestic-engineer:plan:task-breakdown):
prompt: "Plan: {plan_path}"
```
```
AskUserQuestion:
question: "Tasks added to plan. Create in backlog?"
options:
- "Yes, create tasks" → For each task in plan: Skill("backlog-manager")
- "No, just the plan" → Skip
```
Then offer build:
```
AskUserQuestion:
question: "Start building?"
options:
- "Build all tasks now" → Skill("run-blueprint") "{plan_path}"
- "Done for now" → End workflow
```
**9c. Single Epic** (`user_choice == "Create as single epic"`):
```
Skill("backlog-manager")
```
Update plan with task reference, then offer build:
```
AskUserQuestion:
question: "Start building?"
options:
- "Build all tasks now" → Skill("run-blueprint") "{plan_path}"
- "Done for now" → End workflow
```
If TASK_TRACKING: TaskUpdate(PHASE_TASKS[9], status: "completed")
## Error Handling
| Scenario | Action |
|----------|--------|
| Discovery skill fails | Ask user for AC manually, continue |
| Research skill fails | Continue with architect (degraded) |
| User skips validation | Continue to Phase 4 |
| Architect fails | Log error, ask user to provide approach |
| Plan-review fails | Continue with original plan |
| Task creation fails | Report error, ask user to create manually |
| Config read fails | Use default value |
| User cancels | End workflow gracefully |
## Notes
- Blueprint-only skill - no implementation code
- Research and spec-review run in parallel (inside blueprint-research)
- Architect MUST wait for research completion
- All phases are mandatory except branches (8.1, 9a/9b/9c)
- Always execute user's selected option