litclaude-ai 0.3.34 → 0.3.35

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.
Files changed (80) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/README.md +63 -17
  3. package/README_ko-KR.md +55 -13
  4. package/RELEASE_CHECKLIST.md +75 -8
  5. package/bin/litclaude-ai.js +172 -27
  6. package/docs/hooks.md +37 -12
  7. package/docs/rules.md +175 -0
  8. package/package.json +10 -2
  9. package/plugins/litclaude/.claude-plugin/plugin.json +1 -1
  10. package/plugins/litclaude/agents/oracle-verifier.md +1 -0
  11. package/plugins/litclaude/agents/quality-reviewer.md +1 -0
  12. package/plugins/litclaude/bin/litclaude-hook.js +434 -20
  13. package/plugins/litclaude/bin/litclaude-mcp.js +1 -1
  14. package/plugins/litclaude/bundled-rules/windows-git-bash.md +18 -0
  15. package/plugins/litclaude/lib/added-comment-lines.mjs +135 -0
  16. package/plugins/litclaude/lib/canonical-skill-catalog.mjs +3 -0
  17. package/plugins/litclaude/lib/canonical-skill-resources.mjs +49 -11
  18. package/plugins/litclaude/lib/litgoal/cli.mjs +88 -10
  19. package/plugins/litclaude/lib/litgoal/paths.mjs +5 -0
  20. package/plugins/litclaude/lib/mutated-file-paths.mjs +17 -0
  21. package/plugins/litclaude/lib/owner-lock.mjs +237 -0
  22. package/plugins/litclaude/lib/plan-task-rows.mjs +32 -0
  23. package/plugins/litclaude/lib/rules/constants.mjs +85 -0
  24. package/plugins/litclaude/lib/rules/discovery.mjs +225 -0
  25. package/plugins/litclaude/lib/rules/engine.mjs +215 -0
  26. package/plugins/litclaude/lib/rules/format.mjs +103 -0
  27. package/plugins/litclaude/lib/rules/frontmatter.mjs +184 -0
  28. package/plugins/litclaude/lib/rules/glob.mjs +165 -0
  29. package/plugins/litclaude/lib/rules/matcher.mjs +83 -0
  30. package/plugins/litclaude/lib/rules/ordering.mjs +29 -0
  31. package/plugins/litclaude/lib/rules/scanner.mjs +119 -0
  32. package/plugins/litclaude/lib/rules/session-state.mjs +254 -0
  33. package/plugins/litclaude/lib/start-work-lifecycle.mjs +3 -23
  34. package/plugins/litclaude/scripts/scaffold-plan.mjs +466 -0
  35. package/plugins/litclaude/skills/frontend-ui-ux/SKILL.md +415 -286
  36. package/plugins/litclaude/skills/frontend-ui-ux/references/adaptive-layout.md +92 -0
  37. package/plugins/litclaude/skills/frontend-ui-ux/references/brand-and-imagery.md +93 -0
  38. package/plugins/litclaude/skills/frontend-ui-ux/references/composition.md +85 -0
  39. package/plugins/litclaude/skills/frontend-ui-ux/references/creative-directions.md +80 -0
  40. package/plugins/litclaude/skills/frontend-ui-ux/references/evidence-review.md +105 -0
  41. package/plugins/litclaude/skills/frontend-ui-ux/references/implementation-platforms.md +109 -0
  42. package/plugins/litclaude/skills/frontend-ui-ux/references/inclusive-interface.md +92 -0
  43. package/plugins/litclaude/skills/frontend-ui-ux/references/interaction-motion.md +101 -0
  44. package/plugins/litclaude/skills/frontend-ui-ux/references/operating-lanes.md +95 -0
  45. package/plugins/litclaude/skills/frontend-ui-ux/references/performance-delivery.md +93 -0
  46. package/plugins/litclaude/skills/frontend-ui-ux/references/product-direction.md +84 -0
  47. package/plugins/litclaude/skills/frontend-ui-ux/references/redesign-playbook.md +97 -0
  48. package/plugins/litclaude/skills/frontend-ui-ux/references/system-foundations.md +84 -0
  49. package/plugins/litclaude/skills/frontend-ui-ux/references/visual-language.md +84 -0
  50. package/plugins/litclaude/skills/frontend-ui-ux/references/visual-reconstruction.md +97 -0
  51. package/plugins/litclaude/skills/frontend-ui-ux/schemas/design-contract-v1alpha1.schema.json +236 -293
  52. package/plugins/litclaude/skills/frontend-ui-ux/scripts/design-contract-format.mjs +286 -0
  53. package/plugins/litclaude/skills/frontend-ui-ux/scripts/design-contract-inventory-rules.mjs +328 -94
  54. package/plugins/litclaude/skills/frontend-ui-ux/scripts/design-contract-rules.mjs +121 -173
  55. package/plugins/litclaude/skills/frontend-ui-ux/scripts/design-contract-surface-rules.mjs +273 -96
  56. package/plugins/litclaude/skills/frontend-ui-ux/scripts/validate-design-contract.mjs +33 -19
  57. package/plugins/litclaude/skills/init-deep/SKILL.md +5 -1
  58. package/plugins/litclaude/skills/lit-plan/SKILL.md +106 -1
  59. package/plugins/litclaude/skills/litresearch/ATTRIBUTION.md +57 -0
  60. package/plugins/litclaude/skills/litresearch/SKILL.md +52 -1
  61. package/plugins/litclaude/skills/litwork/SKILL.md +609 -0
  62. package/plugins/litclaude/skills/refactor/SKILL.md +6 -2
  63. package/plugins/litclaude/skills/rules/SKILL.md +36 -15
  64. package/plugins/litclaude/skills/structural-search/SKILL.md +260 -0
  65. package/plugins/litclaude/skills/teammode/SKILL.md +165 -0
  66. package/plugins/litclaude/skills/teammode/scripts/team.mjs +403 -0
  67. package/plugins/litclaude/skills/visual-qa/SKILL.md +415 -302
  68. package/plugins/litclaude/skills/visual-qa/references/capture-playbook.md +126 -0
  69. package/plugins/litclaude/skills/visual-qa/schemas/design-contract-v1alpha1.schema.json +305 -0
  70. package/plugins/litclaude/skills/visual-qa/schemas/evidence-manifest-v1alpha1.schema.json +5 -4
  71. package/plugins/litclaude/skills/visual-qa/scripts/design-contract-shape.mjs +344 -0
  72. package/plugins/litclaude/skills/visual-qa/scripts/evidence-semantic.mjs +2 -1
  73. package/plugins/litclaude/skills/visual-qa/scripts/evidence-shape.mjs +11 -4
  74. package/plugins/litclaude/skills/visual-qa/scripts/evidence.mjs +74 -10
  75. package/scripts/qa-installed-tamper-repair.mjs +139 -0
  76. package/scripts/qa-negative-gate-matrix.mjs +538 -0
  77. package/scripts/qa-real-surface-behaviors.mjs +505 -0
  78. package/scripts/qa-real-surface-lib.mjs +446 -0
  79. package/scripts/scaffold-plan.mjs +27 -0
  80. package/scripts/validate-plugin.mjs +30 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.35 - 2026-07-26 — parity runtime release preparation
4
+
5
+ - Restore and enroll the complete `litwork`, rules-engine, plan-scaffolding,
6
+ litgoal-drift, structural-search, comment-checker, and teammode surfaces.
7
+ - Resolve plan scaffolding from the installed plugin root while keeping the
8
+ source-checkout command as a thin compatibility entrypoint.
9
+ - Track the nine release tests that exercise those surfaces while keeping local
10
+ evidence and the litgoal autoloop test intentionally ignored.
11
+ - Extend canonical resource integrity and the isolated installed tamper probe to
12
+ the new executable skill/runtime assets, including the teammode CLI, rules
13
+ engine, installed scaffold executable, restored litwork body, and
14
+ added-comment extraction runtime.
15
+ - Make `litwork`, `structural-search`, and `teammode` public skill inventory entries.
16
+ Permission modes mutate global Claude settings `permissions.allow` and
17
+ `permissions.deny`, preserve pre-existing entries, ownership-track only entries
18
+ LitClaude inserted, and remove only those inserted entries on mode change or
19
+ uninstall.
20
+
3
21
  ## 0.3.34 - 2026-07-25 — evidence-first UI/UX and visual QA
4
22
 
5
23
  - Add the packaged `frontend-ui-ux` design-intelligence workflow with a
@@ -12,6 +30,29 @@
12
30
  package guards, and adversarial scenario tests; prevent blocking P1 findings
13
31
  from retaining `PASS`, keep reviewers read-only, and bound TUI captures to
14
32
  1 MiB and 4,096 lines.
33
+ - Ship sixteen hash-pinned interface reference documents: fifteen design
34
+ decision documents under `frontend-ui-ux/references`, each reachable from a
35
+ router table in its skill entrypoint, and a per-channel capture playbook
36
+ under `visual-qa/references`. `npm run validate:plugin` now emits
37
+ `SKILL_REFERENCE_ROUTER_PASS` and fails when a shipped reference is not
38
+ reachable from its own entrypoint.
39
+ - Give the visual evidence lane its own copy of the Design Contract schema and
40
+ an independently written shape validator, so the evidence runtime imports
41
+ nothing from a sibling skill and a manifest stays checkable from whatever
42
+ subset of the package a caller installed. The two implementations agree
43
+ across the strict contract corpus; coupling between lanes is by contract
44
+ hash and evidence schema, never by skill name.
45
+ - Split future-dated evidence out of staleness as `BLOCKED_EVIDENCE_FUTURE`,
46
+ add `BLOCKED_RENDERER_OWNERSHIP_UNVERIFIED` for a capture environment that
47
+ names no verified renderer or process owner, and make an honest incomplete
48
+ cleanup representable as `BLOCKED_CLEANUP_INCOMPLETE` instead of a schema
49
+ error. A cleanup status that contradicts its own resource list stays a
50
+ `CLEANUP_INCOMPLETE` failure. Review failure remains `FAIL`; only an absent
51
+ capability is `BLOCKED`, and `BLOCKED` continues to outrank `FAIL`.
52
+ - Rewrite both interface skill entrypoints as dense host-native contracts with
53
+ invocation and selection rules, prerequisites, explicit non-goals, inert-data
54
+ trust boundaries for reference and user-supplied text, manual QA steps,
55
+ cleanup and handoff rules, and real install-verification output.
15
56
 
16
57
  ## 0.3.33 - 2026-07-24 — update notice and installed catalog verification
17
58
 
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.34-2ea44f" />
12
+ <img src="https://img.shields.io/badge/version-0.3.35-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,9 +22,16 @@
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.34` for personal install
25
+ This checkout is prepared as `litclaude-ai@0.3.35` 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
+ The v0.3.35 release material restores the full `litwork`, rules-engine,
29
+ plan-scaffolding, litgoal-drift, structural-search, comment-checker, and teammode
30
+ surfaces; tracks their tests; and hash-pins shipped executable skill resources
31
+ for installed tamper detection. Permission modes now mutate global Claude settings
32
+ `permissions.allow` and `permissions.deny`: pre-existing entries are preserved, only
33
+ entries LitClaude inserted are ownership-tracked, and only those inserted entries are
34
+ removed on a later mode change or uninstall.
28
35
  Future package releases still require explicit user approval. The v0.3.34 release material adds packaged evidence-first UI/UX design intelligence, strict Design/Evidence/Review contracts, bounded PNG and TUI inspection, tier-correct independent review, and adversarial zero-false-PASS coverage. The v0.3.33 release material adds a quiet nonblocking npm update notice with strict cache, concurrency, timestamp, opt-out, and official-registry boundaries; preserves the installed permission mode and HUD accent on optionless updates; and makes source, install, installed-doctor, and Claude-details checks share the exact canonical skill catalog so missing packaged skills fail with `DOCTOR_FAIL`. The v0.3.32 release material adds the code-owned schema-3 start-work lifecycle with canonical bounded authority, explicit single-use resume grants, PreToolUse enforcement, root/subagent lane identity, progress-bound Stop continuation receipts, and fail-closed release boundaries. The v0.3.31 release material hardens litgoal creation, replacement, completion, and autoloop receipts while making visual QA browser ownership, bounded waits, blocked states, and cleanup evidence explicit. The v0.3.30 release material strengthens LitResearch with root-owned scientific evidence records, DOI/PDF lifecycle receipts, bounded route coverage, and a connection-pinned public-source reader with inert-content and secret-redaction guarantees. The v0.3.29 release material bundles exact-source `lit-handoff` and `lit-scientific-visualization` skills with Claude-native commands, exact-bare hook invocation, visible LITBURN banners, installed-payload integrity checks, and read-only scientific dependency diagnostics. The v0.3.28 release material requires explicit leading start-work invocations so diagnostic or copied mentions remain inert. The v0.3.27 release material adds a structured, animated five-stage installer with a success or failure receipt while preserving deterministic automation output. The v0.3.26 release material adds adaptive objective-achievable planning, draft-plan review, and orchestration readiness hardening. The v0.3.25 release material aligns portable details, public-read, litgoal status JSON, and evidence wording. The v0.3.24 release material aligns auxiliary skill inventories and advisory probes. The v0.3.23
29
36
  release materials inject the bundled skill bodies for bare `hyperplan`,
30
37
  `litresearch`, `lit research`, `init-deep`, and explicit `$start-work` prompt-hook routes while
@@ -78,20 +85,35 @@ activation/read-only polish, and installer permission-preference discipline.
78
85
  `korean-ai-slop-remover`, `review-work`, `frontend-ui-ux`,
79
86
  `git-master`, `comment-checker`, `rules`, `lsp`, `lsp-setup`, `litgoal`,
80
87
  `deep-interview`, `hyperplan`, `init-deep`, `litresearch`,
81
- `lit-plan`, `lit-recap`, `lit-loop`, `start-work`, `lit-handoff`,
82
- `lit-scientific-visualization`, and `visual-qa`
88
+ `lit-plan`, `lit-recap`, `lit-loop`, `litwork`, `start-work`, `structural-search`,
89
+ `teammode`, `lit-handoff`, `lit-scientific-visualization`, and `visual-qa`
83
90
  - **Bundled owner-authorized skills** - `lit-handoff` reads the complete immutable
84
91
  four-file handoff source and supports the exact bare `handoff` prompt;
85
92
  `lit-scientific-visualization` reads the complete immutable 16-file authored
86
93
  source, resolves packaged scripts and assets, and reports missing Python or
87
94
  matplotlib as `DEGRADED` without silently installing dependencies
88
- - **Auxiliary Skill-discovery entries** - `frontend-ui-ux`, `git-master`,
89
- `lsp-setup`, and `visual-qa` are shipped skill ids discoverable through
90
- Claude Code's native Skill discovery; they intentionally do not add extra
91
- slash or dollar prompt routes
95
+ - **Auxiliary Skill-discovery entries with chat routes** - `frontend-ui-ux`,
96
+ `git-master`, `lsp-setup`, and `visual-qa` are shipped skill ids discoverable
97
+ through Claude Code's native Skill discovery, and each also answers to a
98
+ leading bare token (`git-master ...`) or the dollar shorthand
99
+ (`$frontend-ui-ux ...`). They are deliberately **not** anywhere-tokens, so
100
+ mentioning one mid-sentence ("plain git-master discussion") does not activate
101
+ it. `frontend-ui-ux` additionally answers a natural-language design request -
102
+ a prompt carrying both a design verb and an interface noun, such as "design a
103
+ new settings page UI", surfaces it without naming the skill; "design the
104
+ database schema" does not. The same verb-and-noun rule works in Korean -
105
+ "설정 페이지 UI를 새로 디자인해줘" surfaces it, "API 클라이언트를 만들어줘"
106
+ does not - and Korean matches the verb stem, so every ending is covered.
107
+ These chat routes are additive: the existing post-edit and pre-commit event
108
+ routes still fire on their own conditions
92
109
  - **Auxiliary workflow packs** - ships `programming/references`,
93
110
  `programming/scripts`, and `debugging/references` for deeper language and
94
111
  runtime guidance
112
+ - **Interface reference packs** - ships `frontend-ui-ux/references` (fifteen
113
+ design decision documents, each routed from a table in its skill entrypoint)
114
+ and `visual-qa/references` (a per-channel capture playbook). Every reference
115
+ file is hash-pinned, and `npm run validate:plugin` fails when a shipped
116
+ reference is not reachable from its own entrypoint
95
117
  - **Workflow agents** - planner, executor, verifier, reviewer, librarian, and QA runner
96
118
  - **Local marketplace registration** - Claude can resolve `claude plugin details litclaude@litclaude-ai`
97
119
  - **MCP and LSP helpers** - plugin-local stdio MCP plus TypeScript-family LSP doctor
@@ -131,7 +153,7 @@ directory, the normal install command works:
131
153
 
132
154
  ```bash
133
155
  cd /tmp
134
- npx --yes litclaude-ai@0.3.34 install
156
+ npx --yes litclaude-ai@0.3.35 install
135
157
  ```
136
158
 
137
159
  Validate the installed plugin:
@@ -159,7 +181,7 @@ The installer also sets Claude Code's `statusLine` command to the packaged
159
181
  LitClaude HUD. A typical no-color render starts like:
160
182
 
161
183
  ```text
162
- [🔥LITCLAUDE v0.3.34] | O4.8 │ ctx [▎░░] 9%/1000k │ 5h [▏░] 4% ↻2h15m │ 1w [▊░] 35% ↻3d6h │ git main +3 ✓
184
+ [🔥LITCLAUDE v0.3.35] | O4.8 │ ctx [▎░░] 9%/1000k │ 5h [▏░] 4% ↻2h15m │ 1w [▊░] 35% ↻3d6h │ git main +3 ✓
163
185
  ```
164
186
 
165
187
  The `↻` suffix is a compact rate-limit reset countdown. It is separated from
@@ -217,8 +239,8 @@ the skill and hook inventory in `claude plugin details`.
217
239
  Use `CLAUDE_CONFIG_DIR=/some/path` and `LITCLAUDE_HOME=/some/path` only for
218
240
  isolated tests.
219
241
 
220
- Installer permission preference can be recorded without copying OpenCode's
221
- permission model:
242
+ Installer permission modes write a bounded set of Claude-native `permissions.allow`
243
+ and `permissions.deny` entries; they do not copy another harness's permission model:
222
244
 
223
245
  ```bash
224
246
  npx --yes litclaude-ai install --permission-mode safe
@@ -226,11 +248,12 @@ npx --yes litclaude-ai install --permission-mode balanced
226
248
  npx --yes litclaude-ai install --yolo
227
249
  ```
228
250
 
229
- `safe` is conservative. `balanced` records that routine automation guidance is
230
- acceptable while preserving dangerous-shell deny boundaries and planner
231
- read-only safeguards. `yolo` records explicit user preference, but the installer
232
- does not rewrite Claude agent frontmatter or weaken `prometheus-planner`'s
233
- `permissionMode: plan` boundary.
251
+ `safe` writes no allow/deny entries. `balanced` adds read/search and bounded routine
252
+ Git, npm, and Node commands. `yolo` adds broader edit/write and Git/npm/Node command
253
+ patterns. Both non-safe modes add the dangerous-shell deny set, and neither weakens
254
+ `prometheus-planner`'s `permissionMode: plan` boundary. Install/update preserves
255
+ pre-existing permission entries and unrelated keys; uninstall removes only entries
256
+ that LitClaude actually inserted, independently of HUD/statusLine cleanup.
234
257
 
235
258
  ## LIT Usage
236
259
 
@@ -569,6 +592,7 @@ npm test
569
592
  npm run validate:plugin
570
593
  npm run qa:tmux
571
594
  npm run qa:portable
595
+ npm run qa:real-surface
572
596
  npm run pack:dry-run
573
597
  ```
574
598
 
@@ -576,6 +600,28 @@ npm run pack:dry-run
576
600
  available on the machine, the smoke harness records a controlled skip with the
577
601
  version probe evidence instead of failing mysteriously.
578
602
 
603
+ ### Real-surface QA
604
+
605
+ `qa:real-surface` runs three probes that drive the shipped runtime directly
606
+ rather than importing it, so they keep working from a packaged install:
607
+
608
+ | Script | What it drives | Passing signal |
609
+ | --- | --- | --- |
610
+ | `npm run qa:matrix` | the negative gate matrix: 17 rows against the real `frontend-ui-ux` and `visual-qa` validators, the shipped installer/doctor, and the pack payload guard | `NEGATIVE_GATE_MATRIX_PASS` |
611
+ | `npm run qa:tamper` | an isolated install, then byte-tamper, delete, and restore of pinned skill resources | `INSTALLED_TAMPER_REPAIR_PASS` |
612
+ | `npm run qa:behaviors` | portable install layout, postinstall plugin/HUD setup, hook event handling, and plugin validation through the installed surfaces | `REAL_SURFACE_BEHAVIORS_PASS` |
613
+
614
+ Each row of the matrix reports its name, expected outcome, observed outcome, and
615
+ `PASS`/`FAIL`/`BLOCKED`. A row that cannot be exercised is reported `BLOCKED`
616
+ with its exact reason; it is never dropped and never counted as a pass. Every
617
+ probe redirects `LITCLAUDE_HOME` and `CLAUDE_CONFIG_DIR` into temp roots, never
618
+ touches a live profile, and ends with a measured cleanup receipt.
619
+
620
+ `npm run qa:matrix-negative-control` is the matrix's self-test: it feeds one row
621
+ a deliberately wrong expectation and **must exit non-zero**. It is deliberately
622
+ excluded from `qa:real-surface`. If it ever exits 0, the matrix has stopped
623
+ comparing anything and its green results mean nothing.
624
+
579
625
  ## Safety Model
580
626
 
581
627
  - Hooks read Claude Code event JSON from stdin and return bounded JSON context.
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.34-2ea44f" />
12
+ <img src="https://img.shields.io/badge/version-0.3.35-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,7 +26,7 @@
26
26
  > 설치되므로, 매번 긴 `--plugin-dir` 없이 일반 `claude` 실행에서
27
27
  > LitClaude skill과 hook을 불러올 수 있습니다.
28
28
 
29
- 현재 checkout은 `litclaude-ai@0.3.34` 배포 준비용으로 정리되어 있습니다. 목적은
29
+ 현재 checkout은 `litclaude-ai@0.3.35` 배포 준비용으로 정리되어 있습니다. 목적은
30
30
  다른 PC에서도 빠르게 설치하기 위한 개인용 package metadata를 갖추는 것입니다.
31
31
  npm package metadata를 준비했다고 해서 홍보, 공개 저장소 운영, Claude
32
32
  marketplace 등록을 의미하지는 않습니다. 새 버전 배포는 항상 별도의 명시적
@@ -88,13 +88,30 @@ litresearch activation/read-only polish를 유지합니다.
88
88
  파일을, `lit-scientific-visualization`은 승인된 authored 원본 16개를
89
89
  byte-identical하게 포함합니다. Python 또는 matplotlib이 없으면 자동
90
90
  설치하지 않고 해당 capability를 `DEGRADED`로 보고합니다.
91
- - **Auxiliary Skill-discovery entries** - `frontend-ui-ux`, `git-master`,
92
- `lsp-setup`, `visual-qa`는 Claude Code native Skill discovery로 찾는
93
- shipped skill id입니다. 별도의 slash route나 dollar prompt route를 추가하지
94
- 않습니다.
91
+ - **Auxiliary Skill-discovery entries + chat route** - `frontend-ui-ux`,
92
+ `git-master`, `lsp-setup`, `visual-qa`는 Claude Code native Skill discovery로
93
+ 찾는 shipped skill id이면서, 문장 앞에 오는 bare token(`git-master ...`)과
94
+ dollar shorthand(`$frontend-ui-ux ...`)로도 활성화됩니다. anywhere-token은
95
+ 일부러 아닙니다. 문장 중간에 이름만 언급하는 경우("plain git-master
96
+ discussion")에는 활성화되지 않습니다. `frontend-ui-ux`는 자연어 디자인 요청도
97
+ 받습니다. **한국어도 지원합니다.** 만들기/디자인 계열 동사와 UI 명사가 함께
98
+ 있어야 활성화되는 구조는 영어와 동일합니다. 활성화되는 예: "설정 페이지 UI를
99
+ 새로 디자인해줘", "디자인 시스템을 만들어줘", "대시보드 레이아웃을 개편해줘".
100
+ 활성화되지 않는 예: "API 클라이언트를 만들어줘", "데이터베이스 마이그레이션을
101
+ 새로 만들어줘" — 동사는 같아도 UI 명사가 없기 때문입니다. 한국어는 교착어라서
102
+ 어미가 아니라 어간(`디자인`, `만들`)을 매칭하므로 `디자인해줘`, `디자인하고`,
103
+ `디자인할`, `리디자인` 이 모두 같은 어간으로 잡힙니다. 영어 예시로는 "design a
104
+ new settings page UI"가 활성화되고 "design the database schema"는 활성화되지
105
+ 않습니다. 이 chat route는 추가된 것이라서 기존 post-edit / pre-commit event
106
+ route는 그대로 각자의 조건으로 동작합니다.
95
107
  - **Auxiliary workflow packs** - `programming/references`,
96
108
  `programming/scripts`, `debugging/references`까지 포함해서 언어별,
97
109
  런타임별 세부 지침을 보존
110
+ - **Interface reference packs** - `frontend-ui-ux/references`(디자인 결정
111
+ 문서 15개, 각 skill entrypoint의 라우터 표에서 바로 찾아갈 수 있음)와
112
+ `visual-qa/references`(채널별 capture playbook)를 포함합니다. 모든 reference
113
+ 파일은 hash-pinned이고, entrypoint에서 도달할 수 없는 reference가 있으면
114
+ `npm run validate:plugin`이 실패합니다.
98
115
  - **워크플로우 agents** - planner, executor, verifier, reviewer, librarian, QA runner
99
116
  - **Local marketplace 등록** - `claude plugin details litclaude@litclaude-ai`에서 inventory 확인
100
117
  - **MCP와 LSP helper** - plugin-local stdio MCP와 TypeScript 계열 LSP doctor
@@ -131,7 +148,7 @@ checkout을 먼저 해석해서 `sh: litclaude-ai: command not found`로 실패
131
148
 
132
149
  ```bash
133
150
  cd /tmp
134
- npx --yes litclaude-ai@0.3.34 install
151
+ npx --yes litclaude-ai@0.3.35 install
135
152
  ```
136
153
 
137
154
  설치 상태를 확인합니다.
@@ -159,7 +176,7 @@ installer는 Claude Code의 `statusLine` command도 packaged LitClaude HUD로
159
176
  설정합니다. 색상을 제거한 예시는 다음처럼 시작합니다.
160
177
 
161
178
  ```text
162
- [🔥LITCLAUDE v0.3.34] | O4.8 │ ctx [▎░░] 9%/1000k │ 5h [▏░] 4% ↻2h15m │ 1w [▊░] 35% ↻3d6h │ git main +3 ✓
179
+ [🔥LITCLAUDE v0.3.35] | O4.8 │ ctx [▎░░] 9%/1000k │ 5h [▏░] 4% ↻2h15m │ 1w [▊░] 35% ↻3d6h │ git main +3 ✓
163
180
  ```
164
181
 
165
182
  `↻` 표시는 rate-limit reset까지 남은 시간을 짧게 보여주는 countdown입니다.
@@ -216,8 +233,8 @@ LitClaude 전용 local marketplace 항목, `known_marketplaces.json`을 함께
216
233
  격리 테스트가 필요할 때만 `CLAUDE_CONFIG_DIR=/some/path`와
217
234
  `LITCLAUDE_HOME=/some/path`를 지정하세요.
218
235
 
219
- installer permission preferenceOpenCode permission model을 그대로 복사하지
220
- 않고 Claude-native 설정으로 기록합니다.
236
+ installer permission mode다른 harness의 permission model을 복사하지 않고,
237
+ Claude-native `permissions.allow`와 `permissions.deny`에 제한된 규칙을 기록합니다.
221
238
 
222
239
  ```bash
223
240
  npx --yes litclaude-ai install --permission-mode safe
@@ -225,10 +242,12 @@ npx --yes litclaude-ai install --permission-mode balanced
225
242
  npx --yes litclaude-ai install --yolo
226
243
  ```
227
244
 
228
- `safe`는 보수적 기본값입니다. `balanced`는 routine automation guidance를
229
- 허용한다는 선호만 기록하되 dangerous-shell deny boundary와 planner read-only
230
- safeguard를 유지합니다. `yolo`도 명시적 선호를 기록할 뿐,
245
+ `safe`는 allow/deny 규칙을 추가하지 않습니다. `balanced`는 read/search와 제한된
246
+ Git·npm·Node 명령을 추가하고, `yolo`는 edit/write 넓은 Git·npm·Node 패턴을
247
+ 추가합니다. non-safe mode 모두 dangerous-shell deny 규칙을 유지하며
231
248
  `prometheus-planner`의 `permissionMode: plan` boundary를 약화하지 않습니다.
249
+ install/update는 기존 permission 규칙과 `defaultMode` 같은 무관한 key를 보존하고,
250
+ uninstall은 HUD/statusLine cleanup과 독립적으로 LitClaude가 실제 삽입한 규칙만 제거합니다.
232
251
 
233
252
  ## LIT 사용법
234
253
 
@@ -506,6 +525,7 @@ npm test
506
525
  npm run validate:plugin
507
526
  npm run qa:tmux
508
527
  npm run qa:portable
528
+ npm run qa:real-surface
509
529
  npm run pack:dry-run
510
530
  ```
511
531
 
@@ -513,6 +533,28 @@ npm run pack:dry-run
513
533
  환경에서는 smoke harness가 모호한 실패 대신 controlled skip과 version
514
534
  probe evidence를 남깁니다.
515
535
 
536
+ ### Real-surface QA
537
+
538
+ `qa:real-surface`는 재구현이 아니라 실제 배포 runtime을 직접 구동하는 probe
539
+ 3종을 실행하므로, 패키지 설치본에서도 그대로 동작합니다.
540
+
541
+ | Script | 구동 대상 | 통과 신호 |
542
+ | --- | --- | --- |
543
+ | `npm run qa:matrix` | negative gate matrix 17개 row를 실제 `frontend-ui-ux`/`visual-qa` validator, 배포 installer/doctor, pack payload guard로 실행 | `NEGATIVE_GATE_MATRIX_PASS` |
544
+ | `npm run qa:tamper` | 격리 설치 후 pinned skill resource를 byte 변조·삭제·복원 | `INSTALLED_TAMPER_REPAIR_PASS` |
545
+ | `npm run qa:behaviors` | portable install layout, postinstall plugin/HUD 설정, hook 이벤트 처리, plugin validation을 설치된 표면으로 검증 | `REAL_SURFACE_BEHAVIORS_PASS` |
546
+
547
+ matrix의 각 row는 이름, 기대 결과, 관측 결과, `PASS`/`FAIL`/`BLOCKED`를
548
+ 출력합니다. 실행할 수 없는 row는 정확한 사유와 함께 `BLOCKED`로 보고하며,
549
+ 누락하거나 pass로 처리하지 않습니다. 모든 probe는 `LITCLAUDE_HOME`과
550
+ `CLAUDE_CONFIG_DIR`을 임시 경로로 우회시켜 실제 프로필을 건드리지 않고,
551
+ 마지막에 측정된 cleanup receipt를 남깁니다.
552
+
553
+ `npm run qa:matrix-negative-control`은 matrix의 self-test이며 **반드시 0이
554
+ 아닌 exit code로 종료해야 합니다**. 일부러 틀린 기대값을 하나 주입하기
555
+ 때문에 `qa:real-surface`에서는 제외되어 있고, 0으로 종료된다면 matrix가
556
+ 비교를 멈춘 것이므로 나머지 green 결과도 신뢰할 수 없습니다.
557
+
516
558
  ## 안전 모델
517
559
 
518
560
  - Hook은 Claude Code event JSON을 stdin으로 읽고 제한된 JSON context를 반환합니다.
@@ -1,7 +1,9 @@
1
1
  # LitClaude Release Checklist
2
2
 
3
- Status: `litclaude-ai@0.3.34` is the current release candidate — packaged
4
- evidence-first UI/UX design intelligence, strict Design/Evidence/Review
3
+ Status: `litclaude-ai@0.3.35` is the current release candidate — restored
4
+ litwork, rules-engine, plan-scaffolding, litgoal-drift, structural-search,
5
+ comment-checker, and teammode surfaces with tracked regression tests and
6
+ installed tamper coverage, plus packaged evidence-first UI/UX design intelligence, strict Design/Evidence/Review
5
7
  contracts, bounded PNG and TUI inspection, tier-correct independent review, and
6
8
  adversarial zero-false-PASS coverage. It also carries the quiet nonblocking npm
7
9
  update notice with strict cache, concurrency, timestamp, opt-out, and
@@ -36,9 +38,9 @@ side-effect-free, the launcher starts only a separate Claude Code
36
38
  print/background worker, and the release preserves the Korean polishing
37
39
  command, strict multi-agent review pipeline, fidelity guardrails, package
38
40
  hygiene checks, native route gates, and safe start-work handoff behavior.
39
- `package.json` is aligned to `0.3.34`,
40
- `plugins/litclaude/.claude-plugin/plugin.json` is aligned to `0.3.34`, and the
41
- plugin-local MCP server reports `0.3.34`.
41
+ `package.json` is aligned to `0.3.35`,
42
+ `plugins/litclaude/.claude-plugin/plugin.json` is aligned to `0.3.35`, and the
43
+ plugin-local MCP server reports `0.3.35`.
42
44
 
43
45
  This release carries the v0.2.2 Dynamic workflow hardening surfaces:
44
46
  `/dynamic-workflow`, `workflow-check --json`, native `/goal` fallback guidance,
@@ -71,6 +73,10 @@ behavior.
71
73
  - `npm run pack:payload-guard`
72
74
  - `npm run qa:tmux`
73
75
  - `npm run qa:portable`
76
+ - `npm run qa:matrix`
77
+ - `npm run qa:tamper`
78
+ - `npm run qa:behaviors`
79
+ - `npm run qa:matrix-negative-control` (must exit non-zero)
74
80
  - `npm run pack:dry-run`
75
81
 
76
82
  ## Local Checkout Use
@@ -106,6 +112,67 @@ the installed package can run its packaged visual CLI against caller-owned
106
112
  captures. Source doctor, isolated install, installed doctor, canonical resource
107
113
  integrity, scenario replay, and package-payload guards must all pass.
108
114
 
115
+ Confirm both interface reference packs ship and stay reachable. `npm run
116
+ validate:plugin` must print `SKILL_REFERENCE_ROUTER_PASS` with every shipped
117
+ `references/*.md` named in its own `SKILL.md`; a reference that is pinned and
118
+ installed but unreachable from its entrypoint is dead payload and blocks the
119
+ release. Run `npm run gen:skill-resources` after touching any reference, schema,
120
+ or script under either skill, and confirm `npm run check:skill-resources`
121
+ reports no drift.
122
+
123
+ Confirm the visual evidence lane still imports nothing from a sibling skill:
124
+ `grep -rn "frontend-ui-ux" plugins/litclaude/skills/visual-qa/` must return no
125
+ hits. The lane keeps its own Design Contract schema copy and its own shape
126
+ validator on purpose, so a manifest remains checkable from a partial install and
127
+ two independent readings of one shape can disagree visibly.
128
+
129
+ Confirm the blocker vocabulary is complete and honest. `BLOCKED_AUTH_UNAVAILABLE`,
130
+ `BLOCKED_CAPTURE_UNAVAILABLE`, `BLOCKED_INDEPENDENT_REVIEW_UNAVAILABLE`,
131
+ `BLOCKED_TEST_ACCOUNT_UNSAFE`, `BLOCKED_RENDERER_OWNERSHIP_UNVERIFIED`,
132
+ `BLOCKED_EVIDENCE_STALE`, `BLOCKED_EVIDENCE_FUTURE`, and
133
+ `BLOCKED_CLEANUP_INCOMPLETE` must each be emittable by the shipped validator,
134
+ not merely documented. A reviewer that returns a non-`PASS` verdict must produce
135
+ `FAIL`, never a blocker, and `BLOCKED` must outrank `FAIL` when both apply.
136
+
137
+ ## Real-Surface QA Gates
138
+
139
+ `npm run qa:real-surface` must pass alongside `npm test`, not instead of it.
140
+ It runs three probes that drive the shipped runtime rather than importing a
141
+ reimplementation, so they survive a packaged install and outlive any test-tree
142
+ cleanup:
143
+
144
+ - `npm run qa:matrix` must print `NEGATIVE_GATE_MATRIX_PASS` with 17 rows and
145
+ zero `FAIL` or `BLOCKED` rows. The matrix drives the real
146
+ `validate-design-contract` CLI, the real `visual-qa` CLI, the shipped
147
+ installer and doctor, and `tools/check-pack-payload.mjs`. It proves each
148
+ blocker code above by emitting it from the shipped validator: a valid contract
149
+ and evidence bundle pass; a duplicate-key contract, capture bytes changed after
150
+ the manifest, and a same-context self-review fail; missing capture, stale and
151
+ future-dated evidence, unavailable auth, unverified renderer ownership,
152
+ incomplete cleanup, an unavailable reviewer, and an unsafe test account each
153
+ block with their exact code; bounded PNG, TUI, and CJK cases pass; and the
154
+ pack payload guard reports zero forbidden paths.
155
+ - `npm run qa:tamper` must print `INSTALLED_TAMPER_REPAIR_PASS`. It installs
156
+ into isolated temp roots, proves the installed doctor passes, produces
157
+ `RESOURCE_HASH_MISMATCH` from every byte tamper, and names the exact deleted
158
+ path through either `RESOURCE_MISSING` or the earlier canonical-catalog
159
+ `DOCTOR_FAIL` used for a missing `SKILL.md` entrypoint. It then proves each
160
+ restoration returns the doctor to `DOCTOR_PASS`.
161
+ - `npm run qa:behaviors` must print `REAL_SURFACE_BEHAVIORS_PASS` with all four
162
+ named behaviours reported `REPLACED`: portable install layout, postinstall
163
+ isolated plugin/HUD setup, hook fixtures, and plugin validation. A behaviour
164
+ that cannot be exercised is reported `NOT_REPLACEABLE` with its reason and
165
+ fails the gate; it is never quietly downgraded to a pass.
166
+
167
+ `npm run qa:matrix-negative-control` is the matrix self-test and **must exit
168
+ non-zero**. It feeds one row a deliberately wrong expectation; a zero exit means
169
+ the matrix stopped comparing observed outcomes against expectations and every
170
+ other green result from it is void.
171
+
172
+ Every probe redirects `LITCLAUDE_HOME` and `CLAUDE_CONFIG_DIR` into temp roots,
173
+ never reads or writes a live profile, and ends with a cleanup receipt whose
174
+ state is measured after removal. A leaked temp root fails the gate.
175
+
109
176
  ## v0.3.33 Update Notice and Canonical Catalog Gates
110
177
 
111
178
  Before requesting publication approval, confirm interactive `install`, `update`,
@@ -185,9 +252,9 @@ checkout and from an isolated install of the packed tarball:
185
252
  Before requesting publication approval, confirm these artifacts from the current
186
253
  checkout:
187
254
 
188
- - `package.json` version is `0.3.34`.
189
- - `plugins/litclaude/.claude-plugin/plugin.json` version is `0.3.34`.
190
- - `plugins/litclaude/bin/litclaude-mcp.js` reports server version `0.3.34`.
255
+ - `package.json` version is `0.3.35`.
256
+ - `plugins/litclaude/.claude-plugin/plugin.json` version is `0.3.35`.
257
+ - `plugins/litclaude/bin/litclaude-mcp.js` reports server version `0.3.35`.
191
258
  - 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.
192
259
  - `lit search` and `lit query` route to `/litclaude:litresearch` without activating on slash mentions, code spans, or non-lit prompts.
193
260
  - Litresearch web lanes require public API/feed preference, validator-first checks, route traces, prompt-injection quarantine, and honest auth/paywall/private-data stop reasons.