litclaude-ai 0.4.0 → 0.4.4
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 +61 -0
- package/README.md +132 -6
- package/README_ko-KR.md +114 -6
- package/RELEASE_CHECKLIST.md +22 -14
- package/bin/litclaude-ai.js +101 -4
- package/bin/litfamily-banner.mjs +32 -0
- package/docs/hooks.md +9 -9
- package/docs/rules.md +13 -11
- package/docs/workflow-compatibility-audit.md +1 -1
- package/package.json +1 -1
- package/plugins/litclaude/.claude-plugin/plugin.json +1 -1
- package/plugins/litclaude/bin/litclaude-hook.js +114 -35
- package/plugins/litclaude/bin/litclaude-mcp.js +1 -1
- package/plugins/litclaude/hooks/hooks.json +4 -17
- package/plugins/litclaude/lib/canonical-frontend-commitments.mjs +4 -4
- package/plugins/litclaude/lib/canonical-skill-resources.mjs +32 -11
- package/plugins/litclaude/lib/lit-plan-persistence.mjs +133 -0
- package/plugins/litclaude/lib/owner-lock.mjs +78 -17
- package/plugins/litclaude/lib/rules/engine.mjs +2 -2
- package/plugins/litclaude/lib/rules/session-state.mjs +2 -2
- package/plugins/litclaude/lib/secure-path-read.mjs +18 -0
- package/plugins/litclaude/lib/skill-loop/apply.mjs +391 -0
- package/plugins/litclaude/lib/skill-loop/authority.mjs +129 -0
- package/plugins/litclaude/lib/skill-loop/cli.mjs +67 -0
- package/plugins/litclaude/lib/skill-loop/common.mjs +280 -0
- package/plugins/litclaude/lib/skill-loop/config.mjs +91 -0
- package/plugins/litclaude/lib/skill-loop/curator.mjs +670 -0
- package/plugins/litclaude/lib/skill-loop/hook-runtime.mjs +174 -0
- package/plugins/litclaude/lib/skill-loop/hook-state.mjs +484 -0
- package/plugins/litclaude/lib/skill-loop/ledger.mjs +834 -0
- package/plugins/litclaude/lib/skill-loop/mutation-transaction.mjs +529 -0
- package/plugins/litclaude/lib/skill-loop/proposal-reader.mjs +26 -0
- package/plugins/litclaude/lib/skill-loop/proposal-record.mjs +104 -0
- package/plugins/litclaude/lib/skill-loop/proposal-store.mjs +187 -0
- package/plugins/litclaude/lib/skill-loop/proposals.mjs +26 -0
- package/plugins/litclaude/lib/skill-loop/review-runner.mjs +13 -0
- package/plugins/litclaude/lib/skill-loop/review-transaction.mjs +358 -0
- package/plugins/litclaude/lib/skill-loop/review.mjs +223 -0
- package/plugins/litclaude/lib/skill-loop/usage.mjs +218 -0
- package/plugins/litclaude/lib/skill-observer.mjs +127 -35
- package/plugins/litclaude/lib/start-work-lifecycle.mjs +2 -2
- package/plugins/litclaude/lib/wikify-knowledge.mjs +44 -16
- package/plugins/litclaude/scripts/scaffold-plan.mjs +259 -41
- package/plugins/litclaude/skills/browser-drive/scripts/capability-probe.mjs +24 -3
- package/plugins/litclaude/skills/frontend-ui-ux/references/_canonical-corpus/legal/frontend-ATTRIBUTION.md +5 -6
- package/plugins/litclaude/skills/frontend-ui-ux/references/_canonical-corpus/manifest.json +2 -2
- package/plugins/litclaude/skills/lit-handoff/SKILL.md +4 -4
- package/plugins/litclaude/skills/lit-plan/SKILL.md +5 -2
- package/plugins/litclaude/skills/rules/SKILL.md +8 -1
- package/plugins/litclaude/skills/skill-observer/SKILL.md +42 -7
- package/plugins/litclaude/skills/skill-observer/references/review-contract.md +77 -0
- package/plugins/litclaude/skills/skill-observer/scripts/skill-loop.mjs +10 -0
- package/plugins/litclaude/skills/teammode/scripts/team.mjs +2 -2
- package/scripts/qa-claude-plugin-smoke.sh +36 -8
- package/scripts/qa-portable-install.sh +38 -15
- package/scripts/qa-real-surface-behaviors.mjs +1 -1
- package/scripts/qa-real-surface-lib.mjs +4 -1
- package/scripts/validate-plugin.mjs +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,66 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.4.4 - 2026-09-02 — inode-reuse hardening and Linux rotation safety
|
|
4
|
+
|
|
5
|
+
- Bind regular-file reads and state transitions to ctime/birthtime-aware identities,
|
|
6
|
+
and quarantine/content-check destructive cleanup across owner locks, rule/session/team
|
|
7
|
+
state, skill-loop records, knowledge, observer, review, and scaffold paths. Add
|
|
8
|
+
deterministic inode-reuse regression coverage for the affected readers and cleanup.
|
|
9
|
+
- Make directory pins Linux-safe: directory identity excludes mutable child-driven ctime
|
|
10
|
+
and retained descriptors are compared with final pathname samples. Quarantine short-lived
|
|
11
|
+
scaffold locks so a legitimate next owner can rotate in without being mistaken for residue.
|
|
12
|
+
- Keep browser-drive teardown fail-closed around process-group reuse while accepting
|
|
13
|
+
already-gone or non-owned groups, and add regression coverage for concurrent observer
|
|
14
|
+
first-use writers and normal rotation. Regenerate canonical resource hashes for the
|
|
15
|
+
changed runtime assets so installer integrity checks cover the hardening.
|
|
16
|
+
- During convergence, three Linux-only false-denial cases were captured and resolved:
|
|
17
|
+
directory ctime churn, process-group ID reuse, and lock rotation. Regular files pin
|
|
18
|
+
ctime/birthtime; directories do not, because child creation legitimately changes
|
|
19
|
+
directory ctime. This is a local release candidate only; no publish, tag, or push
|
|
20
|
+
was performed.
|
|
21
|
+
|
|
22
|
+
## 0.4.3 - 2026-08-31 — packed-payload integrity and channel routing
|
|
23
|
+
|
|
24
|
+
- Add packed-payload substance, cross-product parity, and referenced-path checks so
|
|
25
|
+
installed skills cannot silently lose the material they reference.
|
|
26
|
+
- Route post-compact rule re-injection through the channel Claude Code actually reads,
|
|
27
|
+
so compacted sessions receive the intended rules again.
|
|
28
|
+
- Refresh the canonical legal attribution metadata without changing the four upstream
|
|
29
|
+
attributions it records. This is a local release candidate only; no publish, tag, or
|
|
30
|
+
push was performed.
|
|
31
|
+
|
|
32
|
+
## 0.4.2 - 2026-08-30 — coordinated major-update-v2 patch release
|
|
33
|
+
|
|
34
|
+
- Require `lit-plan` to persist `plans/<slug>.md` with executable checkbox tasks
|
|
35
|
+
before a planning turn ends; approval gates execution after the plan exists.
|
|
36
|
+
- Add the shared installer frame, `--yes` path, and explicit host-owned model
|
|
37
|
+
selection notice while preserving Claude's host routing authority.
|
|
38
|
+
- Remove the retired handoff name from model-facing guidance and keep the
|
|
39
|
+
native handoff route available without a legacy user-skill path.
|
|
40
|
+
- This is a local release candidate only; no publish, tag, or push was performed.
|
|
41
|
+
|
|
42
|
+
## 0.4.1 - 2026-08-29 — approval-gated skill learning loop
|
|
43
|
+
|
|
44
|
+
- Observe validated skill consultations, bounded user corrections, tool
|
|
45
|
+
iteration signals, and coverage gaps without persisting raw transcripts. A
|
|
46
|
+
detached Stop review may queue at most three schema-valid pending proposals;
|
|
47
|
+
it never applies them.
|
|
48
|
+
- Add explicit list, apply, reject, rollback, and curator commands. Apply is the
|
|
49
|
+
only approval transition and may mutate only project
|
|
50
|
+
`.claude/skills/<name>/SKILL.md` packages marked
|
|
51
|
+
`litclaudeAgentGenerated: "true"`; bundled and unmarked user skills remain
|
|
52
|
+
protected.
|
|
53
|
+
- Record exact before/after snapshots in the project-local decision ledger and
|
|
54
|
+
content-addressed blob store. Rollback uses ownership, identity, and byte
|
|
55
|
+
checks and fails closed on conflicts.
|
|
56
|
+
- Add a deterministic SessionStart curator for projects that already have
|
|
57
|
+
skill-loop usage state. The default seven-day/two-hour schedule marks
|
|
58
|
+
eligible skills stale after 30 days and archives them after 90 days only
|
|
59
|
+
after backup; deletion, consolidation, and automatic apply remain disabled.
|
|
60
|
+
- Pin the complete skill-loop runtime and observer resources in the canonical
|
|
61
|
+
manifest, keep local `.litclaude` state out of the package, and reject
|
|
62
|
+
unpinned bundled-skill payload additions.
|
|
63
|
+
|
|
3
64
|
## 0.4.0 - 2026-08-27 — output-channel enforcement
|
|
4
65
|
|
|
5
66
|
- Add a standalone `#contract.output_channels` declaration to every shipped
|
package/README.md
CHANGED
|
@@ -1,4 +1,17 @@
|
|
|
1
|
-
<p align="center"><img src="https://cdn.jsdelivr.net/npm/litclaude-ai@0.4.
|
|
1
|
+
<p align="center"><img src="https://cdn.jsdelivr.net/npm/litclaude-ai@0.4.4/cover.png" width="100%" alt="LitClaude — Claude Code-native workflow package" /></p>
|
|
2
|
+
|
|
3
|
+
```text
|
|
4
|
+
██╗ ██╗████████╗
|
|
5
|
+
██║ ██║╚══██╔══╝
|
|
6
|
+
██║ ██║ ██║
|
|
7
|
+
███████╗██║ ██║
|
|
8
|
+
╚══════╝╚═╝ ╚═╝
|
|
9
|
+
██████╗██╗ █████╗ ██╗ ██╗██████╗ ███████╗
|
|
10
|
+
██╔════╝██║ ██╔══██╗██║ ██║██╔══██╗██╔════╝
|
|
11
|
+
██║ ██║ ███████║██║ ██║██║ ██║█████╗
|
|
12
|
+
╚██████╗███████╗██╔══██║╚██████╔╝██████╔╝███████╗
|
|
13
|
+
╚═════╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚══════╝
|
|
14
|
+
```
|
|
2
15
|
|
|
3
16
|
<h1 align="center">LitClaude</h1>
|
|
4
17
|
<p align="center">
|
|
@@ -9,7 +22,7 @@
|
|
|
9
22
|
</p>
|
|
10
23
|
<p align="center">
|
|
11
24
|
<img src="https://img.shields.io/badge/npm-litclaude--ai-cb3837" alt="npm: litclaude-ai" />
|
|
12
|
-
<img src="https://img.shields.io/badge/version-0.4.
|
|
25
|
+
<img src="https://img.shields.io/badge/version-0.4.4-2ea44f" alt="version 0.4.4" />
|
|
13
26
|
<img src="https://img.shields.io/badge/Claude%20Code-plugin-blueviolet" alt="Claude Code plugin" />
|
|
14
27
|
<img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT license" />
|
|
15
28
|
</p>
|
|
@@ -39,6 +52,35 @@ ordinary `claude` sessions.
|
|
|
39
52
|
- Local MCP/LSP helpers, structured Wikify knowledge, and a managed HUD that
|
|
40
53
|
can be safely removed with `uninstall`.
|
|
41
54
|
|
|
55
|
+
**The workflow closes on evidence.** A plan remains open until each item has a binary check, and a slice closes only after its real Claude surface produces evidence and its temporary QA resources are gone. A passing test is necessary, but it is not the finish line.
|
|
56
|
+
|
|
57
|
+
```mermaid
|
|
58
|
+
flowchart TD
|
|
59
|
+
R["a request<br/>make it better"] --> DI["<b>deep-interview</b><br/>turn it into a decision-complete brief"]
|
|
60
|
+
DI --> P["<b>lit-plan</b><br/>objective · non-goals<br/>action / output / <b>binary verification</b>"]
|
|
61
|
+
P --> GATE{"user approves?"}
|
|
62
|
+
GATE -->|no| P
|
|
63
|
+
GATE -->|yes| SW["<b>start-work</b><br/>execute one slice"]
|
|
64
|
+
|
|
65
|
+
subgraph LOOP["each slice: RED to GREEN to SURFACE to CLEAN"]
|
|
66
|
+
SW --> RED["failing test first"]
|
|
67
|
+
RED --> GREEN["smallest change that passes"]
|
|
68
|
+
GREEN --> SURF["exercise the <b>real surface</b><br/>not just the test"]
|
|
69
|
+
SURF --> CLEAN["tear down · cleanup receipt"]
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
CLEAN --> EV{"evidence complete?"}
|
|
73
|
+
EV -->|"tests only"| SW
|
|
74
|
+
EV -->|"artifact + receipt"| RW["<b>review-work</b><br/>scope · evidence · payload<br/>security · real surface"]
|
|
75
|
+
RW -->|findings| SW
|
|
76
|
+
RW -->|clean| HO["<b>lit-handoff</b><br/>resumable packet"]
|
|
77
|
+
|
|
78
|
+
style GATE fill:#fff3cd,stroke:#856404
|
|
79
|
+
style EV fill:#fff3cd,stroke:#856404
|
|
80
|
+
style SURF fill:#d4edda,stroke:#155724
|
|
81
|
+
style RW fill:#d1ecf1,stroke:#0c5460
|
|
82
|
+
```
|
|
83
|
+
|
|
42
84
|
## Install
|
|
43
85
|
|
|
44
86
|
For the current published package:
|
|
@@ -50,13 +92,13 @@ npx --yes litclaude-ai@latest install
|
|
|
50
92
|
For a reproducible install, pin the current package version:
|
|
51
93
|
|
|
52
94
|
```bash
|
|
53
|
-
npm view litclaude-ai@0.4.
|
|
95
|
+
npm view litclaude-ai@0.4.4 version
|
|
54
96
|
```
|
|
55
97
|
|
|
56
|
-
If that lookup returns `0.4.
|
|
98
|
+
If that lookup returns `0.4.4`, the exact install is available:
|
|
57
99
|
|
|
58
100
|
```bash
|
|
59
|
-
npx --yes litclaude-ai@0.4.
|
|
101
|
+
npx --yes litclaude-ai@0.4.4 install
|
|
60
102
|
```
|
|
61
103
|
|
|
62
104
|
Otherwise, wait for explicit human publication before using that pin. Check the
|
|
@@ -78,6 +120,24 @@ npx --yes litclaude-ai@latest install --yolo
|
|
|
78
120
|
`safe` adds no permission rules. `balanced` adds bounded read/search and routine
|
|
79
121
|
Git, npm, and Node rules. `yolo` adds broader edit/write patterns. These modes
|
|
80
122
|
write bounded entries under Claude's `permissions.allow` and `permissions.deny`.
|
|
123
|
+
|
|
124
|
+
### Install-time questions
|
|
125
|
+
|
|
126
|
+
On a TTY the installer asks two questions: the HUD brand color and the LitClaude
|
|
127
|
+
output style. The output-style question offers `None / keep current`,
|
|
128
|
+
ASD-STE100, and ELI5 (each in English and 한국어); a LitClaude style is written to
|
|
129
|
+
Claude's global `outputStyle` only when you pick one, never over a value you set
|
|
130
|
+
yourself, and `uninstall` removes it again only if it is still the LitClaude-written
|
|
131
|
+
value. `LITCLAUDE_OUTPUT_STYLE` and `LITCLAUDE_HUD_ACCENT` answer the questions
|
|
132
|
+
non-interactively, and `--yes` skips every question with today's shipped defaults:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
npx --yes litclaude-ai@latest install --yes
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
The installer never asks for a model or reasoning effort: model selection is
|
|
139
|
+
host-owned — Claude Code picks its own models — and the summary prints
|
|
140
|
+
`Model selection: host-owned`.
|
|
81
141
|
Existing settings are preserved; LitClaude tracks and removes only rules it
|
|
82
142
|
inserted.
|
|
83
143
|
|
|
@@ -107,6 +167,30 @@ the hook; namespaced slash commands use Claude Code's native command surface and
|
|
|
107
167
|
do not double-activate the hook. For an explicit skill invocation, use a route
|
|
108
168
|
such as `/litclaude:lit-loop`.
|
|
109
169
|
|
|
170
|
+
**Where Claude Code hands control to LitClaude.** Session and tool events feed the rules, routing, authority, and ledger surfaces; together they expose the package's 34 skills, 17 commands, and 11 agents without hiding the host boundary.
|
|
171
|
+
|
|
172
|
+
```mermaid
|
|
173
|
+
flowchart LR
|
|
174
|
+
subgraph CC["Claude Code"]
|
|
175
|
+
H1["SessionStart"]; H2["UserPromptSubmit"]; H3["PreToolUse"]
|
|
176
|
+
H4["PostToolUse"]; H5["Stop"]; H6["SubagentStart / SubagentStop"]; H7["SessionEnd"]
|
|
177
|
+
end
|
|
178
|
+
subgraph LC["LitClaude plugin"]
|
|
179
|
+
RULES["rules engine<br/>project rules into context"]
|
|
180
|
+
ROUTE["trigger routing<br/><code>lit</code> · <code>/litclaude:*</code>"]
|
|
181
|
+
AUTH["bounded authority<br/>pause on a new boundary"]
|
|
182
|
+
LEDGER[("durable ledger<br/><code>.litclaude/</code>")]
|
|
183
|
+
end
|
|
184
|
+
H1 --> RULES --> LEDGER
|
|
185
|
+
H2 --> ROUTE --> LEDGER
|
|
186
|
+
H3 --> AUTH
|
|
187
|
+
H4 --> LEDGER
|
|
188
|
+
H5 --> LEDGER
|
|
189
|
+
H6 --> LEDGER
|
|
190
|
+
H7 --> LEDGER
|
|
191
|
+
LC --> S["34 skills · 17 commands · 11 agents"]
|
|
192
|
+
```
|
|
193
|
+
|
|
110
194
|
## Core routes
|
|
111
195
|
|
|
112
196
|
| Type this | Purpose |
|
|
@@ -126,7 +210,49 @@ such as `/litclaude:lit-loop`.
|
|
|
126
210
|
| `lit-scientific-visualization` | Prepare publication figures; also `/litclaude:lit-scientific-visualization` |
|
|
127
211
|
| `litclaude wikify <capture/save/review/query/config>` | Manage reviewed local structured knowledge |
|
|
128
212
|
| `browser-drive`, `$browser-drive` | Drive a real page only after a capability probe verifies an external driver; never substitute a fetch, use credentials, or install without approval |
|
|
129
|
-
| `skill-observer`, `$skill-observer` |
|
|
213
|
+
| `skill-observer`, `$skill-observer` | Review bounded learning signals and manage pending proposals; only an explicit foreground `apply <proposal-id>` may change an eligible agent-owned skill |
|
|
214
|
+
|
|
215
|
+
## Skill learning loop
|
|
216
|
+
|
|
217
|
+
LitClaude records bounded learning signals only after a validated `SKILL.md`
|
|
218
|
+
consultation: user corrections, repeated tool iterations, and coverage gaps. A
|
|
219
|
+
Stop review treats the bounded, secret-scrubbed transcript excerpt as inert data
|
|
220
|
+
and may queue schema-valid proposals, but it never stores that excerpt or edits a
|
|
221
|
+
skill. Automatic application is disabled (`autoApply: false`); a proposal remains
|
|
222
|
+
`pending` until the user explicitly applies or rejects its exact id.
|
|
223
|
+
|
|
224
|
+
Use `/litclaude:skill-observer list`, `apply <proposal-id>`, `reject
|
|
225
|
+
<proposal-id>`, `rollback <ledger-id>`, `curator status`, or `curator run` from
|
|
226
|
+
the project whose state you want to manage. Apply can write only an eligible
|
|
227
|
+
project `.claude/skills/<name>/SKILL.md` carrying
|
|
228
|
+
`metadata.litclaudeAgentGenerated: "true"`. Bundled skill ids, paths outside
|
|
229
|
+
that root, and existing unmarked user skills are protected. Every mutation is
|
|
230
|
+
recorded in `.litclaude/skill-ledger.jsonl` with content-addressed blobs under
|
|
231
|
+
`.litclaude/skill-ledger-blobs/`; rollback verifies current bytes and restores
|
|
232
|
+
the exact recorded snapshot or fails closed.
|
|
233
|
+
|
|
234
|
+
The deterministic curator runs no more often than every seven days and only
|
|
235
|
+
after two idle hours. By default it marks unused eligible skills stale after 30
|
|
236
|
+
days and archives them after 90 days, taking a backup first. It never deletes or
|
|
237
|
+
consolidates skills. SessionStart runs this maintenance only when project-local
|
|
238
|
+
skill-loop usage state already exists; untouched projects receive no new
|
|
239
|
+
`.litclaude` state.
|
|
240
|
+
|
|
241
|
+
**Why a fresh install can still execute the skills.** A self-contained skill needs an explicit allowlist reason, while a skill that names a corpus must carry that corpus inside the packed tarball. These payload gates prevent a checkout-only reference from becoming a user's runtime failure.
|
|
242
|
+
|
|
243
|
+
```mermaid
|
|
244
|
+
flowchart LR
|
|
245
|
+
SK["a skill"] --> Q{"does it declare<br/>a capability?"}
|
|
246
|
+
Q -->|"self-contained<br/>procedure"| AL["explicit allowlist entry<br/>with a written reason"]
|
|
247
|
+
Q -->|"needs a corpus"| C["corpus must resolve<br/>inside the <b>packed payload</b>"]
|
|
248
|
+
AL --> G1
|
|
249
|
+
C --> G1["<b>payload-substance</b>"]
|
|
250
|
+
G1 --> G2["<b>cross-product parity</b><br/>one product cannot ship a stub<br/>where the family ships substance"]
|
|
251
|
+
G2 --> G3["<b>referenced-path resolution</b><br/>every path in a SKILL.md<br/>must exist in the tarball"]
|
|
252
|
+
G3 --> OK["installs and works<br/>on a machine that has<br/>nothing else"]
|
|
253
|
+
style C fill:#d4edda,stroke:#155724
|
|
254
|
+
style OK fill:#d4edda,stroke:#155724
|
|
255
|
+
```
|
|
130
256
|
|
|
131
257
|
`lit start work <plan>` is intentionally a `BLOCKED:` handoff. Use
|
|
132
258
|
`/start-work` or `/litclaude:start-work` with the approved plan. `lit workflow`
|
package/README_ko-KR.md
CHANGED
|
@@ -1,4 +1,17 @@
|
|
|
1
|
-
<p align="center"><img src="https://cdn.jsdelivr.net/npm/litclaude-ai@0.4.
|
|
1
|
+
<p align="center"><img src="https://cdn.jsdelivr.net/npm/litclaude-ai@0.4.4/cover.png" width="100%" alt="LitClaude — Claude Code-native workflow package" /></p>
|
|
2
|
+
|
|
3
|
+
```text
|
|
4
|
+
██╗ ██╗████████╗
|
|
5
|
+
██║ ██║╚══██╔══╝
|
|
6
|
+
██║ ██║ ██║
|
|
7
|
+
███████╗██║ ██║
|
|
8
|
+
╚══════╝╚═╝ ╚═╝
|
|
9
|
+
██████╗██╗ █████╗ ██╗ ██╗██████╗ ███████╗
|
|
10
|
+
██╔════╝██║ ██╔══██╗██║ ██║██╔══██╗██╔════╝
|
|
11
|
+
██║ ██║ ███████║██║ ██║██║ ██║█████╗
|
|
12
|
+
╚██████╗███████╗██╔══██║╚██████╔╝██████╔╝███████╗
|
|
13
|
+
╚═════╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚══════╝
|
|
14
|
+
```
|
|
2
15
|
|
|
3
16
|
<h1 align="center">LitClaude</h1>
|
|
4
17
|
<p align="center">
|
|
@@ -9,7 +22,7 @@
|
|
|
9
22
|
</p>
|
|
10
23
|
<p align="center">
|
|
11
24
|
<img src="https://img.shields.io/badge/npm-litclaude--ai-cb3837" alt="npm: litclaude-ai" />
|
|
12
|
-
<img src="https://img.shields.io/badge/version-0.4.
|
|
25
|
+
<img src="https://img.shields.io/badge/version-0.4.4-2ea44f" alt="version 0.4.4" />
|
|
13
26
|
<img src="https://img.shields.io/badge/Claude%20Code-plugin-blueviolet" alt="Claude Code plugin" />
|
|
14
27
|
<img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT license" />
|
|
15
28
|
</p>
|
|
@@ -40,6 +53,35 @@ state route, compact status-line HUD를 제공합니다. 한 번 설치하면
|
|
|
40
53
|
- local MCP/LSP helper, 구조화된 Wikify knowledge, 안전하게 제거할 수 있는
|
|
41
54
|
managed HUD
|
|
42
55
|
|
|
56
|
+
**이 workflow가 닫히는 조건을 한눈에 보세요.** 각 계획 항목에 binary check가 있어야 다음 단계로 갈 수 있고, 실제 Claude surface에서 evidence를 남기고 임시 QA resource까지 정리해야 하나의 slice가 끝납니다. Test가 통과했다는 사실만으로는 충분하지 않습니다.
|
|
57
|
+
|
|
58
|
+
```mermaid
|
|
59
|
+
flowchart TD
|
|
60
|
+
R["a request<br/>make it better"] --> DI["<b>deep-interview</b><br/>turn it into a decision-complete brief"]
|
|
61
|
+
DI --> P["<b>lit-plan</b><br/>objective · non-goals<br/>action / output / <b>binary verification</b>"]
|
|
62
|
+
P --> GATE{"user approves?"}
|
|
63
|
+
GATE -->|no| P
|
|
64
|
+
GATE -->|yes| SW["<b>start-work</b><br/>execute one slice"]
|
|
65
|
+
|
|
66
|
+
subgraph LOOP["each slice: RED to GREEN to SURFACE to CLEAN"]
|
|
67
|
+
SW --> RED["failing test first"]
|
|
68
|
+
RED --> GREEN["smallest change that passes"]
|
|
69
|
+
GREEN --> SURF["exercise the <b>real surface</b><br/>not just the test"]
|
|
70
|
+
SURF --> CLEAN["tear down · cleanup receipt"]
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
CLEAN --> EV{"evidence complete?"}
|
|
74
|
+
EV -->|"tests only"| SW
|
|
75
|
+
EV -->|"artifact + receipt"| RW["<b>review-work</b><br/>scope · evidence · payload<br/>security · real surface"]
|
|
76
|
+
RW -->|findings| SW
|
|
77
|
+
RW -->|clean| HO["<b>lit-handoff</b><br/>resumable packet"]
|
|
78
|
+
|
|
79
|
+
style GATE fill:#fff3cd,stroke:#856404
|
|
80
|
+
style EV fill:#fff3cd,stroke:#856404
|
|
81
|
+
style SURF fill:#d4edda,stroke:#155724
|
|
82
|
+
style RW fill:#d1ecf1,stroke:#0c5460
|
|
83
|
+
```
|
|
84
|
+
|
|
43
85
|
## 설치
|
|
44
86
|
|
|
45
87
|
현재 공개된 package를 설치합니다.
|
|
@@ -52,13 +94,13 @@ npx --yes litclaude-ai@latest install
|
|
|
52
94
|
뒤 고정합니다.
|
|
53
95
|
|
|
54
96
|
```bash
|
|
55
|
-
npm view litclaude-ai@0.4.
|
|
97
|
+
npm view litclaude-ai@0.4.4 version
|
|
56
98
|
```
|
|
57
99
|
|
|
58
|
-
조회 결과가 `0.4.
|
|
100
|
+
조회 결과가 `0.4.4`이면 exact install을 사용할 수 있습니다.
|
|
59
101
|
|
|
60
102
|
```bash
|
|
61
|
-
npx --yes litclaude-ai@0.4.
|
|
103
|
+
npx --yes litclaude-ai@0.4.4 install
|
|
62
104
|
```
|
|
63
105
|
|
|
64
106
|
그렇지 않으면 명시적인 human publication을 기다립니다. Pin은 그 뒤에 사용합니다.
|
|
@@ -109,6 +151,30 @@ namespaced slash command는 Claude Code native command surface에서 처리되
|
|
|
109
151
|
hook을 중복 활성화하지 않습니다. 명시적으로 skill을 실행하려면
|
|
110
152
|
`/litclaude:lit-loop` 같은 route를 사용하세요.
|
|
111
153
|
|
|
154
|
+
**Claude Code와 LitClaude가 만나는 지점입니다.** Session과 tool event는 rules, routing, authority, ledger surface로 들어가며, 그 결과 34개 skill·17개 command·11개 agent가 host 경계를 넘지 않고 연결됩니다.
|
|
155
|
+
|
|
156
|
+
```mermaid
|
|
157
|
+
flowchart LR
|
|
158
|
+
subgraph CC["Claude Code"]
|
|
159
|
+
H1["SessionStart"]; H2["UserPromptSubmit"]; H3["PreToolUse"]
|
|
160
|
+
H4["PostToolUse"]; H5["Stop"]; H6["SubagentStart / SubagentStop"]; H7["SessionEnd"]
|
|
161
|
+
end
|
|
162
|
+
subgraph LC["LitClaude plugin"]
|
|
163
|
+
RULES["rules engine<br/>project rules into context"]
|
|
164
|
+
ROUTE["trigger routing<br/><code>lit</code> · <code>/litclaude:*</code>"]
|
|
165
|
+
AUTH["bounded authority<br/>pause on a new boundary"]
|
|
166
|
+
LEDGER[("durable ledger<br/><code>.litclaude/</code>")]
|
|
167
|
+
end
|
|
168
|
+
H1 --> RULES --> LEDGER
|
|
169
|
+
H2 --> ROUTE --> LEDGER
|
|
170
|
+
H3 --> AUTH
|
|
171
|
+
H4 --> LEDGER
|
|
172
|
+
H5 --> LEDGER
|
|
173
|
+
H6 --> LEDGER
|
|
174
|
+
H7 --> LEDGER
|
|
175
|
+
LC --> S["34 skills · 17 commands · 11 agents"]
|
|
176
|
+
```
|
|
177
|
+
|
|
112
178
|
## 주요 라우트
|
|
113
179
|
|
|
114
180
|
| 입력 | 용도 |
|
|
@@ -128,7 +194,49 @@ hook을 중복 활성화하지 않습니다. 명시적으로 skill을 실행하
|
|
|
128
194
|
| `lit-scientific-visualization` | 출판용 figure를 준비합니다. `/litclaude:lit-scientific-visualization`도 지원합니다. |
|
|
129
195
|
| `litclaude wikify <capture/save/review/query/config>` | 검토 기반 local structured knowledge를 관리합니다. |
|
|
130
196
|
| `browser-drive`, `$browser-drive` | 외부 driver capability probe가 확인된 뒤에만 실제 page를 조작합니다. fetch로 대체하지 않으며 credential 사용과 승인 없는 설치를 하지 않습니다. |
|
|
131
|
-
| `skill-observer`, `$skill-observer` | 제한된
|
|
197
|
+
| `skill-observer`, `$skill-observer` | 제한된 learning signal을 검토하고 pending proposal을 관리합니다. 명시적인 foreground `apply <proposal-id>`만 eligible agent-owned skill을 변경할 수 있습니다. |
|
|
198
|
+
|
|
199
|
+
## Skill learning loop
|
|
200
|
+
|
|
201
|
+
LitClaude는 검증된 `SKILL.md` consultation 뒤에만 user correction, 반복된 tool
|
|
202
|
+
iteration, coverage gap을 제한된 learning signal로 기록합니다. Stop review는
|
|
203
|
+
secret을 제거한 bounded transcript excerpt를 inert data로 다루며 schema-valid
|
|
204
|
+
proposal을 queue할 수 있지만, excerpt 자체를 저장하거나 skill을 수정하지
|
|
205
|
+
않습니다. 자동 적용은 꺼져 있고(`autoApply: false`), 사용자가 정확한 id를
|
|
206
|
+
명시해 apply 또는 reject하기 전까지 proposal은 `pending`입니다.
|
|
207
|
+
|
|
208
|
+
관리할 state가 있는 project에서 `/litclaude:skill-observer list`, `apply
|
|
209
|
+
<proposal-id>`, `reject <proposal-id>`, `rollback <ledger-id>`, `curator
|
|
210
|
+
status`, `curator run`을 사용합니다. Apply는
|
|
211
|
+
`metadata.litclaudeAgentGenerated: "true"`를 가진 eligible project
|
|
212
|
+
`.claude/skills/<name>/SKILL.md`에만 쓸 수 있습니다. Bundled skill id, 이 root
|
|
213
|
+
밖의 path, marker가 없는 기존 user skill은 보호됩니다. 모든 mutation은
|
|
214
|
+
`.litclaude/skill-ledger.jsonl`에 기록되고 content-addressed blob은
|
|
215
|
+
`.litclaude/skill-ledger-blobs/`에 저장됩니다. Rollback은 현재 byte를 검증한
|
|
216
|
+
뒤 기록된 exact snapshot을 복원하며, 검증할 수 없으면 fail closed합니다.
|
|
217
|
+
|
|
218
|
+
Deterministic curator는 7일보다 자주 실행되지 않고 2시간 idle 뒤에만
|
|
219
|
+
실행됩니다. 기본값은 eligible skill을 30일 뒤 stale로 표시하고 90일 뒤 먼저
|
|
220
|
+
backup한 다음 archive하는 것입니다. Skill을 delete하거나 consolidate하지
|
|
221
|
+
않습니다. SessionStart maintenance는 project-local skill-loop usage state가 이미
|
|
222
|
+
있을 때만 실행되므로 untouched project에 새 `.litclaude` state를 만들지
|
|
223
|
+
않습니다.
|
|
224
|
+
|
|
225
|
+
**아무것도 남아 있지 않은 machine에서도 skill이 작동하는 이유입니다.** Self-contained skill은 allowlist에 명시적인 근거가 있어야 하고, corpus를 참조하는 skill은 packed tarball 안에서 그 corpus를 찾아야 합니다. 이 payload gate가 checkout에만 남은 reference를 설치 후 장애로 만들지 않습니다.
|
|
226
|
+
|
|
227
|
+
```mermaid
|
|
228
|
+
flowchart LR
|
|
229
|
+
SK["a skill"] --> Q{"does it declare<br/>a capability?"}
|
|
230
|
+
Q -->|"self-contained<br/>procedure"| AL["explicit allowlist entry<br/>with a written reason"]
|
|
231
|
+
Q -->|"needs a corpus"| C["corpus must resolve<br/>inside the <b>packed payload</b>"]
|
|
232
|
+
AL --> G1
|
|
233
|
+
C --> G1["<b>payload-substance</b>"]
|
|
234
|
+
G1 --> G2["<b>cross-product parity</b><br/>one product cannot ship a stub<br/>where the family ships substance"]
|
|
235
|
+
G2 --> G3["<b>referenced-path resolution</b><br/>every path in a SKILL.md<br/>must exist in the tarball"]
|
|
236
|
+
G3 --> OK["installs and works<br/>on a machine that has<br/>nothing else"]
|
|
237
|
+
style C fill:#d4edda,stroke:#155724
|
|
238
|
+
style OK fill:#d4edda,stroke:#155724
|
|
239
|
+
```
|
|
132
240
|
|
|
133
241
|
`lit start work <plan>`은 의도적으로 `BLOCKED:` handoff를 반환합니다. 승인된
|
|
134
242
|
plan과 함께 `/start-work` 또는 `/litclaude:start-work`를 사용하세요. `lit
|
package/RELEASE_CHECKLIST.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# LitClaude Release Checklist
|
|
2
2
|
|
|
3
|
-
Status: `litclaude-ai@0.4.
|
|
3
|
+
Status: `litclaude-ai@0.4.4` is the current release candidate — exact canonical
|
|
4
4
|
frontend corpus plus Claude-native `autoresearch`, `autoconference`, and `wikify`
|
|
5
5
|
workflow-family integration. It byte-pins the frontend library, legal companions,
|
|
6
6
|
family source closures, and adapters through independent commitments and package
|
|
@@ -45,16 +45,24 @@ side-effect-free, the launcher starts only a separate Claude Code
|
|
|
45
45
|
print/background worker, and the release preserves the Korean polishing
|
|
46
46
|
command, strict multi-agent review pipeline, fidelity guardrails, package
|
|
47
47
|
hygiene checks, native route gates, and safe start-work handoff behavior.
|
|
48
|
-
`package.json` is aligned to `0.4.
|
|
49
|
-
`plugins/litclaude/.claude-plugin/plugin.json` is aligned to `0.4.
|
|
50
|
-
plugin-local MCP server reports `0.4.
|
|
51
|
-
|
|
52
|
-
This candidate adds
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
48
|
+
`package.json` is aligned to `0.4.4`,
|
|
49
|
+
`plugins/litclaude/.claude-plugin/plugin.json` is aligned to `0.4.4`, and the
|
|
50
|
+
plugin-local MCP server reports `0.4.4`.
|
|
51
|
+
|
|
52
|
+
This candidate adds an approval-gated skill learning loop. Validated
|
|
53
|
+
consultations, bounded corrections, iteration signals, and coverage gaps may
|
|
54
|
+
produce pending proposals, but hooks and model reviews never apply them.
|
|
55
|
+
Foreground apply is restricted to marked agent-owned project skills, with
|
|
56
|
+
byte-exact ledger-backed rollback. The deterministic curator backs up and
|
|
57
|
+
archives eligible skills on its bounded schedule, never deletes or consolidates,
|
|
58
|
+
and runs at SessionStart only when project-local usage state already exists.
|
|
59
|
+
Automatic apply remains disabled.
|
|
60
|
+
|
|
61
|
+
The 0.4.0 release added machine-readable output-channel declarations across the
|
|
62
|
+
shipped skill corpus and a `PostToolUse` hedge-feedback path. Two isolated A/B
|
|
63
|
+
experiments found no measurable behavior change from declaration prose alone,
|
|
64
|
+
so the declaration remains guard metadata rather than evidence that prose
|
|
65
|
+
instructions by themselves improve generated documents.
|
|
58
66
|
|
|
59
67
|
This release carries the v0.2.2 Dynamic workflow hardening surfaces:
|
|
60
68
|
`/dynamic-workflow`, `workflow-check --json`, native `/goal` fallback guidance,
|
|
@@ -287,9 +295,9 @@ checkout and from an isolated install of the packed tarball:
|
|
|
287
295
|
Before requesting publication approval, confirm these artifacts from the current
|
|
288
296
|
checkout:
|
|
289
297
|
|
|
290
|
-
- `package.json` version is `0.4.
|
|
291
|
-
- `plugins/litclaude/.claude-plugin/plugin.json` version is `0.4.
|
|
292
|
-
- `plugins/litclaude/bin/litclaude-mcp.js` reports server version `0.4.
|
|
298
|
+
- `package.json` version is `0.4.4`.
|
|
299
|
+
- `plugins/litclaude/.claude-plugin/plugin.json` version is `0.4.4`.
|
|
300
|
+
- `plugins/litclaude/bin/litclaude-mcp.js` reports server version `0.4.4`.
|
|
293
301
|
- 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.
|
|
294
302
|
- `lit search` and `lit query` route to `/litclaude:litresearch` without activating on slash mentions, code spans, or non-lit prompts.
|
|
295
303
|
- Litresearch web lanes require public API/feed preference, validator-first checks, route traces, prompt-injection quarantine, and honest auth/paywall/private-data stop reasons.
|