litclaude-ai 0.3.30 → 0.3.32
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 +22 -0
- package/README.md +45 -8
- package/README_ko-KR.md +6 -6
- package/RELEASE_CHECKLIST.md +36 -9
- package/bin/litclaude-ai.js +14 -1
- package/docs/hooks.md +51 -4
- package/docs/migration.md +1 -1
- package/package.json +1 -1
- package/plugins/litclaude/.claude-plugin/plugin.json +3 -3
- package/plugins/litclaude/agents/boulder-executor.md +18 -0
- package/plugins/litclaude/bin/litclaude-hook.js +138 -3
- package/plugins/litclaude/bin/litclaude-mcp.js +1 -1
- package/plugins/litclaude/commands/lit-loop.md +7 -0
- package/plugins/litclaude/commands/start-work.md +31 -0
- package/plugins/litclaude/hooks/hooks.json +51 -2
- package/plugins/litclaude/lib/context-pressure.mjs +12 -2
- package/plugins/litclaude/lib/litgoal/autoloop.mjs +71 -8
- package/plugins/litclaude/lib/litgoal/cli.mjs +14 -1
- package/plugins/litclaude/lib/start-work-cli.mjs +162 -0
- package/plugins/litclaude/lib/start-work-continuation.mjs +12 -11
- package/plugins/litclaude/lib/start-work-lifecycle.mjs +1139 -0
- package/plugins/litclaude/skills/lit-loop/SKILL.md +11 -0
- package/plugins/litclaude/skills/start-work/SKILL.md +70 -1
- package/plugins/litclaude/skills/visual-qa/SKILL.md +29 -2
- package/scripts/doctor.mjs +6 -0
- package/scripts/qa-portable-install.sh +1 -1
- package/scripts/validate-plugin.mjs +3 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.3.32 - 2026-07-23 — bounded-authority start-work lifecycle
|
|
4
|
+
|
|
5
|
+
- Added a code-owned schema-3 start-work runtime with canonical authority roots,
|
|
6
|
+
semantic grants, monotonic revisions, idempotency, lock ownership, and durable
|
|
7
|
+
ledger reconciliation.
|
|
8
|
+
- Enforced active authority through Claude Code PreToolUse, exact single-use
|
|
9
|
+
UserPromptSubmit resume grants, and fail-closed forbidden release boundaries.
|
|
10
|
+
- Bound root sessions, subagent lanes, Claude-owned worktrees, fenced-safe plan
|
|
11
|
+
progress, and bounded Stop continuation receipts into completion checks.
|
|
12
|
+
- Kept zero-dependency CI executable without lockfile-only npm setup, made Stop
|
|
13
|
+
re-entry non-blocking with fresh normal-event progress checks, and made invalid
|
|
14
|
+
no-state resume attempts side-effect-free.
|
|
15
|
+
|
|
16
|
+
## 0.3.31 - 2026-07-22 — litgoal lifecycle and visual QA hardening
|
|
17
|
+
|
|
18
|
+
- Made duplicate litgoal creation byte-preserving, required explicit replacement
|
|
19
|
+
for a different active objective, and rejected completion with empty criteria.
|
|
20
|
+
- Made all-pass autoloops complete and disarm durably with idempotent completion
|
|
21
|
+
receipts, repairable ledger writes, and fail-open preservation of corrupt counters.
|
|
22
|
+
- Clarified visual QA backend ownership, authentication boundaries, bounded waits,
|
|
23
|
+
advisory metrics, blocked states, and observed cleanup receipts.
|
|
24
|
+
|
|
3
25
|
## 0.3.30 - 2026-07-19 — LitResearch scientific records and public-reader hardening
|
|
4
26
|
|
|
5
27
|
- Added root-owned append-only claim/evidence records, bounded expansion and
|
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-litclaude--ai-cb3837" />
|
|
12
|
-
<img src="https://img.shields.io/badge/version-0.3.
|
|
12
|
+
<img src="https://img.shields.io/badge/version-0.3.32-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,10 +22,10 @@
|
|
|
22
22
|
> `litclaude@litclaude-ai`, so normal `claude` launches can load the
|
|
23
23
|
> LitClaude skills and hooks without a long `--plugin-dir` command.
|
|
24
24
|
|
|
25
|
-
This checkout is prepared as `litclaude-ai@0.3.
|
|
25
|
+
This checkout is prepared as `litclaude-ai@0.3.32` 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.3.30 release material strengthens LitResearch with root-owned scientific evidence records, DOI/PDF lifecycle receipts, bounded route coverage, and a connection-pinned public-source reader with inert-content and secret-redaction guarantees. The v0.3.29 release material bundles exact-source `lit-handoff` and `lit-scientific-visualization` skills with Claude-native commands, exact-bare hook invocation, visible LITBURN banners, installed-payload integrity checks, and read-only scientific dependency diagnostics. The v0.3.28 release material requires explicit leading start-work invocations so diagnostic or copied mentions remain inert. The v0.3.27 release material adds a structured, animated five-stage installer with a success or failure receipt while preserving deterministic automation output. The v0.3.26 release material adds adaptive objective-achievable planning, draft-plan review, and orchestration readiness hardening. The v0.3.25 release material aligns portable details, public-read, litgoal status JSON, and evidence wording. The v0.3.24 release material aligns auxiliary skill inventories and advisory probes. The v0.3.23
|
|
28
|
+
Future package releases still require explicit user approval. The v0.3.32 release material adds the code-owned schema-3 start-work lifecycle with canonical bounded authority, explicit single-use resume grants, PreToolUse enforcement, root/subagent lane identity, progress-bound Stop continuation receipts, and fail-closed release boundaries. The v0.3.31 release material hardens litgoal creation, replacement, completion, and autoloop receipts while making visual QA browser ownership, bounded waits, blocked states, and cleanup evidence explicit. The v0.3.30 release material strengthens LitResearch with root-owned scientific evidence records, DOI/PDF lifecycle receipts, bounded route coverage, and a connection-pinned public-source reader with inert-content and secret-redaction guarantees. The v0.3.29 release material bundles exact-source `lit-handoff` and `lit-scientific-visualization` skills with Claude-native commands, exact-bare hook invocation, visible LITBURN banners, installed-payload integrity checks, and read-only scientific dependency diagnostics. The v0.3.28 release material requires explicit leading start-work invocations so diagnostic or copied mentions remain inert. The v0.3.27 release material adds a structured, animated five-stage installer with a success or failure receipt while preserving deterministic automation output. The v0.3.26 release material adds adaptive objective-achievable planning, draft-plan review, and orchestration readiness hardening. The v0.3.25 release material aligns portable details, public-read, litgoal status JSON, and evidence wording. The v0.3.24 release material aligns auxiliary skill inventories and advisory probes. The v0.3.23
|
|
29
29
|
release materials inject the bundled skill bodies for bare `hyperplan`,
|
|
30
30
|
`litresearch`, `lit research`, `init-deep`, and explicit `$start-work` prompt-hook routes while
|
|
31
31
|
preserving the v0.3.19 adversarial planning skill, the v0.3.18 read-only `lit-recap` session recap surface, the v0.3.17 separate-worker native `/goal` launcher, the v0.3.16
|
|
@@ -131,7 +131,7 @@ directory, the normal install command works:
|
|
|
131
131
|
|
|
132
132
|
```bash
|
|
133
133
|
cd /tmp
|
|
134
|
-
npx --yes litclaude-ai@0.3.
|
|
134
|
+
npx --yes litclaude-ai@0.3.32 install
|
|
135
135
|
```
|
|
136
136
|
|
|
137
137
|
Validate the installed plugin:
|
|
@@ -144,7 +144,7 @@ The installer also sets Claude Code's `statusLine` command to the packaged
|
|
|
144
144
|
LitClaude HUD. A typical no-color render starts like:
|
|
145
145
|
|
|
146
146
|
```text
|
|
147
|
-
[🔥LITCLAUDE v0.3.
|
|
147
|
+
[🔥LITCLAUDE v0.3.32] | O4.8 │ ctx [▎░░] 9%/1000k │ 5h [▏░] 4% ↻2h15m │ 1w [▊░] 35% ↻3d6h │ git main +3 ✓
|
|
148
148
|
```
|
|
149
149
|
|
|
150
150
|
The `↻` suffix is a compact rate-limit reset countdown. It is separated from
|
|
@@ -332,12 +332,48 @@ When a long `$start-work` run is interrupted, compacted, or resumed in a new
|
|
|
332
332
|
terminal pane, use the continuation helper from the checkout:
|
|
333
333
|
|
|
334
334
|
```bash
|
|
335
|
-
litclaude-ai start-work-next --json
|
|
335
|
+
litclaude-ai start-work-next --session-id <claude-session> --json
|
|
336
336
|
```
|
|
337
337
|
|
|
338
338
|
It reads `.litclaude/boulder.json` and `.litclaude/start-work/ledger.jsonl`, then prints the
|
|
339
|
-
active plan, ledger path, and first unchecked top-level task.
|
|
340
|
-
|
|
339
|
+
active plan, ledger path, and first unchecked top-level task. Schema-3 state
|
|
340
|
+
requires the owning Claude session id and otherwise fails closed to idle. If the
|
|
341
|
+
plan is complete, it returns `{"status":"idle","directive":null}`.
|
|
342
|
+
|
|
343
|
+
Start-work now has a code-owned schema-3 bounded-authority lifecycle:
|
|
344
|
+
|
|
345
|
+
```bash
|
|
346
|
+
litclaude-ai start-work init --plan plans/example-plan.md --work-id work-1 --session-id <claude-session> --grant read:"$PWD" --grant write:"$PWD" --grant execute:"$PWD" --grant test:"$PWD" --idempotency-key init-1 --json
|
|
347
|
+
litclaude-ai start-work status --json
|
|
348
|
+
litclaude-ai start-work progress --work-id work-1 --session-id <claude-session> --expected-revision <n> --idempotency-key progress-1 --json
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
The runtime owns monotonic revisions, nonce/PID-owned locks, strict reconciliation,
|
|
352
|
+
canonical plan/worktree/authority roots, bounded state history, fenced-safe
|
|
353
|
+
top-level checkbox progress, and semantic action/root grants. Null worktree is
|
|
354
|
+
cwd only when cwd is authorized. A new non-forbidden authority boundary pauses
|
|
355
|
+
the work; forbidden release, registry, host-config, destructive VCS, commit,
|
|
356
|
+
push, publish, tag, and version-bump boundaries fail closed. Paused work cannot
|
|
357
|
+
complete.
|
|
358
|
+
|
|
359
|
+
Resume has no generic CLI or agent approval route. The trusted user submits exactly:
|
|
360
|
+
|
|
361
|
+
```text
|
|
362
|
+
/litclaude:start-work resume --work-id <id> --revision <n> --boundary-id <id> --prompt-id <id> --grant-id <id>
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
`UserPromptSubmit` validates the active Claude session, origin prompt, and exact
|
|
366
|
+
pending boundary, records the single-use consumed grant durably, and injects
|
|
367
|
+
bounded structured context without echoing prompt text. Official `PreToolUse`
|
|
368
|
+
enforces semantic action/root grants before execution; `PostToolUse` only
|
|
369
|
+
observes. Bash paths are canonicalized against their effective grant, while
|
|
370
|
+
outside operands, relocation flags, and shell forms requiring speculative
|
|
371
|
+
parsing are denied. Stop uses `prompt_id` and strict boolean `stop_hook_active`:
|
|
372
|
+
each normal Stop event re-evaluates current plan progress and emits once for a
|
|
373
|
+
new fingerprint, while host re-entry with `stop_hook_active: true` stays silent
|
|
374
|
+
instead of replaying stale blocking output. Subagent hooks
|
|
375
|
+
bind root-session, child-lane, and Claude-owned worktree identity; active lanes
|
|
376
|
+
gate completion.
|
|
341
377
|
|
|
342
378
|
For v0.2.0 workflow parity, `review-work` is the dedicated review route. It is a
|
|
343
379
|
5-lane review: scope/diff verification, tests/evidence execution,
|
|
@@ -470,6 +506,7 @@ unavailable capabilities are reported as `DEGRADED` with the affected workflow.
|
|
|
470
506
|
| `npx --yes litclaude-ai --version` | Print the packaged LitClaude version |
|
|
471
507
|
| `npx --yes litclaude-ai doctor` | Validate files, Claude plugin validation, and plugin details |
|
|
472
508
|
| `npx --yes litclaude-ai path` | Print the installed Claude plugin path |
|
|
509
|
+
| `npx --yes litclaude-ai start-work <command> --json` | Manage schema-3 bounded-authority work state |
|
|
473
510
|
| `npx --yes litclaude-ai public-read <url> --json` | Read a public source with SSRF/auth safety stops |
|
|
474
511
|
| `npx --yes litclaude-ai run -- --help` | Run plain `claude` after verifying install state |
|
|
475
512
|
| `npx --yes litclaude-ai update` | Reinstall the current package version |
|
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-litclaude--ai-cb3837" />
|
|
12
|
-
<img src="https://img.shields.io/badge/version-0.3.
|
|
12
|
+
<img src="https://img.shields.io/badge/version-0.3.32-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,11 +26,11 @@
|
|
|
26
26
|
> 설치되므로, 매번 긴 `--plugin-dir` 없이 일반 `claude` 실행에서
|
|
27
27
|
> LitClaude skill과 hook을 불러올 수 있습니다.
|
|
28
28
|
|
|
29
|
-
현재 checkout은 `litclaude-ai@0.3.
|
|
29
|
+
현재 checkout은 `litclaude-ai@0.3.32` 배포 준비용으로 정리되어 있습니다. 목적은
|
|
30
30
|
다른 PC에서도 빠르게 설치하기 위한 개인용 package metadata를 갖추는 것입니다.
|
|
31
31
|
npm package metadata를 준비했다고 해서 홍보, 공개 저장소 운영, Claude
|
|
32
32
|
marketplace 등록을 의미하지는 않습니다. 새 버전 배포는 항상 별도의 명시적
|
|
33
|
-
승인 후에 진행합니다. v0.3.30 release material은 root-owned scientific evidence record, DOI/PDF lifecycle receipt, bounded route coverage, connection-pinned public-source reader, inert-content 및 secret-redaction 보장을 포함하는 LitResearch 강화판입니다. v0.3.29 release material은 exact-source `lit-handoff`와 `lit-scientific-visualization` skill, Claude-native command, exact-bare hook invocation, visible LITBURN banner, installed-payload integrity check, read-only scientific dependency diagnostic을 함께 포함합니다. v0.3.28 release material은 start-work 호출을 prompt 선두의 명시적 invocation으로 제한해 진단문이나 복사된 언급을 비활성 상태로 유지합니다. v0.3.27 release material은 success/failure receipt와 deterministic automation output을 갖춘 5-stage animated installer를 추가합니다. v0.3.26 release material은 adaptive objective-achievable planning, draft-plan review, orchestration readiness hardening을 추가합니다. v0.3.25 release material은 portable details, public-read, litgoal status JSON, evidence wording을 정렬합니다. v0.3.24 release material은 auxiliary skill inventory와 advisory probe를 정렬합니다. v0.3.23 release material은 bare `hyperplan`,
|
|
33
|
+
승인 후에 진행합니다. v0.3.32 release material은 canonical bounded authority, single-use resume grant, PreToolUse enforcement, root/subagent lane identity, progress-bound Stop continuation receipt, fail-closed release boundary를 갖춘 code-owned schema-3 start-work lifecycle을 추가합니다. v0.3.31 release material은 litgoal 생성·교체·완료와 autoloop receipt를 강화하고 visual QA의 browser ownership, bounded wait, blocked state, cleanup evidence를 명확히 합니다. v0.3.30 release material은 root-owned scientific evidence record, DOI/PDF lifecycle receipt, bounded route coverage, connection-pinned public-source reader, inert-content 및 secret-redaction 보장을 포함하는 LitResearch 강화판입니다. v0.3.29 release material은 exact-source `lit-handoff`와 `lit-scientific-visualization` skill, Claude-native command, exact-bare hook invocation, visible LITBURN banner, installed-payload integrity check, read-only scientific dependency diagnostic을 함께 포함합니다. v0.3.28 release material은 start-work 호출을 prompt 선두의 명시적 invocation으로 제한해 진단문이나 복사된 언급을 비활성 상태로 유지합니다. v0.3.27 release material은 success/failure receipt와 deterministic automation output을 갖춘 5-stage animated installer를 추가합니다. v0.3.26 release material은 adaptive objective-achievable planning, draft-plan review, orchestration readiness hardening을 추가합니다. v0.3.25 release material은 portable details, public-read, litgoal status JSON, evidence wording을 정렬합니다. v0.3.24 release material은 auxiliary skill inventory와 advisory probe를 정렬합니다. v0.3.23 release material은 bare `hyperplan`,
|
|
34
34
|
`litresearch`, `lit research`, `init-deep`, explicit `$start-work` prompt-hook route에
|
|
35
35
|
bundled skill body를 주입하면서, v0.3.19 adversarial planning
|
|
36
36
|
skill, v0.3.18 read-only `lit-recap` session recap surface, v0.3.17 별도 worker 기반 native `/goal`
|
|
@@ -131,7 +131,7 @@ checkout을 먼저 해석해서 `sh: litclaude-ai: command not found`로 실패
|
|
|
131
131
|
|
|
132
132
|
```bash
|
|
133
133
|
cd /tmp
|
|
134
|
-
npx --yes litclaude-ai@0.3.
|
|
134
|
+
npx --yes litclaude-ai@0.3.32 install
|
|
135
135
|
```
|
|
136
136
|
|
|
137
137
|
설치 상태를 확인합니다.
|
|
@@ -144,7 +144,7 @@ installer는 Claude Code의 `statusLine` command도 packaged LitClaude HUD로
|
|
|
144
144
|
설정합니다. 색상을 제거한 예시는 다음처럼 시작합니다.
|
|
145
145
|
|
|
146
146
|
```text
|
|
147
|
-
[🔥LITCLAUDE v0.3.
|
|
147
|
+
[🔥LITCLAUDE v0.3.32] | O4.8 │ ctx [▎░░] 9%/1000k │ 5h [▏░] 4% ↻2h15m │ 1w [▊░] 35% ↻3d6h │ git main +3 ✓
|
|
148
148
|
```
|
|
149
149
|
|
|
150
150
|
`↻` 표시는 rate-limit reset까지 남은 시간을 짧게 보여주는 countdown입니다.
|
|
@@ -307,7 +307,7 @@ litclaude-ai workflow-check --json
|
|
|
307
307
|
checkout에서 continuation helper를 실행합니다.
|
|
308
308
|
|
|
309
309
|
```bash
|
|
310
|
-
litclaude-ai start-work-next --json
|
|
310
|
+
litclaude-ai start-work-next --session-id <claude-session> --json
|
|
311
311
|
```
|
|
312
312
|
|
|
313
313
|
이 명령은 `.litclaude/boulder.json`과 `.litclaude/start-work/ledger.jsonl`을 읽고 active
|
package/RELEASE_CHECKLIST.md
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
# LitClaude Release Checklist
|
|
2
2
|
|
|
3
|
-
Status: `litclaude-ai@0.3.
|
|
4
|
-
|
|
3
|
+
Status: `litclaude-ai@0.3.32` is the current release candidate — a code-owned
|
|
4
|
+
schema-3 start-work lifecycle with canonical bounded authority, single-use
|
|
5
|
+
resume grants, PreToolUse enforcement, root/subagent lane identity, bounded Stop
|
|
6
|
+
continuation receipts, and fail-closed release boundaries, plus guarded litgoal
|
|
7
|
+
creation and replacement, durable idempotent autoloop completion, and explicit
|
|
8
|
+
visual QA backend ownership, bounded waits, blocked states, and cleanup receipts,
|
|
9
|
+
plus root-owned scientific evidence records, DOI/PDF lifecycle receipts, bounded route coverage,
|
|
5
10
|
connection-pinned public-source reads, inert-content receipts, and deep secret
|
|
6
11
|
redaction, plus bundled
|
|
7
12
|
exact-source `lit-handoff` and `lit-scientific-visualization` skills with
|
|
@@ -23,9 +28,9 @@ side-effect-free, the launcher starts only a separate Claude Code
|
|
|
23
28
|
print/background worker, and the release preserves the Korean polishing
|
|
24
29
|
command, strict multi-agent review pipeline, fidelity guardrails, package
|
|
25
30
|
hygiene checks, native route gates, and safe start-work handoff behavior.
|
|
26
|
-
`package.json` is aligned to `0.3.
|
|
27
|
-
`plugins/litclaude/.claude-plugin/plugin.json` is aligned to `0.3.
|
|
28
|
-
plugin-local MCP server reports `0.3.
|
|
31
|
+
`package.json` is aligned to `0.3.32`,
|
|
32
|
+
`plugins/litclaude/.claude-plugin/plugin.json` is aligned to `0.3.32`, and the
|
|
33
|
+
plugin-local MCP server reports `0.3.32`.
|
|
29
34
|
|
|
30
35
|
This release carries the v0.2.2 Dynamic workflow hardening surfaces:
|
|
31
36
|
`/dynamic-workflow`, `workflow-check --json`, native `/goal` fallback guidance,
|
|
@@ -69,6 +74,28 @@ Use this track when testing from the current checkout:
|
|
|
69
74
|
|
|
70
75
|
No npm publication is required for this track.
|
|
71
76
|
|
|
77
|
+
## v0.3.32 Bounded-Authority Start-Work Gates
|
|
78
|
+
|
|
79
|
+
Before requesting publication approval, confirm schema-3 state remains
|
|
80
|
+
monotonic and reconciled, semantic action/root grants are canonicalized,
|
|
81
|
+
forbidden release actions fail closed, and only the exact single-use
|
|
82
|
+
`/litclaude:start-work resume` UserPromptSubmit route can resume paused work.
|
|
83
|
+
Confirm PreToolUse denies unauthorized tools before execution, root/subagent
|
|
84
|
+
lane identity gates completion, fenced examples do not count as plan progress,
|
|
85
|
+
normal Stop events re-evaluate progress while `stop_hook_active: true` re-entry
|
|
86
|
+
never replays a stale block, and an exact invalid no-state resume creates no
|
|
87
|
+
`.litclaude` state. Confirm the zero-dependency GitHub Actions path uses neither
|
|
88
|
+
lockfile-only npm caching nor a dependency-install step.
|
|
89
|
+
|
|
90
|
+
## v0.3.31 Litgoal Lifecycle and Visual QA Gates
|
|
91
|
+
|
|
92
|
+
Before requesting publication approval, confirm duplicate objectives remain
|
|
93
|
+
byte-preserving, different active objectives require explicit replacement, and
|
|
94
|
+
empty criteria cannot complete. Confirm all-pass autoloops complete and disarm
|
|
95
|
+
once with repairable ledger receipts, corrupt counters remain untouched on the
|
|
96
|
+
fail-open path, and visual QA uses only an owned project Playwright setup or an
|
|
97
|
+
explicit current-session Chrome binding with bounded waits and observed cleanup.
|
|
98
|
+
|
|
72
99
|
## v0.3.30 LitResearch and Public Reader Gates
|
|
73
100
|
|
|
74
101
|
Before requesting publication approval, confirm the installed LitResearch body
|
|
@@ -111,9 +138,9 @@ checkout and from an isolated install of the packed tarball:
|
|
|
111
138
|
Before requesting publication approval, confirm these artifacts from the current
|
|
112
139
|
checkout:
|
|
113
140
|
|
|
114
|
-
- `package.json` version is `0.3.
|
|
115
|
-
- `plugins/litclaude/.claude-plugin/plugin.json` version is `0.3.
|
|
116
|
-
- `plugins/litclaude/bin/litclaude-mcp.js` reports server version `0.3.
|
|
141
|
+
- `package.json` version is `0.3.32`.
|
|
142
|
+
- `plugins/litclaude/.claude-plugin/plugin.json` version is `0.3.32`.
|
|
143
|
+
- `plugins/litclaude/bin/litclaude-mcp.js` reports server version `0.3.32`.
|
|
117
144
|
- Prompt-hook tests cover bundled `SKILL.md` body injection for bare `hyperplan`, `litresearch`, `lit research`, `init-deep`, and explicit leading `$start-work`; diagnostic/copy mentions stay inert while leading natural-language `lit start work` stays BLOCKED.
|
|
118
145
|
- `lit search` and `lit query` route to `/litclaude:litresearch` without activating on slash mentions, code spans, or non-lit prompts.
|
|
119
146
|
- Litresearch web lanes require public API/feed preference, validator-first checks, route traces, prompt-injection quarantine, and honest auth/paywall/private-data stop reasons.
|
|
@@ -123,7 +150,7 @@ checkout:
|
|
|
123
150
|
- `node bin/litclaude-ai.js workflow-check --json` reports `status: pass`.
|
|
124
151
|
- `node bin/litclaude-ai.js workflow-check --json` reports
|
|
125
152
|
`subagentReliability` and `commandHookAgreement` as true.
|
|
126
|
-
- `node bin/litclaude-ai.js start-work-next --json` is available for active
|
|
153
|
+
- `node bin/litclaude-ai.js start-work-next --session-id <claude-session> --json` is available for active
|
|
127
154
|
`.litclaude/boulder.json` continuation state and returns idle when no task remains.
|
|
128
155
|
- PostToolUse hook tests cover patch-shaped mutated-file extraction.
|
|
129
156
|
- SessionStart hook tests cover context-pressure resume guidance.
|
package/bin/litclaude-ai.js
CHANGED
|
@@ -19,6 +19,7 @@ import { HUD_ACCENT_THEMES, normalizeHudAccent, themeForAccent } from "../plugin
|
|
|
19
19
|
import { readPublicSource } from "../plugins/litclaude/lib/public-source-reader/reader.mjs";
|
|
20
20
|
import { verifyBundledSkillsIntegrity } from "../plugins/litclaude/lib/bundled-skills-integrity.mjs";
|
|
21
21
|
import { runStartWorkContinuationCli } from "../plugins/litclaude/lib/start-work-continuation.mjs";
|
|
22
|
+
import { runStartWorkCli } from "../plugins/litclaude/lib/start-work-cli.mjs";
|
|
22
23
|
import { runLitgoalCli } from "../plugins/litclaude/lib/litgoal/cli.mjs";
|
|
23
24
|
import { runWorkflowCheckCli } from "../plugins/litclaude/lib/workflow-check.mjs";
|
|
24
25
|
|
|
@@ -26,7 +27,7 @@ const root = resolve(dirname(fileURLToPath(import.meta.url)), "..");
|
|
|
26
27
|
const packageJson = JSON.parse(readFileSync(join(root, "package.json"), "utf8"));
|
|
27
28
|
const version = packageJson.version;
|
|
28
29
|
|
|
29
|
-
const usage = `Usage: litclaude-ai [--dry-run] <install|doctor|path|run|update|uninstall|litgoal|workflow-check|start-work-next|public-read> [...args]
|
|
30
|
+
const usage = `Usage: litclaude-ai [--dry-run] <install|doctor|path|run|update|uninstall|litgoal|workflow-check|start-work|start-work-next|public-read> [...args]
|
|
30
31
|
litclaude-ai --version
|
|
31
32
|
|
|
32
33
|
Commands:
|
|
@@ -36,6 +37,7 @@ Commands:
|
|
|
36
37
|
run -- ... Run Claude Code after the global plugin install.
|
|
37
38
|
litgoal Manage litgoal runtime state and evidence.
|
|
38
39
|
workflow-check Verify Dynamic workflow, /goal, and subagent delegation readiness.
|
|
40
|
+
start-work Manage schema-3 bounded-authority lifecycle state.
|
|
39
41
|
start-work-next Print the next active start-work continuation directive.
|
|
40
42
|
public-read Read a public http(s) source with FetchAttempt/FetchVerdict JSON.
|
|
41
43
|
update Reinstall this package version and refresh the Claude plugin registry.
|
|
@@ -638,6 +640,10 @@ const verifyInstalledPayload = ({ home, litClaudeHome, targetPlugin }) => {
|
|
|
638
640
|
".claude-plugin/plugin.json",
|
|
639
641
|
"hooks/hooks.json",
|
|
640
642
|
"bin/litclaude-hook.js",
|
|
643
|
+
"lib/start-work-lifecycle.mjs",
|
|
644
|
+
"lib/start-work-cli.mjs",
|
|
645
|
+
"skills/start-work/SKILL.md",
|
|
646
|
+
"commands/start-work.md",
|
|
641
647
|
"bin/litclaude-scientific-visualization-doctor.js",
|
|
642
648
|
"skills/lit-handoff/SKILL.md",
|
|
643
649
|
"commands/lit-handoff.md",
|
|
@@ -793,6 +799,10 @@ const doctor = ({ dryRun }) => {
|
|
|
793
799
|
"hooks/hooks.json",
|
|
794
800
|
"bin/litclaude-hook.js",
|
|
795
801
|
"bin/litclaude-mcp.js",
|
|
802
|
+
"lib/start-work-lifecycle.mjs",
|
|
803
|
+
"lib/start-work-cli.mjs",
|
|
804
|
+
"skills/start-work/SKILL.md",
|
|
805
|
+
"commands/start-work.md",
|
|
796
806
|
"skills/lit-loop/SKILL.md",
|
|
797
807
|
"skills/lit-plan/SKILL.md",
|
|
798
808
|
"skills/lit-handoff/SKILL.md",
|
|
@@ -973,6 +983,9 @@ const main = async () => {
|
|
|
973
983
|
case "start-work-next":
|
|
974
984
|
process.exit(runStartWorkContinuationCli(root, parsed.rest));
|
|
975
985
|
break;
|
|
986
|
+
case "start-work":
|
|
987
|
+
process.exit(runStartWorkCli(parsed.rest, undefined, process.cwd()));
|
|
988
|
+
break;
|
|
976
989
|
case "uninstall":
|
|
977
990
|
uninstall(parsed);
|
|
978
991
|
break;
|
package/docs/hooks.md
CHANGED
|
@@ -10,7 +10,7 @@ contract_schema_version: litclaude.llm-contract.v1
|
|
|
10
10
|
artifact_type: hook-doc
|
|
11
11
|
surface: Claude Code plugin hooks
|
|
12
12
|
runtime: plugins/litclaude/bin/litclaude-hook.js
|
|
13
|
-
events: [SessionStart, UserPromptSubmit, PostToolUse, PostCompact, Stop]
|
|
13
|
+
events: [SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, PostCompact, Stop, SubagentStart, SubagentStop, SessionEnd]
|
|
14
14
|
verdicts: [PASS, FAIL, BLOCKED]
|
|
15
15
|
```
|
|
16
16
|
|
|
@@ -31,10 +31,13 @@ verdicts: [PASS, FAIL, BLOCKED]
|
|
|
31
31
|
| Event or route | Contract mode | Hard boundary |
|
|
32
32
|
| --- | --- | --- |
|
|
33
33
|
| `SessionStart` | rules bootstrap | Adds context only; no file mutation. |
|
|
34
|
-
| `UserPromptSubmit` | route classifier | Adds guidance only
|
|
34
|
+
| `UserPromptSubmit` | route classifier and explicit resume gate | Adds guidance; only the exact start-work resume route may mutate code-owned lifecycle state. |
|
|
35
|
+
| `PreToolUse` | bounded-authority enforcement | Allows normal Claude permission handling only for classified, authorized action/root pairs; otherwise denies before execution. |
|
|
35
36
|
| `PostToolUse` | post-edit reminder | Names touched paths and asks for checks; does not claim completion. |
|
|
36
37
|
| `PostCompact` | context reset | Emits a compact cache reminder only. |
|
|
37
|
-
| `Stop` | litgoal autoloop gate |
|
|
38
|
+
| `Stop` | start-work continuation, then litgoal autoloop gate | Root-session and progress-bound; no unbounded loop. |
|
|
39
|
+
| `SubagentStart` / `SubagentStop` | lane identity observation | Records the root session, child lane, and Claude-owned worktree without emitting child continuation. |
|
|
40
|
+
| `SessionEnd` | root-session receipt | Records the observed end and emits no continuation. |
|
|
38
41
|
|
|
39
42
|
## #contract.procedure
|
|
40
43
|
|
|
@@ -60,7 +63,7 @@ verdicts: [PASS, FAIL, BLOCKED]
|
|
|
60
63
|
|
|
61
64
|
- Do not echo dangerous prompt substrings, secrets, or command text into hook output.
|
|
62
65
|
- Do not claim native `/goal`, Dynamic workflow, EnterWorktree, MCP, LSP, or agent-team success unless Claude Code exposes and confirms that surface.
|
|
63
|
-
- Do not mutate files,
|
|
66
|
+
- Do not mutate files, host settings, registries, or remote state from UserPromptSubmit. The sole ledger exception is the exact trusted start-work resume route, which mutates only code-owned schema-3 lifecycle state after identity checks.
|
|
64
67
|
|
|
65
68
|
## #contract.anti_patterns
|
|
66
69
|
|
|
@@ -75,8 +78,52 @@ verdicts: [PASS, FAIL, BLOCKED]
|
|
|
75
78
|
| --- | --- | --- |
|
|
76
79
|
| `SessionStart` | `plugins/litclaude/bin/litclaude-hook.js session-start` | Adds a compact rules-loaded context line. |
|
|
77
80
|
| `UserPromptSubmit` | `plugins/litclaude/bin/litclaude-hook.js user-prompt-submit` | Detects litwork/lit prompts and injects workflow context. |
|
|
81
|
+
| `PreToolUse` | `plugins/litclaude/bin/litclaude-hook.js pre-tool-use` | Enforces semantic action/root grants before Write, Edit, MultiEdit, NotebookEdit, Bash, Agent, and bounded read tools execute. |
|
|
78
82
|
| `PostToolUse` | `plugins/litclaude/bin/litclaude-hook.js post-tool-use` | Reminds the session to run post-edit checks. |
|
|
79
83
|
| `PostCompact` | `plugins/litclaude/bin/litclaude-hook.js post-compact` | Resets compacted rule context after summarization. |
|
|
84
|
+
| `Stop` | `plugins/litclaude/bin/litclaude-hook.js stop` | Emits bounded start-work continuation on new progress, otherwise applies the opt-in litgoal autoloop gate. |
|
|
85
|
+
| `SubagentStart` | `plugins/litclaude/bin/litclaude-hook.js subagent-start` | Registers child-lane and Claude-owned worktree identity. |
|
|
86
|
+
| `SubagentStop` | `plugins/litclaude/bin/litclaude-hook.js subagent-stop` | Finalizes the lane without child continuation. |
|
|
87
|
+
| `SessionEnd` | `plugins/litclaude/bin/litclaude-hook.js session-end` | Records root-session end without blocking Claude. |
|
|
88
|
+
|
|
89
|
+
## Bounded-authority start-work lifecycle
|
|
90
|
+
|
|
91
|
+
The hook and CLI share `plugins/litclaude/lib/start-work-lifecycle.mjs`.
|
|
92
|
+
Schema-3 `.litclaude/boulder.json` owns active work/session identity, monotonic
|
|
93
|
+
revision, canonical roots, semantic action/root grants, consumed grants,
|
|
94
|
+
fenced-safe progress, bounded events/history, and terminal state. CLI mutations
|
|
95
|
+
use exact idempotency keys, exclusive locks, and ledger reconciliation.
|
|
96
|
+
PreToolUse Bash handling recognizes only a small command grammar: every
|
|
97
|
+
permitted path operand is canonicalized and checked against the matching
|
|
98
|
+
semantic grant, while relocation flags, shell syntax that would require a
|
|
99
|
+
speculative parser, and unverified or outside targets are denied without
|
|
100
|
+
creating an approval boundary.
|
|
101
|
+
|
|
102
|
+
Resume is the only mutating `UserPromptSubmit` exception. It accepts only the
|
|
103
|
+
complete prompt below, with no surrounding explanation or extra arguments:
|
|
104
|
+
|
|
105
|
+
```text
|
|
106
|
+
/litclaude:start-work resume --work-id <id> --revision <n> --boundary-id <id> --prompt-id <id> --grant-id <id>
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
The hook matches the owning Claude session and exact paused boundary before
|
|
110
|
+
recording the grant. There is no generic CLI resume or agent-callable approval
|
|
111
|
+
bypass. Returned `<litclaude-start-work-context>` JSON is bounded structured
|
|
112
|
+
data and contains no raw prompt. Stop ignores subagents and stale work/revision
|
|
113
|
+
events; each normal Stop re-evaluates progress, a new fingerprint emits once,
|
|
114
|
+
and `stop_hook_active: true` re-entry stays silent so stale output cannot block
|
|
115
|
+
again. Later unchanged turns are silent. Transcript pressure checks read only regular,
|
|
116
|
+
non-symlink files at or below 256 KiB.
|
|
117
|
+
Continuation receipts use the same bounded window as retained state events.
|
|
118
|
+
They remain bounded audit receipts, not re-entry instructions; neither retained
|
|
119
|
+
nor evicted receipts reconstructs a blocking continuation.
|
|
120
|
+
|
|
121
|
+
LitClaude intentionally does not register `WorktreeCreate` or `WorktreeRemove`.
|
|
122
|
+
Registering `WorktreeCreate` replaces Claude Code's native git-worktree
|
|
123
|
+
implementation and obligates the hook to create and return the worktree itself.
|
|
124
|
+
Instead, `SubagentStart.cwd` observes each Claude-owned worktree and binds it to
|
|
125
|
+
the root session and lane; `SubagentStop` marks host removal as expected without
|
|
126
|
+
pretending LitClaude owns creation or deletion.
|
|
80
127
|
|
|
81
128
|
## Workflow Trigger Phrases
|
|
82
129
|
|
package/docs/migration.md
CHANGED
|
@@ -95,7 +95,7 @@ agreement. Operators can verify availability with:
|
|
|
95
95
|
litclaude-ai workflow-check --json
|
|
96
96
|
```
|
|
97
97
|
|
|
98
|
-
Long `$start-work` runs can also use `litclaude-ai start-work-next --json` to
|
|
98
|
+
Long `$start-work` runs can also use `litclaude-ai start-work-next --session-id <claude-session> --json` to
|
|
99
99
|
recover the active plan, ledger path, and first unchecked top-level task from
|
|
100
100
|
local `.litclaude` state after a compacted or interrupted session.
|
|
101
101
|
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "litclaude",
|
|
3
|
-
"description": "Claude Code-native workflow plugin.",
|
|
4
|
-
"version": "0.3.
|
|
3
|
+
"description": "Claude Code-native workflow plugin with a bounded-authority start-work lifecycle.",
|
|
4
|
+
"version": "0.3.32",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "LitClaude contributors"
|
|
7
7
|
},
|
|
8
8
|
"homepage": "https://github.com/wjgoarxiv/litclaude",
|
|
9
9
|
"repository": "https://github.com/wjgoarxiv/litclaude",
|
|
10
10
|
"license": "MIT",
|
|
11
|
-
"keywords": ["claude-code", "hooks", "skills", "agents", "lsp", "workflow"],
|
|
11
|
+
"keywords": ["claude-code", "hooks", "skills", "agents", "lsp", "workflow", "start-work-lifecycle"],
|
|
12
12
|
"skills": "./skills",
|
|
13
13
|
"mcpServers": "./.mcp.json",
|
|
14
14
|
"lspServers": "./.lsp.json",
|
|
@@ -79,3 +79,21 @@ replace the approved plan unless evidence proves a blocker or stale state. Write
|
|
|
79
79
|
the failing test first, make the smallest change, run verification, capture
|
|
80
80
|
real-surface evidence, and report cleanup. Your DoneClaim must name changed
|
|
81
81
|
files, exact tests, real-surface evidence, risks, and cleanup receipt.
|
|
82
|
+
|
|
83
|
+
The code-owned start-work lifecycle is the executor's authority boundary. Read
|
|
84
|
+
schema-3 `.litclaude/boulder.json`; match the active work, Claude session, and
|
|
85
|
+
revision before mutation; and act only under semantic action/root grants in its
|
|
86
|
+
bounded-authority envelope. The official `PreToolUse` hook classifies native
|
|
87
|
+
Write/Edit/MultiEdit/NotebookEdit/Bash/Agent calls and denies forbidden, unknown, paused,
|
|
88
|
+
wrong-session, or unauthorized mutations before execution; `PostToolUse` is
|
|
89
|
+
observation-only. A new non-forbidden boundary is paused by that hook. Resume
|
|
90
|
+
exists only through the user's exact
|
|
91
|
+
`/litclaude:start-work resume --work-id <id> --revision <n> --boundary-id <id> --prompt-id <id> --grant-id <id>` UserPromptSubmit route: there is no generic resume bypass
|
|
92
|
+
or agent-callable approval route, and the generated grant token is single-use.
|
|
93
|
+
A paused work cannot complete, and commit, push, publish, tag,
|
|
94
|
+
release, version bump, registry write, host-config write, and destructive VCS
|
|
95
|
+
remain fail-closed.
|
|
96
|
+
|
|
97
|
+
When Claude starts this executor as a child, `SubagentStart` binds its agent id,
|
|
98
|
+
root session, and observed Claude-owned worktree. `SubagentStop` finalizes that
|
|
99
|
+
lane without continuation; completion remains blocked while any lane is active.
|