@lumoai/cli 1.40.0 → 1.42.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/assets/skill/SKILL.md +47 -41
- package/assets/skill/references/criteria.md +97 -252
- package/assets/skill/references/doc-editing.md +146 -0
- package/assets/skill/references/docs.md +49 -278
- package/assets/skill/references/memory.md +57 -7
- package/assets/skill/references/onboarding.md +4 -4
- package/assets/skill/references/sessions.md +86 -95
- package/assets/skill/references/task-context.md +65 -149
- package/assets/skill/references/task-deps.md +113 -0
- package/assets/skill/references/tasks.md +2 -133
- package/assets/skill/references/verify.md +121 -201
- package/assets/skill/references/worktree.md +21 -36
- package/dist/cli/src/commands/memory-fold.js +76 -0
- package/dist/cli/src/commands/session-attach.js +29 -0
- package/dist/cli/src/index.js +6 -0
- package/dist/cli/src/lib/apply-sync.js +2 -0
- package/dist/cli/src/lib/hook-runner.js +28 -0
- package/dist/cli/src/lib/memory-auto.js +114 -0
- package/dist/cli/src/lib/sync-throttle.js +71 -0
- package/package.json +1 -1
package/assets/skill/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: lumo
|
|
3
|
-
description: 'Use the
|
|
3
|
+
description: 'Use when the user mentions a Lumo task id (LUM-N, or any team prefix like SPEC-12) or the `lumo` CLI, in any language; is starting, resuming, or about to claim completion of a task; asks what to work on next; or works with any Lumo resource — task context, sessions, acceptance criteria, machine verification, tasks, projects, milestones, sprints, docs, artifacts, Figma links, dependencies, team memory, or worktrees. Key triggers: "LUM-", "lumo", "task context", "session attach", "verify", "task status", "acceptance criteria", "what should I work on", "resume task".'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
## Prerequisites
|
|
@@ -17,6 +17,8 @@ which lumo && lumo whoami
|
|
|
17
17
|
|
|
18
18
|
## How this skill is organized
|
|
19
19
|
|
|
20
|
+
**Starting, resuming, or finishing work on a task? Read [Core workflow](#core-workflow) at the bottom first** — it's the happy path (attach → context → criteria → work → verify) and the recurring traps. The catalog is a lookup table, not the starting point.
|
|
21
|
+
|
|
20
22
|
The command catalog below is a **map**: it lists every command grouped by domain with a one-line summary. **Detailed flags, examples, output formats, and "when to suggest" guidance live in the `references/` files** — when a user request lands in a domain, **Read the matching reference file before composing the command**. Don't run a command from memory if its flags/edge-cases matter; open the reference first.
|
|
21
23
|
|
|
22
24
|
| Domain | Read this reference |
|
|
@@ -24,12 +26,14 @@ The command catalog below is a **map**: it lists every command grouped by domain
|
|
|
24
26
|
| `setup`, `auth login/logout`, `whoami`, `update` | [references/onboarding.md](references/onboarding.md) |
|
|
25
27
|
| `task context`, retrieval (`slack/web/figma context`, `comments list`, `pr show`) | [references/task-context.md](references/task-context.md) |
|
|
26
28
|
| `task create/update/list/show/comment`, `next` | [references/tasks.md](references/tasks.md) |
|
|
29
|
+
| `task deps add/list/confirm/dismiss/rm` (dependency edges) | [references/task-deps.md](references/task-deps.md) |
|
|
27
30
|
| `task artifact*`, `task figma*` | [references/artifacts-figma.md](references/artifacts-figma.md) |
|
|
28
31
|
| `task criteria set/list`, drafting the acceptance contract | [references/criteria.md](references/criteria.md) |
|
|
29
32
|
| `verify`, `task status` — machine verification loop, claim-done flow, self-check/resume | [references/verify.md](references/verify.md) |
|
|
30
33
|
| `cost` — per-operation (per-tool) token cost read-out; `task lineage` Top-5 | [references/task-context.md](references/task-context.md) |
|
|
31
34
|
| `project list`, `milestone*` | [references/milestones.md](references/milestones.md) |
|
|
32
|
-
| `doc
|
|
35
|
+
| `doc create/update/list/move/bind/share/import` (CRUD) | [references/docs.md](references/docs.md) |
|
|
36
|
+
| `doc show --raw/--section`, `doc patch/append/diff/rebuild-source` (editing live docs) | [references/doc-editing.md](references/doc-editing.md) |
|
|
33
37
|
| `sprint*` | [references/sprints.md](references/sprints.md) |
|
|
34
38
|
| `task/project memory`, `memory promote/rm` | [references/memory.md](references/memory.md) |
|
|
35
39
|
| `session attach/status`, git-suggest on start, Layer-2 review | [references/sessions.md](references/sessions.md) |
|
|
@@ -52,7 +56,7 @@ The command catalog below is a **map**: it lists every command grouped by domain
|
|
|
52
56
|
- `lumo task figma context <id> <linkId>` — Figma link metadata (v1)
|
|
53
57
|
- `lumo task comments list <id>` — comment thread, capped to the output budget (`--full` prints every comment; read-only; ≠ `task comment`)
|
|
54
58
|
- `lumo task pr show <id> <number>` — synced PR metadata (v1)
|
|
55
|
-
- `lumo task lineage <id>` —
|
|
59
|
+
- `lumo task lineage <id>` — read-only causal-trail audit: fragments that fed the task + each one's disclosure tag/outcome, the run's token/loop cost, a disclosure-funnel summary, and a Top-5 "operations by token cost"; `--signal` appends workspace-level usage signal-health (see [task-context.md](references/task-context.md))
|
|
56
60
|
|
|
57
61
|
**Tasks** — see [tasks.md](references/tasks.md)
|
|
58
62
|
|
|
@@ -63,30 +67,30 @@ The command catalog below is a **map**: it lists every command grouped by domain
|
|
|
63
67
|
- `lumo task show <id>` — print one task's detail
|
|
64
68
|
- `lumo task comment <id> <body>` — leave a comment
|
|
65
69
|
|
|
66
|
-
**Task dependencies**
|
|
70
|
+
**Task dependencies** — see [task-deps.md](references/task-deps.md)
|
|
67
71
|
|
|
68
|
-
- `lumo task deps list <id>` — list dependency edges
|
|
69
|
-
- `lumo task deps add <id> --blocked-by <LUM-N>` — declare a manual hard dependency (
|
|
70
|
-
- `lumo task deps confirm <id> <edge> [--reverse]` — confirm a detected candidate
|
|
72
|
+
- `lumo task deps list <id>` — list dependency edges both directions, grouped CONFIRMED / SUGGESTED / DISMISSED (each row: short edge id + other task + detected evidence)
|
|
73
|
+
- `lumo task deps add <id> --blocked-by <LUM-N>` — declare a manual hard dependency (CONFIRMED)
|
|
74
|
+
- `lumo task deps confirm <id> <edge> [--reverse]` — confirm a detected candidate (`--reverse` flips direction)
|
|
71
75
|
- `lumo task deps dismiss <id> <edge>` — dismiss a candidate (never re-suggested)
|
|
72
76
|
- `lumo task deps rm <id> <edge> --yes` — delete an edge (refuses without `--yes`)
|
|
73
|
-
-
|
|
77
|
+
- `<edge>` = short edge-id prefix (≥6 chars) or the other task's identifier; ambiguous/unknown selectors list candidates and exit 1. See [tasks.md](references/tasks.md)
|
|
74
78
|
|
|
75
79
|
**Acceptance criteria (contract)** — see [criteria.md](references/criteria.md)
|
|
76
80
|
|
|
77
|
-
- `lumo task criteria set <task> --file <criteria.json> [--human] [--cause <tag>]` — submit the whole contract
|
|
81
|
+
- `lumo task criteria set <task> --file <criteria.json> [--human] [--cause <tag>]` — submit the whole contract (full-group replace). Default = agent draft (AGENT_DRAFT, editable until DONE); `--human` = a HUMAN_EDIT revision transcribed from the conversation; `--cause` annotates why the contract drifted. See [criteria.md](references/criteria.md)
|
|
78
82
|
- `lumo task criteria list <task>` — print the contract (id, MACHINE/HUMAN, provenance source@round, checkpointer)
|
|
79
83
|
|
|
80
84
|
**Verification (machine acceptance loop)** — see [verify.md](references/verify.md)
|
|
81
85
|
|
|
82
|
-
- `lumo verify [task] [--timeout <seconds>]` — run every MACHINE criterion's checkpointer locally
|
|
83
|
-
- `lumo task status [task] [--json]` — read-only acceptance self-check (no LLM
|
|
84
|
-
- `lumo verdict [task] --pass | --fail` — acceptance verdicts
|
|
85
|
-
- `lumo crossing explain <id> --note "<text>"` — append an agent self-explanation ("申辩") to a boundary crossing
|
|
86
|
+
- `lumo verify [task] [--timeout <seconds>]` — run every MACHINE criterion's checkpointer locally and report a structured PASS/FAIL verdict per criterion. Round cap 3: all-pass → task to IN_REVIEW (agent stops); round-3 fail → escalate to human. **Run this before claiming a task is done.**
|
|
87
|
+
- `lumo task status [task] [--json]` — read-only acceptance self-check (no LLM): the contract with each criterion's latest verdict, verification history/round, last failure reasons, `nextActions` (the unmet criteria), and any OPEN boundary crossings (fails closed — `null`/`⚠` means "could not confirm", not safe). **Run it first when resuming a task or after a round was rejected.**
|
|
88
|
+
- `lumo verdict [task] --pass | --fail` — acceptance verdicts. `--pass` deep-links to the human verdict bar (records nothing). `--fail --reason <enum> …` records an AGENT send-back → IN_PROGRESS. **An unresolved send-back blocks the DONE transition with 409.**
|
|
89
|
+
- `lumo crossing explain <id> --note "<text>"` — append an agent self-explanation ("申辩") to a boundary crossing; append-only, **never clears the crossing or unblocks Done** (disposition stays web + human-only). A review aid, not a self-clear.
|
|
86
90
|
|
|
87
91
|
**Cost (per-operation token read-out)** — see [task-context.md](references/task-context.md)
|
|
88
92
|
|
|
89
|
-
- `lumo cost [--task <id>|--session <id>|--since <date>] [--by tool|model|member|session] [--json]` — per-operation
|
|
93
|
+
- `lumo cost [--task <id>|--session <id>|--since <date>] [--by tool|model|member|session] [--json]` — per-operation token cost read-out, attributing each model step's token delta to the tool(s) it ran. Scope is mutually exclusive (default = workspace last-30-days). For the per-task Top-5 inline, see `lumo task lineage`.
|
|
90
94
|
|
|
91
95
|
**Artifacts & Figma** — see [artifacts-figma.md](references/artifacts-figma.md)
|
|
92
96
|
|
|
@@ -102,18 +106,15 @@ The command catalog below is a **map**: it lists every command grouped by domain
|
|
|
102
106
|
- `lumo milestone summary [--retry]` — AI retro
|
|
103
107
|
- `lumo milestone reorder/move` — manual ordering
|
|
104
108
|
|
|
105
|
-
**Documents** —
|
|
106
|
-
|
|
107
|
-
- `lumo doc create/update/show/list/delete` — document CRUD; `doc
|
|
108
|
-
- `lumo doc show <doc> --raw` — print the byte-identical markdown source
|
|
109
|
-
- `lumo doc
|
|
110
|
-
- `lumo doc
|
|
111
|
-
- `lumo doc
|
|
112
|
-
- `lumo doc
|
|
113
|
-
- `lumo doc
|
|
114
|
-
- `lumo doc move` — reparent under a parent / to root
|
|
115
|
-
- `lumo doc bind/unbind <doc> <task>` — task linkage
|
|
116
|
-
- `lumo doc share/unshare/share-list` — member sharing
|
|
109
|
+
**Documents** — CRUD/sharing → [docs.md](references/docs.md); **editing live docs** (raw/section/patch/append/diff/rebuild) → [doc-editing.md](references/doc-editing.md)
|
|
110
|
+
|
|
111
|
+
- `lumo doc create/update/show/list/delete` — document CRUD; `doc update` takes `--if-revision <n>` (mismatch → 409, re-read and retry) and is structure-guarded (drops to tables/rows/headings → 422 unless `--allow-shrink`)
|
|
112
|
+
- `lumo doc show <doc> --raw` / `--section "<heading>"` — print the byte-identical markdown source (the only legal edit base; never the lossy HTML→md render), whole or one heading-addressed slice
|
|
113
|
+
- `lumo doc patch <doc> --section "<heading>" …` — replace ONLY that section; everything else untouched; concurrent edits 409; structure-guarded
|
|
114
|
+
- `lumo doc append <doc> [--section "<heading>"] …` — pure insertion at section/doc end — the safest write for logs/ledgers
|
|
115
|
+
- `lumo doc diff <doc> --file <local.md>` — compare server markdown source vs a local file (guards stale uploads)
|
|
116
|
+
- `lumo doc rebuild-source <doc>` — regenerate `sourceMarkdown` from the HTML body (recovery when raw/section/patch errors "no stored source")
|
|
117
|
+
- `lumo doc move/bind/unbind/share/unshare/share-list` — reparent · task linkage · member sharing
|
|
117
118
|
- `lumo doc import-gdoc` / `lumo doc sync` — Google Doc import & re-sync
|
|
118
119
|
|
|
119
120
|
**Sprints** — see [sprints.md](references/sprints.md)
|
|
@@ -128,17 +129,15 @@ The command catalog below is a **map**: it lists every command grouped by domain
|
|
|
128
129
|
- `lumo task memory add/list` · `lumo project memory add/list` — record/curate Memory (TASK vs PROJECT)
|
|
129
130
|
- `lumo memory show <id>` — show one memory's full card (category + content) by id (progressive disclosure from a one-line index entry)
|
|
130
131
|
- `lumo memory promote <id>` / `lumo memory rm <id> --yes` — TASK→PROJECT / delete
|
|
131
|
-
- `lumo memory sync [--
|
|
132
|
-
- `lumo memory push [--
|
|
132
|
+
- `lumo memory sync [--dry-run] [--clean]` — downsync team memory into the local Claude Code store (`team/<id>.md` + a managed MEMORY.md block); only touches files it owns
|
|
133
|
+
- `lumo memory push [--dry-run]` — upsync locally-authored memories from `<memory-dir>/outbox/*.json` to the team
|
|
134
|
+
- `lumo memory fold [project-ref] --dry-run` — read-only PREVIEW of the autonomous topic-fold pass (folding runs via a daily cron; no manual apply, no `unfold`). See [memory.md](references/memory.md)
|
|
133
135
|
|
|
134
136
|
**Sessions** — see [sessions.md](references/sessions.md)
|
|
135
137
|
|
|
136
138
|
- `lumo session attach <id>` — bind this session to a task (then run `task context`). **Lifetime lock**: re-attaching to the same task is a no-op; attaching to a _different_ task is refused with 409 — start a new Claude Code session instead. No `--force`, no `session detach`.
|
|
137
139
|
- `lumo session status` — show current binding
|
|
138
|
-
- End-of-session housekeeping is fully automatic
|
|
139
|
-
- **Layer-1 memory curation** — an LLM judge reviews the memories the task's sessions recorded and soft-invalidates only the clearly-wrong / self-contradictory ones (invalidate-not-delete; uncertain memories are left untouched). Promotion to project scope stays with the Layer-2 flow.
|
|
140
|
-
- **Fragment-usage audit** (LUM-314) — an LLM judge votes which injected context fragments were actually used: confidently-used edges → `used=true`, confidently-unused → `used=false`, genuinely-uncertain stay NULL.
|
|
141
|
-
- **Blocked-tag automation** (LUM-544 §3) — if a session crosses the same-tool failure threshold (≥3) the bound task is auto-tagged `blocked` (idempotent, attributed to the triggering session + model); the next observable progress on that task auto-removes the tag. Human-applied `blocked` tags are never auto-removed.
|
|
140
|
+
- End-of-session housekeeping is fully automatic (no command — removed in LUM-544). On DONE the server runs three best-effort silent passes: Layer-1 memory curation, fragment-usage audit, and blocked-tag automation. See [sessions.md](references/sessions.md)
|
|
142
141
|
- Git-suggest at session start (suggests `session attach`, never auto-binds) + Layer-2 project-memory review — see the reference
|
|
143
142
|
|
|
144
143
|
**Worktrees (local dev tooling)** — see [worktree.md](references/worktree.md)
|
|
@@ -164,15 +163,22 @@ Measured from real agent sessions (LUM-392) — don't guess these:
|
|
|
164
163
|
|
|
165
164
|
## Core workflow
|
|
166
165
|
|
|
167
|
-
|
|
166
|
+
**Starting fresh** — user says "help me with LUM-42":
|
|
167
|
+
|
|
168
|
+
1. `lumo session attach LUM-42` — bind this session (the binding is a lifetime lock; one session = one task)
|
|
169
|
+
2. `lumo task context LUM-42` — load background; review unresolved items, PR-review todos, the description
|
|
170
|
+
3. **If the task has no acceptance criteria** (context shows the draft reminder, not a contract): draft outcome-level criteria sized to the task (3–7 for a typical multi-file task; 1–2 for a micro task) and submit them with `lumo task criteria set` **before writing the first line of code** — see [criteria.md](references/criteria.md)
|
|
171
|
+
4. Do the work
|
|
172
|
+
5. **Before claiming done: `lumo verify`** — the machine half of the acceptance loop. Fix failures and re-run (round cap 3). All-pass → task moves to IN_REVIEW and you stop. See [verify.md](references/verify.md)
|
|
173
|
+
|
|
174
|
+
**Resuming / after a send-back** — `lumo task status` **before** re-reading code or planning. It tells you where the loop stands (round, what passed, what's unmet and why, any REVIEW_ADDED criteria from review) so you don't redo finished work or miss why it bounced. A send-back means **fix in place / amend the contract — do not spin off a new task.** See [verify.md](references/verify.md)
|
|
168
175
|
|
|
169
|
-
|
|
170
|
-
2. `lumo task context LUM-42` — load background
|
|
171
|
-
3. Review unresolved items, PR-review todos, and the task description
|
|
172
|
-
4. **If the task has no acceptance criteria** (context shows the draft reminder instead of a contract): draft outcome-level criteria sized to the task (3–7 for a typical multi-file task; 1–2 for a micro task) and submit them with `lumo task criteria set` **before writing the first line of code** — see [criteria.md](references/criteria.md) for the drafting guide
|
|
173
|
-
5. Begin working on the task
|
|
174
|
-
6. **Before claiming the work is done: run `lumo verify`** — the machine half of the acceptance loop. Fix failures and re-run (round cap 3). On all-pass the task moves to IN_REVIEW and you stop; never set DONE yourself after a verify loop — that adjudication is human-only. See [verify.md](references/verify.md)
|
|
176
|
+
**Git-suggest at start:** when unbound, session-start may infer the task from the git branch / recent commits (any team prefix, e.g. `SPEC-12`) and print `Detected LUM-N … Run lumo session attach LUM-N to bind.` — **without** binding. Confirm it's right, then attach yourself. See [sessions.md](references/sessions.md)
|
|
175
177
|
|
|
176
|
-
|
|
178
|
+
### Golden rules (most-violated — LUM-392)
|
|
177
179
|
|
|
178
|
-
|
|
180
|
+
- **Attach + draft criteria before coding.** Skipping attach triggers `SESSION_BINDING_MISSING`; skipping criteria means verification has nothing to check.
|
|
181
|
+
- **Evidence before "done".** Never claim done from reading code — run `lumo verify`. While a PR is open, the task is IN_REVIEW, not DONE.
|
|
182
|
+
- **Never set DONE yourself after a verify loop** — that adjudication is human-only. An unresolved send-back blocks the DONE transition with 409.
|
|
183
|
+
- **Status updates are one direct call** (`task update --status done`), not a step-by-step walk through `in_progress → in_review → done`.
|
|
184
|
+
- **Read the reference before composing a command** whose flags/edge-cases matter — don't run from memory.
|