litclaude-ai 0.3.21 → 0.3.22
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 +5 -0
- package/README.md +5 -5
- package/README_ko-KR.md +5 -5
- package/RELEASE_CHECKLIST.md +7 -7
- package/package.json +1 -1
- package/plugins/litclaude/.claude-plugin/plugin.json +1 -1
- package/plugins/litclaude/bin/litclaude-hook.js +18 -9
- package/plugins/litclaude/bin/litclaude-mcp.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.3.22 - 2026-07-07 — full lit-family bare invocation release prep
|
|
4
|
+
|
|
5
|
+
- Prepare `litclaude-ai@0.3.22` for npm publication after extending bare lit-family prompt-hook routes to inject the installed `SKILL.md` body.
|
|
6
|
+
- Keep the safe natural-language `lit start work` BLOCKED handoff while explicit bare skill routes carry full prompt context.
|
|
7
|
+
|
|
3
8
|
## 0.3.21 - 2026-07-07 — full bare skill-body routing
|
|
4
9
|
|
|
5
10
|
- Inject bundled `SKILL.md` bodies for bare `hyperplan`, `litresearch`, `lit research`, `init-deep`, and explicit `$start-work` prompt-hook routes so activation carries the same substantive skill contract as the installed payload.
|
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.22-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.22` 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.
|
|
28
|
+
Future package releases still require explicit user approval. The v0.3.22
|
|
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
|
|
@@ -113,7 +113,7 @@ directory, the normal install command works:
|
|
|
113
113
|
|
|
114
114
|
```bash
|
|
115
115
|
cd /tmp
|
|
116
|
-
npx --yes litclaude-ai@0.3.
|
|
116
|
+
npx --yes litclaude-ai@0.3.22 install
|
|
117
117
|
```
|
|
118
118
|
|
|
119
119
|
Validate the installed plugin:
|
|
@@ -126,7 +126,7 @@ The installer also sets Claude Code's `statusLine` command to the packaged
|
|
|
126
126
|
LitClaude HUD. A typical no-color render starts like:
|
|
127
127
|
|
|
128
128
|
```text
|
|
129
|
-
[🔥LITCLAUDE v0.3.
|
|
129
|
+
[🔥LITCLAUDE v0.3.22] | O4.8 │ ctx [▎░░] 9%/1000k │ 5h [▏░] 4% ↻2h15m │ 1w [▊░] 35% ↻3d6h │ git main +3 ✓
|
|
130
130
|
```
|
|
131
131
|
|
|
132
132
|
The `↻` suffix is a compact rate-limit reset countdown. It is separated from
|
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.22-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.22` 배포 준비용으로 정리되어 있습니다. 목적은
|
|
30
30
|
다른 PC에서도 빠르게 설치하기 위한 개인용 package metadata를 갖추는 것입니다.
|
|
31
31
|
npm package metadata를 준비했다고 해서 홍보, 공개 저장소 운영, Claude
|
|
32
32
|
marketplace 등록을 의미하지는 않습니다. 새 버전 배포는 항상 별도의 명시적
|
|
33
|
-
승인 후에 진행합니다. v0.3.
|
|
33
|
+
승인 후에 진행합니다. v0.3.22 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`
|
|
@@ -117,7 +117,7 @@ checkout을 먼저 해석해서 `sh: litclaude-ai: command not found`로 실패
|
|
|
117
117
|
|
|
118
118
|
```bash
|
|
119
119
|
cd /tmp
|
|
120
|
-
npx --yes litclaude-ai@0.3.
|
|
120
|
+
npx --yes litclaude-ai@0.3.22 install
|
|
121
121
|
```
|
|
122
122
|
|
|
123
123
|
설치 상태를 확인합니다.
|
|
@@ -130,7 +130,7 @@ installer는 Claude Code의 `statusLine` command도 packaged LitClaude HUD로
|
|
|
130
130
|
설정합니다. 색상을 제거한 예시는 다음처럼 시작합니다.
|
|
131
131
|
|
|
132
132
|
```text
|
|
133
|
-
[🔥LITCLAUDE v0.3.
|
|
133
|
+
[🔥LITCLAUDE v0.3.22] | O4.8 │ ctx [▎░░] 9%/1000k │ 5h [▏░] 4% ↻2h15m │ 1w [▊░] 35% ↻3d6h │ git main +3 ✓
|
|
134
134
|
```
|
|
135
135
|
|
|
136
136
|
`↻` 표시는 rate-limit reset까지 남은 시간을 짧게 보여주는 countdown입니다.
|
package/RELEASE_CHECKLIST.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# LitClaude Release Checklist
|
|
2
2
|
|
|
3
|
-
Status: `litclaude-ai@0.3.
|
|
3
|
+
Status: `litclaude-ai@0.3.22` is the current release candidate — a full bare
|
|
4
4
|
skill-body prompt-hook routing release on top of the planning-only Hyperplan skill and read-only `lit-recap`
|
|
5
5
|
session recap surface (command, skill, and bounded hook routing
|
|
6
6
|
including the Korean `리캡` trigger), the dry-run-first native `/goal`
|
|
@@ -12,9 +12,9 @@ side-effect-free, the launcher starts only a separate Claude Code
|
|
|
12
12
|
print/background worker, and the release preserves the Korean polishing
|
|
13
13
|
command, strict multi-agent review pipeline, fidelity guardrails, package
|
|
14
14
|
hygiene checks, native route gates, and safe start-work handoff behavior.
|
|
15
|
-
`package.json` is aligned to `0.3.
|
|
16
|
-
`plugins/litclaude/.claude-plugin/plugin.json` is aligned to `0.3.
|
|
17
|
-
plugin-local MCP server reports `0.3.
|
|
15
|
+
`package.json` is aligned to `0.3.22`,
|
|
16
|
+
`plugins/litclaude/.claude-plugin/plugin.json` is aligned to `0.3.22`, and the
|
|
17
|
+
plugin-local MCP server reports `0.3.22`.
|
|
18
18
|
|
|
19
19
|
This release carries the v0.2.2 Dynamic workflow hardening surfaces:
|
|
20
20
|
`/dynamic-workflow`, `workflow-check --json`, native `/goal` fallback guidance,
|
|
@@ -63,9 +63,9 @@ No npm publication is required for this track.
|
|
|
63
63
|
Before requesting publication approval, confirm these artifacts from the current
|
|
64
64
|
checkout:
|
|
65
65
|
|
|
66
|
-
- `package.json` version is `0.3.
|
|
67
|
-
- `plugins/litclaude/.claude-plugin/plugin.json` version is `0.3.
|
|
68
|
-
- `plugins/litclaude/bin/litclaude-mcp.js` reports server version `0.3.
|
|
66
|
+
- `package.json` version is `0.3.22`.
|
|
67
|
+
- `plugins/litclaude/.claude-plugin/plugin.json` version is `0.3.22`.
|
|
68
|
+
- `plugins/litclaude/bin/litclaude-mcp.js` reports server version `0.3.22`.
|
|
69
69
|
- Prompt-hook tests cover bundled `SKILL.md` body injection for bare `hyperplan`, `litresearch`, `lit research`, `init-deep`, and explicit `$start-work`, while natural-language `lit start work` stays BLOCKED.
|
|
70
70
|
- `lit search` and `lit query` route to `/litclaude:litresearch` without activating on slash mentions, code spans, or non-lit prompts.
|
|
71
71
|
- Litresearch web lanes require public API/feed preference, validator-first checks, route traces, prompt-injection quarantine, and honest auth/paywall/private-data stop reasons.
|
package/package.json
CHANGED
|
@@ -48,17 +48,17 @@ const plainWordBoundary = /^[A-Za-z0-9]$/u;
|
|
|
48
48
|
const compoundWordBoundary = /^[A-Za-z0-9_-]$/u;
|
|
49
49
|
|
|
50
50
|
const triggerByToken = {
|
|
51
|
-
"deep-interview": { command: "/litclaude:deep-interview", skill: "Skill(deep-interview)", discipline: "deep-interview" },
|
|
52
|
-
"dynamic-workflow": { command: "/litclaude:dynamic-workflow", skill: "Skill(lit-loop)", discipline: "dynamic-workflow" },
|
|
53
|
-
"agent-team": { command: "/litclaude:lit-loop", skill: "Skill(lit-loop)", discipline: "agent-team" },
|
|
51
|
+
"deep-interview": { command: "/litclaude:deep-interview", skill: "Skill(deep-interview)", skillId: "deep-interview", discipline: "deep-interview" },
|
|
52
|
+
"dynamic-workflow": { command: "/litclaude:dynamic-workflow", skill: "Skill(lit-loop)", skillId: "lit-loop", discipline: "dynamic-workflow" },
|
|
53
|
+
"agent-team": { command: "/litclaude:lit-loop", skill: "Skill(lit-loop)", skillId: "lit-loop", discipline: "agent-team" },
|
|
54
54
|
hyperplan: { command: "/litclaude:lit-plan", skill: "Skill(hyperplan)", skillId: "hyperplan", discipline: "lit-plan" },
|
|
55
55
|
"init-deep": { command: "/litclaude:init-deep", skill: "Skill(init-deep)", skillId: "init-deep", discipline: "init-deep" },
|
|
56
|
-
"lit-plan": { command: "/litclaude:lit-plan", skill: "Skill(lit-plan)", discipline: "lit-plan" },
|
|
57
|
-
"lit-recap": { command: "/litclaude:lit-recap", skill: "Skill(lit-recap)", discipline: "lit-recap" },
|
|
58
|
-
"lit-loop": { command: "/litclaude:lit-loop", skill: "Skill(lit-loop)", discipline: "lit-loop" },
|
|
56
|
+
"lit-plan": { command: "/litclaude:lit-plan", skill: "Skill(lit-plan)", skillId: "lit-plan", discipline: "lit-plan" },
|
|
57
|
+
"lit-recap": { command: "/litclaude:lit-recap", skill: "Skill(lit-recap)", skillId: "lit-recap", discipline: "lit-recap" },
|
|
58
|
+
"lit-loop": { command: "/litclaude:lit-loop", skill: "Skill(lit-loop)", skillId: "lit-loop", discipline: "lit-loop" },
|
|
59
59
|
"start-work": { command: "/litclaude:start-work", skill: "Skill(start-work)", skillId: "start-work", discipline: "start-work" },
|
|
60
|
-
"review-work": { command: "/litclaude:review-work", skill: "Skill(review-work)", discipline: "review-work" },
|
|
61
|
-
litgoal: { command: "/litclaude:litgoal", skill: "Skill(litgoal)", discipline: "litgoal" },
|
|
60
|
+
"review-work": { command: "/litclaude:review-work", skill: "Skill(review-work)", skillId: "review-work", discipline: "review-work" },
|
|
61
|
+
litgoal: { command: "/litclaude:litgoal", skill: "Skill(litgoal)", skillId: "litgoal", discipline: "litgoal" },
|
|
62
62
|
litresearch: { command: "/litclaude:litresearch", skill: "Skill(litresearch)", skillId: "litresearch", discipline: "litresearch" },
|
|
63
63
|
};
|
|
64
64
|
|
|
@@ -160,6 +160,12 @@ const findDollarCommandTrigger = (raw) => {
|
|
|
160
160
|
return { ...triggerByToken[match[1]], source: "dollar-command" };
|
|
161
161
|
};
|
|
162
162
|
|
|
163
|
+
const findLeadingBareCommandTrigger = (raw) => {
|
|
164
|
+
const match = /^\s*(deep-interview|init-deep|lit-plan|lit-recap|lit-loop|start-work|review-work|litgoal|litresearch)(?=$|[^\w-])/u.exec(raw);
|
|
165
|
+
if (!match) return undefined;
|
|
166
|
+
return { ...triggerByToken[match[1]], source: "bare-command" };
|
|
167
|
+
};
|
|
168
|
+
|
|
163
169
|
const hasLitTrigger = (raw) => containsCompoundBoundedWord(raw, "lit") || containsCompoundBoundedWord(raw, "litwork");
|
|
164
170
|
|
|
165
171
|
const hangulSyllable = /^[가-힣]$/u;
|
|
@@ -211,6 +217,8 @@ const findWorkflowTrigger = (prompt) => {
|
|
|
211
217
|
const dollarTrigger = findDollarCommandTrigger(raw);
|
|
212
218
|
if (dollarTrigger) return dollarTrigger;
|
|
213
219
|
if (containsSlashCommandMention(raw)) return undefined;
|
|
220
|
+
const bareCommandTrigger = findLeadingBareCommandTrigger(raw);
|
|
221
|
+
if (bareCommandTrigger) return bareCommandTrigger;
|
|
214
222
|
if (containsCompoundBoundedWord(raw, "hyperplan")) return { ...triggerByToken.hyperplan, source: "bare-command" };
|
|
215
223
|
if (containsCompoundBoundedWord(raw, "init-deep")) return { ...triggerByToken["init-deep"], source: "bare-command" };
|
|
216
224
|
const recapTrigger = findRecapTrigger(raw);
|
|
@@ -250,12 +258,13 @@ const teamGateContext = (discipline) => {
|
|
|
250
258
|
return ["Native agent team setup gate: CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 is not set, so do not claim a teammate launch. To enable native teams, launch with `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 claude --teammate-mode auto` or set `env.CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` plus optional `teammateMode: auto`; fallback to subagent delegation or Dynamic workflow meanwhile."];
|
|
251
259
|
};
|
|
252
260
|
|
|
253
|
-
const recapContext = ({ command, skill, discipline, source }) => [
|
|
261
|
+
const recapContext = ({ command, skill, skillId, discipline, source }) => [
|
|
254
262
|
`Treat this prompt as an explicit request to use LitClaude ${discipline} discipline now; load or follow ${command} / ${skill} semantics before ordinary task execution.`,
|
|
255
263
|
modeContracts[discipline],
|
|
256
264
|
"Read-only recap surfaces: read .litclaude/litgoal/goals.json, .litclaude/litgoal/ledger.jsonl, and .litclaude/litgoal/brief.md when present (plus repo-level evidence/ paths), and combine them with current-session context. The read-only `litclaude-ai litgoal status --json` and `criteria` subcommands are the only litgoal CLI reads allowed.",
|
|
257
265
|
"Output contract: reply in Korean by default using the fixed lit-recap headers from Skill(lit-recap); switch the body to English only when the user asks (--en / in English / 영어); produce the brief `## ⚡ 요약` digest on --brief / 짧게; keep technical tokens (paths, commands, identifiers) verbatim.",
|
|
258
266
|
`Activation source: ${source ?? "legacy"}. Slash commands and slash-command mentions are handled by Claude Code's native command surface and do not activate this prompt hook. Code spans, code fences, substrings, and compound tokens are ignored. Secret-bearing prompt material is never persisted raw; recap output may only reference redacted summaries and evidence paths.`,
|
|
267
|
+
...staticSkillBodyContext({ skillId }),
|
|
259
268
|
].join(" ");
|
|
260
269
|
|
|
261
270
|
const litworkContext = ({ command, skill, skillId, discipline, softConfirm, safetyBlock, source }, input) => [
|