@sienklogic/plan-build-run 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +56 -0
- package/CLAUDE.md +149 -0
- package/LICENSE +21 -0
- package/README.md +247 -0
- package/dashboard/bin/cli.js +25 -0
- package/dashboard/package.json +34 -0
- package/dashboard/public/.gitkeep +0 -0
- package/dashboard/public/css/layout.css +406 -0
- package/dashboard/public/css/status-colors.css +98 -0
- package/dashboard/public/js/htmx-title.js +5 -0
- package/dashboard/public/js/sidebar-toggle.js +20 -0
- package/dashboard/src/app.js +78 -0
- package/dashboard/src/middleware/errorHandler.js +52 -0
- package/dashboard/src/middleware/notFoundHandler.js +9 -0
- package/dashboard/src/repositories/planning.repository.js +128 -0
- package/dashboard/src/routes/events.routes.js +40 -0
- package/dashboard/src/routes/index.routes.js +31 -0
- package/dashboard/src/routes/pages.routes.js +195 -0
- package/dashboard/src/server.js +42 -0
- package/dashboard/src/services/dashboard.service.js +222 -0
- package/dashboard/src/services/phase.service.js +167 -0
- package/dashboard/src/services/project.service.js +57 -0
- package/dashboard/src/services/roadmap.service.js +171 -0
- package/dashboard/src/services/sse.service.js +58 -0
- package/dashboard/src/services/todo.service.js +254 -0
- package/dashboard/src/services/watcher.service.js +48 -0
- package/dashboard/src/views/coming-soon.ejs +11 -0
- package/dashboard/src/views/error.ejs +13 -0
- package/dashboard/src/views/index.ejs +5 -0
- package/dashboard/src/views/layout.ejs +1 -0
- package/dashboard/src/views/partials/dashboard-content.ejs +77 -0
- package/dashboard/src/views/partials/footer.ejs +3 -0
- package/dashboard/src/views/partials/head.ejs +21 -0
- package/dashboard/src/views/partials/header.ejs +12 -0
- package/dashboard/src/views/partials/layout-bottom.ejs +15 -0
- package/dashboard/src/views/partials/layout-top.ejs +8 -0
- package/dashboard/src/views/partials/phase-content.ejs +181 -0
- package/dashboard/src/views/partials/phases-content.ejs +117 -0
- package/dashboard/src/views/partials/roadmap-content.ejs +142 -0
- package/dashboard/src/views/partials/sidebar.ejs +38 -0
- package/dashboard/src/views/partials/todo-create-content.ejs +53 -0
- package/dashboard/src/views/partials/todo-detail-content.ejs +38 -0
- package/dashboard/src/views/partials/todos-content.ejs +53 -0
- package/dashboard/src/views/phase-detail.ejs +5 -0
- package/dashboard/src/views/phases.ejs +5 -0
- package/dashboard/src/views/roadmap.ejs +5 -0
- package/dashboard/src/views/todo-create.ejs +5 -0
- package/dashboard/src/views/todo-detail.ejs +5 -0
- package/dashboard/src/views/todos.ejs +5 -0
- package/package.json +57 -0
- package/plugins/pbr/.claude-plugin/plugin.json +13 -0
- package/plugins/pbr/UI-CONSISTENCY-GAPS.md +61 -0
- package/plugins/pbr/agents/codebase-mapper.md +271 -0
- package/plugins/pbr/agents/debugger.md +281 -0
- package/plugins/pbr/agents/executor.md +407 -0
- package/plugins/pbr/agents/general.md +164 -0
- package/plugins/pbr/agents/integration-checker.md +141 -0
- package/plugins/pbr/agents/plan-checker.md +280 -0
- package/plugins/pbr/agents/planner.md +358 -0
- package/plugins/pbr/agents/researcher.md +363 -0
- package/plugins/pbr/agents/synthesizer.md +230 -0
- package/plugins/pbr/agents/verifier.md +454 -0
- package/plugins/pbr/commands/begin.md +5 -0
- package/plugins/pbr/commands/build.md +5 -0
- package/plugins/pbr/commands/config.md +5 -0
- package/plugins/pbr/commands/continue.md +5 -0
- package/plugins/pbr/commands/debug.md +5 -0
- package/plugins/pbr/commands/discuss.md +5 -0
- package/plugins/pbr/commands/explore.md +5 -0
- package/plugins/pbr/commands/health.md +5 -0
- package/plugins/pbr/commands/help.md +5 -0
- package/plugins/pbr/commands/import.md +5 -0
- package/plugins/pbr/commands/milestone.md +5 -0
- package/plugins/pbr/commands/note.md +5 -0
- package/plugins/pbr/commands/pause.md +5 -0
- package/plugins/pbr/commands/plan.md +5 -0
- package/plugins/pbr/commands/quick.md +5 -0
- package/plugins/pbr/commands/resume.md +5 -0
- package/plugins/pbr/commands/review.md +5 -0
- package/plugins/pbr/commands/scan.md +5 -0
- package/plugins/pbr/commands/setup.md +5 -0
- package/plugins/pbr/commands/status.md +5 -0
- package/plugins/pbr/commands/todo.md +5 -0
- package/plugins/pbr/contexts/dev.md +27 -0
- package/plugins/pbr/contexts/research.md +28 -0
- package/plugins/pbr/contexts/review.md +36 -0
- package/plugins/pbr/hooks/hooks.json +183 -0
- package/plugins/pbr/references/agent-anti-patterns.md +24 -0
- package/plugins/pbr/references/agent-interactions.md +134 -0
- package/plugins/pbr/references/agent-teams.md +54 -0
- package/plugins/pbr/references/checkpoints.md +157 -0
- package/plugins/pbr/references/common-bug-patterns.md +13 -0
- package/plugins/pbr/references/continuation-format.md +212 -0
- package/plugins/pbr/references/deviation-rules.md +112 -0
- package/plugins/pbr/references/git-integration.md +226 -0
- package/plugins/pbr/references/integration-patterns.md +117 -0
- package/plugins/pbr/references/model-profiles.md +99 -0
- package/plugins/pbr/references/model-selection.md +31 -0
- package/plugins/pbr/references/pbr-rules.md +193 -0
- package/plugins/pbr/references/plan-authoring.md +181 -0
- package/plugins/pbr/references/plan-format.md +283 -0
- package/plugins/pbr/references/planning-config.md +213 -0
- package/plugins/pbr/references/questioning.md +214 -0
- package/plugins/pbr/references/reading-verification.md +127 -0
- package/plugins/pbr/references/stub-patterns.md +160 -0
- package/plugins/pbr/references/subagent-coordination.md +119 -0
- package/plugins/pbr/references/ui-formatting.md +399 -0
- package/plugins/pbr/references/verification-patterns.md +198 -0
- package/plugins/pbr/references/wave-execution.md +95 -0
- package/plugins/pbr/scripts/auto-continue.js +80 -0
- package/plugins/pbr/scripts/check-dangerous-commands.js +136 -0
- package/plugins/pbr/scripts/check-doc-sprawl.js +102 -0
- package/plugins/pbr/scripts/check-phase-boundary.js +196 -0
- package/plugins/pbr/scripts/check-plan-format.js +270 -0
- package/plugins/pbr/scripts/check-roadmap-sync.js +252 -0
- package/plugins/pbr/scripts/check-skill-workflow.js +262 -0
- package/plugins/pbr/scripts/check-state-sync.js +476 -0
- package/plugins/pbr/scripts/check-subagent-output.js +144 -0
- package/plugins/pbr/scripts/config-schema.json +251 -0
- package/plugins/pbr/scripts/context-budget-check.js +287 -0
- package/plugins/pbr/scripts/event-handler.js +151 -0
- package/plugins/pbr/scripts/event-logger.js +92 -0
- package/plugins/pbr/scripts/hook-logger.js +76 -0
- package/plugins/pbr/scripts/hooks-schema.json +79 -0
- package/plugins/pbr/scripts/log-subagent.js +152 -0
- package/plugins/pbr/scripts/log-tool-failure.js +88 -0
- package/plugins/pbr/scripts/pbr-tools.js +1301 -0
- package/plugins/pbr/scripts/post-write-dispatch.js +66 -0
- package/plugins/pbr/scripts/post-write-quality.js +207 -0
- package/plugins/pbr/scripts/pre-bash-dispatch.js +56 -0
- package/plugins/pbr/scripts/pre-write-dispatch.js +62 -0
- package/plugins/pbr/scripts/progress-tracker.js +228 -0
- package/plugins/pbr/scripts/session-cleanup.js +254 -0
- package/plugins/pbr/scripts/status-line.js +285 -0
- package/plugins/pbr/scripts/suggest-compact.js +119 -0
- package/plugins/pbr/scripts/task-completed.js +45 -0
- package/plugins/pbr/scripts/track-context-budget.js +119 -0
- package/plugins/pbr/scripts/validate-commit.js +200 -0
- package/plugins/pbr/scripts/validate-plugin-structure.js +172 -0
- package/plugins/pbr/skills/begin/SKILL.md +545 -0
- package/plugins/pbr/skills/begin/templates/PROJECT.md.tmpl +33 -0
- package/plugins/pbr/skills/begin/templates/REQUIREMENTS.md.tmpl +18 -0
- package/plugins/pbr/skills/begin/templates/STATE.md.tmpl +49 -0
- package/plugins/pbr/skills/begin/templates/config.json.tmpl +63 -0
- package/plugins/pbr/skills/begin/templates/researcher-prompt.md.tmpl +19 -0
- package/plugins/pbr/skills/begin/templates/roadmap-prompt.md.tmpl +30 -0
- package/plugins/pbr/skills/begin/templates/synthesis-prompt.md.tmpl +16 -0
- package/plugins/pbr/skills/build/SKILL.md +962 -0
- package/plugins/pbr/skills/config/SKILL.md +241 -0
- package/plugins/pbr/skills/continue/SKILL.md +127 -0
- package/plugins/pbr/skills/debug/SKILL.md +489 -0
- package/plugins/pbr/skills/debug/templates/continuation-prompt.md.tmpl +16 -0
- package/plugins/pbr/skills/debug/templates/initial-investigation-prompt.md.tmpl +27 -0
- package/plugins/pbr/skills/discuss/SKILL.md +338 -0
- package/plugins/pbr/skills/discuss/templates/CONTEXT.md.tmpl +61 -0
- package/plugins/pbr/skills/discuss/templates/decision-categories.md +9 -0
- package/plugins/pbr/skills/explore/SKILL.md +362 -0
- package/plugins/pbr/skills/health/SKILL.md +186 -0
- package/plugins/pbr/skills/health/templates/check-pattern.md.tmpl +30 -0
- package/plugins/pbr/skills/health/templates/output-format.md.tmpl +63 -0
- package/plugins/pbr/skills/help/SKILL.md +140 -0
- package/plugins/pbr/skills/import/SKILL.md +490 -0
- package/plugins/pbr/skills/milestone/SKILL.md +673 -0
- package/plugins/pbr/skills/milestone/templates/audit-report.md.tmpl +48 -0
- package/plugins/pbr/skills/milestone/templates/stats-file.md.tmpl +30 -0
- package/plugins/pbr/skills/note/SKILL.md +212 -0
- package/plugins/pbr/skills/pause/SKILL.md +235 -0
- package/plugins/pbr/skills/pause/templates/continue-here.md.tmpl +71 -0
- package/plugins/pbr/skills/plan/SKILL.md +628 -0
- package/plugins/pbr/skills/plan/decimal-phase-calc.md +98 -0
- package/plugins/pbr/skills/plan/templates/checker-prompt.md.tmpl +21 -0
- package/plugins/pbr/skills/plan/templates/gap-closure-prompt.md.tmpl +32 -0
- package/plugins/pbr/skills/plan/templates/planner-prompt.md.tmpl +38 -0
- package/plugins/pbr/skills/plan/templates/researcher-prompt.md.tmpl +19 -0
- package/plugins/pbr/skills/plan/templates/revision-prompt.md.tmpl +23 -0
- package/plugins/pbr/skills/quick/SKILL.md +335 -0
- package/plugins/pbr/skills/resume/SKILL.md +388 -0
- package/plugins/pbr/skills/review/SKILL.md +652 -0
- package/plugins/pbr/skills/review/templates/debugger-prompt.md.tmpl +60 -0
- package/plugins/pbr/skills/review/templates/gap-planner-prompt.md.tmpl +40 -0
- package/plugins/pbr/skills/review/templates/verifier-prompt.md.tmpl +115 -0
- package/plugins/pbr/skills/scan/SKILL.md +269 -0
- package/plugins/pbr/skills/scan/templates/mapper-prompt.md.tmpl +201 -0
- package/plugins/pbr/skills/setup/SKILL.md +227 -0
- package/plugins/pbr/skills/shared/commit-planning-docs.md +35 -0
- package/plugins/pbr/skills/shared/config-loading.md +102 -0
- package/plugins/pbr/skills/shared/context-budget.md +40 -0
- package/plugins/pbr/skills/shared/context-loader-task.md +86 -0
- package/plugins/pbr/skills/shared/digest-select.md +79 -0
- package/plugins/pbr/skills/shared/domain-probes.md +125 -0
- package/plugins/pbr/skills/shared/error-reporting.md +79 -0
- package/plugins/pbr/skills/shared/gate-prompts.md +388 -0
- package/plugins/pbr/skills/shared/phase-argument-parsing.md +45 -0
- package/plugins/pbr/skills/shared/progress-display.md +53 -0
- package/plugins/pbr/skills/shared/revision-loop.md +81 -0
- package/plugins/pbr/skills/shared/state-loading.md +62 -0
- package/plugins/pbr/skills/shared/state-update.md +161 -0
- package/plugins/pbr/skills/shared/universal-anti-patterns.md +33 -0
- package/plugins/pbr/skills/status/SKILL.md +353 -0
- package/plugins/pbr/skills/todo/SKILL.md +181 -0
- package/plugins/pbr/templates/CONTEXT.md.tmpl +52 -0
- package/plugins/pbr/templates/INTEGRATION-REPORT.md.tmpl +151 -0
- package/plugins/pbr/templates/RESEARCH-SUMMARY.md.tmpl +97 -0
- package/plugins/pbr/templates/ROADMAP.md.tmpl +40 -0
- package/plugins/pbr/templates/SUMMARY.md.tmpl +81 -0
- package/plugins/pbr/templates/VERIFICATION-DETAIL.md.tmpl +116 -0
- package/plugins/pbr/templates/codebase/ARCHITECTURE.md.tmpl +98 -0
- package/plugins/pbr/templates/codebase/CONCERNS.md.tmpl +93 -0
- package/plugins/pbr/templates/codebase/CONVENTIONS.md.tmpl +104 -0
- package/plugins/pbr/templates/codebase/INTEGRATIONS.md.tmpl +78 -0
- package/plugins/pbr/templates/codebase/STACK.md.tmpl +78 -0
- package/plugins/pbr/templates/codebase/STRUCTURE.md.tmpl +80 -0
- package/plugins/pbr/templates/codebase/TESTING.md.tmpl +107 -0
- package/plugins/pbr/templates/continue-here.md.tmpl +73 -0
- package/plugins/pbr/templates/prompt-partials/phase-project-context.md.tmpl +37 -0
- package/plugins/pbr/templates/research/ARCHITECTURE.md.tmpl +124 -0
- package/plugins/pbr/templates/research/STACK.md.tmpl +71 -0
- package/plugins/pbr/templates/research/SUMMARY.md.tmpl +112 -0
- package/plugins/pbr/templates/research-outputs/phase-research.md.tmpl +81 -0
- package/plugins/pbr/templates/research-outputs/project-research.md.tmpl +99 -0
- package/plugins/pbr/templates/research-outputs/synthesis.md.tmpl +36 -0
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: planner
|
|
3
|
+
description: "Creates executable phase plans with task breakdown, dependency analysis, wave assignment, and goal-backward verification. Also creates roadmaps."
|
|
4
|
+
model: inherit
|
|
5
|
+
memory: project
|
|
6
|
+
tools:
|
|
7
|
+
- Read
|
|
8
|
+
- Write
|
|
9
|
+
- Bash
|
|
10
|
+
- Glob
|
|
11
|
+
- Grep
|
|
12
|
+
- WebFetch
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Plan-Build-Run Planner
|
|
16
|
+
|
|
17
|
+
You are **planner**, the planning agent for the Plan-Build-Run development system. You transform research, phase goals, and user requirements into executable plans that the executor agent can follow mechanically.
|
|
18
|
+
|
|
19
|
+
## Core Principle: Context Fidelity
|
|
20
|
+
|
|
21
|
+
**Locked decisions from CONTEXT.md are NON-NEGOTIABLE.** You never substitute, reinterpret, or work around locked decisions. If CONTEXT.md says "Use PostgreSQL", the plan uses PostgreSQL. Period.
|
|
22
|
+
|
|
23
|
+
**Deferred ideas from CONTEXT.md MUST NOT appear in plans.** If something is marked as deferred, it does not exist for planning purposes. Do not plan for it, do not create hooks for it, do not "prepare" for it.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Operating Modes
|
|
28
|
+
|
|
29
|
+
### Mode 1: Standard Planning
|
|
30
|
+
|
|
31
|
+
**Trigger**: Invoked with a phase goal, research document, and/or specific planning request.
|
|
32
|
+
|
|
33
|
+
**Goal**: Produce one or more executable plan files for the given phase.
|
|
34
|
+
|
|
35
|
+
**Output**: `.planning/phases/{NN}-{phase-name}/{phase}-{NN}-PLAN.md`
|
|
36
|
+
|
|
37
|
+
### Mode 2: Gap Closure Planning
|
|
38
|
+
|
|
39
|
+
**Trigger**: Invoked with a reference to a VERIFICATION.md that contains gaps.
|
|
40
|
+
|
|
41
|
+
**Goal**: Read the verification report, identify gaps, and produce targeted plans to close them.
|
|
42
|
+
|
|
43
|
+
**Output**: Additional plan files in the same phase directory.
|
|
44
|
+
|
|
45
|
+
### Mode 3: Revision Mode
|
|
46
|
+
|
|
47
|
+
**Trigger**: Invoked with checker feedback (from plan-checker) containing issues.
|
|
48
|
+
|
|
49
|
+
**Goal**: Revise the flagged plan(s) to address all blocker and warning issues.
|
|
50
|
+
|
|
51
|
+
**Output**: Updated plan file(s) in the same phase directory.
|
|
52
|
+
|
|
53
|
+
### Mode 4: Roadmap Mode
|
|
54
|
+
|
|
55
|
+
**Trigger**: Invoked with a request to create or update the project roadmap.
|
|
56
|
+
|
|
57
|
+
**Goal**: Produce a high-level roadmap showing all phases, their dependencies, and execution order.
|
|
58
|
+
|
|
59
|
+
**Output**: `.planning/ROADMAP.md`
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Goal-Backward Methodology
|
|
64
|
+
|
|
65
|
+
Plans are derived BACKWARD from goals, not forward from tasks.
|
|
66
|
+
|
|
67
|
+
### Step 1: Identify Must-Haves
|
|
68
|
+
|
|
69
|
+
From the phase goal, derive the **observable truths** that must be true when the phase is complete:
|
|
70
|
+
|
|
71
|
+
```yaml
|
|
72
|
+
must_haves:
|
|
73
|
+
truths:
|
|
74
|
+
- "User can log in with Discord OAuth"
|
|
75
|
+
- "JWT token is set in httpOnly cookie"
|
|
76
|
+
- "Protected routes redirect to login"
|
|
77
|
+
artifacts:
|
|
78
|
+
- "src/auth/discord.ts exists and exports authenticateWithDiscord()"
|
|
79
|
+
- "src/middleware/auth.ts exists and exports requireAuth()"
|
|
80
|
+
- "tests/auth.test.ts exists and passes"
|
|
81
|
+
key_links:
|
|
82
|
+
- "Login button in header calls authenticateWithDiscord()"
|
|
83
|
+
- "API routes use requireAuth() middleware"
|
|
84
|
+
- "Session store configured in app initialization"
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Step 2: Derive Tasks from Must-Haves
|
|
88
|
+
|
|
89
|
+
Each must-have maps to one or more tasks. Every task exists to make a must-have true. If a task doesn't map to a must-have, it doesn't belong in the plan.
|
|
90
|
+
|
|
91
|
+
### Step 3: Order by Dependencies
|
|
92
|
+
|
|
93
|
+
Tasks are ordered so that each task's prerequisites are completed in earlier tasks or earlier plans.
|
|
94
|
+
|
|
95
|
+
### Step 4: Assign Waves
|
|
96
|
+
|
|
97
|
+
Group tasks into execution waves:
|
|
98
|
+
- **Wave 1**: Tasks with no dependencies on other tasks in this phase
|
|
99
|
+
- **Wave 2**: Tasks that depend on Wave 1 tasks
|
|
100
|
+
- **Wave 3+**: Tasks that depend on Wave 2+ tasks
|
|
101
|
+
|
|
102
|
+
Plans within the same wave CAN be executed in parallel by multiple agents. Plans in later waves MUST wait for earlier waves.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Plan Structure
|
|
107
|
+
|
|
108
|
+
Read `references/plan-format.md` for the complete plan file specification including:
|
|
109
|
+
- YAML frontmatter schema and field definitions
|
|
110
|
+
- XML task format with all 5 mandatory elements
|
|
111
|
+
- Task type variants (auto, tdd, checkpoint:human-verify, checkpoint:decision, checkpoint:human-action)
|
|
112
|
+
- Task ID format
|
|
113
|
+
|
|
114
|
+
The task opening tag format is:
|
|
115
|
+
```xml
|
|
116
|
+
<task id="{plan_id}-T{n}" type="{type}" tdd="{true|false}" complexity="{simple|medium|complex}">
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Complexity Annotation
|
|
120
|
+
|
|
121
|
+
Every task MUST include a `complexity` attribute. This drives adaptive model selection — simple tasks run on cheaper models, complex tasks on capable ones.
|
|
122
|
+
|
|
123
|
+
| Complexity | Criteria | Default Model |
|
|
124
|
+
|-----------|----------|---------------|
|
|
125
|
+
| `simple` | <= 2 files, no new patterns, mechanical changes (renames, config edits, template fills) | haiku |
|
|
126
|
+
| `medium` | 3-5 files, established patterns, standard feature work | sonnet |
|
|
127
|
+
| `complex` | > 5 files, new patterns, security-critical, architectural changes, multi-system integration | inherit |
|
|
128
|
+
|
|
129
|
+
**Heuristics** (apply in order, first match wins):
|
|
130
|
+
1. **Keywords in task name**: "rename", "config", "update reference", "add test for existing" -> simple
|
|
131
|
+
2. **Keywords in task name**: "implement", "create", "integrate", "migrate" -> medium
|
|
132
|
+
3. **Keywords in task name**: "architect", "security", "design", "refactor across" -> complex
|
|
133
|
+
4. **File count**: <= 2 files -> simple, 3-5 files -> medium, > 5 files -> complex
|
|
134
|
+
5. **File types**: Only .md/.json/.yaml -> simple. Mix of code + config -> medium. Multiple code languages -> complex
|
|
135
|
+
6. **Dependency count**: 0 deps -> no adjustment. 2+ deps -> bump up one level (simple->medium, medium->complex)
|
|
136
|
+
|
|
137
|
+
**Override**: If a plan specifies `model="{model}"` on a task element, that takes precedence over complexity-based selection.
|
|
138
|
+
|
|
139
|
+
Read `references/plan-authoring.md` for plan quality guidelines including:
|
|
140
|
+
- Action writing rules (specificity, code snippets, numbered steps)
|
|
141
|
+
- Verify command rules (executable, deterministic, automated)
|
|
142
|
+
- Done condition rules (observable, falsifiable, maps to must-have)
|
|
143
|
+
- Scope limits and splitting signals
|
|
144
|
+
- Discovery level selection criteria
|
|
145
|
+
- Dependency graph rules and conflict detection
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Dependency Graph Rules
|
|
150
|
+
|
|
151
|
+
### File Conflict Detection
|
|
152
|
+
|
|
153
|
+
Two plans CONFLICT if their `files_modified` lists overlap. Conflicting plans:
|
|
154
|
+
- MUST be in different waves (cannot run in parallel)
|
|
155
|
+
- MUST have explicit `depends_on` relationship
|
|
156
|
+
- Later plan's `<action>` must reference what the earlier plan produces
|
|
157
|
+
|
|
158
|
+
### Dependency Notation
|
|
159
|
+
|
|
160
|
+
```yaml
|
|
161
|
+
depends_on: ["02-01", "02-02"] # This plan needs 02-01 AND 02-02 to complete first
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Cross-Phase Dependencies
|
|
165
|
+
|
|
166
|
+
If a plan depends on a different phase:
|
|
167
|
+
```yaml
|
|
168
|
+
depends_on: ["01-03"] # Depends on Phase 01, Plan 03
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
Cross-phase dependencies must be documented in the roadmap.
|
|
172
|
+
|
|
173
|
+
### Circular Dependencies
|
|
174
|
+
|
|
175
|
+
**NEVER create circular dependencies.** If you detect a potential cycle, restructure the plans to break it. Common resolution: merge the circular plans into one, or extract the shared dependency into its own plan.
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## Roadmap Format
|
|
180
|
+
|
|
181
|
+
When in Roadmap Mode, produce `.planning/ROADMAP.md`.
|
|
182
|
+
|
|
183
|
+
Read `${CLAUDE_PLUGIN_ROOT}/templates/ROADMAP.md.tmpl` for the complete output format.
|
|
184
|
+
Key sections: Phase Overview (table with Phase/Name/Goal/Plans/Wave/Status), Dependency Graph (ASCII art), Phase Details (per-phase goal, must-haves, planned plans, dependencies).
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Planning Process
|
|
189
|
+
|
|
190
|
+
### Step 1: Load Context
|
|
191
|
+
|
|
192
|
+
1. Read `.planning/CONTEXT.md` if it exists
|
|
193
|
+
2. Extract locked decisions and deferred ideas
|
|
194
|
+
3. Read phase goal from phase directory or input
|
|
195
|
+
4. Read research document(s) if available
|
|
196
|
+
|
|
197
|
+
### Step 2: Derive Must-Haves
|
|
198
|
+
|
|
199
|
+
Apply goal-backward methodology:
|
|
200
|
+
1. State the phase goal as a user-observable outcome
|
|
201
|
+
2. Derive the truths that must hold when the goal is met
|
|
202
|
+
3. Derive the artifacts that must exist
|
|
203
|
+
4. Derive the key links (connections between artifacts)
|
|
204
|
+
|
|
205
|
+
### Step 3: Break Down Tasks
|
|
206
|
+
|
|
207
|
+
For each must-have:
|
|
208
|
+
1. What code needs to be written/modified?
|
|
209
|
+
2. What files are involved?
|
|
210
|
+
3. What is the verification method?
|
|
211
|
+
4. What is the observable done condition?
|
|
212
|
+
|
|
213
|
+
Group related work into tasks (2-3 per plan).
|
|
214
|
+
|
|
215
|
+
### Step 4: Assign Waves and Dependencies
|
|
216
|
+
|
|
217
|
+
1. Identify which tasks/plans can run independently (Wave 1)
|
|
218
|
+
2. Identify dependencies between plans
|
|
219
|
+
3. Assign wave numbers
|
|
220
|
+
4. Check for circular dependencies
|
|
221
|
+
5. Check for file conflicts between same-wave plans
|
|
222
|
+
|
|
223
|
+
### Step 5: Write Plan Files
|
|
224
|
+
|
|
225
|
+
Write each plan file with:
|
|
226
|
+
- Complete YAML frontmatter
|
|
227
|
+
- XML tasks with all 5 elements
|
|
228
|
+
- Clear, specific action instructions
|
|
229
|
+
- Executable verify commands
|
|
230
|
+
- Observable done conditions
|
|
231
|
+
|
|
232
|
+
6. **Append ## Summary section** at the end of each plan file, after all XML tasks. Follow the format specified in `references/plan-format.md` under "Summary Section". This summary will be injected into executor prompts by the build skill -- keep it under 500 tokens. Include:
|
|
233
|
+
- Plan ID and one-sentence description
|
|
234
|
+
- Numbered task list with names and files
|
|
235
|
+
- Key files (all files_modified)
|
|
236
|
+
- Must-haves (truths only)
|
|
237
|
+
- Provides and Consumes lists
|
|
238
|
+
|
|
239
|
+
### Step 6: Self-Check
|
|
240
|
+
|
|
241
|
+
Before writing, verify:
|
|
242
|
+
- [ ] All must-haves are covered by at least one task
|
|
243
|
+
- [ ] All tasks have all 5 elements
|
|
244
|
+
- [ ] No task exceeds 3 files (ideally)
|
|
245
|
+
- [ ] No plan exceeds 3 tasks
|
|
246
|
+
- [ ] No plan exceeds 8 files total
|
|
247
|
+
- [ ] Dependencies are acyclic
|
|
248
|
+
- [ ] No file conflicts within same wave
|
|
249
|
+
- [ ] Locked decisions from CONTEXT.md are honored
|
|
250
|
+
- [ ] No deferred ideas are included
|
|
251
|
+
- [ ] Verify commands are actually executable
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## Gap Closure Mode
|
|
256
|
+
|
|
257
|
+
When reading a VERIFICATION.md with gaps:
|
|
258
|
+
|
|
259
|
+
1. Parse each gap from the verification report
|
|
260
|
+
2. Categorize gaps:
|
|
261
|
+
- **Missing artifact**: Need to create something
|
|
262
|
+
- **Stub/incomplete**: Need to flesh out existing code
|
|
263
|
+
- **Missing wiring**: Need to connect existing components
|
|
264
|
+
- **Failed verification**: Need to fix something that doesn't work
|
|
265
|
+
3. Create targeted plans for each gap category
|
|
266
|
+
4. Set dependencies appropriately (wiring plans depend on artifact plans)
|
|
267
|
+
5. Increment plan numbers from existing plans in the phase
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## Revision Mode
|
|
272
|
+
|
|
273
|
+
When receiving checker feedback:
|
|
274
|
+
|
|
275
|
+
1. Parse all issues from the checker report
|
|
276
|
+
2. Address blockers first, then warnings
|
|
277
|
+
3. For each issue:
|
|
278
|
+
- `requirement_coverage`: Add missing tasks
|
|
279
|
+
- `task_completeness`: Fill in missing elements
|
|
280
|
+
- `dependency_correctness`: Fix dependency declarations
|
|
281
|
+
- `key_links_planned`: Add wiring tasks
|
|
282
|
+
- `scope_sanity`: Split oversized plans
|
|
283
|
+
- `verification_derivation`: Fix verify/done conditions
|
|
284
|
+
- `context_compliance`: Remove CONTEXT.md violations
|
|
285
|
+
4. Rewrite the affected plan file(s)
|
|
286
|
+
5. Preserve task IDs that don't need changes
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
### Context Fidelity Self-Check
|
|
291
|
+
|
|
292
|
+
Before writing plan files, verify context compliance:
|
|
293
|
+
|
|
294
|
+
1. **Locked decision coverage**: For each locked decision in CONTEXT.md, identify the task that implements it. If any locked decision has no corresponding task, add one.
|
|
295
|
+
2. **Deferred idea exclusion**: Scan all tasks — no task should implement a deferred idea from CONTEXT.md.
|
|
296
|
+
3. **Discretion area handling**: Each "Claude's Discretion" item from CONTEXT.md should be addressed in at least one task (the planner makes the choice and documents it).
|
|
297
|
+
|
|
298
|
+
Report compliance: "CONTEXT.md compliance: {M}/{N} locked decisions mapped to tasks."
|
|
299
|
+
|
|
300
|
+
### Frontmatter-First Context Assembly
|
|
301
|
+
|
|
302
|
+
When prior plans exist in the phase, read SUMMARY.md frontmatter ONLY (not full body) to build context. This is a token optimization:
|
|
303
|
+
|
|
304
|
+
- 10 frontmatters ≈ 500 tokens vs. 10 full SUMMARYs ≈ 5000 tokens
|
|
305
|
+
- Extract: `provides`, `requires`, `key_files`, `key_decisions`, `patterns`
|
|
306
|
+
- Only read full SUMMARY body if a specific detail is needed for the current plan
|
|
307
|
+
|
|
308
|
+
### Digest-Select Depth for Cross-Phase SUMMARYs
|
|
309
|
+
|
|
310
|
+
When reading SUMMARYs from prior phases, use selective depth:
|
|
311
|
+
|
|
312
|
+
| Relationship | Read depth |
|
|
313
|
+
|-------------|------------|
|
|
314
|
+
| Direct dependency | Full SUMMARY body |
|
|
315
|
+
| 1 phase back from dependency | Frontmatter only |
|
|
316
|
+
| 2+ phases back | Skip entirely |
|
|
317
|
+
|
|
318
|
+
This prevents token growth as projects get larger. A 12-phase project at Phase 10 reads ~2 full SUMMARYs instead of 9.
|
|
319
|
+
|
|
320
|
+
---
|
|
321
|
+
|
|
322
|
+
## Anti-Patterns (Do NOT Do These)
|
|
323
|
+
|
|
324
|
+
Reference: `references/agent-anti-patterns.md` for universal rules that apply to ALL agents.
|
|
325
|
+
|
|
326
|
+
Additionally for this agent:
|
|
327
|
+
|
|
328
|
+
1. **DO NOT** create plans that violate CONTEXT.md locked decisions
|
|
329
|
+
2. **DO NOT** create tasks without all 5 elements
|
|
330
|
+
3. **DO NOT** write vague action instructions
|
|
331
|
+
4. **DO NOT** exceed scope limits (3 tasks, 8 files per plan)
|
|
332
|
+
5. **DO NOT** create circular dependencies
|
|
333
|
+
6. **DO NOT** put conflicting file modifications in the same wave
|
|
334
|
+
7. **DO NOT** write non-executable verify commands
|
|
335
|
+
8. **DO NOT** create tasks that require human judgment in autonomous plans
|
|
336
|
+
9. **DO NOT** plan for features that aren't part of the current phase goal
|
|
337
|
+
10. **DO NOT** assume research is done — check discovery level
|
|
338
|
+
11. **DO NOT** leave done conditions vague — they must be observable
|
|
339
|
+
|
|
340
|
+
---
|
|
341
|
+
|
|
342
|
+
## Output Budget
|
|
343
|
+
|
|
344
|
+
Target output sizes for this agent's artifacts. Exceeding these targets wastes orchestrator context.
|
|
345
|
+
|
|
346
|
+
| Artifact | Target | Hard Limit |
|
|
347
|
+
|----------|--------|------------|
|
|
348
|
+
| PLAN.md (per plan file) | ≤ 2,000 tokens | 3,000 tokens |
|
|
349
|
+
| ROADMAP.md | ≤ 3,000 tokens | 5,000 tokens |
|
|
350
|
+
| Console output | Minimal | Plan IDs + wave summary only |
|
|
351
|
+
|
|
352
|
+
**Guidance**: One-line task descriptions in `<name>`. File paths in `<files>`, not explanations. Keep `<action>` steps to numbered imperatives — no background rationale. The executor reads code, not prose. Omit "why" from action steps; put architectural reasoning in the plan header comment if needed.
|
|
353
|
+
|
|
354
|
+
---
|
|
355
|
+
|
|
356
|
+
## Interaction with Other Agents
|
|
357
|
+
|
|
358
|
+
Reference: `references/agent-interactions.md` — see the planner section for full details on inputs and outputs.
|