@su-record/vibe 3.1.0 → 3.2.1

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 (183) hide show
  1. package/CLAUDE.md +2 -2
  2. package/README.en.md +9 -6
  3. package/README.md +9 -4
  4. package/dist/__tests__/wiring-integrity.test.d.ts +2 -0
  5. package/dist/__tests__/wiring-integrity.test.d.ts.map +1 -0
  6. package/dist/__tests__/wiring-integrity.test.js +160 -0
  7. package/dist/__tests__/wiring-integrity.test.js.map +1 -0
  8. package/dist/cli/commands/info.d.ts.map +1 -1
  9. package/dist/cli/commands/info.js +2 -1
  10. package/dist/cli/commands/info.js.map +1 -1
  11. package/dist/cli/commands/init.d.ts.map +1 -1
  12. package/dist/cli/commands/init.js +4 -2
  13. package/dist/cli/commands/init.js.map +1 -1
  14. package/dist/cli/design/design-md-parser.test.js +2 -2
  15. package/dist/cli/design/design-md-parser.test.js.map +1 -1
  16. package/dist/cli/index.js +102 -128
  17. package/dist/cli/index.js.map +1 -1
  18. package/dist/cli/postinstall/claude-agents.d.ts.map +1 -1
  19. package/dist/cli/postinstall/claude-agents.js +0 -5
  20. package/dist/cli/postinstall/claude-agents.js.map +1 -1
  21. package/dist/cli/postinstall/constants.d.ts +6 -0
  22. package/dist/cli/postinstall/constants.d.ts.map +1 -1
  23. package/dist/cli/postinstall/constants.js +42 -60
  24. package/dist/cli/postinstall/constants.js.map +1 -1
  25. package/dist/cli/postinstall/inline-skills.js +2 -2
  26. package/dist/cli/postinstall/inline-skills.js.map +1 -1
  27. package/dist/cli/postinstall/main.d.ts.map +1 -1
  28. package/dist/cli/postinstall/main.js +2 -0
  29. package/dist/cli/postinstall/main.js.map +1 -1
  30. package/dist/cli/postinstall.d.ts +6 -1
  31. package/dist/cli/postinstall.d.ts.map +1 -1
  32. package/dist/cli/postinstall.js +6 -1
  33. package/dist/cli/postinstall.js.map +1 -1
  34. package/dist/cli/setup/GlobalInstaller.d.ts +1 -15
  35. package/dist/cli/setup/GlobalInstaller.d.ts.map +1 -1
  36. package/dist/cli/setup/GlobalInstaller.js +16 -115
  37. package/dist/cli/setup/GlobalInstaller.js.map +1 -1
  38. package/dist/cli/setup/GlobalInstaller.test.d.ts +2 -0
  39. package/dist/cli/setup/GlobalInstaller.test.d.ts.map +1 -0
  40. package/dist/cli/setup/GlobalInstaller.test.js +16 -0
  41. package/dist/cli/setup/GlobalInstaller.test.js.map +1 -0
  42. package/dist/cli/setup/ProjectSetup.js +2 -2
  43. package/dist/cli/setup/ProjectSetup.js.map +1 -1
  44. package/dist/cli/setup/Provisioner.d.ts.map +1 -1
  45. package/dist/cli/setup/Provisioner.js +23 -7
  46. package/dist/cli/setup/Provisioner.js.map +1 -1
  47. package/dist/cli/setup.d.ts +1 -1
  48. package/dist/cli/setup.d.ts.map +1 -1
  49. package/dist/cli/setup.js +1 -1
  50. package/dist/cli/setup.js.map +1 -1
  51. package/dist/cli/utils/cli-detector.d.ts +3 -3
  52. package/dist/cli/utils/cli-detector.d.ts.map +1 -1
  53. package/dist/cli/utils/cli-detector.js +7 -27
  54. package/dist/cli/utils/cli-detector.js.map +1 -1
  55. package/dist/cli/utils/cli-detector.test.js +3 -2
  56. package/dist/cli/utils/cli-detector.test.js.map +1 -1
  57. package/dist/infra/lib/SkillRepository.js +1 -1
  58. package/dist/infra/lib/evolution/__tests__/integration.test.js +0 -42
  59. package/dist/infra/lib/evolution/__tests__/integration.test.js.map +1 -1
  60. package/dist/infra/lib/llm-availability.d.ts.map +1 -1
  61. package/dist/infra/lib/llm-availability.js +2 -10
  62. package/dist/infra/lib/llm-availability.js.map +1 -1
  63. package/dist/infra/lib/llm-availability.test.js +3 -2
  64. package/dist/infra/lib/llm-availability.test.js.map +1 -1
  65. package/dist/infra/lib/utils.d.ts +6 -0
  66. package/dist/infra/lib/utils.d.ts.map +1 -1
  67. package/dist/infra/lib/utils.js +33 -0
  68. package/dist/infra/lib/utils.js.map +1 -1
  69. package/dist/tools/convention/validateCodeQuality.d.ts +1 -0
  70. package/dist/tools/convention/validateCodeQuality.d.ts.map +1 -1
  71. package/dist/tools/convention/validateCodeQuality.js +3 -2
  72. package/dist/tools/convention/validateCodeQuality.js.map +1 -1
  73. package/dist/tools/index.d.ts +2 -2
  74. package/dist/tools/index.d.ts.map +1 -1
  75. package/dist/tools/index.js +2 -0
  76. package/dist/tools/index.js.map +1 -1
  77. package/dist/tools/spec/executionPacket.d.ts +101 -0
  78. package/dist/tools/spec/executionPacket.d.ts.map +1 -0
  79. package/dist/tools/spec/executionPacket.js +394 -0
  80. package/dist/tools/spec/executionPacket.js.map +1 -0
  81. package/dist/tools/spec/executionPacket.test.d.ts +2 -0
  82. package/dist/tools/spec/executionPacket.test.d.ts.map +1 -0
  83. package/dist/tools/spec/executionPacket.test.js +360 -0
  84. package/dist/tools/spec/executionPacket.test.js.map +1 -0
  85. package/dist/tools/spec/index.d.ts +2 -0
  86. package/dist/tools/spec/index.d.ts.map +1 -1
  87. package/dist/tools/spec/index.js +2 -0
  88. package/dist/tools/spec/index.js.map +1 -1
  89. package/dist/tools/spec/specGenerator.d.ts +12 -0
  90. package/dist/tools/spec/specGenerator.d.ts.map +1 -1
  91. package/dist/tools/spec/specGenerator.js +96 -14
  92. package/dist/tools/spec/specGenerator.js.map +1 -1
  93. package/dist/tools/spec/specGenerator.test.d.ts +2 -0
  94. package/dist/tools/spec/specGenerator.test.d.ts.map +1 -0
  95. package/dist/tools/spec/specGenerator.test.js +130 -0
  96. package/dist/tools/spec/specGenerator.test.js.map +1 -0
  97. package/hooks/scripts/__tests__/.vibe/command-log.txt +3 -3
  98. package/hooks/scripts/__tests__/clone-behaviors.test.js +33 -1
  99. package/hooks/scripts/__tests__/code-check-memory-write.test.js +81 -0
  100. package/hooks/scripts/__tests__/llm-orchestrate-antigravity.test.js +5 -2
  101. package/hooks/scripts/__tests__/run-ledger-verify-required.test.js +7 -2
  102. package/hooks/scripts/__tests__/run-ledger.test.js +161 -10
  103. package/hooks/scripts/__tests__/step-counter.test.js +21 -0
  104. package/hooks/scripts/__tests__/utils-npm-root.test.js +5 -4
  105. package/hooks/scripts/auto-format.js +2 -11
  106. package/hooks/scripts/auto-test.js +2 -11
  107. package/hooks/scripts/clone-extract.js +146 -10
  108. package/hooks/scripts/code-check.js +27 -55
  109. package/hooks/scripts/lib/glob.js +32 -0
  110. package/hooks/scripts/lib/hook-context.js +19 -2
  111. package/hooks/scripts/lib/run-ledger.js +123 -21
  112. package/hooks/scripts/post-edit.js +2 -3
  113. package/hooks/scripts/prompt-dispatcher.js +1 -1
  114. package/hooks/scripts/scope-guard.js +3 -42
  115. package/hooks/scripts/sentinel-guard.js +5 -20
  116. package/hooks/scripts/session-start.js +2 -2
  117. package/hooks/scripts/step-counter.js +35 -57
  118. package/hooks/scripts/verify-ledger.js +23 -3
  119. package/package.json +2 -3
  120. package/skills/clone/SKILL.md +10 -216
  121. package/skills/clone/references/capture-rules.md +48 -0
  122. package/skills/clone/references/legal-and-error-recovery.md +40 -0
  123. package/skills/clone/references/refine-rules.md +61 -0
  124. package/skills/clone/references/scaffold-phases.md +59 -0
  125. package/skills/clone/references/setup-and-layout.md +30 -0
  126. package/skills/docs/SKILL.md +39 -4
  127. package/skills/docs/references/api-docs-changelog.md +34 -0
  128. package/skills/docs/references/codemaps-output.md +23 -0
  129. package/{agents/diagrammer.md → skills/docs/references/diagram-spec.md} +2 -15
  130. package/skills/exec-plan/SKILL.md +1 -1
  131. package/skills/exec-plan/templates/plan.md +1 -1
  132. package/skills/handoff/SKILL.md +3 -3
  133. package/skills/handoff/templates/handoff.md +1 -1
  134. package/skills/spec/SKILL.md +7 -0
  135. package/skills/vibe/SKILL.md +3 -2
  136. package/skills/vibe.analyze/SKILL.md +12 -249
  137. package/skills/vibe.analyze/references/output-templates.md +188 -0
  138. package/skills/vibe.analyze/references/quality-gate.md +93 -0
  139. package/skills/vibe.clone/SKILL.md +14 -1
  140. package/skills/vibe.continue/SKILL.md +32 -0
  141. package/skills/vibe.design/SKILL.md +23 -1
  142. package/skills/vibe.design/references/ui-preview.md +20 -0
  143. package/skills/vibe.docs/SKILL.md +4 -2
  144. package/skills/vibe.figma/SKILL.md +33 -260
  145. package/skills/vibe.figma/references/branch-phases.md +113 -0
  146. package/skills/vibe.figma/references/state-schema.md +42 -0
  147. package/skills/vibe.figma/references/step-algorithms.md +204 -0
  148. package/skills/vibe.image/SKILL.md +62 -0
  149. package/skills/vibe.image/references/image-generation-examples.md +39 -0
  150. package/skills/vibe.reason/SKILL.md +3 -183
  151. package/skills/vibe.reason/references/output-format-template.md +57 -0
  152. package/skills/vibe.reason/references/quality-rubrics.md +94 -0
  153. package/skills/vibe.reason/references/worked-example.md +45 -0
  154. package/skills/vibe.review/SKILL.md +13 -348
  155. package/skills/vibe.review/references/boundary-check.md +25 -0
  156. package/skills/vibe.review/references/output-template.md +74 -0
  157. package/skills/vibe.review/references/quality-gate.md +84 -0
  158. package/skills/vibe.review/references/race-mode.md +117 -0
  159. package/skills/vibe.review/references/worked-examples.md +94 -0
  160. package/skills/vibe.run/SKILL.md +29 -6
  161. package/skills/vibe.trace/SKILL.md +3 -3
  162. package/skills/vibe.verify/SKILL.md +10 -4
  163. package/vibe/rules/loop-contract.md +7 -3
  164. package/vibe/templates/claudemd-template.md +1 -1
  165. package/vibe/templates/spec-template.md +32 -5
  166. package/agents/acceptance-tester.md +0 -56
  167. package/agents/documenter.md +0 -43
  168. package/agents/figma/figma-engineer.md +0 -76
  169. package/dist/cli/postinstall/index.d.ts +0 -23
  170. package/dist/cli/postinstall/index.d.ts.map +0 -1
  171. package/dist/cli/postinstall/index.js +0 -23
  172. package/dist/cli/postinstall/index.js.map +0 -1
  173. package/dist/cli/setup/index.d.ts +0 -9
  174. package/dist/cli/setup/index.d.ts.map +0 -1
  175. package/dist/cli/setup/index.js +0 -12
  176. package/dist/cli/setup/index.js.map +0 -1
  177. package/hooks/scripts/__tests__/.vibe/memories/memories.db +0 -0
  178. package/hooks/scripts/__tests__/.vibe/memories/memories.db-shm +0 -0
  179. package/hooks/scripts/__tests__/.vibe/memories/memories.db-wal +0 -0
  180. package/hooks/scripts/evolution-engine.js +0 -91
  181. package/hooks/scripts/hud-status.js +0 -321
  182. package/hooks/scripts/skill-injector.js +0 -83
  183. package/skills/vibe.utils/SKILL.md +0 -415
@@ -0,0 +1,117 @@
1
+ # Race Mode — Full Reference
2
+
3
+ > Loaded by vibe.review SKILL.md when Race Mode (`--race`, Multi-LLM competitive review) is invoked.
4
+
5
+ ### How It Works
6
+
7
+ ```
8
+ /vibe.review --race
9
+
10
+ security-review:
11
+ ├─ GPT Codex → [SQL injection, XSS]
12
+ └─ Antigravity → [SQL injection, CSRF]
13
+
14
+ Cross-validation:
15
+ - SQL injection (2/2) → 🔴 P1 (100% confidence)
16
+ - XSS (1/2) → 🟡 P2 (50% confidence)
17
+ - CSRF (1/2) → 🟡 P2 (50% confidence)
18
+ ```
19
+
20
+ ### Confidence-Based Priority
21
+
22
+ | Confidence | Priority | Meaning |
23
+ |------------|----------|---------|
24
+ | 100% (2/2) | P1 | Both models agree - high confidence |
25
+ | 50% (1/2) | P2 | One model found - needs verification |
26
+
27
+ ### Race Mode Options
28
+
29
+ ```
30
+ /vibe.review --race # All review types
31
+ /vibe.review --race security # Security only
32
+ /vibe.review --race performance # Performance only
33
+ /vibe.review --race architecture # Architecture only
34
+ ```
35
+
36
+ ### Race Mode Output
37
+
38
+ ```
39
+ ## SECURITY Review (Race Mode)
40
+
41
+ **Duration**: 3420ms
42
+ **Models**: GPT Codex, Antigravity
43
+
44
+ ### Model Results
45
+
46
+ | Model | Issues Found | Duration | Status |
47
+ |-------|--------------|----------|--------|
48
+ | gpt | 3 | 1823ms | OK |
49
+ | antigravity | 2 | 2156ms | OK |
50
+
51
+ ### Cross-Validated Issues
52
+
53
+ **Summary**: 3 issues (P1: 1, P2: 2)
54
+ **Consensus Rate**: 67%
55
+
56
+ #### 🔴 P1 - SQL Injection in user query
57
+
58
+ - **Confidence**: 100% (gpt, antigravity)
59
+ - **Severity**: critical
60
+ - **Location**: `src/api/users.ts:42`
61
+ - **Suggestion**: Use parameterized queries
62
+
63
+ #### 🟡 P2 - XSS vulnerability in render
64
+
65
+ - **Confidence**: 50% (gpt)
66
+ - **Severity**: high
67
+ - **Location**: `src/components/Comment.tsx:15`
68
+ ```
69
+
70
+ ### Codex Review (Codex 플러그인 활성화 시)
71
+
72
+ Race Mode에서 GPT+Antigravity와 **동시에** Codex review 실행하여 3중 교차 검증:
73
+
74
+ ```
75
+ /codex:review
76
+ ```
77
+
78
+ 교차 검증 테이블:
79
+
80
+ ```markdown
81
+ | Issue | GPT | Antigravity | Codex | Confidence |
82
+ |-------|-----|--------|-------|------------|
83
+ | {이슈} | ✅/❌ | ✅/❌ | ✅/❌ | {%} |
84
+ ```
85
+
86
+ - 3개 모델 중 2개 이상 동의 → **High Confidence** (P1 자동 수정)
87
+ - Codex만 발견 → **Medium Confidence** (P2 수동 검토)
88
+
89
+ ### When to Use Race Mode
90
+
91
+ | Scenario | Recommended |
92
+ |----------|-------------|
93
+ | Critical security review | ✅ `--race security` |
94
+ | Pre-production audit | ✅ `--race` |
95
+ | Quick iteration | ❌ Standard review |
96
+ | API cost concerns | ❌ Standard review |
97
+
98
+ ### Tool Invocation (Race Mode - GPT + Antigravity in parallel via Bash)
99
+
100
+ **🚨 Use --input file to avoid CLI argument length limits and Windows pipe issues.**
101
+
102
+ 1. Save code to review into `[SCRATCHPAD]/review-code.txt` (using Write tool)
103
+ 2. Write JSON input file `[SCRATCHPAD]/review-input.json` (using Write tool):
104
+ - `{"prompt": "Review this code for [REVIEW_TYPE]. Return JSON: {issues: [{id, title, description, severity, suggestion}]}. Code: [CODE_CONTENT]"}`
105
+ - Where `[CODE_CONTENT]` is the code text (properly JSON-escaped inside the prompt string)
106
+ 3. Script path: `[LLM_SCRIPT]` = `{{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js`
107
+ 4. Run GPT + Antigravity in PARALLEL (two Bash tool calls at once):
108
+
109
+ ```bash
110
+ # GPT review (Bash tool call 1)
111
+ node "[LLM_SCRIPT]" gpt orchestrate-json --input "[SCRATCHPAD]/review-input.json"
112
+ ```
113
+
114
+ ```bash
115
+ # Antigravity review (Bash tool call 2 - run in parallel)
116
+ node "[LLM_SCRIPT]" antigravity orchestrate-json --input "[SCRATCHPAD]/review-input.json"
117
+ ```
@@ -0,0 +1,94 @@
1
+ # Review Worked Examples — Full Reference
2
+
3
+ > Loaded by vibe.review SKILL.md for Tech Stack Detection, Review Debate output, Auto-Fix output, Todo file naming, and Core Tool usage examples.
4
+
5
+ ## Phase 1 Tech Stack Detection — Full Detection List
6
+
7
+ ```
8
+ Read package.json -> TypeScript, React, Node.js
9
+ Read pyproject.toml -> Python, FastAPI, Django
10
+ Read Gemfile -> Ruby, Rails
11
+ Read pubspec.yaml -> Flutter, Dart
12
+ Read go.mod -> Go
13
+ Read CLAUDE.md -> Explicit tech stack declaration
14
+ ```
15
+
16
+ ## Phase 4.5 Review Debate — Example Output
17
+
18
+ **토론 결과 예시:**
19
+
20
+ ```
21
+ 🤝 REVIEW DEBATE RESULTS
22
+
23
+ Consensus (4 parallel reviewers):
24
+
25
+ ✅ Validated P1 (unanimous):
26
+ 1. [SECURITY] SQL Injection — 4/4 agree critical
27
+
28
+ ⬆️ Upgraded P2→P1 (debate result):
29
+ 2. [PERF] Unbounded query — code-reviewer (focus: architecture) pointed out
30
+ cascading failure risk under load → agreed P1
31
+
32
+ ⬇️ Downgraded P1→P2 (debate result):
33
+ 3. [SECURITY] CSRF on read-only endpoint — code-reviewer (focus: complexity)
34
+ noted endpoint has no side effects → agreed P2
35
+
36
+ ❌ Removed (false positive):
37
+ 4. [ARCH] "Circular dependency" — code-reviewer (focus: architecture) confirmed
38
+ this is intentional bi-directional reference, not a cycle
39
+
40
+ 🆕 New findings (cross-review discussion):
41
+ 5. [DATA] Race condition in concurrent updates — emerged from
42
+ security + performance cross-review
43
+ ```
44
+
45
+ ## Phase 5 Auto-Fix — Example Output
46
+
47
+ ```
48
+ 🔧 AUTO-FIX Starting...
49
+
50
+ P1 Critical:
51
+ 1. [SECURITY] SQL Injection → Fixed with parameterized query ✅
52
+ 2. [DATA] Missing transaction rollback → Added try-finally ✅
53
+
54
+ P2 Important:
55
+ 3. [PERF] N+1 query → Added select_related ✅
56
+ 4. [ARCH] Circular dependency → Separated dependencies ✅
57
+ 5. [TEST] Missing edge case → Added test ✅
58
+
59
+ 🔍 Re-validating...
60
+ ✅ Build successful
61
+ ✅ Tests passed
62
+
63
+ ✅ 5 issues auto-fixed!
64
+ ```
65
+
66
+ ## Phase 6 Todo File Creation — Naming Examples
67
+
68
+ ```
69
+ {priority}-{category}-{short-desc}.md
70
+
71
+ Examples:
72
+ - P2-arch-large-refactor.md (Cannot be auto-fixed)
73
+ - P3-style-extract-helper.md (Backlog)
74
+ ```
75
+
76
+ ## Core Tools — Example Tool Usage in Review
77
+
78
+ **1. Validate code quality before review:**
79
+
80
+ ```bash
81
+ node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.validateCodeQuality({targetPath: 'src/', projectPath: process.cwd()}).then(r => console.log(r.content[0].text)))"
82
+ ```
83
+
84
+ **2. Analyze complexity of changed files:**
85
+
86
+ ```bash
87
+ node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.analyzeComplexity({targetPath: 'src/api/users.ts', projectPath: process.cwd()}).then(r => console.log(r.content[0].text)))"
88
+ ```
89
+
90
+ **3. Save critical finding for reference:**
91
+
92
+ ```bash
93
+ node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index.js').then(t => t.saveMemory({key: 'review-pr123-critical', value: 'SQL injection in users.py:42', category: 'review', projectPath: process.cwd()}).then(r => console.log(r.content[0].text)))"
94
+ ```
@@ -201,18 +201,41 @@ Step 3: If neither → Error: "Run /vibe.spec first"
201
201
 
202
202
  **Split structure:** Load `_index.md` first, then phase files in order. Execute phases sequentially (or per `--phase` flag).
203
203
 
204
+ ### 1-0. Compile + validate execution packet (MANDATORY)
205
+
206
+ For a monolithic SPEC, compile it after resolving the canonical path. For a split SPEC, do not compile `_index.md`; defer this step until each active phase file is loaded in Phase Isolation Step B. Compile with `writeExecutionPacket`, then immediately verify the saved artifact with `validateExecutionPacket`.
207
+
208
+ ```bash
209
+ node -e "import('file://{{VIBE_PATH}}/dist/tools/index.js').then(t => {
210
+ const projectPath=process.cwd(), specPath='.vibe/specs/{feature-name}.md';
211
+ const profile='{codex-or-claude-code}';
212
+ const written=t.writeExecutionPacket({projectPath,specPath,profile});
213
+ if(!written.ok){console.error(JSON.stringify(written.errors));process.exit(1)}
214
+ const checked=t.validateExecutionPacket({projectPath,specPath,packetPath:written.packetPath});
215
+ if(!checked.valid){console.error(checked.code);process.exit(1)}
216
+ console.log(written.packetPath);
217
+ })"
218
+ ```
219
+
220
+ - Codex uses profile `codex`; Claude Code uses `claude-code`.
221
+ - Split SPECs compile each active `phase-N-*.md` immediately before that phase runs; `_index.md` remains the overview ANCHOR and is not treated as a phase contract.
222
+ - Use the packet only when validation returns `valid: true`.
223
+ - `STALE_PACKET`, invalid packet, preservation-audit failure, or budget failure is blocking: recompile from the canonical SPEC and never silently fall back to an unvalidated packet.
224
+ - The packet is a derived execution view. The canonical SPEC remains the ANCHOR and source of truth.
225
+
204
226
  ### 1-1. Phase Isolation Protocol (Large SPEC Guard, MANDATORY for 3+ phases)
205
227
 
206
228
  ```
207
229
  Step A: Read _index.md (overview only — phase list, REQ IDs)
208
230
  Step B: For each Phase N:
209
231
  1. RE-READ Phase N SPEC section (every time, no memory)
210
- 2. RE-READ Phase N Feature scenarios
211
- 3. Extract Phase N scope: files, scenarios, requirements
212
- 4. Implement Phase N scenarios
213
- 5. Verify Phase N
214
- 6. Write Phase Checkpoint → .vibe/checkpoints/
215
- 7. DISCARD Phase N details from working memory
232
+ 2. Compile + validate Phase N execution packet using the phase file path
233
+ 3. RE-READ Phase N Feature scenarios
234
+ 4. Extract Phase N scope: files, scenarios, requirements
235
+ 5. Implement Phase N scenarios
236
+ 6. Verify Phase N
237
+ 7. Write Phase Checkpoint .vibe/checkpoints/
238
+ 8. DISCARD Phase N details from working memory
216
239
  Step C: Next Phase
217
240
  ```
218
241
 
@@ -213,18 +213,18 @@ RTM status === 'empty'
213
213
 
214
214
  ### Run-ledger flow
215
215
 
216
- `/vibe.verify` records its outcome via `hooks/scripts/verify-ledger.js pass|fail`. This writes `verifyPassed` and `verifyAt` into `.vibe/metrics/run-ledger.json`. Downstream gates consume this record:
216
+ `/vibe.verify` records its outcome through `hooks/scripts/verify-ledger.js`, binding the current run ID and command-result evidence. This writes `verifyPassed` and `verifyAt` into `.vibe/metrics/run-ledger.json`. Downstream gates consume this record:
217
217
 
218
218
  | Gate | Behavior |
219
219
  |------|----------|
220
220
  | `auto-commit` | Commits only when `verifyPassed === true` AND `verifyAt > runStarted` |
221
221
  | Stop hook | Warns when `runStarted && !verifyPassed`; blocks once if `verifyGate.mode === 'block'` |
222
222
 
223
- **To register a passing trace as verified**, run `/vibe.verify` after `/vibe.trace` reports acceptable coverage. The verify skill calls `verify-ledger.js pass` internally — you do not invoke it manually.
223
+ **To register a passing trace as verified**, run `/vibe.verify` after `/vibe.trace` reports acceptable coverage. The verify skill records the current run ID and command evidence internally — you do not invoke the ledger CLI manually.
224
224
 
225
225
  ```
226
226
  /vibe.trace "login" → RTM: 9/9 (100%)
227
- /vibe.verify "login" → runs checks → calls verify-ledger.js pass
227
+ /vibe.verify "login" → runs checks → records pass + run ID + command results
228
228
  → .vibe/metrics/run-ledger.json updated
229
229
  auto-commit / Stop gate → verifyPassed=true, gate clears
230
230
  ```
@@ -104,7 +104,7 @@ Load skill `contract` with: check "{feature}"
104
104
 
105
105
  ### 7. Metrics + Ledger update (MANDATORY final step)
106
106
 
107
- Record run metrics, then write the verify result to the run ledger. This is the machine-readable JUDGE record consumed by the Stop-hook verify gate, auto-commit verify gate, and loop-contract gates.
107
+ Record run metrics, then write the verify result to the run ledger. This is the machine-readable deterministic JUDGE record consumed by the Stop-hook verify gate, auto-commit verify gate, and loop-contract gates. `recordVerify` also writes `.vibe/runs/{run-id}/evidence.json`; Model Judge findings remain advisory-only and Human Taste remains release-only.
108
108
 
109
109
  ```bash
110
110
  # Append step-count history (ok if current-run.json missing)
@@ -113,15 +113,21 @@ const fs=require('fs'),p='.vibe/metrics';
113
113
  try{const c=JSON.parse(fs.readFileSync(p+'/current-run.json','utf-8'));
114
114
  fs.appendFileSync(p+'/history.jsonl',JSON.stringify({verifiedAt:new Date().toISOString(),feature:c.feature,startedAt:c.startedAt,steps:c.steps||0})+'\n');}catch{}"
115
115
 
116
- # Record verify result pass | fail (calls recordVerify on the run ledger)
116
+ # Write the exact commands run in steps 2-3 and their exit codes.
117
+ mkdir -p .vibe/metrics
118
+ # Write `.vibe/metrics/verification-results.json` as:
119
+ # [{"command":"npm test","exitCode":0}, ...]
120
+
121
+ # Bind the result to the current run and its command evidence.
117
122
  HOOKS_DIR="${VIBE_PATH:-$(npm root -g 2>/dev/null)/@su-record/vibe}/hooks/scripts"
118
- [ -f "$HOOKS_DIR/verify-ledger.js" ] && node "$HOOKS_DIR/verify-ledger.js" pass # or: fail
123
+ RUN_ID=$(node -p "JSON.parse(require('fs').readFileSync('.vibe/metrics/run-ledger.json','utf8')).runId")
124
+ [ -f "$HOOKS_DIR/verify-ledger.js" ] && node "$HOOKS_DIR/verify-ledger.js" pass "$RUN_ID" .vibe/metrics/verification-results.json # or: fail
119
125
 
120
126
  # Recipe extraction (best-effort, silent)
121
127
  [ -f "$HOOKS_DIR/recipe-extractor.js" ] && node "$HOOKS_DIR/recipe-extractor.js" 2>/dev/null || true
122
128
  ```
123
129
 
124
- Use `pass` only when the summary in step 4 is PASS; otherwise `fail`. Skipping this step leaves `verifyPassed` unset and downstream gates will treat the run as unverified.
130
+ Use `pass` only when the summary in step 4 is PASS; otherwise `fail`. A passing record requires at least one command result and every exit code must be zero. A stale run ID, missing evidence, or mismatched result leaves `verifyPassed` unset and downstream gates treat the run as unverified.
125
131
 
126
132
  ## Failure escalation (convergence-based, no retry cap)
127
133
 
@@ -17,15 +17,19 @@
17
17
  → 루프:
18
18
  ANCHOR 디스크에서 재고정: SPEC + run-ledger + scope.json (+ 직전 인박스)
19
19
  ACT 파이프라인 실행 (스킬 체인)
20
- JUDGE 결정론 판정만 인정: run-ledger verifyPassed │ 테스트 exit code │ RTM status
21
- 모델의 "완료했습니다" 자기 보고는 종료 조건이 될 수 없다
22
- RECORD run-ledger(현재 회전) + loop-history.jsonl(회전 이력, 스케줄 루프)
20
+ JUDGE Deterministic Judge(blocking): run-ledger verifyPassed │ 테스트 exit code │ RTM status
21
+ Model Judge(advisory-only): 발견을 제안하지만 완료 권한 없음
22
+ Human Taste(release-only): UX·브랜드·제품 감각을 판단하지만 루프 완료 권한 없음
23
+ RECORD run-ledger + `.vibe/runs/{run-id}/evidence.json` + loop-history.jsonl
23
24
  → 종료(EXIT): 게이트 전부 통과 │ stuck │ max_iterations │ 예산 상한
24
25
  ```
25
26
 
26
27
  ### ANCHOR가 컨텍스트 오염 방어인 이유
27
28
  루프 상태는 컨텍스트가 아니라 디스크에 산다. 매 회전이 아티팩트에서 다시 시작하므로 컨텍스트가 오염되거나 compact로 소실돼도 루프는 깨지지 않으며, 회전마다 fresh 컨텍스트(서브에이전트)로 돌려도 된다.
28
29
 
30
+ ### Judge 권한 경계
31
+ 종료 권한은 테스트 exit code·run-ledger·RTM 같은 **결정론적 Judge**에만 있다. Model Judge는 누락·모순·위험을 발견하는 보조 수단이며, 발견을 테스트나 관측 가능한 기준으로 내리기 전에는 차단 근거가 아니다. Human Taste는 공개·배포 시점의 사람 판단으로 남고 루프의 완료 상태를 변경하지 않는다.
32
+
29
33
  ### stuck (결정론)
30
34
  연속 2회 회전의 발견(discover/findings) 해시가 동일 → 중단하고 사람에게 (`loop-ledger.js check-stuck`이 판정·기록). "다시 해보면 될 것 같다"는 모델 판단으로 무시 금지.
31
35
 
@@ -64,7 +64,7 @@ Convergence Principle: loop until P1 = 0. Changed files only.
64
64
 
65
65
  ## Context Management
66
66
 
67
- At 85%+ context: `save_memory` → `/new` → `/vibe.utils --continue` (raised from 70% — `/new` discards the entire KV prefix cache, so compacting less often preserves cache reuse)
67
+ At 85%+ context: `save_memory` → `/new` → `/vibe.continue` (raised from 70% — `/new` discards the entire KV prefix cache, so compacting less often preserves cache reuse)
68
68
 
69
69
  ## Git Commit Rules
70
70
 
@@ -10,13 +10,29 @@
10
10
 
11
11
  {What and why — 1-3 sentences.}
12
12
 
13
+ ### Context Sources
14
+
15
+ - {File, document, URL, or observed system state used as input}
16
+
13
17
  ### Assumptions
14
18
 
15
19
  - {Default adopted without asking — e.g., session expiry 24h}
16
20
 
21
+ ### Constraints
22
+
23
+ - {Invariant or implementation boundary that every execution packet must preserve}
24
+
25
+ ---
26
+
27
+ ## 2. Requirements
28
+
29
+ | ID | Requirement | Done Criteria |
30
+ |----|-------------|---------------|
31
+ | REQ-{feature}-001 | {Observable functional requirement} | D1, D2 |
32
+
17
33
  ---
18
34
 
19
- ## 2. Done Criteria (deterministic gates)
35
+ ## 3. Done Criteria (deterministic gates)
20
36
 
21
37
  > Each criterion must be judgeable by a command or observable behavior — never by self-report.
22
38
  > These are the JUDGE inputs of the loop (`vibe/rules/loop-contract.md`); `/vibe.verify` records the result in `.vibe/metrics/run-ledger.json`.
@@ -26,9 +42,18 @@
26
42
  | D1 | {e.g., all scenarios in the feature file pass} | {e.g., `npx vitest run` exit 0} |
27
43
  | D2 | {e.g., build succeeds with no type errors} | {e.g., `npm run build` exit 0} |
28
44
 
45
+ ### Evidence Required
46
+
47
+ - D1 → {Command result, test report, log, screenshot, or verified code location}
48
+ - D2 → {Evidence required for this specific criterion}
49
+
50
+ ### Human Taste (Non-Blocking)
51
+
52
+ - {UX, brand, or product-quality review reserved for the release decision; never a loop completion gate}
53
+
29
54
  ---
30
55
 
31
- ## 3. Scenarios
56
+ ## 4. Scenarios
32
57
 
33
58
  > Mirrored to `.vibe/features/{feature}.feature` (gherkin). Every scenario maps to a Done criterion.
34
59
 
@@ -46,13 +71,13 @@ Scenario: {Edge case title} # → D1
46
71
 
47
72
  ---
48
73
 
49
- ## 4. Out of Scope
74
+ ## 5. Out of Scope
50
75
 
51
76
  - {Explicitly not doing this time — must not be empty}
52
77
 
53
78
  ---
54
79
 
55
- ## 5. API Contract (only if the feature exposes an API)
80
+ ## 6. API Contract (only if the feature exposes an API)
56
81
 
57
82
  > Presence of this section enables `/vibe.contract` drift detection.
58
83
 
@@ -64,8 +89,10 @@ Response: 201 {...}
64
89
 
65
90
  ---
66
91
 
67
- ## 6. Verification
92
+ ## 7. Verification
68
93
 
69
94
  - `/vibe.run "{feature}"` implements scenario-by-scenario, verifying each immediately.
70
95
  - `/vibe.verify "{feature}"` judges the Done Criteria and sets `verifyPassed` in the run-ledger.
96
+ - Verification writes `.vibe/runs/{run-id}/evidence.json`; only deterministic Judge results can complete the loop.
97
+ - Model Judge findings are advisory-only. Human Taste is release-only.
71
98
  - Gate = all Done Criteria pass (exit codes / observed behavior) — loop continues until gates pass, stuck, or max iterations.
@@ -1,56 +0,0 @@
1
- # Acceptance Tester Agent
2
-
3
- Acceptance gate for a feature: verifies that acceptance criteria are testable,
4
- routes changed code to the right reviews, and synthesizes one QA verdict.
5
-
6
- ## Role
7
-
8
- - Verify SPEC acceptance criteria are measurable and Feature scenarios complete
9
- - Route changed files to the right QA focus and dispatch reviews in parallel
10
- - Synthesize findings into a single prioritized QA report
11
-
12
- ## Model
13
-
14
- **Sonnet** — routing judgement plus criteria analysis
15
-
16
- ## Goal
17
-
18
- Answer "is this feature acceptably done, and how would we know?". Two halves:
19
-
20
- **Criteria testability** — read `.vibe/specs/{feature}.md` (`<acceptance>`
21
- section) and `.vibe/features/{feature}.feature`. Every acceptance criterion
22
- needs a concrete pass/fail condition (numeric thresholds, not "fast" or
23
- "user-friendly"), at least one Given/When/Then scenario, and an automatable
24
- check. Error paths and boundary conditions must be covered, not just the
25
- happy path. Report untestable criteria with a concrete measurable rewrite.
26
-
27
- **QA routing** — check readiness first: if the build fails, stop and report
28
- build errors only. Then classify `git diff --name-only` output and dispatch
29
- the matching reviews in parallel (max 5), each with its explicit file list:
30
-
31
- | Change signal | Dispatch |
32
- |---|---|
33
- | API/services/controllers | code-reviewer (correctness, performance), security-reviewer |
34
- | UI components/pages | design-reviewer, code-reviewer (correctness) |
35
- | Models/migrations/schema | code-reviewer (data-integrity) |
36
- | Auth/session/middleware | security-reviewer, e2e-tester |
37
- | Multi-step flows (checkout, forms) | e2e-tester, tester (edge cases) |
38
- | Config/CI/infra | security-reviewer, code-reviewer (architecture) |
39
-
40
- Merge results by priority (P1/P2/P3), de-duplicate, and elevate confidence on
41
- findings flagged by two or more reviewers. State which QA modalities were
42
- *not* run and why — coverage gaps are part of the verdict.
43
-
44
- ## Constraints
45
-
46
- Report-only: never modify source code, write tests, or create files — output
47
- is the QA report text; fixes belong to the implementer. If a dispatched
48
- review fails, retry once, then record it as a coverage gap rather than
49
- blocking. Judge completion by evidence (test exit codes, reviewer findings),
50
- never by the implementer's self-report.
51
-
52
- ## Done
53
-
54
- - Every acceptance criterion classified: testable / needs rewrite (with proposed measurable version) / not automatable
55
- - Build status verified before any review dispatch
56
- - Unified report: P1/P2/P3 findings with locations, cross-validated findings marked, coverage gaps listed
@@ -1,43 +0,0 @@
1
- # Documenter Agent
2
-
3
- Documentation generator for the two artifacts that go stale fastest: API docs
4
- and changelogs.
5
-
6
- ## Role
7
-
8
- - Extract API endpoints/interfaces from source and document them with schemas and examples
9
- - Generate changelog entries from git diff with semantic version bump suggestion
10
- - Flag undocumented endpoints and missing migration guides
11
-
12
- ## Model
13
-
14
- **Haiku** — fast extraction and drafting
15
-
16
- ## Goal
17
-
18
- **API mode** — walk the route handlers/controllers in the given scope and
19
- document each endpoint: method + path, auth requirement, parameters (path/
20
- query/body with types, required vs optional, enum values), success and error
21
- responses (all status codes actually returned), and a runnable example (curl
22
- or fetch). List endpoints that exist in code but lack documentation — the gap
23
- list is as valuable as the docs.
24
-
25
- **Changelog mode** — from `git diff` and `git log`, classify changes as
26
- breaking / added / changed / fixed / performance / internal / dependencies.
27
- Recommend the semantic version bump with a one-line reason. Every breaking
28
- change gets migration steps; every fix states old vs new behavior.
29
-
30
- ## Constraints
31
-
32
- Return documentation as text output only — never create or write files; the
33
- calling command decides where content lands. Descriptions are user-facing:
34
- what changed for the consumer, not which internal function was refactored
35
- (pure refactors go under Internal, briefly). Document what the code actually
36
- does, not what comments claim — when they disagree, flag the discrepancy
37
- rather than picking one silently.
38
-
39
- ## Done
40
-
41
- - API mode: every endpoint in scope documented or explicitly listed as an undocumented gap
42
- - Changelog mode: all changes classified, version bump recommended with reason, breaking changes have migration steps
43
- - Output is paste-ready text; zero files created
@@ -1,76 +0,0 @@
1
- # Figma Engineer Agent
2
-
3
- End-to-end Figma → production code specialist: extract, refine, design, build,
4
- and pixel-verify — one agent owning the whole pipeline per breakpoint.
5
-
6
- ## Role
7
-
8
- - Collect and refine Figma design data (tree.json → sections.json) per breakpoint
9
- - Design the component tree and build HTML + script-generated SCSS
10
- - Verify with compile gates and pixel-level visual comparison until P1 = 0
11
-
12
- ## Model
13
-
14
- **Sonnet** — structured pipeline work with strict invariants
15
-
16
- ## Goal
17
-
18
- Turn a Figma file/node into components that match the design pixel-for-pixel.
19
- Work per breakpoint under `/tmp/{feature}/{bp}-main/`, section by section
20
- (sequential, never parallel), and treat visual verification as part of the
21
- work — code that compiles but hasn't been compared against the Figma
22
- screenshots is unfinished.
23
-
24
- ## Pipeline Knowledge
25
-
26
- **Refine (tree.json → sections.json)** — run `figma-refine.js`. The result
27
- must contain the full recursive subtree (leaf nodes included) so code can be
28
- generated without ever re-reading tree.json. Refinement rules: drop 0px nodes,
29
- VECTOR decoration lines (w/h ≤ 2px), and `isMask` nodes; move BG frames out of
30
- children into `images.bg`; move vector-lettering GROUPs and designed TEXT
31
- (multi-fill/gradient/effects) into `images.content`; everything else stays in
32
- children with its CSS.
33
-
34
- **Image classification (blocking — settle before any code)**: TEXT child →
35
- HTML (exception: designed text stays an image); repeated INSTANCE → HTML
36
- `v-for`; interactive → HTML button/a; dynamic data → HTML text; all four no →
37
- image is allowed.
38
-
39
- **Component design (sections.json → component-spec.json)** — 1-depth children
40
- become section components; an INSTANCE repeated 2+ times is a shared-component
41
- candidate, used in 3+ places makes it shared. Semantic tags: top level
42
- `section`, headings `h1–h6` in order, copy `p`, clickable `button`/`a`, lists
43
- `ul/ol > li`. The spec fixes tags/structure/roles/props — build follows it, no
44
- ad-hoc restructuring.
45
-
46
- **Build (per section)** — run `figma-to-scss.js` for the SCSS skeleton, write
47
- the HTML template from the spec, add interactions (@click, v-for, state), then
48
- run `figma-validate.js` and fix mismatches until it passes before moving to
49
- the next section.
50
-
51
- **Verify** — capture a tsc/build error baseline before building (only new
52
- errors are yours). Gate 1: typecheck + build + dev server up. Gate 2 (visual,
53
- mandatory): rendered screenshots vs Figma `sections/` screenshots — pixelmatch
54
- diffRatio > 0.1 → P1; computed CSS vs sections.json — delta > 4px → P1,
55
- ≤ 4px → P2; check for missing images/text. Fix and re-verify until P1 = 0;
56
- no iteration cap.
57
-
58
- ## Constraints
59
-
60
- SCSS is never hand-written: only `figma-to-scss.js` output, imported as-is —
61
- no edits to its values, no custom functions/mixins, no CSS in Vue/React
62
- `<style>` blocks beyond `@import`, no project tokens (the script emits its
63
- own). Use only the installed `~/.vibe/hooks/scripts/figma-*.js` scripts; never
64
- write substitute refine/generate scripts in `/tmp` — if a script's output is wrong,
65
- report that the script needs fixing. CSS values stay Figma-original px (no
66
- vw/clamp/@media — this is static implementation). Image files are kebab-case
67
- (`hero-bg.webp`, never hash names); BG renders via CSS `background-image`,
68
- never `<img>`. Before building, confirm sections.json exists (run
69
- figma-refine.js if not) and that every SCSS file traces to a figma-to-scss.js
70
- invocation.
71
-
72
- ## Done
73
-
74
- - Every section built per component-spec.json and passing figma-validate.js
75
- - Typecheck + build green (against the pre-existing baseline)
76
- - Visual verification executed with P1 = 0 (diffRatio ≤ 0.1, CSS deltas ≤ 4px); remaining P2s listed
@@ -1,23 +0,0 @@
1
- /**
2
- * postinstall 모듈
3
- *
4
- * 관심사별 모듈 분리:
5
- * - fs-utils: 파일시스템 유틸리티
6
- * - global-config: 전역 설정 관리
7
- * - constants: 상수 데이터
8
- * - inline-skills: 인라인 스킬 시딩
9
- * - cursor-rules: Cursor 룰 변환/생성
10
- * - cursor-agents: Cursor 에이전트 변환/설치
11
- * - claude-agents: Claude Code 네이티브 에이전트 변환/설치
12
- * - cursor-skills: Cursor 스킬 생성
13
- * - main: 메인 오케스트레이션
14
- */
15
- export { getCoreConfigDir, replaceTemplatesInDir } from './fs-utils.js';
16
- export { STACK_TO_LANGUAGE_FILE, GLOBAL_SKILLS, GLOBAL_SKILLS_CORE, GLOBAL_SKILLS_STANDARD, GLOBAL_SKILLS_OPTIONAL, STACK_TO_SKILLS, CAPABILITY_SKILLS, AVAILABLE_CAPABILITIES, resolveLocalSkills, resolveExternalSkills, CONDITIONAL_AGENT_GROUPS, STACK_TO_AGENT_GROUPS, CAPABILITY_AGENT_GROUPS, resolveLocalAgentGroups } from './constants.js';
17
- export { copySkillsFiltered, applyCodexSkillInvocationPolicies } from './fs-utils.js';
18
- export { generateCursorRules } from './cursor-rules.js';
19
- export { installCursorAgents } from './cursor-agents.js';
20
- export { installClaudeAgents } from './claude-agents.js';
21
- export { generateCursorSkills } from './cursor-skills.js';
22
- export { main } from './main.js';
23
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/postinstall/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,eAAe,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACrV,OAAO,EAAE,kBAAkB,EAAE,iCAAiC,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC"}
@@ -1,23 +0,0 @@
1
- /**
2
- * postinstall 모듈
3
- *
4
- * 관심사별 모듈 분리:
5
- * - fs-utils: 파일시스템 유틸리티
6
- * - global-config: 전역 설정 관리
7
- * - constants: 상수 데이터
8
- * - inline-skills: 인라인 스킬 시딩
9
- * - cursor-rules: Cursor 룰 변환/생성
10
- * - cursor-agents: Cursor 에이전트 변환/설치
11
- * - claude-agents: Claude Code 네이티브 에이전트 변환/설치
12
- * - cursor-skills: Cursor 스킬 생성
13
- * - main: 메인 오케스트레이션
14
- */
15
- export { getCoreConfigDir, replaceTemplatesInDir } from './fs-utils.js';
16
- export { STACK_TO_LANGUAGE_FILE, GLOBAL_SKILLS, GLOBAL_SKILLS_CORE, GLOBAL_SKILLS_STANDARD, GLOBAL_SKILLS_OPTIONAL, STACK_TO_SKILLS, CAPABILITY_SKILLS, AVAILABLE_CAPABILITIES, resolveLocalSkills, resolveExternalSkills, CONDITIONAL_AGENT_GROUPS, STACK_TO_AGENT_GROUPS, CAPABILITY_AGENT_GROUPS, resolveLocalAgentGroups } from './constants.js';
17
- export { copySkillsFiltered, applyCodexSkillInvocationPolicies } from './fs-utils.js';
18
- export { generateCursorRules } from './cursor-rules.js';
19
- export { installCursorAgents } from './cursor-agents.js';
20
- export { installClaudeAgents } from './claude-agents.js';
21
- export { generateCursorSkills } from './cursor-skills.js';
22
- export { main } from './main.js';
23
- //# sourceMappingURL=index.js.map