litclaude-ai 0.3.27 → 0.3.28

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 CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.28 - 2026-07-14 — explicit start-work activation
4
+
5
+ - Require the `$start-work` shorthand and natural `lit start work` activation
6
+ to be leading command phrases without changing other dollar routes.
7
+ - Keep diagnostic prose, copied blockquotes, and explanatory mentions of
8
+ `$start-work` or `lit start work` inert while preserving explicit dollar,
9
+ bare, natural, and native slash start-work routes.
10
+
3
11
  ## 0.3.27 - 2026-07-12 — structured interactive installer
4
12
 
5
13
  - Present interactive installs as five persistent, numbered Claude-native
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.27-2ea44f" />
12
+ <img src="https://img.shields.io/badge/version-0.3.28-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.27` for personal install
25
+ This checkout is prepared as `litclaude-ai@0.3.28` 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.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.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
@@ -125,7 +125,7 @@ directory, the normal install command works:
125
125
 
126
126
  ```bash
127
127
  cd /tmp
128
- npx --yes litclaude-ai@0.3.27 install
128
+ npx --yes litclaude-ai@0.3.28 install
129
129
  ```
130
130
 
131
131
  Validate the installed plugin:
@@ -138,7 +138,7 @@ The installer also sets Claude Code's `statusLine` command to the packaged
138
138
  LitClaude HUD. A typical no-color render starts like:
139
139
 
140
140
  ```text
141
- [🔥LITCLAUDE v0.3.27] | O4.8 │ ctx [▎░░] 9%/1000k │ 5h [▏░] 4% ↻2h15m │ 1w [▊░] 35% ↻3d6h │ git main +3 ✓
141
+ [🔥LITCLAUDE v0.3.28] | O4.8 │ ctx [▎░░] 9%/1000k │ 5h [▏░] 4% ↻2h15m │ 1w [▊░] 35% ↻3d6h │ git main +3 ✓
142
142
  ```
143
143
 
144
144
  The `↻` suffix is a compact rate-limit reset countdown. It is separated from
@@ -255,7 +255,9 @@ a visible hook message. Slash commands such as `/lit-plan` are handled by Claude
255
255
  Code's native command surface and should not double-activate the hook. Natural
256
256
  `lit start work` is a safe handoff: it emits `BLOCKED:` and tells the user to
257
257
  run `/start-work` or `/litclaude:start-work` with the approved plan because a
258
- prompt hook cannot switch Claude Code agents. Plain `lit` still maps to
258
+ prompt hook cannot switch Claude Code agents. The `$start-work` shorthand and
259
+ natural start-work phrases activate only at the beginning of the prompt, so diagnostic
260
+ prose and copied or blockquoted mentions stay inert. Plain `lit` still maps to
259
261
  `/litclaude:lit-loop` / `Skill(lit-loop)` semantics before ordinary task
260
262
  execution, then the matching skill and agent instructions steer Claude toward
261
263
  test-first work, native goal handling, manual QA evidence, cleanup receipts, and
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.27-2ea44f" />
12
+ <img src="https://img.shields.io/badge/version-0.3.28-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.27` 배포 준비용으로 정리되어 있습니다. 목적은
29
+ 현재 checkout은 `litclaude-ai@0.3.28` 배포 준비용으로 정리되어 있습니다. 목적은
30
30
  다른 PC에서도 빠르게 설치하기 위한 개인용 package metadata를 갖추는 것입니다.
31
31
  npm package metadata를 준비했다고 해서 홍보, 공개 저장소 운영, Claude
32
32
  marketplace 등록을 의미하지는 않습니다. 새 버전 배포는 항상 별도의 명시적
33
- 승인 후에 진행합니다. 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.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`
@@ -126,7 +126,7 @@ checkout을 먼저 해석해서 `sh: litclaude-ai: command not found`로 실패
126
126
 
127
127
  ```bash
128
128
  cd /tmp
129
- npx --yes litclaude-ai@0.3.27 install
129
+ npx --yes litclaude-ai@0.3.28 install
130
130
  ```
131
131
 
132
132
  설치 상태를 확인합니다.
@@ -139,7 +139,7 @@ installer는 Claude Code의 `statusLine` command도 packaged LitClaude HUD로
139
139
  설정합니다. 색상을 제거한 예시는 다음처럼 시작합니다.
140
140
 
141
141
  ```text
142
- [🔥LITCLAUDE v0.3.27] | O4.8 │ ctx [▎░░] 9%/1000k │ 5h [▏░] 4% ↻2h15m │ 1w [▊░] 35% ↻3d6h │ git main +3 ✓
142
+ [🔥LITCLAUDE v0.3.28] | O4.8 │ ctx [▎░░] 9%/1000k │ 5h [▏░] 4% ↻2h15m │ 1w [▊░] 35% ↻3d6h │ git main +3 ✓
143
143
  ```
144
144
 
145
145
  `↻` 표시는 rate-limit reset까지 남은 시간을 짧게 보여주는 countdown입니다.
@@ -248,8 +248,9 @@ visible hook message를 보여주는 것입니다. `/lit-plan` 같은 slash comm
248
248
  Claude Code native command surface에서 처리되며 hook을 중복 활성화하지
249
249
  않습니다. 자연어 `lit start work`는 안전한 handoff로 `BLOCKED:`를 내고,
250
250
  prompt hook이 Claude Code agent를 전환할 수 없으므로 승인된 plan과 함께
251
- `/start-work` 또는 `/litclaude:start-work`를 실행하라고 안내합니다. plain
252
- `lit`는 일반 작업 실행 `/litclaude:lit-loop` / `Skill(lit-loop)` semantics로
251
+ `/start-work` 또는 `/litclaude:start-work`를 실행하라고 안내합니다.
252
+ `$start-work`와 자연어 start-work phrase는 prompt 선두에서만 활성화되므로 진단문,
253
+ 복사문, blockquote 안의 단순 언급은 활성화되지 않습니다. plain `lit`는 일반 작업 실행 전 `/litclaude:lit-loop` / `Skill(lit-loop)` semantics로
253
254
  처리됩니다. 그 뒤 skill 및 agent 지시문이 Claude를 test-first 작업, native
254
255
  goal 처리, 실제 수동 QA 증거, cleanup receipt, 향후 release step의 명시적 승인
255
256
  쪽으로 유도합니다.
@@ -1,7 +1,8 @@
1
1
  # LitClaude Release Checklist
2
2
 
3
- Status: `litclaude-ai@0.3.27` is the current release candidate — a structured
4
- five-stage interactive installer with success/failure receipts plus adaptive
3
+ Status: `litclaude-ai@0.3.28` is the current release candidate — explicit
4
+ leading start-work activation guards plus a structured five-stage interactive
5
+ installer with success/failure receipts and adaptive
5
6
  planning, draft-plan review, and orchestration-safety release on top of the portable
6
7
  details, public-read, litgoal-status, and evidence-wording release and the auxiliary
7
8
  skill inventory and advisory-probe release and the full bare
@@ -16,9 +17,9 @@ side-effect-free, the launcher starts only a separate Claude Code
16
17
  print/background worker, and the release preserves the Korean polishing
17
18
  command, strict multi-agent review pipeline, fidelity guardrails, package
18
19
  hygiene checks, native route gates, and safe start-work handoff behavior.
19
- `package.json` is aligned to `0.3.27`,
20
- `plugins/litclaude/.claude-plugin/plugin.json` is aligned to `0.3.27`, and the
21
- plugin-local MCP server reports `0.3.27`.
20
+ `package.json` is aligned to `0.3.28`,
21
+ `plugins/litclaude/.claude-plugin/plugin.json` is aligned to `0.3.28`, and the
22
+ plugin-local MCP server reports `0.3.28`.
22
23
 
23
24
  This release carries the v0.2.2 Dynamic workflow hardening surfaces:
24
25
  `/dynamic-workflow`, `workflow-check --json`, native `/goal` fallback guidance,
@@ -67,10 +68,10 @@ No npm publication is required for this track.
67
68
  Before requesting publication approval, confirm these artifacts from the current
68
69
  checkout:
69
70
 
70
- - `package.json` version is `0.3.27`.
71
- - `plugins/litclaude/.claude-plugin/plugin.json` version is `0.3.27`.
72
- - `plugins/litclaude/bin/litclaude-mcp.js` reports server version `0.3.27`.
73
- - 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.
71
+ - `package.json` version is `0.3.28`.
72
+ - `plugins/litclaude/.claude-plugin/plugin.json` version is `0.3.28`.
73
+ - `plugins/litclaude/bin/litclaude-mcp.js` reports server version `0.3.28`.
74
+ - 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.
74
75
  - `lit search` and `lit query` route to `/litclaude:litresearch` without activating on slash mentions, code spans, or non-lit prompts.
75
76
  - Litresearch web lanes require public API/feed preference, validator-first checks, route traces, prompt-injection quarantine, and honest auth/paywall/private-data stop reasons.
76
77
  - `node bin/litclaude-ai.js public-read <public-url> --json` exposes the guarded JS runtime reader.
package/docs/hooks.md CHANGED
@@ -121,7 +121,9 @@ surfaces and do not activate this prompt hook; code spans, code fences,
121
121
  substrings, and compound tokens are also ignored. Natural `lit start work`
122
122
  returns a `BLOCKED:` handoff that tells the user to run `/start-work` or
123
123
  `/litclaude:start-work` with the approved plan, because a prompt hook cannot
124
- switch Claude Code agents.
124
+ switch Claude Code agents. The `$start-work` shorthand and natural start-work
125
+ phrases activate only when they lead the prompt; diagnostic prose and copied or
126
+ blockquoted mentions remain inert.
125
127
 
126
128
  LitClaude follows the LitClaude goal pattern as an honest native-binding attempt,
127
129
  not as slash-command injection. If Claude Code exposes native goal tools, the
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "litclaude-ai",
3
- "version": "0.3.27",
3
+ "version": "0.3.28",
4
4
  "description": "Claude Code-native workflow distribution.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "litclaude",
3
3
  "description": "Claude Code-native workflow plugin.",
4
- "version": "0.3.27",
4
+ "version": "0.3.28",
5
5
  "author": {
6
6
  "name": "LitClaude contributors"
7
7
  },
@@ -159,6 +159,7 @@ const containsSlashCommandMention = (text) => slashCommandMentionPattern.test(te
159
159
  const findDollarCommandTrigger = (raw) => {
160
160
  const match = /(?:^|\s)\$(deep-interview|dynamic-workflow|init-deep|lit-plan|lit-recap|lit-loop|start-work|review-work|litgoal|litresearch)(?=$|[^\w-])/u.exec(raw);
161
161
  if (!match) return undefined;
162
+ if (match[1] === "start-work" && !/^\s*\$start-work(?=$|[^\w-])/u.test(raw)) return undefined;
162
163
  return { ...triggerByToken[match[1]], source: "dollar-command" };
163
164
  };
164
165
 
@@ -169,6 +170,7 @@ const findLeadingBareCommandTrigger = (raw) => {
169
170
  };
170
171
 
171
172
  const hasLitTrigger = (raw) => containsCompoundBoundedWord(raw, "lit") || containsCompoundBoundedWord(raw, "litwork");
173
+ const hasTrailingLitInvocation = (raw) => /(?:^|\s)lit(?:work)?\s*$/u.test(raw);
172
174
 
173
175
  const hangulSyllable = /^[가-힣]$/u;
174
176
 
@@ -205,12 +207,13 @@ const findNaturalLitTrigger = (prompt) => {
205
207
  if (hasExplicitTeamRoute(normalized)) return { ...triggerByToken["agent-team"], source: "natural-language" };
206
208
  if (hasExplicitWorkflowRoute(normalized)) return { ...triggerByToken["dynamic-workflow"], source: "natural-language" };
207
209
  if (containsPlainWord(normalized, "review")) return { ...triggerByToken["review-work"], source: "natural-language" };
208
- if (containsPlainWord(normalized, "start") && containsPlainWord(normalized, "work")) {
210
+ if (/^\s*lit(?:work)?\s+start\s+work(?=$|[^\w-])/u.test(normalized)) {
209
211
  return { ...triggerByToken["start-work"], source: "natural-language", safetyBlock: true };
210
212
  }
211
213
  if (hasExplicitResearchRoute(normalized)) return { ...triggerByToken.litresearch, source: "natural-language" };
212
214
  if (containsPlainWord(normalized, "goal")) return { ...triggerByToken.litgoal, source: "natural-language" };
213
215
  if (containsPlainWord(normalized, "plan")) return { ...triggerByToken["lit-plan"], source: "natural-language" };
216
+ if (containsPlainWord(normalized, "start") && containsPlainWord(normalized, "work") && !hasTrailingLitInvocation(normalized)) return undefined;
214
217
  return { ...triggerByToken["lit-loop"], source: "natural-language", softConfirm: true };
215
218
  };
216
219
 
@@ -218,6 +221,7 @@ const findWorkflowTrigger = (prompt) => {
218
221
  const raw = rawTriggerText(prompt);
219
222
  const dollarTrigger = findDollarCommandTrigger(raw);
220
223
  if (dollarTrigger) return dollarTrigger;
224
+ if (/(?:^|\s)\$start-work(?=$|[^\w-])/u.test(raw) && !hasTrailingLitInvocation(raw)) return undefined;
221
225
  if (containsSlashCommandMention(raw)) return undefined;
222
226
  const bareCommandTrigger = findLeadingBareCommandTrigger(raw);
223
227
  if (bareCommandTrigger) return bareCommandTrigger;
@@ -3,7 +3,7 @@
3
3
  import { readPublicSource } from "../lib/public-source-reader/reader.mjs";
4
4
 
5
5
  const protocolVersion = "2024-11-05";
6
- const serverVersion = "0.3.27";
6
+ const serverVersion = "0.3.28";
7
7
 
8
8
  const publicSourceReadTool = {
9
9
  name: "public_source_read",