@sienklogic/plan-build-run 2.0.0 → 2.0.2
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 -56
- package/CLAUDE.md +149 -149
- package/LICENSE +21 -21
- package/README.md +247 -247
- package/dashboard/bin/cli.js +25 -25
- package/dashboard/package.json +34 -34
- package/dashboard/public/css/layout.css +406 -406
- package/dashboard/public/css/status-colors.css +98 -98
- package/dashboard/public/js/htmx-title.js +5 -5
- package/dashboard/public/js/sidebar-toggle.js +20 -20
- package/dashboard/src/app.js +78 -78
- package/dashboard/src/middleware/errorHandler.js +52 -52
- package/dashboard/src/middleware/notFoundHandler.js +9 -9
- package/dashboard/src/repositories/planning.repository.js +128 -128
- package/dashboard/src/routes/events.routes.js +40 -40
- package/dashboard/src/routes/index.routes.js +31 -31
- package/dashboard/src/routes/pages.routes.js +245 -195
- package/dashboard/src/server.js +42 -42
- package/dashboard/src/services/dashboard.service.js +222 -222
- package/dashboard/src/services/phase.service.js +220 -167
- package/dashboard/src/services/project.service.js +57 -57
- package/dashboard/src/services/roadmap.service.js +171 -171
- package/dashboard/src/services/sse.service.js +58 -58
- package/dashboard/src/services/todo.service.js +254 -254
- package/dashboard/src/services/watcher.service.js +48 -48
- package/dashboard/src/views/coming-soon.ejs +11 -11
- package/dashboard/src/views/error.ejs +13 -13
- package/dashboard/src/views/index.ejs +5 -5
- package/dashboard/src/views/layout.ejs +1 -1
- package/dashboard/src/views/partials/dashboard-content.ejs +77 -77
- package/dashboard/src/views/partials/footer.ejs +3 -3
- package/dashboard/src/views/partials/head.ejs +21 -21
- package/dashboard/src/views/partials/header.ejs +12 -12
- package/dashboard/src/views/partials/layout-bottom.ejs +15 -15
- package/dashboard/src/views/partials/layout-top.ejs +8 -8
- package/dashboard/src/views/partials/phase-content.ejs +188 -181
- package/dashboard/src/views/partials/phase-doc-content.ejs +38 -0
- package/dashboard/src/views/partials/phases-content.ejs +117 -117
- package/dashboard/src/views/partials/roadmap-content.ejs +142 -142
- package/dashboard/src/views/partials/sidebar.ejs +38 -38
- package/dashboard/src/views/partials/todo-create-content.ejs +53 -53
- package/dashboard/src/views/partials/todo-detail-content.ejs +38 -38
- package/dashboard/src/views/partials/todos-content.ejs +53 -53
- package/dashboard/src/views/phase-detail.ejs +5 -5
- package/dashboard/src/views/phase-doc.ejs +5 -0
- package/dashboard/src/views/phases.ejs +5 -5
- package/dashboard/src/views/roadmap.ejs +5 -5
- package/dashboard/src/views/todo-create.ejs +5 -5
- package/dashboard/src/views/todo-detail.ejs +5 -5
- package/dashboard/src/views/todos.ejs +5 -5
- package/package.json +57 -57
- package/plugins/cursor-pbr/.cursor-plugin/plugin.json +22 -0
- package/plugins/cursor-pbr/agents/.gitkeep +0 -0
- package/plugins/cursor-pbr/assets/.gitkeep +0 -0
- package/plugins/cursor-pbr/hooks/hooks.json +11 -0
- package/plugins/cursor-pbr/references/.gitkeep +0 -0
- package/plugins/cursor-pbr/rules/.gitkeep +0 -0
- package/plugins/cursor-pbr/skills/.gitkeep +0 -0
- package/plugins/cursor-pbr/templates/.gitkeep +0 -0
- package/plugins/pbr/.claude-plugin/plugin.json +13 -13
- package/plugins/pbr/UI-CONSISTENCY-GAPS.md +61 -61
- package/plugins/pbr/agents/codebase-mapper.md +279 -271
- package/plugins/pbr/agents/debugger.md +281 -281
- package/plugins/pbr/agents/executor.md +428 -407
- package/plugins/pbr/agents/general.md +164 -164
- package/plugins/pbr/agents/integration-checker.md +169 -141
- package/plugins/pbr/agents/plan-checker.md +296 -280
- package/plugins/pbr/agents/planner.md +358 -358
- package/plugins/pbr/agents/researcher.md +363 -363
- package/plugins/pbr/agents/synthesizer.md +230 -230
- package/plugins/pbr/agents/verifier.md +489 -454
- package/plugins/pbr/commands/begin.md +5 -5
- package/plugins/pbr/commands/build.md +5 -5
- package/plugins/pbr/commands/config.md +5 -5
- package/plugins/pbr/commands/continue.md +5 -5
- package/plugins/pbr/commands/debug.md +5 -5
- package/plugins/pbr/commands/discuss.md +5 -5
- package/plugins/pbr/commands/explore.md +5 -5
- package/plugins/pbr/commands/health.md +5 -5
- package/plugins/pbr/commands/help.md +5 -5
- package/plugins/pbr/commands/import.md +5 -5
- package/plugins/pbr/commands/milestone.md +5 -5
- package/plugins/pbr/commands/note.md +5 -5
- package/plugins/pbr/commands/pause.md +5 -5
- package/plugins/pbr/commands/plan.md +5 -5
- package/plugins/pbr/commands/quick.md +5 -5
- package/plugins/pbr/commands/resume.md +5 -5
- package/plugins/pbr/commands/review.md +5 -5
- package/plugins/pbr/commands/scan.md +5 -5
- package/plugins/pbr/commands/setup.md +5 -5
- package/plugins/pbr/commands/status.md +5 -5
- package/plugins/pbr/commands/todo.md +5 -5
- package/plugins/pbr/contexts/dev.md +27 -27
- package/plugins/pbr/contexts/research.md +28 -28
- package/plugins/pbr/contexts/review.md +36 -36
- package/plugins/pbr/hooks/hooks.json +183 -183
- package/plugins/pbr/references/agent-anti-patterns.md +24 -24
- package/plugins/pbr/references/agent-interactions.md +134 -134
- package/plugins/pbr/references/agent-teams.md +54 -54
- package/plugins/pbr/references/checkpoints.md +157 -157
- package/plugins/pbr/references/common-bug-patterns.md +13 -13
- package/plugins/pbr/references/config-reference.md +441 -0
- package/plugins/pbr/references/continuation-format.md +212 -212
- package/plugins/pbr/references/deviation-rules.md +112 -112
- package/plugins/pbr/references/git-integration.md +226 -226
- package/plugins/pbr/references/integration-patterns.md +117 -117
- package/plugins/pbr/references/model-profiles.md +99 -99
- package/plugins/pbr/references/model-selection.md +31 -31
- package/plugins/pbr/references/pbr-rules.md +193 -193
- package/plugins/pbr/references/plan-authoring.md +181 -181
- package/plugins/pbr/references/plan-format.md +287 -283
- package/plugins/pbr/references/planning-config.md +213 -213
- package/plugins/pbr/references/questioning.md +214 -214
- package/plugins/pbr/references/reading-verification.md +127 -127
- package/plugins/pbr/references/stub-patterns.md +160 -160
- package/plugins/pbr/references/subagent-coordination.md +119 -119
- package/plugins/pbr/references/ui-formatting.md +461 -399
- package/plugins/pbr/references/verification-patterns.md +198 -198
- package/plugins/pbr/references/wave-execution.md +95 -95
- package/plugins/pbr/scripts/auto-continue.js +80 -80
- package/plugins/pbr/scripts/check-dangerous-commands.js +136 -136
- package/plugins/pbr/scripts/check-doc-sprawl.js +102 -102
- package/plugins/pbr/scripts/check-phase-boundary.js +196 -196
- package/plugins/pbr/scripts/check-plan-format.js +270 -270
- package/plugins/pbr/scripts/check-roadmap-sync.js +322 -252
- package/plugins/pbr/scripts/check-skill-workflow.js +262 -262
- package/plugins/pbr/scripts/check-state-sync.js +476 -476
- package/plugins/pbr/scripts/check-subagent-output.js +144 -144
- package/plugins/pbr/scripts/config-schema.json +251 -251
- package/plugins/pbr/scripts/context-budget-check.js +287 -287
- package/plugins/pbr/scripts/event-handler.js +151 -151
- package/plugins/pbr/scripts/event-logger.js +92 -92
- package/plugins/pbr/scripts/hook-logger.js +80 -76
- package/plugins/pbr/scripts/hooks-schema.json +79 -79
- package/plugins/pbr/scripts/log-subagent.js +164 -152
- package/plugins/pbr/scripts/log-tool-failure.js +88 -88
- package/plugins/pbr/scripts/pbr-tools.js +1378 -1301
- package/plugins/pbr/scripts/post-write-dispatch.js +66 -66
- package/plugins/pbr/scripts/post-write-quality.js +207 -207
- package/plugins/pbr/scripts/pre-bash-dispatch.js +86 -56
- package/plugins/pbr/scripts/pre-write-dispatch.js +97 -62
- package/plugins/pbr/scripts/progress-tracker.js +281 -228
- package/plugins/pbr/scripts/run-hook.js +92 -0
- package/plugins/pbr/scripts/session-cleanup.js +254 -254
- package/plugins/pbr/scripts/status-line.js +288 -285
- package/plugins/pbr/scripts/suggest-compact.js +119 -119
- package/plugins/pbr/scripts/task-completed.js +45 -45
- package/plugins/pbr/scripts/track-context-budget.js +149 -119
- package/plugins/pbr/scripts/validate-commit.js +200 -200
- package/plugins/pbr/scripts/validate-plugin-structure.js +183 -172
- package/plugins/pbr/scripts/validate-task.js +106 -0
- package/plugins/pbr/skills/begin/SKILL.md +594 -545
- package/plugins/pbr/skills/begin/templates/PROJECT.md.tmpl +33 -33
- package/plugins/pbr/skills/begin/templates/REQUIREMENTS.md.tmpl +18 -18
- package/plugins/pbr/skills/begin/templates/STATE.md.tmpl +49 -49
- package/plugins/pbr/skills/begin/templates/config.json.tmpl +64 -63
- package/plugins/pbr/skills/begin/templates/researcher-prompt.md.tmpl +19 -19
- package/plugins/pbr/skills/begin/templates/roadmap-prompt.md.tmpl +30 -30
- package/plugins/pbr/skills/begin/templates/synthesis-prompt.md.tmpl +16 -16
- package/plugins/pbr/skills/build/SKILL.md +943 -962
- package/plugins/pbr/skills/config/SKILL.md +256 -241
- package/plugins/pbr/skills/continue/SKILL.md +164 -127
- package/plugins/pbr/skills/debug/SKILL.md +515 -489
- package/plugins/pbr/skills/debug/templates/continuation-prompt.md.tmpl +16 -16
- package/plugins/pbr/skills/debug/templates/initial-investigation-prompt.md.tmpl +27 -27
- package/plugins/pbr/skills/discuss/SKILL.md +347 -338
- package/plugins/pbr/skills/discuss/templates/CONTEXT.md.tmpl +61 -61
- package/plugins/pbr/skills/discuss/templates/decision-categories.md +9 -9
- package/plugins/pbr/skills/explore/SKILL.md +378 -362
- package/plugins/pbr/skills/health/SKILL.md +221 -186
- package/plugins/pbr/skills/health/templates/check-pattern.md.tmpl +30 -30
- package/plugins/pbr/skills/health/templates/output-format.md.tmpl +63 -63
- package/plugins/pbr/skills/help/SKILL.md +155 -140
- package/plugins/pbr/skills/import/SKILL.md +504 -490
- package/plugins/pbr/skills/milestone/SKILL.md +704 -673
- package/plugins/pbr/skills/milestone/templates/audit-report.md.tmpl +48 -48
- package/plugins/pbr/skills/milestone/templates/stats-file.md.tmpl +30 -30
- package/plugins/pbr/skills/note/SKILL.md +231 -212
- package/plugins/pbr/skills/pause/SKILL.md +249 -235
- package/plugins/pbr/skills/pause/templates/continue-here.md.tmpl +71 -71
- package/plugins/pbr/skills/plan/SKILL.md +685 -628
- package/plugins/pbr/skills/plan/decimal-phase-calc.md +98 -98
- package/plugins/pbr/skills/plan/templates/checker-prompt.md.tmpl +21 -21
- package/plugins/pbr/skills/plan/templates/gap-closure-prompt.md.tmpl +32 -32
- package/plugins/pbr/skills/plan/templates/planner-prompt.md.tmpl +38 -38
- package/plugins/pbr/skills/plan/templates/researcher-prompt.md.tmpl +19 -19
- package/plugins/pbr/skills/plan/templates/revision-prompt.md.tmpl +23 -23
- package/plugins/pbr/skills/quick/SKILL.md +354 -335
- package/plugins/pbr/skills/resume/SKILL.md +402 -388
- package/plugins/pbr/skills/review/SKILL.md +686 -652
- package/plugins/pbr/skills/review/templates/debugger-prompt.md.tmpl +60 -60
- package/plugins/pbr/skills/review/templates/gap-planner-prompt.md.tmpl +40 -40
- package/plugins/pbr/skills/review/templates/verifier-prompt.md.tmpl +115 -115
- package/plugins/pbr/skills/scan/SKILL.md +304 -269
- package/plugins/pbr/skills/scan/templates/mapper-prompt.md.tmpl +201 -201
- package/plugins/pbr/skills/setup/SKILL.md +253 -227
- package/plugins/pbr/skills/shared/commit-planning-docs.md +35 -35
- package/plugins/pbr/skills/shared/config-loading.md +102 -102
- package/plugins/pbr/skills/shared/context-budget.md +40 -40
- package/plugins/pbr/skills/shared/context-loader-task.md +86 -86
- package/plugins/pbr/skills/shared/digest-select.md +79 -79
- package/plugins/pbr/skills/shared/domain-probes.md +125 -125
- package/plugins/pbr/skills/shared/error-reporting.md +79 -79
- package/plugins/pbr/skills/shared/gate-prompts.md +388 -388
- package/plugins/pbr/skills/shared/phase-argument-parsing.md +45 -45
- package/plugins/pbr/skills/shared/progress-display.md +53 -53
- package/plugins/pbr/skills/shared/revision-loop.md +81 -81
- package/plugins/pbr/skills/shared/state-loading.md +62 -62
- package/plugins/pbr/skills/shared/state-update.md +161 -161
- package/plugins/pbr/skills/shared/universal-anti-patterns.md +33 -33
- package/plugins/pbr/skills/status/SKILL.md +367 -353
- package/plugins/pbr/skills/todo/SKILL.md +198 -181
- package/plugins/pbr/templates/CONTEXT.md.tmpl +52 -52
- package/plugins/pbr/templates/INTEGRATION-REPORT.md.tmpl +151 -151
- package/plugins/pbr/templates/RESEARCH-SUMMARY.md.tmpl +97 -97
- package/plugins/pbr/templates/ROADMAP.md.tmpl +40 -40
- package/plugins/pbr/templates/SUMMARY.md.tmpl +81 -81
- package/plugins/pbr/templates/VERIFICATION-DETAIL.md.tmpl +116 -116
- package/plugins/pbr/templates/codebase/ARCHITECTURE.md.tmpl +98 -98
- package/plugins/pbr/templates/codebase/CONCERNS.md.tmpl +93 -93
- package/plugins/pbr/templates/codebase/CONVENTIONS.md.tmpl +104 -104
- package/plugins/pbr/templates/codebase/INTEGRATIONS.md.tmpl +78 -78
- package/plugins/pbr/templates/codebase/STACK.md.tmpl +78 -78
- package/plugins/pbr/templates/codebase/STRUCTURE.md.tmpl +80 -80
- package/plugins/pbr/templates/codebase/TESTING.md.tmpl +107 -107
- package/plugins/pbr/templates/continue-here.md.tmpl +73 -73
- package/plugins/pbr/templates/prompt-partials/phase-project-context.md.tmpl +37 -37
- package/plugins/pbr/templates/research/ARCHITECTURE.md.tmpl +124 -124
- package/plugins/pbr/templates/research/STACK.md.tmpl +71 -71
- package/plugins/pbr/templates/research/SUMMARY.md.tmpl +112 -112
- package/plugins/pbr/templates/research-outputs/phase-research.md.tmpl +81 -81
- package/plugins/pbr/templates/research-outputs/project-research.md.tmpl +99 -99
- package/plugins/pbr/templates/research-outputs/synthesis.md.tmpl +36 -36
|
@@ -1,181 +1,181 @@
|
|
|
1
|
-
# Plan Authoring Guide
|
|
2
|
-
|
|
3
|
-
Quality guidelines for writing executable plans. Used by planner and plan-checker.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Action Writing Guidelines
|
|
8
|
-
|
|
9
|
-
The `<action>` element is the most important part of the plan. It must be specific enough that the executor agent can follow it mechanically without making design decisions.
|
|
10
|
-
|
|
11
|
-
### Good Action
|
|
12
|
-
```xml
|
|
13
|
-
<action>
|
|
14
|
-
1. Create file `src/auth/discord.ts`
|
|
15
|
-
2. Import `OAuth2Client` from `discord-oauth2` package
|
|
16
|
-
3. Export async function `authenticateWithDiscord(code: string): Promise<User>`
|
|
17
|
-
- Create OAuth2Client with env vars: DISCORD_CLIENT_ID, DISCORD_CLIENT_SECRET
|
|
18
|
-
- Exchange authorization code for access token
|
|
19
|
-
- Fetch user profile from Discord API: GET /api/users/@me
|
|
20
|
-
- Return User object with fields: id, username, avatar, email
|
|
21
|
-
4. Export function `getDiscordAuthUrl(): string`
|
|
22
|
-
- Build OAuth2 authorization URL with scopes: identify, email
|
|
23
|
-
- Include redirect URI from env: DISCORD_REDIRECT_URI
|
|
24
|
-
- Return the URL string
|
|
25
|
-
5. Add to `.env.example`:
|
|
26
|
-
DISCORD_CLIENT_ID=
|
|
27
|
-
DISCORD_CLIENT_SECRET=
|
|
28
|
-
DISCORD_REDIRECT_URI=http://localhost:3000/auth/callback
|
|
29
|
-
</action>
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
### Bad Action
|
|
33
|
-
```xml
|
|
34
|
-
<action>
|
|
35
|
-
Set up Discord OAuth authentication.
|
|
36
|
-
</action>
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
### Action Rules
|
|
40
|
-
|
|
41
|
-
1. **Number the steps** -- executor follows them in order
|
|
42
|
-
2. **Name specific files** -- never say "create necessary files"
|
|
43
|
-
3. **Name specific functions/exports** -- never say "implement the auth logic"
|
|
44
|
-
4. **Include type signatures** -- when the project uses TypeScript
|
|
45
|
-
5. **Reference existing code** -- when modifying files, say what to modify
|
|
46
|
-
6. **Include code snippets** -- for complex patterns or configurations
|
|
47
|
-
7. **Specify environment variables** -- with example values
|
|
48
|
-
8. **Note error handling** -- only when it's a critical part of the task
|
|
49
|
-
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
## Verify Command Guidelines
|
|
53
|
-
|
|
54
|
-
The `<verify>` element must contain commands that the executor can run to check the task is complete.
|
|
55
|
-
|
|
56
|
-
### Good Verify
|
|
57
|
-
```xml
|
|
58
|
-
<verify>
|
|
59
|
-
npx tsc --noEmit
|
|
60
|
-
npm run test -- --grep "discord auth"
|
|
61
|
-
ls -la src/auth/discord.ts
|
|
62
|
-
</verify>
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### Bad Verify
|
|
66
|
-
```xml
|
|
67
|
-
<verify>
|
|
68
|
-
Check that authentication works.
|
|
69
|
-
</verify>
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
### Verify Rules
|
|
73
|
-
|
|
74
|
-
1. **Must be executable** -- actual shell commands, not descriptions
|
|
75
|
-
2. **Must be deterministic** -- same result every time if code is correct
|
|
76
|
-
3. **Prefer automated checks** -- type checking, tests, linting
|
|
77
|
-
4. **Include existence checks** -- `ls` for created files
|
|
78
|
-
5. **Include build checks** -- `npx tsc --noEmit` for TypeScript
|
|
79
|
-
6. **Avoid interactive commands** -- no commands requiring user input
|
|
80
|
-
|
|
81
|
-
---
|
|
82
|
-
|
|
83
|
-
## Done Condition Guidelines
|
|
84
|
-
|
|
85
|
-
The `<done>` element describes the observable outcome, not the implementation activity.
|
|
86
|
-
|
|
87
|
-
### Good Done
|
|
88
|
-
- "User can authenticate via Discord OAuth and is redirected to dashboard"
|
|
89
|
-
- "Auth middleware rejects invalid tokens and passes valid tokens"
|
|
90
|
-
- "All 12 unit tests pass for the auth module"
|
|
91
|
-
|
|
92
|
-
### Bad Done
|
|
93
|
-
- "Code was written"
|
|
94
|
-
- "File was created"
|
|
95
|
-
- "Feature is implemented"
|
|
96
|
-
|
|
97
|
-
### Done Rules
|
|
98
|
-
|
|
99
|
-
1. **Maps to a must-have** -- every done condition traces back to a frontmatter must-have
|
|
100
|
-
2. **Observable** -- describes a state of the system, not an activity
|
|
101
|
-
3. **Falsifiable** -- you can check whether it's true or false
|
|
102
|
-
4. **User-oriented** -- prefer "user can..." over "code does..."
|
|
103
|
-
|
|
104
|
-
---
|
|
105
|
-
|
|
106
|
-
## Scope Limits
|
|
107
|
-
|
|
108
|
-
### Per-Plan Limits
|
|
109
|
-
|
|
110
|
-
| Constraint | Limit | Rationale |
|
|
111
|
-
|-----------|-------|-----------|
|
|
112
|
-
| Tasks per plan | **2-3** | Keeps plans atomic and recoverable |
|
|
113
|
-
| Files per plan | **5-8** | Limits blast radius of failures |
|
|
114
|
-
| Dependencies | **3 max** | Avoids deep dependency chains |
|
|
115
|
-
|
|
116
|
-
### When to Split
|
|
117
|
-
|
|
118
|
-
- More than 3 tasks? Split.
|
|
119
|
-
- More than 8 files? Split.
|
|
120
|
-
- Tasks in different functional areas? Split.
|
|
121
|
-
- Some tasks need human checkpoints, others don't? Split into autonomous and checkpoint plans.
|
|
122
|
-
|
|
123
|
-
### Split Signals
|
|
124
|
-
|
|
125
|
-
| Signal | Action |
|
|
126
|
-
|--------|--------|
|
|
127
|
-
| >3 tasks needed | Split by subsystem -- one plan per subsystem |
|
|
128
|
-
| Multiple unrelated subsystems | One plan per subsystem |
|
|
129
|
-
| >5 files per task | Task is too big -- break it down |
|
|
130
|
-
| Checkpoint + implementation in same plan | Separate the checkpoint into its own plan |
|
|
131
|
-
| Discovery research + implementation | Separate plans -- research plan first |
|
|
132
|
-
|
|
133
|
-
---
|
|
134
|
-
|
|
135
|
-
## Discovery Levels
|
|
136
|
-
|
|
137
|
-
When a plan requires research before execution, set the `discovery` field in plan frontmatter. Default is 1 for most plans.
|
|
138
|
-
|
|
139
|
-
| Level | Name | Description | Executor Behavior |
|
|
140
|
-
|-------|------|-------------|-------------------|
|
|
141
|
-
| 0 | Skip | No research needed | Execute immediately |
|
|
142
|
-
| 1 | Quick | Fast verification | Check official docs for 1-2 specific questions |
|
|
143
|
-
| 2 | Standard | Normal research | Spawn researcher for phase research |
|
|
144
|
-
| 3 | Deep | Extensive investigation | Full research cycle before execution |
|
|
145
|
-
|
|
146
|
-
### Level 0 -- Skip
|
|
147
|
-
**When to use**: Simple refactors, documentation updates, file renames, configuration tweaks, or any task where the implementation approach is unambiguous from the plan's `<action>` steps alone.
|
|
148
|
-
|
|
149
|
-
### Level 1 -- Quick (default)
|
|
150
|
-
**When to use**: Standard feature work where the technology is known but specific API signatures, config options, or version-specific behavior need a quick check.
|
|
151
|
-
|
|
152
|
-
### Level 2 -- Standard
|
|
153
|
-
**When to use**: Work involving unfamiliar libraries, new integration patterns, or approaches the executor hasn't seen in this codebase before.
|
|
154
|
-
|
|
155
|
-
### Level 3 -- Deep
|
|
156
|
-
**When to use**: High-risk or architecturally significant work where getting the approach wrong would require substantial rework.
|
|
157
|
-
|
|
158
|
-
---
|
|
159
|
-
|
|
160
|
-
## Dependency Graph Rules
|
|
161
|
-
|
|
162
|
-
### File Conflict Detection
|
|
163
|
-
|
|
164
|
-
Two plans CONFLICT if their `files_modified` lists overlap. Conflicting plans:
|
|
165
|
-
- MUST be in different waves (cannot run in parallel)
|
|
166
|
-
- MUST have explicit `depends_on` relationship
|
|
167
|
-
- Later plan's `<action>` must reference what the earlier plan produces
|
|
168
|
-
|
|
169
|
-
### Circular Dependencies
|
|
170
|
-
|
|
171
|
-
**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.
|
|
172
|
-
|
|
173
|
-
---
|
|
174
|
-
|
|
175
|
-
## Context Fidelity Checklist
|
|
176
|
-
|
|
177
|
-
Before writing plan files, verify context compliance:
|
|
178
|
-
|
|
179
|
-
1. **Locked decision coverage**: For each locked decision in CONTEXT.md, identify the task that implements it.
|
|
180
|
-
2. **Deferred idea exclusion**: Scan all tasks -- no task should implement a deferred idea.
|
|
181
|
-
3. **Discretion area handling**: Each "Claude's Discretion" item should be addressed in at least one task.
|
|
1
|
+
# Plan Authoring Guide
|
|
2
|
+
|
|
3
|
+
Quality guidelines for writing executable plans. Used by planner and plan-checker.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Action Writing Guidelines
|
|
8
|
+
|
|
9
|
+
The `<action>` element is the most important part of the plan. It must be specific enough that the executor agent can follow it mechanically without making design decisions.
|
|
10
|
+
|
|
11
|
+
### Good Action
|
|
12
|
+
```xml
|
|
13
|
+
<action>
|
|
14
|
+
1. Create file `src/auth/discord.ts`
|
|
15
|
+
2. Import `OAuth2Client` from `discord-oauth2` package
|
|
16
|
+
3. Export async function `authenticateWithDiscord(code: string): Promise<User>`
|
|
17
|
+
- Create OAuth2Client with env vars: DISCORD_CLIENT_ID, DISCORD_CLIENT_SECRET
|
|
18
|
+
- Exchange authorization code for access token
|
|
19
|
+
- Fetch user profile from Discord API: GET /api/users/@me
|
|
20
|
+
- Return User object with fields: id, username, avatar, email
|
|
21
|
+
4. Export function `getDiscordAuthUrl(): string`
|
|
22
|
+
- Build OAuth2 authorization URL with scopes: identify, email
|
|
23
|
+
- Include redirect URI from env: DISCORD_REDIRECT_URI
|
|
24
|
+
- Return the URL string
|
|
25
|
+
5. Add to `.env.example`:
|
|
26
|
+
DISCORD_CLIENT_ID=
|
|
27
|
+
DISCORD_CLIENT_SECRET=
|
|
28
|
+
DISCORD_REDIRECT_URI=http://localhost:3000/auth/callback
|
|
29
|
+
</action>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Bad Action
|
|
33
|
+
```xml
|
|
34
|
+
<action>
|
|
35
|
+
Set up Discord OAuth authentication.
|
|
36
|
+
</action>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Action Rules
|
|
40
|
+
|
|
41
|
+
1. **Number the steps** -- executor follows them in order
|
|
42
|
+
2. **Name specific files** -- never say "create necessary files"
|
|
43
|
+
3. **Name specific functions/exports** -- never say "implement the auth logic"
|
|
44
|
+
4. **Include type signatures** -- when the project uses TypeScript
|
|
45
|
+
5. **Reference existing code** -- when modifying files, say what to modify
|
|
46
|
+
6. **Include code snippets** -- for complex patterns or configurations
|
|
47
|
+
7. **Specify environment variables** -- with example values
|
|
48
|
+
8. **Note error handling** -- only when it's a critical part of the task
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Verify Command Guidelines
|
|
53
|
+
|
|
54
|
+
The `<verify>` element must contain commands that the executor can run to check the task is complete.
|
|
55
|
+
|
|
56
|
+
### Good Verify
|
|
57
|
+
```xml
|
|
58
|
+
<verify>
|
|
59
|
+
npx tsc --noEmit
|
|
60
|
+
npm run test -- --grep "discord auth"
|
|
61
|
+
ls -la src/auth/discord.ts
|
|
62
|
+
</verify>
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Bad Verify
|
|
66
|
+
```xml
|
|
67
|
+
<verify>
|
|
68
|
+
Check that authentication works.
|
|
69
|
+
</verify>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Verify Rules
|
|
73
|
+
|
|
74
|
+
1. **Must be executable** -- actual shell commands, not descriptions
|
|
75
|
+
2. **Must be deterministic** -- same result every time if code is correct
|
|
76
|
+
3. **Prefer automated checks** -- type checking, tests, linting
|
|
77
|
+
4. **Include existence checks** -- `ls` for created files
|
|
78
|
+
5. **Include build checks** -- `npx tsc --noEmit` for TypeScript
|
|
79
|
+
6. **Avoid interactive commands** -- no commands requiring user input
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Done Condition Guidelines
|
|
84
|
+
|
|
85
|
+
The `<done>` element describes the observable outcome, not the implementation activity.
|
|
86
|
+
|
|
87
|
+
### Good Done
|
|
88
|
+
- "User can authenticate via Discord OAuth and is redirected to dashboard"
|
|
89
|
+
- "Auth middleware rejects invalid tokens and passes valid tokens"
|
|
90
|
+
- "All 12 unit tests pass for the auth module"
|
|
91
|
+
|
|
92
|
+
### Bad Done
|
|
93
|
+
- "Code was written"
|
|
94
|
+
- "File was created"
|
|
95
|
+
- "Feature is implemented"
|
|
96
|
+
|
|
97
|
+
### Done Rules
|
|
98
|
+
|
|
99
|
+
1. **Maps to a must-have** -- every done condition traces back to a frontmatter must-have
|
|
100
|
+
2. **Observable** -- describes a state of the system, not an activity
|
|
101
|
+
3. **Falsifiable** -- you can check whether it's true or false
|
|
102
|
+
4. **User-oriented** -- prefer "user can..." over "code does..."
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Scope Limits
|
|
107
|
+
|
|
108
|
+
### Per-Plan Limits
|
|
109
|
+
|
|
110
|
+
| Constraint | Limit | Rationale |
|
|
111
|
+
|-----------|-------|-----------|
|
|
112
|
+
| Tasks per plan | **2-3** | Keeps plans atomic and recoverable |
|
|
113
|
+
| Files per plan | **5-8** | Limits blast radius of failures |
|
|
114
|
+
| Dependencies | **3 max** | Avoids deep dependency chains |
|
|
115
|
+
|
|
116
|
+
### When to Split
|
|
117
|
+
|
|
118
|
+
- More than 3 tasks? Split.
|
|
119
|
+
- More than 8 files? Split.
|
|
120
|
+
- Tasks in different functional areas? Split.
|
|
121
|
+
- Some tasks need human checkpoints, others don't? Split into autonomous and checkpoint plans.
|
|
122
|
+
|
|
123
|
+
### Split Signals
|
|
124
|
+
|
|
125
|
+
| Signal | Action |
|
|
126
|
+
|--------|--------|
|
|
127
|
+
| >3 tasks needed | Split by subsystem -- one plan per subsystem |
|
|
128
|
+
| Multiple unrelated subsystems | One plan per subsystem |
|
|
129
|
+
| >5 files per task | Task is too big -- break it down |
|
|
130
|
+
| Checkpoint + implementation in same plan | Separate the checkpoint into its own plan |
|
|
131
|
+
| Discovery research + implementation | Separate plans -- research plan first |
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Discovery Levels
|
|
136
|
+
|
|
137
|
+
When a plan requires research before execution, set the `discovery` field in plan frontmatter. Default is 1 for most plans.
|
|
138
|
+
|
|
139
|
+
| Level | Name | Description | Executor Behavior |
|
|
140
|
+
|-------|------|-------------|-------------------|
|
|
141
|
+
| 0 | Skip | No research needed | Execute immediately |
|
|
142
|
+
| 1 | Quick | Fast verification | Check official docs for 1-2 specific questions |
|
|
143
|
+
| 2 | Standard | Normal research | Spawn researcher for phase research |
|
|
144
|
+
| 3 | Deep | Extensive investigation | Full research cycle before execution |
|
|
145
|
+
|
|
146
|
+
### Level 0 -- Skip
|
|
147
|
+
**When to use**: Simple refactors, documentation updates, file renames, configuration tweaks, or any task where the implementation approach is unambiguous from the plan's `<action>` steps alone.
|
|
148
|
+
|
|
149
|
+
### Level 1 -- Quick (default)
|
|
150
|
+
**When to use**: Standard feature work where the technology is known but specific API signatures, config options, or version-specific behavior need a quick check.
|
|
151
|
+
|
|
152
|
+
### Level 2 -- Standard
|
|
153
|
+
**When to use**: Work involving unfamiliar libraries, new integration patterns, or approaches the executor hasn't seen in this codebase before.
|
|
154
|
+
|
|
155
|
+
### Level 3 -- Deep
|
|
156
|
+
**When to use**: High-risk or architecturally significant work where getting the approach wrong would require substantial rework.
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Dependency Graph Rules
|
|
161
|
+
|
|
162
|
+
### File Conflict Detection
|
|
163
|
+
|
|
164
|
+
Two plans CONFLICT if their `files_modified` lists overlap. Conflicting plans:
|
|
165
|
+
- MUST be in different waves (cannot run in parallel)
|
|
166
|
+
- MUST have explicit `depends_on` relationship
|
|
167
|
+
- Later plan's `<action>` must reference what the earlier plan produces
|
|
168
|
+
|
|
169
|
+
### Circular Dependencies
|
|
170
|
+
|
|
171
|
+
**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.
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## Context Fidelity Checklist
|
|
176
|
+
|
|
177
|
+
Before writing plan files, verify context compliance:
|
|
178
|
+
|
|
179
|
+
1. **Locked decision coverage**: For each locked decision in CONTEXT.md, identify the task that implements it.
|
|
180
|
+
2. **Deferred idea exclusion**: Scan all tasks -- no task should implement a deferred idea.
|
|
181
|
+
3. **Discretion area handling**: Each "Claude's Discretion" item should be addressed in at least one task.
|