@lumenflow/cli 3.18.1 → 3.20.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/dist/docs-sync.js +123 -6
- package/dist/docs-sync.js.map +1 -1
- package/dist/gate-co-change.js +23 -4
- package/dist/gate-co-change.js.map +1 -1
- package/dist/gates-runners.js +113 -16
- package/dist/gates-runners.js.map +1 -1
- package/dist/gates-utils.js +71 -0
- package/dist/gates-utils.js.map +1 -1
- package/dist/lumenflow-upgrade.js +1 -0
- package/dist/lumenflow-upgrade.js.map +1 -1
- package/dist/public-manifest.js +1 -1
- package/dist/public-manifest.js.map +1 -1
- package/dist/sync-templates.js +13 -0
- package/dist/sync-templates.js.map +1 -1
- package/dist/wu-block.js +10 -0
- package/dist/wu-block.js.map +1 -1
- package/dist/wu-claim-validation.js +3 -1
- package/dist/wu-claim-validation.js.map +1 -1
- package/dist/wu-claim.js +3 -1
- package/dist/wu-claim.js.map +1 -1
- package/dist/wu-done-memory-telemetry.js +5 -1
- package/dist/wu-done-memory-telemetry.js.map +1 -1
- package/dist/wu-done-ownership.js +6 -0
- package/dist/wu-done-ownership.js.map +1 -1
- package/dist/wu-edit-operations.js +4 -4
- package/dist/wu-edit-operations.js.map +1 -1
- package/dist/wu-prep.js +88 -13
- package/dist/wu-prep.js.map +1 -1
- package/dist/wu-prune.js +2 -2
- package/dist/wu-prune.js.map +1 -1
- package/dist/wu-recover.js +15 -0
- package/dist/wu-recover.js.map +1 -1
- package/dist/wu-release.js +10 -1
- package/dist/wu-release.js.map +1 -1
- package/dist/wu-spawn-prompt-builders.js +27 -2
- package/dist/wu-spawn-prompt-builders.js.map +1 -1
- package/dist/wu-state-mutation-ownership.js +136 -0
- package/dist/wu-state-mutation-ownership.js.map +1 -0
- package/dist/wu-unblock.js +10 -0
- package/dist/wu-unblock.js.map +1 -1
- package/dist/wu-verify.js +22 -17
- package/dist/wu-verify.js.map +1 -1
- package/package.json +111 -110
- package/packs/agent-runtime/.turbo/turbo-build.log +1 -1
- package/packs/agent-runtime/package.json +1 -1
- package/packs/sidekick/.turbo/turbo-build.log +1 -1
- package/packs/sidekick/README.md +118 -113
- package/packs/sidekick/manifest-schema.ts +15 -228
- package/packs/sidekick/manifest.ts +107 -7
- package/packs/sidekick/manifest.yaml +199 -1
- package/packs/sidekick/package.json +4 -1
- package/packs/sidekick/policy-factory.ts +38 -0
- package/packs/sidekick/tool-impl/channel-tools.ts +99 -0
- package/packs/sidekick/tool-impl/memory-tools.ts +86 -1
- package/packs/sidekick/tool-impl/routine-tools.ts +156 -2
- package/packs/sidekick/tool-impl/storage.ts +6 -5
- package/packs/sidekick/tool-impl/task-tools.ts +186 -4
- package/packs/software-delivery/.turbo/turbo-build.log +1 -1
- package/packs/software-delivery/package.json +1 -1
- package/templates/core/AGENTS.md.template +157 -32
- package/templates/core/LUMENFLOW.md.template +44 -29
- package/templates/core/_frameworks/lumenflow/wu-sizing-guide.md.template +644 -0
- package/templates/core/ai/onboarding/agent-invocation-guide.md.template +5 -5
- package/templates/core/ai/onboarding/agent-safety-card.md.template +1 -0
- package/templates/core/ai/onboarding/docs-generation.md.template +94 -4
- package/templates/core/ai/onboarding/first-15-mins.md.template +1 -1
- package/templates/core/ai/onboarding/first-wu-mistakes.md.template +2 -1
- package/templates/core/ai/onboarding/initiative-orchestration.md.template +21 -21
- package/templates/core/ai/onboarding/quick-ref-commands.md.template +126 -109
- package/templates/core/ai/onboarding/release-process.md.template +12 -12
- package/templates/core/ai/onboarding/starting-prompt.md.template +33 -32
- package/templates/vendors/claude/.claude/skills/initiative-management/SKILL.md.template +2 -2
- package/templates/vendors/claude/.claude/skills/multi-agent-coordination/SKILL.md.template +2 -2
- package/templates/vendors/claude/.claude/skills/orchestration/SKILL.md.template +3 -3
- package/dist/chunk-2D2VOCA4.js +0 -37
- package/dist/chunk-2D5KFYGX.js +0 -284
- package/dist/chunk-2GXVIN57.js +0 -14072
- package/dist/chunk-2MQ7HZWZ.js +0 -26
- package/dist/chunk-2UFQ3A3C.js +0 -643
- package/dist/chunk-3RG5ZIWI.js +0 -10
- package/dist/chunk-4N74J3UT.js +0 -15
- package/dist/chunk-5GTOXFYR.js +0 -392
- package/dist/chunk-5VY6MQMC.js +0 -240
- package/dist/chunk-67XVPMRY.js +0 -1297
- package/dist/chunk-6HO4GWJE.js +0 -164
- package/dist/chunk-6W5XHWYV.js +0 -1890
- package/dist/chunk-6X4EMYJQ.js +0 -64
- package/dist/chunk-6XYXI2NQ.js +0 -772
- package/dist/chunk-7ANSOV6Q.js +0 -285
- package/dist/chunk-A624LFLB.js +0 -1380
- package/dist/chunk-ADN5NHG4.js +0 -126
- package/dist/chunk-B7YJYJKG.js +0 -33
- package/dist/chunk-CCLHCPKG.js +0 -210
- package/dist/chunk-CK36VROC.js +0 -1584
- package/dist/chunk-D3UOFRSB.js +0 -81
- package/dist/chunk-DFR4DJBM.js +0 -230
- package/dist/chunk-DSYBDHYH.js +0 -79
- package/dist/chunk-DWMLTXKQ.js +0 -1176
- package/dist/chunk-E3REJTAJ.js +0 -28
- package/dist/chunk-EA3IVO64.js +0 -633
- package/dist/chunk-EK2AKZKD.js +0 -55
- package/dist/chunk-ELD7JTTT.js +0 -343
- package/dist/chunk-EX6TT2XI.js +0 -195
- package/dist/chunk-EXINSFZE.js +0 -82
- package/dist/chunk-EZ6ZBYBM.js +0 -510
- package/dist/chunk-FBKAPTJ2.js +0 -16
- package/dist/chunk-FVLV5RYH.js +0 -1118
- package/dist/chunk-GDNSBQVK.js +0 -2485
- package/dist/chunk-GPQHMBNN.js +0 -278
- package/dist/chunk-GTFJB67L.js +0 -68
- package/dist/chunk-HANJXVKW.js +0 -1127
- package/dist/chunk-HEVS5YLD.js +0 -269
- package/dist/chunk-HMEVZKPQ.js +0 -9
- package/dist/chunk-HRGSYNLM.js +0 -3511
- package/dist/chunk-ISZR5N4K.js +0 -60
- package/dist/chunk-J6SUPR2C.js +0 -226
- package/dist/chunk-JERYVEIZ.js +0 -244
- package/dist/chunk-JHHWGL2N.js +0 -87
- package/dist/chunk-JONWQUB5.js +0 -775
- package/dist/chunk-K2DIWWDM.js +0 -1766
- package/dist/chunk-KY4PGL5V.js +0 -969
- package/dist/chunk-L737LQ4C.js +0 -1285
- package/dist/chunk-LFTWYIB2.js +0 -497
- package/dist/chunk-LV47RFNJ.js +0 -41
- package/dist/chunk-MKSAITI7.js +0 -15
- package/dist/chunk-MZ7RKIX4.js +0 -212
- package/dist/chunk-NAP6CFSO.js +0 -84
- package/dist/chunk-ND6MY37M.js +0 -16
- package/dist/chunk-NMG736UR.js +0 -683
- package/dist/chunk-NRAXROED.js +0 -32
- package/dist/chunk-NRIZR3A7.js +0 -690
- package/dist/chunk-NX43BG3M.js +0 -233
- package/dist/chunk-O645XLSI.js +0 -297
- package/dist/chunk-OMJD6A3S.js +0 -235
- package/dist/chunk-QB6SJD4T.js +0 -430
- package/dist/chunk-QFSTL4J3.js +0 -276
- package/dist/chunk-QLGDFMFX.js +0 -212
- package/dist/chunk-RIAAGL2E.js +0 -13
- package/dist/chunk-RWO5XMZ6.js +0 -86
- package/dist/chunk-RXRKBBSM.js +0 -149
- package/dist/chunk-RZOZMML6.js +0 -363
- package/dist/chunk-U7I7FS7T.js +0 -113
- package/dist/chunk-UI42RODY.js +0 -717
- package/dist/chunk-UTVMVSCO.js +0 -519
- package/dist/chunk-V6OJGLBA.js +0 -1746
- package/dist/chunk-W2JHVH7D.js +0 -152
- package/dist/chunk-WD3Y7VQN.js +0 -280
- package/dist/chunk-WOCTQ5MS.js +0 -303
- package/dist/chunk-WZR3ZUNN.js +0 -696
- package/dist/chunk-XGI665H7.js +0 -150
- package/dist/chunk-XKY65P2T.js +0 -304
- package/dist/chunk-Y4CQZY65.js +0 -57
- package/dist/chunk-YFEXKLVE.js +0 -194
- package/dist/chunk-YHO3HS5X.js +0 -287
- package/dist/chunk-YLS7AZSX.js +0 -738
- package/dist/chunk-ZE473AO6.js +0 -49
- package/dist/chunk-ZF747T3O.js +0 -644
- package/dist/chunk-ZHCZHZH3.js +0 -43
- package/dist/chunk-ZZNZX2XY.js +0 -87
- package/dist/constants-7QAP3VQ4.js +0 -23
- package/dist/dist-IY3UUMWK.js +0 -33
- package/dist/invariants-runner-W5RGHCSU.js +0 -27
- package/dist/lane-lock-6J36HD5O.js +0 -35
- package/dist/mem-checkpoint-core-EANG2GVN.js +0 -14
- package/dist/mem-signal-core-2LZ2WYHW.js +0 -19
- package/dist/memory-store-OLB5FO7K.js +0 -18
- package/dist/service-6BYCOCO5.js +0 -13
- package/dist/spawn-policy-resolver-NTSZYQ6R.js +0 -17
- package/dist/spawn-task-builder-R4E2BHSW.js +0 -22
- package/dist/wu-done-pr-WLFFFEPJ.js +0 -25
- package/dist/wu-done-validation-3J5E36FE.js +0 -30
- package/dist/wu-duplicate-id-detector-5S7JHELK.js +0 -232
- package/packs/sidekick/.turbo/turbo-test.log +0 -12
- package/packs/sidekick/.turbo/turbo-typecheck.log +0 -4
- package/packs/software-delivery/.turbo/turbo-typecheck.log +0 -4
|
@@ -14,6 +14,87 @@ LumenFlow automatically generates CLI and configuration reference documentation
|
|
|
14
14
|
| ---------------- | --------------------------------------------------------- | ------------------------------------------------- |
|
|
15
15
|
| CLI Reference | `packages/@lumenflow/cli/src/**` | `apps/docs/src/content/docs/reference/cli.mdx` |
|
|
16
16
|
| Config Reference | `packages/@lumenflow/core/src/lumenflow-config-schema.ts` | `apps/docs/src/content/docs/reference/config.mdx` |
|
|
17
|
+
| MCP Reference | `packages/@lumenflow/mcp/src/tools.ts` | `apps/docs/src/content/docs/reference/mcp.mdx` |
|
|
18
|
+
|
|
19
|
+
## Example Tagging Conventions
|
|
20
|
+
|
|
21
|
+
Docs example parity now distinguishes between copy-paste workflow examples and illustrative
|
|
22
|
+
snippets:
|
|
23
|
+
|
|
24
|
+
- `<!-- lumenflow-example: strict -->` marks a code block as a copy-paste example. Use this when
|
|
25
|
+
the block is intended to reflect the current command surface and full workflow ordering.
|
|
26
|
+
- `<!-- lumenflow-example: illustrative -->` marks a block as explanatory only. It is still
|
|
27
|
+
scanned for obvious command drift where practical, but it is excluded from strict workflow checks
|
|
28
|
+
such as `wu:claim` → `wu:brief` → `wu:prep` → `wu:done`.
|
|
29
|
+
- `<!-- lumenflow-example: historical -->`, `legacy`, and `placeholder` are reserved for
|
|
30
|
+
compatibility, migration, or incomplete examples that intentionally do not match the current
|
|
31
|
+
live command surface.
|
|
32
|
+
- Strict CLI shell examples are additionally validated against the live `pnpm <command> --help`
|
|
33
|
+
surface for each referenced public command. Unknown flags, retired option names, and missing
|
|
34
|
+
required option values fail docs parity.
|
|
35
|
+
- Strict YAML and JSON config examples are additionally validated against the live configuration
|
|
36
|
+
schemas. Unknown keys, invalid shapes, and stale config forms fail docs parity.
|
|
37
|
+
- Strict MCP JSON payload examples with `"name"` and `"arguments"` are additionally validated
|
|
38
|
+
against the live MCP registry and the target tool's input schema. Required fields, enum values,
|
|
39
|
+
and payload shapes must all remain valid.
|
|
40
|
+
|
|
41
|
+
Place the comment immediately above the fenced code block it applies to:
|
|
42
|
+
|
|
43
|
+
````md
|
|
44
|
+
<!-- lumenflow-example: illustrative -->
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
pnpm wu:status --id WU-123
|
|
48
|
+
```
|
|
49
|
+
````
|
|
50
|
+
|
|
51
|
+
If no tag is present, shell code blocks are treated as illustrative by default. Add a `strict` tag
|
|
52
|
+
whenever readers are expected to copy-paste a current workflow or command sequence.
|
|
53
|
+
|
|
54
|
+
For strict CLI examples, prefer complete commands that reflect the live flag surface:
|
|
55
|
+
|
|
56
|
+
````md
|
|
57
|
+
<!-- lumenflow-example: strict -->
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
pnpm wu:create --lane "Framework: Core" --title "Add feature" \
|
|
61
|
+
--description "Context: ... Problem: ... Solution: ..." \
|
|
62
|
+
--acceptance "Criterion 1" \
|
|
63
|
+
--code-paths "src/file.ts" \
|
|
64
|
+
--test-paths-unit "src/__tests__/file.test.ts" \
|
|
65
|
+
--exposure backend-only
|
|
66
|
+
```
|
|
67
|
+
````
|
|
68
|
+
|
|
69
|
+
For strict config examples, prefer a real schema-backed snippet instead of pseudocode:
|
|
70
|
+
|
|
71
|
+
````md
|
|
72
|
+
<!-- lumenflow-example: strict -->
|
|
73
|
+
|
|
74
|
+
```yaml
|
|
75
|
+
software_delivery:
|
|
76
|
+
gates:
|
|
77
|
+
minCoverage: 90
|
|
78
|
+
```
|
|
79
|
+
````
|
|
80
|
+
|
|
81
|
+
For MCP payload examples, prefer:
|
|
82
|
+
|
|
83
|
+
````md
|
|
84
|
+
<!-- lumenflow-example: strict -->
|
|
85
|
+
|
|
86
|
+
```json
|
|
87
|
+
{
|
|
88
|
+
"name": "wu_status",
|
|
89
|
+
"arguments": {
|
|
90
|
+
"id": "WU-1234"
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
````
|
|
95
|
+
|
|
96
|
+
Use `illustrative` when a payload is intentionally partial or schematic and should not be enforced
|
|
97
|
+
against the full schema.
|
|
17
98
|
|
|
18
99
|
---
|
|
19
100
|
|
|
@@ -117,8 +198,9 @@ This runs `tools/generate-cli-docs.ts` which:
|
|
|
117
198
|
1. Extracts command metadata from CLI package.json bin entries
|
|
118
199
|
2. Imports WU_OPTIONS from `@lumenflow/core` for option definitions
|
|
119
200
|
3. Extracts config schemas using Zod 4's native `toJSONSchema()`
|
|
120
|
-
4.
|
|
121
|
-
5.
|
|
201
|
+
4. Reads the built MCP tool registry from `packages/@lumenflow/mcp/dist/tools.js`
|
|
202
|
+
5. Generates MDX files with tables and code blocks
|
|
203
|
+
6. Formats output with Prettier
|
|
122
204
|
|
|
123
205
|
### Validate Documentation
|
|
124
206
|
|
|
@@ -149,7 +231,8 @@ The generator is integrated into Turbo for caching:
|
|
|
149
231
|
],
|
|
150
232
|
"outputs": [
|
|
151
233
|
"apps/docs/src/content/docs/reference/cli.mdx",
|
|
152
|
-
"apps/docs/src/content/docs/reference/config.mdx"
|
|
234
|
+
"apps/docs/src/content/docs/reference/config.mdx",
|
|
235
|
+
"apps/docs/src/content/docs/reference/mcp.mdx"
|
|
153
236
|
]
|
|
154
237
|
}
|
|
155
238
|
```
|
|
@@ -164,7 +247,7 @@ The generator is integrated into Turbo for caching:
|
|
|
164
247
|
|
|
165
248
|
## Output Files
|
|
166
249
|
|
|
167
|
-
The generator produces
|
|
250
|
+
The generator produces three MDX files:
|
|
168
251
|
|
|
169
252
|
### CLI Reference (`cli.mdx`)
|
|
170
253
|
|
|
@@ -180,6 +263,13 @@ The generator produces two MDX files:
|
|
|
180
263
|
- Environment variable overrides documented
|
|
181
264
|
- Validation command shown
|
|
182
265
|
|
|
266
|
+
### MCP Reference (`mcp.mdx`)
|
|
267
|
+
|
|
268
|
+
- Generated from the live MCP tool registry in `packages/@lumenflow/mcp/src/tools.ts`
|
|
269
|
+
- Category counts derived from the registered tool set at generation time
|
|
270
|
+
- Per-tool headings and input parameter tables generated from tool schemas
|
|
271
|
+
- Validation fails if the committed MCP reference drifts from the registry
|
|
272
|
+
|
|
183
273
|
---
|
|
184
274
|
|
|
185
275
|
## Adding New CLI Commands
|
|
@@ -10,7 +10,7 @@ A fast start for agents entering an existing LumenFlow project.
|
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
12
|
ls LUMENFLOW.md AGENTS.md workspace.yaml
|
|
13
|
-
pnpm
|
|
13
|
+
pnpm lumenflow:doctor
|
|
14
14
|
```
|
|
15
15
|
|
|
16
16
|
If the doctor reports a repo-level problem, stop there and fix it before claiming work.
|
|
@@ -22,6 +22,7 @@ git push origin main
|
|
|
22
22
|
```bash
|
|
23
23
|
# Claim first, then work in worktree
|
|
24
24
|
pnpm wu:claim --id WU-123 --lane Core
|
|
25
|
+
pnpm wu:brief --id WU-123 --client <client>
|
|
25
26
|
cd worktrees/core-wu-123
|
|
26
27
|
vim src/feature.ts
|
|
27
28
|
git commit -m "feat: add feature"
|
|
@@ -330,7 +331,7 @@ sizing_estimate:
|
|
|
330
331
|
strategy: checkpoint-resume
|
|
331
332
|
```
|
|
332
333
|
|
|
333
|
-
3. **Split the WU** only if the work is no longer atomic or should land independently (see [wu-sizing-guide.md](
|
|
334
|
+
3. **Split the WU** only if the work is no longer atomic or should land independently (see [wu-sizing-guide.md](./wu-sizing-guide.md) section 3 for splitting patterns).
|
|
334
335
|
|
|
335
336
|
**Strict mode:** Teams can enforce sizing compliance for delegated work with `--strict-sizing` on `wu:brief`. In strict mode, missing or non-compliant sizing metadata blocks the operation.
|
|
336
337
|
|
|
@@ -45,7 +45,7 @@ Before accepting the wave plan, sanity-check the decomposition. If several WUs s
|
|
|
45
45
|
| Checkpoint-per-wave | `pnpm orchestrate:initiative -i INIT-XXX -c` | Large initiatives (>3 WUs or >2 waves) |
|
|
46
46
|
| Continuous | `pnpm orchestrate:initiative -i INIT-XXX` | Small initiatives (<=3 WUs, 1-2 waves) |
|
|
47
47
|
| Manual brief/delegate | `pnpm wu:brief --id WU-XXX --client <client>` per WU | Testing individual WUs, debugging |
|
|
48
|
-
| Manual self-implement | `pnpm wu:brief --id WU-XXX --client <client>` per WU |
|
|
48
|
+
| Manual self-implement | `pnpm wu:brief --id WU-XXX --client <client>` per WU | You are implementing without sub-agent |
|
|
49
49
|
|
|
50
50
|
Checkpoint-per-wave is recommended for most initiatives. It processes one wave at a time and writes a manifest before exiting, giving you control between waves.
|
|
51
51
|
|
|
@@ -61,8 +61,6 @@ pnpm wu:brief --id WU-100 --client claude-code
|
|
|
61
61
|
pnpm wu:delegate --id WU-100 --parent-wu WU-050 --client claude-code
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
-
`wu:brief` always outputs full WU context AND records evidence. Use it for both delegation and self-implementation.
|
|
65
|
-
|
|
66
64
|
**Use `wu:delegate` (not `wu:brief`) when:**
|
|
67
65
|
|
|
68
66
|
- You are the orchestrator agent managing the initiative
|
|
@@ -75,6 +73,8 @@ pnpm wu:delegate --id WU-100 --parent-wu WU-050 --client claude-code
|
|
|
75
73
|
- You still need `wu:brief` evidence for `wu:done` policy
|
|
76
74
|
- You will implement directly in the current session
|
|
77
75
|
|
|
76
|
+
`wu:brief` always outputs full WU context and records evidence in a single step. There is no separate evidence-only mode.
|
|
77
|
+
|
|
78
78
|
**Verification checklist before spawning:**
|
|
79
79
|
|
|
80
80
|
1. The generated prompt ends with `<!-- LUMENFLOW_SPAWN_END -->`
|
|
@@ -270,7 +270,7 @@ pnpm wu:brief --id WU-100 --client claude-code
|
|
|
270
270
|
pnpm orchestrate:monitor # Shows "Zombie lock (PID XXXXX not running)"
|
|
271
271
|
|
|
272
272
|
# 2. Unlock the lane
|
|
273
|
-
pnpm
|
|
273
|
+
pnpm wu:unlock-lane --lane "Framework: Core" --reason "Zombie lock (PID 12345 not running)"
|
|
274
274
|
|
|
275
275
|
# 3. Release and re-claim the WU
|
|
276
276
|
pnpm wu:release --id WU-100
|
|
@@ -375,23 +375,23 @@ pnpm delegation:list --initiative INIT-XXX --json
|
|
|
375
375
|
|
|
376
376
|
## Quick Reference: All Orchestration Commands
|
|
377
377
|
|
|
378
|
-
| Command | Description
|
|
379
|
-
| --------------------------------------------------- |
|
|
380
|
-
| `pnpm orchestrate:initiative -i INIT-XXX --dry-run` | Preview wave plan without executing
|
|
381
|
-
| `pnpm orchestrate:initiative -i INIT-XXX -c` | Execute one wave then checkpoint and exit
|
|
382
|
-
| `pnpm orchestrate:initiative -i INIT-XXX` | Execute all waves continuously
|
|
383
|
-
| `pnpm orchestrate:init-status -i INIT-XXX` | Compact progress view
|
|
384
|
-
| `pnpm orchestrate:monitor` | Detect stuck agents and zombie locks
|
|
385
|
-
| `pnpm wu:brief --id WU-XXX --client <client>` | **MANDATORY after wu:claim.** Generate prompt + evidence
|
|
386
|
-
| `pnpm wu:delegate --id WU-XXX --parent-wu <P>` | Generate prompt + record delegation
|
|
387
|
-
| `pnpm delegation:list --initiative INIT-XXX` | View delegation tree
|
|
388
|
-
| `pnpm mem:signal "msg" --wu WU-XXX` | Broadcast coordination signal
|
|
389
|
-
| `pnpm mem:inbox --since <duration>` | Read coordination signals
|
|
390
|
-
| `pnpm mem:checkpoint "msg" --wu WU-XXX` | Save progress checkpoint
|
|
391
|
-
| `pnpm mem:ready --wu WU-XXX` | Check pending work/checkpoints
|
|
392
|
-
| `pnpm wu:block --id WU-XXX --reason "..."` | Block stuck WU
|
|
393
|
-
| `pnpm wu:unblock --id WU-XXX` | Unblock recovered WU
|
|
394
|
-
| `pnpm wu:release --id WU-XXX` | Release abandoned WU for re-claim
|
|
378
|
+
| Command | Description |
|
|
379
|
+
| --------------------------------------------------- | -------------------------------------------------------- |
|
|
380
|
+
| `pnpm orchestrate:initiative -i INIT-XXX --dry-run` | Preview wave plan without executing |
|
|
381
|
+
| `pnpm orchestrate:initiative -i INIT-XXX -c` | Execute one wave then checkpoint and exit |
|
|
382
|
+
| `pnpm orchestrate:initiative -i INIT-XXX` | Execute all waves continuously |
|
|
383
|
+
| `pnpm orchestrate:init-status -i INIT-XXX` | Compact progress view |
|
|
384
|
+
| `pnpm orchestrate:monitor` | Detect stuck agents and zombie locks |
|
|
385
|
+
| `pnpm wu:brief --id WU-XXX --client <client>` | **MANDATORY after wu:claim.** Generate prompt + evidence |
|
|
386
|
+
| `pnpm wu:delegate --id WU-XXX --parent-wu <P>` | Generate prompt + record delegation |
|
|
387
|
+
| `pnpm delegation:list --initiative INIT-XXX` | View delegation tree |
|
|
388
|
+
| `pnpm mem:signal "msg" --wu WU-XXX` | Broadcast coordination signal |
|
|
389
|
+
| `pnpm mem:inbox --since <duration>` | Read coordination signals |
|
|
390
|
+
| `pnpm mem:checkpoint "msg" --wu WU-XXX` | Save progress checkpoint |
|
|
391
|
+
| `pnpm mem:ready --wu WU-XXX` | Check pending work/checkpoints |
|
|
392
|
+
| `pnpm wu:block --id WU-XXX --reason "..."` | Block stuck WU |
|
|
393
|
+
| `pnpm wu:unblock --id WU-XXX` | Unblock recovered WU |
|
|
394
|
+
| `pnpm wu:release --id WU-XXX` | Release abandoned WU for re-claim |
|
|
395
395
|
|
|
396
396
|
---
|
|
397
397
|
|
|
@@ -56,25 +56,25 @@ Run `--help` first, then run the real command with explicit flags.
|
|
|
56
56
|
|
|
57
57
|
**For this monorepo (development):**
|
|
58
58
|
|
|
59
|
-
| Command
|
|
60
|
-
|
|
|
61
|
-
| `pnpm setup`
|
|
62
|
-
| `pnpm bootstrap`
|
|
63
|
-
| `pnpm build`
|
|
64
|
-
| `pnpm build:dist`
|
|
65
|
-
| `pnpm dev`
|
|
66
|
-
| `pnpm clean`
|
|
67
|
-
| `pnpm pack:
|
|
68
|
-
| `pnpm
|
|
69
|
-
| `pnpm
|
|
70
|
-
| `pnpm
|
|
71
|
-
| `pnpm docs:sync
|
|
72
|
-
| `pnpm sync:templates`
|
|
73
|
-
| `pnpm lumenflow:upgrade`
|
|
74
|
-
| `pnpm lumenflow:doctor`
|
|
75
|
-
| `pnpm lumenflow:integrate`
|
|
76
|
-
| `pnpm cloud:connect`
|
|
77
|
-
| `npx lumenflow commands`
|
|
59
|
+
| Command | Description |
|
|
60
|
+
| ---------------------------------------- | --------------------------------------------------------------------------------------- |
|
|
61
|
+
| `pnpm setup` | Install deps and build CLI (first time) |
|
|
62
|
+
| `pnpm bootstrap` | Build CLI with dependency closure (worktree-safe) |
|
|
63
|
+
| `pnpm build` | Build all packages |
|
|
64
|
+
| `pnpm build:dist` | Build distribution packages |
|
|
65
|
+
| `pnpm dev` | Start development mode |
|
|
66
|
+
| `pnpm clean` | Clean build artifacts and caches |
|
|
67
|
+
| `pnpm pack:validate` | Validate a pack manifest and implementation surface |
|
|
68
|
+
| `pnpm lumenflow` | Scaffold LumenFlow in a project |
|
|
69
|
+
| `pnpm lumenflow --docs-structure simple` | Use simple docs structure (`docs/tasks`) |
|
|
70
|
+
| `pnpm lumenflow --docs-structure arc42` | Use arc42 docs structure (`{{DOCS_OPERATIONS_PATH}}`) |
|
|
71
|
+
| `pnpm docs:sync` | Refresh managed docs, onboarding docs, and vendor assets (run by upgrade automatically) |
|
|
72
|
+
| `pnpm sync:templates` | Sync repo docs into bundled templates |
|
|
73
|
+
| `pnpm lumenflow:upgrade` | Upgrade LumenFlow packages |
|
|
74
|
+
| `pnpm lumenflow:doctor` | Diagnose LumenFlow configuration |
|
|
75
|
+
| `pnpm lumenflow:integrate` | Generate enforcement hooks for client |
|
|
76
|
+
| `pnpm cloud:connect` | Configure cloud control-plane access |
|
|
77
|
+
| `npx lumenflow commands` | List all available CLI commands |
|
|
78
78
|
|
|
79
79
|
**For external projects (end users):**
|
|
80
80
|
|
|
@@ -83,12 +83,12 @@ Run `--help` first, then run the real command with explicit flags.
|
|
|
83
83
|
pnpm add -D @lumenflow/cli # or: npm install -D @lumenflow/cli
|
|
84
84
|
|
|
85
85
|
# Initialize LumenFlow
|
|
86
|
-
pnpm
|
|
86
|
+
pnpm lumenflow
|
|
87
87
|
|
|
88
88
|
# With client-specific overlays
|
|
89
|
-
pnpm
|
|
90
|
-
pnpm
|
|
91
|
-
pnpm
|
|
89
|
+
pnpm lumenflow --client claude # Claude Code
|
|
90
|
+
pnpm lumenflow --client cursor # Cursor IDE
|
|
91
|
+
pnpm lumenflow --client all # All clients
|
|
92
92
|
```
|
|
93
93
|
|
|
94
94
|
---
|
|
@@ -98,30 +98,29 @@ pnpm exec lumenflow init --client all # All clients
|
|
|
98
98
|
These commands use **micro-worktree isolation** internally — they handle their own
|
|
99
99
|
commit and push atomically. Do NOT wrap them in a WU or use raw `pnpm update`/`git commit`.
|
|
100
100
|
|
|
101
|
-
| Command | Description
|
|
102
|
-
| ------------------------------------------------- |
|
|
103
|
-
| `pnpm lumenflow:upgrade --version 3.5.0` | Upgrade all 7 @lumenflow/\* packages
|
|
104
|
-
| `pnpm lumenflow:upgrade --latest` | Upgrade to latest version
|
|
105
|
-
| `pnpm lumenflow:upgrade --latest --dry-run` | Preview upgrade without executing
|
|
106
|
-
| `pnpm config:set --key <dotpath> --value <value>` | Set workspace.yaml config (Zod-validated)
|
|
107
|
-
| `pnpm config:get --key <dotpath>` | Read workspace.yaml config
|
|
108
|
-
| `pnpm cloud:connect` | Configure cloud control-plane access
|
|
109
|
-
| `pnpm docs:sync
|
|
110
|
-
| `pnpm sync:templates` | Sync repo docs into bundled templates
|
|
101
|
+
| Command | Description |
|
|
102
|
+
| ------------------------------------------------- | --------------------------------------------------------------------- |
|
|
103
|
+
| `pnpm lumenflow:upgrade --version 3.5.0` | Upgrade all 7 @lumenflow/\* packages |
|
|
104
|
+
| `pnpm lumenflow:upgrade --latest` | Upgrade to latest version |
|
|
105
|
+
| `pnpm lumenflow:upgrade --latest --dry-run` | Preview upgrade without executing |
|
|
106
|
+
| `pnpm config:set --key <dotpath> --value <value>` | Set workspace.yaml config (Zod-validated) |
|
|
107
|
+
| `pnpm config:get --key <dotpath>` | Read workspace.yaml config |
|
|
108
|
+
| `pnpm cloud:connect` | Configure cloud control-plane access |
|
|
109
|
+
| `pnpm docs:sync` | Refresh managed docs, onboarding docs, and vendor assets (standalone) |
|
|
110
|
+
| `pnpm sync:templates` | Sync repo docs into bundled templates |
|
|
111
111
|
|
|
112
112
|
**Key principle:** If a LumenFlow CLI command exists for the operation, use it instead of
|
|
113
113
|
raw pnpm/git. These tooling commands commit directly to main via micro-worktree — no dirty
|
|
114
114
|
files, no manual git, no WU ceremony. Only actual **code changes** need WUs.
|
|
115
115
|
|
|
116
|
-
`docs:sync`
|
|
117
|
-
|
|
118
|
-
|
|
116
|
+
`lumenflow:upgrade` runs `docs:sync` internally as part of the upgrade transaction. You do not
|
|
117
|
+
need to run `docs:sync` separately after upgrading. Standalone `docs:sync` is only needed when
|
|
118
|
+
you want to refresh docs without upgrading packages (e.g., after manually editing templates).
|
|
119
119
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
those defaults automatically, and `.lumenflow/templates/` remains optional unless you want custom overrides.
|
|
120
|
+
`docs:sync` handles two categories of files:
|
|
121
|
+
|
|
122
|
+
- **Managed docs** (`LUMENFLOW.md`, `.lumenflow/constraints.md`) — always force-synced from templates
|
|
123
|
+
- **Bootstrap docs** (`AGENTS.md`, vendor files) — merge-block update only (user content outside `LUMENFLOW:START`/`END` markers is preserved)
|
|
125
124
|
|
|
126
125
|
> **Anti-pattern:** Do NOT use `pnpm update @lumenflow/*` to upgrade packages.
|
|
127
126
|
> This leaves dirty `package.json` and `pnpm-lock.yaml` on main.
|
|
@@ -131,70 +130,84 @@ those defaults automatically, and `.lumenflow/templates/` remains optional unles
|
|
|
131
130
|
|
|
132
131
|
## WU Lifecycle
|
|
133
132
|
|
|
134
|
-
| Command | Description
|
|
135
|
-
| -------------------------------------------------------------- |
|
|
136
|
-
| `pnpm wu:create --lane <Lane> --title "..." ..` | Create new WU spec (ID auto-generated; see fields below)
|
|
137
|
-
| `pnpm wu:claim --id WU-XXX --lane <Lane>` | Claim WU and create worktree (default)
|
|
138
|
-
| `pnpm wu:claim --id WU-XXX --lane <L> --cloud` | Claim WU in cloud/branch-pr mode (no worktree)
|
|
139
|
-
| `pnpm wu:prep --id WU-XXX [--full-tests]` | Run gates, prep for wu:done (`tests.unit` scoped by default)
|
|
140
|
-
| `pnpm wu:done --id WU-XXX` | Complete WU (merge or PR, stamp, cleanup)
|
|
141
|
-
| `pnpm wu:edit --id WU-XXX --description "..."` | Edit WU spec fields (run --help for all flags)
|
|
142
|
-
| `pnpm wu:escalate --id WU-XXX` | Show escalation status for a WU
|
|
143
|
-
| `pnpm wu:escalate --resolve --id WU-XXX` | Resolve escalation (sets resolved_by/resolved_at)
|
|
144
|
-
| `pnpm approval:request --type <type> --subject <json>` | Request control-plane approval for an action
|
|
145
|
-
| `pnpm approval:review --id <approvalId> --decision <decision>` | Resolve an approval decision (`approved`/`rejected`/`expired`)
|
|
146
|
-
| `pnpm approval:list [--status <status>]` | List approvals with optional status/type filters
|
|
147
|
-
| `pnpm wu:block --id WU-XXX --reason "..."` | Block WU with reason
|
|
148
|
-
| `pnpm wu:unblock --id WU-XXX` | Unblock WU
|
|
149
|
-
| `pnpm wu:release --id WU-XXX`
|
|
150
|
-
| `pnpm wu:status --id WU-XXX` | Show WU status, location, valid commands
|
|
151
|
-
| `pnpm wu:brief --id WU-XXX --client <client>` | **MANDATORY after wu:claim.** Generate handoff prompt + record evidence. wu:done blocks without this |
|
|
152
|
-
| `pnpm wu:brief --id WU-XXX --no-context` | Generate prompt without memory context injection
|
|
153
|
-
| `pnpm wu:delegate --id WU-XXX --parent-wu <P>` | Generate prompt, record lineage, and store brief hash attestation
|
|
154
|
-
| `pnpm wu:sandbox --id WU-XXX -- <cmd>` | Run command through hardened WU sandbox backend
|
|
133
|
+
| Command | Description |
|
|
134
|
+
| -------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
|
|
135
|
+
| `pnpm wu:create --lane <Lane> --title "..." ..` | Create new WU spec (ID auto-generated; see fields below) |
|
|
136
|
+
| `pnpm wu:claim --id WU-XXX --lane <Lane>` | Claim WU and create worktree (default) |
|
|
137
|
+
| `pnpm wu:claim --id WU-XXX --lane <L> --cloud` | Claim WU in cloud/branch-pr mode (no worktree) |
|
|
138
|
+
| `pnpm wu:prep --id WU-XXX [--full-tests]` | Run gates, prep for wu:done (`tests.unit` scoped by default) |
|
|
139
|
+
| `pnpm wu:done --id WU-XXX` | Complete WU (merge or PR, stamp, cleanup) |
|
|
140
|
+
| `pnpm wu:edit --id WU-XXX --description "..."` | Edit WU spec fields (run --help for all flags) |
|
|
141
|
+
| `pnpm wu:escalate --id WU-XXX` | Show escalation status for a WU |
|
|
142
|
+
| `pnpm wu:escalate --resolve --id WU-XXX` | Resolve escalation (sets resolved_by/resolved_at) |
|
|
143
|
+
| `pnpm approval:request --type <type> --subject <json>` | Request control-plane approval for an action |
|
|
144
|
+
| `pnpm approval:review --id <approvalId> --decision <decision>` | Resolve an approval decision (`approved`/`rejected`/`expired`) |
|
|
145
|
+
| `pnpm approval:list [--status <status>]` | List approvals with optional status/type filters |
|
|
146
|
+
| `pnpm wu:block --id WU-XXX --reason "..."` | Block WU with reason (ownership-guarded, v3.19.0) |
|
|
147
|
+
| `pnpm wu:unblock --id WU-XXX` | Unblock WU (ownership-guarded, v3.19.0) |
|
|
148
|
+
| `pnpm wu:release --id WU-XXX --reason "..."` | Release orphaned WU (ownership-guarded, v3.19.0) |
|
|
149
|
+
| `pnpm wu:status --id WU-XXX` | Show WU status, location, valid commands |
|
|
150
|
+
| `pnpm wu:brief --id WU-XXX --client <client>` | **MANDATORY after wu:claim.** Generate handoff prompt + record evidence. wu:done blocks without this (WU-2379) |
|
|
151
|
+
| `pnpm wu:brief --id WU-XXX --no-context` | Generate prompt without memory context injection |
|
|
152
|
+
| `pnpm wu:delegate --id WU-XXX --parent-wu <P>` | Generate prompt, record lineage, and store brief hash attestation |
|
|
153
|
+
| `pnpm wu:sandbox --id WU-XXX -- <cmd>` | Run command through hardened WU sandbox backend |
|
|
155
154
|
|
|
156
155
|
### WU Maintenance
|
|
157
156
|
|
|
158
|
-
| Command | Description
|
|
159
|
-
| -------------------------------- |
|
|
160
|
-
| `pnpm wu:validate --id WU-XXX` | Validate WU spec
|
|
161
|
-
| `pnpm wu:preflight --id WU-XXX` | Pre-flight checks before wu:done
|
|
162
|
-
| `pnpm wu:verify --id WU-XXX` | Verify WU completion (stamp, commit, clean tree)
|
|
163
|
-
| `pnpm wu:recover --id WU-XXX` | Analyze and fix WU state
|
|
164
|
-
| `pnpm wu:repair --id WU-XXX` | Repair WU state issues
|
|
165
|
-
| `pnpm wu:prune` | Clean stale worktrees
|
|
166
|
-
| `pnpm wu:cleanup --id WU-XXX` | Cleanup after PR merge (PR-only)
|
|
167
|
-
| `pnpm wu:deps --id WU-XXX` | Show WU dependencies
|
|
168
|
-
| `pnpm wu:infer-lane --id WU-XXX` | Infer lane from code paths/description
|
|
169
|
-
| `pnpm wu:delete --id WU-XXX` | Delete WU spec and cleanup
|
|
170
|
-
| `pnpm wu:unlock-lane --lane <L>` | Unlock stuck lane
|
|
171
|
-
| `pnpm wu:proto --lane <Lane>` | Create WU prototype (lightweight draft)
|
|
157
|
+
| Command | Description |
|
|
158
|
+
| -------------------------------- | ----------------------------------------------------- |
|
|
159
|
+
| `pnpm wu:validate --id WU-XXX` | Validate WU spec |
|
|
160
|
+
| `pnpm wu:preflight --id WU-XXX` | Pre-flight checks before wu:done |
|
|
161
|
+
| `pnpm wu:verify --id WU-XXX` | Verify WU completion (stamp, commit, clean tree) |
|
|
162
|
+
| `pnpm wu:recover --id WU-XXX` | Analyze and fix WU state (ownership-guarded, v3.19.0) |
|
|
163
|
+
| `pnpm wu:repair --id WU-XXX` | Repair WU state issues |
|
|
164
|
+
| `pnpm wu:prune` | Clean stale worktrees |
|
|
165
|
+
| `pnpm wu:cleanup --id WU-XXX` | Cleanup after PR merge (PR-only) |
|
|
166
|
+
| `pnpm wu:deps --id WU-XXX` | Show WU dependencies |
|
|
167
|
+
| `pnpm wu:infer-lane --id WU-XXX` | Infer lane from code paths/description |
|
|
168
|
+
| `pnpm wu:delete --id WU-XXX` | Delete WU spec and cleanup |
|
|
169
|
+
| `pnpm wu:unlock-lane --lane <L>` | Unlock stuck lane |
|
|
170
|
+
| `pnpm wu:proto --lane <Lane>` | Create WU prototype (lightweight draft) |
|
|
171
|
+
|
|
172
|
+
**Ownership guards (v3.19.0, WU-2468):** `wu:block`, `wu:unblock`, `wu:release`, and `wu:recover`
|
|
173
|
+
validate session ownership before state mutations. If the WU belongs to another session, use
|
|
174
|
+
`--override-owner --reason "..."` to override (audited). **AGENTS: NEVER use --override-owner
|
|
175
|
+
without explicit human instruction.**
|
|
172
176
|
|
|
173
177
|
---
|
|
174
178
|
|
|
175
179
|
## Gates & Quality
|
|
176
180
|
|
|
177
|
-
| Command
|
|
178
|
-
|
|
|
179
|
-
| `pnpm gates`
|
|
180
|
-
| `pnpm gates --docs-only`
|
|
181
|
-
| `pnpm format`
|
|
182
|
-
| `pnpm format:check`
|
|
183
|
-
| `pnpm lint`
|
|
184
|
-
| `pnpm typecheck`
|
|
185
|
-
| `pnpm test`
|
|
186
|
-
| `pnpm spec:linter`
|
|
187
|
-
| `pnpm lane:health`
|
|
188
|
-
| `pnpm lane:suggest --output workspace.lanes.yaml`
|
|
189
|
-
| `pnpm lane:status`
|
|
190
|
-
| `pnpm lane:setup`
|
|
191
|
-
| `pnpm lane:validate`
|
|
192
|
-
| `pnpm lane:lock`
|
|
193
|
-
| `pnpm lane:edit --name <L>`
|
|
181
|
+
| Command | Description |
|
|
182
|
+
| ------------------------------------------------------------------ | ----------------------------------------------- |
|
|
183
|
+
| `pnpm gates` | Run all quality gates |
|
|
184
|
+
| `pnpm gates --docs-only` | Run gates for docs changes |
|
|
185
|
+
| `pnpm format` | Format all files (Prettier) |
|
|
186
|
+
| `pnpm format:check` | Check formatting without changes |
|
|
187
|
+
| `pnpm lint` | Run ESLint |
|
|
188
|
+
| `pnpm typecheck` | Run TypeScript type checking |
|
|
189
|
+
| `pnpm test` | Run all tests (Vitest) |
|
|
190
|
+
| `pnpm spec:linter` | Validate WU specs (all) ¹ |
|
|
191
|
+
| `pnpm lane:health` | Check lane config health |
|
|
192
|
+
| `pnpm lane:suggest --output workspace.lanes.yaml` | Generate a workspace lane-definition snippet |
|
|
193
|
+
| `pnpm lane:status` | Show lane lifecycle status |
|
|
194
|
+
| `pnpm lane:setup` | Create/update draft lane config |
|
|
195
|
+
| `pnpm lane:validate` | Validate lane draft artifacts |
|
|
196
|
+
| `pnpm lane:lock` | Lock lane lifecycle for WU create |
|
|
197
|
+
| `pnpm lane:edit --name <L>` | Edit lane definition (rename, wip-limit, paths) |
|
|
198
|
+
| `pnpm gate:co-change --add --name <N> --trigger <G> --require <G>` | Add co-change gate rule |
|
|
199
|
+
| `pnpm gate:co-change --remove --name <N>` | Remove co-change gate rule |
|
|
200
|
+
| `pnpm gate:co-change --edit --name <N> --severity <S>` | Edit co-change gate rule |
|
|
201
|
+
| `pnpm gate:co-change --list` | List all co-change rules (built-in + custom) |
|
|
194
202
|
|
|
195
203
|
¹ **Script aliases:** `spec:linter` and `tasks:validate` are pnpm script aliases
|
|
196
204
|
for `wu:validate --all`. They are not standalone CLI commands.
|
|
197
205
|
|
|
206
|
+
**Conditional gates (v3.19.0, WU-2448):** Define pattern-triggered commands in
|
|
207
|
+
`workspace.yaml > software_delivery.gates.conditional_commands`. Commands with `trigger_patterns`
|
|
208
|
+
only run when matching files change. Supports `error` (blocks), `warn` (logs), and `off` (skip)
|
|
209
|
+
severity levels. See workspace-spec.mdx for schema.
|
|
210
|
+
|
|
198
211
|
**Formatting: always scope to changed files only.**
|
|
199
212
|
Use `pnpm prettier --write <changed-files...>` — never unscoped `pnpm format`.
|
|
200
213
|
Running `pnpm format` reformats every file in the repo, creating hundreds of
|
|
@@ -327,18 +340,18 @@ If the plan exists only in conversation, use `--plan` on `wu:create` to generate
|
|
|
327
340
|
stub in `$LUMENFLOW_HOME/plans/` and automatically set the WU's `plan` field to the
|
|
328
341
|
`lumenflow://plans/` URI. Feature WUs should have a `plan` field; notes do not replace the plan link.
|
|
329
342
|
|
|
330
|
-
| Command
|
|
331
|
-
|
|
|
332
|
-
| `pnpm plan:create --id INIT-XXX --title "..."`
|
|
333
|
-
| `pnpm plan:create --id INIT-XXX --title "..." --from <path>`
|
|
343
|
+
| Command | Description |
|
|
344
|
+
| ----------------------------------------------------------------------------- | ------------------------------------------------------------------- |
|
|
345
|
+
| `pnpm plan:create --id INIT-XXX --title "..."` | Create a repo-native plan file in configured `directories.plansDir` |
|
|
346
|
+
| `pnpm plan:create --id INIT-XXX --title "..." --from <path>` | Import external plan file into repo plansDir |
|
|
334
347
|
| `pnpm plan:edit --id INIT-XXX --section Goal --content "..."` | Edit plan section (auto-resolves file from initiative metadata) |
|
|
335
|
-
| `pnpm plan:edit --id WU-XXX --file my-plan.md --section Goal --content "..."` | Edit plan by explicit filename
|
|
336
|
-
| `pnpm plan:link --id INIT-XXX --plan lumenflow://plans/INIT-XXX-plan.md` | Link plan URI to initiative or WU
|
|
337
|
-
| `pnpm plan:promote --id INIT-XXX` | Promote plan to approved (auto-resolves from initiative metadata)
|
|
338
|
-
| `pnpm plan:promote --id WU-XXX --file my-plan.md` | Promote plan by explicit filename
|
|
339
|
-
| `pnpm initiative:plan --initiative INIT-XXX --plan <path>`
|
|
340
|
-
| `pnpm initiative:plan --initiative INIT-XXX --create`
|
|
341
|
-
| `pnpm initiative:plan --initiative INIT-XXX --create --plan <path>`
|
|
348
|
+
| `pnpm plan:edit --id WU-XXX --file my-plan.md --section Goal --content "..."` | Edit plan by explicit filename |
|
|
349
|
+
| `pnpm plan:link --id INIT-XXX --plan lumenflow://plans/INIT-XXX-plan.md` | Link plan URI to initiative or WU |
|
|
350
|
+
| `pnpm plan:promote --id INIT-XXX` | Promote plan to approved (auto-resolves from initiative metadata) |
|
|
351
|
+
| `pnpm plan:promote --id WU-XXX --file my-plan.md` | Promote plan by explicit filename |
|
|
352
|
+
| `pnpm initiative:plan --initiative INIT-XXX --plan <path>` | Link plan to initiative (auto-imports external files into repo) |
|
|
353
|
+
| `pnpm initiative:plan --initiative INIT-XXX --create` | Create blank plan template and link to initiative |
|
|
354
|
+
| `pnpm initiative:plan --initiative INIT-XXX --create --plan <path>` | Import external plan content into new template and link |
|
|
342
355
|
|
|
343
356
|
### Linking Plans
|
|
344
357
|
|
|
@@ -544,6 +557,8 @@ pnpm gates # Now works
|
|
|
544
557
|
|
|
545
558
|
## Workflow Sequence (Quick Reference)
|
|
546
559
|
|
|
560
|
+
<!-- lumenflow-example: strict -->
|
|
561
|
+
|
|
547
562
|
```bash
|
|
548
563
|
# 0. Check available options (do this before first use of any command)
|
|
549
564
|
pnpm wu:create --help
|
|
@@ -559,6 +574,7 @@ pnpm wu:create --lane "Framework: Core" --title "Add feature" \
|
|
|
559
574
|
|
|
560
575
|
# 2. Claim (creates worktree) -- use the ID from wu:create output
|
|
561
576
|
pnpm wu:claim --id WU-1990 --lane "Framework: Core"
|
|
577
|
+
pnpm wu:brief --id WU-1990 --client <client>
|
|
562
578
|
cd worktrees/framework-core-wu-1990
|
|
563
579
|
|
|
564
580
|
# 2b. Bootstrap (build CLI for dist-backed commands)
|
|
@@ -727,13 +743,13 @@ When `requireRemote: true` (default):
|
|
|
727
743
|
|
|
728
744
|
## Key File Paths
|
|
729
745
|
|
|
730
|
-
| Path
|
|
731
|
-
|
|
|
746
|
+
| Path | Description |
|
|
747
|
+
| -------------------------------------- | -------------------- |
|
|
732
748
|
| `{{DOCS_TASKS_PATH}}/wu/WU-XXX.yaml` | WU specification |
|
|
733
749
|
| `{{DOCS_TASKS_PATH}}/status.md` | Current status board |
|
|
734
750
|
| `{{DOCS_TASKS_PATH}}/backlog.md` | Backlog summary |
|
|
735
|
-
| `.lumenflow/stamps/WU-XXX.done`
|
|
736
|
-
| `worktrees/<lane>-wu-xxx/`
|
|
751
|
+
| `.lumenflow/stamps/WU-XXX.done` | Completion stamp |
|
|
752
|
+
| `worktrees/<lane>-wu-xxx/` | Worktree directory |
|
|
737
753
|
|
|
738
754
|
---
|
|
739
755
|
|
|
@@ -772,6 +788,7 @@ For cloud agents that cannot use local worktrees:
|
|
|
772
788
|
# 1. Claim in cloud mode
|
|
773
789
|
pnpm wu:claim --id WU-XXX --lane "<Lane>" --cloud
|
|
774
790
|
# Or: LUMENFLOW_CLOUD=1 pnpm wu:claim --id WU-XXX --lane "<Lane>"
|
|
791
|
+
pnpm wu:brief --id WU-XXX --client <client>
|
|
775
792
|
|
|
776
793
|
# 2. Work on lane branch, push commits
|
|
777
794
|
|
|
@@ -835,4 +852,4 @@ For a complete picture of how all WU commands, memory tools, and orchestration t
|
|
|
835
852
|
- **[Failure-Mode Runbook](../../lumenflow-agent-capsule.md)** -- Concrete remediation for main-behind-origin, partial-claim state, spawn-provenance enforcement, and wu:recover usage
|
|
836
853
|
- **[Troubleshooting wu:done](./troubleshooting-wu-done.md)** -- Most common agent mistake (two-step wu:prep + wu:done workflow)
|
|
837
854
|
- **[First WU Mistakes](./first-wu-mistakes.md)** -- Common first-time pitfalls and how to avoid them
|
|
838
|
-
- **[WU Sizing Guide](
|
|
855
|
+
- **[WU Sizing Guide](./wu-sizing-guide.md)** -- Context safety triggers, complexity assessment, and session strategies
|