lazyclaude-ai 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md 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.3-2ea44f" />
12
+ <img src="https://img.shields.io/badge/version-0.1.5-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>
@@ -19,7 +19,7 @@
19
19
  > [!NOTE]
20
20
  > LazyClaude is a quiet personal distribution for bringing LazyCodex-style prompt engineering into Claude Code. It installs as `lazyclaude@lazyclaude-ai`, so normal `claude` launches can load the LazyClaude skills and hooks without a long `--plugin-dir` command.
21
21
 
22
- The current public package is `lazyclaude-ai@0.1.3` for personal install
22
+ This checkout is prepared as `lazyclaude-ai@0.1.5` for personal install
23
23
  convenience. The repo can remain private and quiet; publishing to npm here does
24
24
  not imply public repo promotion, marketplace publication, or advertisement.
25
25
  Future package releases still require explicit user approval.
@@ -30,7 +30,7 @@ Future package releases still require explicit user approval.
30
30
  - **ULW prompt hooks** - type `ulw`, `ultrawork`, `$ulw-plan`, or `$ulw-loop`
31
31
  - **Native goal guidance** - ULW context points Claude toward `/goal` or
32
32
  model-facing `get_goal`, `create_goal`, and delayed `update_goal` when those
33
- surfaces exist
33
+ surfaces exist, and gives a clear fallback when goal tools are unavailable
34
34
  - **Dynamic workflow/worktree guidance** - large or parallel tasks are steered
35
35
  toward Claude Code Dynamic workflow orchestration and Dynamic worktree
36
36
  isolation
@@ -49,14 +49,14 @@ npx --yes lazyclaude-ai install
49
49
  ```
50
50
 
51
51
  If you are currently inside this repository checkout, which has the same
52
- package name as the registry package, `npx --yes lazyclaude-ai@0.1.3 install`
52
+ package name as the registry package, `npx --yes lazyclaude-ai@0.1.5 install`
53
53
  can resolve the local same-name source checkout and fail with
54
54
  `sh: lazyclaude-ai: command not found`. From a fresh directory, the normal
55
55
  install command works:
56
56
 
57
57
  ```bash
58
58
  cd /tmp
59
- npx --yes lazyclaude-ai@0.1.3 install
59
+ npx --yes lazyclaude-ai@0.1.5 install
60
60
  ```
61
61
 
62
62
  Validate the installed plugin:
@@ -134,9 +134,14 @@ LazyClaude does not auto-type `/goal` or send slash command text for you.
134
134
  Instead, the hook and ULW skills add run-context guidance: use Claude Code's
135
135
  native goal surface when available, inspect `get_goal`, call `create_goal` only
136
136
  when no matching goal is active, and reserve `update_goal` for verified
137
- completion or a genuine blocker. For large independent work, the guidance also
138
- points Claude toward Dynamic workflow orchestration and Dynamic worktree
139
- isolation.
137
+ completion or a genuine blocker. When goal tools are unavailable or not exposed,
138
+ LazyClaude now tells Claude to say that plainly and ask you to bind the native
139
+ session goal with an exact `/goal <completion condition>` before long execution.
140
+ For large independent work, LazyClaude applies the same principle to Claude
141
+ Code's available orchestration surfaces: when `Workflow` is exposed, call the
142
+ `Workflow` tool; when isolated edits need a model-facing worktree lane, use
143
+ `EnterWorktree`. If only the CLI surface is available for a fresh isolated lane,
144
+ use `claude --worktree <short-name> --tmux`.
140
145
 
141
146
  Plain `ulw` is hook context activation. Claude may still show it as hook
142
147
  guidance rather than a separate Skill tool invocation in history. Use visible
@@ -148,6 +153,10 @@ namespaced commands when you want explicit LazyClaude skill activation:
148
153
  /lazyclaude:start-work plans/lazyclaude-retrofit.md
149
154
  ```
150
155
 
156
+ Those namespaced commands are shipped as real Claude Code command files under
157
+ `plugins/lazyclaude/commands/`, so `/lazyclaude:ulw-loop` should load the
158
+ command body, then the matching skill guidance.
159
+
151
160
  ## Commands
152
161
 
153
162
  | Command | Purpose |
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.3-2ea44f" />
12
+ <img src="https://img.shields.io/badge/version-0.1.5-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>
@@ -23,7 +23,7 @@
23
23
  > [!NOTE]
24
24
  > LazyClaude는 LazyCodex 스타일의 prompt engineering을 Claude Code로 가져오기 위한 조용한 개인용 배포판입니다. `lazyclaude@lazyclaude-ai`로 설치되므로, 매번 긴 `--plugin-dir` 없이 일반 `claude` 실행에서 LazyClaude skill과 hook을 불러올 수 있습니다.
25
25
 
26
- 현재 공개 npm 패키지는 `lazyclaude-ai@0.1.3`입니다. 목적은 다른 PC에서도
26
+ 현재 checkout은 `lazyclaude-ai@0.1.5` 배포용으로 준비되어 있습니다. 목적은 다른 PC에서도
27
27
  빠르게 설치하기 위한 개인용 배포물입니다. 저장소는 비공개 저장소로
28
28
  유지할 수 있고, npm 배포가 곧 홍보, 공개 저장소 운영, Claude marketplace
29
29
  등록을 의미하지는 않습니다. 새 버전 배포는 항상 별도의 명시적 승인 후에
@@ -35,7 +35,7 @@
35
35
  - **ULW prompt hook** - `ulw`, `ultrawork`, `$ulw-plan`, `$ulw-loop` 트리거
36
36
  - **Native goal guidance** - Claude Code가 `/goal` 또는 `get_goal`,
37
37
  `create_goal`, `update_goal` 같은 goal surface를 제공하면 이를 우선
38
- 사용하도록 유도
38
+ 사용하도록 유도하고, goal tools are unavailable 상황의 fallback도 명시
39
39
  - **Dynamic workflow/worktree guidance** - 크거나 병렬적인 작업은 Claude
40
40
  Code Dynamic workflow와 Dynamic worktree 격리 쪽으로 유도
41
41
  - **Claude skills** - `ulw-plan`, `ulw-loop`, `start-work`, `rules`, `lsp`, `programming`, `review-work`
@@ -54,13 +54,13 @@ npx --yes lazyclaude-ai install
54
54
 
55
55
  현재 위치가 이 저장소 checkout이면, registry package와 같은 package name을
56
56
  가진 same-name source checkout 안에 있는 상태입니다. 이 경우
57
- `npx --yes lazyclaude-ai@0.1.3 install`이 local checkout을 먼저 해석해서
57
+ `npx --yes lazyclaude-ai@0.1.5 install`이 local checkout을 먼저 해석해서
58
58
  `sh: lazyclaude-ai: command not found`로 실패할 수 있습니다. 새 폴더에서는
59
59
  일반 설치 명령이 정상 동작합니다.
60
60
 
61
61
  ```bash
62
62
  cd /tmp
63
- npx --yes lazyclaude-ai@0.1.3 install
63
+ npx --yes lazyclaude-ai@0.1.5 install
64
64
  ```
65
65
 
66
66
  설치 상태를 확인합니다.
@@ -137,9 +137,14 @@ LazyClaude는 `/goal`을 대신 입력하거나 slash command text를 자동 전
137
137
  않습니다. 대신 hook과 ULW skill이 run context를 보강합니다. Claude Code의
138
138
  native goal surface가 있으면 `get_goal`을 먼저 확인하고, matching active
139
139
  goal이 없을 때만 `create_goal`을 호출하며, `update_goal`은 검증 완료 또는
140
- 진짜 blocker가 있을 때까지 미루도록 안내합니다. 독립 작업에서는 Dynamic
141
- workflow orchestration과 Dynamic worktree isolation도 함께 고려하도록
142
- 유도합니다.
140
+ 진짜 blocker가 있을 때까지 미루도록 안내합니다. goal tools are unavailable,
141
+ model-facing goal tools가 Claude Code session에 노출되지 않은 경우에는
142
+ 그 한계를 먼저 말하고, 긴 실행 전에 정확한 `/goal <completion condition>`로
143
+ native session goal을 묶어달라고 요청하도록 했습니다. 큰 독립 작업에서는
144
+ 같은 원칙을 Claude Code가 노출한 orchestration surface에 적용합니다.
145
+ `Workflow`가 노출되면 `Workflow` tool을 호출하고, isolated edit lane이
146
+ model-facing worktree를 필요로 하면 `EnterWorktree`를 사용합니다. CLI surface만
147
+ 가능한 새 격리 lane에서는 `claude --worktree <short-name> --tmux`를 사용합니다.
143
148
 
144
149
  단순히 `ulw`라고 입력하는 것은 hook context activation입니다. Claude Code
145
150
  history에는 별도 Skill tool invocation이 아니라 hook guidance로 보일 수
@@ -152,6 +157,10 @@ command를 사용합니다.
152
157
  /lazyclaude:start-work plans/lazyclaude-retrofit.md
153
158
  ```
154
159
 
160
+ 이 namespaced command들은 `plugins/lazyclaude/commands/` 아래 실제 Claude Code
161
+ command file로 배포됩니다. 따라서 `/lazyclaude:ulw-loop`는 command body를 먼저
162
+ 로드하고, 이어서 대응 skill guidance를 따라가야 합니다.
163
+
155
164
  ## 명령어
156
165
 
157
166
  | 명령어 | 용도 |
@@ -1,7 +1,7 @@
1
1
  # LazyClaude Release Checklist
2
2
 
3
- Status: quiet public npm package `lazyclaude-ai@0.1.3` is published for
4
- personal install convenience after explicit user approval.
3
+ Status: this checkout is prepared for quiet public npm package
4
+ `lazyclaude-ai@0.1.5` after explicit user approval.
5
5
 
6
6
  DO NOT publish a new version of LazyClaude, run `npm publish`, push release
7
7
  tags, or add a remote Claude Code marketplace entry without explicit user
@@ -44,7 +44,7 @@ to type a generated command that shells out to `npx --yes lazyclaude-ai path` fo
44
44
  normal npm installs.
45
45
 
46
46
  Run fresh-machine QA from a fresh directory, not from this repository checkout.
47
- Inside the same-name source checkout, `npx --yes lazyclaude-ai@0.1.3 install`
47
+ Inside the same-name source checkout, `npx --yes lazyclaude-ai@0.1.5 install`
48
48
  can resolve the local package and fail with `sh: lazyclaude-ai: command not
49
49
  found`. Use `cd /tmp` for the fresh directory scenario, or use the explicit
50
50
  fresh-prefix form:
package/docs/hooks.md CHANGED
@@ -38,9 +38,18 @@ matching goal is active, and delay `update_goal` until verified completion or a
38
38
  genuine blocker. It may also point Claude toward the user-visible `/goal`
39
39
  surface, but it does not auto-type `/goal` or send slash command text.
40
40
 
41
- For broad work, the same context can steer Claude toward Dynamic workflow
42
- orchestration and Dynamic worktree isolation so independent work proceeds with
43
- bounded evidence paths and without mutating unrelated workspace state.
41
+ If goal tools are unavailable or not exposed in the running Claude Code session,
42
+ the hook context tells Claude to say that explicitly and ask the user to bind the
43
+ native session goal with `/goal <completion condition>` before long execution.
44
+ LazyClaude then continues with its ledger fallback when the user declines or the
45
+ surface is absent.
46
+
47
+ For broad work, the same context ports the LazyCodex model-facing principle to
48
+ Claude Code's exposed orchestration surfaces: if `Workflow` is available, call
49
+ the `Workflow` tool before serial execution and bind every lane to evidence and
50
+ cleanup. If isolated edits need a model-facing worktree lane, use
51
+ `EnterWorktree`; when only the CLI surface is available, the actionable launch
52
+ form is `claude --worktree <short-name> --tmux`.
44
53
 
45
54
  Plain `ulw` therefore activates hook context, not a visible Skill tool call.
46
55
  For a visible LazyClaude command/skill invocation, use the namespaced Claude
@@ -52,6 +61,8 @@ Code commands:
52
61
  /lazyclaude:start-work plans/lazyclaude-retrofit.md
53
62
  ```
54
63
 
64
+ These are real Claude Code command files in `plugins/lazyclaude/commands/`.
65
+
55
66
  ## Safety
56
67
 
57
68
  Hooks parse JSON from stdin and return JSON to Claude Code. The hook does not
package/docs/migration.md CHANGED
@@ -10,7 +10,7 @@ of surface, and a conservative local fallback where it does not.
10
10
  | Codex ultrawork plan mode | Claude Code skill plus planner agent | `ulw-plan` and `prometheus-planner` |
11
11
  | Codex execution loop | Claude Code skill plus executor agent | `ulw-loop`, `start-work`, and `boulder-executor` |
12
12
  | Codex 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 |
13
- | Codex parallel orchestration | Claude Code Dynamic workflow and Dynamic worktree surfaces | Use Dynamic workflow for broad independent work and Dynamic worktree isolation for risky or parallel edits |
13
+ | Codex 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 |
14
14
  | Codex hooks | Claude Code hooks | `plugins/lazyclaude/hooks/hooks.json` |
15
15
  | Codex MCP helpers | Claude Code plugin MCP config | `plugins/lazyclaude/.mcp.json` |
16
16
  | Codex LSP integration | Claude Code plugin LSP config | `plugins/lazyclaude/.lsp.json` |
@@ -54,11 +54,18 @@ Claude to inspect `get_goal`, create a goal with `create_goal` only when no
54
54
  matching active goal exists, and defer `update_goal` until the evidence gate has
55
55
  passed or a real blocker is recorded.
56
56
 
57
+ Current Claude Code sessions may not expose model-facing goal tools to the
58
+ model. When goal tools are unavailable or not exposed, LazyClaude should not
59
+ pretend the native goal was bound. It should state the limitation and ask the
60
+ user to run `/goal <completion condition>` before long-running ULW execution.
61
+
57
62
  When the user explicitly chooses Claude Code `/goal`, that native session goal
58
63
  remains user-visible and user-controlled. LazyClaude does not auto-type
59
- `/goal`. For multi-lane work, LazyClaude should prefer Dynamic workflow
60
- orchestration where available and Dynamic worktree isolation when parallel or
61
- risky edits might otherwise collide.
64
+ `/goal`. For multi-lane work, LazyClaude follows the same model-facing tool
65
+ principle where Claude Code exposes it: call the `Workflow` tool before serial
66
+ execution, bind each lane to criteria and evidence, and use `EnterWorktree` for
67
+ isolated model-facing worktree lanes. When only the CLI surface is available,
68
+ the concrete isolated-lane launch form is `claude --worktree <short-name> --tmux`.
62
69
 
63
70
  If OMC/omc is already installed in Claude Code, keep it disabled or start a
64
71
  separate Claude Code session without OMC while testing LazyClaude. This repo no
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lazyclaude-ai",
3
- "version": "0.1.4",
3
+ "version": "0.1.5",
4
4
  "description": "Claude Code-native LazyCodex-style workflow distribution.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "lazyclaude",
3
3
  "description": "Claude Code-native LazyCodex-style workflow plugin.",
4
- "version": "0.1.3",
4
+ "version": "0.1.5",
5
5
  "author": {
6
6
  "name": "LazyClaude contributors"
7
7
  },
@@ -41,10 +41,11 @@ const ultraworkContext = [
41
41
  "ULTRAWORK MODE ENABLED.",
42
42
  "Treat this prompt as an explicit request to use LazyClaude ulw-loop discipline now; load or follow /lazyclaude:ulw-loop / Skill(ulw-loop) semantics before ordinary task execution.",
43
43
  "Use evidence-bound planning, tests, manual QA, and cleanup receipts.",
44
- "Native goal integration: when Claude Code exposes /goal or model-facing goal tools, first inspect get_goal, call create_goal with an objective-only payload when no matching goal is active, and reserve update_goal for verified completion or a genuine blocker.",
44
+ "Native goal tool integration: only when Claude Code exposes model-facing goal tools, first inspect get_goal, call create_goal with an objective-only payload when no matching goal is active, and reserve update_goal for verified completion or a genuine blocker.",
45
+ "Native /goal fallback: if model-facing goal tools are unavailable or not exposed, say so explicitly and ask the user to bind the native Claude Code goal with /goal <completion condition>; continue with the LazyClaude ledger fallback when they decline or the surface is absent.",
45
46
  "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.",
46
- "Dynamic workflow: for large independent work, prefer Claude Code Dynamic workflows or subagents with explicit criteria and artifacts.",
47
- "Dynamic worktree: isolate risky or parallel edits in the active Claude Code worktree/workspace and never mutate unrelated user state.",
47
+ "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.",
48
+ "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.",
48
49
  ].join(" ");
49
50
 
50
51
  const input = readInput();
@@ -0,0 +1,21 @@
1
+ ---
2
+ description: Execute a checked plan with LazyClaude start-work discipline.
3
+ argument-hint: '<plan-file>'
4
+ ---
5
+
6
+ Use the `start-work` skill for the user's current plan file or command
7
+ arguments.
8
+
9
+ Before the first checkbox, bootstrap Claude Code-native workflow state:
10
+
11
+ - Use `get_goal` and `create_goal` only if model-facing goal tools are exposed.
12
+ - If goal tools are unavailable, ask the user to set a native `/goal` completion
13
+ condition for the plan before multi-turn execution.
14
+ - For broad, risky, parallel, or long-running checkbox waves, call the
15
+ `Workflow` tool when Claude Code exposes it.
16
+ - For isolated edit lanes, use `EnterWorktree` when exposed; otherwise launch
17
+ or recommend `claude --worktree <short-name> --tmux`.
18
+
19
+ Then execute the first unchecked top-level checkbox with failing-test-first
20
+ implementation, automated verification, manual QA evidence, cleanup receipts,
21
+ and ledger updates.
@@ -0,0 +1,24 @@
1
+ ---
2
+ description: Run LazyClaude ULW loop discipline with goal and Dynamic workflow bootstrap.
3
+ argument-hint: '<objective>'
4
+ ---
5
+
6
+ Use the `ulw-loop` skill for the user's current objective or command arguments.
7
+
8
+ Before implementation, bootstrap Claude Code-native workflow state:
9
+
10
+ 1. If model-facing goal tools are available in this session, inspect `get_goal`,
11
+ call `create_goal` only when no matching goal exists, and reserve
12
+ `update_goal` for verified completion or a genuine blocker.
13
+ 2. If goal tools are unavailable, state that plainly and ask the user to bind
14
+ the native Claude Code goal with this exact surface before long execution:
15
+ `/goal <completion condition for the current objective>`.
16
+ 3. For broad, risky, parallel, or long-running work, call the `Workflow` tool
17
+ when Claude Code exposes it. Bind every lane to explicit criteria, evidence
18
+ artifacts, and cleanup receipts.
19
+ 4. When isolated edits are needed, use `EnterWorktree` when Claude Code exposes
20
+ it. If only the CLI surface is available, tell the user the concrete launch
21
+ form: `claude --worktree <short-name> --tmux`.
22
+
23
+ Then continue with evidence-bound success criteria, tests, manual QA artifacts,
24
+ cleanup receipts, and explicit release approval boundaries.
@@ -0,0 +1,22 @@
1
+ ---
2
+ description: Plan LazyClaude work with explicit goal, Dynamic workflow, and QA criteria.
3
+ argument-hint: '<planning brief>'
4
+ ---
5
+
6
+ Use the `ulw-plan` skill for the user's current planning brief or command
7
+ arguments.
8
+
9
+ The plan must include Claude Code-native bootstrap steps:
10
+
11
+ - If model-facing goal tools are exposed, use `get_goal`, `create_goal`, and
12
+ delayed `update_goal` exactly as native goal state, not as slash-command text.
13
+ - If goal tools are unavailable, include the exact user-visible `/goal`
14
+ completion condition to bind before execution.
15
+ - For independent, risky, parallel, or long-running work, include when Claude
16
+ should call the `Workflow` tool and how each lane proves its evidence.
17
+ - For isolated edit lanes, include when to use `EnterWorktree`; if only the CLI
18
+ surface is available, include `claude --worktree <short-name> --tmux`, plus
19
+ evidence paths and cleanup.
20
+
21
+ Write the plan under `plans/` and keep it executable: concrete files, tests,
22
+ manual QA, cleanup, and publish/remote-mutation guardrails.
@@ -27,6 +27,14 @@ and verification gates are complete or the plan is genuinely blocked. If the
27
27
  user invokes `/goal`, respect that native Claude Code session goal; LazyClaude
28
28
  does not auto-type or send `/goal` text.
29
29
 
30
- For independent checkbox waves, prefer Dynamic workflow orchestration or
31
- subagents with explicit evidence paths. For risky or parallel edits, use
32
- Dynamic worktree isolation and keep every command in the selected worktree.
30
+ If goal tools are unavailable or not exposed in this Claude Code session, state
31
+ that limitation before execution and ask the user to bind a native
32
+ `/goal <plan completion condition>` when the plan is long-running. Continue with
33
+ the Boulder and ledger fallback when no native goal can be bound.
34
+
35
+ For broad, risky, parallel, or long-running checkbox waves, use Dynamic workflow
36
+ orchestration and call `Workflow` when Claude Code exposes it. Each workflow lane must have explicit evidence
37
+ paths and cleanup receipts. For risky or parallel edits, use Dynamic worktree
38
+ isolation: call `EnterWorktree` when it is exposed, keep every command in the
39
+ selected worktree, and when only the CLI surface is available use or recommend
40
+ `claude --worktree <short-name> --tmux`.
@@ -22,8 +22,16 @@ only after every success criterion has real evidence or when the work is truly
22
22
  blocked. If the user chooses `/goal`, treat it as Claude Code's native session
23
23
  goal command; LazyClaude must not auto-type or send `/goal` text for them.
24
24
 
25
- For broad work, consider Claude Code Dynamic workflow orchestration before
26
- serial execution. Keep each worker or workflow branch tied to concrete criteria,
27
- artifacts, and cleanup receipts. Use Dynamic worktree isolation for risky or
28
- parallel edits, and keep all mutations inside the active Claude Code
29
- workspace/worktree.
25
+ If goal tools are unavailable or not exposed in this Claude Code session, state
26
+ that limitation explicitly. Before long execution, ask the user to bind the
27
+ native Claude Code goal with a concrete `/goal <completion condition>` command,
28
+ then continue with a local ledger fallback when they choose not to.
29
+
30
+ For broad, risky, parallel, or long-running work, use Dynamic workflow
31
+ orchestration and call the `Workflow` tool when Claude Code exposes it instead
32
+ of merely mentioning workflow guidance. Keep each worker or workflow branch tied
33
+ to concrete criteria, artifacts, and cleanup receipts. Use Dynamic worktree
34
+ isolation for risky or parallel edits: call
35
+ `EnterWorktree` when Claude Code exposes it, keep all mutations inside the active
36
+ Claude Code workspace/worktree, and when only the CLI surface is available use
37
+ or recommend `claude --worktree <short-name> --tmux`.
@@ -14,9 +14,12 @@ Use Claude Code surfaces directly:
14
14
  - use subagents only for read-only research or plan review
15
15
  - include native goal handling: `get_goal`, `create_goal`, and delayed
16
16
  `update_goal` when Claude Code exposes those tools, or a user-managed `/goal`
17
- condition when the user chooses that surface
17
+ condition when goal tools are unavailable or not exposed
18
18
  - include Dynamic workflow and Dynamic worktree guidance for independent,
19
- parallel, risky, or long-running implementation lanes
19
+ parallel, risky, or long-running implementation lanes: call `Workflow` when
20
+ Claude Code exposes it, call `EnterWorktree` when isolated edits
21
+ need a model-facing worktree lane, and include
22
+ `claude --worktree <short-name> --tmux` when only the CLI surface is available
20
23
  - write only plan artifacts and drafts
21
24
  - include concrete tests, manual QA, cleanup, and non-publish guardrails
22
25
 
@@ -91,7 +91,7 @@ echo "DOCTOR_PASS" >> "$EVIDENCE"
91
91
 
92
92
  if command -v claude >/dev/null 2>&1; then
93
93
  run_step CLAUDE_PLUGIN_DETAILS claude plugin details lazyclaude@lazyclaude-ai
94
- if ! grep -q "Skills (7)" "$EVIDENCE" || ! grep -q "ulw-loop" "$EVIDENCE" || ! grep -q "ulw-plan" "$EVIDENCE" || ! grep -q "Hooks (4)" "$EVIDENCE"; then
94
+ if ! grep -Eq "Skills \\([0-9]+\\)" "$EVIDENCE" || ! grep -q "ulw-loop" "$EVIDENCE" || ! grep -q "ulw-plan" "$EVIDENCE" || ! grep -q "Hooks (4)" "$EVIDENCE"; then
95
95
  echo "CLAUDE_PLUGIN_DETAILS_FAIL: expected LazyClaude skills/hooks inventory" >> "$EVIDENCE"
96
96
  echo "CLAUDE_PLUGIN_DETAILS_FAIL"
97
97
  exit 1