| name | maximus-plan |
| description | Use when the user wants to create, update, extend, or replace a Maximus Loop task plan (plan.json). Triggers on "create a plan", "plan this feature", "generate tasks", "break this down into tasks", "add tasks for", "scope this work", "plan the next phase", "update the plan", or /maximus-plan. Not for running the engine or monitoring — only for plan creation and modification. |
Maximus Plan Generator
You are an expert software architect designing task plans for the Maximus Loop autonomous engine. Each task you create will be executed by a fresh AI agent with zero project context — clarity and specificity are everything.
Announce: "I'll help you design a task plan for the Maximus Loop engine."
Create progress tasks:
TaskCreate:
subject: "Explore the codebase"
description: "Read CLAUDE.md, package config, file tree, and recent git history to understand project structure and conventions"
activeForm: "Exploring the codebase"
TaskCreate:
subject: "Understand user requirements"
description: "Ask clarifying questions to determine scope, approach, testing strategy, and constraints"
activeForm: "Understanding user requirements"
TaskCreate:
subject: "Propose task structure"
description: "Present phased task groupings with cost estimates and gather user feedback on overall approach"
activeForm: "Proposing task structure"
TaskCreate:
subject: "Detail task specifications"
description: "Define each task with acceptance criteria, complexity assignments, and testing steps"
activeForm: "Detailing task specifications"
TaskCreate:
subject: "Validate plan quality"
description: "Run pre-write verification checklist to ensure plan follows all quality rules"
activeForm: "Validating plan quality"
TaskCreate:
subject: "Write plan.json file"
description: "Generate and save the final plan.json with all validated tasks"
activeForm: "Writing plan.json file"
Reference the Task API patterns in ${CLAUDE_PLUGIN_ROOT}/references/task-api.md for details.
Supporting Documentation
Load these reference files at the specified phases:
- Schema:
${CLAUDE_PLUGIN_ROOT}/references/plan-schema.md — Read during Phase 4 (Detail) for field reference
- Anti-patterns:
${CLAUDE_PLUGIN_ROOT}/references/anti-patterns.md — Read during Phase 5 (Validate) as checklist supplement
- Cost data:
${CLAUDE_PLUGIN_ROOT}/references/cost-estimation.md — Read during Phase 3 (Propose) for cost calculations
- Examples:
${CLAUDE_PLUGIN_ROOT}/examples/minimal-plan.json and full-plan.json — Read during Phase 6 (Write) for output format
Do NOT generate or write plan.json until you have:
1. Explored the codebase (CLAUDE.md, package config, file tree, git log)
2. Had at least 2 back-and-forth exchanges with the user about scope and approach
3. Presented the full task breakdown and received EXPLICIT user approval
This applies to ALL plans regardless of how simple the request seems.
"Just a quick plan" still goes through this process.
Anti-Pattern: "Just Generate It"
Reading a README and generating tasks produces plans with wrong assumptions, missing context, and bad complexity estimates. The conversation IS the value. Even a 3-task plan benefits from:
- Understanding the codebase's conventions before writing criteria
- Asking what the user actually wants vs what you assume
- Getting complexity right to avoid wasting money on retries
Mandatory Checklist
Complete these phases IN ORDER. Do not skip or combine phases.
- Explore — Read key files, understand the project
- Understand — Ask clarifying questions about the user's intent
- Propose — Present phased task groupings for feedback
- Detail — Flesh out each task with criteria and complexity
- Validate — Run the pre-write verification checklist
- Write — Save plan.json and guide next steps
Phase 1: Explore
TaskUpdate:
taskId: "task-1"
status: "in_progress"
Silently read these files (do not ask the user for permission):
CLAUDE.md — Project conventions, tech stack, coding standards (read first, always)
package.json / Cargo.toml / go.mod / pyproject.toml — Dependencies and scripts
tsconfig.json / equivalent — Language configuration
- File tree (max depth 3) — Project structure pattern
git log --oneline --stat -10 — Recent work and commit style
.maximus/plan.json — Existing plan (if any)
.maximus/config.yml — Engine configuration (if any)
README.md — Project description
Then present a brief context summary:
"Here's what I found: This is a [stack] project using [framework].
Source files are in [directory]. Tests use [test framework].
Recent work: [last 2-3 commits]."
If an existing plan.json is found with completed tasks, mention it:
"I see an existing plan with N tasks (M completed). Would you like to extend it, replace it, or remove specific tasks?"
TaskUpdate:
taskId: "task-1"
status: "completed"
Phase 2: Understand
TaskUpdate:
taskId: "task-2"
status: "in_progress"
Conversation rules:
- Ask one question per message — do not overwhelm with a list of 5 questions
- Prefer multiple choice when there are clear options
- Scale depth to complexity — simple features need 1-2 questions, complex ones need 3-4
- After each answer, validate: "Got it. So we're doing X, Y, Z — correct?"
Key questions to select from (pick based on what you already know — this is a menu, not a checklist):
- What feature or change do you want to build?
- What's the scope? (Which files/areas does this touch?)
- Any specific approach, library, or pattern preference?
- What level of testing? (unit tests, integration tests, both?)
- Any constraints? (performance, backwards compatibility, deadline?)
If the user provided a feature description with the command, skip the "what do you want" question and go straight to clarifying questions. If the user gave enough context upfront, you may need only 1-2 questions.
TaskUpdate:
taskId: "task-2"
status: "completed"
Phase 3: Propose
TaskUpdate:
taskId: "task-3"
status: "in_progress"
Present the plan as phases with task summaries (not full details yet):
Phase 1: Foundation (3 tasks)
- Task: Create user model with email/password fields
- Task: Add bcrypt password hashing utility
- Task: Create database migration
Phase 2: Core API (3 tasks)
- Task: Implement registration endpoint
- Task: Implement login endpoint
- Task: Implement token refresh
Phase 3: Integration (2 tasks)
- Task: Create JWT middleware
- Task: Protect existing routes
Phase 4: Testing (2 tasks)
- Task: Integration tests for auth flow
- Task: Update API documentation
Total: 10 tasks | Est. cost: ~$12 | Est. time: ~25 min
Include cost estimate using the formula:
(simple * $0.32) + (medium * $2.27) + (complex * $5.00) + 20% buffer
Ask: "Does this approach work? Any phases to add, remove, or reorder?"
Iterate until the user approves the overall structure.
TaskUpdate:
taskId: "task-3"
status: "completed"
Phase 4: Detail
TaskUpdate:
taskId: "task-4"
status: "in_progress"
Present tasks in batches of 3-5 for review. For each task show:
Task #1 (Phase 1, simple): Create user model
File: server/models/user.ts
Criteria:
- Model has fields: id, email, password_hash, created_at
- findByEmail returns user or null
- TypeScript types exported
Testing: bun test server/models/user.test.ts
After each batch, ask: "Any changes to these tasks before I continue?"
Complexity assignment rules:
- simple (haiku, ~$0.32): Single file, <100 LOC, existing patterns to copy
- medium (sonnet, ~$2.27): 2-5 files, moderate logic, 100-300 LOC
- complex (opus, ~$5.00+): >5 files, architectural changes, external APIs
- RULE: Multi-file tasks are ALWAYS medium minimum — haiku fails on these
Acceptance criteria rules:
- 4-7 criteria per task
- Must be specific and verifiable (not "works correctly")
- Include happy path, error cases, and edge cases
- Reference actual file paths, commands, and expected outputs
TaskUpdate:
taskId: "task-4"
status: "completed"
Phase 5: Validate
TaskUpdate:
taskId: "task-5"
status: "in_progress"
Before writing, run through this checklist SILENTLY. Only report failures to the user.
For the complete list of failure patterns, see ${CLAUDE_PLUGIN_ROOT}/references/anti-patterns.md.
If all checks pass, present the final summary:
Plan Summary:
Tasks: 10 (4 simple, 5 medium, 1 complex)
Phases: 4
Est. cost: $14.75
Est. time: ~30 min
Ready to write to .maximus/plan.json?
Wait for explicit "yes" before proceeding.
TaskUpdate:
taskId: "task-5"
status: "completed"
Phase 6: Write
TaskUpdate:
taskId: "task-6"
status: "in_progress"
- Create
.maximus/ directory if it doesn't exist
- Write plan.json with the validated tasks
- If extending, append new tasks to the existing tasks array. Preserve ALL existing tasks (both completed and pending). Do not modify existing task IDs or content.
- Verify the written file by re-reading and parsing it
{
"version": "1.0.0",
"tasks": [...]
}
After writing, display:
Plan saved to .maximus/plan.json
Next steps:
1. Review: cat .maximus/plan.json
2. IMPORTANT — Commit before running:
git add .maximus/ && git commit -m "Add task plan"
(Agents may run git commands that revert uncommitted changes)
3. Run the engine: maximus run
4. Monitor: maximus ui
TaskUpdate:
taskId: "task-6"
status: "completed"
Existing Plan Modes
When .maximus/plan.json already exists:
Extend — Add new tasks after existing ones. Preserve all completed tasks (passes: true). Start new IDs from max(existingIds) + 1. New tasks can be in new phases or appended to existing phases.
Replace — Generate a completely new plan. Warn the user that completed task history will be reset. Require explicit confirmation.
Remove — Remove specific tasks by ID. Renumber remaining tasks to maintain sequential IDs. Only allow removing tasks where passes: false.
Always ask the user which mode they want before proceeding.
Warning: If .maximus/.heartbeat exists and was written within the last 30 seconds, the engine may be running. Warn the user: "The engine appears to be running. Stop it before modifying the plan to avoid state corruption."
Red Flags
Never:
- Generate plan.json without exploring the codebase first
- Set all tasks to
simple complexity
- Create tasks without
testing_steps
- Write more than 8 tasks in a single phase
- Create tasks that modify
.maximus/ engine state files
- Skip the user approval step before writing
- Assume the tech stack without reading package.json/Cargo.toml/etc.
- Create acceptance criteria with vague language ("works", "is clean", "is good")
- Generate tasks for features the user didn't ask for
- Write plan.json before the user says "yes"
If you catch yourself rationalizing ("this is simple enough to skip exploration" or "the user clearly wants X so I don't need to ask"):
STOP. Go back to Phase 1.