@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,98 @@
|
|
|
1
|
+
# Decimal Phase Numbering
|
|
2
|
+
|
|
3
|
+
Rules for calculating decimal phase numbers when inserting phases into an existing roadmap.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Core Rule
|
|
8
|
+
|
|
9
|
+
Inserted phases get decimal numbers based on their insertion position. The integer part indicates where in the sequence the phase falls, and the decimal part indicates it was inserted.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Calculation
|
|
14
|
+
|
|
15
|
+
### Insert at position N
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
1. Find phase N in the roadmap
|
|
19
|
+
2. Check if N.1 already exists
|
|
20
|
+
3. If not: new phase is N.1
|
|
21
|
+
4. If yes: check N.2, N.3, etc. until an unused number is found
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### Examples
|
|
25
|
+
|
|
26
|
+
**Insert between Phase 3 and Phase 4:**
|
|
27
|
+
```
|
|
28
|
+
Before: Phase 1, Phase 2, Phase 3, Phase 4, Phase 5
|
|
29
|
+
After: Phase 1, Phase 2, Phase 3, Phase 3.1, Phase 4, Phase 5
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**Insert another between Phase 3 and Phase 4:**
|
|
33
|
+
```
|
|
34
|
+
Before: Phase 1, Phase 2, Phase 3, Phase 3.1, Phase 4, Phase 5
|
|
35
|
+
After: Phase 1, Phase 2, Phase 3, Phase 3.1, Phase 3.2, Phase 4, Phase 5
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Insert between Phase 3.1 and Phase 3.2:**
|
|
39
|
+
This is NOT supported. Maximum one level of decimal insertion. If you need to insert between decimal phases, renumber the entire sequence first.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Directory Naming
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
Phase 3 → .planning/phases/03-{slug}/
|
|
47
|
+
Phase 3.1 → .planning/phases/03.1-{slug}/
|
|
48
|
+
Phase 3.2 → .planning/phases/03.2-{slug}/
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Plan ID Format
|
|
54
|
+
|
|
55
|
+
Plans in decimal phases use the decimal in their ID:
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
Phase 3.1, Plan 01 → Plan ID: 3.1-01
|
|
59
|
+
Phase 3.1, Plan 02 → Plan ID: 3.1-02
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Execution Order
|
|
65
|
+
|
|
66
|
+
Decimal phases execute AFTER their integer parent and BEFORE the next integer:
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
Execution order: 1, 2, 3, 3.1, 3.2, 4, 5
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Dependencies:
|
|
73
|
+
- Decimal phases inherit the dependencies of their integer parent by default
|
|
74
|
+
- Additional dependencies can be declared explicitly
|
|
75
|
+
- A decimal phase at N.M depends on phase N unless overridden
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Renumbering After Remove
|
|
80
|
+
|
|
81
|
+
When a phase is removed, subsequent phases are renumbered:
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
Before: Phase 1, Phase 2, Phase 3, Phase 3.1, Phase 4
|
|
85
|
+
Remove Phase 2:
|
|
86
|
+
After: Phase 1, Phase 2 (was 3), Phase 2.1 (was 3.1), Phase 3 (was 4)
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
All internal references (depends_on, plan IDs, directory names) must be updated during renumbering.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Constraints
|
|
94
|
+
|
|
95
|
+
1. Maximum one level of decimal numbering (no 3.1.1)
|
|
96
|
+
2. Decimal part is always a single digit (3.1 through 3.9)
|
|
97
|
+
3. Maximum 9 insertions at any position (3.1 through 3.9)
|
|
98
|
+
4. If 9 insertions are needed, renumber the entire roadmap instead
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<!-- Source: plan/SKILL.md | Purpose: Prompt template for spawning plan checker agent -->
|
|
2
|
+
<!-- Depends on: templates/prompt-partials/phase-project-context.md.tmpl -->
|
|
3
|
+
|
|
4
|
+
You are the plan-checker agent.
|
|
5
|
+
|
|
6
|
+
<plans_to_check>
|
|
7
|
+
Read and check each of these plan files:
|
|
8
|
+
|
|
9
|
+
| Plan | File Path |
|
|
10
|
+
|------|-----------|
|
|
11
|
+
{For each PLAN.md file in .planning/phases/{NN}-{slug}/:}
|
|
12
|
+
| {plan_id} | {absolute path to PLAN.md} |
|
|
13
|
+
|
|
14
|
+
Read each plan file using the Read tool. Verify all 7 dimensions against each plan.
|
|
15
|
+
</plans_to_check>
|
|
16
|
+
|
|
17
|
+
<!-- Context blocks: Read and fill templates/prompt-partials/phase-project-context.md.tmpl -->
|
|
18
|
+
<!-- Omit <prior_work> -- checker only needs plans and context -->
|
|
19
|
+
|
|
20
|
+
Run all 7 verification dimensions on these plans. Return your structured report.
|
|
21
|
+
Do NOT write any files. Return your findings as your response text.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<!-- Source: plan/SKILL.md | Purpose: Prompt template for planner gap closure mode -->
|
|
2
|
+
|
|
3
|
+
You are the planner agent operating in Gap Closure mode.
|
|
4
|
+
|
|
5
|
+
<verification_report>
|
|
6
|
+
Read the verification report for gap details:
|
|
7
|
+
File: {absolute path to VERIFICATION.md}
|
|
8
|
+
</verification_report>
|
|
9
|
+
|
|
10
|
+
<existing_plans>
|
|
11
|
+
Read existing plans for context on what was already built:
|
|
12
|
+
|
|
13
|
+
| Plan | File Path |
|
|
14
|
+
|------|-----------|
|
|
15
|
+
{For each PLAN.md in the phase directory:}
|
|
16
|
+
| {plan_id} | {absolute path to PLAN.md} |
|
|
17
|
+
</existing_plans>
|
|
18
|
+
|
|
19
|
+
<project_context>
|
|
20
|
+
{If CONTEXT.md exists:}
|
|
21
|
+
Project context (locked decisions, constraints): {absolute path to CONTEXT.md}
|
|
22
|
+
Read this file for locked decisions that must be honored in gap-closure plans.
|
|
23
|
+
{If not: "No CONTEXT.md found."}
|
|
24
|
+
</project_context>
|
|
25
|
+
|
|
26
|
+
<gap_closure_instructions>
|
|
27
|
+
Read the verification report and create targeted plans to close each gap.
|
|
28
|
+
Follow your Gap Closure Mode instructions.
|
|
29
|
+
Number new plans starting after the last existing plan number.
|
|
30
|
+
Set gap_closure: true in the frontmatter of each new plan.
|
|
31
|
+
Write gap-closure plan files to: .planning/phases/{NN}-{slug}/
|
|
32
|
+
</gap_closure_instructions>
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<!-- Source: plan/SKILL.md | Purpose: Prompt template for spawning planner agent during phase planning -->
|
|
2
|
+
<!-- Depends on: templates/prompt-partials/phase-project-context.md.tmpl -->
|
|
3
|
+
|
|
4
|
+
You are the planner agent operating in Standard Planning mode.
|
|
5
|
+
|
|
6
|
+
<!-- Context blocks: Read and fill templates/prompt-partials/phase-project-context.md.tmpl -->
|
|
7
|
+
<!-- Include all 3 blocks: phase_context, project_context, prior_work -->
|
|
8
|
+
|
|
9
|
+
<research>
|
|
10
|
+
{If RESEARCH.md exists:}
|
|
11
|
+
Phase research available at: {absolute path to RESEARCH.md}
|
|
12
|
+
Read this file for technology recommendations, implementation patterns, and pitfalls.
|
|
13
|
+
{If not: "No phase-specific research conducted."}
|
|
14
|
+
{If research SUMMARY.md exists:}
|
|
15
|
+
Research summary available at: {absolute path to research SUMMARY.md}
|
|
16
|
+
</research>
|
|
17
|
+
|
|
18
|
+
<config>
|
|
19
|
+
Max tasks per plan: {from config.json}
|
|
20
|
+
Parallelization enabled: {from config.json}
|
|
21
|
+
TDD mode: {from config.json}
|
|
22
|
+
</config>
|
|
23
|
+
|
|
24
|
+
<planning_instructions>
|
|
25
|
+
Create executable plans for this phase following your Standard Planning mode instructions.
|
|
26
|
+
|
|
27
|
+
Key rules:
|
|
28
|
+
1. Apply goal-backward methodology — derive must-haves first
|
|
29
|
+
2. 2-3 tasks per plan, 5-8 files per plan maximum
|
|
30
|
+
3. Assign wave numbers for parallel execution
|
|
31
|
+
4. Every task needs all 5 elements: name, files, action, verify, done
|
|
32
|
+
5. Honor all locked decisions from CONTEXT.md
|
|
33
|
+
6. Do NOT include deferred ideas
|
|
34
|
+
7. Write plan files to: .planning/phases/{NN}-{slug}/{phase}-{plan_num}-PLAN.md
|
|
35
|
+
8. If any task requires env vars, API keys, or external service setup, note it in the task's <action> — the executor will generate USER-SETUP.md automatically
|
|
36
|
+
|
|
37
|
+
Use the Write tool to create each plan file.
|
|
38
|
+
</planning_instructions>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<!-- Source: plan/SKILL.md | Purpose: Prompt template for spawning researcher agent during phase planning -->
|
|
2
|
+
<!-- Depends on: templates/prompt-partials/phase-project-context.md.tmpl -->
|
|
3
|
+
|
|
4
|
+
You are the researcher agent operating in Phase Research mode.
|
|
5
|
+
|
|
6
|
+
<!-- Context blocks: Read and fill templates/prompt-partials/phase-project-context.md.tmpl -->
|
|
7
|
+
<!-- Include the filled <phase_context> and <project_context> blocks here. -->
|
|
8
|
+
<!-- Omit <prior_work> and deferred ideas -- researcher doesn't need them -->
|
|
9
|
+
|
|
10
|
+
<research_questions>
|
|
11
|
+
Research these specific questions for this phase:
|
|
12
|
+
1. What is the best implementation approach for {phase goal}?
|
|
13
|
+
2. What libraries/packages are needed?
|
|
14
|
+
3. What are the common pitfalls for this type of work?
|
|
15
|
+
4. What configuration is needed?
|
|
16
|
+
5. How does this integrate with what's already been built?
|
|
17
|
+
</research_questions>
|
|
18
|
+
|
|
19
|
+
Write your findings to .planning/phases/{NN}-{slug}/RESEARCH.md using the Phase Research output format. Use the Write tool.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<!-- Source: plan/SKILL.md | Purpose: Prompt template for planner revision mode when checker finds issues -->
|
|
2
|
+
|
|
3
|
+
You are the planner agent operating in Revision Mode.
|
|
4
|
+
|
|
5
|
+
<original_plans>
|
|
6
|
+
Read the current plan files that need revision:
|
|
7
|
+
|
|
8
|
+
| Plan | File Path |
|
|
9
|
+
|------|-----------|
|
|
10
|
+
{For each PLAN.md in the phase directory:}
|
|
11
|
+
| {plan_id} | {absolute path to PLAN.md} |
|
|
12
|
+
|
|
13
|
+
Read each plan file using the Read tool before revising.
|
|
14
|
+
</original_plans>
|
|
15
|
+
|
|
16
|
+
<checker_feedback>
|
|
17
|
+
[Inline the checker's issue report]
|
|
18
|
+
</checker_feedback>
|
|
19
|
+
|
|
20
|
+
<revision_instructions>
|
|
21
|
+
Revise the plans to address all BLOCKER and WARNING issues. Follow your Revision Mode instructions.
|
|
22
|
+
Preserve task IDs that don't need changes. Write updated plan files to the same paths.
|
|
23
|
+
</revision_instructions>
|
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: quick
|
|
3
|
+
description: "Execute an ad-hoc task with atomic commits. Skips full plan/review."
|
|
4
|
+
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, Task, AskUserQuestion
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /pbr:quick — Quick Ad-Hoc Task Execution
|
|
8
|
+
|
|
9
|
+
You are running the **quick** skill. Your job is to execute a small, self-contained task outside the normal plan/build/review cycle. Quick tasks get their own tracking, atomic commits, and state integration, but skip the overhead of full planning.
|
|
10
|
+
|
|
11
|
+
This skill **spawns a single Task(subagent_type: "pbr:executor")** for execution.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Context Budget
|
|
16
|
+
|
|
17
|
+
Reference: `skills/shared/context-budget.md` for the universal orchestrator rules.
|
|
18
|
+
|
|
19
|
+
Additionally for this skill:
|
|
20
|
+
- **Never** implement the task yourself — you are a router, not a builder. ALL code changes go through a spawned `Task(subagent_type: "pbr:executor")`
|
|
21
|
+
- **Never** skip creating `.planning/quick/{NNN}-{slug}/` and writing PLAN.md — even trivial tasks need tracking artifacts
|
|
22
|
+
- **Minimize** reading executor output into main context — read only SUMMARY.md frontmatter
|
|
23
|
+
|
|
24
|
+
## Core Principle
|
|
25
|
+
|
|
26
|
+
**Quick tasks are for small, well-defined work.** If the user describes something that would take more than 3-5 tasks or touches multiple subsystems, suggest using the full plan/build cycle instead.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Flow
|
|
31
|
+
|
|
32
|
+
### Step 1: Check Project Context
|
|
33
|
+
|
|
34
|
+
1. Check if `.planning/` directory exists
|
|
35
|
+
- If yes: read config.json for settings
|
|
36
|
+
- If no: warn "No Plan-Build-Run project found. This will create a standalone quick task. Consider running `/pbr:begin` first for full project tracking."
|
|
37
|
+
|
|
38
|
+
2. Write `.planning/.active-skill` with the content `quick` (single word, no newline). This registers you with the workflow enforcement hook — it will block source code writes until PLAN.md exists.
|
|
39
|
+
|
|
40
|
+
3. Check if ROADMAP.md exists
|
|
41
|
+
- If yes: note the current phase context (quick tasks may relate to the active phase)
|
|
42
|
+
- If no: proceed without phase context
|
|
43
|
+
|
|
44
|
+
### Step 2: Get Task Description
|
|
45
|
+
|
|
46
|
+
If `$ARGUMENTS` is provided and non-empty:
|
|
47
|
+
- Use `$ARGUMENTS` as the task description
|
|
48
|
+
|
|
49
|
+
If `$ARGUMENTS` is empty:
|
|
50
|
+
- Ask the user: "What do you need done? Describe the task in a sentence or two."
|
|
51
|
+
This is a freeform text prompt — do NOT use AskUserQuestion here. Task descriptions require arbitrary text input, not option selection.
|
|
52
|
+
|
|
53
|
+
### Step 3: Validate Scope
|
|
54
|
+
|
|
55
|
+
Analyze the task description. If it appears to involve:
|
|
56
|
+
- More than ~5 files
|
|
57
|
+
- Multiple independent subsystems
|
|
58
|
+
- Significant architectural decisions
|
|
59
|
+
- Complex multi-step workflows
|
|
60
|
+
|
|
61
|
+
Then use the **scope-confirm** pattern (see `skills/shared/gate-prompts.md`):
|
|
62
|
+
|
|
63
|
+
Use AskUserQuestion:
|
|
64
|
+
question: "This task looks complex. Quick tasks work best for bug fixes, small features, config changes, and single-module refactors. How would you like to proceed?"
|
|
65
|
+
header: "Scope"
|
|
66
|
+
options:
|
|
67
|
+
- label: "Quick task" description: "Execute as lightweight task"
|
|
68
|
+
- label: "Full plan" description: "Switch to /pbr:plan for proper planning"
|
|
69
|
+
- label: "Revise" description: "Let me rewrite the task description"
|
|
70
|
+
multiSelect: false
|
|
71
|
+
|
|
72
|
+
If user selects "Quick task": continue to Step 4.
|
|
73
|
+
If user selects "Full plan": respond "Use `/pbr:plan` to create a full planning cycle for this task." and stop.
|
|
74
|
+
If user selects "Revise": go back to Step 2 to get a new task description.
|
|
75
|
+
If user types something else (freeform): interpret their response and proceed accordingly.
|
|
76
|
+
|
|
77
|
+
### Step 4: Generate Slug and Task Number
|
|
78
|
+
|
|
79
|
+
**Generate slug:**
|
|
80
|
+
- Take the first 4-5 meaningful words from the description
|
|
81
|
+
- Lowercase, hyphen-separated
|
|
82
|
+
- Remove articles (a, an, the) and prepositions
|
|
83
|
+
- Example: "Fix auth bug in login flow" -> "fix-auth-bug-login"
|
|
84
|
+
|
|
85
|
+
**Find next task number:**
|
|
86
|
+
1. Scan `.planning/quick/` directory for existing quick task directories
|
|
87
|
+
2. Extract the NNN prefix from directory names (pattern: `{NNN}-{slug}/`)
|
|
88
|
+
3. Next number = highest existing NNN + 1
|
|
89
|
+
4. If no existing tasks: start at 001
|
|
90
|
+
5. Zero-pad to 3 digits
|
|
91
|
+
|
|
92
|
+
### Step 5: Create Quick Task Directory
|
|
93
|
+
|
|
94
|
+
Create: `.planning/quick/{NNN}-{slug}/`
|
|
95
|
+
|
|
96
|
+
### Step 6: Create Minimal PLAN.md
|
|
97
|
+
|
|
98
|
+
Write `.planning/quick/{NNN}-{slug}/PLAN.md`:
|
|
99
|
+
|
|
100
|
+
Read `references/plan-format.md` for the plan file format. Fill in all `{variable}` placeholders with actual task data from the user's description and project context.
|
|
101
|
+
|
|
102
|
+
**Plan generation rules:**
|
|
103
|
+
- Break the task into 1-3 tasks maximum (prefer fewer)
|
|
104
|
+
- Each task should be atomic (one commit per task)
|
|
105
|
+
- Infer file paths from the description and project context
|
|
106
|
+
- Include concrete verification commands
|
|
107
|
+
- If verification is unclear, use `echo "Manual verification needed"` and add a note
|
|
108
|
+
|
|
109
|
+
**For multi-task quick tasks**, add sequential tasks:
|
|
110
|
+
|
|
111
|
+
```markdown
|
|
112
|
+
<task name="{task 1}" type="auto">
|
|
113
|
+
...
|
|
114
|
+
</task>
|
|
115
|
+
|
|
116
|
+
<task name="{task 2}" type="auto">
|
|
117
|
+
...
|
|
118
|
+
</task>
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**PLANNING GATE — verify before spawning executor:**
|
|
122
|
+
|
|
123
|
+
Before proceeding to Step 7, confirm these exist on disk:
|
|
124
|
+
1. `.planning/quick/{NNN}-{slug}/` directory exists
|
|
125
|
+
2. `.planning/quick/{NNN}-{slug}/PLAN.md` exists, is non-empty, and contains at least one `<task>` block
|
|
126
|
+
|
|
127
|
+
If either check fails, you have skipped steps. Go back and complete Steps 4-6. Do NOT proceed to spawning an executor.
|
|
128
|
+
|
|
129
|
+
### Step 7: Spawn Executor
|
|
130
|
+
|
|
131
|
+
**Pre-spawn check** — Verify `.planning/quick/{NNN}-{slug}/PLAN.md` exists and contains at least one `<task>` block. If missing, STOP and complete Steps 4-6 first.
|
|
132
|
+
|
|
133
|
+
Display to the user: `◐ Spawning executor...`
|
|
134
|
+
|
|
135
|
+
Spawn a `Task(subagent_type: "pbr:executor")` with the following prompt:
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
You are executor. Execute the following quick task plan.
|
|
139
|
+
|
|
140
|
+
Plan file: .planning/quick/{NNN}-{slug}/PLAN.md
|
|
141
|
+
Phase: quick
|
|
142
|
+
Plan ID: {NNN}
|
|
143
|
+
|
|
144
|
+
Read the plan file and execute all tasks sequentially. Follow all executor protocols:
|
|
145
|
+
- Atomic commits per task
|
|
146
|
+
- Commit format: fix(quick-{NNN}): {description} (or feat/refactor/test as appropriate)
|
|
147
|
+
- Run verify commands
|
|
148
|
+
- Create SUMMARY.md at .planning/quick/{NNN}-{slug}/SUMMARY.md
|
|
149
|
+
|
|
150
|
+
Execute now.
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Step 8: Read Results
|
|
154
|
+
|
|
155
|
+
After the executor completes:
|
|
156
|
+
1. Read `.planning/quick/{NNN}-{slug}/SUMMARY.md`
|
|
157
|
+
2. Check the status field:
|
|
158
|
+
- `completed` — task succeeded
|
|
159
|
+
- `partial` — some tasks completed, others failed
|
|
160
|
+
- `failed` — task failed entirely
|
|
161
|
+
|
|
162
|
+
### Step 9: Update STATE.md
|
|
163
|
+
|
|
164
|
+
If STATE.md exists, update the Quick Tasks section.
|
|
165
|
+
|
|
166
|
+
**If the section doesn't exist, create it:**
|
|
167
|
+
|
|
168
|
+
```markdown
|
|
169
|
+
### Quick Tasks
|
|
170
|
+
|
|
171
|
+
| # | Description | Status | Commit |
|
|
172
|
+
|---|-------------|--------|--------|
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**Add the new entry:**
|
|
176
|
+
|
|
177
|
+
```markdown
|
|
178
|
+
| {NNN} | {description} | {status indicator} | {commit hash or "N/A"} |
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Status indicators:
|
|
182
|
+
- Completed: checkmark
|
|
183
|
+
- Partial: warning indicator
|
|
184
|
+
- Failed: X indicator
|
|
185
|
+
|
|
186
|
+
### Step 10: Commit Planning Docs
|
|
187
|
+
|
|
188
|
+
Reference: `skills/shared/commit-planning-docs.md` for the standard commit pattern.
|
|
189
|
+
|
|
190
|
+
If `planning.commit_docs: true` in config.json:
|
|
191
|
+
- Stage the quick task directory files (PLAN.md, SUMMARY.md)
|
|
192
|
+
- Stage STATE.md changes
|
|
193
|
+
- Commit: `docs(planning): quick task {NNN} - {slug}`
|
|
194
|
+
|
|
195
|
+
### Step 11: Report Results
|
|
196
|
+
|
|
197
|
+
**Artifact check** — Before reporting, verify all required artifacts exist:
|
|
198
|
+
1. `.planning/quick/{NNN}-{slug}/PLAN.md` exists
|
|
199
|
+
2. `.planning/quick/{NNN}-{slug}/SUMMARY.md` exists and is non-empty
|
|
200
|
+
3. STATE.md contains a quick task entry for {NNN} (if STATE.md exists)
|
|
201
|
+
|
|
202
|
+
If SUMMARY.md is missing: the executor may have failed — re-read executor output and report the failure.
|
|
203
|
+
If STATE.md entry is missing: write it now (Step 9 was skipped).
|
|
204
|
+
|
|
205
|
+
Display results to the user with branded output:
|
|
206
|
+
|
|
207
|
+
**If completed:**
|
|
208
|
+
```
|
|
209
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
210
|
+
PLAN-BUILD-RUN ► QUICK TASK COMPLETE ✓
|
|
211
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
212
|
+
|
|
213
|
+
**Quick Task {NNN}:** {description}
|
|
214
|
+
Commit: {hash} — {commit message}
|
|
215
|
+
Files: {list of files changed}
|
|
216
|
+
|
|
217
|
+
───────────────────────────────────────────────────────────────
|
|
218
|
+
|
|
219
|
+
## ▶ Next Up
|
|
220
|
+
|
|
221
|
+
**Continue your workflow** — task complete
|
|
222
|
+
|
|
223
|
+
`/pbr:status`
|
|
224
|
+
|
|
225
|
+
<sub>`/clear` first → fresh context window</sub>
|
|
226
|
+
|
|
227
|
+
───────────────────────────────────────────────────────────────
|
|
228
|
+
|
|
229
|
+
**Also available:**
|
|
230
|
+
- `/pbr:continue` — execute next logical step
|
|
231
|
+
- `/pbr:todo list` — see pending todos
|
|
232
|
+
|
|
233
|
+
───────────────────────────────────────────────────────────────
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
**If partial:**
|
|
237
|
+
```
|
|
238
|
+
⚠ Quick Task {NNN}: {description}
|
|
239
|
+
Completed: {N} of {M} tasks
|
|
240
|
+
Failed task: {task name} — {failure reason}
|
|
241
|
+
|
|
242
|
+
→ Re-run with `/pbr:quick` to retry
|
|
243
|
+
→ `/pbr:debug` to investigate the failure
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**If failed:**
|
|
247
|
+
```
|
|
248
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
249
|
+
║ ERROR ║
|
|
250
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
251
|
+
|
|
252
|
+
Quick Task {NNN} failed: {failure details}
|
|
253
|
+
|
|
254
|
+
**To fix:** {what to try next}
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## Quick Task Plan Generation
|
|
260
|
+
|
|
261
|
+
### Inferring File Paths
|
|
262
|
+
|
|
263
|
+
When the user describes a task, infer file paths from:
|
|
264
|
+
1. The project structure (use Glob to find existing files matching keywords)
|
|
265
|
+
2. The tech stack (from prior SUMMARY.md files or package.json/requirements.txt)
|
|
266
|
+
3. Naming conventions in the codebase
|
|
267
|
+
4. Explicit file mentions in the description
|
|
268
|
+
|
|
269
|
+
### Inferring Verification
|
|
270
|
+
|
|
271
|
+
Choose verification based on context:
|
|
272
|
+
|
|
273
|
+
| Context | Verification Command |
|
|
274
|
+
|---------|---------------------|
|
|
275
|
+
| TypeScript project | `npx tsc --noEmit` |
|
|
276
|
+
| Has test files | `npm test` or `pytest` |
|
|
277
|
+
| Has ESLint | `npx eslint {files}` |
|
|
278
|
+
| Python project | `python -c "import {module}"` |
|
|
279
|
+
| Config change | `cat {file}` to verify content |
|
|
280
|
+
| Script | Run the script with safe args |
|
|
281
|
+
| Unknown | `echo "Manual verification needed"` |
|
|
282
|
+
|
|
283
|
+
### Commit Type Selection
|
|
284
|
+
|
|
285
|
+
| Task Nature | Commit Type |
|
|
286
|
+
|-------------|-------------|
|
|
287
|
+
| Bug fix | `fix` |
|
|
288
|
+
| New feature/functionality | `feat` |
|
|
289
|
+
| Code restructuring | `refactor` |
|
|
290
|
+
| Adding tests | `test` |
|
|
291
|
+
| Config/tooling changes | `chore` |
|
|
292
|
+
| Documentation | `docs` |
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
## Edge Cases
|
|
297
|
+
|
|
298
|
+
### No `.planning/` directory
|
|
299
|
+
- Create `.planning/quick/` directory
|
|
300
|
+
- Proceed without STATE.md integration
|
|
301
|
+
- Warn user about limited tracking
|
|
302
|
+
|
|
303
|
+
### Executor fails entirely
|
|
304
|
+
- Read error output
|
|
305
|
+
- Present to user with suggestion
|
|
306
|
+
- Do NOT auto-retry — let the user decide
|
|
307
|
+
|
|
308
|
+
### Task description is too vague
|
|
309
|
+
- Ask clarifying questions as plain text prompts (do NOT use AskUserQuestion — these require freeform text answers):
|
|
310
|
+
- "Which file(s) need to change?"
|
|
311
|
+
- "What should the end result look like?"
|
|
312
|
+
- "Is there a specific error to fix?"
|
|
313
|
+
|
|
314
|
+
### User provides a file path in the description
|
|
315
|
+
- Use it directly in the plan
|
|
316
|
+
- Read the file first to understand its context
|
|
317
|
+
- Tailor the plan to the specific file
|
|
318
|
+
|
|
319
|
+
---
|
|
320
|
+
|
|
321
|
+
## Anti-Patterns
|
|
322
|
+
|
|
323
|
+
**These are the most common failure modes. If you violate any of these, the skill has not executed correctly.**
|
|
324
|
+
|
|
325
|
+
1. **DO NOT** implement the task yourself — you MUST spawn a `Task(subagent_type: "pbr:executor")`. This is the single most important rule.
|
|
326
|
+
2. **DO NOT** skip creating `.planning/quick/{NNN}-{slug}/` — every quick task gets a tracking directory
|
|
327
|
+
3. **DO NOT** skip writing PLAN.md — the executor needs a plan file to follow
|
|
328
|
+
4. **DO NOT** create elaborate multi-wave plans — quick tasks should be 1-3 tasks max
|
|
329
|
+
5. **DO NOT** spawn multiple executors — one executor for the whole quick task
|
|
330
|
+
6. **DO NOT** skip the SUMMARY.md — even quick tasks need documentation
|
|
331
|
+
7. **DO NOT** use `git add .` — stage specific files only
|
|
332
|
+
8. **DO NOT** skip verification — every task needs a verify step
|
|
333
|
+
9. **DO NOT** create a quick task for something that needs planning — suggest `/pbr:plan`
|
|
334
|
+
10. **DO NOT** modify STATE.md if it doesn't exist (other than warning)
|
|
335
|
+
11. **DO NOT** break the numbering sequence — always find the next number
|