@limina-labs/momentum 0.31.2 → 0.32.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/README.md +6 -0
- package/adapters/antigravity/instructions/AGENTS.md +5 -1
- package/adapters/codex/instructions/AGENTS.md +5 -1
- package/adapters/opencode/instructions/AGENTS.md +5 -1
- package/bin/momentum.js +62 -4
- package/core/commands/brainstorm-idea.md +2 -2
- package/core/commands/brainstorm-phase.md +8 -0
- package/core/commands/migrate.md +7 -0
- package/core/commands/start-phase.md +6 -0
- package/core/commands/start-project.md +188 -65
- package/core/commands/validate.md +10 -0
- package/core/foundation-placeholder-hashes.json +18 -0
- package/core/instructions/navigation.md +1 -1
- package/core/instructions/rules-body.md +4 -0
- package/core/project-lifecycle.md +68 -0
- package/core/specs-templates/CLAUDE.md +5 -1
- package/core/specs-templates/specs/README.md +8 -3
- package/core/specs-templates/specs/index.md +0 -1
- package/core/specs-templates/specs/status.md +12 -5
- package/package.json +1 -1
- package/core/specs-templates/specs/planning/roadmap.md +0 -23
- package/core/specs-templates/specs/vision/principles.md +0 -16
- package/core/specs-templates/specs/vision/project-charter.md +0 -35
- package/core/specs-templates/specs/vision/success-criteria.md +0 -19
package/README.md
CHANGED
|
@@ -82,6 +82,12 @@ Work happens in **phases** — one repeatable unit of work, five stages:
|
|
|
82
82
|
|
|
83
83
|
**Brainstorm → Plan → Execute → Verify → Release**
|
|
84
84
|
|
|
85
|
+
New projects begin with a one-time **founding** step: `/brainstorm-idea`
|
|
86
|
+
explores the idea (writes nothing), then `/start-project` authors the
|
|
87
|
+
charter, principles, success criteria, and roadmap from that brainstorm —
|
|
88
|
+
momentum never ships placeholder docs, and phase commands wait until the
|
|
89
|
+
project is founded.
|
|
90
|
+
|
|
85
91
|
Your agent drives all of it: scopes through dialogue (disk writes gated until
|
|
86
92
|
you approve), plans groups + tasks + acceptance criteria, commits per group
|
|
87
93
|
with conventional commits, and marks tasks done only with passing evidence.
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
| What's in the backlog? | `specs/backlog/backlog.md` |
|
|
15
15
|
| Phase tasks/progress? | `specs/phases/phase-N-*/tasks.md` |
|
|
16
16
|
| Why was X chosen? | `specs/decisions/NNNN-*.md` |
|
|
17
|
-
| Roadmap / timeline? | `specs/planning/roadmap.md` |
|
|
17
|
+
| Roadmap / timeline? | `specs/planning/roadmap.md` (authored at founding — `/start-project`) |
|
|
18
18
|
| How to contribute? | `docs/developer-guide.md` |
|
|
19
19
|
|
|
20
20
|
> **First file to read: ALWAYS `specs/status.md`.**
|
|
@@ -184,6 +184,10 @@ Before ANY work, read `specs/status.md`. This tells you:
|
|
|
184
184
|
- What's blocking progress
|
|
185
185
|
- What P0 items need attention
|
|
186
186
|
|
|
187
|
+
If `status.md` says **Not founded**, stop: the project has no charter or
|
|
188
|
+
roadmap yet — foundation docs are authored at founding, never scaffolded
|
|
189
|
+
(`core/project-lifecycle.md`). Route to `/start-project` before any phase work.
|
|
190
|
+
|
|
187
191
|
### Rule 2: Auto-Update Tracking After Changes
|
|
188
192
|
|
|
189
193
|
After completing ANY meaningful work, automatically update:
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
| What's in the backlog? | `specs/backlog/backlog.md` |
|
|
15
15
|
| Phase tasks/progress? | `specs/phases/phase-N-*/tasks.md` |
|
|
16
16
|
| Why was X chosen? | `specs/decisions/NNNN-*.md` |
|
|
17
|
-
| Roadmap / timeline? | `specs/planning/roadmap.md` |
|
|
17
|
+
| Roadmap / timeline? | `specs/planning/roadmap.md` (authored at founding — `/start-project`) |
|
|
18
18
|
| How to contribute? | `docs/developer-guide.md` |
|
|
19
19
|
|
|
20
20
|
> **First file to read: ALWAYS `specs/status.md`.**
|
|
@@ -237,6 +237,10 @@ Before ANY work, read `specs/status.md`. This tells you:
|
|
|
237
237
|
- What's blocking progress
|
|
238
238
|
- What P0 items need attention
|
|
239
239
|
|
|
240
|
+
If `status.md` says **Not founded**, stop: the project has no charter or
|
|
241
|
+
roadmap yet — foundation docs are authored at founding, never scaffolded
|
|
242
|
+
(`core/project-lifecycle.md`). Route to `/start-project` before any phase work.
|
|
243
|
+
|
|
240
244
|
### Rule 2: Auto-Update Tracking After Changes
|
|
241
245
|
|
|
242
246
|
After completing ANY meaningful work, automatically update:
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
| What's in the backlog? | `specs/backlog/backlog.md` |
|
|
15
15
|
| Phase tasks/progress? | `specs/phases/phase-N-*/tasks.md` |
|
|
16
16
|
| Why was X chosen? | `specs/decisions/NNNN-*.md` |
|
|
17
|
-
| Roadmap / timeline? | `specs/planning/roadmap.md` |
|
|
17
|
+
| Roadmap / timeline? | `specs/planning/roadmap.md` (authored at founding — `/start-project`) |
|
|
18
18
|
| How to contribute? | `docs/developer-guide.md` |
|
|
19
19
|
|
|
20
20
|
> **First file to read: ALWAYS `specs/status.md`.**
|
|
@@ -150,6 +150,10 @@ Before ANY work, read `specs/status.md`. This tells you:
|
|
|
150
150
|
- What's blocking progress
|
|
151
151
|
- What P0 items need attention
|
|
152
152
|
|
|
153
|
+
If `status.md` says **Not founded**, stop: the project has no charter or
|
|
154
|
+
roadmap yet — foundation docs are authored at founding, never scaffolded
|
|
155
|
+
(`core/project-lifecycle.md`). Route to `/start-project` before any phase work.
|
|
156
|
+
|
|
153
157
|
### Rule 2: Auto-Update Tracking After Changes
|
|
154
158
|
|
|
155
159
|
After completing ANY meaningful work, automatically update:
|
package/bin/momentum.js
CHANGED
|
@@ -404,6 +404,53 @@ function migrateAgentRules(srcRoot, target, dests) {
|
|
|
404
404
|
return 'kept-customized';
|
|
405
405
|
}
|
|
406
406
|
|
|
407
|
+
/**
|
|
408
|
+
* Foundation docs are authored, not scaffolded (Phase 25 / ADR-0008).
|
|
409
|
+
* Legacy installs (≤ v0.31.2) shipped four placeholder foundation docs
|
|
410
|
+
* (vision/charter/principles/success-criteria + planning/roadmap.md). A copy
|
|
411
|
+
* whose frontmatter-stripped, whitespace-normalized body sha256 matches a
|
|
412
|
+
* historically shipped template (core/foundation-placeholder-hashes.json —
|
|
413
|
+
* frozen forever) carries provably zero user content: remove it, returning
|
|
414
|
+
* the project to the clean "not founded" signal that /start-project fills.
|
|
415
|
+
* Any file with user edits is untouched. specs/ is user content — never
|
|
416
|
+
* recorded in the managed manifest, so orphan cleanup can never touch it.
|
|
417
|
+
* Returns { removed: [rel], wouldRemove: [rel], keptAuthored, absent }.
|
|
418
|
+
*/
|
|
419
|
+
function migrateFoundationDocs(srcRoot, target) {
|
|
420
|
+
const crypto = require('crypto');
|
|
421
|
+
const manifest = JSON.parse(
|
|
422
|
+
fs.readFileSync(
|
|
423
|
+
path.join(srcRoot, 'core', 'foundation-placeholder-hashes.json'),
|
|
424
|
+
'utf8'
|
|
425
|
+
)
|
|
426
|
+
);
|
|
427
|
+
const result = { removed: [], wouldRemove: [], keptAuthored: 0, absent: 0 };
|
|
428
|
+
for (const [rel, hashes] of Object.entries(manifest.paths)) {
|
|
429
|
+
const abs = path.join(target, ...rel.split('/'));
|
|
430
|
+
if (!fileExists(abs)) { result.absent++; continue; }
|
|
431
|
+
// Normalization mirrors the manifest's recorded contract exactly:
|
|
432
|
+
// CRLF→LF, strip one leading YAML frontmatter block, trim, single \n.
|
|
433
|
+
let body = fs.readFileSync(abs, 'utf8').replace(/\r\n/g, '\n');
|
|
434
|
+
body = body.replace(/^---\n[\s\S]*?\n---\n/, '');
|
|
435
|
+
body = body.trim() + '\n';
|
|
436
|
+
const hash = crypto.createHash('sha256').update(body).digest('hex');
|
|
437
|
+
if (!hashes.includes(hash)) { result.keptAuthored++; continue; }
|
|
438
|
+
if (_dryRun) {
|
|
439
|
+
console.log(` ✋ would remove: ${rel} (untouched init placeholder — foundation docs are authored via /start-project, ADR-0008)`);
|
|
440
|
+
result.wouldRemove.push(rel);
|
|
441
|
+
continue;
|
|
442
|
+
}
|
|
443
|
+
fs.rmSync(abs);
|
|
444
|
+
try { fs.rmdirSync(path.dirname(abs)); } catch { /* dir not empty — fine */ }
|
|
445
|
+
console.log(` 🗑 removed: ${rel} (untouched init placeholder — foundation docs are authored via /start-project)`);
|
|
446
|
+
result.removed.push(rel);
|
|
447
|
+
}
|
|
448
|
+
if (result.removed.length || result.wouldRemove.length) {
|
|
449
|
+
console.log(' → project is not yet founded — run /start-project to author the foundation docs.');
|
|
450
|
+
}
|
|
451
|
+
return result;
|
|
452
|
+
}
|
|
453
|
+
|
|
407
454
|
function removeOrphans(targetDir, prevManifest, currentSet, opts = {}) {
|
|
408
455
|
if (!prevManifest || !Array.isArray(prevManifest.managedFiles)) return [];
|
|
409
456
|
const currentRel = new Set(
|
|
@@ -1023,13 +1070,13 @@ function init(targetDir, agent, opts = {}) {
|
|
|
1023
1070
|
console.log('Next steps:');
|
|
1024
1071
|
console.log('');
|
|
1025
1072
|
const displayName = adapter.displayName || agent;
|
|
1026
|
-
console.log(' Explore
|
|
1073
|
+
console.log(' Explore the idea first (writes nothing):');
|
|
1027
1074
|
console.log(` Open ${displayName} and run: /brainstorm-idea`);
|
|
1028
1075
|
console.log('');
|
|
1029
|
-
console.log('
|
|
1076
|
+
console.log(' Found the project — author the charter + roadmap, plan Phase 0:');
|
|
1030
1077
|
console.log(` Open ${displayName} and run: /start-project`);
|
|
1031
1078
|
console.log('');
|
|
1032
|
-
console.log('
|
|
1079
|
+
console.log(' Already founded — plan your next phase:');
|
|
1033
1080
|
console.log(` Open ${displayName} and run: /brainstorm-phase`);
|
|
1034
1081
|
console.log('');
|
|
1035
1082
|
console.log(' See docs: https://github.com/LiminaLabsAI/momentum');
|
|
@@ -1068,7 +1115,7 @@ function upgrade(targetDir, agent, opts = {}) {
|
|
|
1068
1115
|
|
|
1069
1116
|
_dryRun = !!opts.dryRun;
|
|
1070
1117
|
_managedCollector = new Set();
|
|
1071
|
-
let agentRulesResult, primaryInstructionResult, gitignoreResult, orphans = [];
|
|
1118
|
+
let agentRulesResult, primaryInstructionResult, gitignoreResult, foundationResult, orphans = [];
|
|
1072
1119
|
try {
|
|
1073
1120
|
// Upgrade slash commands
|
|
1074
1121
|
console.log('→ Upgrading slash commands...');
|
|
@@ -1188,6 +1235,14 @@ function upgrade(targetDir, agent, opts = {}) {
|
|
|
1188
1235
|
console.log('→ Refreshing .gitignore...');
|
|
1189
1236
|
gitignoreResult = refreshGitignore(src, target);
|
|
1190
1237
|
|
|
1238
|
+
// Foundation docs — authored, not scaffolded (Phase 25 / ADR-0008).
|
|
1239
|
+
// Remove provably-untouched init placeholders; authored files stay.
|
|
1240
|
+
console.log('→ Checking foundation docs (authored, not scaffolded)...');
|
|
1241
|
+
foundationResult = migrateFoundationDocs(src, target);
|
|
1242
|
+
if (!foundationResult.removed.length && !foundationResult.wouldRemove.length) {
|
|
1243
|
+
console.log(' = no untouched placeholders (foundation docs are authored or absent)');
|
|
1244
|
+
}
|
|
1245
|
+
|
|
1191
1246
|
// Orphan cleanup — only remove files this agent's prior version installed
|
|
1192
1247
|
// that this version no longer ships. Other agents' files are untouched.
|
|
1193
1248
|
orphans = removeOrphans(target, { managedFiles: prevAgentFiles }, _managedCollector, {
|
|
@@ -1223,6 +1278,9 @@ function upgrade(targetDir, agent, opts = {}) {
|
|
|
1223
1278
|
}
|
|
1224
1279
|
console.log(` agent-rules: ${agentRulesResult}`);
|
|
1225
1280
|
console.log(` .gitignore: ${gitignoreResult}`);
|
|
1281
|
+
if (foundationResult && foundationResult.removed.length) {
|
|
1282
|
+
console.log(` foundation docs: removed ${foundationResult.removed.length} untouched placeholder(s) — not yet founded; run /start-project`);
|
|
1283
|
+
}
|
|
1226
1284
|
if (orphans.length) {
|
|
1227
1285
|
console.log(` removed (orphaned): ${orphans.length} file(s) — see 🗑 lines above`);
|
|
1228
1286
|
}
|
|
@@ -2,7 +2,7 @@ Explore any idea through structured dialogue before committing to anything.
|
|
|
2
2
|
|
|
3
3
|
Use this to think through a concept, technical direction, product decision, or architecture question. **Nothing gets written to disk.** The output is a clear, structured summary you can act on.
|
|
4
4
|
|
|
5
|
-
When you're ready to turn the result into a project, run `/start-project
|
|
5
|
+
When you're ready to turn the result into a project, run `/start-project` — it **founds** the project: authors the charter, principles, success criteria, and roadmap from this brainstorm and plans Phase 0. It works whether or not `momentum init` has already scaffolded the machinery (structure ≠ content — see `core/project-lifecycle.md`). To turn a decision into an ADR, run `/log` with `--decision`.
|
|
6
6
|
|
|
7
7
|
## When to use
|
|
8
8
|
|
|
@@ -50,7 +50,7 @@ When you're ready to turn the result into a project, run `/start-project`. To tu
|
|
|
50
50
|
```
|
|
51
51
|
|
|
52
52
|
6. Close with one of:
|
|
53
|
-
- "Ready to build this? Run `/start-project` to
|
|
53
|
+
- "Ready to build this? Run `/start-project` to found the project — it authors the foundation docs (charter, principles, success criteria, roadmap) from this brainstorm and plans Phase 0. An existing `momentum init` scaffold doesn't change this: init owns structure, founding owns content."
|
|
54
54
|
- "Want to explore further before committing? Ask away."
|
|
55
55
|
- "This is a decision, not a project — want to log it as an ADR with `/log --decision`?"
|
|
56
56
|
|
|
@@ -18,6 +18,14 @@ The brainstorm output IS the phase files — there is no intermediate design doc
|
|
|
18
18
|
From this point until Step 8, do NOT call any write-class tool on any path under `specs/`. The PreToolUse hook (`core/scripts/brainstorm-gate.sh`, wired by Claude Code + Codex + Antigravity) will block such calls; this step makes the intent explicit.
|
|
19
19
|
|
|
20
20
|
1. Review current state:
|
|
21
|
+
- **Founded gate first** (`core/project-lifecycle.md`, ADR-0008): verify
|
|
22
|
+
`specs/vision/project-charter.md` AND `specs/planning/roadmap.md` exist.
|
|
23
|
+
If either is missing, the project is NOT founded — STOP: remove the
|
|
24
|
+
sentinel (`rm .momentum/brainstorm-active`) and route to
|
|
25
|
+
`/start-project`, offering to draft the foundation docs with the user
|
|
26
|
+
from the context already in this conversation (best-effort content
|
|
27
|
+
marked for refinement beats absent docs). Re-run this command once
|
|
28
|
+
founded. Never plan a phase on an unfounded project.
|
|
21
29
|
- Read `specs/status.md` — what phase just completed?
|
|
22
30
|
- Read the completed phase's `history.md` — what was learned?
|
|
23
31
|
- Read `specs/backlog/backlog.md` — any P0/P1 items to address first?
|
package/core/commands/migrate.md
CHANGED
|
@@ -22,6 +22,12 @@ This command fills gaps without overwriting anything the project already has.
|
|
|
22
22
|
`brainstorm-idea`, `brainstorm-phase`, `start-project`, `start-phase`, `complete-phase`,
|
|
23
23
|
`log`, `sync-docs`, `track`, `migrate`, `validate`
|
|
24
24
|
|
|
25
|
+
**Foundation docs are NOT migration gaps** (`core/project-lifecycle.md`,
|
|
26
|
+
ADR-0008): `specs/vision/*` and `specs/planning/roadmap.md` are authored
|
|
27
|
+
via `/start-project`, never copied from templates. If they're missing,
|
|
28
|
+
report "not founded — run `/start-project`" in the result; do NOT create
|
|
29
|
+
them here.
|
|
30
|
+
|
|
25
31
|
2. **Report gap summary** — present findings before making any changes:
|
|
26
32
|
```
|
|
27
33
|
Found: 8 / Missing: 4 items
|
|
@@ -64,6 +70,7 @@ This command fills gaps without overwriting anything the project already has.
|
|
|
64
70
|
✓ Migration complete.
|
|
65
71
|
Added: 4 items
|
|
66
72
|
Skipped: 6 items (already existed — not overwritten)
|
|
73
|
+
Founded: no — charter/roadmap missing; run /start-project to author them
|
|
67
74
|
Needs manual attention:
|
|
68
75
|
- 3 phases marked status 'unknown' in overview.md frontmatter — verify manually
|
|
69
76
|
- specs/status.md: already exists — verify Current Phase matches the phase frontmatter
|
|
@@ -11,6 +11,12 @@ After setup, **executes the plan end-to-end autonomously** — no per-group appr
|
|
|
11
11
|
## Setup Steps (run once at phase start)
|
|
12
12
|
|
|
13
13
|
1. Read current state:
|
|
14
|
+
- **Founded gate** (`core/project-lifecycle.md`, ADR-0008): verify
|
|
15
|
+
`specs/vision/project-charter.md` AND `specs/planning/roadmap.md`
|
|
16
|
+
exist. If either is missing, the project is not founded — STOP and
|
|
17
|
+
run `/start-project` first (it authors the foundation docs from your
|
|
18
|
+
brainstorm and plans Phase 0). Never start a phase on an unfounded
|
|
19
|
+
project.
|
|
14
20
|
- Read `specs/status.md`
|
|
15
21
|
|
|
16
22
|
2. Check for blocking bugs (pre-phase bug check):
|
|
@@ -1,83 +1,204 @@
|
|
|
1
|
-
|
|
1
|
+
Found the project from a clear idea.
|
|
2
|
+
|
|
3
|
+
**Founding is about content, not structure** (see `core/project-lifecycle.md`,
|
|
4
|
+
ADR-0008): this command authors the foundation docs — project charter,
|
|
5
|
+
principles, success criteria, roadmap — plus the `status.md` Summary, and
|
|
6
|
+
plans Phase 0. It works on ANY repo state: freshly `momentum init`-ed,
|
|
7
|
+
brand-new/empty, or full of existing code. Structure (directories, commands,
|
|
8
|
+
hooks, tracking skeleton) is owned by `momentum init`, not by this command.
|
|
9
|
+
|
|
10
|
+
momentum ships **no placeholder foundation docs** — these files do not exist
|
|
11
|
+
until this command writes them. Their absence is the "not founded" signal
|
|
12
|
+
that `/brainstorm-phase`, `/start-phase`, and `/validate` check.
|
|
2
13
|
|
|
3
|
-
Run this on a NEW or EMPTY repository when you know what you're building.
|
|
4
14
|
If you're still exploring the idea, run `/brainstorm-idea` first.
|
|
15
|
+
**Authoring happens only after you explicitly approve the draft.** See the
|
|
16
|
+
[Brainstorm Gate Contract](#brainstorm-gate-contract) below.
|
|
5
17
|
|
|
6
|
-
|
|
18
|
+
## When to use
|
|
19
|
+
|
|
20
|
+
- `momentum init` has run and `specs/status.md` says "Not founded"
|
|
21
|
+
- You just finished `/brainstorm-idea` and the idea is settled
|
|
22
|
+
- An existing codebase adopted momentum and needs its foundation docs written
|
|
7
23
|
|
|
8
24
|
## Steps
|
|
9
25
|
|
|
10
|
-
0. **
|
|
26
|
+
0. **Check machinery, then enter the brainstorm gate**:
|
|
27
|
+
- If there is no momentum scaffold (no `.momentum/`, no `specs/status.md`),
|
|
28
|
+
stop and run `momentum init` first — init owns structure; this command
|
|
29
|
+
owns content.
|
|
11
30
|
```bash
|
|
12
31
|
mkdir -p .momentum && touch .momentum/brainstorm-active
|
|
13
32
|
```
|
|
14
|
-
From here until Step
|
|
33
|
+
From here until Step 6, do NOT call `Write`/`Edit`/`MultiEdit` on any path
|
|
34
|
+
under `specs/`. The PreToolUse hook will block such calls.
|
|
15
35
|
|
|
16
|
-
1. Confirm the idea is clear — ask if needed:
|
|
17
|
-
- What does this project build or do?
|
|
36
|
+
1. Confirm the idea is clear — ask if needed (one question at a time):
|
|
37
|
+
- What does this project build or do? For whom?
|
|
18
38
|
- What type of repository? (monorepo with architecture specs / standard library or package)
|
|
19
39
|
- What is the primary tech stack / language?
|
|
20
40
|
- Any hard constraints (performance, compliance, dependencies)?
|
|
21
41
|
|
|
22
42
|
2. Determine repo type from answers:
|
|
23
|
-
- Monorepo →
|
|
24
|
-
- Standard →
|
|
25
|
-
|
|
26
|
-
3. **
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
-
|
|
35
|
-
|
|
36
|
-
|
|
43
|
+
- Monorepo → also author an architecture constitution in `specs/architecture/`
|
|
44
|
+
- Standard → foundation docs + phases only
|
|
45
|
+
|
|
46
|
+
3. **Draft the foundation in conversation only** — no file writes yet:
|
|
47
|
+
- Charter: problem, solution, stakeholders, scope in/out, success
|
|
48
|
+
- Principles: 3–6 project-specific principles that resolve trade-offs
|
|
49
|
+
- Success criteria: measurable targets with how-to-measure
|
|
50
|
+
- Roadmap: natural phases with key deliverables and rough version targets
|
|
51
|
+
- `status.md` Summary paragraph (what this project is)
|
|
52
|
+
- For monorepo: first-pass architecture sketch (core abstractions, interfaces)
|
|
53
|
+
- Phase 0 contents using the [Group Execution Pattern](#group-execution-pattern)
|
|
54
|
+
- Use the [Foundation Doc Formats](#foundation-doc-formats) below; author
|
|
55
|
+
real content from the brainstorm — never emit `_(TBD)_` placeholders.
|
|
56
|
+
Where understanding is genuinely thin, write the best-effort version,
|
|
57
|
+
mark the specific line `<!-- refine: ... -->`, and ask the user.
|
|
58
|
+
|
|
59
|
+
4. Present the founding draft for approval:
|
|
60
|
+
- Show the charter, roadmap, and key Phase 0 sections in chat
|
|
61
|
+
- List every file that will be created
|
|
62
|
+
- Ask: "Ready to found the project? This will write N files. Approve to proceed."
|
|
37
63
|
|
|
38
64
|
5. **On approval — exit the gate**:
|
|
39
65
|
```bash
|
|
40
66
|
rm .momentum/brainstorm-active
|
|
41
67
|
```
|
|
42
68
|
|
|
43
|
-
6.
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
.claude/commands .agent/rules
|
|
48
|
-
touch specs/backlog/details/.gitkeep
|
|
49
|
-
# monorepo only:
|
|
50
|
-
mkdir -p specs/architecture/adrs specs/benchmarks
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
7. Create all files in one batch:
|
|
54
|
-
- `specs/vision/project-charter.md` — problem, goals, non-goals, stakeholders
|
|
55
|
-
- `specs/vision/principles.md` — engineering principles
|
|
56
|
-
- `specs/vision/success-criteria.md` — measurable completion criteria
|
|
57
|
-
- For monorepo: `specs/architecture/` first-pass architecture doc
|
|
69
|
+
6. Write the foundation in one batch:
|
|
70
|
+
- `specs/vision/project-charter.md`
|
|
71
|
+
- `specs/vision/principles.md`
|
|
72
|
+
- `specs/vision/success-criteria.md`
|
|
58
73
|
- `specs/planning/roadmap.md`
|
|
74
|
+
- Update `specs/status.md`: Summary, Current Phase (Phase 0 `not started`),
|
|
75
|
+
Upcoming Phases, Next Actions
|
|
76
|
+
- For monorepo: `specs/architecture/` first-pass doc(s)
|
|
59
77
|
- `specs/phases/phase-0-shortname/{overview,plan,tasks,history}.md`
|
|
60
|
-
|
|
61
|
-
-
|
|
62
|
-
- `specs/status.md`, `specs/backlog/backlog.md`
|
|
63
|
-
- `specs/decisions/0000-template.md`, `specs/decisions/README.md`
|
|
64
|
-
- `specs/phases/README.md`, `specs/README.md`
|
|
65
|
-
- `specs/changelog/YYYY-MM.md`
|
|
66
|
-
|
|
67
|
-
8. Initial git commit:
|
|
68
|
-
```bash
|
|
69
|
-
git add .
|
|
70
|
-
git commit -m "feat: initialize spec-driven project — {project name}
|
|
78
|
+
(log the founding decisions from this conversation in `history.md`)
|
|
79
|
+
- Refresh bundle listings: `momentum okf index`
|
|
71
80
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
81
|
+
7. Commit the founding:
|
|
82
|
+
```bash
|
|
83
|
+
git add specs/
|
|
84
|
+
git commit -m "docs: found {project name} — vision, roadmap, Phase 0"
|
|
75
85
|
```
|
|
86
|
+
(On a brand-new repo this may be the first content commit on the default
|
|
87
|
+
branch — the bootstrap exception to Rule 6. On a repo with existing code,
|
|
88
|
+
normal branch discipline applies.)
|
|
76
89
|
|
|
77
|
-
|
|
78
|
-
- Summary of what was
|
|
90
|
+
8. Report to user:
|
|
91
|
+
- Summary of what was founded
|
|
79
92
|
- Phase 0 goal and key deliverables
|
|
80
|
-
- Prompt: "Project
|
|
93
|
+
- Prompt: "Project founded. Run `/start-phase` to begin Phase 0."
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Foundation Doc Formats
|
|
98
|
+
|
|
99
|
+
Author real content into these shapes (frontmatter included). These formats
|
|
100
|
+
live here — momentum ships no copyable placeholder versions.
|
|
101
|
+
|
|
102
|
+
### `specs/vision/project-charter.md`
|
|
103
|
+
|
|
104
|
+
```markdown
|
|
105
|
+
---
|
|
106
|
+
type: Vision
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
# Project Charter
|
|
110
|
+
|
|
111
|
+
> **Project**: {name}
|
|
112
|
+
> **Created**: {today}
|
|
113
|
+
|
|
114
|
+
## Problem Statement
|
|
115
|
+
{Who has what problem; why it matters}
|
|
116
|
+
|
|
117
|
+
## Solution
|
|
118
|
+
{What this project builds; how it solves the problem}
|
|
119
|
+
|
|
120
|
+
## Stakeholders
|
|
121
|
+
| Role | Name / Team | Responsibility |
|
|
122
|
+
|------|-------------|----------------|
|
|
123
|
+
| Owner | {…} | Final decisions |
|
|
124
|
+
| Users | {…} | Primary audience |
|
|
125
|
+
|
|
126
|
+
## Scope
|
|
127
|
+
### In
|
|
128
|
+
- {…}
|
|
129
|
+
### Out
|
|
130
|
+
- {…}
|
|
131
|
+
|
|
132
|
+
## Success
|
|
133
|
+
{How you'll know it worked — point at success-criteria.md targets}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### `specs/vision/principles.md`
|
|
137
|
+
|
|
138
|
+
```markdown
|
|
139
|
+
---
|
|
140
|
+
type: Vision
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
# Principles
|
|
144
|
+
|
|
145
|
+
> Guiding decisions throughout the project. When trade-offs arise, these resolve them.
|
|
146
|
+
|
|
147
|
+
## Core Principles
|
|
148
|
+
1. **{Name}** — {one-line rule of decision}
|
|
149
|
+
2. …
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
(Good defaults to adapt: simplicity first; ship incrementally; defer scope,
|
|
153
|
+
not quality; document decisions. Replace or extend to match THIS project.)
|
|
154
|
+
|
|
155
|
+
### `specs/vision/success-criteria.md`
|
|
156
|
+
|
|
157
|
+
```markdown
|
|
158
|
+
---
|
|
159
|
+
type: Vision
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
# Success Criteria
|
|
163
|
+
|
|
164
|
+
> Measurable targets. When all are met, the project has achieved its goals.
|
|
165
|
+
|
|
166
|
+
## Phase 0 Targets
|
|
167
|
+
| Criterion | Target | How to Measure |
|
|
168
|
+
|-----------|--------|----------------|
|
|
169
|
+
| {…} | {…} | {command / metric} |
|
|
170
|
+
|
|
171
|
+
## Long-Term Targets
|
|
172
|
+
| Criterion | Target | How to Measure |
|
|
173
|
+
|-----------|--------|----------------|
|
|
174
|
+
| {…} | {…} | {…} |
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### `specs/planning/roadmap.md`
|
|
178
|
+
|
|
179
|
+
```markdown
|
|
180
|
+
---
|
|
181
|
+
type: Roadmap
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
# Roadmap
|
|
185
|
+
|
|
186
|
+
> **Start Date**: {today}
|
|
187
|
+
|
|
188
|
+
## Vision
|
|
189
|
+
{One sentence: what this project becomes at full maturity}
|
|
190
|
+
|
|
191
|
+
## Timeline
|
|
192
|
+
| Phase | Name | Status | Key Deliverables |
|
|
193
|
+
|-------|------|--------|------------------|
|
|
194
|
+
| 0 | {Bootstrap/…} | Not Started (target v0.1.0) | {…} |
|
|
195
|
+
| 1 | {…} | Not Started | {…} |
|
|
196
|
+
|
|
197
|
+
## Guiding Principles
|
|
198
|
+
1. Ship working software in every phase
|
|
199
|
+
2. Each phase leaves the project in a releasable state
|
|
200
|
+
3. Defer scope, not quality
|
|
201
|
+
```
|
|
81
202
|
|
|
82
203
|
---
|
|
83
204
|
|
|
@@ -87,29 +208,30 @@ This command runs in two phases: **brainstorm** (conversational, no disk writes)
|
|
|
87
208
|
|
|
88
209
|
### Sentinel-driven enforcement
|
|
89
210
|
|
|
90
|
-
A file `.momentum/brainstorm-active` exists for the lifetime of the brainstorm phase. While it exists, the
|
|
211
|
+
A file `.momentum/brainstorm-active` exists for the lifetime of the brainstorm phase. While it exists, the `brainstorm-gate.sh` PreToolUse hook blocks any `Write`/`Edit`/`MultiEdit` call whose target lives under `specs/`. The hook is the safety net; the discipline below is the primary contract.
|
|
91
212
|
|
|
92
213
|
### Sequence
|
|
93
214
|
|
|
94
215
|
1. **Enter brainstorm** — `mkdir -p .momentum && touch .momentum/brainstorm-active`
|
|
95
|
-
2. **Draft in conversation only** —
|
|
96
|
-
3. **Present for approval** — show the user the full draft including the list of files
|
|
97
|
-
4. **Exit brainstorm on approval** — `rm .momentum/brainstorm-active`, then
|
|
216
|
+
2. **Draft in conversation only** — charter, principles, success criteria, roadmap, architecture sketch, Phase 0 plan all live in chat. NEVER call `Write`/`Edit`/`MultiEdit` on `specs/` paths during this phase.
|
|
217
|
+
3. **Present for approval** — show the user the full draft including the list of files founding will create. Ask: "Ready to found the project? Approve to proceed."
|
|
218
|
+
4. **Exit brainstorm on approval** — `rm .momentum/brainstorm-active`, then write all files in one batch and commit.
|
|
98
219
|
|
|
99
220
|
### Red flags — STOP and stay in conversation
|
|
100
221
|
|
|
101
222
|
| If you find yourself thinking… | …STOP and stay in conversation |
|
|
102
223
|
|---|---|
|
|
103
|
-
| "
|
|
104
|
-
| "The user said the project name; I'll start
|
|
105
|
-
| "I'll write
|
|
106
|
-
| "
|
|
224
|
+
| "The scaffold already exists, so founding must already be done" | Structure ≠ content. If charter/roadmap don't exist, the project is NOT founded — that's exactly what this command fixes. |
|
|
225
|
+
| "The user said the project name; I'll start writing files" | Project name ≠ approval. Show the full draft, then ask. |
|
|
226
|
+
| "I'll write the charter first while we figure out the rest" | All-or-nothing: every file goes in one batch on approval. Otherwise the project ends up half-founded if the user changes their mind. |
|
|
227
|
+
| "I'll fill what I know and leave `_(TBD)_` for the rest" | TBD placeholders are the failure mode this command exists to prevent. Draft best-effort content, mark `<!-- refine: -->`, ask the user. |
|
|
228
|
+
| "This is a big codebase, founding doesn't apply" | Existing code makes founding MORE valuable — the charter records what the code is for. |
|
|
107
229
|
|
|
108
230
|
### Anti-rationalization counters
|
|
109
231
|
|
|
110
|
-
- "Faster to
|
|
111
|
-
- "The user obviously wants this, they ran the command" — they want
|
|
112
|
-
- "
|
|
232
|
+
- "Faster to write files incrementally as we decide each piece" — no: incremental writes make "undo" expensive. Batch on approval.
|
|
233
|
+
- "The user obviously wants this, they ran the command" — they want the project founded; they have not yet seen the proposed content.
|
|
234
|
+
- "A generic roadmap is better than none, I'll write it now" — even a generic roadmap is a commitment; show it first.
|
|
113
235
|
|
|
114
236
|
---
|
|
115
237
|
|
|
@@ -136,7 +258,8 @@ Standard layout:
|
|
|
136
258
|
|
|
137
259
|
## Key Principles
|
|
138
260
|
- Idea should already be clear before running this — use `/brainstorm-idea` to get there
|
|
261
|
+
- Founding = content; `momentum init` = structure. Never scaffold placeholder docs.
|
|
139
262
|
- Phase 0 scope should be achievable in a focused sprint
|
|
140
263
|
- Architecture sketch is a starting point, not a commitment
|
|
141
264
|
- Record all key decisions from the dialogue in Phase 0's `history.md`
|
|
142
|
-
- **Brainstorm Gate**: see the contract above.
|
|
265
|
+
- **Brainstorm Gate**: see the contract above. Writing only after explicit approval.
|
|
@@ -21,6 +21,16 @@ Run with no arguments for a fast index-first check, or pass `--deep` for a full
|
|
|
21
21
|
- Bugs, Features, Tech Debt, Enhancements
|
|
22
22
|
- Report any missing table as a failure
|
|
23
23
|
|
|
24
|
+
2b. Founded state (`core/project-lifecycle.md`, ADR-0008):
|
|
25
|
+
- founded ⟺ `specs/vision/project-charter.md` AND
|
|
26
|
+
`specs/planning/roadmap.md` both exist
|
|
27
|
+
- Phase directories exist under `specs/phases/` while NOT founded →
|
|
28
|
+
FAILURE: "phase work exists but the project is not founded — run
|
|
29
|
+
`/start-project` to author the foundation docs"
|
|
30
|
+
- Not founded with no phase directories is the VALID Installed state —
|
|
31
|
+
report informationally ("not founded yet — `/start-project` when
|
|
32
|
+
ready"), never as a failure
|
|
33
|
+
|
|
24
34
|
3. For each phase directory under `specs/phases/` (OKF bundle, ADR-0005):
|
|
25
35
|
- Verify all 4 files present: `overview.md`, `plan.md`, `tasks.md`, `history.md`
|
|
26
36
|
- Verify `overview.md` frontmatter carries `type: Phase` and a `status:`
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "ADR-0008 — FROZEN FOREVER. Normalized-body sha256 of every version of the four foundation templates ever shipped by momentum init (v0.4.0 'feat(core): add specs-templates tree' 2026-04-21 through v0.31.2; the v0.27.0 OKF revision was frontmatter-only, so each path has exactly one normalized hash). momentum upgrade removes a foundation file ONLY if its normalized body hashes into this set — proof the user never edited it. The templates were deleted from core/specs-templates in Phase 25, so this set can never grow. Normalization: CRLF→LF, strip one leading YAML frontmatter block, String.trim(), append a single trailing newline.",
|
|
3
|
+
"normalization": "crlf-to-lf | strip-one-leading-yaml-frontmatter-block | trim | append-single-newline",
|
|
4
|
+
"paths": {
|
|
5
|
+
"specs/vision/project-charter.md": [
|
|
6
|
+
"7cf00ea97e544d1b1fa940733f2dda8fcbdaebd61a8e632603dccbac51e3b2fa"
|
|
7
|
+
],
|
|
8
|
+
"specs/vision/principles.md": [
|
|
9
|
+
"033c7bced5f46ad40c163e74873dfcbc036f6e9141471917871a883846a0b01f"
|
|
10
|
+
],
|
|
11
|
+
"specs/vision/success-criteria.md": [
|
|
12
|
+
"b48b942ce86f1628fa72863e8d5c5c72641ac761d28ecc4adafcfc3e63314271"
|
|
13
|
+
],
|
|
14
|
+
"specs/planning/roadmap.md": [
|
|
15
|
+
"37edbdc1e812d72c19031a1a1e44b9d4125d0e7380f3c1b2131dbfa2a4d1dcad"
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
| What's in the backlog? | `specs/backlog/backlog.md` |
|
|
7
7
|
| Phase tasks/progress? | `specs/phases/phase-N-*/tasks.md` |
|
|
8
8
|
| Why was X chosen? | `specs/decisions/NNNN-*.md` |
|
|
9
|
-
| Roadmap / timeline? | `specs/planning/roadmap.md` |
|
|
9
|
+
| Roadmap / timeline? | `specs/planning/roadmap.md` (authored at founding — `/start-project`) |
|
|
10
10
|
| How to contribute? | `docs/developer-guide.md` |
|
|
11
11
|
|
|
12
12
|
> **First file to read: ALWAYS `specs/status.md`.**
|
|
@@ -7,6 +7,10 @@ Before ANY work, read `specs/status.md`. This tells you:
|
|
|
7
7
|
- What's blocking progress
|
|
8
8
|
- What P0 items need attention
|
|
9
9
|
|
|
10
|
+
If `status.md` says **Not founded**, stop: the project has no charter or
|
|
11
|
+
roadmap yet — foundation docs are authored at founding, never scaffolded
|
|
12
|
+
(`core/project-lifecycle.md`). Route to `/start-project` before any phase work.
|
|
13
|
+
|
|
10
14
|
### Rule 2: Auto-Update Tracking After Changes
|
|
11
15
|
|
|
12
16
|
After completing ANY meaningful work, automatically update:
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Project Lifecycle Contract
|
|
2
|
+
|
|
3
|
+
> Normative contract for how a momentum project comes into being
|
|
4
|
+
> (ADR-0008). Command docs reference these states; the CLI enforces the
|
|
5
|
+
> Installed-state shape; command contracts enforce the gates.
|
|
6
|
+
|
|
7
|
+
A momentum project moves through three states. Each state has exactly one
|
|
8
|
+
owning command. State is determined by **file existence** — never by file
|
|
9
|
+
content, markers, or heuristics.
|
|
10
|
+
|
|
11
|
+
## States
|
|
12
|
+
|
|
13
|
+
| # | State | Owner | What exists |
|
|
14
|
+
|---|-------|-------|-------------|
|
|
15
|
+
| 1 | **Installed** | `momentum init` | Machinery: adapter surfaces (commands/rules/hooks/scripts), git hooks, and the contentless-by-nature specs skeleton — `specs/status.md` (in the "Not founded" state), `specs/backlog/backlog.md` (empty tables), `specs/changelog/`, `specs/decisions/` (template + README), `specs/phases/` (README + index), `specs/adhoc/`. **No foundation docs.** |
|
|
16
|
+
| 2 | **Founded** | `/start-project` | Everything above PLUS the authored foundation docs: `specs/vision/project-charter.md`, `specs/vision/principles.md`, `specs/vision/success-criteria.md`, `specs/planning/roadmap.md`, and a filled `status.md` Summary. |
|
|
17
|
+
| 3 | **Phase loop** | `/brainstorm-phase` → `/start-phase` → `/complete-phase` | Everything above PLUS `specs/phases/phase-N-*/` directories. |
|
|
18
|
+
|
|
19
|
+
## The founded predicate
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
founded ⟺ specs/vision/project-charter.md exists
|
|
23
|
+
AND specs/planning/roadmap.md exists
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
The minimal load-bearing pair: *why the project exists* + *where it's
|
|
27
|
+
going*. `principles.md` and `success-criteria.md` are authored at founding
|
|
28
|
+
but their absence never blocks phase work (tolerates legacy projects).
|
|
29
|
+
|
|
30
|
+
## Rules
|
|
31
|
+
|
|
32
|
+
1. **`momentum init` never writes foundation docs.** A placeholder document
|
|
33
|
+
satisfies structural checks while carrying zero information; absence is
|
|
34
|
+
the honest, machine-checkable signal.
|
|
35
|
+
2. **`/start-project` founds the project — content, not structure.** It
|
|
36
|
+
authors the four foundation docs from the brainstorm/conversation under
|
|
37
|
+
the brainstorm-gate + explicit-approval contract. It works on any repo
|
|
38
|
+
state (empty, freshly init'd, or full of code). If machinery is missing,
|
|
39
|
+
it routes to `momentum init` first.
|
|
40
|
+
3. **Phase commands gate on founded.** `/brainstorm-phase` and
|
|
41
|
+
`/start-phase` check the predicate before any phase work. Not founded →
|
|
42
|
+
STOP and route to `/start-project` (offering to draft the foundation
|
|
43
|
+
docs with the user from available context — best-effort and marked for
|
|
44
|
+
refinement beats absent).
|
|
45
|
+
4. **`/validate` checks the invariant** `phase dirs exist ⟹ founded` as a
|
|
46
|
+
failure. "Installed but not founded, no phases" is a valid state, not an
|
|
47
|
+
error.
|
|
48
|
+
5. **`/migrate` reports "not founded"** — it never creates foundation
|
|
49
|
+
placeholders.
|
|
50
|
+
6. **`momentum upgrade` heals legacy installs**: foundation files whose
|
|
51
|
+
frontmatter-stripped, whitespace-normalized body hash matches any
|
|
52
|
+
historically shipped template (see
|
|
53
|
+
`core/foundation-placeholder-hashes.json` — frozen) are removed with a
|
|
54
|
+
report. Any user-edited file is untouched. `--dry-run` previews.
|
|
55
|
+
|
|
56
|
+
## Routing (what an agent does per state)
|
|
57
|
+
|
|
58
|
+
| Observed state | Correct next step |
|
|
59
|
+
|---|---|
|
|
60
|
+
| No `.momentum/` machinery | `momentum init` |
|
|
61
|
+
| Installed, not founded, idea unclear | `/brainstorm-idea` (writes nothing) |
|
|
62
|
+
| Installed, not founded, idea clear | `/start-project` (founds it) |
|
|
63
|
+
| Founded, no phase planned | `/brainstorm-phase` |
|
|
64
|
+
| Founded, phase planned | `/start-phase` |
|
|
65
|
+
|
|
66
|
+
`status.md` in the Installed state carries this routing inline ("Not
|
|
67
|
+
founded — run `/brainstorm-idea` → `/start-project`"), so Rule 1
|
|
68
|
+
orientation self-corrects on every adapter.
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
| What's in the backlog? | `specs/backlog/backlog.md` |
|
|
15
15
|
| Phase tasks/progress? | `specs/phases/phase-N-*/tasks.md` |
|
|
16
16
|
| Why was X chosen? | `specs/decisions/NNNN-*.md` |
|
|
17
|
-
| Roadmap / timeline? | `specs/planning/roadmap.md` |
|
|
17
|
+
| Roadmap / timeline? | `specs/planning/roadmap.md` (authored at founding — `/start-project`) |
|
|
18
18
|
| How to contribute? | `docs/developer-guide.md` |
|
|
19
19
|
|
|
20
20
|
> **First file to read: ALWAYS `specs/status.md`.**
|
|
@@ -30,6 +30,10 @@ Before ANY work, read `specs/status.md`. This tells you:
|
|
|
30
30
|
- What's blocking progress
|
|
31
31
|
- What P0 items need attention
|
|
32
32
|
|
|
33
|
+
If `status.md` says **Not founded**, stop: the project has no charter or
|
|
34
|
+
roadmap yet — foundation docs are authored at founding, never scaffolded
|
|
35
|
+
(`core/project-lifecycle.md`). Route to `/start-project` before any phase work.
|
|
36
|
+
|
|
33
37
|
### Rule 2: Auto-Update Tracking After Changes
|
|
34
38
|
|
|
35
39
|
After completing ANY meaningful work, automatically update:
|
|
@@ -15,14 +15,19 @@ type: Guide
|
|
|
15
15
|
| `changelog/` | Monthly change logs |
|
|
16
16
|
| `decisions/` | Architecture Decision Records (ADRs) |
|
|
17
17
|
| `phases/` | Phase plans, tasks, and history |
|
|
18
|
-
| `planning/` | Roadmap and release plan |
|
|
19
|
-
| `vision/` | Project charter, principles, success criteria |
|
|
18
|
+
| `planning/` | Roadmap and release plan — created at founding (`/start-project`) |
|
|
19
|
+
| `vision/` | Project charter, principles, success criteria — created at founding (`/start-project`) |
|
|
20
|
+
|
|
21
|
+
Foundation docs (`vision/`, `planning/roadmap.md`) are **authored, not
|
|
22
|
+
scaffolded**: they don't exist until `/start-project` founds the project
|
|
23
|
+
from your brainstorm. Their absence means "not founded yet" — phase
|
|
24
|
+
commands will route you to `/start-project` first.
|
|
20
25
|
|
|
21
26
|
## Workflow
|
|
22
27
|
|
|
23
28
|
```
|
|
24
29
|
/brainstorm-idea → explore an idea (no files written)
|
|
25
|
-
/start-project →
|
|
30
|
+
/start-project → found the project: author vision + roadmap, plan Phase 0
|
|
26
31
|
/start-phase → begin a phase
|
|
27
32
|
/track → log a discovery mid-phase
|
|
28
33
|
/complete-phase → verify, release, retrospective
|
|
@@ -5,13 +5,19 @@ type: Status
|
|
|
5
5
|
# Project Status
|
|
6
6
|
|
|
7
7
|
> **Last Updated**: YYYY-MM-DD
|
|
8
|
-
> **Current Phase**:
|
|
8
|
+
> **Current Phase**: _Not founded_ — run `/brainstorm-idea`, then `/start-project`
|
|
9
9
|
> **Latest Release**: None
|
|
10
10
|
> **Health**: On Track
|
|
11
11
|
|
|
12
12
|
## Summary
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
_Not founded yet. momentum machinery is installed, but this project has no
|
|
15
|
+
foundation docs (charter, principles, success criteria, roadmap) — they are
|
|
16
|
+
authored at founding, never scaffolded. Explore the idea with
|
|
17
|
+
`/brainstorm-idea` (writes nothing), then run `/start-project` to found the
|
|
18
|
+
project: it authors the foundation docs from your brainstorm and plans
|
|
19
|
+
Phase 0. Phase commands stop and route you here until the project is
|
|
20
|
+
founded._
|
|
15
21
|
|
|
16
22
|
## Completed Phases
|
|
17
23
|
|
|
@@ -37,13 +43,13 @@ type: Status
|
|
|
37
43
|
|
|
38
44
|
| Phase | Branch | Status | Progress |
|
|
39
45
|
|-------|--------|--------|----------|
|
|
40
|
-
| _(none —
|
|
46
|
+
| _(none — project not founded yet)_ | | | |
|
|
41
47
|
|
|
42
48
|
## Upcoming Phases
|
|
43
49
|
|
|
44
50
|
| Phase | Name | Status | Key Deliverables |
|
|
45
51
|
|-------|------|--------|-----------------|
|
|
46
|
-
| _(
|
|
52
|
+
| _(defined at founding — see `/start-project`)_ | | | |
|
|
47
53
|
|
|
48
54
|
## Blockers
|
|
49
55
|
|
|
@@ -59,7 +65,8 @@ type: Status
|
|
|
59
65
|
|
|
60
66
|
## Next Actions
|
|
61
67
|
|
|
62
|
-
1. Run `/brainstorm-idea` to explore the
|
|
68
|
+
1. Run `/brainstorm-idea` to explore the idea (conversation only — writes nothing)
|
|
69
|
+
2. Run `/start-project` to found the project — authors charter, principles, success criteria, and roadmap, then plans Phase 0
|
|
63
70
|
|
|
64
71
|
## Key Decisions Made
|
|
65
72
|
|
package/package.json
CHANGED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: Roadmap
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Roadmap
|
|
6
|
-
|
|
7
|
-
> **Last Updated**: YYYY-MM-DD
|
|
8
|
-
|
|
9
|
-
## Vision
|
|
10
|
-
|
|
11
|
-
<!-- One sentence: what does this project become at full maturity? -->
|
|
12
|
-
|
|
13
|
-
## Release Plan
|
|
14
|
-
|
|
15
|
-
| Version | Phase | Key Deliverables | Target |
|
|
16
|
-
|---------|-------|-----------------|--------|
|
|
17
|
-
| v0.1.0 | Phase 0 — Bootstrap | _(TBD)_ | _(TBD)_ |
|
|
18
|
-
|
|
19
|
-
## Guiding Principles
|
|
20
|
-
|
|
21
|
-
1. Ship working software in every phase
|
|
22
|
-
2. Each phase leaves the project in a releasable state
|
|
23
|
-
3. Defer scope, not quality
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: Vision
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Principles
|
|
6
|
-
|
|
7
|
-
> Guiding decisions throughout the project. When trade-offs arise, these resolve them.
|
|
8
|
-
|
|
9
|
-
## Core Principles
|
|
10
|
-
|
|
11
|
-
1. **Simplicity first** — the simplest solution that solves the problem is the right one
|
|
12
|
-
2. **Ship incrementally** — each phase leaves the project in a releasable state
|
|
13
|
-
3. **Defer scope, not quality** — cut features before cutting correctness
|
|
14
|
-
4. **Document decisions** — every significant choice gets an ADR
|
|
15
|
-
|
|
16
|
-
<!-- Add or replace principles to match this project's values. -->
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: Vision
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Project Charter
|
|
6
|
-
|
|
7
|
-
> **Project**: <Project Name>
|
|
8
|
-
> **Created**: YYYY-MM-DD
|
|
9
|
-
|
|
10
|
-
## Problem Statement
|
|
11
|
-
|
|
12
|
-
<!-- What problem does this project solve? Who has this problem? Why does it matter? -->
|
|
13
|
-
|
|
14
|
-
## Solution
|
|
15
|
-
|
|
16
|
-
<!-- What does this project build or do? How does it solve the problem? -->
|
|
17
|
-
|
|
18
|
-
## Stakeholders
|
|
19
|
-
|
|
20
|
-
| Role | Name / Team | Responsibility |
|
|
21
|
-
|------|-------------|----------------|
|
|
22
|
-
| Owner | _(TBD)_ | Final decisions |
|
|
23
|
-
| Users | _(TBD)_ | Primary audience |
|
|
24
|
-
|
|
25
|
-
## Scope
|
|
26
|
-
|
|
27
|
-
### In
|
|
28
|
-
- _(TBD)_
|
|
29
|
-
|
|
30
|
-
### Out
|
|
31
|
-
- _(TBD)_
|
|
32
|
-
|
|
33
|
-
## Success
|
|
34
|
-
|
|
35
|
-
<!-- How will you know this project succeeded? See `success-criteria.md` for measurable targets. -->
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: Vision
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Success Criteria
|
|
6
|
-
|
|
7
|
-
> Measurable targets. When all are met, the project has achieved its goals.
|
|
8
|
-
|
|
9
|
-
## Phase 0 Targets
|
|
10
|
-
|
|
11
|
-
| Criterion | Target | How to Measure |
|
|
12
|
-
|-----------|--------|----------------|
|
|
13
|
-
| _(TBD)_ | _(TBD)_ | _(TBD)_ |
|
|
14
|
-
|
|
15
|
-
## Long-Term Targets
|
|
16
|
-
|
|
17
|
-
| Criterion | Target | How to Measure |
|
|
18
|
-
|-----------|--------|----------------|
|
|
19
|
-
| _(TBD)_ | _(TBD)_ | _(TBD)_ |
|