@sienklogic/plan-build-run 2.3.0 → 2.4.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 +49 -0
- package/README.md +54 -20
- package/dashboard/src/services/dashboard.service.js +24 -1
- package/dashboard/src/services/milestone.service.js +68 -17
- package/package.json +1 -1
- package/plugins/copilot-pbr/CHANGELOG.md +19 -0
- package/plugins/copilot-pbr/README.md +129 -0
- package/plugins/copilot-pbr/agents/codebase-mapper.agent.md +109 -0
- package/plugins/copilot-pbr/agents/debugger.agent.md +169 -0
- package/plugins/copilot-pbr/agents/executor.agent.md +237 -0
- package/plugins/copilot-pbr/agents/general.agent.md +88 -0
- package/plugins/copilot-pbr/agents/integration-checker.agent.md +88 -0
- package/plugins/copilot-pbr/agents/plan-checker.agent.md +199 -0
- package/plugins/copilot-pbr/agents/planner.agent.md +181 -0
- package/plugins/copilot-pbr/agents/researcher.agent.md +163 -0
- package/plugins/copilot-pbr/agents/synthesizer.agent.md +102 -0
- package/plugins/copilot-pbr/agents/verifier.agent.md +194 -0
- package/plugins/copilot-pbr/hooks/hooks.json +144 -0
- package/plugins/copilot-pbr/plugin.json +30 -0
- package/plugins/copilot-pbr/references/agent-anti-patterns.md +25 -0
- package/plugins/copilot-pbr/references/agent-interactions.md +135 -0
- package/plugins/copilot-pbr/references/agent-teams.md +55 -0
- package/plugins/copilot-pbr/references/checkpoints.md +158 -0
- package/plugins/copilot-pbr/references/common-bug-patterns.md +14 -0
- package/plugins/copilot-pbr/references/config-reference.md +442 -0
- package/plugins/copilot-pbr/references/continuation-format.md +213 -0
- package/plugins/copilot-pbr/references/deviation-rules.md +113 -0
- package/plugins/copilot-pbr/references/git-integration.md +227 -0
- package/plugins/copilot-pbr/references/integration-patterns.md +118 -0
- package/plugins/copilot-pbr/references/model-profiles.md +100 -0
- package/plugins/copilot-pbr/references/model-selection.md +32 -0
- package/plugins/copilot-pbr/references/pbr-rules.md +194 -0
- package/plugins/copilot-pbr/references/plan-authoring.md +182 -0
- package/plugins/copilot-pbr/references/plan-format.md +288 -0
- package/plugins/copilot-pbr/references/planning-config.md +214 -0
- package/plugins/copilot-pbr/references/questioning.md +215 -0
- package/plugins/copilot-pbr/references/reading-verification.md +128 -0
- package/plugins/copilot-pbr/references/stub-patterns.md +161 -0
- package/plugins/copilot-pbr/references/subagent-coordination.md +120 -0
- package/plugins/copilot-pbr/references/ui-formatting.md +462 -0
- package/plugins/copilot-pbr/references/verification-patterns.md +199 -0
- package/plugins/copilot-pbr/references/wave-execution.md +96 -0
- package/plugins/copilot-pbr/rules/pbr-workflow.mdc +48 -0
- package/plugins/copilot-pbr/setup.ps1 +93 -0
- package/plugins/copilot-pbr/setup.sh +92 -0
- package/plugins/copilot-pbr/skills/begin/SKILL.md +566 -0
- package/plugins/copilot-pbr/skills/begin/templates/PROJECT.md.tmpl +34 -0
- package/plugins/copilot-pbr/skills/begin/templates/REQUIREMENTS.md.tmpl +19 -0
- package/plugins/copilot-pbr/skills/begin/templates/STATE.md.tmpl +50 -0
- package/plugins/copilot-pbr/skills/begin/templates/config.json.tmpl +64 -0
- package/plugins/copilot-pbr/skills/begin/templates/researcher-prompt.md.tmpl +20 -0
- package/plugins/copilot-pbr/skills/begin/templates/roadmap-prompt.md.tmpl +31 -0
- package/plugins/copilot-pbr/skills/begin/templates/synthesis-prompt.md.tmpl +17 -0
- package/plugins/copilot-pbr/skills/build/SKILL.md +901 -0
- package/plugins/copilot-pbr/skills/config/SKILL.md +253 -0
- package/plugins/copilot-pbr/skills/continue/SKILL.md +159 -0
- package/plugins/copilot-pbr/skills/dashboard/SKILL.md +31 -0
- package/plugins/copilot-pbr/skills/debug/SKILL.md +511 -0
- package/plugins/copilot-pbr/skills/debug/templates/continuation-prompt.md.tmpl +17 -0
- package/plugins/copilot-pbr/skills/debug/templates/initial-investigation-prompt.md.tmpl +28 -0
- package/plugins/copilot-pbr/skills/discuss/SKILL.md +343 -0
- package/plugins/copilot-pbr/skills/discuss/templates/CONTEXT.md.tmpl +62 -0
- package/plugins/copilot-pbr/skills/discuss/templates/decision-categories.md +10 -0
- package/plugins/copilot-pbr/skills/do/SKILL.md +66 -0
- package/plugins/copilot-pbr/skills/explore/SKILL.md +374 -0
- package/plugins/copilot-pbr/skills/health/SKILL.md +218 -0
- package/plugins/copilot-pbr/skills/health/templates/check-pattern.md.tmpl +31 -0
- package/plugins/copilot-pbr/skills/health/templates/output-format.md.tmpl +64 -0
- package/plugins/copilot-pbr/skills/help/SKILL.md +152 -0
- package/plugins/copilot-pbr/skills/import/SKILL.md +498 -0
- package/plugins/copilot-pbr/skills/milestone/SKILL.md +703 -0
- package/plugins/copilot-pbr/skills/milestone/templates/audit-report.md.tmpl +49 -0
- package/plugins/copilot-pbr/skills/milestone/templates/stats-file.md.tmpl +31 -0
- package/plugins/copilot-pbr/skills/note/SKILL.md +227 -0
- package/plugins/copilot-pbr/skills/pause/SKILL.md +246 -0
- package/plugins/copilot-pbr/skills/pause/templates/continue-here.md.tmpl +72 -0
- package/plugins/copilot-pbr/skills/plan/SKILL.md +649 -0
- package/plugins/copilot-pbr/skills/plan/templates/checker-prompt.md.tmpl +22 -0
- package/plugins/copilot-pbr/skills/plan/templates/gap-closure-prompt.md.tmpl +33 -0
- package/plugins/copilot-pbr/skills/plan/templates/planner-prompt.md.tmpl +39 -0
- package/plugins/copilot-pbr/skills/plan/templates/researcher-prompt.md.tmpl +20 -0
- package/plugins/copilot-pbr/skills/plan/templates/revision-prompt.md.tmpl +24 -0
- package/plugins/copilot-pbr/skills/quick/SKILL.md +351 -0
- package/plugins/copilot-pbr/skills/resume/SKILL.md +399 -0
- package/plugins/copilot-pbr/skills/review/SKILL.md +648 -0
- package/plugins/copilot-pbr/skills/review/templates/debugger-prompt.md.tmpl +61 -0
- package/plugins/copilot-pbr/skills/review/templates/gap-planner-prompt.md.tmpl +41 -0
- package/plugins/copilot-pbr/skills/review/templates/verifier-prompt.md.tmpl +116 -0
- package/plugins/copilot-pbr/skills/scan/SKILL.md +301 -0
- package/plugins/copilot-pbr/skills/scan/templates/mapper-prompt.md.tmpl +202 -0
- package/plugins/copilot-pbr/skills/setup/SKILL.md +250 -0
- package/plugins/copilot-pbr/skills/shared/commit-planning-docs.md +36 -0
- package/plugins/copilot-pbr/skills/shared/config-loading.md +103 -0
- package/plugins/copilot-pbr/skills/shared/context-budget.md +41 -0
- package/plugins/copilot-pbr/skills/shared/context-loader-task.md +87 -0
- package/plugins/copilot-pbr/skills/shared/digest-select.md +80 -0
- package/plugins/copilot-pbr/skills/shared/domain-probes.md +126 -0
- package/plugins/copilot-pbr/skills/shared/error-reporting.md +80 -0
- package/plugins/copilot-pbr/skills/shared/gate-prompts.md +389 -0
- package/plugins/copilot-pbr/skills/shared/phase-argument-parsing.md +46 -0
- package/plugins/copilot-pbr/skills/shared/progress-display.md +54 -0
- package/plugins/copilot-pbr/skills/shared/revision-loop.md +82 -0
- package/plugins/copilot-pbr/skills/shared/state-loading.md +63 -0
- package/plugins/copilot-pbr/skills/shared/state-update.md +162 -0
- package/plugins/copilot-pbr/skills/shared/universal-anti-patterns.md +34 -0
- package/plugins/copilot-pbr/skills/status/SKILL.md +362 -0
- package/plugins/copilot-pbr/skills/todo/SKILL.md +256 -0
- package/plugins/copilot-pbr/templates/CONTEXT.md.tmpl +53 -0
- package/plugins/copilot-pbr/templates/INTEGRATION-REPORT.md.tmpl +152 -0
- package/plugins/copilot-pbr/templates/RESEARCH-SUMMARY.md.tmpl +98 -0
- package/plugins/copilot-pbr/templates/ROADMAP.md.tmpl +41 -0
- package/plugins/copilot-pbr/templates/SUMMARY.md.tmpl +82 -0
- package/plugins/copilot-pbr/templates/VERIFICATION-DETAIL.md.tmpl +117 -0
- package/plugins/copilot-pbr/templates/codebase/ARCHITECTURE.md.tmpl +98 -0
- package/plugins/copilot-pbr/templates/codebase/CONCERNS.md.tmpl +93 -0
- package/plugins/copilot-pbr/templates/codebase/CONVENTIONS.md.tmpl +104 -0
- package/plugins/copilot-pbr/templates/codebase/INTEGRATIONS.md.tmpl +78 -0
- package/plugins/copilot-pbr/templates/codebase/STACK.md.tmpl +78 -0
- package/plugins/copilot-pbr/templates/codebase/STRUCTURE.md.tmpl +80 -0
- package/plugins/copilot-pbr/templates/codebase/TESTING.md.tmpl +107 -0
- package/plugins/copilot-pbr/templates/continue-here.md.tmpl +74 -0
- package/plugins/copilot-pbr/templates/prompt-partials/phase-project-context.md.tmpl +38 -0
- package/plugins/copilot-pbr/templates/research/ARCHITECTURE.md.tmpl +124 -0
- package/plugins/copilot-pbr/templates/research/STACK.md.tmpl +71 -0
- package/plugins/copilot-pbr/templates/research/SUMMARY.md.tmpl +112 -0
- package/plugins/copilot-pbr/templates/research-outputs/phase-research.md.tmpl +81 -0
- package/plugins/copilot-pbr/templates/research-outputs/project-research.md.tmpl +99 -0
- package/plugins/copilot-pbr/templates/research-outputs/synthesis.md.tmpl +36 -0
- package/plugins/cursor-pbr/.cursor-plugin/plugin.json +13 -3
- package/plugins/cursor-pbr/skills/dashboard/SKILL.md +14 -4
- package/plugins/cursor-pbr/skills/do/SKILL.md +67 -0
- package/plugins/cursor-pbr/skills/milestone/SKILL.md +10 -7
- package/plugins/cursor-pbr/skills/todo/SKILL.md +28 -5
- package/plugins/cursor-pbr/templates/codebase/ARCHITECTURE.md.tmpl +98 -0
- package/plugins/cursor-pbr/templates/codebase/CONCERNS.md.tmpl +93 -0
- package/plugins/cursor-pbr/templates/codebase/CONVENTIONS.md.tmpl +104 -0
- package/plugins/cursor-pbr/templates/codebase/INTEGRATIONS.md.tmpl +78 -0
- package/plugins/cursor-pbr/templates/codebase/STACK.md.tmpl +78 -0
- package/plugins/cursor-pbr/templates/codebase/STRUCTURE.md.tmpl +80 -0
- package/plugins/cursor-pbr/templates/codebase/TESTING.md.tmpl +107 -0
- package/plugins/cursor-pbr/templates/research/ARCHITECTURE.md.tmpl +124 -0
- package/plugins/cursor-pbr/templates/research/STACK.md.tmpl +71 -0
- package/plugins/cursor-pbr/templates/research/SUMMARY.md.tmpl +112 -0
- package/plugins/cursor-pbr/templates/research-outputs/phase-research.md.tmpl +81 -0
- package/plugins/cursor-pbr/templates/research-outputs/project-research.md.tmpl +99 -0
- package/plugins/cursor-pbr/templates/research-outputs/synthesis.md.tmpl +36 -0
- package/plugins/pbr/.claude-plugin/plugin.json +7 -2
- package/plugins/pbr/scripts/validate-skill-args.js +54 -10
- package/plugins/pbr/skills/do/SKILL.md +70 -0
- package/plugins/pbr/skills/milestone/SKILL.md +10 -7
- package/plugins/pbr/skills/todo/SKILL.md +29 -6
package/CHANGELOG.md
CHANGED
|
@@ -5,8 +5,57 @@ All notable changes to Plan-Build-Run will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [2.4.0](https://github.com/SienkLogic/plan-build-run/compare/plan-build-run-v2.3.1...plan-build-run-v2.4.0) (2026-02-19)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* **tools:** add GitHub Copilot CLI plugin port ([3977261](https://github.com/SienkLogic/plan-build-run/commit/39772618479551a58123d08d99cbcb1178a0cd2a))
|
|
14
|
+
* **tools:** archive milestones into versioned directories with phase migration ([206b925](https://github.com/SienkLogic/plan-build-run/commit/206b925dd6692131f0d9127d10cd07208c777e40))
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Bug Fixes
|
|
18
|
+
|
|
19
|
+
* **tools:** parse simple two-column roadmap table in dashboard ([f881004](https://github.com/SienkLogic/plan-build-run/commit/f8810045739ffeaf29a495f824bc34828c8e6c4d))
|
|
20
|
+
* **tools:** resolve lint errors in cross-plugin compat tests ([731efb2](https://github.com/SienkLogic/plan-build-run/commit/731efb221cf630a697a48bf732eed736b9514b1c))
|
|
21
|
+
* **tools:** sync dashboard skill paths and missing templates across all plugins ([ee7d770](https://github.com/SienkLogic/plan-build-run/commit/ee7d770c09f8dd7da1b1b9f76d162f0e87fc58a5))
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### Documentation
|
|
25
|
+
|
|
26
|
+
* **tools:** add /pbr:dashboard command to README dashboard section ([e1d3a60](https://github.com/SienkLogic/plan-build-run/commit/e1d3a60e0f8cffcd2f093725e73a0eca0a6c67ad))
|
|
27
|
+
* **tools:** add missing 2.3.0 and 2.3.1 changelog entries ([82c5cb2](https://github.com/SienkLogic/plan-build-run/commit/82c5cb21a741be4bfe13613debdeb54f862ce1f3))
|
|
28
|
+
* **tools:** make platform badges clickable links to install pages ([a1f6b68](https://github.com/SienkLogic/plan-build-run/commit/a1f6b68a786458a6040d0fa50a99e01431016332))
|
|
29
|
+
* **tools:** update README with Copilot CLI support and current stats ([edad2d9](https://github.com/SienkLogic/plan-build-run/commit/edad2d924198d6598eed1fb0b0a23c164617e5b6))
|
|
30
|
+
|
|
8
31
|
## [Unreleased]
|
|
9
32
|
|
|
33
|
+
## [2.3.1] - 2026-02-19
|
|
34
|
+
|
|
35
|
+
### Added
|
|
36
|
+
- **GitHub Copilot CLI plugin** (`plugins/copilot-pbr/`) — complete port with 22 skills, 10 agents (`.agent.md` format), and Copilot CLI hook configuration
|
|
37
|
+
- Setup scripts (`setup.sh`, `setup.ps1`) for Copilot CLI plugin installation with `copilot plugin install` support
|
|
38
|
+
- Cross-plugin compatibility tests now cover all three plugins (Claude Code, Cursor, Copilot CLI) — 164 tests via data-driven `describe.each`
|
|
39
|
+
- New cross-plugin guard tests: `references/ files match PBR` and `templates/ files match PBR` catch drift automatically
|
|
40
|
+
- Dashboard skill now works from Copilot CLI sessions (`/pbr:dashboard`)
|
|
41
|
+
- Platform badges in README link to install pages (wiki or anchor)
|
|
42
|
+
|
|
43
|
+
### Fixed
|
|
44
|
+
- Synced 13 missing template files (`codebase/`, `research/`, `research-outputs/`) to Cursor and Copilot plugins
|
|
45
|
+
- Dashboard skill in derivative plugins now references correct relative path (`../../dashboard/`) instead of nonexistent `<plugin-root>/dashboard/`
|
|
46
|
+
- Cross-plugin frontmatter parser now handles both `\r\n` and `\n` line endings (was silently failing on Windows-style files)
|
|
47
|
+
- Test count: 1219 tests across 44 suites (up from 1134)
|
|
48
|
+
|
|
49
|
+
## [2.3.0] - 2026-02-19
|
|
50
|
+
|
|
51
|
+
### Added
|
|
52
|
+
- `/pbr:do` freeform router — routes natural language input to the right PBR skill automatically
|
|
53
|
+
- Smart skill suggestions in hook feedback when freeform text is detected
|
|
54
|
+
- Freeform text guard hook for `/pbr:plan` and todo work subcommand
|
|
55
|
+
|
|
56
|
+
### Fixed
|
|
57
|
+
- Dashboard skill `argument-hint` synced to Cursor plugin
|
|
58
|
+
|
|
10
59
|
## [2.2.0] - 2026-02-19
|
|
11
60
|
|
|
12
61
|
### Added
|
package/README.md
CHANGED
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
6
|
-
<strong>Context-engineered development workflow for Claude Code and
|
|
6
|
+
<strong>Context-engineered development workflow for Claude Code, Cursor, and GitHub Copilot CLI.</strong>
|
|
7
7
|
<br />
|
|
8
8
|
Build ambitious multi-phase software without quality degradation.
|
|
9
9
|
<br />
|
|
10
|
-
Works with any Claude Code plan. Shines on Max. Now available for Cursor IDE.
|
|
10
|
+
Works with any Claude Code plan. Shines on Max. Now available for Cursor IDE and GitHub Copilot CLI.
|
|
11
11
|
<br />
|
|
12
12
|
<br />
|
|
13
13
|
<a href="#why-plan-build-run">Why Plan-Build-Run?</a> •
|
|
@@ -20,12 +20,13 @@
|
|
|
20
20
|
|
|
21
21
|
<p align="center">
|
|
22
22
|
<a href="https://github.com/SienkLogic/plan-build-run/actions"><img src="https://img.shields.io/github/actions/workflow/status/SienkLogic/plan-build-run/ci.yml?style=for-the-badge&label=CI&logo=github" alt="CI Status" /></a>
|
|
23
|
-
<img src="https://img.shields.io/badge/Claude_Code-Plugin-7C3AED?style=for-the-badge&logo=anthropic&logoColor=white" alt="Claude Code Plugin"
|
|
24
|
-
<img src="https://img.shields.io/badge/Cursor-Plugin-00A67E?style=for-the-badge&logo=cursor&logoColor=white" alt="Cursor Plugin"
|
|
23
|
+
<a href="#install"><img src="https://img.shields.io/badge/Claude_Code-Plugin-7C3AED?style=for-the-badge&logo=anthropic&logoColor=white" alt="Claude Code Plugin" /></a>
|
|
24
|
+
<a href="https://github.com/SienkLogic/plan-build-run/wiki/Cursor-IDE"><img src="https://img.shields.io/badge/Cursor-Plugin-00A67E?style=for-the-badge&logo=cursor&logoColor=white" alt="Cursor Plugin" /></a>
|
|
25
|
+
<a href="https://github.com/SienkLogic/plan-build-run/wiki/Copilot-CLI"><img src="https://img.shields.io/badge/Copilot_CLI-Plugin-1F6FEB?style=for-the-badge&logo=github&logoColor=white" alt="Copilot CLI Plugin" /></a>
|
|
25
26
|
<img src="https://img.shields.io/badge/Node.js-18%2B-339933?style=for-the-badge&logo=node.js&logoColor=white" alt="Node.js 18+" />
|
|
26
27
|
<a href="LICENSE"><img src="https://img.shields.io/github/license/SienkLogic/plan-build-run?style=for-the-badge" alt="License" /></a>
|
|
27
28
|
<a href="https://www.npmjs.com/package/@sienklogic/plan-build-run"><img src="https://img.shields.io/npm/v/@sienklogic/plan-build-run?style=for-the-badge&logo=npm&logoColor=white" alt="npm" /></a>
|
|
28
|
-
<img src="https://img.shields.io/badge/Tests-
|
|
29
|
+
<img src="https://img.shields.io/badge/Tests-1213_passing-brightgreen?style=for-the-badge" alt="1213 Tests" />
|
|
29
30
|
</p>
|
|
30
31
|
|
|
31
32
|
---
|
|
@@ -88,7 +89,8 @@ All `/pbr:*` commands are now available globally.
|
|
|
88
89
|
|
|
89
90
|
</details>
|
|
90
91
|
|
|
91
|
-
|
|
92
|
+
<details>
|
|
93
|
+
<summary><strong>Install for Cursor IDE</strong></summary>
|
|
92
94
|
|
|
93
95
|
Plan-Build-Run also works in Cursor. The setup script symlinks rules and agents into your project's `.cursor/` directory.
|
|
94
96
|
|
|
@@ -106,25 +108,54 @@ powershell -ExecutionPolicy Bypass -File C:\path\to\plan-build-run\plugins\curso
|
|
|
106
108
|
|
|
107
109
|
Both plugins share the same `.planning/` directory — start a project in Claude Code, continue in Cursor, or vice versa. See [`plugins/cursor-pbr/README.md`](plugins/cursor-pbr/README.md) for full details.
|
|
108
110
|
|
|
109
|
-
|
|
111
|
+
</details>
|
|
112
|
+
|
|
113
|
+
<details>
|
|
114
|
+
<summary><strong>Install for GitHub Copilot CLI</strong></summary>
|
|
110
115
|
|
|
111
|
-
Plan-Build-Run
|
|
116
|
+
Plan-Build-Run also works in GitHub Copilot CLI. The setup script installs PBR as a Copilot CLI plugin and symlinks agents into your project.
|
|
112
117
|
|
|
118
|
+
**macOS / Linux:**
|
|
113
119
|
```bash
|
|
114
|
-
|
|
115
|
-
|
|
120
|
+
cd /path/to/your/project
|
|
121
|
+
bash /path/to/plan-build-run/plugins/copilot-pbr/setup.sh
|
|
122
|
+
```
|
|
116
123
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
124
|
+
**Windows (PowerShell):**
|
|
125
|
+
```powershell
|
|
126
|
+
cd C:\path\to\your\project
|
|
127
|
+
powershell -ExecutionPolicy Bypass -File C:\path\to\plan-build-run\plugins\copilot-pbr\setup.ps1
|
|
120
128
|
```
|
|
121
129
|
|
|
122
|
-
|
|
130
|
+
All three plugins share the same `.planning/` directory — start in any tool, continue in another. See [`plugins/copilot-pbr/README.md`](plugins/copilot-pbr/README.md) for full details.
|
|
131
|
+
|
|
132
|
+
</details>
|
|
133
|
+
|
|
134
|
+
<details>
|
|
135
|
+
<summary><strong>Dashboard (Optional)</strong></summary>
|
|
136
|
+
|
|
137
|
+
Plan-Build-Run ships with a companion web dashboard for browsing your project's planning state in a browser.
|
|
123
138
|
|
|
124
139
|
```bash
|
|
125
|
-
|
|
140
|
+
# One-time install of dashboard dependencies
|
|
141
|
+
npm run dashboard:install
|
|
142
|
+
|
|
143
|
+
# Launch the dashboard (defaults to current directory)
|
|
144
|
+
npm run dashboard
|
|
145
|
+
|
|
146
|
+
# Or specify a project directory and port
|
|
147
|
+
npm run dashboard -- --dir /path/to/your/project --port 3000
|
|
126
148
|
```
|
|
127
149
|
|
|
150
|
+
Or launch it directly from a Claude Code, Cursor, or Copilot CLI session:
|
|
151
|
+
```
|
|
152
|
+
/pbr:dashboard
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Opens at `http://127.0.0.1:3000` with live updates via SSE.
|
|
156
|
+
|
|
157
|
+
</details>
|
|
158
|
+
|
|
128
159
|
### Quick Start (Max / Max 5x)
|
|
129
160
|
|
|
130
161
|
Full pipeline with parallel research and multi-agent builds. Best experience.
|
|
@@ -187,7 +218,7 @@ Set `depth: quick` in `/pbr:config` to reduce agent spawns across all workflows.
|
|
|
187
218
|
| `/pbr:build <N>` | Build a phase: parallel execution in waves, atomic commits | 2-4 (quick: 1-2) |
|
|
188
219
|
| `/pbr:review <N>` | Verify a phase: automated 3-layer checks + conversational UAT | 1 |
|
|
189
220
|
|
|
190
|
-
See **[Commands](https://github.com/SienkLogic/plan-build-run/wiki/Commands)** for all
|
|
221
|
+
See **[Commands](https://github.com/SienkLogic/plan-build-run/wiki/Commands)** for all 22 commands with flags, cost-by-depth tables, and detailed descriptions.
|
|
191
222
|
|
|
192
223
|
---
|
|
193
224
|
|
|
@@ -218,6 +249,8 @@ See **[Architecture](https://github.com/SienkLogic/plan-build-run/wiki/Architect
|
|
|
218
249
|
| **[Hooks](https://github.com/SienkLogic/plan-build-run/wiki/Hooks)** | 15 lifecycle hooks that enforce discipline at zero token cost |
|
|
219
250
|
| **[Project Structure](https://github.com/SienkLogic/plan-build-run/wiki/Project-Structure)** | The `.planning/` directory layout, key files, and file ownership |
|
|
220
251
|
| **[Dashboard](https://github.com/SienkLogic/plan-build-run/wiki/Dashboard)** | Web UI with live updates for browsing project state |
|
|
252
|
+
| **[Cursor IDE](https://github.com/SienkLogic/plan-build-run/wiki/Cursor-IDE)** | Cursor plugin installation and cross-IDE workflow |
|
|
253
|
+
| **[Copilot CLI](https://github.com/SienkLogic/plan-build-run/wiki/Copilot-CLI)** | GitHub Copilot CLI plugin: installation, hooks, and differences |
|
|
221
254
|
| **[Philosophy](https://github.com/SienkLogic/plan-build-run/wiki/Philosophy)** | Design principles and platform alignment strategy |
|
|
222
255
|
| **[What Sets It Apart](https://github.com/SienkLogic/plan-build-run/wiki/What-Sets-It-Apart)** | Feature comparison and key differentiators |
|
|
223
256
|
|
|
@@ -231,7 +264,7 @@ git clone https://github.com/SienkLogic/plan-build-run.git
|
|
|
231
264
|
cd plan-build-run
|
|
232
265
|
npm install
|
|
233
266
|
|
|
234
|
-
# Run tests (
|
|
267
|
+
# Run tests (1213 tests, 44 suites)
|
|
235
268
|
npm test
|
|
236
269
|
|
|
237
270
|
# Lint
|
|
@@ -252,11 +285,12 @@ CI runs on Node 18/20/22 across Windows, macOS, and Linux. See [CONTRIBUTING.md]
|
|
|
252
285
|
|
|
253
286
|
| Metric | Count |
|
|
254
287
|
|--------|-------|
|
|
255
|
-
| Skills (slash commands) |
|
|
288
|
+
| Skills (slash commands) | 22 |
|
|
256
289
|
| Specialized agents | 10 |
|
|
257
290
|
| Hook scripts | 28 |
|
|
258
|
-
|
|
|
259
|
-
|
|
|
291
|
+
| Supported platforms | 3 (Claude Code, Cursor, Copilot CLI) |
|
|
292
|
+
| Tests | 1213 |
|
|
293
|
+
| Test suites | 44 |
|
|
260
294
|
| Config toggles | 12 top-level keys |
|
|
261
295
|
|
|
262
296
|
---
|
|
@@ -198,10 +198,33 @@ export async function parseRoadmapFile(projectDir) {
|
|
|
198
198
|
});
|
|
199
199
|
}
|
|
200
200
|
|
|
201
|
-
//
|
|
201
|
+
// 5. Parse simple two-column table: "| 1. Name | Completed |"
|
|
202
|
+
// Used in milestone-archived roadmaps
|
|
203
|
+
const simpleTableRegex = /^\|\s*(\d+)\.\s+(.+?)\s*\|\s*(.+?)\s*\|$/gm;
|
|
204
|
+
const simplePhases = [];
|
|
205
|
+
for (const match of content.matchAll(simpleTableRegex)) {
|
|
206
|
+
const id = parseInt(match[1], 10);
|
|
207
|
+
const name = match[2].trim();
|
|
208
|
+
const statusText = match[3].trim().toLowerCase();
|
|
209
|
+
|
|
210
|
+
let status;
|
|
211
|
+
if (statusText === 'completed' || statusText === 'complete') status = 'complete';
|
|
212
|
+
else if (statusText === 'in progress' || statusText === 'in-progress') status = 'in-progress';
|
|
213
|
+
else status = 'not-started';
|
|
214
|
+
|
|
215
|
+
const cbInfo = checkboxMap.get(id);
|
|
216
|
+
const goalDesc = goalMap.get(id);
|
|
217
|
+
const description = cbInfo?.description || goalDesc || '';
|
|
218
|
+
|
|
219
|
+
simplePhases.push({ id, name, description, status });
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// Use Progress table if available, then simple table, then checkbox list, then H3 headings
|
|
202
223
|
let phases;
|
|
203
224
|
if (progressPhases.length > 0) {
|
|
204
225
|
phases = progressPhases;
|
|
226
|
+
} else if (simplePhases.length > 0) {
|
|
227
|
+
phases = simplePhases;
|
|
205
228
|
} else if (checkboxMap.size > 0) {
|
|
206
229
|
phases = [...checkboxMap.entries()]
|
|
207
230
|
.map(([id, info]) => ({
|
|
@@ -5,7 +5,10 @@ import { getRoadmapData } from './roadmap.service.js';
|
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Scan .planning/milestones/ for archived milestone files.
|
|
8
|
-
*
|
|
8
|
+
* Supports two formats:
|
|
9
|
+
* - Directory: v{version}/ containing ROADMAP.md, STATS.md, etc.
|
|
10
|
+
* - Flat file: v{version}-{TYPE}.md (legacy)
|
|
11
|
+
* Directory format takes precedence if both exist for the same version.
|
|
9
12
|
*
|
|
10
13
|
* @param {string} projectDir - Absolute path to the project root
|
|
11
14
|
* @returns {Promise<Array<{version: string, name: string, date: string, duration: string, files: string[]}>>}
|
|
@@ -15,33 +18,69 @@ export async function listArchivedMilestones(projectDir) {
|
|
|
15
18
|
|
|
16
19
|
let entries;
|
|
17
20
|
try {
|
|
18
|
-
entries = await readdir(milestonesDir);
|
|
21
|
+
entries = await readdir(milestonesDir, { withFileTypes: true });
|
|
19
22
|
} catch (err) {
|
|
20
23
|
if (err.code === 'ENOENT') return [];
|
|
21
24
|
throw err;
|
|
22
25
|
}
|
|
23
26
|
|
|
24
|
-
// Group files by version prefix: v1.0-ROADMAP.md -> version "1.0"
|
|
25
27
|
const versionMap = new Map();
|
|
26
|
-
const versionPattern = /^v([\w.-]+)-(\w+)\.md$/;
|
|
27
28
|
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
// Pass 1: Detect directory-format milestones (v1.0/, v2.0/, etc.)
|
|
30
|
+
const dirPattern = /^v([\w.-]+)$/;
|
|
31
|
+
for (const entry of entries) {
|
|
32
|
+
if (!entry.isDirectory()) continue;
|
|
33
|
+
const match = entry.name.match(dirPattern);
|
|
30
34
|
if (!match) continue;
|
|
31
35
|
|
|
32
36
|
const version = match[1];
|
|
37
|
+
// Read files inside the version directory
|
|
38
|
+
let dirFiles;
|
|
39
|
+
try {
|
|
40
|
+
dirFiles = await readdir(join(milestonesDir, entry.name));
|
|
41
|
+
} catch (_e) {
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
const mdFiles = dirFiles.filter(f => f.endsWith('.md'));
|
|
45
|
+
if (mdFiles.length === 0) continue;
|
|
46
|
+
|
|
47
|
+
versionMap.set(version, { version, name: '', date: '', duration: '', files: mdFiles, format: 'directory' });
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// Pass 2: Detect flat-file milestones (v1.0-ROADMAP.md, etc.) — skip versions already found as directories
|
|
51
|
+
const filePattern = /^v([\w.-]+)-(\w+)\.md$/;
|
|
52
|
+
for (const entry of entries) {
|
|
53
|
+
if (entry.isDirectory()) continue;
|
|
54
|
+
const match = entry.name.match(filePattern);
|
|
55
|
+
if (!match) continue;
|
|
56
|
+
|
|
57
|
+
const version = match[1];
|
|
58
|
+
// Skip if this version was already found as a directory
|
|
59
|
+
if (versionMap.has(version) && versionMap.get(version).format === 'directory') continue;
|
|
60
|
+
|
|
33
61
|
if (!versionMap.has(version)) {
|
|
34
|
-
versionMap.set(version, { version, name: '', date: '', duration: '', files: [] });
|
|
62
|
+
versionMap.set(version, { version, name: '', date: '', duration: '', files: [], format: 'flat' });
|
|
35
63
|
}
|
|
36
|
-
versionMap.get(version).files.push(
|
|
64
|
+
versionMap.get(version).files.push(entry.name);
|
|
37
65
|
}
|
|
38
66
|
|
|
39
67
|
// Try to parse STATS.md for each version to get name/date/duration
|
|
40
68
|
for (const [version, milestone] of versionMap) {
|
|
41
|
-
|
|
42
|
-
if (milestone.
|
|
69
|
+
let statsPath;
|
|
70
|
+
if (milestone.format === 'directory') {
|
|
71
|
+
if (milestone.files.includes('STATS.md')) {
|
|
72
|
+
statsPath = join(milestonesDir, `v${version}`, 'STATS.md');
|
|
73
|
+
}
|
|
74
|
+
} else {
|
|
75
|
+
const statsFile = `v${version}-STATS.md`;
|
|
76
|
+
if (milestone.files.includes(statsFile)) {
|
|
77
|
+
statsPath = join(milestonesDir, statsFile);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if (statsPath) {
|
|
43
82
|
try {
|
|
44
|
-
const { frontmatter } = await readMarkdownFile(
|
|
83
|
+
const { frontmatter } = await readMarkdownFile(statsPath);
|
|
45
84
|
milestone.name = frontmatter.milestone || frontmatter.name || `v${version}`;
|
|
46
85
|
milestone.date = frontmatter.completed || frontmatter.date || '';
|
|
47
86
|
milestone.duration = frontmatter.duration || '';
|
|
@@ -53,8 +92,10 @@ export async function listArchivedMilestones(projectDir) {
|
|
|
53
92
|
}
|
|
54
93
|
}
|
|
55
94
|
|
|
56
|
-
// Sort by version descending (newest first)
|
|
57
|
-
return [...versionMap.values()]
|
|
95
|
+
// Sort by version descending (newest first) — strip internal format field
|
|
96
|
+
return [...versionMap.values()]
|
|
97
|
+
.sort((a, b) => b.version.localeCompare(a.version, undefined, { numeric: true }))
|
|
98
|
+
.map(({ format: _f, ...rest }) => rest);
|
|
58
99
|
}
|
|
59
100
|
|
|
60
101
|
/**
|
|
@@ -89,14 +130,24 @@ export async function getMilestoneDetail(projectDir, version) {
|
|
|
89
130
|
|
|
90
131
|
const sections = [];
|
|
91
132
|
for (const type of fileTypes) {
|
|
92
|
-
|
|
133
|
+
// Try directory format first, then fall back to flat file
|
|
134
|
+
const dirPath = join(milestonesDir, `v${version}`, `${type}.md`);
|
|
135
|
+
const flatPath = join(milestonesDir, `v${version}-${type}.md`);
|
|
136
|
+
|
|
137
|
+
let result;
|
|
93
138
|
try {
|
|
94
|
-
|
|
95
|
-
sections.push({ type, frontmatter: result.frontmatter, html: result.html });
|
|
139
|
+
result = await readMarkdownFile(dirPath);
|
|
96
140
|
} catch (err) {
|
|
97
141
|
if (err.code !== 'ENOENT') throw err;
|
|
98
|
-
|
|
142
|
+
try {
|
|
143
|
+
result = await readMarkdownFile(flatPath);
|
|
144
|
+
} catch (err2) {
|
|
145
|
+
if (err2.code !== 'ENOENT') throw err2;
|
|
146
|
+
// Neither format exists for this type — skip
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
99
149
|
}
|
|
150
|
+
sections.push({ type, frontmatter: result.frontmatter, html: result.html });
|
|
100
151
|
}
|
|
101
152
|
|
|
102
153
|
return { version, sections };
|
package/package.json
CHANGED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Changelog — Plan-Build-Run for GitHub Copilot CLI
|
|
2
|
+
|
|
3
|
+
## 2.3.1 (2026-02-19)
|
|
4
|
+
|
|
5
|
+
Initial port of Plan-Build-Run to GitHub Copilot CLI.
|
|
6
|
+
|
|
7
|
+
### What's included
|
|
8
|
+
- 22 skills ported from Cursor plugin (argument-hint removed — not supported by Copilot CLI)
|
|
9
|
+
- 10 agents with `.agent.md` extension and Copilot CLI frontmatter (`tools`, `infer`, `target`)
|
|
10
|
+
- Hook configuration using Copilot CLI's `bash`/`powershell` format (6 of 11 events supported)
|
|
11
|
+
- Setup scripts for macOS/Linux (bash) and Windows (PowerShell)
|
|
12
|
+
- Full reference docs and templates from the shared PBR corpus
|
|
13
|
+
|
|
14
|
+
### Copilot CLI adaptations
|
|
15
|
+
- Agent files use `.agent.md` extension (Copilot CLI requirement)
|
|
16
|
+
- Hook blocking uses JSON output (`permissionDecision: "deny"`) instead of exit code 2
|
|
17
|
+
- Missing hook events: `SubagentStart`, `SubagentStop`, `TaskCompleted`, `PostToolUseFailure`, `PreCompact`, `Stop`
|
|
18
|
+
- Skills omit `argument-hint` frontmatter (not supported by Copilot CLI)
|
|
19
|
+
- Plugin manifest at `plugin.json` root (not in `.claude-plugin/` or `.cursor-plugin/`)
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Plan-Build-Run for GitHub Copilot CLI
|
|
2
|
+
|
|
3
|
+
A structured development workflow plugin for GitHub Copilot CLI that solves context rot through disciplined agent delegation, file-based state, and goal-backward verification.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
### Automated Setup (Recommended)
|
|
8
|
+
|
|
9
|
+
The setup script installs PBR as a Copilot CLI plugin and symlinks agents into your project.
|
|
10
|
+
|
|
11
|
+
**macOS / Linux:**
|
|
12
|
+
```bash
|
|
13
|
+
cd /path/to/your/project
|
|
14
|
+
bash /path/to/plan-build-run/plugins/copilot-pbr/setup.sh
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
**Windows (PowerShell):**
|
|
18
|
+
```powershell
|
|
19
|
+
cd C:\path\to\your\project
|
|
20
|
+
powershell -ExecutionPolicy Bypass -File C:\path\to\plan-build-run\plugins\copilot-pbr\setup.ps1
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
This installs:
|
|
24
|
+
- The PBR plugin (globally via `copilot plugin install` or symlink to `~/.copilot/installed-plugins/`)
|
|
25
|
+
- `.github/agents/*.agent.md` — 10 specialized agent definitions (project-scoped)
|
|
26
|
+
|
|
27
|
+
### Manual Setup
|
|
28
|
+
|
|
29
|
+
If you prefer not to use the setup script:
|
|
30
|
+
|
|
31
|
+
1. Run `copilot plugin install --local /path/to/plugins/copilot-pbr`
|
|
32
|
+
2. Copy or symlink all files from `agents/` into your project's `.github/agents/` directory
|
|
33
|
+
3. Skills (in `skills/`) are prompt templates — paste a skill's `SKILL.md` content into Copilot CLI chat to invoke it, or use `/pbr:*` slash commands if the plugin is installed
|
|
34
|
+
|
|
35
|
+
### Uninstall
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
copilot plugin uninstall pbr
|
|
39
|
+
rm .github/agents/*.agent.md
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Quick Start
|
|
43
|
+
|
|
44
|
+
The core workflow follows four steps per phase:
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
/pbr:begin — Define your project: requirements, research, roadmap
|
|
48
|
+
/pbr:plan 1 — Create a detailed plan for phase 1
|
|
49
|
+
/pbr:build 1 — Execute the plan with atomic commits
|
|
50
|
+
/pbr:review 1 — Verify the build matched the plan
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Repeat `plan` / `build` / `review` for each phase in your roadmap.
|
|
54
|
+
|
|
55
|
+
## Skills (22)
|
|
56
|
+
|
|
57
|
+
| Skill | Description |
|
|
58
|
+
|-------|-------------|
|
|
59
|
+
| begin | Start a new project. Deep questioning, research, requirements, and roadmap. |
|
|
60
|
+
| build | Execute all plans in a phase. Spawns agents to build in parallel, commits atomically. |
|
|
61
|
+
| config | Configure settings: depth, model profiles, features, git, and gates. |
|
|
62
|
+
| continue | Execute the next logical step automatically. No prompts, no decisions. |
|
|
63
|
+
| dashboard | Launch the PBR web dashboard for the current project. |
|
|
64
|
+
| debug | Systematic debugging with hypothesis testing. Persistent across sessions. |
|
|
65
|
+
| discuss | Talk through a phase before planning. Identifies gray areas and captures decisions. |
|
|
66
|
+
| do | Route freeform text to the right PBR skill automatically. |
|
|
67
|
+
| explore | Explore ideas, think through approaches, and route insights to the right artifacts. |
|
|
68
|
+
| health | Check planning directory integrity. Find and fix corrupted state. |
|
|
69
|
+
| help | Command reference and workflow guide. |
|
|
70
|
+
| import | Import external plans. Validates context, detects conflicts, generates PLAN.md. |
|
|
71
|
+
| milestone | Manage milestones: new, complete, audit, gaps. |
|
|
72
|
+
| note | Zero-friction idea capture. Append, list, or promote notes to todos. |
|
|
73
|
+
| pause | Save your current session state for later resumption. |
|
|
74
|
+
| plan | Create a detailed plan for a phase. Research, plan, and verify before building. |
|
|
75
|
+
| quick | Execute an ad-hoc task with atomic commits. Skips full plan/review. |
|
|
76
|
+
| resume | Pick up where you left off. Restores context and suggests next action. |
|
|
77
|
+
| review | Verify the build matched the plan. Automated checks plus walkthrough. |
|
|
78
|
+
| scan | Analyze an existing codebase. Maps structure, architecture, conventions, and concerns. |
|
|
79
|
+
| setup | Onboarding wizard. Initialize project, select models, verify setup. |
|
|
80
|
+
| status | Show current project status and suggest what to do next. |
|
|
81
|
+
| todo | File-based persistent todos. Add, list, complete — survives sessions. |
|
|
82
|
+
|
|
83
|
+
## Agents (10)
|
|
84
|
+
|
|
85
|
+
| Agent | Description |
|
|
86
|
+
|-------|-------------|
|
|
87
|
+
| codebase-mapper | Explores codebases and writes structured analysis across four focus areas. |
|
|
88
|
+
| debugger | Systematic debugging using scientific method with hypothesis testing and evidence tracking. |
|
|
89
|
+
| executor | Executes plan tasks with atomic commits, deviation handling, and self-verification. |
|
|
90
|
+
| general | Lightweight agent for ad-hoc tasks that don't fit specialized roles. |
|
|
91
|
+
| integration-checker | Cross-phase integration and E2E flow verification. |
|
|
92
|
+
| plan-checker | Verifies plans will achieve phase goals before execution via goal-backward analysis. |
|
|
93
|
+
| planner | Creates executable phase plans with task breakdown, dependency analysis, and wave assignment. |
|
|
94
|
+
| researcher | Unified research agent for project domains and implementation approaches. |
|
|
95
|
+
| synthesizer | Fast synthesis of multiple research outputs into coherent recommendations. |
|
|
96
|
+
| verifier | Goal-backward phase verification against the real codebase. |
|
|
97
|
+
|
|
98
|
+
## Configuration
|
|
99
|
+
|
|
100
|
+
Plan-Build-Run stores all state in a `.planning/` directory at your project root:
|
|
101
|
+
|
|
102
|
+
- `.planning/config.json` — Workflow settings (~62 properties across 12 keys)
|
|
103
|
+
- `.planning/STATE.md` — Current position and status
|
|
104
|
+
- `.planning/ROADMAP.md` — Phase structure, goals, and dependencies
|
|
105
|
+
- `.planning/phases/NN-slug/` — Per-phase plans, summaries, and verification reports
|
|
106
|
+
|
|
107
|
+
Run `/pbr:config` to interactively adjust settings like depth, model profiles, and gate behavior.
|
|
108
|
+
|
|
109
|
+
## Hook Compatibility
|
|
110
|
+
|
|
111
|
+
Copilot CLI supports 6 hook events vs Claude Code's full set. The following hooks are active in this port:
|
|
112
|
+
|
|
113
|
+
| Event | Scripts |
|
|
114
|
+
|-------|---------|
|
|
115
|
+
| sessionStart | progress-tracker.js |
|
|
116
|
+
| postToolUse | post-write-dispatch.js, post-write-quality.js, check-subagent-output.js, suggest-compact.js, track-context-budget.js |
|
|
117
|
+
| preToolUse | pre-bash-dispatch.js, pre-write-dispatch.js, validate-task.js, validate-skill-args.js |
|
|
118
|
+
| sessionEnd | session-cleanup.js |
|
|
119
|
+
|
|
120
|
+
**Not available** in Copilot CLI (present in Claude Code/Cursor ports): `SubagentStart`, `SubagentStop`, `TaskCompleted`, `PostToolUseFailure`, `PreCompact`, `Stop`.
|
|
121
|
+
|
|
122
|
+
## Cross-Plugin Compatibility
|
|
123
|
+
|
|
124
|
+
This plugin works alongside the Claude Code and Cursor versions of Plan-Build-Run. All three plugins share the same `.planning/` directory and file formats, so you can switch between tools without losing state. Hook scripts under `plugins/pbr/scripts/` are shared between all plugins via relative paths.
|
|
125
|
+
|
|
126
|
+
## Links
|
|
127
|
+
|
|
128
|
+
- Repository: [https://github.com/SienkLogic/plan-build-run](https://github.com/SienkLogic/plan-build-run)
|
|
129
|
+
- License: MIT
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: codebase-mapper
|
|
3
|
+
description: "Explores existing codebases and writes structured analysis documents. Four focus areas: tech, arch, quality, concerns."
|
|
4
|
+
tools: ["*"]
|
|
5
|
+
infer: true
|
|
6
|
+
target: "github-copilot"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Plan-Build-Run Codebase Mapper
|
|
10
|
+
|
|
11
|
+
You are **codebase-mapper**, the codebase analysis agent for the Plan-Build-Run development system. You explore existing codebases and produce structured documentation that helps other agents (and humans) understand the project's technology stack, architecture, conventions, and concerns.
|
|
12
|
+
|
|
13
|
+
## Core Philosophy
|
|
14
|
+
|
|
15
|
+
- **Document quality over brevity.** Be thorough. Other agents depend on your analysis for accurate planning and execution.
|
|
16
|
+
- **Always include file paths.** Every claim must reference the actual code location. Never say "the config file" — say "`tsconfig.json` at project root" or "`src/config/database.ts`".
|
|
17
|
+
- **Write current state only.** No temporal language ("recently added", "will be changed", "was refactored"). Document WHAT IS, not what was or will be.
|
|
18
|
+
- **Be prescriptive, not descriptive.** When documenting conventions: "Use this pattern" not "This pattern exists."
|
|
19
|
+
- **Evidence-based.** Read the actual files. Don't guess from file names or directory structures.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
### Forbidden Files
|
|
24
|
+
|
|
25
|
+
When exploring, NEVER commit or recommend committing:
|
|
26
|
+
- `.env` files (except `.env.example` or `.env.template`)
|
|
27
|
+
- `*.key`, `*.pem`, `*.pfx`, `*.p12` — private keys and certificates
|
|
28
|
+
- Files containing `credential` or `secret` in their name
|
|
29
|
+
- `*.keystore`, `*.jks` — Java keystores
|
|
30
|
+
- `id_rsa`, `id_ed25519` — SSH keys
|
|
31
|
+
|
|
32
|
+
If encountered, note in CONCERNS.md under "Security Considerations" but do NOT include contents.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Focus Areas
|
|
37
|
+
|
|
38
|
+
You receive ONE focus area per invocation. All output is written to `.planning/codebase/` (create if needed). **Do NOT commit** — the orchestrator handles commits.
|
|
39
|
+
|
|
40
|
+
| Focus | Output Files | Templates |
|
|
41
|
+
|-------|-------------|-----------|
|
|
42
|
+
| `tech` | STACK.md, INTEGRATIONS.md | `templates/codebase/STACK.md.tmpl`, `templates/codebase/INTEGRATIONS.md.tmpl` |
|
|
43
|
+
| `arch` | ARCHITECTURE.md, STRUCTURE.md | `templates/codebase/ARCHITECTURE.md.tmpl`, `templates/codebase/STRUCTURE.md.tmpl` |
|
|
44
|
+
| `quality` | CONVENTIONS.md, TESTING.md | `templates/codebase/CONVENTIONS.md.tmpl`, `templates/codebase/TESTING.md.tmpl` |
|
|
45
|
+
| `concerns` | CONCERNS.md | `templates/codebase/CONCERNS.md.tmpl` |
|
|
46
|
+
|
|
47
|
+
Read the relevant `.tmpl` file(s) and fill in all placeholder fields with data from your analysis.
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Exploration Process
|
|
52
|
+
|
|
53
|
+
> **Cross-platform**: Use Glob, Read, and Grep tools — not Bash `ls`, `find`, or `cat`. Bash file commands fail on Windows.
|
|
54
|
+
|
|
55
|
+
1. **Orientation** — Glob for source files, config files, docs, Docker, CI/CD to understand project shape.
|
|
56
|
+
2. **Deep Inspection** — Read 5-10+ key files per focus area (package.json, configs, entry points, core modules).
|
|
57
|
+
3. **Pattern Recognition** — Identify repeated conventions across the codebase.
|
|
58
|
+
4. **Write Documentation** — Write to `.planning/codebase/` using the templates. Write documents as you go to manage context.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Output Budget
|
|
63
|
+
|
|
64
|
+
| Artifact | Target | Hard Limit |
|
|
65
|
+
|----------|--------|------------|
|
|
66
|
+
| STACK.md | ≤ 800 tokens | 1,200 tokens |
|
|
67
|
+
| INTEGRATIONS.md | ≤ 600 tokens | 1,000 tokens |
|
|
68
|
+
| ARCHITECTURE.md | ≤ 1,000 tokens | 1,500 tokens |
|
|
69
|
+
| STRUCTURE.md | ≤ 600 tokens | 1,000 tokens |
|
|
70
|
+
| CONVENTIONS.md | ≤ 800 tokens | 1,200 tokens |
|
|
71
|
+
| TESTING.md | ≤ 600 tokens | 1,000 tokens |
|
|
72
|
+
| CONCERNS.md | ≤ 600 tokens | 1,000 tokens |
|
|
73
|
+
| Total per focus area (2 docs) | ≤ 1,400 tokens | 2,200 tokens |
|
|
74
|
+
|
|
75
|
+
**Guidance**: Tables over prose. Version numbers and file paths are the high-value data — skip explanations of what well-known tools do. The planner reads these documents to make decisions; give it decision-relevant facts, not tutorials.
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Quality Standards
|
|
80
|
+
|
|
81
|
+
1. Every claim must reference actual file paths (with line numbers when possible)
|
|
82
|
+
2. Verify versions from package.json/lock files, not from memory
|
|
83
|
+
3. Read at least 5-10 key files per focus area — file names lie, check source
|
|
84
|
+
4. Include actual code examples from the codebase, not generic examples
|
|
85
|
+
5. Stop before 50% context usage — write documents incrementally
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Universal Anti-Patterns
|
|
90
|
+
|
|
91
|
+
1. DO NOT guess or assume — read actual files for evidence
|
|
92
|
+
2. DO NOT trust SUMMARY.md or other agent claims without verifying codebase
|
|
93
|
+
3. DO NOT use vague language — be specific and evidence-based
|
|
94
|
+
4. DO NOT present training knowledge as verified fact
|
|
95
|
+
5. DO NOT exceed your role — recommend the correct agent if task doesn't fit
|
|
96
|
+
6. DO NOT modify files outside your designated scope
|
|
97
|
+
7. DO NOT add features or scope not requested — log to deferred
|
|
98
|
+
8. DO NOT skip steps in your protocol, even for "obvious" cases
|
|
99
|
+
9. DO NOT contradict locked decisions in CONTEXT.md
|
|
100
|
+
10. DO NOT implement deferred ideas from CONTEXT.md
|
|
101
|
+
11. DO NOT consume more than 50% context before producing output
|
|
102
|
+
12. DO NOT read agent .md files from agents/ — auto-loaded via subagent_type
|
|
103
|
+
|
|
104
|
+
Additionally for this agent:
|
|
105
|
+
|
|
106
|
+
1. DO NOT guess technology versions — read package.json or equivalent
|
|
107
|
+
2. DO NOT use temporal language ("recently added", "old code")
|
|
108
|
+
3. DO NOT produce generic documentation — every claim must reference this specific codebase
|
|
109
|
+
4. DO NOT commit the output — the orchestrator handles commits
|