@su-record/vibe 2.16.4 → 3.0.0
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 +8 -8
- package/README.en.md +46 -29
- package/README.md +41 -24
- package/agents/acceptance-tester.md +56 -0
- package/agents/architect.md +25 -67
- package/agents/build-error-resolver.md +28 -97
- package/agents/code-reviewer.md +89 -0
- package/agents/diagrammer.md +34 -169
- package/agents/documenter.md +43 -0
- package/agents/e2e-tester.md +46 -281
- package/agents/event/event-ops.md +54 -77
- package/agents/event/event-planner.md +63 -0
- package/agents/figma/figma-engineer.md +76 -0
- package/agents/implementer.md +26 -41
- package/agents/security-reviewer.md +56 -0
- package/agents/tester.md +37 -33
- package/agents/ui/design-reviewer.md +62 -0
- package/agents/ui/design-system-gen.md +63 -0
- package/dist/cli/commands/remove.d.ts.map +1 -1
- package/dist/cli/commands/remove.js +8 -10
- package/dist/cli/commands/remove.js.map +1 -1
- package/dist/cli/index.d.ts +0 -4
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +0 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/llm/model-refresh.js +1 -1
- package/dist/cli/llm/model-refresh.js.map +1 -1
- package/dist/cli/postinstall/claude-agents.d.ts.map +1 -1
- package/dist/cli/postinstall/claude-agents.js +16 -77
- 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 +80 -296
- package/dist/cli/postinstall/constants.js.map +1 -1
- package/dist/cli/postinstall/cursor-agents.d.ts +5 -0
- package/dist/cli/postinstall/cursor-agents.d.ts.map +1 -1
- package/dist/cli/postinstall/cursor-agents.js +26 -68
- package/dist/cli/postinstall/cursor-agents.js.map +1 -1
- package/dist/cli/postinstall/cursor-skills.d.ts.map +1 -1
- package/dist/cli/postinstall/cursor-skills.js +26 -30
- package/dist/cli/postinstall/cursor-skills.js.map +1 -1
- package/dist/cli/postinstall/main.d.ts.map +1 -1
- package/dist/cli/postinstall/main.js +0 -2
- package/dist/cli/postinstall/main.js.map +1 -1
- package/dist/cli/setup/Provisioner.d.ts.map +1 -1
- package/dist/cli/setup/Provisioner.js +19 -21
- package/dist/cli/setup/Provisioner.js.map +1 -1
- package/dist/cli/utils.d.ts +4 -1
- package/dist/cli/utils.d.ts.map +1 -1
- package/dist/cli/utils.js +4 -1
- package/dist/cli/utils.js.map +1 -1
- package/dist/infra/lib/FrameworkDetector.js +4 -4
- package/dist/infra/lib/FrameworkDetector.js.map +1 -1
- package/dist/infra/lib/OrchestrateWorkflow.js +2 -2
- package/dist/infra/lib/OrchestrateWorkflow.js.map +1 -1
- package/dist/infra/lib/browser/launch.js +1 -1
- package/dist/infra/lib/browser/launch.js.map +1 -1
- package/dist/infra/lib/browser/types.d.ts +1 -1
- package/dist/infra/lib/browser/types.js +1 -1
- package/dist/infra/lib/constants.d.ts +1 -1
- package/dist/infra/lib/constants.d.ts.map +1 -1
- package/dist/infra/lib/constants.js +4 -5
- package/dist/infra/lib/constants.js.map +1 -1
- package/dist/infra/lib/evolution/__tests__/integration.test.js +7 -7
- package/dist/infra/lib/evolution/__tests__/integration.test.js.map +1 -1
- package/dist/infra/lib/memory/index.d.ts +0 -2
- package/dist/infra/lib/memory/index.d.ts.map +1 -1
- package/dist/infra/lib/memory/index.js +0 -2
- package/dist/infra/lib/memory/index.js.map +1 -1
- package/dist/infra/lib/telemetry/SkillTelemetry.test.js +1 -1
- package/dist/infra/lib/telemetry/SkillTelemetry.test.js.map +1 -1
- package/dist/tools/index.d.ts +0 -4
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +0 -4
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/memory/autoSaveContext.d.ts +0 -1
- package/dist/tools/memory/autoSaveContext.d.ts.map +1 -1
- package/dist/tools/memory/autoSaveContext.js +13 -27
- package/dist/tools/memory/autoSaveContext.js.map +1 -1
- package/hooks/scripts/__tests__/code-check-detectors.test.js +2 -2
- package/hooks/scripts/__tests__/run-ledger.test.js +1 -1
- package/hooks/scripts/__tests__/scope-from-spec.test.js +12 -12
- package/hooks/scripts/__tests__/step-counter.test.js +1 -1
- package/hooks/scripts/code-check.js +16 -203
- package/hooks/scripts/context-save.js +0 -11
- package/hooks/scripts/lib/scope-from-spec.js +9 -6
- package/hooks/scripts/post-edit-dispatcher.js +1 -1
- package/hooks/scripts/prompt-dispatcher.js +7 -18
- package/hooks/scripts/session-start.js +25 -35
- package/package.json +2 -4
- package/skills/agents-md/SKILL.md +62 -15
- package/skills/arch-guard/SKILL.md +1 -1
- package/skills/brand-assets/SKILL.md +2 -2
- package/skills/capability-loop/SKILL.md +1 -1
- package/skills/chub-usage/SKILL.md +1 -1
- package/skills/commerce-patterns/SKILL.md +2 -2
- package/skills/commit-push-pr/SKILL.md +0 -1
- package/skills/context7-usage/SKILL.md +1 -1
- package/skills/design-refine/SKILL.md +140 -0
- package/skills/{design-polish → design-refine}/templates/polish-report.md +1 -1
- package/skills/{design-normalize → design-refine}/templates/token-audit.md +3 -3
- package/skills/design-review/SKILL.md +143 -0
- package/skills/{design-audit → design-review}/agents/a11y-auditor.md +1 -1
- package/skills/{design-audit → design-review}/agents/performance-auditor.md +1 -1
- package/skills/{design-audit → design-review}/agents/responsive-auditor.md +1 -1
- package/skills/{design-audit → design-review}/agents/slop-detector.md +1 -1
- package/skills/{design-audit → design-review}/frameworks/core-web-vitals.md +1 -1
- package/skills/{design-audit → design-review}/frameworks/wcag-checklist.md +1 -1
- package/skills/{design-audit → design-review}/orchestrator.md +3 -3
- package/skills/{design-critique → design-review}/templates/critique-report.md +3 -3
- package/skills/{design-audit → design-review}/templates/report.md +3 -3
- package/skills/design-teach/SKILL.md +11 -11
- package/skills/docs/SKILL.md +14 -16
- package/skills/e2e-commerce/SKILL.md +1 -1
- package/skills/event-comms/SKILL.md +1 -1
- package/skills/event-ops/SKILL.md +2 -2
- package/skills/event-planning/SKILL.md +1 -1
- package/skills/exec-plan/SKILL.md +2 -2
- package/skills/figma/SKILL.md +240 -148
- package/skills/figma/rubrics/css-mapping.md +125 -0
- package/skills/git-worktree/SKILL.md +1 -1
- package/skills/handoff/SKILL.md +1 -1
- package/skills/parallel-research/SKILL.md +14 -28
- package/skills/priority-todos/SKILL.md +1 -1
- package/skills/regress/SKILL.md +11 -0
- package/skills/restraint/SKILL.md +72 -0
- package/skills/seo-checklist/SKILL.md +2 -2
- package/skills/spec/SKILL.md +65 -836
- package/skills/test/SKILL.md +3 -3
- package/skills/tool-fallback/SKILL.md +2 -2
- package/skills/vercel-react-best-practices/SKILL.md +1 -1
- package/skills/vibe/SKILL.md +20 -35
- package/skills/vibe.analyze/SKILL.md +7 -9
- package/skills/vibe.docs/SKILL.md +1 -1
- package/skills/vibe.event/SKILL.md +27 -27
- package/skills/vibe.figma/SKILL.md +14 -18
- package/skills/vibe.harness/SKILL.md +5 -5
- package/skills/vibe.reason/SKILL.md +0 -2
- package/skills/vibe.review/SKILL.md +45 -49
- package/skills/vibe.run/SKILL.md +2 -5
- package/skills/vibe.run/references/parallel-agents.md +33 -98
- package/skills/vibe.spec/SKILL.md +38 -535
- package/skills/vibe.utils/SKILL.md +3 -3
- package/skills/vibe.verify/SKILL.md +70 -542
- package/skills/video-production/SKILL.md +1 -1
- package/vibe/rules/orchestrator-contract.md +5 -4
- package/vibe/rules/quality/performance.md +1 -1
- package/vibe/templates/claudemd-template.md +1 -1
- package/vibe/templates/spec-template.md +35 -185
- package/agents/architect-low.md +0 -41
- package/agents/architect-medium.md +0 -59
- package/agents/compounder.md +0 -265
- package/agents/docs/api-documenter.md +0 -99
- package/agents/docs/changelog-writer.md +0 -93
- package/agents/event/event-comms.md +0 -78
- package/agents/event/event-content.md +0 -68
- package/agents/event/event-image.md +0 -95
- package/agents/event/event-scheduler.md +0 -69
- package/agents/event/event-speaker.md +0 -86
- package/agents/explorer-low.md +0 -42
- package/agents/explorer-medium.md +0 -59
- package/agents/explorer.md +0 -48
- package/agents/figma/figma-analyst.md +0 -56
- package/agents/figma/figma-architect.md +0 -116
- package/agents/figma/figma-auditor.md +0 -86
- package/agents/figma/figma-builder.md +0 -104
- package/agents/implementer-low.md +0 -43
- package/agents/implementer-medium.md +0 -52
- package/agents/junior-mentor.md +0 -141
- package/agents/planning/requirements-analyst.md +0 -84
- package/agents/planning/ux-advisor.md +0 -83
- package/agents/qa/acceptance-tester.md +0 -86
- package/agents/qa/edge-case-finder.md +0 -93
- package/agents/qa/qa-coordinator.md +0 -131
- package/agents/refactor-cleaner.md +0 -143
- package/agents/research/best-practices.md +0 -199
- package/agents/research/codebase-patterns.md +0 -157
- package/agents/research/framework-docs.md +0 -188
- package/agents/research/security-advisory.md +0 -213
- package/agents/review/architecture-reviewer.md +0 -107
- package/agents/review/complexity-reviewer.md +0 -116
- package/agents/review/data-integrity-reviewer.md +0 -88
- package/agents/review/git-history-reviewer.md +0 -103
- package/agents/review/performance-reviewer.md +0 -86
- package/agents/review/python-reviewer.md +0 -150
- package/agents/review/rails-reviewer.md +0 -139
- package/agents/review/react-reviewer.md +0 -144
- package/agents/review/security-reviewer.md +0 -80
- package/agents/review/simplicity-reviewer.md +0 -140
- package/agents/review/test-coverage-reviewer.md +0 -116
- package/agents/review/typescript-reviewer.md +0 -127
- package/agents/searcher.md +0 -54
- package/agents/simplifier.md +0 -124
- package/agents/teams/debug-team.md +0 -74
- package/agents/teams/dev-team.md +0 -92
- package/agents/teams/docs-team.md +0 -84
- package/agents/teams/figma-team.md +0 -89
- package/agents/teams/fullstack-team.md +0 -87
- package/agents/teams/lite-team.md +0 -73
- package/agents/teams/migration-team.md +0 -82
- package/agents/teams/refactor-team.md +0 -98
- package/agents/teams/research-team.md +0 -90
- package/agents/teams/review-debate-team.md +0 -129
- package/agents/teams/security-team.md +0 -85
- package/agents/ui/ui-a11y-auditor.md +0 -93
- package/agents/ui/ui-antipattern-detector.md +0 -102
- package/agents/ui/ui-dataviz-advisor.md +0 -69
- package/agents/ui/ui-design-system-gen.md +0 -57
- package/agents/ui/ui-industry-analyzer.md +0 -49
- package/agents/ui/ui-layout-architect.md +0 -65
- package/agents/ui/ui-stack-implementer.md +0 -68
- package/agents/ui/ux-compliance-reviewer.md +0 -81
- package/agents/ui-previewer.md +0 -262
- package/hooks/scripts/__tests__/keyword-detector.test.js +0 -242
- package/hooks/scripts/keyword-detector.js +0 -226
- package/skills/characterization-test/SKILL.md +0 -209
- package/skills/characterization-test/agents/behavior-capturer.md +0 -50
- package/skills/characterization-test/agents/coverage-checker.md +0 -54
- package/skills/characterization-test/agents/reporter.md +0 -50
- package/skills/characterization-test/agents/test-writer.md +0 -49
- package/skills/characterization-test/rubrics/coverage-criteria.md +0 -53
- package/skills/characterization-test/templates/test-template.ts +0 -101
- package/skills/claude-md-guide/SKILL.md +0 -353
- package/skills/claude-md-guide/rubrics/anti-patterns.md +0 -88
- package/skills/design-audit/SKILL.md +0 -154
- package/skills/design-critique/SKILL.md +0 -140
- package/skills/design-distill/SKILL.md +0 -131
- package/skills/design-normalize/SKILL.md +0 -135
- package/skills/design-polish/SKILL.md +0 -132
- package/skills/figma-convert/SKILL.md +0 -236
- package/skills/figma-extract/SKILL.md +0 -242
- package/skills/interview/SKILL.md +0 -358
- package/skills/interview/checklists/api.md +0 -101
- package/skills/interview/checklists/feature.md +0 -88
- package/skills/interview/checklists/library.md +0 -95
- package/skills/interview/checklists/mobile.md +0 -89
- package/skills/interview/checklists/webapp.md +0 -97
- package/skills/interview/checklists/website.md +0 -99
- package/skills/plan/SKILL.md +0 -254
- package/skills/rob-pike/SKILL.md +0 -66
- package/skills/spec/references/askuser-examples.md +0 -57
- package/skills/spec/references/example-session.md +0 -87
- package/skills/spec/references/templates.md +0 -194
- package/skills/spec-review/SKILL.md +0 -725
- package/skills/systematic-debugging/SKILL.md +0 -142
- package/skills/techdebt/SKILL.md +0 -126
- package/skills/techdebt/agents/analyzer.md +0 -50
- package/skills/techdebt/agents/fixer.md +0 -41
- package/skills/techdebt/agents/reviewer.md +0 -47
- package/skills/techdebt/agents/scanner.md +0 -44
- package/skills/techdebt/orchestrator.md +0 -72
- package/skills/techdebt/rubrics/severity.md +0 -51
- package/skills/techdebt/scripts/scan.js +0 -90
- package/skills/techdebt/templates/report.md +0 -86
- package/skills/typescript-advanced-types/SKILL.md +0 -68
- package/skills/typescript-advanced-types/rubrics/type-patterns.md +0 -109
- package/skills/yagni-ladder/SKILL.md +0 -90
- /package/skills/{claude-md-guide → agents-md}/templates/claude-md.md +0 -0
- /package/skills/{design-polish → design-refine}/rubrics/polish-checklist.md +0 -0
- /package/skills/{design-normalize → design-refine}/rubrics/token-naming.md +0 -0
- /package/skills/{design-distill → design-refine}/templates/design-system.md +0 -0
- /package/skills/{design-audit → design-review}/agents/scorer.md +0 -0
- /package/skills/{design-audit → design-review}/rubrics/ai-slop-patterns.md +0 -0
- /package/skills/{design-audit → design-review}/rubrics/scoring.md +0 -0
- /package/skills/{design-critique → design-review}/rubrics/ux-heuristics.md +0 -0
- /package/skills/{figma-convert → figma}/rubrics/conversion-rules.md +0 -0
- /package/skills/{figma-extract → figma}/rubrics/image-rules.md +0 -0
- /package/skills/{figma-convert → figma}/templates/component.md +0 -0
package/skills/test/SKILL.md
CHANGED
|
@@ -72,10 +72,10 @@ Written to `~/.vibe/test-reports/<YYYYMMDD-HHmm>-<harness>.{json,md}`. Exact sch
|
|
|
72
72
|
],
|
|
73
73
|
"hooks": [
|
|
74
74
|
{ "name": "pre-tool-guard", "status": "pass", "tests": "38/38" },
|
|
75
|
-
{ "name": "
|
|
75
|
+
{ "name": "scope-guard", "status": "pass", "tests": "12/12" }
|
|
76
76
|
],
|
|
77
77
|
"agents": [
|
|
78
|
-
{ "name": "
|
|
78
|
+
{ "name": "implementer", "status": "pass" }
|
|
79
79
|
]
|
|
80
80
|
},
|
|
81
81
|
"failed": [
|
|
@@ -111,7 +111,7 @@ Written to `~/.vibe/test-reports/<YYYYMMDD-HHmm>-<harness>.{json,md}`. Exact sch
|
|
|
111
111
|
## Failures
|
|
112
112
|
|
|
113
113
|
- **skills / spec** — invocation includes `auto` but triggers array is empty
|
|
114
|
-
- **agents /
|
|
114
|
+
- **agents / implementer** — agent file not found
|
|
115
115
|
```
|
|
116
116
|
|
|
117
117
|
If `failed` is empty, replace the Failures section with `_All probes passed._`.
|
|
@@ -3,8 +3,8 @@ name: tool-fallback
|
|
|
3
3
|
invocation: [auto]
|
|
4
4
|
tier: optional
|
|
5
5
|
description: "Tool failure fallback strategies with circuit breaker. Auto-activates on API errors, search failures, timeouts, 429, 5xx, overloaded errors."
|
|
6
|
-
triggers: [
|
|
7
|
-
priority:
|
|
6
|
+
triggers: [search failure, 429, 5xx, overloaded, fallback, circuit breaker, rate limit]
|
|
7
|
+
priority: 60
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# Tool Fallback Strategies
|
|
@@ -3,7 +3,7 @@ name: vercel-react-best-practices
|
|
|
3
3
|
invocation: [auto]
|
|
4
4
|
tier: core
|
|
5
5
|
description: "React/Next.js performance gotchas from Vercel engineering. Non-intuitive pitfalls that LLMs commonly miss."
|
|
6
|
-
triggers: [react, next.js,
|
|
6
|
+
triggers: [react, next.js, vercel, react performance, re-render, rendering waterfall]
|
|
7
7
|
priority: 60
|
|
8
8
|
---
|
|
9
9
|
|
package/skills/vibe/SKILL.md
CHANGED
|
@@ -31,7 +31,7 @@ user-invocable: true
|
|
|
31
31
|
- **동적 파이프라인**: 의도/입력 종류에 따라 매번 다른 스킬 체인 구성. 미리 정해진 고정 흐름 아님.
|
|
32
32
|
- **무제한 라우팅**: 라우팅 표는 빠른 경로일 뿐 닫힌 화이트리스트가 아니다. 설치된 모든 `vibe.*` 스킬이 라우팅 후보이며, 표에 없는 요구사항도 description 기반 의미 매칭으로 처리한다 (Catch-all).
|
|
33
33
|
- **하네스 정규화 (추론 앞단)**: vibe는 CC(추론)·Codex(직역) 어느 하네스의 암묵적 동작에도 의존하지 않는다. `/vibe`가 모호한 NL을 **명시적·직역 가능한 지시로 먼저 전개**하고, 하위 skill은 모호한 입력을 받지 않는다. 이로써 모든 하네스에서 동일 결과 + CC급 편의를 제공한다. 전문: `vibe/rules/principles/dual-harness-doctrine.md`.
|
|
34
|
-
- **Smart Resume**: `.vibe/{
|
|
34
|
+
- **Smart Resume**: `.vibe/{specs,features}/` 감지하여 "이어서 진행?" 자동 제안 (레거시 `.vibe/{interviews,plans}/` 는 입력 컨텍스트로만 인식).
|
|
35
35
|
- **SPEC 확정 1회 승인 → 루프**: SPEC(Done의 정의 + 수용 기준)을 사용자와 확정하는 것이 유일한 의무적 사람 개입. 승인 후에는 `vibe/rules/loop-contract.md`의 ANCHOR→ACT→JUDGE→RECORD 루프를 게이트 전부 통과할 때까지 자동 반복한다. 루프 종료 = 게이트 통과 또는 stuck 또는 max_iterations 도달.
|
|
36
36
|
- **위임자 역할**: `/vibe` 본인은 코드를 직접 쓰지 않는다. 라우팅·설계·실행 위임만 한다.
|
|
37
37
|
|
|
@@ -56,8 +56,8 @@ user-invocable: true
|
|
|
56
56
|
|
|
57
57
|
| 의도 | 신호 | 기본 파이프라인 |
|
|
58
58
|
|---|---|---|
|
|
59
|
-
| **new feature** | "만들어줘", "추가", 신규 아이디어, 입력 없이 빈 호출 |
|
|
60
|
-
| **figma-driven UI** | figma.com URL, "디자인", 이미지/PDF + UI 단어 | figma
|
|
59
|
+
| **new feature** | "만들어줘", "추가", 신규 아이디어, 입력 없이 빈 호출 | spec → run → verify (trace/contract 는 사용자 요청 또는 SPEC 에 API Contract 섹션이 있을 때만) |
|
|
60
|
+
| **figma-driven UI** | figma.com URL, "디자인", 이미지/PDF + UI 단어 | figma (Extract → Convert Mode) → run → verify |
|
|
61
61
|
| **clone existing UI** | 일반 웹사이트 URL + "비슷한", "클론", "이런 느낌" | clone → run → verify |
|
|
62
62
|
| **resume in-progress** | feature name + `.vibe/specs/{name}.md` 존재 | (resume 지점부터) |
|
|
63
63
|
| **review only** | "리뷰", "검토만", 코드/SPEC 첨부 + "확인" | review |
|
|
@@ -92,18 +92,17 @@ user-invocable: true
|
|
|
92
92
|
.vibe/.last-feature 존재 → 직전 feature 이름 추출
|
|
93
93
|
.vibe/specs/{feature}/ 또는 .vibe/specs/{feature}.md 존재 → spec 단계 완료
|
|
94
94
|
.vibe/features/{feature}/ 또는 .vibe/features/{feature}.feature 존재 → feature 단계 완료
|
|
95
|
-
.vibe/plans/{feature}.md 존재 →
|
|
96
|
-
.vibe/interviews/{feature}.md 존재 → interview 단계 완료
|
|
95
|
+
.vibe/plans/{feature}.md · .vibe/interviews/{feature}.md 존재 → 레거시 아티팩트 (구버전) — spec 패스의 입력 컨텍스트로만 사용, 재생성 금지
|
|
97
96
|
```
|
|
98
97
|
|
|
99
98
|
감지된 진행 상태가 있으면 사용자에게 명시:
|
|
100
99
|
|
|
101
100
|
```
|
|
102
101
|
🔍 진행 중인 작업 감지: "login"
|
|
103
|
-
✅
|
|
102
|
+
✅ spec · ⏳ run
|
|
104
103
|
|
|
105
|
-
이어서
|
|
106
|
-
[1] 이어서
|
|
104
|
+
이어서 run 부터 진행할까요? 아니면 새 작업?
|
|
105
|
+
[1] 이어서 run
|
|
107
106
|
[2] 새 작업 (위 요구사항으로)
|
|
108
107
|
[3] 취소
|
|
109
108
|
```
|
|
@@ -126,32 +125,21 @@ Input: 자연어 ("패럴랙스 웹사이트 만들어줘")
|
|
|
126
125
|
Resume: 없음 (신규)
|
|
127
126
|
Keywords: 없음
|
|
128
127
|
|
|
129
|
-
Phase 1: /vibe.spec →
|
|
128
|
+
Phase 1: /vibe.spec → 단일 패스 SPEC + 승인 (유일한 의무 게이트)
|
|
130
129
|
Phase 2: /vibe.figma → UI 디자인 트랙 (type=website 감지)
|
|
131
130
|
Phase 3: /vibe.run → 구현
|
|
132
131
|
Phase 4: /vibe.verify → 검증
|
|
133
|
-
Phase 5: /vibe.contract → API 계약 검증
|
|
134
|
-
Phase 6: /vibe.trace → RTM 출력
|
|
135
132
|
|
|
136
|
-
예상:
|
|
133
|
+
예상: 4 phase, 사람 개입 1회 (SPEC 승인)
|
|
137
134
|
```
|
|
138
135
|
|
|
139
|
-
|
|
136
|
+
설계된 파이프라인은 요약 출력 후 바로 실행한다 — **별도의 파이프라인 승인 게이트는 없다.** 유일한 의무적 사람 개입은 spec 단계 안의 SPEC 확정 승인이다 (loop-contract SSOT).
|
|
140
137
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
[1] 진행
|
|
144
|
-
[2] 수정 (어느 phase 빼거나 추가)
|
|
145
|
-
[3] 취소
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
**Skip 조건:**
|
|
149
|
-
- `automationLevel: autonomous` 설정 (`.vibe/config.json`) 또는 `ultrawork`/`ulw` 별칭 → SPEC 승인 게이트만 skip, 루프는 정상 동작
|
|
138
|
+
**SPEC 승인 skip 조건:**
|
|
139
|
+
- `automationLevel: autonomous` 설정 (`.vibe/config.json`) 또는 `ultrawork`/`ulw` 별칭 → SPEC 승인 게이트 skip, 루프는 정상 동작
|
|
150
140
|
- `--max-iter 1` 또는 `quick` 별칭 → 1회 시도 후 종료
|
|
151
141
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
### Phase 5: 체인 실행
|
|
142
|
+
### Phase 4: 체인 실행
|
|
155
143
|
|
|
156
144
|
승인된 파이프라인을 순차 호출:
|
|
157
145
|
|
|
@@ -166,18 +154,18 @@ Phase 6: /vibe.trace → RTM 출력
|
|
|
166
154
|
```
|
|
167
155
|
|
|
168
156
|
각 phase 종료 후 JUDGE 단계:
|
|
169
|
-
- 게이트 통과 (P1=0 ∧ verifyPassed) → 루프 종료, Phase
|
|
157
|
+
- 게이트 통과 (P1=0 ∧ verifyPassed) → 루프 종료, Phase 5 보고
|
|
170
158
|
- 게이트 미통과 → RECORD(run-ledger + loop-history.jsonl) 후 다음 ANCHOR로
|
|
171
159
|
- stuck(연속 2회 동일 findings 해시) → `automationLevel: confirm`이면 사용자 질문; `autonomous`이면 TODO 기록 후 루프 종료
|
|
172
160
|
- max_iterations(기본 10) 도달 → 잔여를 인박스로 이월
|
|
173
161
|
|
|
174
|
-
### Phase
|
|
162
|
+
### Phase 5: 종료 보고
|
|
175
163
|
|
|
176
164
|
```
|
|
177
165
|
✅ /vibe 완료
|
|
178
166
|
|
|
179
167
|
실행 파이프라인:
|
|
180
|
-
✅ /vibe.spec (
|
|
168
|
+
✅ /vibe.spec (단일 패스 SPEC + 승인)
|
|
181
169
|
✅ /vibe.figma (UI 디자인 트랙)
|
|
182
170
|
✅ /vibe.run (구현)
|
|
183
171
|
✅ /vibe.verify (검증 — 9/9 통과)
|
|
@@ -203,7 +191,7 @@ Phase 6: /vibe.trace → RTM 출력
|
|
|
203
191
|
→ Intent: figma-driven UI
|
|
204
192
|
→ Resume: 없음
|
|
205
193
|
→ Pipeline:
|
|
206
|
-
1. /vibe.figma (figma
|
|
194
|
+
1. /vibe.figma (figma Extract + Convert Mode)
|
|
207
195
|
2. /vibe.spec (생성된 SPEC 자동 보정)
|
|
208
196
|
3. /vibe.run
|
|
209
197
|
4. /vibe.verify
|
|
@@ -290,13 +278,10 @@ Phase 6: /vibe.trace → RTM 출력
|
|
|
290
278
|
[Phase 3: 파이프라인 설계]
|
|
291
279
|
...
|
|
292
280
|
|
|
293
|
-
[Phase 4:
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
[Phase 5: 실행]
|
|
297
|
-
...
|
|
281
|
+
[Phase 4: 실행]
|
|
282
|
+
... (SPEC 승인은 spec 단계 내부의 1회 게이트)
|
|
298
283
|
|
|
299
|
-
[Phase
|
|
284
|
+
[Phase 5: 종료 보고]
|
|
300
285
|
...
|
|
301
286
|
```
|
|
302
287
|
|
|
@@ -87,31 +87,31 @@ Read `CLAUDE.md`, `package.json`, `pyproject.toml`, etc. to identify tech stack:
|
|
|
87
87
|
|
|
88
88
|
#### 3. Explore Related Code (Parallel Sub-Agents)
|
|
89
89
|
|
|
90
|
-
**MANDATORY: Always use
|
|
90
|
+
**MANDATORY: Always use native Explore sub-agents. Never explore in main session.**
|
|
91
91
|
|
|
92
|
-
> Why: 3
|
|
92
|
+
> Why: 3 Explore agents return ~600 tokens of summaries to main session.
|
|
93
93
|
> Direct Glob/Grep/Read in main session would add 5-15K tokens of raw content.
|
|
94
94
|
|
|
95
95
|
**Parallel exploration (ALL in ONE message):**
|
|
96
96
|
|
|
97
97
|
```text
|
|
98
|
-
Agent(subagent_type="
|
|
98
|
+
Agent(subagent_type="Explore", model="haiku",
|
|
99
99
|
prompt="Find all [FEATURE] related API endpoints. List file paths, HTTP methods, routes, and auth requirements.")
|
|
100
100
|
|
|
101
|
-
Agent(subagent_type="
|
|
101
|
+
Agent(subagent_type="Explore", model="haiku",
|
|
102
102
|
prompt="Find all [FEATURE] related services, business logic, and utility functions. Map dependencies.")
|
|
103
103
|
|
|
104
|
-
Agent(subagent_type="
|
|
104
|
+
Agent(subagent_type="Explore", model="haiku",
|
|
105
105
|
prompt="Find all [FEATURE] related data models, schemas, and database queries. Document relationships and key fields.")
|
|
106
106
|
```
|
|
107
107
|
|
|
108
108
|
**Scale for large projects (6+ related files):**
|
|
109
109
|
|
|
110
110
|
```text
|
|
111
|
-
Agent(subagent_type="
|
|
111
|
+
Agent(subagent_type="Explore", model="haiku",
|
|
112
112
|
prompt="Find all test files related to [FEATURE]. Identify tested vs untested paths.")
|
|
113
113
|
|
|
114
|
-
Agent(subagent_type="
|
|
114
|
+
Agent(subagent_type="Explore", model="haiku",
|
|
115
115
|
prompt="Analyze [FEATURE] configuration, environment variables, and external integrations.")
|
|
116
116
|
```
|
|
117
117
|
|
|
@@ -430,8 +430,6 @@ node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index
|
|
|
430
430
|
|
|
431
431
|
| Tool | Purpose | When to Use |
|
|
432
432
|
|------|---------|-------------|
|
|
433
|
-
| `findSymbol` | Find symbol definitions | Locate function/class implementations |
|
|
434
|
-
| `findReferences` | Find all references | Track usage patterns |
|
|
435
433
|
| `analyzeComplexity` | Complexity analysis | Measure complexity metrics |
|
|
436
434
|
| `validateCodeQuality` | Quality validation | Check code quality standards |
|
|
437
435
|
| `saveMemory` | Save analysis results | Persist findings for future sessions |
|
|
@@ -16,7 +16,7 @@ Generate or update project documentation by analyzing the actual codebase.
|
|
|
16
16
|
/vibe.docs guide # 사용자 가이드 (docs/GUIDE.md)
|
|
17
17
|
/vibe.docs arch # 아키텍처 문서 + Mermaid 다이어그램 (docs/ARCHITECTURE.md)
|
|
18
18
|
/vibe.docs release # 릴리즈 노트 (git history 기반)
|
|
19
|
-
/vibe.docs agent # CLAUDE.md / AGENTS.md 생성·동기화 (
|
|
19
|
+
/vibe.docs agent # CLAUDE.md / AGENTS.md 생성·동기화 (agents-md 검증 필수)
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
## Pipeline Position
|
|
@@ -42,11 +42,11 @@ Automate community event planning with D-Day based proactive execution.
|
|
|
42
42
|
└── DWK: 9 steps (D-30 → D+3)
|
|
43
43
|
|
|
44
44
|
5. AUTO-EXECUTE pending deliverables
|
|
45
|
-
├── Content drafts → event-
|
|
46
|
-
├──
|
|
47
|
-
├──
|
|
48
|
-
├──
|
|
49
|
-
└──
|
|
45
|
+
├── Content drafts → event-planner agent
|
|
46
|
+
├── Speaker research → event-planner agent
|
|
47
|
+
├── Image generation → event-ops agent
|
|
48
|
+
├── SMS/email drafts → event-ops agent
|
|
49
|
+
└── Ops materials → event-ops agent
|
|
50
50
|
|
|
51
51
|
6. REQUEST confirmation for send actions
|
|
52
52
|
├── SMS actual send
|
|
@@ -73,41 +73,41 @@ Automate community event planning with D-Day based proactive execution.
|
|
|
73
73
|
|
|
74
74
|
| Phase | Agents Triggered | Outputs |
|
|
75
75
|
|-------|-----------------|---------|
|
|
76
|
-
| D-60 | event-
|
|
77
|
-
| D-45 | event-
|
|
78
|
-
| D-40 | event-
|
|
79
|
-
| D-28 | event-
|
|
80
|
-
| D-30 | event-
|
|
81
|
-
| D-14 | event-
|
|
82
|
-
| D-3 | event-
|
|
76
|
+
| D-60 | event-planner | 3 topic suggestions + speaker research |
|
|
77
|
+
| D-45 | event-planner | DM + email outreach drafts |
|
|
78
|
+
| D-40 | event-ops | Topic confirmation request email |
|
|
79
|
+
| D-28 | event-planner, event-ops | Intro + 2 images + 3 SMS + 1 email |
|
|
80
|
+
| D-30 | event-planner, event-ops | LinkedIn/Threads promo + SMS send(✅) |
|
|
81
|
+
| D-14 | event-planner | LinkedIn/Threads reminder |
|
|
82
|
+
| D-3 | event-ops | BCC email + SMS send(✅) |
|
|
83
83
|
| D-1 | event-ops | Nametags + checklist + PPTX + SMS(✅) |
|
|
84
|
-
| D-Day | event-
|
|
85
|
-
| D+1 | event-
|
|
84
|
+
| D-Day | event-ops | Day-of SMS(✅) |
|
|
85
|
+
| D+1 | event-planner, event-ops | Review posts + settlement |
|
|
86
86
|
| D+2 | — | Site update (manual) |
|
|
87
87
|
|
|
88
88
|
### Webinar Phases
|
|
89
89
|
|
|
90
90
|
| Phase | Agents Triggered | Outputs |
|
|
91
91
|
|-------|-----------------|---------|
|
|
92
|
-
| Planning | event-
|
|
93
|
-
| Planning | event-
|
|
94
|
-
| D-4 | event-
|
|
95
|
-
| D-Day | event-
|
|
96
|
-
| D+1 | event-
|
|
92
|
+
| Planning | event-planner, event-ops | Intro + 3 images + SMS + email |
|
|
93
|
+
| Planning | event-planner | LinkedIn/Threads promo |
|
|
94
|
+
| D-4 | event-ops | Zoom(manual) + BCC email + SMS(✅) |
|
|
95
|
+
| D-Day | event-ops | SMS(✅) + slides |
|
|
96
|
+
| D+1 | event-planner | Review posts |
|
|
97
97
|
|
|
98
98
|
### DWK Phases
|
|
99
99
|
|
|
100
100
|
| Phase | Agents Triggered | Outputs |
|
|
101
101
|
|-------|-----------------|---------|
|
|
102
|
-
| D-30 | event-
|
|
103
|
-
| D-25 | event-
|
|
104
|
-
| D-20 | event-
|
|
105
|
-
| D-16 | event-
|
|
106
|
-
| D-15 | event-
|
|
107
|
-
| D-3 | event-
|
|
102
|
+
| D-30 | event-planner | 3 topics + speaker research |
|
|
103
|
+
| D-25 | event-planner | DM + email outreach |
|
|
104
|
+
| D-20 | event-ops | Topic confirmation email |
|
|
105
|
+
| D-16 | event-planner, event-ops | Intro + 2 images + SMS + email |
|
|
106
|
+
| D-15 | event-planner | LinkedIn/Threads promo |
|
|
107
|
+
| D-3 | event-ops | BCC email + SMS(✅) |
|
|
108
108
|
| D-1 | event-ops | Slido plan + PPTX + SNS remind(✅) |
|
|
109
|
-
| D-Day | event-
|
|
110
|
-
| D+3 | event-
|
|
109
|
+
| D-Day | event-ops | SMS(✅) + nametags(offline) |
|
|
110
|
+
| D+3 | event-planner, event-ops | Review + settlement |
|
|
111
111
|
|
|
112
112
|
## State File Format
|
|
113
113
|
|
|
@@ -158,8 +158,7 @@ Load skill `figma` — Phase 1 Storyboard
|
|
|
158
158
|
### Phase 2 — 재료 확보
|
|
159
159
|
|
|
160
160
|
```
|
|
161
|
-
Load skill `figma
|
|
162
|
-
Load skill `figma` — Phase 2 (코디네이터: MO/PC 병렬 워커)
|
|
161
|
+
Load skill `figma` — Phase 2 Extract Mode (코디네이터: MO/PC 병렬 워커)
|
|
163
162
|
|
|
164
163
|
Phase 0에서 수집한 URL 중 "design"으로 자동 분류된 항목 (MO/PC)을 사용.
|
|
165
164
|
→ tree.json + bg/ + content/ + sections/ (검증용)
|
|
@@ -181,8 +180,7 @@ Load skill `figma` — Phase 3
|
|
|
181
180
|
### Phase 4 — BP별 스태틱 구현 (컨벤션 준수)
|
|
182
181
|
|
|
183
182
|
```
|
|
184
|
-
Load skill `figma
|
|
185
|
-
Load skill `figma` — Phase 4
|
|
183
|
+
Load skill `figma` — Phase 4 Convert Mode
|
|
186
184
|
|
|
187
185
|
재사용 매칭 (BLOCKING):
|
|
188
186
|
① component-index.json 매칭 → import (새로 만들지 않음)
|
|
@@ -191,7 +189,7 @@ Load skill `figma` — Phase 4
|
|
|
191
189
|
⛔ figma-to-scss.js 강제 / figma-validate.js PASS 없이 다음 섹션 금지
|
|
192
190
|
|
|
193
191
|
⤵ Phase 4 후처리
|
|
194
|
-
Load skill `design-normalize
|
|
192
|
+
Load skill `design-refine` — normalize 모드
|
|
195
193
|
→ 매칭 안 된 하드코딩 값 → MASTER.md 토큰으로 정렬
|
|
196
194
|
→ 새 토큰 필요 항목은 review 큐에 기록
|
|
197
195
|
```
|
|
@@ -216,17 +214,17 @@ Load skill `figma` — Phase 6 (시각 검증 루프, P1=0까지)
|
|
|
216
214
|
- Figma MCP/변환기가 삼킨 값이 여기서 드러난다.
|
|
217
215
|
|
|
218
216
|
⤵ Phase 6 후처리
|
|
219
|
-
Load skill `design-audit
|
|
217
|
+
Load skill `design-review` — audit 모드
|
|
220
218
|
→ 5-dimension 점검 (a11y, performance, responsive, theming, AI slop)
|
|
221
219
|
→ P1 finding은 review 큐에 기록 (read-only)
|
|
222
220
|
|
|
223
221
|
⤵ Phase 6.5 (hasEmitDesignMd == true 시)
|
|
224
|
-
→ resolved tokens (Color/Typography/Spacing) + design-audit 산출물을
|
|
222
|
+
→ resolved tokens (Color/Typography/Spacing) + design-review(audit) 산출물을
|
|
225
223
|
DESIGN.md (Stitch 9 섹션) 으로 정제해 프로젝트 루트에 저장
|
|
226
224
|
→ 첫 줄: `<!-- design-md-version: 1 -->`
|
|
227
225
|
→ `vibe.design lint` 자동 통과 확인
|
|
228
226
|
|
|
229
|
-
⛔ Phase 6 + design-audit 완료 전까지 "완료 요약" 출력 금지.
|
|
227
|
+
⛔ Phase 6 + design-review(audit) 완료 전까지 "완료 요약" 출력 금지.
|
|
230
228
|
```
|
|
231
229
|
|
|
232
230
|
---
|
|
@@ -260,8 +258,7 @@ Load skill `figma` — Phase 1
|
|
|
260
258
|
### Phase 2 — 재료 확보
|
|
261
259
|
|
|
262
260
|
```
|
|
263
|
-
Load skill `figma
|
|
264
|
-
Load skill `figma` — Phase 2
|
|
261
|
+
Load skill `figma` — Phase 2 Extract Mode
|
|
265
262
|
→ Branch 1 Phase 2와 동일 (design URL로 추출)
|
|
266
263
|
|
|
267
264
|
🚦 Audit gate: Branch 1과 동일하게 `auditSummary.p1 > 0` 이면 Phase 3 진입 금지.
|
|
@@ -276,14 +273,13 @@ Load skill `figma` — Phase 3 (figma-refine.js 강제)
|
|
|
276
273
|
### Phase 4 — BP별 스태틱 구현 (Standalone 모드)
|
|
277
274
|
|
|
278
275
|
```
|
|
279
|
-
Load skill `figma
|
|
280
|
-
Load skill `figma` — Phase 4
|
|
276
|
+
Load skill `figma` — Phase 4 Convert Mode
|
|
281
277
|
|
|
282
278
|
⛔ 재사용 매칭 SKIP — 새 컴포넌트 자유 생성
|
|
283
279
|
✅ 새 토큰 자유 생성 (피처 스코프 네이밍: $feature-color-xxx)
|
|
284
280
|
✅ figma-to-scss.js / figma-validate.js는 그대로 강제
|
|
285
281
|
|
|
286
|
-
❌ design-normalize 호출 금지 (이 Branch는 토큰 alignment 대상이 아님)
|
|
282
|
+
❌ design-refine(normalize) 호출 금지 (이 Branch는 토큰 alignment 대상이 아님)
|
|
287
283
|
```
|
|
288
284
|
|
|
289
285
|
### Phase 5 — 컴파일 게이트
|
|
@@ -300,15 +296,15 @@ Load skill `figma` — Phase 6 (시각 검증 루프, P1=0까지)
|
|
|
300
296
|
Raw-vs-computed 재조정: Branch 1과 동일 — tree.json `raw` ↔ getComputedStyle 비교.
|
|
301
297
|
|
|
302
298
|
⤵ Phase 6 후처리
|
|
303
|
-
Load skill `design-audit
|
|
299
|
+
Load skill `design-review` — audit 모드
|
|
304
300
|
→ a11y는 항상 검증. 컨벤션 무시 모드여도 접근성은 양보 불가.
|
|
305
301
|
|
|
306
302
|
⤵ Phase 6.5 (hasEmitDesignMd == true 시)
|
|
307
|
-
→ resolved tokens + design-audit 산출물을
|
|
303
|
+
→ resolved tokens + design-review(audit) 산출물을
|
|
308
304
|
DESIGN.md (Stitch 9 섹션) 으로 정제해 프로젝트 루트에 저장
|
|
309
305
|
→ 첫 줄: `<!-- design-md-version: 1 -->`
|
|
310
306
|
|
|
311
|
-
⛔ Phase 6 + design-audit 완료 전까지 "완료 요약" 출력 금지.
|
|
307
|
+
⛔ Phase 6 + design-review(audit) 완료 전까지 "완료 요약" 출력 금지.
|
|
312
308
|
```
|
|
313
309
|
|
|
314
310
|
---
|
|
@@ -612,7 +608,7 @@ Load skill `figma:figma-generate-design` — Step 3+: Assemble Sections (디자
|
|
|
612
608
|
|
|
613
609
|
```
|
|
614
610
|
❌ Branch 1 도중 figma:figma-use / figma:figma-generate-design 호출 금지 (READ 모드)
|
|
615
|
-
❌ Branch 2 도중 design-normalize 호출 금지 (독립 모드)
|
|
616
|
-
❌ Branch 3 도중 figma
|
|
611
|
+
❌ Branch 2 도중 design-refine(normalize) 호출 금지 (독립 모드)
|
|
612
|
+
❌ Branch 3 도중 figma 스킬의 Extract/Convert Mode · figma-refine.js 호출 금지 (WRITE 모드)
|
|
617
613
|
❌ Branch 결정 후 다른 Branch의 Phase로 점프 금지
|
|
618
614
|
```
|
|
@@ -30,16 +30,16 @@ When items are N/A, **remove their points from the total** rather than scoring 0
|
|
|
30
30
|
|
|
31
31
|
### 1. Collect Project State (Parallel Agents)
|
|
32
32
|
|
|
33
|
-
Dispatch 3
|
|
33
|
+
Dispatch 3 native Explore agents in a single message:
|
|
34
34
|
|
|
35
35
|
```text
|
|
36
|
-
Agent(subagent_type="
|
|
36
|
+
Agent(subagent_type="Explore", model="haiku",
|
|
37
37
|
prompt="Check project scaffolding: 1) Does docs/ exist with business documents? 2) Does .dev/ exist for AI logs? 3) Is src/ organized by role (not flat)? 4) Is tests/ separate from src/? 5) List top-level directory structure.")
|
|
38
38
|
|
|
39
|
-
Agent(subagent_type="
|
|
39
|
+
Agent(subagent_type="Explore", model="haiku",
|
|
40
40
|
prompt="Check project context and boundaries: 1) Does CLAUDE.md exist? How many lines? 2) Does .claude/rules/ or .vibe/ exist? How many rule files? 3) Does .claude/settings.local.json exist with hooks? 4) Does .vibe/config.json exist? 5) Are there any .claude/skills/ directories?")
|
|
41
41
|
|
|
42
|
-
Agent(subagent_type="
|
|
42
|
+
Agent(subagent_type="Explore", model="haiku",
|
|
43
43
|
prompt="Check project planning, execution, and verification: 1) Are there SPEC files in .vibe/specs/? 2) Are there Feature (BDD) files in .vibe/features/? 3) Are there test files? How many? 4) Is there CI config (.github/workflows, etc.)? 5) Are there .dev/learnings/ files?")
|
|
44
44
|
```
|
|
45
45
|
|
|
@@ -81,7 +81,7 @@ Agent(subagent_type="explorer-low", model="haiku",
|
|
|
81
81
|
| Item | Criteria | Points |
|
|
82
82
|
|------|----------|--------|
|
|
83
83
|
| Agents or skills | Specialized agents or skills defined | /5 |
|
|
84
|
-
|
|
|
84
|
+
| Parallel composition | Parallel native subagents (architect + implementer + tester, etc.) | /4 |
|
|
85
85
|
| Permission model | Per-agent permission separation (read-only vs write) | /3 |
|
|
86
86
|
| Non-code workflows | Support for documentation, research, and other non-code tasks | /3 |
|
|
87
87
|
|
|
@@ -198,8 +198,6 @@ node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index
|
|
|
198
198
|
|
|
199
199
|
| Tool | Purpose | When to Use |
|
|
200
200
|
|------|---------|-------------|
|
|
201
|
-
| `findSymbol` | Find symbol definitions | Locate potential problem areas |
|
|
202
|
-
| `findReferences` | Find all references | Trace data/control flow |
|
|
203
201
|
| `analyzeComplexity` | Complexity analysis | Identify high-risk complex code |
|
|
204
202
|
| `saveMemory` | Save reasoning progress | Store hypothesis verification results |
|
|
205
203
|
| `recallMemory` | Recall saved memory | Retrieve previous reasoning context |
|
|
@@ -222,78 +222,76 @@ Read CLAUDE.md -> Explicit tech stack declaration
|
|
|
222
222
|
5. If no SPEC files exist → Skip (reviews work without SPEC too)
|
|
223
223
|
```
|
|
224
224
|
|
|
225
|
-
### Phase 2: Parallel Agent Review (STACK-AWARE)
|
|
225
|
+
### Phase 2: Parallel Agent Review (STACK-AWARE)
|
|
226
226
|
|
|
227
|
-
**
|
|
228
|
-
```bash
|
|
229
|
-
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/infra/orchestrator/index.js').then(o => o.review(['FILE_PATHS'], ['DETECTED_STACKS']).then(r => console.log(r.content[0].text)))"
|
|
230
|
-
```
|
|
227
|
+
**Spawn the reviewers as concurrent native subagents in ONE message** — one `code-reviewer` instance per focus plus `security-reviewer`, each scoped to the changed files:
|
|
231
228
|
|
|
232
|
-
**Example:**
|
|
233
|
-
```bash
|
|
234
|
-
# Review changed files with TypeScript + React stack
|
|
235
|
-
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/infra/orchestrator/index.js').then(o => o.review(['src/api/users.ts', 'src/components/Login.tsx'], ['TypeScript', 'React']).then(r => console.log(r.content[0].text)))"
|
|
236
229
|
```
|
|
230
|
+
Task (code-reviewer): "Review [FILES] — focus: correctness" (concurrent)
|
|
231
|
+
Task (code-reviewer): "Review [FILES] — focus: data-integrity" (concurrent)
|
|
232
|
+
Task (code-reviewer): "Review [FILES] — focus: performance" (concurrent)
|
|
233
|
+
Task (code-reviewer): "Review [FILES] — focus: architecture" (concurrent)
|
|
234
|
+
Task (security-reviewer): "Review [FILES] for vulnerabilities" (concurrent)
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
Stack-specific focus (`idioms`) is added when the diff touches that stack's files. Collect all results, then dedupe/merge findings before Phase 3.
|
|
237
238
|
|
|
238
|
-
**Core Reviewers (Always Run):**
|
|
239
|
-
| Agent | Focus |
|
|
239
|
+
**Core Reviewers (Always Run — parallel `code-reviewer` instances, one per focus, plus `security-reviewer`):**
|
|
240
|
+
| Agent (focus) | Focus |
|
|
240
241
|
|-------|-------|
|
|
241
242
|
| security-reviewer | OWASP Top 10, vulnerabilities |
|
|
242
|
-
|
|
|
243
|
-
|
|
|
244
|
-
|
|
|
245
|
-
|
|
|
246
|
-
|
|
|
247
|
-
| git-history
|
|
248
|
-
| test-coverage
|
|
249
|
-
|
|
250
|
-
**Stack-Specific
|
|
251
|
-
| Agent | Condition |
|
|
243
|
+
| code-reviewer (focus: correctness) | Logic errors, edge cases |
|
|
244
|
+
| code-reviewer (focus: data-integrity) | Data validation, constraints |
|
|
245
|
+
| code-reviewer (focus: performance) | N+1 queries, memory leaks |
|
|
246
|
+
| code-reviewer (focus: architecture) | Layer violations, cycles |
|
|
247
|
+
| code-reviewer (focus: complexity) | Cyclomatic complexity, length, over-abstraction, dead code |
|
|
248
|
+
| code-reviewer (focus: git-history) | Churn files, risk patterns |
|
|
249
|
+
| code-reviewer (focus: test-coverage) | Missing tests, edge cases |
|
|
250
|
+
|
|
251
|
+
**Stack-Specific Review (Conditional — one extra `code-reviewer` instance):**
|
|
252
|
+
| Agent (focus) | Condition |
|
|
252
253
|
|-------|-----------|
|
|
253
|
-
|
|
|
254
|
-
| typescript-reviewer | .ts/.tsx files OR tsconfig |
|
|
255
|
-
| rails-reviewer | Gemfile has rails |
|
|
256
|
-
| react-reviewer | package.json has react |
|
|
254
|
+
| code-reviewer (focus: idioms) | Language/framework files in diff (.py / .ts / .tsx / Gemfile rails / package.json react) — prompt states the detected stack |
|
|
257
255
|
|
|
258
256
|
### Phase 2.5: UI/UX Review Agents (Auto-triggered)
|
|
259
257
|
|
|
260
258
|
> **활성화 조건**: 변경된 파일 중 UI 파일 존재 (`.tsx`, `.jsx`, `.vue`, `.svelte`, `.html`, `.css`, `.scss`)
|
|
261
259
|
> **비활성화**: `.vibe/config.json`에 `"uiUxAnalysis": false` 설정
|
|
262
260
|
|
|
263
|
-
**기존
|
|
261
|
+
**기존 Phase 2 리뷰 에이전트와 병렬 실행 — `design-reviewer` 인스턴스 3개 (관점별):**
|
|
264
262
|
|
|
265
|
-
| Agent | Role | Output |
|
|
263
|
+
| Agent (관점) | Role | Output |
|
|
266
264
|
|-------|------|--------|
|
|
267
|
-
| ⑥
|
|
268
|
-
| ⑦
|
|
269
|
-
| ⑧
|
|
265
|
+
| ⑥ design-reviewer (UX 준수) | UX 가이드라인 준수 검증 | P1/P2/P3 findings |
|
|
266
|
+
| ⑦ design-reviewer (접근성) | WCAG 2.1 AA 접근성 감사 | P1/P2/P3 findings |
|
|
267
|
+
| ⑧ design-reviewer (안티패턴) | UI 안티패턴 + 디자인 시스템 일관성 | P1/P2/P3 findings |
|
|
270
268
|
|
|
271
269
|
**실행 방법 — 기존 Phase 2 에이전트와 병렬 실행:**
|
|
272
270
|
|
|
273
271
|
```text
|
|
274
272
|
# ⑥ UX 준수 검증 (Haiku)
|
|
275
|
-
Task(subagent_type="
|
|
273
|
+
Task(subagent_type="design-reviewer",
|
|
276
274
|
prompt="Review UI files for UX guideline compliance: {changed_ui_files}. Use core_ui_search against ux-guidelines and web-interface domains.")
|
|
277
275
|
|
|
278
276
|
# ⑦ 접근성 감사 (Haiku)
|
|
279
|
-
Task(subagent_type="
|
|
277
|
+
Task(subagent_type="design-reviewer",
|
|
280
278
|
prompt="Audit UI files for WCAG 2.1 AA compliance: {changed_ui_files}.")
|
|
281
279
|
|
|
282
280
|
# ⑧ 안티패턴 검출 (Haiku)
|
|
283
|
-
Task(subagent_type="
|
|
281
|
+
Task(subagent_type="design-reviewer",
|
|
284
282
|
prompt="Detect UI anti-patterns in: {changed_ui_files}. Check against MASTER.md if exists at .vibe/design-system/{project}/MASTER.md.")
|
|
285
283
|
```
|
|
286
284
|
|
|
287
285
|
#### Visual P1 Baseline
|
|
288
286
|
|
|
289
287
|
- 프로젝트 루트에 `DESIGN.md` 가 존재하면 **시각 P1 의 1 차 baseline** 으로 사용한다 (§2 Color Palette / §7 Do's & Don'ts).
|
|
290
|
-
- `DESIGN.md` 부재 시 기존 폴백을 사용 (WCAG 2.1 AA + `MASTER.md` + design-audit 기본 5 차원).
|
|
288
|
+
- `DESIGN.md` 부재 시 기존 폴백을 사용 (WCAG 2.1 AA + `MASTER.md` + design-review(audit 모드) 기본 5 차원).
|
|
291
289
|
- v1 범위: hex 컬러 드리프트만 P1 후보. spacing / font 드리프트는 Phase 2+ 에서 추가.
|
|
292
290
|
- 안티패턴 검출(⑧) 은 `DESIGN.md §7` 의 "DON'T" 항목을 우선 규칙으로 사용한다.
|
|
293
291
|
|
|
294
292
|
**findings 통합**: ⑥⑦⑧ findings를 기존 findings[]와 병합 → P1/P2/P3 통합 정렬
|
|
295
293
|
|
|
296
|
-
**⑦ Critical finding 에스컬레이션**:
|
|
294
|
+
**⑦ Critical finding 에스컬레이션**: design-reviewer(접근성)의 P1 finding은 Review Debate(Phase 4.5)에 자동 포함
|
|
297
295
|
|
|
298
296
|
### Phase 2.7: Boundary Mismatch Detection (Integration Coherence)
|
|
299
297
|
|
|
@@ -362,36 +360,36 @@ P3 NICE-TO-HAVE (Enhancement) - N issues
|
|
|
362
360
|
4. [STYLE] Consider extracting helper function
|
|
363
361
|
```
|
|
364
362
|
|
|
365
|
-
### Phase 4.5:
|
|
363
|
+
### Phase 4.5: Review Debate (parallel native subagents)
|
|
366
364
|
|
|
367
|
-
>
|
|
368
|
-
>
|
|
365
|
+
> P1/P2 findings 를 검증하기 위해 네이티브 서브에이전트를 병렬로 스폰한다 —
|
|
366
|
+
> `security-reviewer` + `code-reviewer` 인스턴스(서로 다른 focus)가 각 finding 을 교차 검증(validate / upgrade / downgrade / remove)한다.
|
|
369
367
|
|
|
370
368
|
**토론 결과 예시:**
|
|
371
369
|
|
|
372
370
|
```
|
|
373
371
|
🤝 REVIEW DEBATE RESULTS
|
|
374
372
|
|
|
375
|
-
|
|
373
|
+
Consensus (4 parallel reviewers):
|
|
376
374
|
|
|
377
375
|
✅ Validated P1 (unanimous):
|
|
378
376
|
1. [SECURITY] SQL Injection — 4/4 agree critical
|
|
379
377
|
|
|
380
378
|
⬆️ Upgraded P2→P1 (debate result):
|
|
381
|
-
2. [PERF] Unbounded query —
|
|
382
|
-
cascading failure risk under load →
|
|
379
|
+
2. [PERF] Unbounded query — code-reviewer (focus: architecture) pointed out
|
|
380
|
+
cascading failure risk under load → agreed P1
|
|
383
381
|
|
|
384
382
|
⬇️ Downgraded P1→P2 (debate result):
|
|
385
|
-
3. [SECURITY] CSRF on read-only endpoint —
|
|
386
|
-
noted endpoint has no side effects →
|
|
383
|
+
3. [SECURITY] CSRF on read-only endpoint — code-reviewer (focus: complexity)
|
|
384
|
+
noted endpoint has no side effects → agreed P2
|
|
387
385
|
|
|
388
386
|
❌ Removed (false positive):
|
|
389
|
-
4. [ARCH] "Circular dependency" —
|
|
387
|
+
4. [ARCH] "Circular dependency" — code-reviewer (focus: architecture) confirmed
|
|
390
388
|
this is intentional bi-directional reference, not a cycle
|
|
391
389
|
|
|
392
|
-
🆕 New findings (
|
|
390
|
+
🆕 New findings (cross-review discussion):
|
|
393
391
|
5. [DATA] Race condition in concurrent updates — emerged from
|
|
394
|
-
security + performance
|
|
392
|
+
security + performance cross-review
|
|
395
393
|
```
|
|
396
394
|
|
|
397
395
|
### Phase 5: Auto-Fix (P1/P2)
|
|
@@ -452,7 +450,7 @@ Examples:
|
|
|
452
450
|
CODE REVIEW SUMMARY
|
|
453
451
|
PR #123: Add user authentication
|
|
454
452
|
|
|
455
|
-
Reviewers:
|
|
453
|
+
Reviewers: security-reviewer + 8 code-reviewer instances (per-focus) + 3 design-reviewer instances (UI)
|
|
456
454
|
⏱️ Started: {start_time}
|
|
457
455
|
⏱️ Completed: {getCurrentTime 결과}
|
|
458
456
|
|
|
@@ -519,8 +517,6 @@ node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/tools/index
|
|
|
519
517
|
|------|---------|-------------|
|
|
520
518
|
| `validateCodeQuality` | Code quality check | Overall code quality scan |
|
|
521
519
|
| `analyzeComplexity` | Complexity metrics | Check function complexity |
|
|
522
|
-
| `findSymbol` | Find definitions | Locate implementations |
|
|
523
|
-
| `findReferences` | Find all usages | Track symbol usage |
|
|
524
520
|
| `saveMemory` | Save findings | Store important review findings |
|
|
525
521
|
|
|
526
522
|
### Example Tool Usage in Review
|