lazyclaude-ai 0.1.17 → 0.2.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.
Files changed (36) hide show
  1. package/CHANGELOG.md +23 -1
  2. package/README.md +58 -19
  3. package/README_ko-KR.md +59 -19
  4. package/RELEASE_CHECKLIST.md +30 -10
  5. package/bin/lazyclaude-ai.js +11 -21
  6. package/cover.png +0 -0
  7. package/docs/agents.md +16 -0
  8. package/docs/hooks.md +17 -3
  9. package/docs/migration.md +32 -3
  10. package/docs/workflow-compatibility-audit.md +41 -5
  11. package/package.json +1 -2
  12. package/plugins/lazyclaude/.claude-plugin/plugin.json +1 -1
  13. package/plugins/lazyclaude/agents/librarian-researcher.md +4 -0
  14. package/plugins/lazyclaude/agents/oracle-verifier.md +4 -0
  15. package/plugins/lazyclaude/agents/qa-runner.md +4 -0
  16. package/plugins/lazyclaude/agents/quality-reviewer.md +5 -0
  17. package/plugins/lazyclaude/bin/lazyclaude-hook.js +8 -1
  18. package/plugins/lazyclaude/bin/lazyclaude-hud.js +11 -18
  19. package/plugins/lazyclaude/commands/review-work.md +35 -0
  20. package/plugins/lazyclaude/commands/start-work.md +15 -0
  21. package/plugins/lazyclaude/commands/ultragoal.md +30 -0
  22. package/plugins/lazyclaude/commands/ulw-loop.md +16 -0
  23. package/plugins/lazyclaude/commands/ulw-plan.md +13 -0
  24. package/plugins/lazyclaude/lib/hud-accent-palette.mjs +26 -0
  25. package/plugins/lazyclaude/lib/ultragoal/cli.mjs +266 -0
  26. package/plugins/lazyclaude/lib/ultragoal/ledger.mjs +12 -0
  27. package/plugins/lazyclaude/lib/ultragoal/paths.mjs +7 -0
  28. package/plugins/lazyclaude/lib/ultragoal/state.mjs +52 -0
  29. package/plugins/lazyclaude/skills/review-work/SKILL.md +255 -38
  30. package/plugins/lazyclaude/skills/start-work/SKILL.md +32 -7
  31. package/plugins/lazyclaude/skills/ultragoal/SKILL.md +181 -59
  32. package/plugins/lazyclaude/skills/ulw-loop/SKILL.md +27 -9
  33. package/plugins/lazyclaude/skills/ulw-plan/SKILL.md +26 -8
  34. package/scripts/doctor.mjs +14 -1
  35. package/scripts/qa-portable-install.sh +16 -3
  36. package/REFERENCE.md +0 -21
package/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.0 - 2026-06-03
4
+
5
+ - Align the package and Claude plugin manifests to `lazyclaude-ai@0.2.0` for
6
+ the workflow parity release candidate.
7
+ - Add the `review-work` 5-lane review route and document its goal/constraint
8
+ verification, hands-on QA execution, code quality, security, and local-first
9
+ context mining lanes.
10
+ - Add the `ultragoal` CLI/runtime surface for durable criteria, evidence,
11
+ checkpoints, steering, and review blocker records under `.omo/ultragoal/`.
12
+ - Keep the release boundary explicit: this version is prepared for verification
13
+ and publication approval, but no npm publish or marketplace publication is claimed
14
+ here.
15
+
16
+ ## 0.1.18 - 2026-06-02
17
+
18
+ - Shorten the HUD into compact HUD bars with a three-cell context gauge and
19
+ two-cell rate-limit gauges for tighter Claude Code status-line space.
20
+ - Replace muted installer choices with vivid HUD color choices and shared
21
+ mini-HUD previews for all ten brand accent themes.
22
+ - Apply the selected accent as a broader brand accent across separators,
23
+ labels, brackets, reset text, and git metadata.
24
+
3
25
  ## 0.1.17 - 2026-06-02
4
26
 
5
27
  - Render a dense bracketed context bar in the HUD, for example
@@ -65,7 +87,7 @@
65
87
  checks without requiring install state.
66
88
  - Align package, plugin, README, HUD examples, release checklist, and cover image
67
89
  generation to `lazyclaude-ai@0.1.11`.
68
- - Refresh source-origin-free README, reference metadata, and workflow
90
+ - Refresh README, reference metadata, and workflow
69
91
  compatibility audit wording.
70
92
  - Deepen trigger-specific hook routing for `$ulw-plan`, `$ulw-loop`, and
71
93
  `$start-work`, with safer post-edit diagnostic guidance.
package/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
  </p>
10
10
  <p align="center">
11
11
  <img src="https://img.shields.io/badge/npm-lazyclaude--ai-cb3837" />
12
- <img src="https://img.shields.io/badge/version-0.1.17-2ea44f" />
12
+ <img src="https://img.shields.io/badge/version-0.2.0-2ea44f" />
13
13
  <img src="https://img.shields.io/badge/Claude%20Code-plugin-blueviolet" />
14
14
  <img src="https://img.shields.io/badge/license-MIT-blue" />
15
15
  </p>
@@ -22,12 +22,12 @@
22
22
  > `lazyclaude@lazyclaude-ai`, so normal `claude` launches can load the
23
23
  > LazyClaude skills and hooks without a long `--plugin-dir` command.
24
24
 
25
- This checkout is prepared as `lazyclaude-ai@0.1.17` for personal install
26
- convenience. The repo can remain private and quiet; publishing to npm here does
25
+ This checkout is prepared as `lazyclaude-ai@0.2.0` for personal install
26
+ convenience. The repo can remain quiet; preparing npm package metadata here does
27
27
  not imply public repo promotion, marketplace publication, or advertisement.
28
- Future package releases still require explicit user approval.
29
- The v0.1.17 release materials are source-origin-free and describe LazyClaude in
30
- its own terms.
28
+ Future package releases still require explicit user approval. The v0.2.0
29
+ workflow parity materials describe LazyClaude in its own terms and do not claim
30
+ that npm publication has completed.
31
31
 
32
32
  ## Features
33
33
 
@@ -35,9 +35,16 @@ its own terms.
35
35
  - **ULW prompt hooks** - type `ulw`, `ultrawork`, `$ulw-plan`, or `$ulw-loop`
36
36
  - **Deep interview mode** - type `/deep-interview` or `$deep-interview` to
37
37
  turn broad intent into a spec before planning or implementation
38
+ - **v0.2.0 workflow parity** - adds `review-work` 5-lane review discipline and
39
+ ultragoal runtime docs without claiming a package publication has completed
40
+ - **5-lane review** - `/review-work` checks goal/constraint verification,
41
+ hands-on QA execution, code quality, security, and local-first context mining
38
42
  - **Native goal guidance** - ULW context points Claude toward `/goal` or
39
43
  model-facing `get_goal`, `create_goal`, and delayed `update_goal` when those
40
44
  surfaces exist, and gives a clear fallback when goal tools are unavailable
45
+ - **Ultragoal CLI/state** - `plugins/lazyclaude/lib/ultragoal/` records durable
46
+ criteria, evidence, checkpoints, steering, and review blockers under
47
+ `.omo/ultragoal/`
41
48
  - **Dynamic workflow/worktree guidance** - large or parallel tasks are steered
42
49
  toward Claude Code Dynamic workflow orchestration and Dynamic worktree
43
50
  isolation
@@ -53,8 +60,9 @@ its own terms.
53
60
  - **MCP and LSP helpers** - plugin-local stdio MCP plus TypeScript-family LSP doctor
54
61
  - **LazyClaude HUD** - npm install configures a compact Claude Code statusLine
55
62
  based on `pretty-claude-hud`, branded as `[💤LAZYCLAUDE vX.Y.Z]`, with
56
- install-time color selection, live previews, dense context bars, visible
57
- low-usage rate-limit bars, and spaced reset countdowns
63
+ install-time vivid color selection, live mini-HUD previews, compact context
64
+ bars, visible low-usage rate-limit bars, broader brand accent coverage, and
65
+ spaced reset countdowns
58
66
  - **Safe uninstall** - removes only LazyClaude-managed state
59
67
 
60
68
  ## Quick Start
@@ -66,8 +74,8 @@ npx --yes lazyclaude-ai install
66
74
  ```
67
75
 
68
76
  During an interactive `npx` install, LazyClaude shows every HUD brand color as
69
- a live terminal preview and writes the selected accent into the managed Claude
70
- `statusLine` command. Animated installs also use colored setup, plugin,
77
+ a vivid live terminal preview and writes the selected accent into the managed
78
+ Claude `statusLine` command. Animated installs also use colored setup, plugin,
71
79
  marketplace, registry, and cache labels so progress is easier to scan.
72
80
  Noninteractive installs keep deterministic plain `INSTALL_STEP` lines.
73
81
 
@@ -80,7 +88,7 @@ install command works:
80
88
 
81
89
  ```bash
82
90
  cd /tmp
83
- npx --yes lazyclaude-ai@0.1.17 install
91
+ npx --yes lazyclaude-ai@0.2.0 install
84
92
  ```
85
93
 
86
94
  Validate the installed plugin:
@@ -93,14 +101,16 @@ The installer also sets Claude Code's `statusLine` command to the packaged
93
101
  LazyClaude HUD. A typical no-color render starts like:
94
102
 
95
103
  ```text
96
- [💤LAZYCLAUDE v0.1.17] | O4.8 │ ctx [▉░░░░░░░░░] 9%/1000k │ 5h [▏░░░] 4% ↻2h15m │ 1w [█▍░░] 35% ↻3d6h │ git main +3 ✓
104
+ [💤LAZYCLAUDE v0.2.0] | O4.8 │ ctx [▎░░] 9%/1000k │ 5h [▏░] 4% ↻2h15m │ 1w [▊░] 35% ↻3d6h │ git main +3 ✓
97
105
  ```
98
106
 
99
107
  The `↻` suffix is a compact rate-limit reset countdown. It is separated from
100
108
  the percentage for readability, and low non-zero percentages still get a
101
- partial bar glyph instead of looking empty. Claude Code reports reset windows
102
- as epoch seconds, and LazyClaude also accepts ISO reset timestamps for
103
- compatibility with test fixtures and older status-line helpers.
109
+ partial bar glyph instead of looking empty. The context bar uses three cells
110
+ and the rate-limit bars use two cells so the HUD stays tight in Claude Code's
111
+ status-line space. Claude Code reports reset windows as epoch seconds, and
112
+ LazyClaude also accepts ISO reset timestamps for compatibility with test
113
+ fixtures and older status-line helpers.
104
114
 
105
115
  To override the accent without the picker, set `LAZYCLAUDE_HUD_ACCENT` to one
106
116
  of `cyan`, `blue`, `teal`, `green`, `lavender`, `rose`, `gold`, `orange`,
@@ -164,6 +174,10 @@ $ulw-loop <what you want executed with evidence>
164
174
  /ulw-loop <what you want executed with evidence>
165
175
  $deep-interview <what needs clarification>
166
176
  /deep-interview <what needs clarification>
177
+ $review-work <scope to review>
178
+ /review-work <scope to review>
179
+ $ultragoal <goal operation>
180
+ /ultragoal <goal operation>
167
181
  $start-work plans/lazyclaude-retrofit.md
168
182
  /start-work plans/lazyclaude-retrofit.md
169
183
  ```
@@ -192,6 +206,30 @@ Code's available orchestration surfaces: when `Workflow` is exposed, call the
192
206
  `EnterWorktree`. If only the CLI surface is available for a fresh isolated lane,
193
207
  use `claude --worktree <short-name> --tmux`.
194
208
 
209
+ For v0.2.0 workflow parity, `review-work` is the dedicated review route. It is a
210
+ 5-lane review: goal/constraint verification, hands-on QA execution, code
211
+ quality, security, and local-first context mining. The lanes bind to
212
+ `oracle-verifier`, `qa-runner`, `quality-reviewer`, and `librarian-researcher`,
213
+ then aggregate evidence into a PASS, FAIL, or NEEDS-CONTEXT verdict. Manual-QA
214
+ channels must write artifacts, and every tmux session, server, port, browser
215
+ tab, or temp directory needs a cleanup receipt before review completion.
216
+
217
+ `ultragoal` is the durable local state route for long goals. The runtime lives
218
+ in `plugins/lazyclaude/lib/ultragoal/`, stores state in `.omo/ultragoal/`, and
219
+ keeps current docs/test reads authoritative when stale state disagrees with the
220
+ checkout. Common commands are:
221
+
222
+ ```bash
223
+ lazyclaude ultragoal create-goals --brief "<brief>" --json
224
+ lazyclaude ultragoal record-evidence --criterion <id> --status pass --json '{"artifact":"...","cleanup":"..."}'
225
+ lazyclaude ultragoal checkpoint --status active --note "<progress>" --json
226
+ lazyclaude ultragoal steer --kind scope --note "<what changed and why>" --json
227
+ ```
228
+
229
+ `record-review-blockers` captures unresolved review findings. Malformed JSON,
230
+ unknown criteria, corrupt state, and invalid steering kinds return controlled
231
+ errors instead of silently reporting success.
232
+
195
233
  Plain `ulw` is hook context activation. Claude may still show it as hook
196
234
  guidance rather than a separate Skill tool invocation in history. Use visible
197
235
  namespaced commands when you want explicit LazyClaude skill activation:
@@ -200,6 +238,8 @@ namespaced commands when you want explicit LazyClaude skill activation:
200
238
  /lazyclaude:ulw-loop <what you want executed with evidence>
201
239
  /lazyclaude:ulw-plan <what you want planned>
202
240
  /lazyclaude:deep-interview <what needs clarification>
241
+ /lazyclaude:review-work <scope to review>
242
+ /lazyclaude:ultragoal <goal operation>
203
243
  /lazyclaude:start-work plans/lazyclaude-retrofit.md
204
244
  ```
205
245
 
@@ -290,7 +330,6 @@ version probe evidence instead of failing mysteriously.
290
330
  | MCP | `plugins/lazyclaude/.mcp.json` |
291
331
  | LSP | `plugins/lazyclaude/.lsp.json` |
292
332
 
293
- See `README_ko-KR.md` for Korean setup notes, `REFERENCE.md` for the pinned
294
- private snapshot metadata, `docs/migration.md` for the reference-to-Claude migration table,
295
- `docs/workflow-compatibility-audit.md` for the current compatibility audit, and `CHANGELOG.md`
296
- for release notes.
333
+ See `README_ko-KR.md` for Korean setup notes, `docs/migration.md` for the
334
+ workflow migration table, `docs/workflow-compatibility-audit.md` for the current
335
+ compatibility audit, and `CHANGELOG.md` for release notes.
package/README_ko-KR.md CHANGED
@@ -9,7 +9,7 @@
9
9
  </p>
10
10
  <p align="center">
11
11
  <img src="https://img.shields.io/badge/npm-lazyclaude--ai-cb3837" />
12
- <img src="https://img.shields.io/badge/version-0.1.17-2ea44f" />
12
+ <img src="https://img.shields.io/badge/version-0.2.0-2ea44f" />
13
13
  <img src="https://img.shields.io/badge/Claude%20Code-plugin-blueviolet" />
14
14
  <img src="https://img.shields.io/badge/license-MIT-blue" />
15
15
  </p>
@@ -26,13 +26,12 @@
26
26
  > 설치되므로, 매번 긴 `--plugin-dir` 없이 일반 `claude` 실행에서
27
27
  > LazyClaude skill과 hook을 불러올 수 있습니다.
28
28
 
29
- 현재 checkout은 `lazyclaude-ai@0.1.17` 배포용으로 준비되어 있습니다. 목적은 다른 PC에서도
30
- 빠르게 설치하기 위한 개인용 배포물입니다. 저장소는 비공개 저장소로
31
- 유지할 있고, npm 배포가 홍보, 공개 저장소 운영, Claude marketplace
32
- 등록을 의미하지는 않습니다. 새 버전 배포는 항상 별도의 명시적 승인 후에
33
- 진행합니다.
34
- v0.1.17 release material은 source-origin-free 상태이며 LazyClaude 자체의
35
- 표현으로 정리되어 있습니다.
29
+ 현재 checkout은 `lazyclaude-ai@0.2.0` 배포 준비용으로 정리되어 있습니다. 목적은
30
+ 다른 PC에서도 빠르게 설치하기 위한 개인용 package metadata를 갖추는 것입니다.
31
+ npm package metadata를 준비했다고 해서 홍보, 공개 저장소 운영, Claude
32
+ marketplace 등록을 의미하지는 않습니다. 새 버전 배포는 항상 별도의 명시적
33
+ 승인 후에 진행합니다. v0.2.0 workflow parity material은 LazyClaude 자체의
34
+ 표현으로 정리되어 있으며, npm publish가 완료됐다고 주장하지 않습니다.
36
35
 
37
36
  ## 기능
38
37
 
@@ -40,9 +39,17 @@ v0.1.17 release material은 source-origin-free 상태이며 LazyClaude 자체의
40
39
  - **ULW prompt hook** - `ulw`, `ultrawork`, `$ulw-plan`, `$ulw-loop` 트리거
41
40
  - **Deep interview mode** - `/deep-interview` 또는 `$deep-interview`로 넓고
42
41
  모호한 의도를 먼저 spec으로 정리한 뒤 계획/구현으로 넘김
42
+ - **v0.2.0 workflow parity** - package publish가 끝났다고 말하지 않으면서
43
+ `review-work` 5-lane review discipline과 ultragoal runtime 문서를 추가
44
+ - **5-lane review** - `/review-work`가 goal/constraint verification,
45
+ hands-on QA execution, code quality, security, local-first context mining을
46
+ 한 번에 점검
43
47
  - **Native goal guidance** - Claude Code가 `/goal` 또는 `get_goal`,
44
48
  `create_goal`, `update_goal` 같은 goal surface를 제공하면 이를 우선
45
49
  사용하도록 유도하고, goal tools are unavailable 상황의 fallback도 명시
50
+ - **Ultragoal CLI/state** - `plugins/lazyclaude/lib/ultragoal/`가 durable
51
+ criteria, evidence, checkpoint, steering, review blocker를 `.omo/ultragoal/`
52
+ 아래에 기록
46
53
  - **Dynamic workflow/worktree guidance** - 크거나 병렬적인 작업은 Claude
47
54
  Code Dynamic workflow와 Dynamic worktree 격리 쪽으로 유도
48
55
  - **Claude skills** - LazyClaude 스타일을 더 풍부하게 옮긴 corpus:
@@ -57,8 +64,9 @@ v0.1.17 release material은 source-origin-free 상태이며 LazyClaude 자체의
57
64
  - **MCP와 LSP helper** - plugin-local stdio MCP와 TypeScript 계열 LSP doctor
58
65
  - **LazyClaude HUD** - npm install 시 `pretty-claude-hud` 기반의 compact
59
66
  Claude Code statusLine을 `[💤LAZYCLAUDE vX.Y.Z]` 브랜드로 자동 설정하고,
60
- 설치 중 색상 선택, 즉시 미리보기, 촘촘한 context bar, 낮은 사용량도
61
- 비어 보이지 않는 rate-limit bar, 간격이 있는 reset countdown을 제공
67
+ 설치 중 눈에 잘 띄는 색상 선택, 즉시 mini-HUD 미리보기, compact context
68
+ bar, 낮은 사용량도 비어 보이지 않는 rate-limit bar, 넓은 brand accent
69
+ 적용 범위, 간격이 있는 reset countdown을 제공
62
70
  - **안전한 uninstall** - LazyClaude가 관리한 상태만 제거
63
71
 
64
72
  ## 빠른 시작
@@ -69,8 +77,8 @@ v0.1.17 release material은 source-origin-free 상태이며 LazyClaude 자체의
69
77
  npx --yes lazyclaude-ai install
70
78
  ```
71
79
 
72
- interactive `npx` 설치에서는 LazyClaude가 HUD brand color 후보를 실제
73
- 터미널 색상으로 바로 보여주고, 선택한 accent를 Claude의 managed
80
+ interactive `npx` 설치에서는 LazyClaude가 HUD brand color 후보를 더 선명한
81
+ 실제 터미널 색상으로 바로 보여주고, 선택한 accent를 Claude의 managed
74
82
  `statusLine` command에 저장합니다. animated install에서는 setup, plugin,
75
83
  marketplace, registry, cache label도 색상으로 구분해서 진행 상황을 더 쉽게
76
84
  스캔할 수 있습니다. noninteractive install은 deterministic한 plain
@@ -85,7 +93,7 @@ checkout을 먼저 해석해서 `sh: lazyclaude-ai: command not found`로 실패
85
93
 
86
94
  ```bash
87
95
  cd /tmp
88
- npx --yes lazyclaude-ai@0.1.17 install
96
+ npx --yes lazyclaude-ai@0.2.0 install
89
97
  ```
90
98
 
91
99
  설치 상태를 확인합니다.
@@ -98,13 +106,15 @@ installer는 Claude Code의 `statusLine` command도 packaged LazyClaude HUD로
98
106
  설정합니다. 색상을 제거한 예시는 다음처럼 시작합니다.
99
107
 
100
108
  ```text
101
- [💤LAZYCLAUDE v0.1.17] | O4.8 │ ctx [▉░░░░░░░░░] 9%/1000k │ 5h [▏░░░] 4% ↻2h15m │ 1w [█▍░░] 35% ↻3d6h │ git main +3 ✓
109
+ [💤LAZYCLAUDE v0.2.0] | O4.8 │ ctx [▎░░] 9%/1000k │ 5h [▏░] 4% ↻2h15m │ 1w [▊░] 35% ↻3d6h │ git main +3 ✓
102
110
  ```
103
111
 
104
112
  `↻` 표시는 rate-limit reset까지 남은 시간을 짧게 보여주는 countdown입니다.
105
113
  percentage와는 한 칸 띄워서 읽기 쉽게 만들었고, 낮은 non-zero 사용량도
106
- partial bar glyph로 표시되어 비어 보이지 않습니다. Claude Code가 제공하는
107
- epoch seconds 형태와 ISO timestamp 형태를 모두 해석합니다.
114
+ partial bar glyph로 표시되어 비어 보이지 않습니다. context bar는 3칸,
115
+ rate-limit bar는 2칸으로 줄여 Claude Code status-line 공간을 덜 차지합니다.
116
+ Claude Code가 제공하는 epoch seconds 형태와 ISO timestamp 형태를 모두
117
+ 해석합니다.
108
118
 
109
119
  picker 없이 색상을 지정하려면 설치 전에 `LAZYCLAUDE_HUD_ACCENT`를
110
120
  `cyan`, `blue`, `teal`, `green`, `lavender`, `rose`, `gold`, `orange`,
@@ -168,6 +178,10 @@ $ulw-loop <증거 기반으로 실행할 작업>
168
178
  /ulw-loop <증거 기반으로 실행할 작업>
169
179
  $deep-interview <명확화가 필요한 작업>
170
180
  /deep-interview <명확화가 필요한 작업>
181
+ $review-work <검토할 범위>
182
+ /review-work <검토할 범위>
183
+ $ultragoal <goal operation>
184
+ /ultragoal <goal operation>
171
185
  $start-work plans/lazyclaude-retrofit.md
172
186
  /start-work plans/lazyclaude-retrofit.md
173
187
  ```
@@ -195,6 +209,30 @@ goal이 없을 때만 `create_goal`을 호출하며, `update_goal`은 검증 완
195
209
  model-facing worktree를 필요로 하면 `EnterWorktree`를 사용합니다. CLI surface만
196
210
  가능한 새 격리 lane에서는 `claude --worktree <short-name> --tmux`를 사용합니다.
197
211
 
212
+ v0.2.0 workflow parity에서 `review-work`는 전용 review route입니다. 5-lane
213
+ review는 goal/constraint verification, hands-on QA execution, code quality,
214
+ security, local-first context mining을 포함합니다. 각 lane은
215
+ `oracle-verifier`, `qa-runner`, `quality-reviewer`, `librarian-researcher`에
216
+ 연결되고, 증거를 모아 PASS, FAIL, NEEDS-CONTEXT verdict로 정리합니다.
217
+ Manual-QA channels는 artifact를 남겨야 하며 tmux session, server, port,
218
+ browser tab, temp directory는 completion 전에 cleanup receipt를 남겨야 합니다.
219
+
220
+ `ultragoal`은 긴 목표를 위한 durable local state route입니다. runtime은
221
+ `plugins/lazyclaude/lib/ultragoal/`에 있고 state는 `.omo/ultragoal/` 아래에
222
+ 남깁니다. stale state가 checkout과 어긋나면 current docs/test reads를
223
+ 기준으로 판단합니다. 자주 쓰는 명령은 다음과 같습니다.
224
+
225
+ ```bash
226
+ lazyclaude ultragoal create-goals --brief "<brief>" --json
227
+ lazyclaude ultragoal record-evidence --criterion <id> --status pass --json '{"artifact":"...","cleanup":"..."}'
228
+ lazyclaude ultragoal checkpoint --status active --note "<progress>" --json
229
+ lazyclaude ultragoal steer --kind scope --note "<what changed and why>" --json
230
+ ```
231
+
232
+ `record-review-blockers`는 해결되지 않은 review finding을 기록합니다.
233
+ malformed JSON, unknown criterion, corrupt state, invalid steering kind는
234
+ 성공처럼 보이지 않고 controlled error로 실패해야 합니다.
235
+
198
236
  단순히 `ulw`라고 입력하는 것은 hook context activation입니다. Claude Code
199
237
  history에는 별도 Skill tool invocation이 아니라 hook guidance로 보일 수
200
238
  있습니다. 명시적인 LazyClaude skill activation을 보고 싶다면 namespaced
@@ -204,6 +242,8 @@ command를 사용합니다.
204
242
  /lazyclaude:ulw-loop <증거 기반으로 실행할 작업>
205
243
  /lazyclaude:ulw-plan <계획이 필요한 작업>
206
244
  /lazyclaude:deep-interview <명확화가 필요한 작업>
245
+ /lazyclaude:review-work <검토할 범위>
246
+ /lazyclaude:ultragoal <goal operation>
207
247
  /lazyclaude:start-work plans/lazyclaude-retrofit.md
208
248
  ```
209
249
 
@@ -296,6 +336,6 @@ probe evidence를 남깁니다.
296
336
  | MCP | `plugins/lazyclaude/.mcp.json` |
297
337
  | LSP | `plugins/lazyclaude/.lsp.json` |
298
338
 
299
- 영문 설명은 `README.md`, private snapshot metadata는 `REFERENCE.md`,
300
- reference-to-Claude 변환 표는 `docs/migration.md`, 현재 compatibility audit은
301
- `docs/workflow-compatibility-audit.md`, release notes는 `CHANGELOG.md`를 참고하세요.
339
+ 영문 설명은 `README.md`, workflow migration 표는 `docs/migration.md`, 현재
340
+ compatibility audit은 `docs/workflow-compatibility-audit.md`, release notes는
341
+ `CHANGELOG.md`를 참고하세요.
@@ -1,12 +1,14 @@
1
1
  # LazyClaude Release Checklist
2
2
 
3
- Status: `lazyclaude-ai@0.1.17` is the current release candidate for HUD polish
4
- and installer color improvements. The HUD now uses a dense bracketed context
5
- bar, shows low non-zero 5-hour and 7-day usage with partial fill glyphs, and
6
- spaces the `↻` reset countdown away from the percentage. Animated `npx`
7
- installs now show more color-coded progress labels. Versions `0.1.11`,
8
- `0.1.12`, `0.1.13`, `0.1.14`, `0.1.15`, and `0.1.16` already exist or were
9
- prepared in this release series, so this patch version is the next publishable target
3
+ Status: `lazyclaude-ai@0.2.0` is the current release candidate for deep workflow parity.
4
+ `package.json` is aligned to `0.2.0`, and
5
+ `plugins/lazyclaude/.claude-plugin/plugin.json` is aligned to `0.2.0`.
6
+
7
+ This release carries the v0.2.0 workflow parity surfaces: `review-work` 5-lane
8
+ review, ultragoal runtime state, local-first context mining, Manual-QA channels,
9
+ cleanup receipts, and explicit publish boundary guidance. The package retains
10
+ the recent install, hook, and HUD work from `0.1.12`, `0.1.13`, `0.1.14`,
11
+ `0.1.15`, `0.1.16`, `0.1.17`, and `0.1.18`, while `0.2.0` is the next publishable target
10
12
  when explicitly approved.
11
13
 
12
14
  DO NOT publish a new version of LazyClaude, run `npm publish`, push release
@@ -24,17 +26,34 @@ public repo promotion, or a public launch campaign.
24
26
  - `npm run qa:portable`
25
27
  - `npm run pack:dry-run`
26
28
 
27
- ## Local / Private Checkout Use
29
+ ## Local Checkout Use
28
30
 
29
31
  Use this track when testing from the current checkout:
30
32
 
31
33
  1. Run `npm test`.
32
34
  2. Run `npm run validate:plugin`.
33
35
  3. Run `npm run qa:tmux`.
34
- 4. Start Claude Code with `claude --plugin-dir ./plugins/lazyclaude`.
36
+ 4. Run `node bin/lazyclaude-ai.js ultragoal --help`.
37
+ 5. Start Claude Code with `claude --plugin-dir ./plugins/lazyclaude`.
35
38
 
36
39
  No npm publication is required for this track.
37
40
 
41
+ ## v0.2.0 Workflow Parity Gates
42
+
43
+ Before requesting publication approval, confirm these artifacts from the current
44
+ checkout:
45
+
46
+ - `package.json` version is `0.2.0`.
47
+ - `plugins/lazyclaude/.claude-plugin/plugin.json` version is `0.2.0`.
48
+ - `plugins/lazyclaude/commands/review-work.md` documents the 5-lane review.
49
+ - `plugins/lazyclaude/commands/ultragoal.md` documents durable goal state.
50
+ - `plugins/lazyclaude/lib/ultragoal/` ships the runtime CLI/state modules.
51
+ - `node bin/lazyclaude-ai.js ultragoal --help` prints durable state commands.
52
+ - `npm pack --dry-run --json` includes runtime payloads and excludes local
53
+ `.omo/`, `.omc/`, and `evidence/` state.
54
+ - `.omo/ulw-loop/evidence/v020-red-contracts.txt` or equivalent RED evidence
55
+ exists for the workflow parity contracts before GREEN evidence.
56
+
38
57
  ## Fresh Machine NPM Install Use
39
58
 
40
59
  Use this track after an approved npm package version exists:
@@ -66,7 +85,8 @@ Use this track only when the user explicitly approves making a new package
66
85
  version installable through `npm`, `npx`, and `bunx`.
67
86
 
68
87
  1. Confirm the target package name and version with the user.
69
- 2. Review `REFERENCE.md` and `docs/migration.md` for sanitized private-reference metadata.
88
+ 2. Review `README.md`, `README_ko-KR.md`, `docs/migration.md`, and
89
+ `docs/workflow-compatibility-audit.md` for neutral release wording.
70
90
  3. Run `npm whoami` and confirm the intended npm account.
71
91
  4. Re-run the full local verification set from a clean checkout:
72
92
  - `npm test`
@@ -14,12 +14,14 @@ import { homedir } from "node:os";
14
14
  import { dirname, join, resolve } from "node:path";
15
15
  import { createInterface } from "node:readline/promises";
16
16
  import { fileURLToPath } from "node:url";
17
+ import { HUD_ACCENT_THEMES, normalizeHudAccent, themeForAccent } from "../plugins/lazyclaude/lib/hud-accent-palette.mjs";
18
+ import { runUltragoalCli } from "../plugins/lazyclaude/lib/ultragoal/cli.mjs";
17
19
 
18
20
  const root = resolve(dirname(fileURLToPath(import.meta.url)), "..");
19
21
  const packageJson = JSON.parse(readFileSync(join(root, "package.json"), "utf8"));
20
22
  const version = packageJson.version;
21
23
 
22
- const usage = `Usage: lazyclaude-ai [--dry-run] <install|doctor|path|run|update|uninstall> [...args]
24
+ const usage = `Usage: lazyclaude-ai [--dry-run] <install|doctor|path|run|update|uninstall|ultragoal> [...args]
23
25
  lazyclaude-ai --version
24
26
 
25
27
  Commands:
@@ -27,6 +29,7 @@ Commands:
27
29
  doctor Validate the installed LazyClaude plugin path.
28
30
  path Print the installed Claude plugin path.
29
31
  run -- ... Run Claude Code after the global plugin install.
32
+ ultragoal Manage ultragoal runtime state and evidence.
30
33
  update Reinstall this package version and refresh the Claude plugin registry.
31
34
  uninstall Remove LazyClaude-managed install state.
32
35
  `;
@@ -63,19 +66,7 @@ const knownExternalLspPlugins = {
63
66
  "gopls-lsp@claude-plugins-official": ["gopls"],
64
67
  };
65
68
  const spinnerFrames = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
66
- const hudAccentThemes = [
67
- { name: "cyan", code: 81, mood: "LazyClaude default" },
68
- { name: "blue", code: 74, mood: "calm terminal" },
69
- { name: "teal", code: 66, mood: "muted productivity" },
70
- { name: "green", code: 71, mood: "classic shell" },
71
- { name: "lavender", code: 139, mood: "quiet purple" },
72
- { name: "rose", code: 132, mood: "soft contrast" },
73
- { name: "gold", code: 136, mood: "warm focus" },
74
- { name: "orange", code: 173, mood: "high energy" },
75
- { name: "slate", code: 60, mood: "low saturation" },
76
- { name: "gray", code: 245, mood: "monochrome" },
77
- ];
78
- const hudAccentNames = new Set(hudAccentThemes.map((theme) => theme.name));
69
+ const hudAccentThemes = HUD_ACCENT_THEMES;
79
70
 
80
71
  const printUsage = () => {
81
72
  process.stderr.write(usage);
@@ -161,12 +152,8 @@ const writeClaudeSettings = (settings, home = claudeHome()) => {
161
152
  writeFileSync(settingsPath, `${JSON.stringify(settings, null, 2)}\n`);
162
153
  };
163
154
 
164
- const normalizeHudAccent = (value) => {
165
- const normalized = String(value || "").trim().toLowerCase();
166
- return hudAccentNames.has(normalized) ? normalized : "cyan";
167
- };
168
-
169
- const hudAccentPreview = (theme) => `\x1b[38;5;${theme.code}m[💤LAZYCLAUDE v${version}]\x1b[0m`;
155
+ const hudAccentPreview = (theme) =>
156
+ `\x1b[38;5;${theme.code}m[💤LAZYCLAUDE v${version}] | O4.8 ctx [▌░░] 18%/1000k │ 5h [▏░] 4%\x1b[0m`;
170
157
 
171
158
  const shouldPromptHudAccent = () => {
172
159
  if (process.env.LAZYCLAUDE_HUD_ACCENT_PROMPT === "1") return true;
@@ -195,7 +182,7 @@ const chooseHudAccent = async () => {
195
182
  if (trimmed && selected === "cyan" && trimmed !== "cyan" && byIndex === undefined) {
196
183
  process.stdout.write("HUD_COLOR_WARNING: unknown color; using cyan\n");
197
184
  }
198
- process.stdout.write(`HUD_COLOR_SELECTED: ${selected} ${hudAccentPreview(hudAccentThemes.find((theme) => theme.name === selected))}\n`);
185
+ process.stdout.write(`HUD_COLOR_SELECTED: ${selected} ${hudAccentPreview(themeForAccent(selected))}\n`);
199
186
  return selected;
200
187
  } finally {
201
188
  rl.close();
@@ -631,6 +618,9 @@ const main = async () => {
631
618
  case "run":
632
619
  runClaude(parsed);
633
620
  break;
621
+ case "ultragoal":
622
+ process.exit(runUltragoalCli(parsed.rest));
623
+ break;
634
624
  case "uninstall":
635
625
  uninstall(parsed);
636
626
  break;
package/cover.png CHANGED
Binary file
package/docs/agents.md CHANGED
@@ -16,6 +16,22 @@ The planner is deliberately constrained because the safest Claude Code retrofit
16
16
  keeps planning separate from mutation. Executor and QA agents can act only
17
17
  inside the plan and evidence contract.
18
18
 
19
+ ## Review Work Routing
20
+
21
+ The v0.2.0 workflow parity review route uses five evidence lanes:
22
+
23
+ | Review lane | Agent routing | Required evidence |
24
+ | --- | --- | --- |
25
+ | goal/constraint verification | `oracle-verifier` with `review-work` and `rules` | Goal, non-goals, acceptance criteria, publish boundary, and constraints checked against current docs/test reads. |
26
+ | hands-on QA execution | `qa-runner` with `start-work` and `review-work` | Automated test output, Manual-QA channels, artifacts, and cleanup receipt. |
27
+ | code quality | `quality-reviewer` with `review-work` and `programming` | Findings-first code review focused on regressions and maintainability. |
28
+ | security | `quality-reviewer` with `review-work` and `programming` | Prompt injection, malformed input, local state, and unsafe command handling risks. |
29
+ | local-first context mining | `librarian-researcher` with `rules` | Local checkout, docs, tests, and ledgers checked before external references. |
30
+
31
+ The aggregate verdict is PASS, FAIL, or NEEDS-CONTEXT. Broad review work may
32
+ use Dynamic workflow when Claude Code exposes it; isolated edits can use
33
+ `claude --worktree <short-name> --tmux` when a separate checkout is required.
34
+
19
35
  ## Local Use
20
36
 
21
37
  Load the plugin from this checkout:
package/docs/hooks.md CHANGED
@@ -28,6 +28,12 @@ $ulw-loop
28
28
  $deep-interview
29
29
  /deep-interview
30
30
  /lazyclaude:deep-interview
31
+ $review-work
32
+ /review-work
33
+ /lazyclaude:review-work
34
+ $ultragoal
35
+ /ultragoal
36
+ /lazyclaude:ultragoal
31
37
  $start-work
32
38
  /start-work
33
39
  /lazyclaude:start-work
@@ -79,12 +85,20 @@ These are real Claude Code command files in `plugins/lazyclaude/commands/`.
79
85
  before `/ulw-plan` when a request lacks non-goals, decision boundaries, or
80
86
  acceptance criteria.
81
87
 
88
+ `/review-work` and `$review-work` load `/lazyclaude:review-work` /
89
+ `Skill(review-work)`. That route runs the v0.2.0 workflow parity 5-lane review:
90
+ goal/constraint verification, hands-on QA execution, code quality, security,
91
+ and local-first context mining. `/ultragoal` and `$ultragoal` load
92
+ `/lazyclaude:ultragoal` / `Skill(ultragoal)` for durable local goal state and
93
+ the ultragoal CLI.
94
+
82
95
  ## Safety
83
96
 
84
97
  Hooks parse JSON from stdin and return JSON to Claude Code. The hook does not
85
- execute prompt text and does not echo prompt text into the returned context. The
86
- ultrawork detector returns constant workflow guidance, so a prompt cannot become
87
- a shell command through the hook response.
98
+ execute prompt text and does not echo prompt text into the returned context;
99
+ prompt text is not executed or echoed. The ultrawork detector returns constant
100
+ workflow guidance, so a prompt cannot become a shell command through the hook
101
+ response. Malformed hook input and malformed ultragoal JSON should surface a controlled error instead of a misleading success response.
88
102
 
89
103
  ## Local Smoke
90
104
 
package/docs/migration.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # LazyClaude Migration
2
2
 
3
- LazyClaude maps a pinned private workflow reference into Claude Code-native
4
- surfaces. The goal is behavior parity where Claude Code exposes the same kind
5
- of surface, and a conservative local fallback where it does not.
3
+ LazyClaude maps workflow disciplines into Claude Code-native surfaces. The goal
4
+ is behavior parity where Claude Code exposes the same kind of surface, and a
5
+ conservative local fallback where it does not.
6
6
 
7
7
  | Reference surface | Claude Code surface | LazyClaude implementation |
8
8
  | --- | --- | --- |
@@ -11,6 +11,8 @@ of surface, and a conservative local fallback where it does not.
11
11
  | Ultrawork plan mode | Claude Code skill plus planner agent | `ulw-plan` and `prometheus-planner` |
12
12
  | Clarification interview | Claude Code skill plus command | `deep-interview` asks one Socratic question per round, persists state under `deep-interview/`, and hands a spec to planning or execution |
13
13
  | Execution loop | Claude Code skill plus executor agent | `ulw-loop`, `start-work`, and `boulder-executor` |
14
+ | 5-lane review | Claude Code command, skill, and agents | `review-work` runs goal/constraint verification, hands-on QA execution, code quality, security, and local-first context mining |
15
+ | Durable goal runtime | Package CLI plus local state | `ultragoal` writes criteria, evidence, checkpoints, steering, and blockers under `.omo/ultragoal/` |
14
16
  | Goal-tool guidance | Claude Code native goal surface | `/goal` when user-selected, or model-facing `get_goal`, `create_goal`, and verified-final `update_goal` guidance when exposed |
15
17
  | Parallel orchestration | Claude Code Dynamic workflow and Dynamic worktree surfaces | Call `Workflow` for broad independent work when exposed; use `EnterWorktree` or the CLI worktree path for risky or parallel edits |
16
18
  | Hooks | Claude Code hooks | `plugins/lazyclaude/hooks/hooks.json` |
@@ -70,6 +72,33 @@ execution, bind each lane to criteria and evidence, and use `EnterWorktree` for
70
72
  isolated model-facing worktree lanes. When only the CLI surface is available,
71
73
  the concrete isolated-lane launch form is `claude --worktree <short-name> --tmux`.
72
74
 
75
+ ## v0.2.0 Review And Ultragoal Parity
76
+
77
+ The v0.2.0 workflow parity surface is local-first and evidence-bound. It does
78
+ not imply that an npm publish or remote marketplace publication has happened.
79
+ `/review-work`, `$review-work`, and `/lazyclaude:review-work` run the 5-lane
80
+ review contract: goal/constraint verification, hands-on QA execution, code
81
+ quality, security, and local-first context mining. Manual-QA channels must
82
+ produce artifacts, and all spawned sessions, servers, ports, browser tabs, and
83
+ temp directories need a cleanup receipt before completion.
84
+
85
+ `/ultragoal`, `$ultragoal`, and `/lazyclaude:ultragoal` bind long work to the
86
+ ultragoal runtime in `plugins/lazyclaude/lib/ultragoal/`. The local state lives
87
+ under `.omo/ultragoal/`, and current docs/test reads are the authority if stale
88
+ state contradicts the checkout.
89
+
90
+ Use these CLI commands for durable state:
91
+
92
+ ```bash
93
+ lazyclaude ultragoal create-goals --brief "<brief>" --json
94
+ lazyclaude ultragoal record-evidence --criterion <id> --status pass --json '{"artifact":"...","cleanup":"..."}'
95
+ lazyclaude ultragoal checkpoint --status active --note "<progress>" --json
96
+ lazyclaude ultragoal steer --kind scope --note "<what changed and why>" --json
97
+ ```
98
+
99
+ Malformed evidence JSON, unknown criteria, corrupt state, or invalid steering
100
+ kinds must fail with a controlled error.
101
+
73
102
  If OMC/omc is already installed in Claude Code, keep it disabled or start a
74
103
  separate Claude Code session without OMC while testing LazyClaude. This repo no
75
104
  longer ships a root marketplace skeleton; direct `--plugin-dir` loading avoids