@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.
- package/CLAUDE.md +2 -2
- package/README.en.md +9 -6
- package/README.md +9 -4
- package/dist/__tests__/wiring-integrity.test.d.ts +2 -0
- package/dist/__tests__/wiring-integrity.test.d.ts.map +1 -0
- package/dist/__tests__/wiring-integrity.test.js +160 -0
- package/dist/__tests__/wiring-integrity.test.js.map +1 -0
- package/dist/cli/commands/info.d.ts.map +1 -1
- package/dist/cli/commands/info.js +2 -1
- package/dist/cli/commands/info.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +4 -2
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/design/design-md-parser.test.js +2 -2
- package/dist/cli/design/design-md-parser.test.js.map +1 -1
- package/dist/cli/index.js +102 -128
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/postinstall/claude-agents.d.ts.map +1 -1
- package/dist/cli/postinstall/claude-agents.js +0 -5
- package/dist/cli/postinstall/claude-agents.js.map +1 -1
- package/dist/cli/postinstall/constants.d.ts +6 -0
- package/dist/cli/postinstall/constants.d.ts.map +1 -1
- package/dist/cli/postinstall/constants.js +42 -60
- package/dist/cli/postinstall/constants.js.map +1 -1
- package/dist/cli/postinstall/inline-skills.js +2 -2
- package/dist/cli/postinstall/inline-skills.js.map +1 -1
- package/dist/cli/postinstall/main.d.ts.map +1 -1
- package/dist/cli/postinstall/main.js +2 -0
- package/dist/cli/postinstall/main.js.map +1 -1
- package/dist/cli/postinstall.d.ts +6 -1
- package/dist/cli/postinstall.d.ts.map +1 -1
- package/dist/cli/postinstall.js +6 -1
- package/dist/cli/postinstall.js.map +1 -1
- package/dist/cli/setup/GlobalInstaller.d.ts +1 -15
- package/dist/cli/setup/GlobalInstaller.d.ts.map +1 -1
- package/dist/cli/setup/GlobalInstaller.js +16 -115
- package/dist/cli/setup/GlobalInstaller.js.map +1 -1
- package/dist/cli/setup/GlobalInstaller.test.d.ts +2 -0
- package/dist/cli/setup/GlobalInstaller.test.d.ts.map +1 -0
- package/dist/cli/setup/GlobalInstaller.test.js +16 -0
- package/dist/cli/setup/GlobalInstaller.test.js.map +1 -0
- package/dist/cli/setup/ProjectSetup.js +2 -2
- package/dist/cli/setup/ProjectSetup.js.map +1 -1
- package/dist/cli/setup/Provisioner.d.ts.map +1 -1
- package/dist/cli/setup/Provisioner.js +23 -7
- package/dist/cli/setup/Provisioner.js.map +1 -1
- package/dist/cli/setup.d.ts +1 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +1 -1
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/utils/cli-detector.d.ts +3 -3
- package/dist/cli/utils/cli-detector.d.ts.map +1 -1
- package/dist/cli/utils/cli-detector.js +7 -27
- package/dist/cli/utils/cli-detector.js.map +1 -1
- package/dist/cli/utils/cli-detector.test.js +3 -2
- package/dist/cli/utils/cli-detector.test.js.map +1 -1
- package/dist/infra/lib/SkillRepository.js +1 -1
- package/dist/infra/lib/evolution/__tests__/integration.test.js +0 -42
- package/dist/infra/lib/evolution/__tests__/integration.test.js.map +1 -1
- package/dist/infra/lib/llm-availability.d.ts.map +1 -1
- package/dist/infra/lib/llm-availability.js +2 -10
- package/dist/infra/lib/llm-availability.js.map +1 -1
- package/dist/infra/lib/llm-availability.test.js +3 -2
- package/dist/infra/lib/llm-availability.test.js.map +1 -1
- package/dist/infra/lib/utils.d.ts +6 -0
- package/dist/infra/lib/utils.d.ts.map +1 -1
- package/dist/infra/lib/utils.js +33 -0
- package/dist/infra/lib/utils.js.map +1 -1
- package/dist/tools/convention/validateCodeQuality.d.ts +1 -0
- package/dist/tools/convention/validateCodeQuality.d.ts.map +1 -1
- package/dist/tools/convention/validateCodeQuality.js +3 -2
- package/dist/tools/convention/validateCodeQuality.js.map +1 -1
- package/dist/tools/index.d.ts +2 -2
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/spec/executionPacket.d.ts +101 -0
- package/dist/tools/spec/executionPacket.d.ts.map +1 -0
- package/dist/tools/spec/executionPacket.js +394 -0
- package/dist/tools/spec/executionPacket.js.map +1 -0
- package/dist/tools/spec/executionPacket.test.d.ts +2 -0
- package/dist/tools/spec/executionPacket.test.d.ts.map +1 -0
- package/dist/tools/spec/executionPacket.test.js +360 -0
- package/dist/tools/spec/executionPacket.test.js.map +1 -0
- package/dist/tools/spec/index.d.ts +2 -0
- package/dist/tools/spec/index.d.ts.map +1 -1
- package/dist/tools/spec/index.js +2 -0
- package/dist/tools/spec/index.js.map +1 -1
- package/dist/tools/spec/specGenerator.d.ts +12 -0
- package/dist/tools/spec/specGenerator.d.ts.map +1 -1
- package/dist/tools/spec/specGenerator.js +96 -14
- package/dist/tools/spec/specGenerator.js.map +1 -1
- package/dist/tools/spec/specGenerator.test.d.ts +2 -0
- package/dist/tools/spec/specGenerator.test.d.ts.map +1 -0
- package/dist/tools/spec/specGenerator.test.js +130 -0
- package/dist/tools/spec/specGenerator.test.js.map +1 -0
- package/hooks/scripts/__tests__/.vibe/command-log.txt +3 -3
- package/hooks/scripts/__tests__/clone-behaviors.test.js +33 -1
- package/hooks/scripts/__tests__/code-check-memory-write.test.js +81 -0
- package/hooks/scripts/__tests__/llm-orchestrate-antigravity.test.js +5 -2
- package/hooks/scripts/__tests__/run-ledger-verify-required.test.js +7 -2
- package/hooks/scripts/__tests__/run-ledger.test.js +161 -10
- package/hooks/scripts/__tests__/step-counter.test.js +21 -0
- package/hooks/scripts/__tests__/utils-npm-root.test.js +5 -4
- package/hooks/scripts/auto-format.js +2 -11
- package/hooks/scripts/auto-test.js +2 -11
- package/hooks/scripts/clone-extract.js +146 -10
- package/hooks/scripts/code-check.js +27 -55
- package/hooks/scripts/lib/glob.js +32 -0
- package/hooks/scripts/lib/hook-context.js +19 -2
- package/hooks/scripts/lib/run-ledger.js +123 -21
- package/hooks/scripts/post-edit.js +2 -3
- package/hooks/scripts/prompt-dispatcher.js +1 -1
- package/hooks/scripts/scope-guard.js +3 -42
- package/hooks/scripts/sentinel-guard.js +5 -20
- package/hooks/scripts/session-start.js +2 -2
- package/hooks/scripts/step-counter.js +35 -57
- package/hooks/scripts/verify-ledger.js +23 -3
- package/package.json +2 -3
- package/skills/clone/SKILL.md +10 -216
- package/skills/clone/references/capture-rules.md +48 -0
- package/skills/clone/references/legal-and-error-recovery.md +40 -0
- package/skills/clone/references/refine-rules.md +61 -0
- package/skills/clone/references/scaffold-phases.md +59 -0
- package/skills/clone/references/setup-and-layout.md +30 -0
- package/skills/docs/SKILL.md +39 -4
- package/skills/docs/references/api-docs-changelog.md +34 -0
- package/skills/docs/references/codemaps-output.md +23 -0
- package/{agents/diagrammer.md → skills/docs/references/diagram-spec.md} +2 -15
- package/skills/exec-plan/SKILL.md +1 -1
- package/skills/exec-plan/templates/plan.md +1 -1
- package/skills/handoff/SKILL.md +3 -3
- package/skills/handoff/templates/handoff.md +1 -1
- package/skills/spec/SKILL.md +7 -0
- package/skills/vibe/SKILL.md +3 -2
- package/skills/vibe.analyze/SKILL.md +12 -249
- package/skills/vibe.analyze/references/output-templates.md +188 -0
- package/skills/vibe.analyze/references/quality-gate.md +93 -0
- package/skills/vibe.clone/SKILL.md +14 -1
- package/skills/vibe.continue/SKILL.md +32 -0
- package/skills/vibe.design/SKILL.md +23 -1
- package/skills/vibe.design/references/ui-preview.md +20 -0
- package/skills/vibe.docs/SKILL.md +4 -2
- package/skills/vibe.figma/SKILL.md +33 -260
- package/skills/vibe.figma/references/branch-phases.md +113 -0
- package/skills/vibe.figma/references/state-schema.md +42 -0
- package/skills/vibe.figma/references/step-algorithms.md +204 -0
- package/skills/vibe.image/SKILL.md +62 -0
- package/skills/vibe.image/references/image-generation-examples.md +39 -0
- package/skills/vibe.reason/SKILL.md +3 -183
- package/skills/vibe.reason/references/output-format-template.md +57 -0
- package/skills/vibe.reason/references/quality-rubrics.md +94 -0
- package/skills/vibe.reason/references/worked-example.md +45 -0
- package/skills/vibe.review/SKILL.md +13 -348
- package/skills/vibe.review/references/boundary-check.md +25 -0
- package/skills/vibe.review/references/output-template.md +74 -0
- package/skills/vibe.review/references/quality-gate.md +84 -0
- package/skills/vibe.review/references/race-mode.md +117 -0
- package/skills/vibe.review/references/worked-examples.md +94 -0
- package/skills/vibe.run/SKILL.md +29 -6
- package/skills/vibe.trace/SKILL.md +3 -3
- package/skills/vibe.verify/SKILL.md +10 -4
- package/vibe/rules/loop-contract.md +7 -3
- package/vibe/templates/claudemd-template.md +1 -1
- package/vibe/templates/spec-template.md +32 -5
- package/agents/acceptance-tester.md +0 -56
- package/agents/documenter.md +0 -43
- package/agents/figma/figma-engineer.md +0 -76
- package/dist/cli/postinstall/index.d.ts +0 -23
- package/dist/cli/postinstall/index.d.ts.map +0 -1
- package/dist/cli/postinstall/index.js +0 -23
- package/dist/cli/postinstall/index.js.map +0 -1
- package/dist/cli/setup/index.d.ts +0 -9
- package/dist/cli/setup/index.d.ts.map +0 -1
- package/dist/cli/setup/index.js +0 -12
- package/dist/cli/setup/index.js.map +0 -1
- package/hooks/scripts/__tests__/.vibe/memories/memories.db +0 -0
- package/hooks/scripts/__tests__/.vibe/memories/memories.db-shm +0 -0
- package/hooks/scripts/__tests__/.vibe/memories/memories.db-wal +0 -0
- package/hooks/scripts/evolution-engine.js +0 -91
- package/hooks/scripts/hud-status.js +0 -321
- package/hooks/scripts/skill-injector.js +0 -83
- 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
|
+
```
|
package/skills/vibe.run/SKILL.md
CHANGED
|
@@ -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.
|
|
211
|
-
3.
|
|
212
|
-
4.
|
|
213
|
-
5.
|
|
214
|
-
6.
|
|
215
|
-
7.
|
|
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
|
|
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
|
|
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 →
|
|
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
|
-
#
|
|
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
|
-
|
|
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`.
|
|
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
|
|
21
|
-
|
|
22
|
-
|
|
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.
|
|
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
|
-
##
|
|
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
|
-
##
|
|
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
|
-
##
|
|
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
|
-
##
|
|
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
|
-
##
|
|
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
|
package/agents/documenter.md
DELETED
|
@@ -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
|