@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
|
@@ -1,579 +1,82 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: vibe.spec
|
|
3
|
-
description:
|
|
4
|
-
argument-hint: "(선택) feature name,
|
|
3
|
+
description: SPEC 진입점 — 자연어 요구사항(+첨부)을 받아 단일 패스 SPEC 작성 → 1회 승인 → /vibe.run 핸드오프
|
|
4
|
+
argument-hint: "(선택) feature name, requirement, file path, or idea"
|
|
5
5
|
user-invocable: true
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# /vibe.spec
|
|
9
9
|
|
|
10
|
-
**
|
|
10
|
+
**SPEC 단계의 얇은 진입점.** 요구사항을 받아 `spec` 스킬(단일 패스)을 실행하고, SPEC 승인(유일한 의무 게이트) 후 `/vibe.run` 으로 넘긴다. interview → plan → spec → review 다단계 파이프라인은 폐지되었다 — 명확화 질문은 spec 패스 안에서 인라인으로, 리뷰는 셀프 리뷰 1회로 흡수됐다.
|
|
11
11
|
|
|
12
12
|
## Usage
|
|
13
13
|
|
|
14
14
|
```
|
|
15
|
-
/vibe.spec
|
|
16
|
-
/vibe.spec "패럴랙스 웹사이트"
|
|
17
|
-
/vibe.spec "
|
|
18
|
-
/vibe.spec
|
|
19
|
-
/vibe.spec "
|
|
20
|
-
/vibe.spec + 📎 첨부 # 첨부 기반 시작
|
|
21
|
-
/vibe.spec "feature-name" ultrawork # 중단 게이트 없이 자동 전 흐름 실행
|
|
15
|
+
/vibe.spec # 빈 시작 — Smart Resume 또는 "무엇을 만들까요?"
|
|
16
|
+
/vibe.spec "패럴랙스 웹사이트" # 아이디어/요구사항으로 시작
|
|
17
|
+
/vibe.spec "docs/prd.md" # 외부 PRD/아이디어 파일 입력
|
|
18
|
+
/vibe.spec + 📎 첨부 # 첨부 기반 시작
|
|
19
|
+
/vibe.spec "feature-name" # 기존 feature 재개
|
|
22
20
|
```
|
|
23
21
|
|
|
24
|
-
## Philosophy
|
|
25
|
-
|
|
26
|
-
> **사용자는 "무엇을 만들지"만 말하면 된다. 어떤 스킬을 언제 부를지는 vibe가 결정한다.**
|
|
27
|
-
|
|
28
|
-
- **단일 진입점**: `/vibe.spec` 하나로 전체 워크플로 시작. 다른 `/vibe.*` 커맨드 이름 외울 필요 없음.
|
|
29
|
-
- **Smart resume**: 기존 interview/plan/spec 파일 존재 여부로 어느 단계부터 시작할지 자동 판단.
|
|
30
|
-
- **자동 체이닝**: 스킬 `chain-next` 메타데이터 따라 interview → plan → spec → spec-review 진행.
|
|
31
|
-
- **분기 판단**: 기획서의 `type` 필드로 UI 트랙/로직 트랙 여부 결정.
|
|
32
|
-
- **사용자 제어**: 각 단계 사이에 사용자 확인 지점(stop gate) 제공 (ultrawork 모드는 스킵).
|
|
33
|
-
|
|
34
22
|
## Flow
|
|
35
23
|
|
|
36
24
|
```
|
|
37
25
|
/vibe.spec ["input"?]
|
|
38
26
|
↓
|
|
39
|
-
|
|
40
|
-
↓
|
|
41
|
-
Phase 0.5: Input 분석 + Smart resume 결정
|
|
42
|
-
- 첨부/파일/아이디어 감지
|
|
43
|
-
- 기존 .vibe/{interviews,plans,specs}/ 확인
|
|
44
|
-
- 시작 단계 결정: interview | plan | spec | review
|
|
45
|
-
↓
|
|
46
|
-
Phase 1: Interview (skill: interview)
|
|
47
|
-
- 조건: interview 파일 없음
|
|
48
|
-
- 사용자 "그만"까지 반복 인터뷰
|
|
49
|
-
- 출력: .vibe/interviews/{feature}.md
|
|
50
|
-
↓
|
|
51
|
-
[Stop Gate 1] — ultrawork 모드에서는 스킵
|
|
27
|
+
Input 분석 + Smart Resume
|
|
52
28
|
↓
|
|
53
|
-
|
|
54
|
-
- 조건: plan 파일 없음
|
|
55
|
-
- interview → 마크다운 기획서 정제
|
|
56
|
-
- 출력: .vibe/plans/{feature}.md
|
|
29
|
+
Load skill `spec` — 단일 패스: 컨텍스트 수집 → (필요시) 인라인 질문 → SPEC + Feature 작성 → 셀프 리뷰 1회
|
|
57
30
|
↓
|
|
58
|
-
|
|
59
|
-
기획서 type 읽고 경로 결정:
|
|
60
|
-
- website/webapp/mobile → UI + Logic 병렬
|
|
61
|
-
- api/library/feature-data → Logic만
|
|
31
|
+
SPEC 승인 (1회 — automationLevel: autonomous 면 생략)
|
|
62
32
|
↓
|
|
63
|
-
Phase 3: SPEC 작성 (skill: spec)
|
|
64
|
-
- PTCF 구조 SPEC 문서 + Feature(BDD) 파일
|
|
65
|
-
- Parallel research (GPT/Antigravity/Claude agents)
|
|
66
|
-
- Large scope 자동 분할
|
|
67
|
-
- Ambiguity scan + 품질 게이트(100점, 수렴까지 루프)
|
|
68
|
-
- 출력: .vibe/specs/{feature}.md + .vibe/features/{feature}.feature
|
|
69
|
-
↓
|
|
70
|
-
Phase 4: SPEC Review (skill: spec-review)
|
|
71
|
-
- Race Review (GPT + Antigravity, 라운드 수 캡 없음, 수렴까지 루프)
|
|
72
|
-
- (옵션) Codex adversarial review
|
|
73
|
-
- 사용자 최종 체크포인트
|
|
74
|
-
↓
|
|
75
|
-
Phase 5a: Logic Track → /vibe.run
|
|
76
|
-
Phase 5b: UI Track (병렬, UI 프로젝트만) → /vibe.figma
|
|
77
|
-
↓
|
|
78
|
-
Phase 6: Verify (/vibe.verify)
|
|
79
|
-
Phase 7: Trace (/vibe.trace)
|
|
80
|
-
↓
|
|
81
|
-
Done
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
## Rules Reference
|
|
85
|
-
|
|
86
|
-
**`~/.claude/vibe/rules/` (global) 준수:**
|
|
87
|
-
|
|
88
|
-
- `core/development-philosophy.md`
|
|
89
|
-
- `core/quick-start.md` — Korean first
|
|
90
|
-
- `core/communication-guide.md`
|
|
91
|
-
|
|
92
|
-
## Process
|
|
93
|
-
|
|
94
|
-
> **⏱️ Timer**: 시작 시 `getCurrentTime` 호출, `{start_time}`로 기록.
|
|
95
|
-
|
|
96
|
-
### Phase 0: Git Branch Setup (MANDATORY)
|
|
97
|
-
|
|
98
|
-
```bash
|
|
99
|
-
git branch --show-current
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
| 현재 | 행동 |
|
|
103
|
-
|-----|-----|
|
|
104
|
-
| `main`/`master` | 임시 이름으로 `git checkout -b vibe/tmp` (이후 feature 이름 확정되면 리네임) |
|
|
105
|
-
| `feature/*`, `plan/*`, `interview/*`, `vibe/*` | 확인: "이 브랜치에서 계속?" |
|
|
106
|
-
| 기타 | 사용자 확인 |
|
|
107
|
-
|
|
108
|
-
### Phase 0.5: Input 분석 + Smart Resume
|
|
109
|
-
|
|
110
|
-
**입력 우선순위:**
|
|
111
|
-
|
|
112
|
-
```
|
|
113
|
-
1. 📎 첨부 파일 있음? → 첨부 분석 → feature name 추출
|
|
114
|
-
2. 인자가 파일 경로? → 파일 위치로 시작 단계 결정:
|
|
115
|
-
.vibe/interviews/*.md → Phase 2 (plan)
|
|
116
|
-
.vibe/plans/*.md → Phase 3 (spec)
|
|
117
|
-
.vibe/specs/*.md → Phase 4 (review)
|
|
118
|
-
기타 (.md/.txt/.pdf) → Phase 2 (plan, 외부 PRD 흡수)
|
|
119
|
-
3. 인자가 feature name? → .vibe/에서 기존 파일 검색
|
|
120
|
-
existing spec → "리뷰 재실행? 이어서? 재작성?" 물음
|
|
121
|
-
existing plan → Phase 3 (spec)
|
|
122
|
-
existing interview → Phase 2 (plan)
|
|
123
|
-
아무것도 없음 → Phase 1 (interview)
|
|
124
|
-
4. 인자 없음 → Smart Resume Fallback 알고리즘 실행 (아래 참조)
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
#### Smart Resume Fallback (인자 없는 `/vibe.spec` 호출 시)
|
|
128
|
-
|
|
129
|
-
**목적**: feature 이름을 기억하지 못해도 진행 중 작업을 자동 발견해서 이어서 진행할 수 있게 한다.
|
|
130
|
-
|
|
131
|
-
```
|
|
132
|
-
알고리즘:
|
|
133
|
-
|
|
134
|
-
Step 1) .vibe/.last-feature 확인 (pointer 파일)
|
|
135
|
-
- 파일 없음 → Step 2로
|
|
136
|
-
- 존재 → 해당 feature의 상태 요약 출력 + 확인 질문:
|
|
137
|
-
"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
138
|
-
🔄 마지막 작업: {feature-name}
|
|
139
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
140
|
-
✅ interview: .vibe/interviews/{feature}.md (status: complete, N일 전)
|
|
141
|
-
✅ plan: .vibe/plans/{feature}.md (N일 전)
|
|
142
|
-
❌ spec: 없음
|
|
143
|
-
→ 다음 단계: Phase 3 (spec 스킬 — SPEC 작성)
|
|
144
|
-
|
|
145
|
-
이어서 진행할까요?
|
|
146
|
-
Enter / yes → 이어서 진행
|
|
147
|
-
list → 다른 진행 중 작업 목록 보기
|
|
148
|
-
new → 새 아이디어로 시작
|
|
149
|
-
abort → 종료"
|
|
150
|
-
|
|
151
|
-
- yes → Phase 0.5의 인자 분석 경로 3번 (feature name)으로 진입
|
|
152
|
-
- list → Step 2로
|
|
153
|
-
- new → Step 3으로
|
|
154
|
-
- abort → 종료
|
|
155
|
-
|
|
156
|
-
Step 2) 진행 중 작업 목록 표시 (.vibe/ 디렉토리 스캔)
|
|
157
|
-
수집:
|
|
158
|
-
features = {} (feature name → {hasInterview, hasPlan, hasSpec, mtime})
|
|
159
|
-
for each file in .vibe/interviews/*.md:
|
|
160
|
-
feature = basename without .md
|
|
161
|
-
features[feature].hasInterview = true
|
|
162
|
-
features[feature].interviewMtime = file.mtime
|
|
163
|
-
features[feature].interviewStatus = frontmatter의 status (complete/partial)
|
|
164
|
-
동일하게 plans/*.md, specs/*.md 스캔
|
|
165
|
-
|
|
166
|
-
정렬: 가장 최근 작업 (max mtime) 순
|
|
167
|
-
최대 10개까지 표시
|
|
168
|
-
|
|
169
|
-
진행 중 작업 0개 → Step 3으로
|
|
170
|
-
1개 이상 → 목록 출력 + 선택 질문:
|
|
171
|
-
"━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
172
|
-
🔍 진행 중인 작업
|
|
173
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
174
|
-
|
|
175
|
-
1. bean-landing [interview: partial] 2일 전
|
|
176
|
-
2. todo-app [plan: complete] 어제
|
|
177
|
-
3. payment-api [spec: complete] 방금 전
|
|
178
|
-
─────────────────────────────────────────────
|
|
179
|
-
n. ➕ 새로 시작
|
|
180
|
-
a. 종료
|
|
181
|
-
|
|
182
|
-
선택 번호 또는 feature 이름을 입력하세요:"
|
|
183
|
-
|
|
184
|
-
사용자 응답 처리:
|
|
185
|
-
- 숫자 (1~N) → 해당 feature 선택 → 인자 분석 경로 3번으로
|
|
186
|
-
- 정확한 feature 이름 → 인자 분석 경로 3번으로
|
|
187
|
-
- "n" 또는 "new" → Step 3으로
|
|
188
|
-
- "a" 또는 "abort" → 종료
|
|
189
|
-
- 자유 텍스트 (매칭 없음) → "{입력}은 기존 feature가 아닙니다. 새로 시작할까요? (y/n)" 확인
|
|
190
|
-
|
|
191
|
-
Step 3) 빈 시작 (기존 동작)
|
|
192
|
-
"👋 무엇을 만들고 싶으신가요?" 질문 → Phase 1 (interview)
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
#### `.last-feature` 포인터 파일 갱신 규칙
|
|
196
|
-
|
|
197
|
-
```
|
|
198
|
-
경로: .vibe/.last-feature
|
|
199
|
-
형식: 한 줄, feature name만 저장
|
|
200
|
-
예: "bean-landing\n"
|
|
201
|
-
|
|
202
|
-
⚠ 이 파일은 **개인 작업 포인터**이므로 git에 커밋하지 않는다.
|
|
203
|
-
`.gitignore` 에 `.vibe/.last-feature` 엔트리 필수.
|
|
204
|
-
|
|
205
|
-
갱신 시점:
|
|
206
|
-
- Phase 1 (interview) 진입 시 → feature name 결정되면 즉시 기록
|
|
207
|
-
- Phase 2 (plan) 진입 시 → 기록 (이미 맞으면 no-op)
|
|
208
|
-
- Phase 3 (spec) 진입 시 → 기록
|
|
209
|
-
- Phase 4 (review) 진입 시 → 기록
|
|
210
|
-
|
|
211
|
-
즉, 어느 Phase에서 멈추든 다음 /vibe.spec 호출 시 이 feature가 1순위로 제안된다.
|
|
212
|
-
|
|
213
|
-
삭제 시점:
|
|
214
|
-
- Phase 7 (trace) 완료 시 → 파일 삭제 (워크플로 완주)
|
|
215
|
-
- 사용자가 명시적으로 종료/abort 선택 시 → 삭제하지 않음 (재개 가능하게)
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
**출력 예시:**
|
|
219
|
-
|
|
220
|
-
```
|
|
221
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
222
|
-
🔍 Input 분석
|
|
223
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
224
|
-
|
|
225
|
-
입력: "패럴랙스 웹사이트"
|
|
226
|
-
분류: 신규 아이디어
|
|
227
|
-
기존 파일: 없음
|
|
228
|
-
|
|
229
|
-
→ 시작 단계: Phase 1 (interview)
|
|
230
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
### Phase 1: Interview (조건부)
|
|
234
|
-
|
|
235
|
-
**진입 조건:** interview 파일이 아직 없음
|
|
236
|
-
|
|
237
|
-
**진입 방식:**
|
|
238
|
-
|
|
239
|
-
1. **인자 있음** (`/vibe.spec "아이디어"`)
|
|
240
|
-
→ `interview` 스킬 로드 + 아이디어 전달
|
|
241
|
-
|
|
242
|
-
2. **인자 없음** (`/vibe.spec`)
|
|
243
|
-
→ **Smart Resume Fallback 먼저** (Phase 0.5 참조):
|
|
244
|
-
- `.last-feature` 있고 사용자가 "이어서" 선택 → 해당 feature로 진입 (이 Phase 1 건너뛸 수 있음)
|
|
245
|
-
- 진행 중 작업 목록에서 선택 → 해당 feature로 진입
|
|
246
|
-
- "new" 선택 or 진행 중 작업 없음 → 아래 질문으로 빈 시작
|
|
247
|
-
→ 빈 시작 질문:
|
|
248
|
-
```
|
|
249
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
250
|
-
👋 무엇을 만들고 싶으신가요?
|
|
251
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
252
|
-
|
|
253
|
-
예:
|
|
254
|
-
- "패럴랙스 웹사이트"
|
|
255
|
-
- "할 일 관리 앱"
|
|
256
|
-
- "Stripe 결제 연동 API"
|
|
257
|
-
- 또는 자유롭게 설명
|
|
258
|
-
|
|
259
|
-
(파일/이미지 첨부도 가능)
|
|
260
|
-
```
|
|
261
|
-
→ 사용자 응답 → `interview` 스킬 로드
|
|
262
|
-
|
|
263
|
-
**스킬 로드:**
|
|
264
|
-
|
|
265
|
-
```
|
|
266
|
-
Load skill `interview` with input: {user_idea}
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
> **`.last-feature` 갱신**: interview 스킬이 feature name을 확정하는 즉시 `.vibe/.last-feature` 에 한 줄로 기록. 이후 Phase 2/3/4 진입 시에도 동일 기록 유지 (값이 같으면 no-op).
|
|
270
|
-
|
|
271
|
-
`interview` 스킬이 자체적으로:
|
|
272
|
-
- 프로젝트 타입 감지 (website/webapp/mobile/api/library/feature)
|
|
273
|
-
- 타입별 체크리스트 로드 (`skills/interview/checklists/{type}.md`)
|
|
274
|
-
- 반복 인터뷰 실행 (사용자 "그만"까지)
|
|
275
|
-
- `.vibe/interviews/{feature-name}.md` 저장
|
|
276
|
-
|
|
277
|
-
**Stop Gate 1**: Interview 완료 후 (ultrawork 모드 스킵)
|
|
278
|
-
|
|
279
|
-
```
|
|
280
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
281
|
-
✅ Interview 완료
|
|
282
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
283
|
-
|
|
284
|
-
📄 .vibe/interviews/{feature}.md
|
|
285
|
-
Required: N/M | Optional: K/L | Discovered: X
|
|
286
|
-
|
|
287
|
-
다음 단계: 기획서 작성
|
|
288
|
-
1. 계속 진행 (기본)
|
|
289
|
-
2. Interview만 저장하고 종료
|
|
290
|
-
3. Interview 수정 후 다시 (interview 재실행)
|
|
291
|
-
|
|
292
|
-
Enter → 계속
|
|
293
|
-
```
|
|
294
|
-
|
|
295
|
-
### Phase 2: Plan (조건부)
|
|
296
|
-
|
|
297
|
-
**진입 조건:** plan 파일이 아직 없음
|
|
298
|
-
|
|
299
|
-
```
|
|
300
|
-
Load skill `plan` with input: .vibe/interviews/{feature}.md
|
|
301
|
-
```
|
|
302
|
-
|
|
303
|
-
`plan` 스킬이 자체적으로:
|
|
304
|
-
- 템플릿 로드 (`~/.claude/vibe/templates/plan-template.md`)
|
|
305
|
-
- Interview 섹션별 정제
|
|
306
|
-
- UI 섹션 조건부 포함 (type 기반)
|
|
307
|
-
- `.vibe/plans/{feature}.md` 저장
|
|
308
|
-
|
|
309
|
-
**Stop Gate 2**: 기획서 완료 후 + 분기 판단 (ultrawork 모드 스킵)
|
|
310
|
-
|
|
311
|
-
```
|
|
312
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
313
|
-
✅ 기획서 완성
|
|
314
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
315
|
-
|
|
316
|
-
📄 .vibe/plans/{feature}.md
|
|
317
|
-
Type: {type}
|
|
318
|
-
|
|
319
|
-
{type ∈ UI}:
|
|
320
|
-
자동 경로: SPEC 작성 → Review → Logic Track + UI Track 병렬 실행
|
|
321
|
-
1. 계속 (권장)
|
|
322
|
-
2. Logic Track만 (SPEC만)
|
|
323
|
-
3. UI Track만 (/vibe.figma 바로)
|
|
324
|
-
4. 여기서 종료
|
|
325
|
-
|
|
326
|
-
{type ∈ non-UI}:
|
|
327
|
-
자동 경로: SPEC 작성 → Review → Logic Track
|
|
328
|
-
1. 계속 (권장)
|
|
329
|
-
2. 여기서 종료
|
|
330
|
-
|
|
331
|
-
Enter → 계속
|
|
332
|
-
```
|
|
333
|
-
|
|
334
|
-
### Phase 3: SPEC 작성
|
|
335
|
-
|
|
336
|
-
**진입 조건:** spec 파일이 아직 없음 (또는 재작성 요청)
|
|
337
|
-
|
|
338
|
-
```
|
|
339
|
-
Load skill `spec` with input: .vibe/plans/{feature}.md
|
|
340
|
-
```
|
|
341
|
-
|
|
342
|
-
`spec` 스킬이 PTCF 구조 SPEC 문서 + Feature(BDD) 파일 생성.
|
|
343
|
-
|
|
344
|
-
**핵심 단계** (상세는 `skills/spec/SKILL.md` 참조):
|
|
345
|
-
|
|
346
|
-
1. Project analysis (explorer agent)
|
|
347
|
-
2. config.json references 로드
|
|
348
|
-
3. Parallel research (GPT + Antigravity + Claude agents, 8개 병렬)
|
|
349
|
-
4. UI/UX Design Intelligence (UI 키워드 시 자동)
|
|
350
|
-
5. PTCF SPEC 작성 (Large scope 자동 분할)
|
|
351
|
-
6. Feature file (BDD) 생성
|
|
352
|
-
7. Ambiguity scan
|
|
353
|
-
8. Quality gate (100점, 수렴까지 루프)
|
|
354
|
-
|
|
355
|
-
**출력:**
|
|
356
|
-
|
|
357
|
-
- `.vibe/specs/{feature-name}.md` (또는 split folder)
|
|
358
|
-
- `.vibe/features/{feature-name}.feature` (또는 split folder)
|
|
359
|
-
|
|
360
|
-
### Phase 4: SPEC Review
|
|
361
|
-
|
|
362
|
-
```
|
|
363
|
-
Load skill `spec-review` with feature: {feature-name}
|
|
364
|
-
```
|
|
365
|
-
|
|
366
|
-
`spec-review` 스킬이 Race Review + 품질 검증 + 사용자 체크포인트 실행.
|
|
367
|
-
|
|
368
|
-
**핵심 단계** (상세는 `skills/spec-review/SKILL.md` 참조):
|
|
369
|
-
|
|
370
|
-
1. SPEC/Feature 파일 로드 (single/split 자동 감지)
|
|
371
|
-
2. Quality Validation (100점 게이트, 수렴까지 auto-fix 루프)
|
|
372
|
-
3. Race Review (GPT + Antigravity parallel, 라운드 수 캡 없음, P1=0 + 수렴 시 종료)
|
|
373
|
-
4. (옵션) Codex adversarial review
|
|
374
|
-
5. Review Debate Team (2+ P1/P2 이슈 시)
|
|
375
|
-
6. 사용자 최종 체크포인트
|
|
376
|
-
|
|
377
|
-
### Phase 4.5: Contract Extract (auto, only for features with an API)
|
|
378
|
-
|
|
379
|
-
```
|
|
380
|
-
Load skill `contract` with: extract "{feature-name}"
|
|
381
|
-
```
|
|
382
|
-
|
|
383
|
-
If the SPEC has a `## API` / `## Endpoints` / `## Interface` section, extract the contract to `.vibe/contracts/{feature-name}.md`. If the section is absent, exit cleanly (not every feature has an API).
|
|
384
|
-
|
|
385
|
-
The contract is referenced during Phase 5a implementation, and used by `/vibe.verify` for drift detection.
|
|
386
|
-
|
|
387
|
-
### Phase 5a: Logic Track
|
|
388
|
-
|
|
389
|
-
```
|
|
390
33
|
/vibe.run "{feature-name}"
|
|
391
34
|
```
|
|
392
35
|
|
|
393
|
-
|
|
394
|
-
- `/vibe.regress list --feature {feature-name}` — warn if any open regressions exist
|
|
395
|
-
- `.vibe/contracts/{feature-name}.md` — load if present, use as implementation guide
|
|
396
|
-
|
|
397
|
-
### Phase 5b: UI Track (type ∈ {website, webapp, mobile}일 때만)
|
|
398
|
-
|
|
399
|
-
**5a와 병렬 실행** (또는 순차 — 사용자 선택):
|
|
36
|
+
## Input 분석 + Smart Resume
|
|
400
37
|
|
|
401
38
|
```
|
|
402
|
-
|
|
39
|
+
1. 📎 첨부 있음 → 첨부를 spec 입력으로 전달
|
|
40
|
+
2. 인자가 파일 경로 →
|
|
41
|
+
.vibe/specs/*.md → 기존 SPEC: "승인 재확인? 재작성? /vibe.run 진행?" 질문
|
|
42
|
+
기타 (.md/.txt/.pdf) → 외부 PRD 로 spec 입력에 병합
|
|
43
|
+
3. 인자가 feature name → .vibe/ 검색:
|
|
44
|
+
spec 존재 → "재작성? 이어서 /vibe.run?" 질문
|
|
45
|
+
spec 없음 → spec 패스 시작 (레거시 아티팩트가 있으면 입력으로)
|
|
46
|
+
4. 인자 없음 → .vibe/.last-feature 확인 → 있으면 "이어서 진행?" 제안,
|
|
47
|
+
없으면 .vibe/specs/ 스캔해 진행 중 목록 제시, 그것도 없으면
|
|
48
|
+
"👋 무엇을 만들고 싶으신가요?" 로 빈 시작
|
|
403
49
|
```
|
|
404
50
|
|
|
405
|
-
|
|
51
|
+
### 레거시 아티팩트 호환 (구버전 .vibe/interviews/, .vibe/plans/)
|
|
406
52
|
|
|
407
|
-
|
|
408
|
-
- 기획서의 §7 Look & Feel, §8 레이아웃, §9 반응형 섹션을 Phase 1 스토리보드 입력으로 사용
|
|
53
|
+
구버전 vibe 가 남긴 `.vibe/interviews/{feature}.md`, `.vibe/plans/{feature}.md` 가 존재할 수 있다:
|
|
409
54
|
|
|
410
|
-
|
|
55
|
+
- **존재하면**: spec 패스의 **입력 컨텍스트**로 읽어 활용한다 (이미 답한 질문을 다시 묻지 않게).
|
|
56
|
+
- **절대 요구하거나 재생성하지 않는다**: 이 파일들의 부재는 결함이 아니라 정상 상태다. interview/plan 스킬은 더 이상 존재하지 않는다.
|
|
411
57
|
|
|
412
|
-
|
|
413
|
-
/vibe.verify "{feature-name}"
|
|
414
|
-
```
|
|
58
|
+
### `.last-feature` 포인터
|
|
415
59
|
|
|
416
|
-
|
|
60
|
+
- spec 패스에서 feature 이름 확정 시 `.vibe/.last-feature` 에 한 줄 기록 (spec 스킬이 수행).
|
|
61
|
+
- 개인 작업 포인터이므로 git 커밋 금지 (`.gitignore` 에 `.vibe/.last-feature`).
|
|
62
|
+
- 워크플로 완주(verify 통과) 시 삭제.
|
|
417
63
|
|
|
418
|
-
|
|
64
|
+
## 승인과 루프
|
|
419
65
|
|
|
420
|
-
|
|
421
|
-
/vibe.trace "{feature-name}"
|
|
422
|
-
```
|
|
423
|
-
|
|
424
|
-
SPEC ↔ 구현 추적.
|
|
425
|
-
|
|
426
|
-
> **Phase 7 완료 시**: `.vibe/.last-feature` 삭제 (워크플로 완주 — 다음 `/vibe.spec` 호출은 빈 시작 또는 진행 중 작업 목록에서 시작).
|
|
427
|
-
|
|
428
|
-
## ultrawork 모드
|
|
429
|
-
|
|
430
|
-
`ultrawork` (또는 `ulw`)가 인자에 포함되면:
|
|
431
|
-
|
|
432
|
-
- **모든 Stop Gate 스킵**
|
|
433
|
-
- interview → plan → spec → review → run → (figma 병렬) 전체 자동 실행
|
|
434
|
-
- askUser 체크포인트 스킵, 기본값 사용
|
|
435
|
-
- 수동 개입 없이 완주
|
|
436
|
-
|
|
437
|
-
```
|
|
438
|
-
/vibe.spec "패럴랙스 웹사이트" ultrawork
|
|
439
|
-
```
|
|
66
|
+
SPEC 승인이 `vibe/rules/loop-contract.md` 가 정의하는 **유일한 의무적 사람 개입**이다. 승인 후에는 ANCHOR→ACT→JUDGE→RECORD 루프가 게이트 통과까지 자동 반복한다 (`/vibe.run` → `/vibe.verify`). 별도의 파이프라인 승인·단계별 stop gate 는 없다.
|
|
440
67
|
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
### 예시 1: 신규 프로젝트
|
|
444
|
-
```
|
|
445
|
-
User: /vibe.spec "원두 브랜드 랜딩"
|
|
446
|
-
|
|
447
|
-
Claude: 🔍 Input 분석
|
|
448
|
-
입력: "원두 브랜드 랜딩"
|
|
449
|
-
분류: 신규 아이디어
|
|
450
|
-
기존 파일: 없음
|
|
451
|
-
→ 시작 단계: Phase 1 (interview)
|
|
452
|
-
|
|
453
|
-
[interview 스킬 로드]
|
|
454
|
-
Type: website 감지 → checklists/website.md 로드
|
|
455
|
-
...
|
|
456
|
-
```
|
|
457
|
-
|
|
458
|
-
### 예시 2: 기획서에서 시작
|
|
459
|
-
```
|
|
460
|
-
User: /vibe.spec ".vibe/plans/bean-landing.md"
|
|
461
|
-
|
|
462
|
-
Claude: 🔍 Input 분석
|
|
463
|
-
입력: plan 파일 경로
|
|
464
|
-
분류: 기존 기획서
|
|
465
|
-
Feature: bean-landing
|
|
466
|
-
→ 시작 단계: Phase 3 (spec)
|
|
467
|
-
|
|
468
|
-
[spec 스킬 로드]
|
|
469
|
-
기획서 읽기 → research → PTCF 작성 ...
|
|
470
|
-
```
|
|
471
|
-
|
|
472
|
-
### 예시 3: 기존 feature 재개
|
|
473
|
-
```
|
|
474
|
-
User: /vibe.spec "bean-landing"
|
|
475
|
-
|
|
476
|
-
Claude: 🔍 Input 분석
|
|
477
|
-
입력: feature name
|
|
478
|
-
기존 파일 검색...
|
|
479
|
-
✅ interview: .vibe/interviews/bean-landing.md
|
|
480
|
-
✅ plan: .vibe/plans/bean-landing.md
|
|
481
|
-
❌ spec: 없음
|
|
482
|
-
→ 시작 단계: Phase 3 (spec)
|
|
483
|
-
|
|
484
|
-
[spec 스킬 로드]
|
|
485
|
-
...
|
|
486
|
-
```
|
|
487
|
-
|
|
488
|
-
### 예시 4: SPEC 리뷰 재실행
|
|
489
|
-
```
|
|
490
|
-
User: /vibe.spec "bean-landing"
|
|
491
|
-
|
|
492
|
-
Claude: 🔍 Input 분석
|
|
493
|
-
기존 파일:
|
|
494
|
-
✅ spec: .vibe/specs/bean-landing.md
|
|
495
|
-
✅ feature: .vibe/features/bean-landing.feature
|
|
496
|
-
|
|
497
|
-
이미 SPEC이 존재합니다. 어떻게 진행할까요?
|
|
498
|
-
1. SPEC 리뷰 (Phase 4: spec-review 스킬 로드)
|
|
499
|
-
2. /vibe.run 실행 (구현)
|
|
500
|
-
3. SPEC 재작성 (기존 백업 후 새로 작성)
|
|
501
|
-
4. 종료
|
|
502
|
-
```
|
|
503
|
-
|
|
504
|
-
### 예시 5: feature 이름을 잊고 인자 없이 호출 (Smart Resume Fallback)
|
|
505
|
-
```
|
|
506
|
-
User: /vibe.spec
|
|
507
|
-
|
|
508
|
-
Claude: (.last-feature 읽기 → "bean-landing" 발견)
|
|
509
|
-
|
|
510
|
-
🔄 마지막 작업: bean-landing
|
|
511
|
-
✅ interview: .vibe/interviews/bean-landing.md (status: partial, 2일 전)
|
|
512
|
-
❌ plan: 없음
|
|
513
|
-
❌ spec: 없음
|
|
514
|
-
→ 다음 단계: Phase 2 (plan — 기획서 작성)
|
|
515
|
-
|
|
516
|
-
이어서 진행할까요?
|
|
517
|
-
Enter / yes → 이어서 진행
|
|
518
|
-
list → 다른 진행 중 작업 목록 보기
|
|
519
|
-
new → 새 아이디어로 시작
|
|
520
|
-
abort → 종료
|
|
521
|
-
|
|
522
|
-
User: yes
|
|
523
|
-
|
|
524
|
-
Claude: [Phase 2 진입]
|
|
525
|
-
.last-feature = bean-landing
|
|
526
|
-
[plan 스킬 로드]
|
|
527
|
-
...
|
|
528
|
-
```
|
|
529
|
-
|
|
530
|
-
### 예시 6: 여러 feature 중 선택 (Fallback list 모드)
|
|
531
|
-
```
|
|
532
|
-
User: /vibe.spec
|
|
533
|
-
|
|
534
|
-
Claude: (.last-feature 없음 → 디렉토리 스캔)
|
|
535
|
-
|
|
536
|
-
🔍 진행 중인 작업
|
|
537
|
-
|
|
538
|
-
1. bean-landing [interview: partial] 2일 전
|
|
539
|
-
2. todo-app [plan: complete] 어제
|
|
540
|
-
3. payment-api [spec: complete] 방금 전
|
|
541
|
-
─────────────────────────────────────────────
|
|
542
|
-
n. ➕ 새로 시작
|
|
543
|
-
a. 종료
|
|
544
|
-
|
|
545
|
-
선택 번호 또는 feature 이름을 입력하세요:
|
|
546
|
-
|
|
547
|
-
User: 2
|
|
548
|
-
|
|
549
|
-
Claude: Feature: todo-app 선택
|
|
550
|
-
✅ plan 완성 → Phase 3 (spec) 진입
|
|
551
|
-
.last-feature = todo-app
|
|
552
|
-
...
|
|
553
|
-
```
|
|
554
|
-
|
|
555
|
-
## Rollback / Resume
|
|
556
|
-
|
|
557
|
-
- 각 Phase 종료 시 상태가 `.vibe/{interviews,plans,specs,features}/`에 저장됨
|
|
558
|
-
- **`.vibe/.last-feature` pointer**가 각 Phase 진입 시 갱신되어 "가장 최근에 작업한 feature" 추적 (Phase 7 완주 시 삭제)
|
|
559
|
-
- 중단 시 다시 `/vibe.spec`으로 돌아오면 Smart Resume Fallback 동작:
|
|
560
|
-
- 인자 있음 (`/vibe.spec "feature-name"` 또는 파일 경로) → 해당 feature의 가장 진행된 단계 다음으로 바로 진입
|
|
561
|
-
- 인자 없음 → `.last-feature` 우선 제안 → 거부하면 진행 중 작업 목록 제시 → 또 거부하면 빈 시작
|
|
562
|
-
- 수동 개입 필요시 스킬 직접 호출 가능 (`Load skill interview` 등)
|
|
68
|
+
- `automationLevel: autonomous` (`.vibe/config.json`) 또는 deprecated `ultrawork`/`ulw` 별칭 → SPEC 승인도 생략, 비대화형 완주.
|
|
69
|
+
- `--interactive` → 회전마다 확인 (과거 기본값).
|
|
563
70
|
|
|
564
71
|
## Next Step
|
|
565
72
|
|
|
566
73
|
```
|
|
567
|
-
#
|
|
568
|
-
/vibe.
|
|
569
|
-
|
|
570
|
-
# 중간 단계 재개
|
|
571
|
-
/vibe.spec "feature-name"
|
|
572
|
-
|
|
573
|
-
# ultrawork 자동 완주
|
|
574
|
-
/vibe.spec "feature-name" ultrawork
|
|
74
|
+
/vibe.run "{feature-name}" # 승인된 SPEC 구현 (spec 승인 직후 자동 제안)
|
|
75
|
+
/vibe.verify "{feature-name}" # Done Criteria 판정 → run-ledger 기록
|
|
575
76
|
```
|
|
576
77
|
|
|
78
|
+
trace(`/vibe.trace`)·contract(`/vibe.contract`) 는 사용자가 요청하거나 SPEC 에 API Contract 섹션이 있을 때만 체인한다.
|
|
79
|
+
|
|
577
80
|
---
|
|
578
81
|
|
|
579
82
|
ARGUMENTS: $ARGUMENTS
|
|
@@ -31,7 +31,7 @@ Collection of utility tools. Use with options.
|
|
|
31
31
|
|
|
32
32
|
## --ui (UI Preview)
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
Generate the UI preview directly in the main session (native capability — no dedicated agent).
|
|
35
35
|
|
|
36
36
|
Generate UI preview from description or design folder.
|
|
37
37
|
|
|
@@ -217,7 +217,7 @@ Fix TypeScript/build errors with minimal changes.
|
|
|
217
217
|
|
|
218
218
|
## --clean (Dead Code Removal)
|
|
219
219
|
|
|
220
|
-
|
|
220
|
+
Perform safe dead code removal directly (native capability — the `/simplify` skill covers reuse/simplification cleanups; this mode handles detection + removal with an audit trail).
|
|
221
221
|
|
|
222
222
|
Detect and remove unused code with audit trail.
|
|
223
223
|
|
|
@@ -280,7 +280,7 @@ docs/CODEMAPS/
|
|
|
280
280
|
|
|
281
281
|
## --compound (Solution Documentation)
|
|
282
282
|
|
|
283
|
-
|
|
283
|
+
Document the solved problem directly (native capability — no dedicated agent).
|
|
284
284
|
|
|
285
285
|
Document solved problems for knowledge accumulation.
|
|
286
286
|
|