@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,181 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: todo
|
|
3
|
+
description: "File-based persistent todos. Add, list, complete — survives sessions."
|
|
4
|
+
allowed-tools: Read, Write, Bash, Glob, Grep
|
|
5
|
+
argument-hint: "add <description> | list [theme] | done <NNN>"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# /pbr:todo — Persistent File-Based Todos
|
|
9
|
+
|
|
10
|
+
## Why File-Based
|
|
11
|
+
|
|
12
|
+
Native Claude Code Tasks are session-scoped — they vanish when the conversation ends. Plan-Build-Run todos are individual `.md` files in `.planning/todos/` that persist across sessions, context resets, and compactions.
|
|
13
|
+
|
|
14
|
+
## Subcommands
|
|
15
|
+
|
|
16
|
+
Parse `$ARGUMENTS` to determine the subcommand:
|
|
17
|
+
|
|
18
|
+
### `add <description>`
|
|
19
|
+
|
|
20
|
+
1. Ensure `.planning/todos/pending/` directory exists
|
|
21
|
+
2. Generate NNN: scan **both** `.planning/todos/pending/` and `.planning/todos/done/` for the highest existing number, then increment by 1 (zero-padded to 3 digits)
|
|
22
|
+
3. Generate slug: take the first ~4 meaningful words from the description, lowercase, hyphen-separated (e.g., "Add rate limiting to login" → `add-rate-limiting-login`)
|
|
23
|
+
4. Infer theme from description (e.g., "auth" → security, "test" → testing, "UI" → frontend, "refactor" → quality)
|
|
24
|
+
5. Check for duplicates — read existing pending todos, if a similar one exists, ask user via AskUserQuestion
|
|
25
|
+
6. Create `.planning/todos/pending/{NNN}-{slug}.md`:
|
|
26
|
+
|
|
27
|
+
```yaml
|
|
28
|
+
---
|
|
29
|
+
title: "{description}"
|
|
30
|
+
status: pending
|
|
31
|
+
priority: P2
|
|
32
|
+
source: conversation
|
|
33
|
+
created: {YYYY-MM-DD}
|
|
34
|
+
theme: {inferred-theme}
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Goal
|
|
38
|
+
|
|
39
|
+
{description expanded into a clear goal statement}
|
|
40
|
+
|
|
41
|
+
## Scope
|
|
42
|
+
|
|
43
|
+
{any relevant context from the current conversation, or bullet points of what's in/out of scope}
|
|
44
|
+
|
|
45
|
+
## Acceptance Criteria
|
|
46
|
+
|
|
47
|
+
- [ ] {primary acceptance criterion derived from description}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
7. Update STATE.md Pending Todos section
|
|
51
|
+
|
|
52
|
+
If the Write fails, display:
|
|
53
|
+
```
|
|
54
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
55
|
+
║ ERROR ║
|
|
56
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
57
|
+
|
|
58
|
+
Failed to write todo file.
|
|
59
|
+
|
|
60
|
+
**To fix:** Check that `.planning/todos/pending/` exists and is writable.
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
8. Confirm with branded output:
|
|
64
|
+
```
|
|
65
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
66
|
+
PLAN-BUILD-RUN ► TODO ADDED ✓
|
|
67
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
68
|
+
|
|
69
|
+
**Todo {NNN}:** {description}
|
|
70
|
+
|
|
71
|
+
───────────────────────────────────────────────────────────────
|
|
72
|
+
|
|
73
|
+
## ▶ Next Up
|
|
74
|
+
|
|
75
|
+
**Work on it now** or see your task list
|
|
76
|
+
|
|
77
|
+
`/pbr:quick`
|
|
78
|
+
|
|
79
|
+
<sub>`/clear` first → fresh context window</sub>
|
|
80
|
+
|
|
81
|
+
───────────────────────────────────────────────────────────────
|
|
82
|
+
|
|
83
|
+
**Also available:**
|
|
84
|
+
- `/pbr:todo list` — see all pending todos
|
|
85
|
+
- `/pbr:status` — see project status
|
|
86
|
+
|
|
87
|
+
───────────────────────────────────────────────────────────────
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### `list [theme]`
|
|
91
|
+
|
|
92
|
+
1. Read all files in `.planning/todos/pending/`
|
|
93
|
+
2. Parse frontmatter from each
|
|
94
|
+
3. If theme filter provided, filter by theme
|
|
95
|
+
4. Display as table:
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
Pending Todos:
|
|
99
|
+
| # | Title | Priority | Theme | Created |
|
|
100
|
+
|---|-------|----------|-------|---------|
|
|
101
|
+
| 074 | Status-line customization options | P2 | capability | 2026-02-10 |
|
|
102
|
+
| 075 | Add WebSearch/WebFetch/Context7 to researcher | P2 | capability | 2026-02-10 |
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
5. Offer actions with branded routing:
|
|
106
|
+
```
|
|
107
|
+
───────────────────────────────────────────────────────────────
|
|
108
|
+
|
|
109
|
+
## ▶ Next Up
|
|
110
|
+
|
|
111
|
+
**Pick a todo** — mark one done or start working
|
|
112
|
+
|
|
113
|
+
`/pbr:todo done <NNN>`
|
|
114
|
+
|
|
115
|
+
───────────────────────────────────────────────────────────────
|
|
116
|
+
|
|
117
|
+
**Also available:**
|
|
118
|
+
- `/pbr:quick` — work on one now
|
|
119
|
+
- `/pbr:status` — see project status
|
|
120
|
+
|
|
121
|
+
───────────────────────────────────────────────────────────────
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### `done <NNN>`
|
|
125
|
+
|
|
126
|
+
1. Find `.planning/todos/pending/{NNN}-*.md` (match by number prefix)
|
|
127
|
+
2. If not found, display:
|
|
128
|
+
```
|
|
129
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
130
|
+
║ ERROR ║
|
|
131
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
132
|
+
|
|
133
|
+
Todo {NNN} not found in pending todos.
|
|
134
|
+
|
|
135
|
+
**To fix:** Run `/pbr:todo list` to see available numbers.
|
|
136
|
+
```
|
|
137
|
+
3. Move file to `.planning/todos/done/{NNN}-{slug}.md`
|
|
138
|
+
4. Update frontmatter: set `status: done` and add `completed: {YYYY-MM-DD}`
|
|
139
|
+
5. Update STATE.md
|
|
140
|
+
6. Confirm with branded output:
|
|
141
|
+
```
|
|
142
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
143
|
+
PLAN-BUILD-RUN ► TODO COMPLETED ✓
|
|
144
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
145
|
+
|
|
146
|
+
**Todo {NNN}:** {title}
|
|
147
|
+
|
|
148
|
+
───────────────────────────────────────────────────────────────
|
|
149
|
+
|
|
150
|
+
## ▶ Next Up
|
|
151
|
+
|
|
152
|
+
**See remaining tasks**
|
|
153
|
+
|
|
154
|
+
`/pbr:todo list`
|
|
155
|
+
|
|
156
|
+
<sub>`/clear` first → fresh context window</sub>
|
|
157
|
+
|
|
158
|
+
───────────────────────────────────────────────────────────────
|
|
159
|
+
|
|
160
|
+
**Also available:**
|
|
161
|
+
- `/pbr:continue` — execute next logical step
|
|
162
|
+
- `/pbr:status` — see project status
|
|
163
|
+
|
|
164
|
+
───────────────────────────────────────────────────────────────
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### No arguments
|
|
168
|
+
|
|
169
|
+
Show a brief summary: count of pending todos, grouped by theme, plus usage hint.
|
|
170
|
+
|
|
171
|
+
## State Integration
|
|
172
|
+
|
|
173
|
+
After any todo operation, update the "Pending Todos" section of STATE.md with the current count and list.
|
|
174
|
+
|
|
175
|
+
## Git Integration
|
|
176
|
+
|
|
177
|
+
Reference: `skills/shared/commit-planning-docs.md` for the standard commit pattern.
|
|
178
|
+
|
|
179
|
+
If `planning.commit_docs: true` in config, commit todo changes:
|
|
180
|
+
- `docs(planning): add todo {NNN}`
|
|
181
|
+
- `docs(planning): complete todo {NNN}`
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# CONTEXT.md Template
|
|
2
|
+
|
|
3
|
+
> Referenced by: begin skill (Step 9c), discuss skill, plan skill
|
|
4
|
+
> Created during /pbr:begin. Updated by /pbr:discuss and /pbr:plan --assumptions.
|
|
5
|
+
|
|
6
|
+
## Structure
|
|
7
|
+
|
|
8
|
+
```markdown
|
|
9
|
+
# Project Context
|
|
10
|
+
|
|
11
|
+
## Locked Decisions
|
|
12
|
+
|
|
13
|
+
{Technology choices, architecture decisions, and constraints that are NON-NEGOTIABLE.
|
|
14
|
+
These MUST be honored by every plan and executor — no exceptions.}
|
|
15
|
+
|
|
16
|
+
| Decision | Rationale | Locked By |
|
|
17
|
+
|----------|-----------|-----------|
|
|
18
|
+
| {e.g., "Use TypeScript"} | {User preference, team skill} | User |
|
|
19
|
+
| {e.g., "PostgreSQL via Supabase"} | {Existing infrastructure} | User |
|
|
20
|
+
|
|
21
|
+
## User Constraints
|
|
22
|
+
|
|
23
|
+
{Budget, timeline, skill level, hosting, team size — factors that shape planning}
|
|
24
|
+
|
|
25
|
+
- {e.g., "Solo developer, no team"}
|
|
26
|
+
- {e.g., "Deploy to Hetzner VPS"}
|
|
27
|
+
- {e.g., "Must work offline"}
|
|
28
|
+
|
|
29
|
+
## Deferred Ideas
|
|
30
|
+
|
|
31
|
+
{Features explicitly moved to v2 or out-of-scope. Plans MUST NOT include these.}
|
|
32
|
+
|
|
33
|
+
| Idea | Reason Deferred |
|
|
34
|
+
|------|----------------|
|
|
35
|
+
| {feature} | {reason} |
|
|
36
|
+
|
|
37
|
+
## Claude's Discretion Areas
|
|
38
|
+
|
|
39
|
+
{Areas where the planner can make implementation choices without asking the user.
|
|
40
|
+
Document the choice made and rationale when exercised.}
|
|
41
|
+
|
|
42
|
+
| Area | Choice Made | Rationale |
|
|
43
|
+
|------|------------|-----------|
|
|
44
|
+
| {e.g., "State management library"} | {e.g., "Zustand"} | {e.g., "Lightweight, fits project size"} |
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Rules
|
|
48
|
+
|
|
49
|
+
- Locked decisions are immutable once set — only the user can change them
|
|
50
|
+
- Deferred ideas must NEVER appear in plans
|
|
51
|
+
- Discretion areas are documented when the planner exercises choice
|
|
52
|
+
- Phase-level CONTEXT.md files (in phase directories) override project-level for that phase
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
<!-- Source: agents/integration-checker.md | Purpose: Output format for cross-phase integration verification reports -->
|
|
2
|
+
|
|
3
|
+
```markdown
|
|
4
|
+
# Integration Verification Report
|
|
5
|
+
|
|
6
|
+
> Verified: {date}
|
|
7
|
+
> Phases checked: {comma-separated list of phase IDs}
|
|
8
|
+
> Status: **{INTEGRATED | GAPS_FOUND}**
|
|
9
|
+
|
|
10
|
+
## Phase Dependency Graph
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
Phase 01 (Setup) ──provides──→ Phase 02 (Auth)
|
|
14
|
+
Phase 01 (Setup) ──provides──→ Phase 03 (Core)
|
|
15
|
+
Phase 02 (Auth) ──provides──→ Phase 03 (Core)
|
|
16
|
+
Phase 02 (Auth) ──provides──→ Phase 04 (Frontend)
|
|
17
|
+
Phase 03 (Core) ──provides──→ Phase 04 (Frontend)
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## 1. Export/Import Wiring
|
|
21
|
+
|
|
22
|
+
### Export Status Summary
|
|
23
|
+
|
|
24
|
+
| Phase | Total Exports | Consumed | Orphaned | Unused Imports | Mismatched |
|
|
25
|
+
|-------|--------------|----------|----------|---------------|------------|
|
|
26
|
+
| 01 | {n} | {n} | {n} | {n} | {n} |
|
|
27
|
+
| 02 | {n} | {n} | {n} | {n} | {n} |
|
|
28
|
+
|
|
29
|
+
### Detailed Export Map
|
|
30
|
+
|
|
31
|
+
| Export | Source Phase | Source File:Line | Consumer(s) | Status |
|
|
32
|
+
|--------|------------|-----------------|-------------|--------|
|
|
33
|
+
| DatabaseConnection | 01 | src/db/conn.ts:5 | Phase 02, 03 | CONSUMED |
|
|
34
|
+
| ConfigLoader | 01 | src/config/index.ts:12 | Phase 03 | CONSUMED |
|
|
35
|
+
| ThemeProvider | 04 | src/theme/provider.tsx:8 | - | ORPHANED |
|
|
36
|
+
|
|
37
|
+
### Orphaned Exports (created but never used)
|
|
38
|
+
|
|
39
|
+
| Export | Phase | File | Line | Likely Intended Consumer |
|
|
40
|
+
|--------|-------|------|------|------------------------|
|
|
41
|
+
| {name} | {phase} | {file} | {line} | {best guess or "unknown"} |
|
|
42
|
+
|
|
43
|
+
### Unused Imports (imported but symbol never called)
|
|
44
|
+
|
|
45
|
+
| File | Imported Symbol | Source Module | Line |
|
|
46
|
+
|------|----------------|--------------|------|
|
|
47
|
+
| {file} | {symbol} | {module} | {line} |
|
|
48
|
+
|
|
49
|
+
## 2. API Coverage
|
|
50
|
+
|
|
51
|
+
### Route Coverage Matrix
|
|
52
|
+
|
|
53
|
+
| Route | Method | Handler | Frontend Caller | Auth | Status |
|
|
54
|
+
|-------|--------|---------|----------------|------|--------|
|
|
55
|
+
| /api/users | GET | users.ts:12 | UserList.tsx:34 | YES | COVERED |
|
|
56
|
+
| /api/users/:id | DELETE | users.ts:45 | - | YES | NO_CALLER |
|
|
57
|
+
| /api/settings | PUT | - | Settings.tsx:22 | - | NO_HANDLER |
|
|
58
|
+
|
|
59
|
+
### Uncovered Routes (backend exists, no frontend caller)
|
|
60
|
+
|
|
61
|
+
| Route | Method | Handler | Possible Reason |
|
|
62
|
+
|-------|--------|---------|----------------|
|
|
63
|
+
| {route} | {method} | {file:line} | {guess: future feature, admin only, etc.} |
|
|
64
|
+
|
|
65
|
+
### Missing Handlers (frontend calls, no backend route)
|
|
66
|
+
|
|
67
|
+
| Frontend File | Calls | Expected Route | Expected Method |
|
|
68
|
+
|--------------|-------|---------------|----------------|
|
|
69
|
+
| {file} | fetch('/api/X') | /api/X | GET |
|
|
70
|
+
|
|
71
|
+
## 3. Auth Protection
|
|
72
|
+
|
|
73
|
+
### Route Protection Summary
|
|
74
|
+
|
|
75
|
+
| Category | Total | Protected | Unprotected | Status |
|
|
76
|
+
|----------|-------|-----------|-------------|--------|
|
|
77
|
+
| API Routes | {n} | {n} | {n} | {OK/ISSUES} |
|
|
78
|
+
| Pages | {n} | {n} | {n} | {OK/ISSUES} |
|
|
79
|
+
| Public Routes | {n} | - | {n} | OK |
|
|
80
|
+
|
|
81
|
+
### Unprotected Routes (SECURITY ISSUES)
|
|
82
|
+
|
|
83
|
+
| Route | Method | Handler | Should Protect | Evidence |
|
|
84
|
+
|-------|--------|---------|---------------|----------|
|
|
85
|
+
| {route} | {method} | {file:line} | YES | No auth middleware in chain |
|
|
86
|
+
|
|
87
|
+
### Auth Flow Completeness
|
|
88
|
+
|
|
89
|
+
| Step | Status | Evidence |
|
|
90
|
+
|------|--------|----------|
|
|
91
|
+
| Login form exists | {YES/NO} | {file:line} |
|
|
92
|
+
| Auth API called | {YES/NO} | {file:line} |
|
|
93
|
+
| Token/session created | {YES/NO} | {file:line} |
|
|
94
|
+
| Token sent with requests | {YES/NO} | {file:line} |
|
|
95
|
+
| Auth middleware applied | {YES/NO} | {file:line} |
|
|
96
|
+
| Unauthorized redirect | {YES/NO} | {file:line} |
|
|
97
|
+
|
|
98
|
+
## 4. End-to-End Flows
|
|
99
|
+
|
|
100
|
+
### Flow 1: {Flow Name} - {STATUS}
|
|
101
|
+
|
|
102
|
+
| Step | Description | Component | Exists | Connected to Next | Evidence |
|
|
103
|
+
|------|------------|-----------|--------|-------------------|----------|
|
|
104
|
+
| 1 | {step desc} | {file} | YES | YES | import at L12, call at L45 |
|
|
105
|
+
| 2 | {step desc} | {file} | YES | NO | handler exists but not called |
|
|
106
|
+
| 3 | {step desc} | - | NO | - | File not found |
|
|
107
|
+
|
|
108
|
+
**Break point**: {If BROKEN, where exactly the chain breaks}
|
|
109
|
+
**Impact**: {What user action fails because of this break}
|
|
110
|
+
|
|
111
|
+
### Flow 2: {Flow Name} - {STATUS}
|
|
112
|
+
...
|
|
113
|
+
|
|
114
|
+
## 5. Integration Issues Summary
|
|
115
|
+
|
|
116
|
+
### Critical Issues (system cannot function)
|
|
117
|
+
|
|
118
|
+
1. **{Issue}**: {description with evidence}
|
|
119
|
+
- Impact: {what breaks}
|
|
120
|
+
- Fix: {recommended action}
|
|
121
|
+
|
|
122
|
+
### Warnings (partial functionality)
|
|
123
|
+
|
|
124
|
+
1. **{Issue}**: {description with evidence}
|
|
125
|
+
- Impact: {what's degraded}
|
|
126
|
+
- Fix: {recommended action}
|
|
127
|
+
|
|
128
|
+
### Info (cleanup opportunities)
|
|
129
|
+
|
|
130
|
+
1. **{Issue}**: {description}
|
|
131
|
+
- Fix: {recommended action}
|
|
132
|
+
|
|
133
|
+
## 6. Integration Score
|
|
134
|
+
|
|
135
|
+
| Category | Items Checked | Passed | Failed | Score |
|
|
136
|
+
|----------|--------------|--------|--------|-------|
|
|
137
|
+
| Export wiring | {n} | {n} | {n} | {%} |
|
|
138
|
+
| API coverage | {n} | {n} | {n} | {%} |
|
|
139
|
+
| Auth protection | {n} | {n} | {n} | {%} |
|
|
140
|
+
| E2E flows | {n} | {n} | {n} | {%} |
|
|
141
|
+
| **Overall** | {n} | {n} | {n} | **{%}** |
|
|
142
|
+
|
|
143
|
+
## Recommendations
|
|
144
|
+
|
|
145
|
+
{Prioritized list of actions to fix integration issues}
|
|
146
|
+
|
|
147
|
+
1. **[CRITICAL]** {Most important fix}
|
|
148
|
+
2. **[CRITICAL]** {Second most important}
|
|
149
|
+
3. **[WARNING]** {Important but not blocking}
|
|
150
|
+
4. ...
|
|
151
|
+
```
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Research Summary
|
|
2
|
+
|
|
3
|
+
> Synthesized: {date}
|
|
4
|
+
> Input documents: {count}
|
|
5
|
+
> Sources: {list of document names/paths}
|
|
6
|
+
|
|
7
|
+
## Executive Summary
|
|
8
|
+
|
|
9
|
+
{3-5 sentences maximum. What was researched, the single most important conclusion, and the recommended approach. This paragraph should give a planner enough context to start planning without reading further.}
|
|
10
|
+
|
|
11
|
+
## Recommended Stack
|
|
12
|
+
|
|
13
|
+
{Only include if project-level synthesis. For phase-level, skip this section.}
|
|
14
|
+
|
|
15
|
+
| Layer | Choice | Version | Confidence | Alternatives | Source |
|
|
16
|
+
|-------|--------|---------|------------|-------------|--------|
|
|
17
|
+
| Runtime | {Node.js} | {20.x} | HIGH | {Bun, Deno} | {Doc A, Doc B} |
|
|
18
|
+
| Framework | {Next.js} | {14.x} | HIGH | {Remix, Astro} | {Doc A} |
|
|
19
|
+
| Database | {PostgreSQL} | {16.x} | HIGH | {MySQL} | {Doc A, Doc C} |
|
|
20
|
+
| ORM | {Prisma} | {5.x} | MEDIUM | {Drizzle, TypeORM} | {Doc B} |
|
|
21
|
+
| Auth | {NextAuth.js} | {5.x} | MEDIUM | {Clerk, Auth0} | {Doc A} |
|
|
22
|
+
| Hosting | {Vercel} | - | MEDIUM | {AWS, Railway} | {Doc C} |
|
|
23
|
+
| Testing | {Vitest} | {1.x} | HIGH | {Jest} | {Doc B} |
|
|
24
|
+
|
|
25
|
+
### Stack Rationale
|
|
26
|
+
|
|
27
|
+
{Brief explanation of why this combination. 2-3 sentences.}
|
|
28
|
+
|
|
29
|
+
## Architecture Recommendations
|
|
30
|
+
|
|
31
|
+
{Key architectural decisions informed by research. Use bullet points.}
|
|
32
|
+
|
|
33
|
+
- **Pattern**: {Recommended pattern with rationale}
|
|
34
|
+
- **Data flow**: {How data should move through the system}
|
|
35
|
+
- **Separation**: {How to organize the code}
|
|
36
|
+
- **State**: {How to manage state}
|
|
37
|
+
|
|
38
|
+
## Key Patterns
|
|
39
|
+
|
|
40
|
+
{Patterns to follow during implementation.}
|
|
41
|
+
|
|
42
|
+
| Pattern | When to Use | Example |
|
|
43
|
+
|---------|------------|---------|
|
|
44
|
+
| {Repository} | {Database access} | {Brief code hint} |
|
|
45
|
+
| {Middleware} | {Auth, logging, validation} | {Brief code hint} |
|
|
46
|
+
| {DTO validation} | {API input/output} | {Zod schemas} |
|
|
47
|
+
|
|
48
|
+
## Pitfalls & Warnings
|
|
49
|
+
|
|
50
|
+
{Ranked by severity. These are the things most likely to cause problems.}
|
|
51
|
+
|
|
52
|
+
| # | Pitfall | Severity | Source | Mitigation |
|
|
53
|
+
|---|---------|----------|--------|------------|
|
|
54
|
+
| 1 | {Most critical pitfall} | CRITICAL | {Doc A} | {How to avoid} |
|
|
55
|
+
| 2 | {Second pitfall} | HIGH | {Doc B, Doc C} | {How to avoid} |
|
|
56
|
+
| 3 | {Third pitfall} | MEDIUM | {Doc A} | {How to avoid} |
|
|
57
|
+
|
|
58
|
+
## Contradictions Resolved
|
|
59
|
+
|
|
60
|
+
{Where input documents disagreed and how it was resolved.}
|
|
61
|
+
|
|
62
|
+
| Topic | Position A | Position B | Resolution | Basis |
|
|
63
|
+
|-------|-----------|-----------|------------|-------|
|
|
64
|
+
| {Database} | PostgreSQL (Doc A, C) | MongoDB (Doc B) | PostgreSQL | Majority + S2 source |
|
|
65
|
+
| {Auth} | JWT (Doc A, B) | Sessions (Doc C) | JWT | Majority + better for API |
|
|
66
|
+
|
|
67
|
+
{If any contradictions could not be resolved:}
|
|
68
|
+
|
|
69
|
+
### Unresolved: {Topic}
|
|
70
|
+
|
|
71
|
+
**Options**: {A} vs {B}
|
|
72
|
+
**Trade-offs**: {A is better for X, B is better for Y}
|
|
73
|
+
**Recommendation**: {best guess} `[NEEDS DECISION]`
|
|
74
|
+
|
|
75
|
+
## Open Questions
|
|
76
|
+
|
|
77
|
+
{Things that none of the research documents could definitively answer.}
|
|
78
|
+
|
|
79
|
+
1. {Question} -- Impact: {what planning/implementation is blocked by this}
|
|
80
|
+
2. {Question} -- Impact: {what planning/implementation is blocked by this}
|
|
81
|
+
|
|
82
|
+
## Additional Notes
|
|
83
|
+
|
|
84
|
+
{P3 (Nice to Know) items. Brief bullet points only.}
|
|
85
|
+
|
|
86
|
+
- {Performance tip from Doc A}
|
|
87
|
+
- {Future consideration from Doc C}
|
|
88
|
+
- {Alternative approach worth noting from Doc B}
|
|
89
|
+
|
|
90
|
+
## Sources
|
|
91
|
+
|
|
92
|
+
{Consolidated source list from all input documents.}
|
|
93
|
+
|
|
94
|
+
| # | Document | Key Contribution | Confidence |
|
|
95
|
+
|---|----------|-----------------|------------|
|
|
96
|
+
| 1 | {path/name} | {what it contributed} | {overall confidence} |
|
|
97
|
+
| 2 | {path/name} | {what it contributed} | {overall confidence} |
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Project Roadmap
|
|
2
|
+
|
|
3
|
+
> Generated: {date}
|
|
4
|
+
> Total phases: {n}
|
|
5
|
+
> Estimated plans: {n}
|
|
6
|
+
|
|
7
|
+
## Phase Overview
|
|
8
|
+
|
|
9
|
+
| Phase | Name | Goal | Plans | Wave | Status |
|
|
10
|
+
|-------|------|------|-------|------|--------|
|
|
11
|
+
| 01 | Project Setup | Development environment ready | 2 | 1 | pending |
|
|
12
|
+
| 02 | Authentication | Users can sign in | 3 | 1 | pending |
|
|
13
|
+
| 03 | Core Models | Data layer complete | 4 | 2 | pending |
|
|
14
|
+
| ... | ... | ... | ... | ... | ... |
|
|
15
|
+
|
|
16
|
+
## Dependency Graph
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
Phase 01 ──→ Phase 02 ──→ Phase 04
|
|
20
|
+
└──→ Phase 03 ──→ Phase 05
|
|
21
|
+
└──→ Phase 04
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Phase Details
|
|
25
|
+
|
|
26
|
+
### Phase 01: Project Setup
|
|
27
|
+
|
|
28
|
+
**Goal**: {goal statement}
|
|
29
|
+
**Must-Haves**:
|
|
30
|
+
- {truth 1}
|
|
31
|
+
- {truth 2}
|
|
32
|
+
|
|
33
|
+
**Planned Plans**:
|
|
34
|
+
1. {plan name} (Wave 1, autonomous)
|
|
35
|
+
2. {plan name} (Wave 1, autonomous)
|
|
36
|
+
|
|
37
|
+
**Dependencies**: None (starting phase)
|
|
38
|
+
|
|
39
|
+
### Phase 02: Authentication
|
|
40
|
+
...
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# SUMMARY.md Template
|
|
2
|
+
|
|
3
|
+
> Referenced by: executor agent, build skill, review skill
|
|
4
|
+
> Do not edit this template during execution — copy the structure into your output.
|
|
5
|
+
|
|
6
|
+
## Frontmatter (YAML)
|
|
7
|
+
|
|
8
|
+
```yaml
|
|
9
|
+
---
|
|
10
|
+
phase: "{phase_id}"
|
|
11
|
+
plan: "{plan_id}"
|
|
12
|
+
status: "complete" # complete | partial | checkpoint
|
|
13
|
+
subsystem: "{main subsystem affected}"
|
|
14
|
+
tags:
|
|
15
|
+
- "{tag1}"
|
|
16
|
+
- "{tag2}"
|
|
17
|
+
requires: # What this plan needs from other plans
|
|
18
|
+
- "{plan_id}: {artifact}"
|
|
19
|
+
provides: # What this plan produces for other plans
|
|
20
|
+
- "{export/artifact description}"
|
|
21
|
+
affects:
|
|
22
|
+
- "{affected area 1}"
|
|
23
|
+
- "{affected area 2}"
|
|
24
|
+
tech_stack:
|
|
25
|
+
- "{technology used}"
|
|
26
|
+
key_files:
|
|
27
|
+
- "{file1}: {what it does}"
|
|
28
|
+
- "{file2}: {what it does}"
|
|
29
|
+
key_decisions:
|
|
30
|
+
- "{decision 1}: {rationale}"
|
|
31
|
+
patterns:
|
|
32
|
+
- "{pattern used}: {where}"
|
|
33
|
+
metrics:
|
|
34
|
+
duration_minutes: {n}
|
|
35
|
+
tasks_completed: {n}
|
|
36
|
+
tasks_total: {n}
|
|
37
|
+
commits: {n}
|
|
38
|
+
files_created: {n}
|
|
39
|
+
files_modified: {n}
|
|
40
|
+
deferred:
|
|
41
|
+
- "{thing noticed but not implemented}"
|
|
42
|
+
self_check_failures: # Only present if self-check found issues
|
|
43
|
+
- "{failure description}"
|
|
44
|
+
---
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Body Structure
|
|
48
|
+
|
|
49
|
+
```markdown
|
|
50
|
+
# Plan Summary: {plan_id}
|
|
51
|
+
|
|
52
|
+
## What Was Built
|
|
53
|
+
|
|
54
|
+
{2-3 paragraph description of what was accomplished}
|
|
55
|
+
|
|
56
|
+
## Task Results
|
|
57
|
+
|
|
58
|
+
| Task | Status | Commit | Files | Verify |
|
|
59
|
+
|------|--------|--------|-------|--------|
|
|
60
|
+
| {task_id}: {name} | done | {hash} | {count} | passed |
|
|
61
|
+
|
|
62
|
+
## Key Implementation Details
|
|
63
|
+
|
|
64
|
+
{Important details about HOW things were implemented that future plans need to know}
|
|
65
|
+
|
|
66
|
+
## Known Issues
|
|
67
|
+
|
|
68
|
+
{Any issues discovered during execution that weren't blockers but should be tracked}
|
|
69
|
+
|
|
70
|
+
## Dependencies Provided
|
|
71
|
+
|
|
72
|
+
{What other plans can now depend on — exports, files, APIs created}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Status Values
|
|
76
|
+
|
|
77
|
+
| Status | Meaning |
|
|
78
|
+
|--------|---------|
|
|
79
|
+
| `complete` | All tasks completed successfully |
|
|
80
|
+
| `partial` | Some tasks completed, execution stopped |
|
|
81
|
+
| `checkpoint` | Execution paused at a checkpoint task, waiting for human |
|