litclaude-ai 0.3.28 โ 0.3.29
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 +12 -0
- package/README.md +37 -6
- package/README_ko-KR.md +35 -6
- package/RELEASE_CHECKLIST.md +38 -8
- package/bin/litclaude-ai.js +63 -2
- package/docs/hooks.md +20 -0
- package/docs/workflow-compatibility-audit.md +4 -0
- package/package.json +1 -1
- package/plugins/litclaude/.claude-plugin/plugin.json +1 -1
- package/plugins/litclaude/bin/litclaude-hook.js +55 -2
- package/plugins/litclaude/bin/litclaude-mcp.js +1 -1
- package/plugins/litclaude/bin/litclaude-scientific-visualization-doctor.js +135 -0
- package/plugins/litclaude/commands/lit-handoff.md +69 -0
- package/plugins/litclaude/commands/lit-scientific-visualization.md +65 -0
- package/plugins/litclaude/lib/bundled-skills-integrity.mjs +105 -0
- package/plugins/litclaude/skills/lit-handoff/SKILL.md +75 -0
- package/plugins/litclaude/skills/lit-scientific-visualization/SKILL.md +80 -0
- package/plugins/litclaude/vendor/022_handoff/SKILL.md +199 -0
- package/plugins/litclaude/vendor/022_handoff/evals/evals.json +154 -0
- package/plugins/litclaude/vendor/022_handoff/examples/HANDOFF-example-generic-auth-refactor.md +97 -0
- package/plugins/litclaude/vendor/022_handoff/templates/HANDOFF.md +121 -0
- package/plugins/litclaude/vendor/045_scientific-visualization/SKILL.md +283 -0
- package/plugins/litclaude/vendor/045_scientific-visualization/assets/color_palettes.py +197 -0
- package/plugins/litclaude/vendor/045_scientific-visualization/assets/nature.mplstyle +75 -0
- package/plugins/litclaude/vendor/045_scientific-visualization/assets/presentation.mplstyle +74 -0
- package/plugins/litclaude/vendor/045_scientific-visualization/assets/publication.mplstyle +78 -0
- package/plugins/litclaude/vendor/045_scientific-visualization/evals/evals.json +158 -0
- package/plugins/litclaude/vendor/045_scientific-visualization/references/color_palettes.md +380 -0
- package/plugins/litclaude/vendor/045_scientific-visualization/references/journal_requirements.md +359 -0
- package/plugins/litclaude/vendor/045_scientific-visualization/references/matplotlib_examples.md +608 -0
- package/plugins/litclaude/vendor/045_scientific-visualization/references/mdanalysis_martini_visualization.md +85 -0
- package/plugins/litclaude/vendor/045_scientific-visualization/references/publication_guidelines.md +217 -0
- package/plugins/litclaude/vendor/045_scientific-visualization/references/seaborn_for_publications.md +293 -0
- package/plugins/litclaude/vendor/045_scientific-visualization/scripts/figure_export.py +238 -0
- package/plugins/litclaude/vendor/045_scientific-visualization/scripts/style_presets.py +467 -0
- package/plugins/litclaude/vendor/045_scientific-visualization/tests/test_figure_export.py +51 -0
- package/plugins/litclaude/vendor/045_scientific-visualization/tests/test_style_presets.py +114 -0
- package/plugins/litclaude/vendor/NOTICE.md +8 -0
- package/plugins/litclaude/vendor/licenses/022_handoff-MIT.txt +21 -0
- package/plugins/litclaude/vendor/licenses/045_scientific-visualization-MIT.txt +21 -0
- package/plugins/litclaude/vendor/provenance/022_handoff.md +16 -0
- package/plugins/litclaude/vendor/provenance/045_scientific-visualization.md +34 -0
- package/scripts/doctor.mjs +18 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.3.29 - 2026-07-18 โ bundled handoff and scientific visualization
|
|
4
|
+
|
|
5
|
+
- Bundle the approved exact-source `022_handoff` and
|
|
6
|
+
`045_scientific-visualization` corpora with their licenses, provenance,
|
|
7
|
+
scripts, assets, and canonical-source integrity records.
|
|
8
|
+
- Add Claude-native command and exact-bare prompt-hook routes for `handoff` and
|
|
9
|
+
`lit-scientific-visualization`, including visible route-specific
|
|
10
|
+
`๐ฅ LITBURN IGNITED` banners and inert near-miss handling.
|
|
11
|
+
- Verify installed-package skill discovery, immutable payload checks, script and
|
|
12
|
+
asset path resolution, and honest read-only dependency diagnostics for the
|
|
13
|
+
scientific visualization workflow without silently installing Python packages.
|
|
14
|
+
|
|
3
15
|
## 0.3.28 - 2026-07-14 โ explicit start-work activation
|
|
4
16
|
|
|
5
17
|
- Require the `$start-work` shorthand and natural `lit start work` activation
|
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.29-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.29` 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 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.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
|
|
@@ -78,7 +78,13 @@ activation/read-only polish, and installer permission-preference discipline.
|
|
|
78
78
|
`korean-ai-slop-remover`, `review-work`, `frontend-ui-ux`,
|
|
79
79
|
`git-master`, `comment-checker`, `rules`, `lsp`, `lsp-setup`, `litgoal`,
|
|
80
80
|
`deep-interview`, `hyperplan`, `init-deep`, `litresearch`,
|
|
81
|
-
`lit-plan`, `lit-recap`, `lit-loop`, `start-work`,
|
|
81
|
+
`lit-plan`, `lit-recap`, `lit-loop`, `start-work`, `lit-handoff`,
|
|
82
|
+
`lit-scientific-visualization`, and `visual-qa`
|
|
83
|
+
- **Bundled owner-authorized skills** - `lit-handoff` reads the complete immutable
|
|
84
|
+
four-file handoff source and supports the exact bare `handoff` prompt;
|
|
85
|
+
`lit-scientific-visualization` reads the complete immutable 16-file authored
|
|
86
|
+
source, resolves packaged scripts and assets, and reports missing Python or
|
|
87
|
+
matplotlib as `DEGRADED` without silently installing dependencies
|
|
82
88
|
- **Auxiliary Skill-discovery entries** - `frontend-ui-ux`, `git-master`,
|
|
83
89
|
`lsp-setup`, and `visual-qa` are shipped skill ids discoverable through
|
|
84
90
|
Claude Code's native Skill discovery; they intentionally do not add extra
|
|
@@ -125,7 +131,7 @@ directory, the normal install command works:
|
|
|
125
131
|
|
|
126
132
|
```bash
|
|
127
133
|
cd /tmp
|
|
128
|
-
npx --yes litclaude-ai@0.3.
|
|
134
|
+
npx --yes litclaude-ai@0.3.29 install
|
|
129
135
|
```
|
|
130
136
|
|
|
131
137
|
Validate the installed plugin:
|
|
@@ -138,7 +144,7 @@ The installer also sets Claude Code's `statusLine` command to the packaged
|
|
|
138
144
|
LitClaude HUD. A typical no-color render starts like:
|
|
139
145
|
|
|
140
146
|
```text
|
|
141
|
-
[๐ฅLITCLAUDE v0.3.
|
|
147
|
+
[๐ฅLITCLAUDE v0.3.29] | O4.8 โ ctx [โโโ] 9%/1000k โ 5h [โโ] 4% โป2h15m โ 1w [โโ] 35% โป3d6h โ git main +3 โ
|
|
142
148
|
```
|
|
143
149
|
|
|
144
150
|
The `โป` suffix is a compact rate-limit reset countdown. It is separated from
|
|
@@ -247,6 +253,10 @@ $litgoal <goal operation>
|
|
|
247
253
|
/litgoal <goal operation>
|
|
248
254
|
$start-work plans/example-plan.md
|
|
249
255
|
/start-work plans/example-plan.md
|
|
256
|
+
handoff
|
|
257
|
+
/litclaude:lit-handoff
|
|
258
|
+
lit-scientific-visualization
|
|
259
|
+
/litclaude:lit-scientific-visualization <publication figure request>
|
|
250
260
|
```
|
|
251
261
|
|
|
252
262
|
Expected behavior: LitClaude's prompt hook adds mode-specific `LITWORK MODE
|
|
@@ -407,6 +417,8 @@ namespaced commands when you want explicit LitClaude skill activation:
|
|
|
407
417
|
/litclaude:review-work <scope to review>
|
|
408
418
|
/litclaude:litgoal <goal operation>
|
|
409
419
|
/litclaude:korean-ai-slop-remover <Korean prose or polish request>
|
|
420
|
+
/litclaude:lit-handoff
|
|
421
|
+
/litclaude:lit-scientific-visualization <publication figure request>
|
|
410
422
|
/litclaude:start-work plans/example-plan.md
|
|
411
423
|
```
|
|
412
424
|
|
|
@@ -430,6 +442,25 @@ the prose being edited as data, preserve facts, numbers, names, quotes, claims,
|
|
|
430
442
|
scope, and uncertainty, and avoid adding outside facts unless the user asks for
|
|
431
443
|
research.
|
|
432
444
|
|
|
445
|
+
Use exact bare `handoff`, `/litclaude:lit-handoff`, or
|
|
446
|
+
`Skill(lit-handoff)` for a verified continuation packet. Only the standalone
|
|
447
|
+
bare word activates the prompt hook; mentions, quoted text, compound prompts,
|
|
448
|
+
and slash-command text remain inert. The route begins with
|
|
449
|
+
`๐ฅ LITBURN IGNITED ยท lit-handoff ๐ฅ` and reads the full packaged canonical
|
|
450
|
+
source before selecting a destination.
|
|
451
|
+
|
|
452
|
+
Use exact bare `lit-scientific-visualization`,
|
|
453
|
+
`/litclaude:lit-scientific-visualization`, or
|
|
454
|
+
`Skill(lit-scientific-visualization)` for publication-ready plotting. Only the
|
|
455
|
+
standalone bare token activates the prompt hook; generic visualization prose,
|
|
456
|
+
mentions, quoted or fenced text, mixed prompts, and slash-command text remain
|
|
457
|
+
inert at that hook. The exact-bare hook shows the banner as a visible system
|
|
458
|
+
message and injects the full adapter and canonical source. The route begins with
|
|
459
|
+
`๐ฅ LITBURN IGNITED ยท lit-scientific-visualization ๐ฅ`, resolves `scripts/` and
|
|
460
|
+
`assets/` from the installed package, and uses a read-only dependency preflight.
|
|
461
|
+
Python/matplotlib or optional scientific packages are never installed silently;
|
|
462
|
+
unavailable capabilities are reported as `DEGRADED` with the affected workflow.
|
|
463
|
+
|
|
433
464
|
## Commands
|
|
434
465
|
|
|
435
466
|
| Command | Purpose |
|
package/README_ko-KR.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
</p>
|
|
10
10
|
<p align="center">
|
|
11
11
|
<img src="https://img.shields.io/badge/npm-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.29-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.29` ๋ฐฐํฌ ์ค๋น์ฉ์ผ๋ก ์ ๋ฆฌ๋์ด ์์ต๋๋ค. ๋ชฉ์ ์
|
|
30
30
|
๋ค๋ฅธ PC์์๋ ๋น ๋ฅด๊ฒ ์ค์นํ๊ธฐ ์ํ ๊ฐ์ธ์ฉ package metadata๋ฅผ ๊ฐ์ถ๋ ๊ฒ์
๋๋ค.
|
|
31
31
|
npm package metadata๋ฅผ ์ค๋นํ๋ค๊ณ ํด์ ํ๋ณด, ๊ณต๊ฐ ์ ์ฅ์ ์ด์, Claude
|
|
32
32
|
marketplace ๋ฑ๋ก์ ์๋ฏธํ์ง๋ ์์ต๋๋ค. ์ ๋ฒ์ ๋ฐฐํฌ๋ ํญ์ ๋ณ๋์ ๋ช
์์
|
|
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`,
|
|
33
|
+
์น์ธ ํ์ ์งํํฉ๋๋ค. 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`
|
|
@@ -82,7 +82,12 @@ litresearch activation/read-only polish๋ฅผ ์ ์งํฉ๋๋ค.
|
|
|
82
82
|
`korean-ai-slop-remover`, `review-work`, `frontend-ui-ux`,
|
|
83
83
|
`git-master`, `comment-checker`, `rules`, `lsp`, `lsp-setup`, `litgoal`,
|
|
84
84
|
`deep-interview`, `hyperplan`, `init-deep`, `litresearch`,
|
|
85
|
-
`lit-plan`, `lit-recap`, `lit-loop`, `start-work`, `
|
|
85
|
+
`lit-plan`, `lit-recap`, `lit-loop`, `start-work`, `lit-handoff`,
|
|
86
|
+
`lit-scientific-visualization`, `visual-qa`
|
|
87
|
+
- **์๋ณธ ๋ณด์กด bundled skills** - `lit-handoff`๋ ์น์ธ๋ 4๊ฐ handoff ์๋ณธ
|
|
88
|
+
ํ์ผ์, `lit-scientific-visualization`์ ์น์ธ๋ authored ์๋ณธ 16๊ฐ๋ฅผ
|
|
89
|
+
byte-identicalํ๊ฒ ํฌํจํฉ๋๋ค. Python ๋๋ matplotlib์ด ์์ผ๋ฉด ์๋
|
|
90
|
+
์ค์นํ์ง ์๊ณ ํด๋น capability๋ฅผ `DEGRADED`๋ก ๋ณด๊ณ ํฉ๋๋ค.
|
|
86
91
|
- **Auxiliary Skill-discovery entries** - `frontend-ui-ux`, `git-master`,
|
|
87
92
|
`lsp-setup`, `visual-qa`๋ Claude Code native Skill discovery๋ก ์ฐพ๋
|
|
88
93
|
shipped skill id์
๋๋ค. ๋ณ๋์ slash route๋ dollar prompt route๋ฅผ ์ถ๊ฐํ์ง
|
|
@@ -126,7 +131,7 @@ checkout์ ๋จผ์ ํด์ํด์ `sh: litclaude-ai: command not found`๋ก ์คํจ
|
|
|
126
131
|
|
|
127
132
|
```bash
|
|
128
133
|
cd /tmp
|
|
129
|
-
npx --yes litclaude-ai@0.3.
|
|
134
|
+
npx --yes litclaude-ai@0.3.29 install
|
|
130
135
|
```
|
|
131
136
|
|
|
132
137
|
์ค์น ์ํ๋ฅผ ํ์ธํฉ๋๋ค.
|
|
@@ -139,7 +144,7 @@ installer๋ Claude Code์ `statusLine` command๋ packaged LitClaude HUD๋ก
|
|
|
139
144
|
์ค์ ํฉ๋๋ค. ์์์ ์ ๊ฑฐํ ์์๋ ๋ค์์ฒ๋ผ ์์ํฉ๋๋ค.
|
|
140
145
|
|
|
141
146
|
```text
|
|
142
|
-
[๐ฅLITCLAUDE v0.3.
|
|
147
|
+
[๐ฅLITCLAUDE v0.3.29] | O4.8 โ ctx [โโโ] 9%/1000k โ 5h [โโ] 4% โป2h15m โ 1w [โโ] 35% โป3d6h โ git main +3 โ
|
|
143
148
|
```
|
|
144
149
|
|
|
145
150
|
`โป` ํ์๋ rate-limit reset๊น์ง ๋จ์ ์๊ฐ์ ์งง๊ฒ ๋ณด์ฌ์ฃผ๋ countdown์
๋๋ค.
|
|
@@ -240,6 +245,10 @@ $litgoal <goal operation>
|
|
|
240
245
|
/litgoal <goal operation>
|
|
241
246
|
$start-work plans/example-plan.md
|
|
242
247
|
/start-work plans/example-plan.md
|
|
248
|
+
handoff
|
|
249
|
+
/litclaude:lit-handoff
|
|
250
|
+
lit-scientific-visualization
|
|
251
|
+
/litclaude:lit-scientific-visualization <์ถํ์ฉ figure ์์ฒญ>
|
|
243
252
|
```
|
|
244
253
|
|
|
245
254
|
๊ธฐ๋ ๋์์ LitClaude prompt hook์ด ์์ฐ์ด LIT route๋ณ mode-specific
|
|
@@ -380,6 +389,8 @@ command๋ฅผ ์ฌ์ฉํฉ๋๋ค.
|
|
|
380
389
|
/litclaude:review-work <๊ฒํ ํ ๋ฒ์>
|
|
381
390
|
/litclaude:litgoal <goal operation>
|
|
382
391
|
/litclaude:korean-ai-slop-remover <ํ๊ตญ์ด ๋ฌธ์ฅ ๋๋ ๋ค๋ฌ๊ธฐ ์์ฒญ>
|
|
392
|
+
/litclaude:lit-handoff
|
|
393
|
+
/litclaude:lit-scientific-visualization <์ถํ์ฉ figure ์์ฒญ>
|
|
383
394
|
/litclaude:start-work plans/example-plan.md
|
|
384
395
|
```
|
|
385
396
|
|
|
@@ -403,6 +414,24 @@ mode์์ ๋ฐ๋ก ๋ค๋ฌ๊ณ , ๊ธธ๊ฑฐ๋ ๋ฏผ๊ฐํ๊ฑฐ๋ review/redo/fidelity ํ
|
|
|
403
414
|
๋ฒ์, ๋ถํ์ค์ฑ์ ๋ณด์กดํ๋ฉฐ, ์ฌ์ฉ์๊ฐ research๋ฅผ ์์ฒญํ์ง ์์ผ๋ฉด ์ธ๋ถ ์ฌ์ค์
|
|
404
415
|
์ถ๊ฐํ์ง ์์ต๋๋ค.
|
|
405
416
|
|
|
417
|
+
์ ํํ `handoff` ํ ๋จ์ด๋ง ์
๋ ฅํ๊ฑฐ๋ `/litclaude:lit-handoff`,
|
|
418
|
+
`Skill(lit-handoff)`๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฒ์ฆ๋ continuation packet ํ๋ฆ์ด
|
|
419
|
+
์์๋ฉ๋๋ค. ์ธ๊ธ, ์ธ์ฉ, compound prompt, slash-command ๋ฌธ์์ด์ hook์
|
|
420
|
+
ํ์ฑํํ์ง ์์ต๋๋ค. ์ฒซ ์ค์ `๐ฅ LITBURN IGNITED ยท lit-handoff ๐ฅ`์ด๊ณ ,
|
|
421
|
+
ํจํค์ง์ ํฌํจ๋ ์๋ณธ์ ์ ๋ถ ์ฝ์ ๋ค ๋ชฉ์ ์ง๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
|
|
422
|
+
|
|
423
|
+
์ถํ์ฉ figure์๋ ์ ํํ bare `lit-scientific-visualization`,
|
|
424
|
+
`/litclaude:lit-scientific-visualization`, ๋๋
|
|
425
|
+
`Skill(lit-scientific-visualization)`์ ์ฌ์ฉํฉ๋๋ค. ๋ฐ๊นฅ ๊ณต๋ฐฑ์ ์ ์ธํ ์ ์ฒด prompt๊ฐ
|
|
426
|
+
์ด bare token๊ณผ ์ผ์นํ ๋๋ง prompt hook์ด ํ์ฑํ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ธ visualize,
|
|
427
|
+
plot, chart ํํ, ์ธ๊ธ, ์ธ์ฉยทfence, mixed prompt, slash-command ๋ฌธ์์ด์
|
|
428
|
+
๋นํ์ฑ ์ํ๋ฅผ ์ ์งํฉ๋๋ค. exact-bare hook์ ๋ฐฐ๋๋ฅผ visible system message๋ก ํ์ํ๊ณ
|
|
429
|
+
์ ์ฒด adapter์ canonical source๋ฅผ ์ฃผ์
ํฉ๋๋ค. ์ฒซ ์ค์
|
|
430
|
+
`๐ฅ LITBURN IGNITED ยท lit-scientific-visualization ๐ฅ`์ด๋ฉฐ ์ค์น๋ ํจํค์ง์
|
|
431
|
+
`scripts/`์ `assets/`๋ฅผ ์ฌ์ฉํฉ๋๋ค. Python, matplotlib, ์ ํ scientific
|
|
432
|
+
package๋ ๋ชฐ๋ ์ค์นํ์ง ์๊ณ , ์์ผ๋ฉด ์ํฅ๋ฐ๋ workflow๋ฅผ `DEGRADED`๋ก
|
|
433
|
+
๋ณด๊ณ ํฉ๋๋ค.
|
|
434
|
+
|
|
406
435
|
## ๋ช
๋ น์ด
|
|
407
436
|
|
|
408
437
|
| ๋ช
๋ น์ด | ์ฉ๋ |
|
package/RELEASE_CHECKLIST.md
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
# LitClaude Release Checklist
|
|
2
2
|
|
|
3
|
-
Status: `litclaude-ai@0.3.
|
|
4
|
-
|
|
3
|
+
Status: `litclaude-ai@0.3.29` is the current release candidate โ bundled
|
|
4
|
+
exact-source `lit-handoff` and `lit-scientific-visualization` skills with
|
|
5
|
+
Claude-native command routes, exact-bare hook invocation, visible LITBURN
|
|
6
|
+
banners, payload integrity checks, and read-only scientific dependency
|
|
7
|
+
diagnostics, plus explicit leading start-work activation guards and a structured five-stage interactive
|
|
5
8
|
installer with success/failure receipts and adaptive
|
|
6
9
|
planning, draft-plan review, and orchestration-safety release on top of the portable
|
|
7
10
|
details, public-read, litgoal-status, and evidence-wording release and the auxiliary
|
|
@@ -17,9 +20,9 @@ side-effect-free, the launcher starts only a separate Claude Code
|
|
|
17
20
|
print/background worker, and the release preserves the Korean polishing
|
|
18
21
|
command, strict multi-agent review pipeline, fidelity guardrails, package
|
|
19
22
|
hygiene checks, native route gates, and safe start-work handoff behavior.
|
|
20
|
-
`package.json` is aligned to `0.3.
|
|
21
|
-
`plugins/litclaude/.claude-plugin/plugin.json` is aligned to `0.3.
|
|
22
|
-
plugin-local MCP server reports `0.3.
|
|
23
|
+
`package.json` is aligned to `0.3.29`,
|
|
24
|
+
`plugins/litclaude/.claude-plugin/plugin.json` is aligned to `0.3.29`, and the
|
|
25
|
+
plugin-local MCP server reports `0.3.29`.
|
|
23
26
|
|
|
24
27
|
This release carries the v0.2.2 Dynamic workflow hardening surfaces:
|
|
25
28
|
`/dynamic-workflow`, `workflow-check --json`, native `/goal` fallback guidance,
|
|
@@ -63,14 +66,41 @@ Use this track when testing from the current checkout:
|
|
|
63
66
|
|
|
64
67
|
No npm publication is required for this track.
|
|
65
68
|
|
|
69
|
+
## v0.3.29 Bundled Skill Gates
|
|
70
|
+
|
|
71
|
+
Before requesting publication approval, confirm these artifacts from the current
|
|
72
|
+
checkout and from an isolated install of the packed tarball:
|
|
73
|
+
|
|
74
|
+
- `lit-handoff` ships the approved exact four-file canonical corpus plus license
|
|
75
|
+
and provenance metadata, and exact bare `handoff` shows
|
|
76
|
+
`๐ฅ LITBURN IGNITED ยท lit-handoff ๐ฅ` while quoted, fenced, mixed, slash, and
|
|
77
|
+
explanatory near misses remain inert.
|
|
78
|
+
- `lit-scientific-visualization` ships the approved exact 16-file canonical
|
|
79
|
+
corpus plus license and provenance metadata, and exact bare
|
|
80
|
+
`lit-scientific-visualization` shows
|
|
81
|
+
`๐ฅ LITBURN IGNITED ยท lit-scientific-visualization ๐ฅ` while quoted, fenced,
|
|
82
|
+
mixed, slash, generic-visualization, and explanatory near misses remain inert.
|
|
83
|
+
- The scientific adapter reads the full canonical source, resolves packaged
|
|
84
|
+
`scripts/` and `assets/`, and exposes the shipped style presets, figure export
|
|
85
|
+
helpers, and color palettes from the installed package rather than checkout-only
|
|
86
|
+
paths.
|
|
87
|
+
- Installed-payload integrity checks compare the immutable source records and
|
|
88
|
+
fail closed on missing or changed bundled files.
|
|
89
|
+
- `litclaude-scientific-visualization-doctor.js --json` performs read-only
|
|
90
|
+
dependency checks, never installs Python packages, and reports unsupported
|
|
91
|
+
optional workflows as `DEGRADED` rather than claiming availability.
|
|
92
|
+
- `npm pack --dry-run --json` and an isolated consumer install include both
|
|
93
|
+
command routes, both adapted skills, both canonical-source trees, provenance,
|
|
94
|
+
licenses, scripts, assets, and the scientific dependency doctor.
|
|
95
|
+
|
|
66
96
|
## v0.2.2 Dynamic Workflow Hardening Gates
|
|
67
97
|
|
|
68
98
|
Before requesting publication approval, confirm these artifacts from the current
|
|
69
99
|
checkout:
|
|
70
100
|
|
|
71
|
-
- `package.json` version is `0.3.
|
|
72
|
-
- `plugins/litclaude/.claude-plugin/plugin.json` version is `0.3.
|
|
73
|
-
- `plugins/litclaude/bin/litclaude-mcp.js` reports server version `0.3.
|
|
101
|
+
- `package.json` version is `0.3.29`.
|
|
102
|
+
- `plugins/litclaude/.claude-plugin/plugin.json` version is `0.3.29`.
|
|
103
|
+
- `plugins/litclaude/bin/litclaude-mcp.js` reports server version `0.3.29`.
|
|
74
104
|
- 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.
|
|
75
105
|
- `lit search` and `lit query` route to `/litclaude:litresearch` without activating on slash mentions, code spans, or non-lit prompts.
|
|
76
106
|
- 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/bin/litclaude-ai.js
CHANGED
|
@@ -17,6 +17,7 @@ import { createInterface } from "node:readline/promises";
|
|
|
17
17
|
import { fileURLToPath } from "node:url";
|
|
18
18
|
import { HUD_ACCENT_THEMES, normalizeHudAccent, themeForAccent } from "../plugins/litclaude/lib/hud-accent-palette.mjs";
|
|
19
19
|
import { readPublicSource } from "../plugins/litclaude/lib/public-source-reader/reader.mjs";
|
|
20
|
+
import { verifyBundledSkillsIntegrity } from "../plugins/litclaude/lib/bundled-skills-integrity.mjs";
|
|
20
21
|
import { runStartWorkContinuationCli } from "../plugins/litclaude/lib/start-work-continuation.mjs";
|
|
21
22
|
import { runLitgoalCli } from "../plugins/litclaude/lib/litgoal/cli.mjs";
|
|
22
23
|
import { runWorkflowCheckCli } from "../plugins/litclaude/lib/workflow-check.mjs";
|
|
@@ -563,6 +564,17 @@ const escapeRegex = (value) => value.replace(/[.*+?^${}()|[\]\\]/gu, "\\$&");
|
|
|
563
564
|
|
|
564
565
|
const assertCurrentPluginDetails = (detailsOutput) => {
|
|
565
566
|
const missing = [];
|
|
567
|
+
const inventorySections = new Map();
|
|
568
|
+
let currentInventory;
|
|
569
|
+
for (const rawLine of detailsOutput.replace(/\u001b\[[0-?]*[ -/]*[@-~]/gu, "").split("\n")) {
|
|
570
|
+
const header = rawLine.trim().match(/^([A-Za-z][A-Za-z -]+)\s*\(\d+\)/u);
|
|
571
|
+
if (header) currentInventory = header[1].trim().toLowerCase();
|
|
572
|
+
if (currentInventory) {
|
|
573
|
+
inventorySections.set(currentInventory, `${inventorySections.get(currentInventory) ?? ""}\n${rawLine}`);
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
const skillsInventory = inventorySections.get("skills") ?? "";
|
|
577
|
+
|
|
566
578
|
if (!new RegExp(`\\b${escapeRegex(version)}\\b`, "u").test(detailsOutput)) {
|
|
567
579
|
missing.push(`expected version ${version}`);
|
|
568
580
|
}
|
|
@@ -572,9 +584,12 @@ const assertCurrentPluginDetails = (detailsOutput) => {
|
|
|
572
584
|
missing.push("expected nonzero Agents inventory with prometheus-planner");
|
|
573
585
|
}
|
|
574
586
|
|
|
575
|
-
if (!/\blit-loop\b/u.test(
|
|
587
|
+
if (!/\blit-loop\b/u.test(skillsInventory) || !/\blit-plan\b/u.test(skillsInventory)) {
|
|
576
588
|
missing.push("expected lit-loop and lit-plan skills");
|
|
577
589
|
}
|
|
590
|
+
if (!/\blit-handoff\b/u.test(skillsInventory) || !/\blit-scientific-visualization\b/u.test(skillsInventory)) {
|
|
591
|
+
missing.push("expected lit-handoff and lit-scientific-visualization skills");
|
|
592
|
+
}
|
|
578
593
|
|
|
579
594
|
if (missing.length > 0) {
|
|
580
595
|
fail(`Claude plugin details did not show current LitClaude agent inventory: ${missing.join("; ")}. Re-run litclaude install in the intended CLAUDE_CONFIG_DIR.`);
|
|
@@ -619,11 +634,27 @@ const resetCurrentPointer = (home, target) => {
|
|
|
619
634
|
};
|
|
620
635
|
|
|
621
636
|
const verifyInstalledPayload = ({ home, litClaudeHome, targetPlugin }) => {
|
|
622
|
-
for (const relativePath of [
|
|
637
|
+
for (const relativePath of [
|
|
638
|
+
".claude-plugin/plugin.json",
|
|
639
|
+
"hooks/hooks.json",
|
|
640
|
+
"bin/litclaude-hook.js",
|
|
641
|
+
"bin/litclaude-scientific-visualization-doctor.js",
|
|
642
|
+
"skills/lit-handoff/SKILL.md",
|
|
643
|
+
"commands/lit-handoff.md",
|
|
644
|
+
"vendor/022_handoff/SKILL.md",
|
|
645
|
+
"skills/lit-scientific-visualization/SKILL.md",
|
|
646
|
+
"commands/lit-scientific-visualization.md",
|
|
647
|
+
"vendor/045_scientific-visualization/SKILL.md",
|
|
648
|
+
"vendor/045_scientific-visualization/scripts/style_presets.py",
|
|
649
|
+
]) {
|
|
623
650
|
if (!existsSync(join(targetPlugin, relativePath))) {
|
|
624
651
|
throw new Error(`installed plugin is missing ${relativePath}`);
|
|
625
652
|
}
|
|
626
653
|
}
|
|
654
|
+
const integrity = verifyBundledSkillsIntegrity(targetPlugin);
|
|
655
|
+
if (integrity.status !== "PASS") {
|
|
656
|
+
throw new Error(`installed bundled-skill integrity verification failed: ${JSON.stringify(integrity)}`);
|
|
657
|
+
}
|
|
627
658
|
if (!readInstalledPlugins(home).plugins[pluginKey]?.length) {
|
|
628
659
|
throw new Error(`Claude registry is missing ${pluginKey}`);
|
|
629
660
|
}
|
|
@@ -747,6 +778,7 @@ const doctor = ({ dryRun }) => {
|
|
|
747
778
|
process.stdout.write(`Would run: claude plugin validate ${pluginPath}\n`);
|
|
748
779
|
process.stdout.write(`Would check Claude plugin registry: ${pluginKey}\n`);
|
|
749
780
|
process.stdout.write(`Would check Claude statusLine HUD: ${hudCommandForPlugin(pluginPath)}\n`);
|
|
781
|
+
process.stdout.write(`Would run: node ${join(pluginPath, "bin", "litclaude-scientific-visualization-doctor.js")}\n`);
|
|
750
782
|
return;
|
|
751
783
|
}
|
|
752
784
|
|
|
@@ -763,6 +795,23 @@ const doctor = ({ dryRun }) => {
|
|
|
763
795
|
"bin/litclaude-mcp.js",
|
|
764
796
|
"skills/lit-loop/SKILL.md",
|
|
765
797
|
"skills/lit-plan/SKILL.md",
|
|
798
|
+
"skills/lit-handoff/SKILL.md",
|
|
799
|
+
"commands/lit-handoff.md",
|
|
800
|
+
"vendor/022_handoff/SKILL.md",
|
|
801
|
+
"vendor/022_handoff/evals/evals.json",
|
|
802
|
+
"vendor/022_handoff/examples/HANDOFF-example-generic-auth-refactor.md",
|
|
803
|
+
"vendor/022_handoff/templates/HANDOFF.md",
|
|
804
|
+
"skills/lit-scientific-visualization/SKILL.md",
|
|
805
|
+
"commands/lit-scientific-visualization.md",
|
|
806
|
+
"bin/litclaude-scientific-visualization-doctor.js",
|
|
807
|
+
"vendor/045_scientific-visualization/SKILL.md",
|
|
808
|
+
"vendor/045_scientific-visualization/scripts/style_presets.py",
|
|
809
|
+
"vendor/045_scientific-visualization/scripts/figure_export.py",
|
|
810
|
+
"vendor/045_scientific-visualization/assets/color_palettes.py",
|
|
811
|
+
"vendor/provenance/022_handoff.md",
|
|
812
|
+
"vendor/provenance/045_scientific-visualization.md",
|
|
813
|
+
"vendor/licenses/022_handoff-MIT.txt",
|
|
814
|
+
"vendor/licenses/045_scientific-visualization-MIT.txt",
|
|
766
815
|
];
|
|
767
816
|
|
|
768
817
|
for (const file of requiredFiles) {
|
|
@@ -772,6 +821,18 @@ const doctor = ({ dryRun }) => {
|
|
|
772
821
|
|
|
773
822
|
printLspDiagnostics(pluginPath, registry);
|
|
774
823
|
|
|
824
|
+
const scientificVisualizationDoctor = spawnSync(
|
|
825
|
+
process.execPath,
|
|
826
|
+
[join(pluginPath, "bin", "litclaude-scientific-visualization-doctor.js")],
|
|
827
|
+
{ encoding: "utf8" },
|
|
828
|
+
);
|
|
829
|
+
if (scientificVisualizationDoctor.stdout) process.stdout.write(scientificVisualizationDoctor.stdout);
|
|
830
|
+
if (scientificVisualizationDoctor.stderr) process.stderr.write(scientificVisualizationDoctor.stderr);
|
|
831
|
+
if (scientificVisualizationDoctor.status !== 0) {
|
|
832
|
+
fail("LitClaude bundled-skills payload is incomplete or hash-invalid. Run `litclaude install` again.");
|
|
833
|
+
}
|
|
834
|
+
process.stdout.write("BUNDLED_SKILLS_PAYLOAD_PASS\n");
|
|
835
|
+
|
|
775
836
|
const claude = spawnSync("claude", ["--version"], { encoding: "utf8" });
|
|
776
837
|
if (claude.error) {
|
|
777
838
|
process.stdout.write("CLAUDE_WARNING: claude executable not found in PATH\n");
|
package/docs/hooks.md
CHANGED
|
@@ -111,6 +111,8 @@ $dynamic-workflow
|
|
|
111
111
|
$review-work
|
|
112
112
|
$litgoal
|
|
113
113
|
$start-work
|
|
114
|
+
handoff
|
|
115
|
+
lit-scientific-visualization
|
|
114
116
|
```
|
|
115
117
|
|
|
116
118
|
When a LIT trigger is present, the hook returns additional context containing
|
|
@@ -125,6 +127,24 @@ switch Claude Code agents. The `$start-work` shorthand and natural start-work
|
|
|
125
127
|
phrases activate only when they lead the prompt; diagnostic prose and copied or
|
|
126
128
|
blockquoted mentions remain inert.
|
|
127
129
|
|
|
130
|
+
`handoff` is a separate exact-bare route: only the complete prompt `handoff`
|
|
131
|
+
after outer whitespace activates `Skill(lit-handoff)` and injects the complete
|
|
132
|
+
canonical bundled source. It shows
|
|
133
|
+
`๐ฅ LITBURN IGNITED ยท lit-handoff ๐ฅ`. Explanatory mentions, quoted or fenced
|
|
134
|
+
text, compound prompts, `/litclaude:lit-handoff`, and secret-bearing multiline
|
|
135
|
+
content do not activate the hook. The slash command remains a native Claude
|
|
136
|
+
Code command surface.
|
|
137
|
+
|
|
138
|
+
Scientific visualization has one exact-bare UserPromptSubmit route: only the
|
|
139
|
+
complete prompt `lit-scientific-visualization` after outer whitespace activates
|
|
140
|
+
`Skill(lit-scientific-visualization)`, injects the full adapter and canonical
|
|
141
|
+
source, and shows the exact
|
|
142
|
+
`๐ฅ LITBURN IGNITED ยท lit-scientific-visualization ๐ฅ` system banner.
|
|
143
|
+
Generic visualization, plot, chart, figure, and scientific visualization prose,
|
|
144
|
+
mentions, quoted or fenced text, mixed prompts, near misses, and
|
|
145
|
+
`/litclaude:lit-scientific-visualization` text do not activate the prompt hook.
|
|
146
|
+
The slash command remains a native Claude Code command surface.
|
|
147
|
+
|
|
128
148
|
LitClaude follows the LitClaude goal pattern as an honest native-binding attempt,
|
|
129
149
|
not as slash-command injection. If Claude Code exposes native goal tools, the
|
|
130
150
|
guidance tells Claude to inspect `get_goal`, call `create_goal` only when no
|
|
@@ -16,6 +16,8 @@ make the missing LitClaude target obvious.
|
|
|
16
16
|
| litgoal state/runtime | `commands/litgoal.md`, `skills/litgoal`, `plugins/litclaude/lib/litgoal/`, `.litclaude/litgoal/`, `bin/litclaude-ai.js litgoal ...` commands | Implemented | `litgoal` now has durable state, ledger, checkpoint, steering, quality gate, and review blocker commands through `litclaude litgoal create-goals`, `record-evidence`, `checkpoint`, `steer`, and `record-review-blockers`. |
|
|
17
17
|
| LIT/start-work discipline | `commands/lit-loop.md`, `commands/lit-plan.md`, `commands/start-work.md`, `skills/lit-loop`, `skills/lit-plan`, `skills/start-work` | Implemented | Existing LIT/start-work surfaces require plan reading, ledger updates, publish boundary checks, verification, manual QA artifacts, cleanup receipts, resume checkpoints, and evidence artifacts. |
|
|
18
18
|
| hook trigger safety | `hooks/hooks.json`, `bin/litclaude-hook.js`, `test/hooks.test.mjs`, `docs/hooks.md` | Implemented | Hooks use `UserPromptSubmit` trigger detection, exact workflow aliases, near-miss fixtures, prompt injection safe context, and no auto-type behavior for slash commands. |
|
|
19
|
+
| bundled handoff | `skills/lit-handoff`, `commands/lit-handoff.md`, `vendor/022_handoff`, exact-bare hook | Implemented | Four canonical files remain byte-identical; exact bare `handoff` injects the complete source while mentions, compounds, slash text, and secret-bearing prompts remain inert. |
|
|
20
|
+
| bundled scientific visualization | `skills/lit-scientific-visualization`, `commands/lit-scientific-visualization.md`, `vendor/045_scientific-visualization`, exact-bare hook, capability doctor | Implemented | Sixteen authored files remain byte-identical; the exact-bare hook displays the banner and injects the complete adapter/source while mixed and generic prompts stay inert; installed source-root path resolution, dependency DEGRADED status, Python source tests, and real figure export are covered without silent installation. |
|
|
19
21
|
| agent/command routing | `agents/*.md`, `commands/*.md`, `.claude-plugin/plugin.json`, command discovery tests | Implemented | Agents and commands route planner, executor, verifier, reviewer, librarian, and QA responsibilities into Claude Code surfaces, including review-work and litgoal command files. |
|
|
20
22
|
| docs/package payload | `README.md`, `README_ko-KR.md`, `docs/*.md`, `package.json`, `.claude-plugin/plugin.json`, `test/workspace-hygiene.test.mjs` | Implemented | Docs, package payload, manifest, install metadata, package file-list, and guarded-token gates are covered by tests; v0.2.0 docs describe local parity without implying publish completion. |
|
|
21
23
|
| excluded/deferred telemetry | No runtime telemetry package; docs omission note | Omitted | Telemetry is omitted and any network telemetry remains deferred by reason: LitClaude should stay local and quiet unless the user explicitly requests an observable reporting feature. |
|
|
@@ -60,6 +62,8 @@ workflow additions:
|
|
|
60
62
|
- `litgoal`
|
|
61
63
|
- `lit-loop`
|
|
62
64
|
- `lit-plan`
|
|
65
|
+
- `lit-handoff`
|
|
66
|
+
- `lit-scientific-visualization`
|
|
63
67
|
|
|
64
68
|
Auxiliary Skill-discovery entries are part of the public inventory without adding
|
|
65
69
|
new command routes:
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
import { readFileSync } from "node:fs";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
4
5
|
import { transcriptHasContextPressure } from "../lib/context-pressure.mjs";
|
|
5
6
|
import { extractMutatedFilePaths } from "../lib/mutated-file-paths.mjs";
|
|
6
7
|
import { litgoalGoalsPath } from "../lib/litgoal/paths.mjs";
|
|
@@ -93,6 +94,51 @@ ${body}
|
|
|
93
94
|
}
|
|
94
95
|
};
|
|
95
96
|
|
|
97
|
+
const isExactBareHandoff = (prompt) => /^\s*handoff\s*$/iu.test(prompt);
|
|
98
|
+
const isExactBareScientificVisualization = (prompt) => /^\s*lit-scientific-visualization\s*$/iu.test(prompt);
|
|
99
|
+
|
|
100
|
+
const handoffContext = () => {
|
|
101
|
+
let canonicalBody;
|
|
102
|
+
const canonicalRoot = fileURLToPath(new URL("../vendor/022_handoff/", import.meta.url));
|
|
103
|
+
try {
|
|
104
|
+
canonicalBody = readFileSync(new URL("SKILL.md", new URL("../vendor/022_handoff/", import.meta.url)), "utf8").trim();
|
|
105
|
+
} catch {
|
|
106
|
+
return "BLOCKED: Exact bare handoff was requested, but the canonical vendor/022_handoff/SKILL.md payload is unavailable. Run the installed LitClaude doctor and reinstall before retrying.";
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
return [
|
|
110
|
+
"HANDOFF MODE ENABLED: begin your reply with the exact banner line `๐ฅ LITBURN IGNITED ยท lit-handoff ๐ฅ` on its own line before anything else.",
|
|
111
|
+
"Treat this exact bare prompt as an explicit request for /litclaude:lit-handoff and Skill(lit-handoff).",
|
|
112
|
+
`Canonical source root: ${canonicalRoot}. Read and follow the complete canonical source body below; resolve its template, example, and eval resources relative to this absolute installed source root rather than the process cwd or ~/skills.`,
|
|
113
|
+
"Prompt safety: this route accepts only the exact bare word handoff after outer whitespace. Mentions, quoted or fenced text, compound prompts, slash commands, and secret-bearing material remain inert and are never echoed into hook context.",
|
|
114
|
+
`<litclaude-canonical-source name="022_handoff">
|
|
115
|
+
${canonicalBody}
|
|
116
|
+
</litclaude-canonical-source>`,
|
|
117
|
+
].join("\n\n");
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
const scientificVisualizationContext = () => {
|
|
121
|
+
let canonicalBody;
|
|
122
|
+
const canonicalRoot = fileURLToPath(new URL("../vendor/045_scientific-visualization/", import.meta.url));
|
|
123
|
+
try {
|
|
124
|
+
canonicalBody = readFileSync(new URL("SKILL.md", new URL("../vendor/045_scientific-visualization/", import.meta.url)), "utf8").trim();
|
|
125
|
+
} catch {
|
|
126
|
+
return "BLOCKED: Exact bare lit-scientific-visualization was requested, but the canonical vendor/045_scientific-visualization/SKILL.md payload is unavailable. Run the installed LitClaude doctor and reinstall before retrying.";
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
return [
|
|
130
|
+
"SCIENTIFIC VISUALIZATION MODE ENABLED: begin your reply with the exact banner line `๐ฅ LITBURN IGNITED ยท lit-scientific-visualization ๐ฅ` on its own line before anything else.",
|
|
131
|
+
"Treat this exact bare prompt as an explicit request for /litclaude:lit-scientific-visualization and Skill(lit-scientific-visualization).",
|
|
132
|
+
`Canonical source root: ${canonicalRoot}. Read and follow the complete canonical source body below; resolve its references, scripts, assets, evals, and tests relative to this absolute installed source root rather than the process cwd or ~/skills.`,
|
|
133
|
+
"Prompt safety: this route accepts only the exact bare token lit-scientific-visualization after outer whitespace. Generic visualization language, mentions, quoted or fenced text, mixed prompts, slash commands, and secret-bearing material remain inert and are never echoed into hook context.",
|
|
134
|
+
"Dependency safety: preflight the installed capability first. Never install Python, matplotlib, or optional packages silently; report the affected workflow as DEGRADED when required capabilities are unavailable.",
|
|
135
|
+
...staticSkillBodyContext({ skillId: "lit-scientific-visualization" }),
|
|
136
|
+
`<litclaude-canonical-source name="045_scientific-visualization">
|
|
137
|
+
${canonicalBody}
|
|
138
|
+
</litclaude-canonical-source>`,
|
|
139
|
+
].join("\n\n");
|
|
140
|
+
};
|
|
141
|
+
|
|
96
142
|
const withoutCode = (text) => text.replace(/```[\s\S]*?```/gu, " ").replace(/`[^`]*`/gu, " ");
|
|
97
143
|
const rawTriggerText = (text) => withoutCode(text).toLowerCase();
|
|
98
144
|
const normalizedTriggerText = (text) => rawTriggerText(text).replace(/[_-]+/gu, " ");
|
|
@@ -132,6 +178,7 @@ const slashCommandMentions = [
|
|
|
132
178
|
"/litclaude:deep-interview",
|
|
133
179
|
"/litclaude:dynamic-workflow",
|
|
134
180
|
"/litclaude:init-deep",
|
|
181
|
+
"/litclaude:lit-handoff",
|
|
135
182
|
"/litclaude:lit-loop",
|
|
136
183
|
"/litclaude:lit-plan",
|
|
137
184
|
"/litclaude:lit-recap",
|
|
@@ -312,8 +359,14 @@ switch (eventName) {
|
|
|
312
359
|
}
|
|
313
360
|
case "user-prompt-submit": {
|
|
314
361
|
const prompt = typeof input.prompt === "string" ? input.prompt : "";
|
|
315
|
-
const
|
|
316
|
-
|
|
362
|
+
const exactBareHandoff = isExactBareHandoff(prompt);
|
|
363
|
+
const exactBareScientificVisualization = isExactBareScientificVisualization(prompt);
|
|
364
|
+
const trigger = exactBareHandoff || exactBareScientificVisualization || isDiagnosticLiteralPrompt(prompt) ? undefined : findWorkflowTrigger(prompt);
|
|
365
|
+
if (exactBareHandoff) {
|
|
366
|
+
writeContext(handoffContext(), "๐ฅ LITBURN IGNITED ยท lit-handoff ๐ฅ โ LitClaude handoff hook active.");
|
|
367
|
+
} else if (exactBareScientificVisualization) {
|
|
368
|
+
writeContext(scientificVisualizationContext(), "๐ฅ LITBURN IGNITED ยท lit-scientific-visualization ๐ฅ");
|
|
369
|
+
} else if (trigger && trigger.discipline === "lit-recap") {
|
|
317
370
|
writeContext(recapContext(trigger), "LitClaude lit-recap active: read-only session recap guidance injected.");
|
|
318
371
|
} else if (trigger) {
|
|
319
372
|
const systemMessage = trigger.discipline === "deep-interview"
|