lazyclaude-ai 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -0
- package/README.md +27 -9
- package/README_ko-KR.md +26 -7
- package/RELEASE_CHECKLIST.md +23 -14
- package/bin/lazyclaude-ai.js +6 -1
- package/cover.png +0 -0
- package/docs/agents.md +17 -0
- package/docs/hooks.md +11 -0
- package/docs/migration.md +12 -0
- package/package.json +1 -1
- package/plugins/lazyclaude/.claude-plugin/plugin.json +1 -1
- package/plugins/lazyclaude/bin/lazyclaude-hook.js +2 -0
- package/plugins/lazyclaude/commands/dynamic-workflow.md +32 -0
- package/plugins/lazyclaude/lib/workflow-check.mjs +73 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.2.1 - 2026-06-04
|
|
4
|
+
|
|
5
|
+
- Add a dedicated `/dynamic-workflow` route for Dynamic workflow bootstrap,
|
|
6
|
+
native `/goal` fallback guidance, and Claude Code subagent delegation.
|
|
7
|
+
- Add `lazyclaude-ai workflow-check --json` so operators can verify goal,
|
|
8
|
+
Dynamic workflow, hook route, and subagent delegation readiness before full QA.
|
|
9
|
+
- Fix the right-pane `test/` local-session ignore pattern so ad hoc Claude Code
|
|
10
|
+
session artifacts stay out of git and package payloads.
|
|
11
|
+
|
|
3
12
|
## 0.2.0 - 2026-06-03
|
|
4
13
|
|
|
5
14
|
- Align the package and Claude plugin manifests to `lazyclaude-ai@0.2.0` for
|
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.2.
|
|
12
|
+
<img src="https://img.shields.io/badge/version-0.2.1-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.2.
|
|
25
|
+
This checkout is prepared as `lazyclaude-ai@0.2.1` for personal install
|
|
26
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. The v0.2.
|
|
29
|
-
|
|
30
|
-
that npm publication has completed.
|
|
28
|
+
Future package releases still require explicit user approval. The v0.2.1
|
|
29
|
+
release materials preserve the v0.2.0 workflow parity work, describe
|
|
30
|
+
LazyClaude in its own terms, and do not claim that npm publication has completed.
|
|
31
31
|
|
|
32
32
|
## Features
|
|
33
33
|
|
|
@@ -37,6 +37,9 @@ that npm publication has completed.
|
|
|
37
37
|
turn broad intent into a spec before planning or implementation
|
|
38
38
|
- **v0.2.0 workflow parity** - adds `review-work` 5-lane review discipline and
|
|
39
39
|
ultragoal runtime docs without claiming a package publication has completed
|
|
40
|
+
- **v0.2.1 dynamic workflow readiness** - adds `/dynamic-workflow` and
|
|
41
|
+
`workflow-check --json` so goal, Dynamic workflow, and subagent delegation
|
|
42
|
+
readiness can be checked before full QA
|
|
40
43
|
- **5-lane review** - `/review-work` checks goal/constraint verification,
|
|
41
44
|
hands-on QA execution, code quality, security, and local-first context mining
|
|
42
45
|
- **Native goal guidance** - ULW context points Claude toward `/goal` or
|
|
@@ -46,8 +49,8 @@ that npm publication has completed.
|
|
|
46
49
|
criteria, evidence, checkpoints, steering, and review blockers under
|
|
47
50
|
`.omo/ultragoal/`
|
|
48
51
|
- **Dynamic workflow/worktree guidance** - large or parallel tasks are steered
|
|
49
|
-
toward Claude Code Dynamic workflow orchestration
|
|
50
|
-
isolation
|
|
52
|
+
toward Claude Code Dynamic workflow orchestration, subagent delegation, and
|
|
53
|
+
Dynamic worktree isolation
|
|
51
54
|
- **Claude skills** - a richer LazyClaude-owned corpus: `programming`,
|
|
52
55
|
`debugging`, `refactor`, `ai-slop-remover`, `remove-ai-slops`, `review-work`,
|
|
53
56
|
`frontend-ui-ux`, `comment-checker`, `rules`, `lsp`, `ultragoal`,
|
|
@@ -88,7 +91,7 @@ install command works:
|
|
|
88
91
|
|
|
89
92
|
```bash
|
|
90
93
|
cd /tmp
|
|
91
|
-
npx --yes lazyclaude-ai@0.2.
|
|
94
|
+
npx --yes lazyclaude-ai@0.2.1 install
|
|
92
95
|
```
|
|
93
96
|
|
|
94
97
|
Validate the installed plugin:
|
|
@@ -101,7 +104,7 @@ The installer also sets Claude Code's `statusLine` command to the packaged
|
|
|
101
104
|
LazyClaude HUD. A typical no-color render starts like:
|
|
102
105
|
|
|
103
106
|
```text
|
|
104
|
-
[💤LAZYCLAUDE v0.2.
|
|
107
|
+
[💤LAZYCLAUDE v0.2.1] | O4.8 │ ctx [▎░░] 9%/1000k │ 5h [▏░] 4% ↻2h15m │ 1w [▊░] 35% ↻3d6h │ git main +3 ✓
|
|
105
108
|
```
|
|
106
109
|
|
|
107
110
|
The `↻` suffix is a compact rate-limit reset countdown. It is separated from
|
|
@@ -174,6 +177,8 @@ $ulw-loop <what you want executed with evidence>
|
|
|
174
177
|
/ulw-loop <what you want executed with evidence>
|
|
175
178
|
$deep-interview <what needs clarification>
|
|
176
179
|
/deep-interview <what needs clarification>
|
|
180
|
+
$dynamic-workflow <parallel or delegated objective>
|
|
181
|
+
/dynamic-workflow <parallel or delegated objective>
|
|
177
182
|
$review-work <scope to review>
|
|
178
183
|
/review-work <scope to review>
|
|
179
184
|
$ultragoal <goal operation>
|
|
@@ -206,6 +211,18 @@ Code's available orchestration surfaces: when `Workflow` is exposed, call the
|
|
|
206
211
|
`EnterWorktree`. If only the CLI surface is available for a fresh isolated lane,
|
|
207
212
|
use `claude --worktree <short-name> --tmux`.
|
|
208
213
|
|
|
214
|
+
For v0.2.1 dynamic workflow readiness, `/dynamic-workflow` is the consolidated
|
|
215
|
+
bootstrap route for broad delegated work. It keeps `/goal` user-controlled,
|
|
216
|
+
checks model-facing goal tools when exposed, asks for an exact fallback
|
|
217
|
+
`/goal <completion condition>` when needed, and maps subagent delegation to
|
|
218
|
+
`prometheus-planner`, `boulder-executor`, `oracle-verifier`, `qa-runner`,
|
|
219
|
+
`quality-reviewer`, and `librarian-researcher`. Run the package diagnostic from
|
|
220
|
+
the checkout or an installed package before full QA:
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
lazyclaude-ai workflow-check --json
|
|
224
|
+
```
|
|
225
|
+
|
|
209
226
|
For v0.2.0 workflow parity, `review-work` is the dedicated review route. It is a
|
|
210
227
|
5-lane review: goal/constraint verification, hands-on QA execution, code
|
|
211
228
|
quality, security, and local-first context mining. The lanes bind to
|
|
@@ -236,6 +253,7 @@ namespaced commands when you want explicit LazyClaude skill activation:
|
|
|
236
253
|
|
|
237
254
|
```text
|
|
238
255
|
/lazyclaude:ulw-loop <what you want executed with evidence>
|
|
256
|
+
/lazyclaude:dynamic-workflow <parallel or delegated objective>
|
|
239
257
|
/lazyclaude:ulw-plan <what you want planned>
|
|
240
258
|
/lazyclaude:deep-interview <what needs clarification>
|
|
241
259
|
/lazyclaude:review-work <scope to review>
|
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.2.
|
|
12
|
+
<img src="https://img.shields.io/badge/version-0.2.1-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,12 +26,13 @@
|
|
|
26
26
|
> 설치되므로, 매번 긴 `--plugin-dir` 없이 일반 `claude` 실행에서
|
|
27
27
|
> LazyClaude skill과 hook을 불러올 수 있습니다.
|
|
28
28
|
|
|
29
|
-
현재 checkout은 `lazyclaude-ai@0.2.
|
|
29
|
+
현재 checkout은 `lazyclaude-ai@0.2.1` 배포 준비용으로 정리되어 있습니다. 목적은
|
|
30
30
|
다른 PC에서도 빠르게 설치하기 위한 개인용 package metadata를 갖추는 것입니다.
|
|
31
31
|
npm package metadata를 준비했다고 해서 홍보, 공개 저장소 운영, Claude
|
|
32
32
|
marketplace 등록을 의미하지는 않습니다. 새 버전 배포는 항상 별도의 명시적
|
|
33
|
-
승인 후에 진행합니다. v0.2.0 workflow parity
|
|
34
|
-
표현으로 정리되어 있으며, npm publish가 완료됐다고
|
|
33
|
+
승인 후에 진행합니다. v0.2.1 release material은 v0.2.0 workflow parity work를
|
|
34
|
+
보존하면서 LazyClaude 자체의 표현으로 정리되어 있으며, npm publish가 완료됐다고
|
|
35
|
+
주장하지 않습니다.
|
|
35
36
|
|
|
36
37
|
## 기능
|
|
37
38
|
|
|
@@ -41,6 +42,9 @@ marketplace 등록을 의미하지는 않습니다. 새 버전 배포는 항상
|
|
|
41
42
|
모호한 의도를 먼저 spec으로 정리한 뒤 계획/구현으로 넘김
|
|
42
43
|
- **v0.2.0 workflow parity** - package publish가 끝났다고 말하지 않으면서
|
|
43
44
|
`review-work` 5-lane review discipline과 ultragoal runtime 문서를 추가
|
|
45
|
+
- **v0.2.1 dynamic workflow readiness** - `/dynamic-workflow`와
|
|
46
|
+
`workflow-check --json`으로 goal, Dynamic workflow, subagent delegation
|
|
47
|
+
readiness를 full QA 전에 확인
|
|
44
48
|
- **5-lane review** - `/review-work`가 goal/constraint verification,
|
|
45
49
|
hands-on QA execution, code quality, security, local-first context mining을
|
|
46
50
|
한 번에 점검
|
|
@@ -51,7 +55,7 @@ marketplace 등록을 의미하지는 않습니다. 새 버전 배포는 항상
|
|
|
51
55
|
criteria, evidence, checkpoint, steering, review blocker를 `.omo/ultragoal/`
|
|
52
56
|
아래에 기록
|
|
53
57
|
- **Dynamic workflow/worktree guidance** - 크거나 병렬적인 작업은 Claude
|
|
54
|
-
Code Dynamic workflow
|
|
58
|
+
Code Dynamic workflow, subagent delegation, Dynamic worktree 격리 쪽으로 유도
|
|
55
59
|
- **Claude skills** - LazyClaude 스타일을 더 풍부하게 옮긴 corpus:
|
|
56
60
|
`programming`, `debugging`, `refactor`, `ai-slop-remover`, `remove-ai-slops`,
|
|
57
61
|
`review-work`, `frontend-ui-ux`, `comment-checker`, `rules`, `lsp`,
|
|
@@ -93,7 +97,7 @@ checkout을 먼저 해석해서 `sh: lazyclaude-ai: command not found`로 실패
|
|
|
93
97
|
|
|
94
98
|
```bash
|
|
95
99
|
cd /tmp
|
|
96
|
-
npx --yes lazyclaude-ai@0.2.
|
|
100
|
+
npx --yes lazyclaude-ai@0.2.1 install
|
|
97
101
|
```
|
|
98
102
|
|
|
99
103
|
설치 상태를 확인합니다.
|
|
@@ -106,7 +110,7 @@ installer는 Claude Code의 `statusLine` command도 packaged LazyClaude HUD로
|
|
|
106
110
|
설정합니다. 색상을 제거한 예시는 다음처럼 시작합니다.
|
|
107
111
|
|
|
108
112
|
```text
|
|
109
|
-
[💤LAZYCLAUDE v0.2.
|
|
113
|
+
[💤LAZYCLAUDE v0.2.1] | O4.8 │ ctx [▎░░] 9%/1000k │ 5h [▏░] 4% ↻2h15m │ 1w [▊░] 35% ↻3d6h │ git main +3 ✓
|
|
110
114
|
```
|
|
111
115
|
|
|
112
116
|
`↻` 표시는 rate-limit reset까지 남은 시간을 짧게 보여주는 countdown입니다.
|
|
@@ -178,6 +182,8 @@ $ulw-loop <증거 기반으로 실행할 작업>
|
|
|
178
182
|
/ulw-loop <증거 기반으로 실행할 작업>
|
|
179
183
|
$deep-interview <명확화가 필요한 작업>
|
|
180
184
|
/deep-interview <명확화가 필요한 작업>
|
|
185
|
+
$dynamic-workflow <병렬 또는 위임할 목표>
|
|
186
|
+
/dynamic-workflow <병렬 또는 위임할 목표>
|
|
181
187
|
$review-work <검토할 범위>
|
|
182
188
|
/review-work <검토할 범위>
|
|
183
189
|
$ultragoal <goal operation>
|
|
@@ -209,6 +215,18 @@ goal이 없을 때만 `create_goal`을 호출하며, `update_goal`은 검증 완
|
|
|
209
215
|
model-facing worktree를 필요로 하면 `EnterWorktree`를 사용합니다. CLI surface만
|
|
210
216
|
가능한 새 격리 lane에서는 `claude --worktree <short-name> --tmux`를 사용합니다.
|
|
211
217
|
|
|
218
|
+
v0.2.1 dynamic workflow readiness에서 `/dynamic-workflow`는 넓은 위임 작업을
|
|
219
|
+
위한 통합 bootstrap route입니다. `/goal`은 user-controlled 상태로 두고,
|
|
220
|
+
model-facing goal tools가 노출되면 확인하며, 필요하면 정확한 fallback
|
|
221
|
+
`/goal <completion condition>`만 제안합니다. subagent delegation은
|
|
222
|
+
`prometheus-planner`, `boulder-executor`, `oracle-verifier`, `qa-runner`,
|
|
223
|
+
`quality-reviewer`, `librarian-researcher`에 매핑됩니다. Full QA 전에는 다음
|
|
224
|
+
package diagnostic을 실행합니다.
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
lazyclaude-ai workflow-check --json
|
|
228
|
+
```
|
|
229
|
+
|
|
212
230
|
v0.2.0 workflow parity에서 `review-work`는 전용 review route입니다. 5-lane
|
|
213
231
|
review는 goal/constraint verification, hands-on QA execution, code quality,
|
|
214
232
|
security, local-first context mining을 포함합니다. 각 lane은
|
|
@@ -240,6 +258,7 @@ command를 사용합니다.
|
|
|
240
258
|
|
|
241
259
|
```text
|
|
242
260
|
/lazyclaude:ulw-loop <증거 기반으로 실행할 작업>
|
|
261
|
+
/lazyclaude:dynamic-workflow <병렬 또는 위임할 목표>
|
|
243
262
|
/lazyclaude:ulw-plan <계획이 필요한 작업>
|
|
244
263
|
/lazyclaude:deep-interview <명확화가 필요한 작업>
|
|
245
264
|
/lazyclaude:review-work <검토할 범위>
|
package/RELEASE_CHECKLIST.md
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
# LazyClaude Release Checklist
|
|
2
2
|
|
|
3
|
-
Status: `lazyclaude-ai@0.2.
|
|
4
|
-
`package.json` is aligned to `0.2.
|
|
5
|
-
`plugins/lazyclaude/.claude-plugin/plugin.json` is aligned to `0.2.
|
|
3
|
+
Status: `lazyclaude-ai@0.2.1` is the current release candidate for dynamic workflow readiness.
|
|
4
|
+
`package.json` is aligned to `0.2.1`, and
|
|
5
|
+
`plugins/lazyclaude/.claude-plugin/plugin.json` is aligned to `0.2.1`.
|
|
6
6
|
|
|
7
|
-
This release carries the v0.2.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
when explicitly approved.
|
|
7
|
+
This release carries the v0.2.1 dynamic workflow readiness surfaces:
|
|
8
|
+
`/dynamic-workflow`, `workflow-check --json`, native `/goal` fallback guidance,
|
|
9
|
+
subagent delegation mapping, and the v0.2.0 `review-work` / `ultragoal`
|
|
10
|
+
workflow parity surfaces, including the ultragoal runtime. It is the
|
|
11
|
+
next publishable target when explicitly approved.
|
|
13
12
|
|
|
14
13
|
DO NOT publish a new version of LazyClaude, run `npm publish`, push release
|
|
15
14
|
tags, or add a remote Claude Code marketplace entry without explicit user
|
|
@@ -18,6 +17,13 @@ approval.
|
|
|
18
17
|
This release path is for personal install convenience, not advertisement,
|
|
19
18
|
public repo promotion, or a public launch campaign.
|
|
20
19
|
|
|
20
|
+
Historical baseline anchors still covered by this checklist: `0.1.12` was the
|
|
21
|
+
publish-recovery baseline, `0.1.13` added ULW command trigger guardrails,
|
|
22
|
+
`0.1.14` added command-name HUD display, `0.1.15` introduced HUD brand color
|
|
23
|
+
selection, `0.1.16` added rate-limit reset countdown and deep-interview install
|
|
24
|
+
guidance, and `0.1.18` covered compact HUD bars and broader brand accent
|
|
25
|
+
behavior.
|
|
26
|
+
|
|
21
27
|
## Verified Locally
|
|
22
28
|
|
|
23
29
|
- `npm test`
|
|
@@ -33,18 +39,21 @@ Use this track when testing from the current checkout:
|
|
|
33
39
|
1. Run `npm test`.
|
|
34
40
|
2. Run `npm run validate:plugin`.
|
|
35
41
|
3. Run `npm run qa:tmux`.
|
|
36
|
-
4. Run `node bin/lazyclaude-ai.js
|
|
37
|
-
5.
|
|
42
|
+
4. Run `node bin/lazyclaude-ai.js workflow-check --json`.
|
|
43
|
+
5. Run `node bin/lazyclaude-ai.js ultragoal --help`.
|
|
44
|
+
6. Start Claude Code with `claude --plugin-dir ./plugins/lazyclaude`.
|
|
38
45
|
|
|
39
46
|
No npm publication is required for this track.
|
|
40
47
|
|
|
41
|
-
## v0.2.
|
|
48
|
+
## v0.2.1 Dynamic Workflow Gates
|
|
42
49
|
|
|
43
50
|
Before requesting publication approval, confirm these artifacts from the current
|
|
44
51
|
checkout:
|
|
45
52
|
|
|
46
|
-
- `package.json` version is `0.2.
|
|
47
|
-
- `plugins/lazyclaude/.claude-plugin/plugin.json` version is `0.2.
|
|
53
|
+
- `package.json` version is `0.2.1`.
|
|
54
|
+
- `plugins/lazyclaude/.claude-plugin/plugin.json` version is `0.2.1`.
|
|
55
|
+
- `plugins/lazyclaude/commands/dynamic-workflow.md` documents subagent delegation.
|
|
56
|
+
- `node bin/lazyclaude-ai.js workflow-check --json` reports `status: pass`.
|
|
48
57
|
- `plugins/lazyclaude/commands/review-work.md` documents the 5-lane review.
|
|
49
58
|
- `plugins/lazyclaude/commands/ultragoal.md` documents durable goal state.
|
|
50
59
|
- `plugins/lazyclaude/lib/ultragoal/` ships the runtime CLI/state modules.
|
package/bin/lazyclaude-ai.js
CHANGED
|
@@ -16,12 +16,13 @@ import { createInterface } from "node:readline/promises";
|
|
|
16
16
|
import { fileURLToPath } from "node:url";
|
|
17
17
|
import { HUD_ACCENT_THEMES, normalizeHudAccent, themeForAccent } from "../plugins/lazyclaude/lib/hud-accent-palette.mjs";
|
|
18
18
|
import { runUltragoalCli } from "../plugins/lazyclaude/lib/ultragoal/cli.mjs";
|
|
19
|
+
import { runWorkflowCheckCli } from "../plugins/lazyclaude/lib/workflow-check.mjs";
|
|
19
20
|
|
|
20
21
|
const root = resolve(dirname(fileURLToPath(import.meta.url)), "..");
|
|
21
22
|
const packageJson = JSON.parse(readFileSync(join(root, "package.json"), "utf8"));
|
|
22
23
|
const version = packageJson.version;
|
|
23
24
|
|
|
24
|
-
const usage = `Usage: lazyclaude-ai [--dry-run] <install|doctor|path|run|update|uninstall|ultragoal> [...args]
|
|
25
|
+
const usage = `Usage: lazyclaude-ai [--dry-run] <install|doctor|path|run|update|uninstall|ultragoal|workflow-check> [...args]
|
|
25
26
|
lazyclaude-ai --version
|
|
26
27
|
|
|
27
28
|
Commands:
|
|
@@ -30,6 +31,7 @@ Commands:
|
|
|
30
31
|
path Print the installed Claude plugin path.
|
|
31
32
|
run -- ... Run Claude Code after the global plugin install.
|
|
32
33
|
ultragoal Manage ultragoal runtime state and evidence.
|
|
34
|
+
workflow-check Verify Dynamic workflow, /goal, and subagent delegation readiness.
|
|
33
35
|
update Reinstall this package version and refresh the Claude plugin registry.
|
|
34
36
|
uninstall Remove LazyClaude-managed install state.
|
|
35
37
|
`;
|
|
@@ -621,6 +623,9 @@ const main = async () => {
|
|
|
621
623
|
case "ultragoal":
|
|
622
624
|
process.exit(runUltragoalCli(parsed.rest));
|
|
623
625
|
break;
|
|
626
|
+
case "workflow-check":
|
|
627
|
+
process.exit(runWorkflowCheckCli(root, version, parsed.rest));
|
|
628
|
+
break;
|
|
624
629
|
case "uninstall":
|
|
625
630
|
uninstall(parsed);
|
|
626
631
|
break;
|
package/cover.png
CHANGED
|
Binary file
|
package/docs/agents.md
CHANGED
|
@@ -32,6 +32,23 @@ The aggregate verdict is PASS, FAIL, or NEEDS-CONTEXT. Broad review work may
|
|
|
32
32
|
use Dynamic workflow when Claude Code exposes it; isolated edits can use
|
|
33
33
|
`claude --worktree <short-name> --tmux` when a separate checkout is required.
|
|
34
34
|
|
|
35
|
+
## Dynamic Workflow Delegation
|
|
36
|
+
|
|
37
|
+
The v0.2.1 `/dynamic-workflow` route makes the delegation map explicit for
|
|
38
|
+
Claude Code Dynamic workflow lanes and subagent spawning:
|
|
39
|
+
|
|
40
|
+
| Delegation lane | Agent | Evidence boundary |
|
|
41
|
+
| --- | --- | --- |
|
|
42
|
+
| plan and dependency order | `prometheus-planner` | Read-only plan with files, tests, Manual-QA channel, and cleanup. |
|
|
43
|
+
| implementation | `boulder-executor` | Smallest checked code change with RED -> GREEN evidence. |
|
|
44
|
+
| acceptance verification | `oracle-verifier` | Goal, criteria, and artifact checks before completion. |
|
|
45
|
+
| manual QA | `qa-runner` | tmux/browser/HTTP/computer-use artifact plus cleanup receipt. |
|
|
46
|
+
| code/security review | `quality-reviewer` | Findings-first review with concrete file references. |
|
|
47
|
+
| local-first context mining | `librarian-researcher` | Repo/docs/history search before external sources. |
|
|
48
|
+
|
|
49
|
+
`lazyclaude-ai workflow-check --json` verifies that this route, goal guidance,
|
|
50
|
+
Dynamic workflow guidance, and subagent delegation surface are present.
|
|
51
|
+
|
|
35
52
|
## Local Use
|
|
36
53
|
|
|
37
54
|
Load the plugin from this checkout:
|
package/docs/hooks.md
CHANGED
|
@@ -28,6 +28,9 @@ $ulw-loop
|
|
|
28
28
|
$deep-interview
|
|
29
29
|
/deep-interview
|
|
30
30
|
/lazyclaude:deep-interview
|
|
31
|
+
$dynamic-workflow
|
|
32
|
+
/dynamic-workflow
|
|
33
|
+
/lazyclaude:dynamic-workflow
|
|
31
34
|
$review-work
|
|
32
35
|
/review-work
|
|
33
36
|
/lazyclaude:review-work
|
|
@@ -66,6 +69,13 @@ cleanup. If isolated edits need a model-facing worktree lane, use
|
|
|
66
69
|
`EnterWorktree`; when only the CLI surface is available, the actionable launch
|
|
67
70
|
form is `claude --worktree <short-name> --tmux`.
|
|
68
71
|
|
|
72
|
+
`/dynamic-workflow` and `$dynamic-workflow` are the v0.2.1 consolidated route
|
|
73
|
+
for that behavior. They load `/lazyclaude:dynamic-workflow` / `Skill(ulw-loop)`,
|
|
74
|
+
then map subagent delegation to `prometheus-planner`, `boulder-executor`,
|
|
75
|
+
`oracle-verifier`, `qa-runner`, `quality-reviewer`, and `librarian-researcher`.
|
|
76
|
+
Run `lazyclaude-ai workflow-check --json` to verify the hook route, goal
|
|
77
|
+
guidance, Dynamic workflow guidance, and subagent delegation text before full QA.
|
|
78
|
+
|
|
69
79
|
Plain `ulw` therefore activates hook context, not a visible Skill tool call.
|
|
70
80
|
For a visible LazyClaude command/skill invocation, use the namespaced Claude
|
|
71
81
|
Code commands. The shorter slash aliases above are also recognized by the prompt
|
|
@@ -74,6 +84,7 @@ hook so they route to the same discipline instead of falling through to plain
|
|
|
74
84
|
|
|
75
85
|
```text
|
|
76
86
|
/lazyclaude:ulw-loop <goal>
|
|
87
|
+
/lazyclaude:dynamic-workflow <parallel or delegated objective>
|
|
77
88
|
/lazyclaude:ulw-plan <planning brief>
|
|
78
89
|
/lazyclaude:start-work plans/lazyclaude-retrofit.md
|
|
79
90
|
```
|
package/docs/migration.md
CHANGED
|
@@ -15,6 +15,7 @@ conservative local fallback where it does not.
|
|
|
15
15
|
| Durable goal runtime | Package CLI plus local state | `ultragoal` writes criteria, evidence, checkpoints, steering, and blockers under `.omo/ultragoal/` |
|
|
16
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 |
|
|
17
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 |
|
|
18
|
+
| Dynamic workflow readiness | Claude Code command plus package diagnostic | `/dynamic-workflow` and `workflow-check --json` verify goal, Dynamic workflow, and subagent delegation surfaces |
|
|
18
19
|
| Hooks | Claude Code hooks | `plugins/lazyclaude/hooks/hooks.json` |
|
|
19
20
|
| MCP helpers | Claude Code plugin MCP config | `plugins/lazyclaude/.mcp.json` |
|
|
20
21
|
| LSP integration | Claude Code plugin LSP config | `plugins/lazyclaude/.lsp.json` |
|
|
@@ -72,6 +73,17 @@ execution, bind each lane to criteria and evidence, and use `EnterWorktree` for
|
|
|
72
73
|
isolated model-facing worktree lanes. When only the CLI surface is available,
|
|
73
74
|
the concrete isolated-lane launch form is `claude --worktree <short-name> --tmux`.
|
|
74
75
|
|
|
76
|
+
For v0.2.1, `/dynamic-workflow`, `$dynamic-workflow`, and
|
|
77
|
+
`/lazyclaude:dynamic-workflow` consolidate that behavior into one route. The
|
|
78
|
+
route keeps `/goal` user-controlled, calls model-facing goal tools only when
|
|
79
|
+
exposed, and maps subagent delegation to `prometheus-planner`,
|
|
80
|
+
`boulder-executor`, `oracle-verifier`, `qa-runner`, `quality-reviewer`, and
|
|
81
|
+
`librarian-researcher`. Operators can verify availability with:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
lazyclaude-ai workflow-check --json
|
|
85
|
+
```
|
|
86
|
+
|
|
75
87
|
## v0.2.0 Review And Ultragoal Parity
|
|
76
88
|
|
|
77
89
|
The v0.2.0 workflow parity surface is local-first and evidence-bound. It does
|
package/package.json
CHANGED
|
@@ -39,6 +39,7 @@ const writeContext = (additionalContext, systemMessage) => {
|
|
|
39
39
|
|
|
40
40
|
const workflowTriggers = [
|
|
41
41
|
{ pattern: /(?:^|\s)(?:\$|\/(?:lazyclaude:)?)deep-interview(?=$|[^\w-])/u, command: "/lazyclaude:deep-interview", skill: "Skill(deep-interview)", discipline: "deep-interview" },
|
|
42
|
+
{ pattern: /(?:^|\s)(?:\$|\/(?:lazyclaude:)?)dynamic-workflow(?=$|[^\w-])/u, command: "/lazyclaude:dynamic-workflow", skill: "Skill(ulw-loop)", discipline: "dynamic-workflow" },
|
|
42
43
|
{ pattern: /(?:^|\s)(?:\$|\/(?:lazyclaude:)?)ulw-plan(?=$|[^\w-])/u, command: "/lazyclaude:ulw-plan", skill: "Skill(ulw-plan)", discipline: "ulw-plan" },
|
|
43
44
|
{ pattern: /(?:^|\s)(?:\$|\/(?:lazyclaude:)?)ulw-loop(?=$|[^\w-])/u, command: "/lazyclaude:ulw-loop", skill: "Skill(ulw-loop)", discipline: "ulw-loop" },
|
|
44
45
|
{ pattern: /(?:^|\s)(?:\$|\/(?:lazyclaude:)?)start-work(?=$|[^\w-])/u, command: "/lazyclaude:start-work", skill: "Skill(start-work)", discipline: "start-work" },
|
|
@@ -63,6 +64,7 @@ const ultraworkContext = ({ command, skill, discipline }) => [
|
|
|
63
64
|
"Do not auto-type or inject the user's slash commands; treat /goal as Claude Code's native goal surface, not as prompt text for this hook to send.",
|
|
64
65
|
"Dynamic workflow integration: when Claude Code exposes the Workflow tool and the task is broad, risky, parallel, or long-running, call the Workflow tool before serial execution and bind each lane to explicit criteria, artifacts, and cleanup receipts.",
|
|
65
66
|
"Dynamic worktree integration: when Claude Code exposes EnterWorktree and isolated edits are needed, use EnterWorktree for the selected lane; otherwise use or recommend claude --worktree <short-name> --tmux. Never mutate unrelated user state.",
|
|
67
|
+
"Subagent delegation: route planning to prometheus-planner, implementation to boulder-executor, verification to oracle-verifier, hands-on QA to qa-runner, code/security review to quality-reviewer, and local-first research to librarian-researcher when Claude Code subagents or Dynamic workflow lanes are available.",
|
|
66
68
|
].join(" ");
|
|
67
69
|
|
|
68
70
|
const input = readInput();
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Verify and run LazyClaude Dynamic workflow delegation.
|
|
3
|
+
argument-hint: '<objective>'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Use the `ulw-loop` skill for the user's current objective, with this
|
|
7
|
+
Dynamic-workflow bootstrap first.
|
|
8
|
+
|
|
9
|
+
1. Inspect native goal state when model-facing tools are exposed: call
|
|
10
|
+
`get_goal`, call `create_goal` only when no matching active goal exists, and
|
|
11
|
+
reserve `update_goal` for verified completion or a genuine blocker. If only
|
|
12
|
+
the user-visible goal surface is available, ask for one exact
|
|
13
|
+
`/goal <completion condition>` instead of claiming LazyClaude set it.
|
|
14
|
+
2. Run `lazyclaude-ai workflow-check --json` when the package CLI is available.
|
|
15
|
+
Treat a failing check as BLOCKED until the missing route, command, or
|
|
16
|
+
subagent delegation surface is fixed.
|
|
17
|
+
3. For broad, risky, parallel, or long-running work, call the `Workflow` tool
|
|
18
|
+
when Claude Code exposes it. Bind each lane to success criteria, evidence
|
|
19
|
+
artifacts, and cleanup receipts.
|
|
20
|
+
4. Use subagent delegation where available:
|
|
21
|
+
- `prometheus-planner` for read-only planning and dependency ordering.
|
|
22
|
+
- `boulder-executor` for implementation against a checked plan.
|
|
23
|
+
- `oracle-verifier` for evidence and acceptance verification.
|
|
24
|
+
- `qa-runner` for tmux/manual-QA scenarios and cleanup receipts.
|
|
25
|
+
- `quality-reviewer` for code-quality and security findings.
|
|
26
|
+
- `librarian-researcher` for local-first context mining.
|
|
27
|
+
5. For isolated edit lanes, use `EnterWorktree` when exposed. If only the CLI
|
|
28
|
+
surface exists, use or recommend `claude --worktree <short-name> --tmux`.
|
|
29
|
+
|
|
30
|
+
Do not auto-type `/goal`, do not echo or execute prompt text, and do not mutate
|
|
31
|
+
remote state. Continue through the normal LazyClaude evidence loop:
|
|
32
|
+
`PIN -> RED -> GREEN -> VERIFY -> SURFACE -> REVIEW -> CLEAN -> RECORD`.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
import { spawnSync } from "node:child_process";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
|
|
5
|
+
const includesAll = (text, terms) => terms.every((term) => text.includes(term));
|
|
6
|
+
|
|
7
|
+
const readText = (path) => readFileSync(path, "utf8");
|
|
8
|
+
|
|
9
|
+
const runHookProbe = (root) => {
|
|
10
|
+
const hookPath = join(root, "plugins", "lazyclaude", "bin", "lazyclaude-hook.js");
|
|
11
|
+
const result = spawnSync(process.execPath, [hookPath, "user-prompt-submit"], {
|
|
12
|
+
cwd: root,
|
|
13
|
+
encoding: "utf8",
|
|
14
|
+
input: JSON.stringify({
|
|
15
|
+
hook_event_name: "UserPromptSubmit",
|
|
16
|
+
prompt: "$dynamic-workflow verify delegation",
|
|
17
|
+
cwd: root,
|
|
18
|
+
}),
|
|
19
|
+
});
|
|
20
|
+
if (result.status !== 0) return "";
|
|
21
|
+
try {
|
|
22
|
+
return JSON.parse(result.stdout).hookSpecificOutput?.additionalContext ?? "";
|
|
23
|
+
} catch {
|
|
24
|
+
return "";
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export const createWorkflowCheckReport = (root, version) => {
|
|
29
|
+
const commandPath = join(root, "plugins", "lazyclaude", "commands", "dynamic-workflow.md");
|
|
30
|
+
const agentsPath = join(root, "docs", "agents.md");
|
|
31
|
+
const hookContext = runHookProbe(root);
|
|
32
|
+
const commandText = existsSync(commandPath) ? readText(commandPath) : "";
|
|
33
|
+
const agentsText = existsSync(agentsPath) ? readText(agentsPath) : "";
|
|
34
|
+
|
|
35
|
+
const checks = {
|
|
36
|
+
goalGuidance: includesAll(`${hookContext}\n${commandText}`, ["get_goal", "create_goal", "update_goal", "/goal"]),
|
|
37
|
+
dynamicWorkflowGuidance: includesAll(`${hookContext}\n${commandText}`, ["Workflow", "EnterWorktree", "claude --worktree"]),
|
|
38
|
+
subagentDelegation: includesAll(`${hookContext}\n${commandText}\n${agentsText}`, [
|
|
39
|
+
"prometheus-planner",
|
|
40
|
+
"boulder-executor",
|
|
41
|
+
"oracle-verifier",
|
|
42
|
+
"qa-runner",
|
|
43
|
+
]),
|
|
44
|
+
dynamicWorkflowCommand: existsSync(commandPath),
|
|
45
|
+
hookRoute: hookContext.includes("/lazyclaude:dynamic-workflow"),
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
const missing = Object.entries(checks)
|
|
49
|
+
.filter(([, passed]) => !passed)
|
|
50
|
+
.map(([name]) => name);
|
|
51
|
+
|
|
52
|
+
return {
|
|
53
|
+
status: missing.length === 0 ? "pass" : "fail",
|
|
54
|
+
version,
|
|
55
|
+
checks,
|
|
56
|
+
missing,
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export const runWorkflowCheckCli = (root, version, args, io = { stdout: process.stdout, stderr: process.stderr }) => {
|
|
61
|
+
const outputJson = args.includes("--json");
|
|
62
|
+
const report = createWorkflowCheckReport(root, version);
|
|
63
|
+
if (outputJson) {
|
|
64
|
+
io.stdout.write(`${JSON.stringify(report, null, 2)}\n`);
|
|
65
|
+
} else {
|
|
66
|
+
io.stdout.write(`WORKFLOW_CHECK_${report.status.toUpperCase()}\n`);
|
|
67
|
+
for (const [name, passed] of Object.entries(report.checks)) {
|
|
68
|
+
io.stdout.write(`${name}=${passed ? "pass" : "fail"}\n`);
|
|
69
|
+
}
|
|
70
|
+
if (report.missing.length) io.stdout.write(`missing=${report.missing.join(",")}\n`);
|
|
71
|
+
}
|
|
72
|
+
return report.status === "pass" ? 0 : 1;
|
|
73
|
+
};
|