@su-record/vibe 3.2.7 → 3.2.9

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 (48) hide show
  1. package/CLAUDE.md +5 -2
  2. package/agents/build-error-resolver.md +1 -1
  3. package/agents/code-reviewer.md +1 -1
  4. package/agents/e2e-tester.md +1 -1
  5. package/agents/event/event-ops.md +1 -1
  6. package/agents/event/event-planner.md +1 -1
  7. package/agents/implementer.md +1 -1
  8. package/agents/security-reviewer.md +1 -1
  9. package/agents/tester.md +1 -1
  10. package/agents/ui/design-reviewer.md +1 -1
  11. package/agents/ui/design-system-gen.md +1 -1
  12. package/dist/cli/commands/info.d.ts +9 -0
  13. package/dist/cli/commands/info.d.ts.map +1 -1
  14. package/dist/cli/commands/info.js +32 -0
  15. package/dist/cli/commands/info.js.map +1 -1
  16. package/dist/cli/commands/info.test.js +34 -1
  17. package/dist/cli/commands/info.test.js.map +1 -1
  18. package/dist/cli/commands/upgrade.d.ts +18 -0
  19. package/dist/cli/commands/upgrade.d.ts.map +1 -1
  20. package/dist/cli/commands/upgrade.js +60 -2
  21. package/dist/cli/commands/upgrade.js.map +1 -1
  22. package/dist/cli/commands/upgrade.test.js +51 -1
  23. package/dist/cli/commands/upgrade.test.js.map +1 -1
  24. package/dist/cli/generate-release-notes.js +8 -6
  25. package/dist/cli/generate-release-notes.js.map +1 -1
  26. package/dist/cli/postinstall/claude-agents.d.ts.map +1 -1
  27. package/dist/cli/postinstall/claude-agents.js +3 -1
  28. package/dist/cli/postinstall/claude-agents.js.map +1 -1
  29. package/dist/cli/postinstall/constants.d.ts.map +1 -1
  30. package/dist/cli/postinstall/constants.js +17 -12
  31. package/dist/cli/postinstall/constants.js.map +1 -1
  32. package/dist/tests/curated-release-notes.test.js +55 -1
  33. package/dist/tests/curated-release-notes.test.js.map +1 -1
  34. package/dist/tools/release/releaseNotes.d.ts +22 -0
  35. package/dist/tools/release/releaseNotes.d.ts.map +1 -1
  36. package/dist/tools/release/releaseNotes.js +45 -0
  37. package/dist/tools/release/releaseNotes.js.map +1 -1
  38. package/hooks/scripts/__tests__/.vibe/command-log.txt +3 -3
  39. package/hooks/scripts/__tests__/code-check-detectors.test.js +58 -0
  40. package/hooks/scripts/code-check.js +7 -0
  41. package/package.json +1 -1
  42. package/skills/vibe.analyze/references/output-templates.md +2 -2
  43. package/skills/vibe.review/SKILL.md +37 -18
  44. package/skills/vibe.run/SKILL.md +8 -6
  45. package/skills/vibe.run/references/parallel-agents.md +44 -60
  46. package/skills/vibe.run/references/ultrawork-mode.md +1 -1
  47. package/skills/vibe.spec/SKILL.md +2 -2
  48. package/vibe/rules/principles/dual-harness-doctrine.md +10 -9
@@ -2,52 +2,36 @@
2
2
 
3
3
  > Loaded by vibe.run SKILL.md when parallel execution patterns, parallel subagent groups, or model selection details are needed.
4
4
 
5
- ## Model Orchestration (Intelligent Routing)
5
+ ## Model Orchestration Inherit by Default
6
6
 
7
- Automatically select optimal model based on **task complexity analysis**.
7
+ **Do not pass a `model` parameter.** Subagents inherit the session model.
8
8
 
9
- ### Complexity-Based Model Selection
9
+ The complexity→tier routing that used to live here (Haiku for simple work, Sonnet
10
+ for standard, Opus for architecture) is **retired**. It was written when the
11
+ default session model was weak enough that routing *up* was the win. With a strong
12
+ default, a hardcoded tier can only route *down* — and a downgraded subagent's
13
+ misses land back on the session model to find and undo. That costs more than the
14
+ tokens it saves.
10
15
 
11
- | Complexity Score | Model | When to Use |
12
- |------------------|-------|-------------|
13
- | 0-7 (Low) | **Haiku** | Simple fixes, searches, single file changes |
14
- | 8-19 (Medium) | **Sonnet** | Standard features, 3-5 files, integrations |
15
- | 20+ (High) | **Opus** | Architecture, security, multi-service, 6+ files |
16
+ ### The only exception
16
17
 
17
- ### Complexity Signals
18
+ | Agent | Tier | Why it overrides the session model |
19
+ |-------|------|------------------------------------|
20
+ | `architect` | `opus` | Design decisions are expensive to reverse — guarantee a floor even when the session runs lower |
18
21
 
19
- | Signal | Score |
20
- |--------|-------|
21
- | Architecture change | +15 |
22
- | Security implication | +12 |
23
- | Multi-service | +8 |
24
- | Refactoring | +12 |
25
- | 6+ files | +15 |
26
- | 3-5 files | +8 |
27
- | New feature | +5 |
28
- | Bug fix | -3 |
29
- | Documentation | -5 |
22
+ Every other agent (`implementer`, `tester`, `e2e-tester`, `code-reviewer`,
23
+ `security-reviewer`, `build-error-resolver`, UI/event agents) is `inherit`.
24
+ SSOT: `CLAUDE_MODEL_MAPPING` in `src/cli/postinstall/constants.ts`.
30
25
 
31
- ### Agent × Model Selection
26
+ > Adding a new tier override requires an answer to: *"why must this run at this
27
+ > tier regardless of what the session is running?"* "It's a simple task" is not
28
+ > an answer — a strong model finishes simple tasks quickly at no quality cost.
32
29
 
33
- Tier-variant agents were consolidated the model is a Task parameter, not a separate agent:
30
+ ### What still scales with complexity
34
31
 
35
- | Agent | Low | Medium | High |
36
- |-------|-------------|-----------------|-------------|
37
- | Explore (native) | `model: "haiku"` | `model: "sonnet"` | `model: "opus"` |
38
- | implementer | `model: "haiku"` | `model: "sonnet"` | `model: "opus"` |
39
- | architect | `model: "haiku"` | `model: "sonnet"` | `model: "opus"` |
40
-
41
- ### Task Calls by Role
42
-
43
- | Task Type | Model | Task Parameter |
44
- |-----------|-------|----------------|
45
- | Simple search | Haiku | `model: "haiku"` |
46
- | Codebase exploration | Haiku/Sonnet | Auto-selected |
47
- | Core implementation | Sonnet | `model: "sonnet"` |
48
- | Test writing | Haiku | `model: "haiku"` |
49
- | Architecture decisions | Opus | Main session |
50
- | Final review | Opus | Main session |
32
+ Complexity should change **how many agents you spawn and how deep they go**, not
33
+ which model they run. See the Stakes table in `vibe/rules/loop-contract.md` — that
34
+ is the SSOT for proportional execution.
51
35
 
52
36
  ## Mandatory Parallel Exploration (Phase Start)
53
37
 
@@ -59,11 +43,11 @@ Tier-variant agents were consolidated — the model is a Task parameter, not a s
59
43
  │ │
60
44
  │ Launch ALL of these in ONE message: │
61
45
  │ │
62
- │ Task(haiku) ─┬─→ "Analyze related files in <context>"
63
-
64
- │ Task(haiku) ─┼─→ "Check dependencies and imports"
65
-
66
- │ Task(haiku) ─┴─→ "Find existing patterns and conventions"
46
+ │ Task ─┬─→ "Analyze related files in <context>"
47
+
48
+ │ Task ─┼─→ "Check dependencies and imports"
49
+
50
+ │ Task ─┴─→ "Find existing patterns and conventions"
67
51
  │ │
68
52
  │ [If GPT enabled] Bash: node "[LLM_SCRIPT]" gpt orchestrate-json "[question]"
69
53
  │ [If Antigravity enabled] Bash: node "[LLM_SCRIPT]" antigravity orchestrate-json "[question]"
@@ -71,7 +55,7 @@ Tier-variant agents were consolidated — the model is a Task parameter, not a s
71
55
 
72
56
  ↓ (wait for all to complete)
73
57
  ┌─────────────────────────────────────────────────────────────────┐
74
- │ STEP 2: SYNTHESIZE (Opus)
58
+ │ STEP 2: SYNTHESIZE │
75
59
  │ - Review all exploration results │
76
60
  │ - Decide implementation approach │
77
61
  │ - Identify files to modify/create │
@@ -81,10 +65,10 @@ Tier-variant agents were consolidated — the model is a Task parameter, not a s
81
65
  ┌─────────────────────────────────────────────────────────────────┐
82
66
  │ STEP 3: IMPLEMENT + BACKGROUND AGENTS (PARALLEL) │
83
67
  │ │
84
- │ Main Agent (sonnet): │
68
+ │ Main Agent: │
85
69
  │ └─→ Execute current phase implementation │
86
70
  │ │
87
- │ Background Agents (haiku, run_in_background=true): │
71
+ │ Background Agents (run_in_background=true): │
88
72
  │ ├─→ Task: "Prepare Phase N+1 - analyze required files" │
89
73
  │ ├─→ Task: "Pre-generate test cases for current implementation" │
90
74
  │ └─→ Task: "Search for related types/interfaces needed" │
@@ -97,7 +81,7 @@ Tier-variant agents were consolidated — the model is a Task parameter, not a s
97
81
  │ STEP 4: TEST + PHASE PIPELINING │
98
82
  │ │
99
83
  │ Current Phase: │
100
- │ └─→ Task(haiku): Write tests using pre-generated cases
84
+ │ └─→ Task: Write tests using pre-generated cases
101
85
  │ │
102
86
  │ Next Phase Prep (from background results): │
103
87
  │ └─→ Already have file analysis, ready to start immediately │
@@ -109,18 +93,18 @@ Tier-variant agents were consolidated — the model is a Task parameter, not a s
109
93
  **Correct — Single message with multiple parallel Tasks:**
110
94
  ```
111
95
  <message>
112
- Task(haiku, "Analyze src/components/ for existing patterns")
113
- Task(haiku, "Check package.json dependencies")
114
- Task(haiku, "Find usage of similar features in codebase")
96
+ Task("Analyze src/components/ for existing patterns")
97
+ Task("Check package.json dependencies")
98
+ Task("Find usage of similar features in codebase")
115
99
  </message>
116
100
  → All 3 run simultaneously, ~3x faster
117
101
  ```
118
102
 
119
103
  **WRONG — Sequential calls (DO NOT DO THIS):**
120
104
  ```
121
- <message>Task(haiku, "Analyze...")</message>
122
- <message>Task(haiku, "Check...")</message>
123
- <message>Task(haiku, "Find...")</message>
105
+ <message>Task("Analyze...")</message>
106
+ <message>Task("Check...")</message>
107
+ <message>Task("Find...")</message>
124
108
  → 3x slower, wastes time
125
109
  ```
126
110
 
@@ -141,27 +125,27 @@ No status polling is needed — the harness re-invokes you when each background
141
125
  ```
142
126
  Phase N Start
143
127
 
144
- ├─→ [PARALLEL] Task(haiku) × 3: Exploration
128
+ ├─→ [PARALLEL] Task × 3: Exploration
145
129
  │ - Related code analysis
146
130
  │ - Dependency check
147
131
  │ - Pattern discovery
148
132
 
149
133
  ↓ (all complete)
150
134
 
151
- ├─→ Opus: Synthesize and decide
135
+ ├─→ Synthesize and decide
152
136
 
153
137
  ├─→ [PARALLEL PIPELINE] ←── KEY SPEED OPTIMIZATION
154
138
  │ │
155
- │ ├─→ Main: Task(sonnet) Implementation
139
+ │ ├─→ Main: Task Implementation
156
140
  │ │
157
141
  │ └─→ Background (run_in_background=true):
158
- │ ├─→ Task(haiku): Phase N+1 file analysis
159
- │ ├─→ Task(haiku): Test case preparation
160
- │ └─→ Task(haiku): Type/interface lookup
142
+ │ ├─→ Task: Phase N+1 file analysis
143
+ │ ├─→ Task: Test case preparation
144
+ │ └─→ Task: Type/interface lookup
161
145
 
162
146
  ↓ (main completes)
163
147
 
164
- ├─→ Task(haiku): Tests (uses pre-generated cases)
148
+ ├─→ Task: Tests (uses pre-generated cases)
165
149
 
166
150
 
167
151
  Phase N Complete
@@ -10,7 +10,7 @@
10
10
 
11
11
  | Feature | Description |
12
12
  |---------|-------------|
13
- | **Parallel Exploration** | 3+ Task(haiku) agents run simultaneously (ACT 병렬화) |
13
+ | **Parallel Exploration** | 3+ Task agents run simultaneously (ACT 병렬화) |
14
14
  | **Loop (기본 동작)** | 모든 실행의 기본 — exit=게이트 통과 또는 stuck 또는 max_iterations |
15
15
  | **Context Compression** | Aggressive auto-save at 70%+ context |
16
16
  | **No Pause** | stuck·SPEC 게이트 외 확인 없음 (`automationLevel: autonomous`) |
@@ -99,8 +99,8 @@ ARGUMENTS: $ARGUMENTS
99
99
  | 입력 | 처리 |
100
100
  |---|---|
101
101
  | 자연어 요구사항 | 그대로 SPEC 패스의 주 입력 |
102
- | 📎 첨부 (md/txt/pdf/이미지 등) | Read 도구로 분석 후 요구사항에 병합 |
103
- | 파일 경로 인자 (PRD 등) | 존재 확인 후 Read — 첨부와 동일 취급 |
102
+ | 📎 첨부 (md/txt/pdf/이미지 등) | 하네스의 파일 읽기 수단(CC `Read` 도구 / Codex 셸 등)으로 전체를 읽어 분석 후 요구사항에 병합 |
103
+ | 파일 경로 인자 (PRD 등) | 존재 확인 후 전체를 읽는다 — 첨부와 동일 취급 |
104
104
  | **레거시 아티팩트** `.vibe/interviews/{feature}.md`, `.vibe/plans/{feature}.md` | 존재하면 **입력 컨텍스트로만** 읽는다. 절대 요구하거나 재생성하지 않는다 — 없어도 정상 경로 |
105
105
 
106
106
  ## Process
@@ -34,17 +34,18 @@
34
34
 
35
35
  CC의 풍부한 hook 모델(PreToolUse/PostToolUse/UserPromptSubmit/Stop)에는 Codex에 완전한 등가물이 없다. hook의 **의도**별로 하네스에 맞는 메커니즘에 매핑한다.
36
36
 
37
+ Codex도 이제 네이티브 hook을 지원한다(`codex features list` → `hooks: stable`). vibe는 두 메커니즘을 **모두** 사용하며, hook의 **의도**별로 매핑한다.
38
+
37
39
  | hook 의도 | Claude Code | Codex |
38
40
  |---|---|---|
39
- | 라이프사이클 (turn 완료, 세션 시작/종료) | `Stop` / `SessionStart` hook | `config.toml`의 `notify` 프로그램 (agent-turn-complete 시 JSON 발화) |
40
- | pre-edit / scope guard | `PreToolUse` (동기 deny) | 동기 인터셉트 없음 AGENTS.md 운영 규칙 + notify 기반 사후 검증 |
41
- | 키워드 디스패치 (ralph/ultrawork) | `UserPromptSubmit` | AGENTS.md 지시 (Codex가 직역 실행) |
42
- | 금지 패턴 차단 | `PreToolUse` | AGENTS.md 규칙 + 에이전트에게 실행하라 지시한 check 명령 |
41
+ | 라이프사이클 (turn 완료) | `Stop` hook | `config.toml`의 `notify` (agent-turn-complete 시 JSON 발화) |
42
+ | 세션 시작 | `SessionStart` hook | `.codex/hooks.json``SessionStart` |
43
+ | pre-edit / scope guard | `PreToolUse` (동기 deny) | `.codex/hooks.json` `PreToolUse` (동기 deny) |
44
+ | 키워드 디스패치 | `UserPromptSubmit` | `.codex/hooks.json` `UserPromptSubmit` |
45
+ | 금지 패턴 차단 | `PreToolUse` | `PreToolUse` + AGENTS.md 규칙 (이중 방어) |
43
46
 
44
- **핵심 통찰: Codex 직역 성향이 AGENTS.md "soft hook"을 신뢰성 있게 만든다.** CC는 soft 지시를 가끔 무시해 hard hook이 필요하지만, Codex적힌 대로 실행한다. 따라서:
47
+ **구현**: `hooks/scripts/codex-hook-adapter.js`가 Codex hook 이벤트를 기존 vibe hook 스크립트로 번역하고 deny 결정(JSON)을 보존한다. 설치는 `installProjectCodexHooks()` `.codex/hooks.json` (프로젝트 로컬, gitignored). 라이프사이클 후처리(auto-commit·devlog)`codex-notify.js`가 `notify` 경로로 담당한다.
45
48
 
46
- - **하드 라이프사이클 이벤트** Codex `config.toml notify` (실제·결정적). `stop-dispatcher` 로직(auto-commit, devlog, review gate) 재사용 가능.
47
- - **행동 가드** → AGENTS.md 운영 규칙. 직역이라 *오히려* 신뢰성 있음.
48
- - **진짜 동기 pre-edit 차단은 Codex에서 불가** — 사후 검증을 완화책으로 수용한다.
49
+ **핵심 통찰: Codex의 직역 성향이 AGENTS.md "soft hook"을 신뢰성 있게 만든다.** CC는 soft 지시를 가끔 무시해 hard hook이 필요하지만, Codex 적힌 대로 실행한다. 따라서 AGENTS.md 운영 규칙은 네이티브 hook이 생긴 뒤에도 **폐기하지 않고 2차 방어선으로 유지한다** — hook이 설치되지 않은 환경(전역 설치만 경우, 다른 클론)에서도 가드가 남는다.
49
50
 
50
- > **Action item (미구현):** `.codex/settings.local.json`에 죽은 hook을 쓰는 것을 중단하고, 대신 `.codex/config.toml`에 `notify` 핸들러를 생성해 `stop-dispatcher` 로직을 재사용하며, 가드 규칙은 AGENTS.md로 방출한다.
51
+ > ⚠️ **훅은 "설치돼 있다"고 가정하지 않는다.** 훅은 프로젝트 로컬 아티팩트라 `vibe upgrade` 만으로는 설치되지 않는다(전역 자산만 갱신). `vibe status` 하네스별 훅 설치 여부를 보고하고, `vibe upgrade` 현재 프로젝트의 누락 훅을 복구한다. 결정론적 가드의 생사는 **관측 가능해야** 한다 — 조용히 죽은 가드는 없는 가드보다 나쁘다.