@su-record/vibe 3.2.7 → 3.2.8
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 +5 -2
- package/agents/build-error-resolver.md +1 -1
- package/agents/code-reviewer.md +1 -1
- package/agents/e2e-tester.md +1 -1
- package/agents/event/event-ops.md +1 -1
- package/agents/event/event-planner.md +1 -1
- package/agents/implementer.md +1 -1
- package/agents/security-reviewer.md +1 -1
- package/agents/tester.md +1 -1
- package/agents/ui/design-reviewer.md +1 -1
- package/agents/ui/design-system-gen.md +1 -1
- package/dist/cli/commands/info.d.ts +9 -0
- package/dist/cli/commands/info.d.ts.map +1 -1
- package/dist/cli/commands/info.js +32 -0
- package/dist/cli/commands/info.js.map +1 -1
- package/dist/cli/commands/info.test.js +34 -1
- package/dist/cli/commands/info.test.js.map +1 -1
- package/dist/cli/commands/upgrade.d.ts +18 -0
- package/dist/cli/commands/upgrade.d.ts.map +1 -1
- package/dist/cli/commands/upgrade.js +60 -2
- package/dist/cli/commands/upgrade.js.map +1 -1
- package/dist/cli/commands/upgrade.test.js +51 -1
- package/dist/cli/commands/upgrade.test.js.map +1 -1
- package/dist/cli/generate-release-notes.js +8 -6
- package/dist/cli/generate-release-notes.js.map +1 -1
- package/dist/cli/postinstall/claude-agents.d.ts.map +1 -1
- package/dist/cli/postinstall/claude-agents.js +3 -1
- package/dist/cli/postinstall/claude-agents.js.map +1 -1
- package/dist/cli/postinstall/constants.d.ts.map +1 -1
- package/dist/cli/postinstall/constants.js +17 -12
- package/dist/cli/postinstall/constants.js.map +1 -1
- package/dist/tests/curated-release-notes.test.js +55 -1
- package/dist/tests/curated-release-notes.test.js.map +1 -1
- package/dist/tools/release/releaseNotes.d.ts +22 -0
- package/dist/tools/release/releaseNotes.d.ts.map +1 -1
- package/dist/tools/release/releaseNotes.js +45 -0
- package/dist/tools/release/releaseNotes.js.map +1 -1
- package/hooks/scripts/__tests__/.vibe/command-log.txt +3 -3
- package/hooks/scripts/__tests__/code-check-detectors.test.js +58 -0
- package/hooks/scripts/code-check.js +7 -0
- package/package.json +1 -1
- package/skills/vibe.analyze/references/output-templates.md +2 -2
- package/skills/vibe.review/SKILL.md +27 -14
- package/skills/vibe.run/SKILL.md +7 -5
- package/skills/vibe.run/references/parallel-agents.md +44 -60
- package/skills/vibe.run/references/ultrawork-mode.md +1 -1
- package/skills/vibe.spec/SKILL.md +1 -1
- 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
|
|
5
|
+
## Model Orchestration — Inherit by Default
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
**Do not pass a `model` parameter.** Subagents inherit the session model.
|
|
8
8
|
|
|
9
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
|
|
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
|
-
|
|
30
|
+
### What still scales with complexity
|
|
34
31
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
|
63
|
-
│
|
|
64
|
-
│ Task
|
|
65
|
-
│
|
|
66
|
-
│ Task
|
|
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
|
|
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
|
|
68
|
+
│ Main Agent: │
|
|
85
69
|
│ └─→ Execute current phase implementation │
|
|
86
70
|
│ │
|
|
87
|
-
│ Background Agents (
|
|
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
|
|
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(
|
|
113
|
-
Task(
|
|
114
|
-
Task(
|
|
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(
|
|
122
|
-
<message>Task(
|
|
123
|
-
<message>Task(
|
|
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
|
|
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
|
-
├─→
|
|
135
|
+
├─→ Synthesize and decide
|
|
152
136
|
│
|
|
153
137
|
├─→ [PARALLEL PIPELINE] ←── KEY SPEED OPTIMIZATION
|
|
154
138
|
│ │
|
|
155
|
-
│ ├─→ Main: Task
|
|
139
|
+
│ ├─→ Main: Task Implementation
|
|
156
140
|
│ │
|
|
157
141
|
│ └─→ Background (run_in_background=true):
|
|
158
|
-
│ ├─→ Task
|
|
159
|
-
│ ├─→ Task
|
|
160
|
-
│ └─→ Task
|
|
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
|
|
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
|
|
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,7 +99,7 @@ ARGUMENTS: $ARGUMENTS
|
|
|
99
99
|
| 입력 | 처리 |
|
|
100
100
|
|---|---|
|
|
101
101
|
| 자연어 요구사항 | 그대로 SPEC 패스의 주 입력 |
|
|
102
|
-
| 📎 첨부 (md/txt/pdf/이미지 등) | Read
|
|
102
|
+
| 📎 첨부 (md/txt/pdf/이미지 등) | 하네스의 파일 읽기 수단(CC `Read` 도구 / Codex 셸 등)으로 전체를 읽어 분석 후 요구사항에 병합 |
|
|
103
103
|
| 파일 경로 인자 (PRD 등) | 존재 확인 후 Read — 첨부와 동일 취급 |
|
|
104
104
|
| **레거시 아티팩트** `.vibe/interviews/{feature}.md`, `.vibe/plans/{feature}.md` | 존재하면 **입력 컨텍스트로만** 읽는다. 절대 요구하거나 재생성하지 않는다 — 없어도 정상 경로 |
|
|
105
105
|
|
|
@@ -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
|
|
40
|
-
|
|
|
41
|
-
|
|
|
42
|
-
|
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
>
|
|
51
|
+
> ⚠️ **훅은 "설치돼 있다"고 가정하지 않는다.** 훅은 프로젝트 로컬 아티팩트라 `vibe upgrade` 만으로는 설치되지 않는다(전역 자산만 갱신). `vibe status` 가 하네스별 훅 설치 여부를 보고하고, `vibe upgrade` 는 현재 프로젝트의 누락 훅을 복구한다. 결정론적 가드의 생사는 **관측 가능해야** 한다 — 조용히 죽은 가드는 없는 가드보다 나쁘다.
|