@su-record/vibe 2.9.40 → 2.10.2
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 +28 -12
- package/README.en.md +2 -3
- package/README.md +33 -27
- package/agents/{teams/figma → figma}/figma-analyst.md +2 -2
- package/agents/research/{best-practices-agent.md → best-practices.md} +1 -1
- package/agents/research/{codebase-patterns-agent.md → codebase-patterns.md} +1 -1
- package/agents/research/{framework-docs-agent.md → framework-docs.md} +1 -1
- package/agents/research/{security-advisory-agent.md → security-advisory.md} +1 -1
- package/agents/teams/research-team.md +4 -4
- package/agents/teams/review-debate-team.md +2 -2
- package/agents/teams/security-team.md +4 -4
- package/dist/cli/auth.d.ts +0 -1
- package/dist/cli/auth.d.ts.map +1 -1
- package/dist/cli/auth.js +1 -18
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli/collaborator.d.ts +3 -3
- package/dist/cli/collaborator.js +4 -4
- package/dist/cli/collaborator.js.map +1 -1
- package/dist/cli/commands/info.d.ts.map +1 -1
- package/dist/cli/commands/info.js +0 -1
- package/dist/cli/commands/info.js.map +1 -1
- package/dist/cli/commands/init.d.ts +3 -4
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +15 -20
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/remove.d.ts.map +1 -1
- package/dist/cli/commands/remove.js +2 -7
- package/dist/cli/commands/remove.js.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +10 -10
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.js +1 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/postinstall/claude-agents.d.ts +3 -1
- package/dist/cli/postinstall/claude-agents.d.ts.map +1 -1
- package/dist/cli/postinstall/claude-agents.js +47 -9
- package/dist/cli/postinstall/claude-agents.js.map +1 -1
- package/dist/cli/postinstall/constants.d.ts +5 -0
- package/dist/cli/postinstall/constants.d.ts.map +1 -1
- package/dist/cli/postinstall/constants.js +165 -23
- package/dist/cli/postinstall/constants.js.map +1 -1
- package/dist/cli/postinstall/cursor-skills.js +2 -2
- package/dist/cli/postinstall/main.d.ts.map +1 -1
- package/dist/cli/postinstall/main.js +26 -24
- package/dist/cli/postinstall/main.js.map +1 -1
- package/dist/cli/setup/LegacyMigration.d.ts +3 -3
- package/dist/cli/setup/LegacyMigration.d.ts.map +1 -1
- package/dist/cli/setup/LegacyMigration.js +3 -5
- package/dist/cli/setup/LegacyMigration.js.map +1 -1
- package/dist/cli/setup/ProjectSetup.d.ts +18 -8
- package/dist/cli/setup/ProjectSetup.d.ts.map +1 -1
- package/dist/cli/setup/ProjectSetup.js +70 -19
- package/dist/cli/setup/ProjectSetup.js.map +1 -1
- package/dist/cli/setup.d.ts +1 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +1 -1
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/utils/cli-detector.d.ts +0 -7
- package/dist/cli/utils/cli-detector.d.ts.map +1 -1
- package/dist/cli/utils/cli-detector.js +0 -95
- package/dist/cli/utils/cli-detector.js.map +1 -1
- package/dist/cli/utils.d.ts +1 -1
- package/dist/cli/utils.d.ts.map +1 -1
- package/dist/cli/utils.js +1 -2
- package/dist/cli/utils.js.map +1 -1
- package/dist/infra/lib/OrchestrateWorkflow.js +1 -1
- package/dist/infra/lib/OrchestrateWorkflow.js.map +1 -1
- package/dist/infra/lib/memory/MemoryStorage.d.ts +1 -1
- package/dist/infra/lib/memory/MemoryStorage.d.ts.map +1 -1
- package/dist/infra/lib/memory/MemoryStorage.js +2 -3
- package/dist/infra/lib/memory/MemoryStorage.js.map +1 -1
- package/dist/infra/lib/telemetry/SkillTelemetry.test.js +4 -4
- package/dist/infra/lib/telemetry/SkillTelemetry.test.js.map +1 -1
- package/dist/infra/orchestrator/parallelResearch.js +4 -4
- package/dist/infra/orchestrator/parallelResearch.js.map +1 -1
- package/hooks/scripts/__tests__/pre-tool-guard.test.js +1 -1
- package/hooks/scripts/clone-extract.js +712 -0
- package/hooks/scripts/clone-refine.js +510 -0
- package/hooks/scripts/clone-to-scss.js +275 -0
- package/hooks/scripts/clone-validate.js +280 -0
- package/hooks/scripts/codex-notify.js +49 -0
- package/hooks/scripts/command-log.js +1 -1
- package/hooks/scripts/lib/dispatcher.js +2 -3
- package/hooks/scripts/lib/scope-from-spec.js +2 -4
- package/hooks/scripts/llm-orchestrate.js +2 -7
- package/hooks/scripts/prompt-dispatcher.js +3 -3
- package/hooks/scripts/step-counter.js +1 -1
- package/hooks/scripts/utils.js +5 -10
- package/package.json +2 -1
- package/skills/agents-md/SKILL.md +2 -0
- package/skills/arch-guard/SKILL.md +2 -0
- package/skills/brand-assets/SKILL.md +1 -0
- package/skills/capability-loop/SKILL.md +2 -0
- package/skills/characterization-test/SKILL.md +2 -0
- package/skills/chub-usage/SKILL.md +1 -0
- package/skills/claude-md-guide/SKILL.md +2 -0
- package/skills/clone/SKILL.md +361 -0
- package/skills/commerce-patterns/SKILL.md +1 -0
- package/skills/commit-push-pr/SKILL.md +1 -0
- package/skills/context7-usage/SKILL.md +1 -0
- package/skills/{vibe-contract → contract}/SKILL.md +7 -8
- package/skills/create-prd/SKILL.md +1 -0
- package/skills/design-audit/SKILL.md +1 -0
- package/skills/design-critique/SKILL.md +1 -0
- package/skills/design-distill/SKILL.md +1 -0
- package/skills/design-normalize/SKILL.md +1 -0
- package/skills/design-polish/SKILL.md +1 -0
- package/skills/design-teach/SKILL.md +2 -0
- package/skills/devlog/SKILL.md +1 -0
- package/skills/{vibe-docs → docs}/SKILL.md +8 -8
- package/skills/e2e-commerce/SKILL.md +1 -0
- package/skills/event-comms/SKILL.md +1 -0
- package/skills/event-ops/SKILL.md +1 -0
- package/skills/event-planning/SKILL.md +1 -0
- package/skills/exec-plan/SKILL.md +2 -0
- package/skills/{vibe-figma → figma}/SKILL.md +4 -3
- package/skills/{vibe-figma-convert → figma-convert}/SKILL.md +4 -3
- package/skills/{vibe-figma-extract → figma-extract}/SKILL.md +4 -3
- package/skills/git-worktree/SKILL.md +1 -0
- package/skills/handoff/SKILL.md +2 -0
- package/skills/{vibe-interview → interview}/SKILL.md +16 -16
- package/skills/parallel-research/SKILL.md +2 -0
- package/skills/{vibe-plan → plan}/SKILL.md +9 -9
- package/skills/prioritization-frameworks/SKILL.md +1 -0
- package/skills/priority-todos/SKILL.md +2 -0
- package/skills/{vibe-regress → regress}/SKILL.md +5 -6
- package/skills/rob-pike/SKILL.md +2 -0
- package/skills/seo-checklist/SKILL.md +1 -0
- package/skills/{vibe-spec → spec}/SKILL.md +14 -14
- package/skills/{vibe-spec-review → spec-review}/SKILL.md +8 -9
- package/skills/systematic-debugging/SKILL.md +2 -0
- package/skills/techdebt/SKILL.md +2 -0
- package/skills/{vibe-test → test}/SKILL.md +19 -19
- package/skills/tool-fallback/SKILL.md +1 -0
- package/skills/typescript-advanced-types/SKILL.md +1 -0
- package/skills/ui-ux-pro-max/SKILL.md +1 -0
- package/skills/user-personas/SKILL.md +1 -0
- package/skills/vercel-react-best-practices/SKILL.md +1 -0
- package/skills/vibe/SKILL.md +288 -0
- package/{commands/vibe.analyze.md → skills/vibe.analyze/SKILL.md} +2 -0
- package/skills/vibe.clone/SKILL.md +117 -0
- package/{commands/vibe.contract.md → skills/vibe.contract/SKILL.md} +3 -1
- package/{commands/vibe.docs.md → skills/vibe.docs/SKILL.md} +3 -1
- package/{commands/vibe.event.md → skills/vibe.event/SKILL.md} +2 -0
- package/{commands/vibe.figma.md → skills/vibe.figma/SKILL.md} +25 -23
- package/{commands/vibe.harness.md → skills/vibe.harness/SKILL.md} +2 -0
- package/{commands/vibe.reason.md → skills/vibe.reason/SKILL.md} +2 -0
- package/{commands/vibe.regress.md → skills/vibe.regress/SKILL.md} +5 -3
- package/{commands/vibe.review.md → skills/vibe.review/SKILL.md} +2 -0
- package/{commands/vibe.run.md → skills/vibe.run/SKILL.md} +5 -1
- package/{commands/vibe.scaffold.md → skills/vibe.scaffold/SKILL.md} +2 -0
- package/{commands/vibe.spec.md → skills/vibe.spec/SKILL.md} +36 -34
- package/{commands/vibe.test.md → skills/vibe.test/SKILL.md} +8 -6
- package/{commands/vibe.trace.md → skills/vibe.trace/SKILL.md} +7 -0
- package/{commands/vibe.utils.md → skills/vibe.utils/SKILL.md} +2 -0
- package/{commands/vibe.verify.md → skills/vibe.verify/SKILL.md} +4 -2
- package/skills/video-production/SKILL.md +1 -0
- package/vibe/rules/principles/dual-harness-doctrine.md +50 -0
- /package/agents/{teams/figma → figma}/figma-architect.md +0 -0
- /package/agents/{teams/figma → figma}/figma-auditor.md +0 -0
- /package/agents/{teams/figma → figma}/figma-builder.md +0 -0
- /package/skills/{vibe-docs → docs}/templates/architecture.md +0 -0
- /package/skills/{vibe-docs → docs}/templates/behavioral-principles.md +0 -0
- /package/skills/{vibe-docs → docs}/templates/readme.md +0 -0
- /package/skills/{vibe-docs → docs}/templates/release-notes.md +0 -0
- /package/skills/{vibe-figma → figma}/rubrics/extraction-checklist.md +0 -0
- /package/skills/{vibe-figma → figma}/templates/component-index.md +0 -0
- /package/skills/{vibe-figma → figma}/templates/component-spec.md +0 -0
- /package/skills/{vibe-figma → figma}/templates/figma-handoff.md +0 -0
- /package/skills/{vibe-figma → figma}/templates/remapped-tree.md +0 -0
- /package/skills/{vibe-figma-convert → figma-convert}/rubrics/conversion-rules.md +0 -0
- /package/skills/{vibe-figma-convert → figma-convert}/templates/component.md +0 -0
- /package/skills/{vibe-figma-extract → figma-extract}/rubrics/image-rules.md +0 -0
- /package/skills/{vibe-interview → interview}/checklists/api.md +0 -0
- /package/skills/{vibe-interview → interview}/checklists/feature.md +0 -0
- /package/skills/{vibe-interview → interview}/checklists/library.md +0 -0
- /package/skills/{vibe-interview → interview}/checklists/mobile.md +0 -0
- /package/skills/{vibe-interview → interview}/checklists/webapp.md +0 -0
- /package/skills/{vibe-interview → interview}/checklists/website.md +0 -0
- /package/skills/{vibe-regress → regress}/templates/bug.md +0 -0
- /package/skills/{vibe-regress → regress}/templates/test-jest.md +0 -0
- /package/skills/{vibe-regress → regress}/templates/test-vitest.md +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: design-distill
|
|
3
|
+
invocation: [auto]
|
|
3
4
|
tier: standard
|
|
4
5
|
description: "Remove unnecessary visual complexity — strip decorative clutter, apply progressive disclosure, simplify UI to essentials. Use when design-distill, simplify-ui, ui-simplify, strip-ui."
|
|
5
6
|
triggers: [design-distill, simplify-ui, ui-simplify, strip-ui]
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: design-normalize
|
|
3
|
+
invocation: [command, auto]
|
|
3
4
|
tier: standard
|
|
4
5
|
description: "Normalize hardcoded values to design system tokens — colors, typography, spacing, shadows aligned to MASTER.md. Use when design-normalize, design-system, token-align."
|
|
5
6
|
triggers: [design-normalize, design-system, token-align]
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: design-polish
|
|
3
|
+
invocation: [auto]
|
|
3
4
|
tier: standard
|
|
4
5
|
description: "Pre-ship final polish pass — pixel alignment, interaction states, micro-details check and auto-fix. Use when design-polish, ui-polish, final-pass, ship-ready."
|
|
5
6
|
triggers: [design-polish, ui-polish, final-pass, ship-ready]
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: design-teach
|
|
3
|
+
user-invocable: false
|
|
4
|
+
invocation: [command, auto]
|
|
3
5
|
tier: standard
|
|
4
6
|
description: "Gather and store project design context — target audience, brand personality, aesthetic direction, constraints. Used by other design-* skills. Use when design-teach, design-setup, design-context."
|
|
5
7
|
triggers: [design-teach, design-setup, design-context]
|
package/skills/devlog/SKILL.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: docs
|
|
3
|
+
description: 프로젝트 문서 생성 본체 — README / 아키텍처 / 사용자 가이드 / 릴리즈 노트.
|
|
4
|
+
when_to_use: /vibe.docs 진입점에서 체인 호출. 직접 호출 금지.
|
|
5
|
+
user-invocable: false
|
|
3
6
|
tier: standard
|
|
4
|
-
description: "Generate project documentation — README, architecture docs, user guide, release notes. Activates on docs, readme, documentation keywords."
|
|
5
|
-
triggers: [vibe-docs, docs, documentation, readme, release notes, architecture doc]
|
|
6
|
-
priority: 50
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# vibe.docs — Project Documentation Generator
|
|
@@ -106,13 +106,13 @@ graph TD
|
|
|
106
106
|
| CLI | File | Support |
|
|
107
107
|
|---|---|---|
|
|
108
108
|
| Claude Code | `CLAUDE.md` | 100% (Primary) |
|
|
109
|
-
|
|
|
109
|
+
| Codex | `AGENTS.md` | 100% (Primary) |
|
|
110
110
|
|
|
111
|
-
Gemini CLI /
|
|
111
|
+
Gemini CLI / Cursor are not supported — do not generate or check `GEMINI.md`.
|
|
112
112
|
|
|
113
113
|
**Source of truth:**
|
|
114
114
|
- **`CLAUDE.md` is the content SSOT.** Always edit it first; `AGENTS.md` is a regenerated derivative.
|
|
115
|
-
- Behavioral block: `skills/
|
|
115
|
+
- Behavioral block: `skills/docs/templates/behavioral-principles.md` (4 Karpathy principles, wrapped in `<!-- VIBE-BEHAVIORAL:START/END -->` markers).
|
|
116
116
|
|
|
117
117
|
**Procedure (applies to both creation and modification):**
|
|
118
118
|
|
|
@@ -120,7 +120,7 @@ Gemini CLI / Codex CLI / Cursor are not supported — do not generate or check `
|
|
|
120
120
|
2. **For `AGENTS.md`**:
|
|
121
121
|
- **If missing** → create by cloning `CLAUDE.md` + applying CLI substitution (below).
|
|
122
122
|
- **If exists** → regenerate from current `CLAUDE.md` + substitution, preserving user-specific additions outside the VIBE block.
|
|
123
|
-
3. **CLI substitution for `AGENTS.md`** (
|
|
123
|
+
3. **CLI substitution for `AGENTS.md`** (Codex): `Claude Code` → `Codex` · `~/.claude/` → `~/.codex/` · `.claude/` → `.codex/` · `CLAUDE.md` → `AGENTS.md`. `CLAUDE.md` itself gets no substitution.
|
|
124
124
|
4. **Validate every touched file (whether newly created or modified)** via the `claude-md-guide` → `agents-md` skill chain — see validation block below. **Never write or save without running this step.**
|
|
125
125
|
5. Report per file: created / updated / skipped / validation warnings.
|
|
126
126
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: e2e-commerce
|
|
3
|
+
invocation: [auto]
|
|
3
4
|
tier: core
|
|
4
5
|
description: "E2E test scenarios for commerce checkout and payment flows. Provides ready-made Playwright test templates for cart→checkout→payment→confirmation flows, including PG sandbox testing (Toss/Stripe), error scenarios (payment failure, timeout, stock exhaustion), and idempotency verification. Use when writing E2E tests for any e-commerce feature — checkout, payment, order status, or refund flows."
|
|
5
6
|
triggers: [e2e commerce, checkout test, payment test, order flow test]
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: event-comms
|
|
3
|
+
invocation: [auto]
|
|
3
4
|
tier: standard
|
|
4
5
|
description: "Event communication automation — SMS via Aligo, email via Gmail OAuth, SNS posts for LinkedIn/Threads. Handles templates, BCC rules, and confirmation protocol."
|
|
5
6
|
triggers: [sms, aligo, gmail, event email, event sms, 문자 발송, 메일 발송, SNS 홍보]
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: event-ops
|
|
3
|
+
invocation: [auto]
|
|
3
4
|
tier: standard
|
|
4
5
|
description: "Event operations — nametags, checklists, operational slides, Slido plans, image generation specs, settlement reports."
|
|
5
6
|
triggers: [nametag, checklist, event slide, slido, 이름표, 체크리스트, 운영 슬라이드, 정산]
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: event-planning
|
|
3
|
+
invocation: [auto]
|
|
3
4
|
tier: standard
|
|
4
5
|
description: "Community event automation — D-Day timeline, community patterns, proactive task execution. Auto-activates for event planning, meetup/webinar/conference management."
|
|
5
6
|
triggers: [event planning, meetup, webinar, conference, 행사, 밋업, 웨비나, D-Day, 이벤트 준비]
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: exec-plan
|
|
3
|
+
user-invocable: false
|
|
4
|
+
invocation: [auto, chain]
|
|
3
5
|
tier: core
|
|
4
6
|
description: "Convert SPEC into a self-contained execution plan that agents can run autonomously for hours. Use when a SPEC has 3+ phases, multiple files to change, or complex dependencies between tasks. Produces a plan with explicit file paths, interface extracts, and acceptance criteria so agents never need to 'figure out' context. Must use this skill when launching long-running autonomous work, parallelizing implementation across agents, or when user says 'execute this spec' or 'run this plan'."
|
|
5
7
|
triggers: [exec plan, execution plan, autonomous plan, self-contained plan, long-running]
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
3
|
-
description: Figma
|
|
4
|
-
|
|
2
|
+
name: figma
|
|
3
|
+
description: Figma → 코드 본체 — tree 기반 구조적 코드 생성.
|
|
4
|
+
when_to_use: /vibe.figma 진입점에서 체인 호출. 직접 호출 금지.
|
|
5
|
+
user-invocable: false
|
|
5
6
|
tier: standard
|
|
6
7
|
---
|
|
7
8
|
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
3
|
-
description: Figma tree →
|
|
4
|
-
|
|
2
|
+
name: figma-convert
|
|
3
|
+
description: Figma tree → 구조적 코드 변환 + 스크린샷 검증 본체.
|
|
4
|
+
when_to_use: figma 체인에서 호출. 직접 호출 금지.
|
|
5
|
+
user-invocable: false
|
|
5
6
|
tier: standard
|
|
6
7
|
---
|
|
7
8
|
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
3
|
-
description:
|
|
4
|
-
|
|
2
|
+
name: figma-extract
|
|
3
|
+
description: Figma REST API로 코드 생성 데이터 수집 — tree(주) + 이미지 + 스크린샷(검증).
|
|
4
|
+
when_to_use: figma 체인에서 호출. 직접 호출 금지.
|
|
5
|
+
user-invocable: false
|
|
5
6
|
tier: standard
|
|
6
7
|
---
|
|
7
8
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: git-worktree
|
|
3
|
+
invocation: [auto]
|
|
3
4
|
tier: optional
|
|
4
5
|
description: "Git Worktree for parallel branch work. Auto-activates for PR review, hotfix, parallel testing, or working on multiple branches simultaneously."
|
|
5
6
|
triggers: [worktree, PR review, hotfix, parallel branch, multiple branches]
|
package/skills/handoff/SKILL.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: handoff
|
|
3
|
+
user-invocable: false
|
|
4
|
+
invocation: [auto]
|
|
3
5
|
tier: standard
|
|
4
6
|
description: "Generate HANDOFF.md work handover document before session end. Auto-activates on handoff, handover, session cleanup keywords."
|
|
5
7
|
triggers: [handoff, handover, session cleanup, session end, context save]
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: interview
|
|
3
|
+
description: 도메인 요구사항 인터뷰 본체 — type별 체크리스트(website/webapp/mobile/api/library/feature)로 사용자가 stop 할 때까지 루프.
|
|
4
|
+
when_to_use: /vibe.spec orchestrator의 Phase 1에서 호출. 직접 호출 금지.
|
|
5
|
+
user-invocable: false
|
|
3
6
|
tier: core
|
|
4
|
-
|
|
5
|
-
triggers: [만들자, 개발하자, 기획하자, 신규 기능, 새 프로젝트, "무엇을 만들", "무엇을 개발", 아이디어, 인터뷰, interview, requirements, "let's build", "new feature", "new project"]
|
|
6
|
-
priority: 95
|
|
7
|
-
chain-next: [vibe-plan]
|
|
7
|
+
chain-next: [plan]
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# vibe.interview — Domain Requirements Interview
|
|
@@ -20,7 +20,7 @@ chain-next: [vibe-plan]
|
|
|
20
20
|
|
|
21
21
|
**Skip when**:
|
|
22
22
|
- Small bug fix on an existing project
|
|
23
|
-
- `.vibe/plans/{feature}.md` already exists (→ only update via `
|
|
23
|
+
- `.vibe/plans/{feature}.md` already exists (→ only update via `plan`)
|
|
24
24
|
|
|
25
25
|
## Core Loop
|
|
26
26
|
|
|
@@ -53,7 +53,7 @@ chain-next: [vibe-plan]
|
|
|
53
53
|
4. Save collected results
|
|
54
54
|
.vibe/interviews/{feature}.md
|
|
55
55
|
↓
|
|
56
|
-
5. chain-next:
|
|
56
|
+
5. chain-next: plan
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
## Step 0: Git Branch (MANDATORY)
|
|
@@ -101,7 +101,7 @@ What kind of project is this?
|
|
|
101
101
|
Read the checklist file for the detected type:
|
|
102
102
|
|
|
103
103
|
```
|
|
104
|
-
Read skills/
|
|
104
|
+
Read skills/interview/checklists/{type}.md
|
|
105
105
|
```
|
|
106
106
|
|
|
107
107
|
The checklist is divided into a **Required** section and an **Optional** section. Each item has the following structure:
|
|
@@ -269,9 +269,9 @@ This pointer is used by /vibe.spec (no args) for Smart Resume.
|
|
|
269
269
|
No-op if the value is already the same.
|
|
270
270
|
```
|
|
271
271
|
|
|
272
|
-
## Step 5: Chain to
|
|
272
|
+
## Step 5: Chain to plan
|
|
273
273
|
|
|
274
|
-
After the interview is complete, the `
|
|
274
|
+
After the interview is complete, the `plan` skill is automatically activated to refine the results into a structured plan.
|
|
275
275
|
|
|
276
276
|
```
|
|
277
277
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
@@ -283,7 +283,7 @@ After the interview is complete, the `vibe-plan` skill is automatically activate
|
|
|
283
283
|
Optional: 12/14
|
|
284
284
|
Discovered: 3
|
|
285
285
|
|
|
286
|
-
→
|
|
286
|
+
→ plan skill is starting plan creation...
|
|
287
287
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
288
288
|
```
|
|
289
289
|
|
|
@@ -293,7 +293,7 @@ After the interview is complete, the `vibe-plan` skill is automatically activate
|
|
|
293
293
|
- Prompting the user to stop before Required items are complete
|
|
294
294
|
- Ignoring a user's answer and moving on to the next question
|
|
295
295
|
- Missing areas not in the checklist (use `discovered`)
|
|
296
|
-
- Writing the plan in PTCF/EARS/Phase structure here (that is refined by
|
|
296
|
+
- Writing the plan in PTCF/EARS/Phase structure here (that is refined by plan; the actual spec is written by /vibe.spec)
|
|
297
297
|
- Ending with 10 shallow questions (keep going until the user explicitly stops)
|
|
298
298
|
- Providing only multiple-choice options without allowing free input
|
|
299
299
|
|
|
@@ -347,12 +347,12 @@ Claude: ⚠️ All required items complete. 10 optional items will be marked as
|
|
|
347
347
|
✅ Interview complete!
|
|
348
348
|
📄 .vibe/interviews/parallax-website.md
|
|
349
349
|
|
|
350
|
-
→
|
|
350
|
+
→ plan skill is starting plan creation...
|
|
351
351
|
```
|
|
352
352
|
|
|
353
353
|
## Related
|
|
354
354
|
|
|
355
|
-
- **Next**: `
|
|
356
|
-
- **After plan**: `
|
|
355
|
+
- **Next**: `plan` — refine interview results into a structured plan
|
|
356
|
+
- **After plan**: `spec` (skill) → generates SPEC → then `/vibe.run` (logic) + `/vibe.figma` (UI track) in parallel
|
|
357
357
|
- **Templates**: `~/.claude/vibe/templates/plan-template.md`
|
|
358
|
-
- **Checklists**: `skills/
|
|
358
|
+
- **Checklists**: `skills/interview/checklists/{type}.md`
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: parallel-research
|
|
3
|
+
user-invocable: false
|
|
4
|
+
invocation: [auto]
|
|
3
5
|
tier: standard
|
|
4
6
|
description: "Parallel research with 4 specialized agents (best-practices, framework-docs, codebase-patterns, security-advisory) running simultaneously. Use when facing unfamiliar technology, choosing between libraries/frameworks, designing architecture for a new feature, or investigating security implications. Must use this skill when user asks 'how should we build X', 'which library for Y', or when starting work on a complex feature with unknown requirements. Not for simple lookups — use web search directly for those."
|
|
5
7
|
triggers: [parallel research, complex feature, technology selection, architecture design, security critical]
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: plan
|
|
3
|
+
description: 인터뷰 결과 → 사람이 읽는 기획서(vision document) 정제 본체. /vibe.spec → 코드, /vibe.figma → UI 스토리보드의 입력.
|
|
4
|
+
when_to_use: interview 완료 후 또는 /vibe.spec Phase 2에서 체인. 직접 호출 금지.
|
|
5
|
+
user-invocable: false
|
|
3
6
|
tier: core
|
|
4
|
-
|
|
5
|
-
triggers: [기획서, 기획서 작성, plan document, 기획 정리, "interview 정리", refine plan]
|
|
6
|
-
priority: 90
|
|
7
|
-
chain-next: [vibe-spec, vibe-figma]
|
|
7
|
+
chain-next: [spec, figma]
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# vibe.plan — Interview → Plan Document Refinement
|
|
@@ -13,12 +13,12 @@ chain-next: [vibe-spec, vibe-figma]
|
|
|
13
13
|
|
|
14
14
|
## When to Use
|
|
15
15
|
|
|
16
|
-
- `
|
|
16
|
+
- `interview` has just completed and `.vibe/interviews/{feature}.md` exists
|
|
17
17
|
- The user requests "write me a plan document" or "clean up the interview"
|
|
18
18
|
- Need to convert an external PRD/wireframe into the vibe plan document format
|
|
19
19
|
|
|
20
20
|
**Skip condition**:
|
|
21
|
-
- If this skill is called directly without an interview → chain to `
|
|
21
|
+
- If this skill is called directly without an interview → chain to `interview` first (no chain-prev; inform the user)
|
|
22
22
|
|
|
23
23
|
## Core Flow
|
|
24
24
|
|
|
@@ -55,7 +55,7 @@ Read .vibe/interviews/{feature-name}.md
|
|
|
55
55
|
Extract `type`, `status`, `requiredCollected`, `optionalCollected`, etc. from the frontmatter.
|
|
56
56
|
|
|
57
57
|
**Validation**:
|
|
58
|
-
- If the file does not exist → guide the user to run `
|
|
58
|
+
- If the file does not exist → guide the user to run `interview` first.
|
|
59
59
|
- `status: partial` + Required items incomplete → apply **AI-Driven Gap Filling**:
|
|
60
60
|
|
|
61
61
|
### AI-Driven Gap Filling
|
|
@@ -249,6 +249,6 @@ Where would you like to start?
|
|
|
249
249
|
|
|
250
250
|
## Related
|
|
251
251
|
|
|
252
|
-
- **Prev**: `
|
|
252
|
+
- **Prev**: `interview` — requirements collection (implicit chain-prev)
|
|
253
253
|
- **Next**: `/vibe.spec` (code spec), `/vibe.figma` (UI design)
|
|
254
254
|
- **Template**: `~/.claude/vibe/templates/plan-template.md`
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: prioritization-frameworks
|
|
3
|
+
invocation: [auto, chain]
|
|
3
4
|
tier: standard
|
|
4
5
|
description: "Reference guide to 9 prioritization frameworks with formulas, when-to-use guidance, and templates — RICE, ICE, Kano, MoSCoW, Opportunity Score, and more."
|
|
5
6
|
triggers: [prioritize, prioritization, rice, ice, kano, moscow, opportunity score]
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: priority-todos
|
|
3
|
+
user-invocable: false
|
|
4
|
+
invocation: [auto]
|
|
3
5
|
tier: standard
|
|
4
6
|
description: "Priority-based TODO management (P1/P2/P3). Auto-activates when managing tasks, reviewing issues, or organizing work by priority."
|
|
5
7
|
triggers: [todo, priority, P1, P2, P3, task management, issue, organize]
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: regress
|
|
3
|
+
description: 회귀 테스트 자동 진화 본체 — 버그 등록 → 예방 테스트 생성 → 반복 패턴 클러스터 → git fix 커밋 import. 저장소 .vibe/regressions/.
|
|
4
|
+
when_to_use: /vibe.regress 진입점 / /vibe.verify 실패 시 체인. 직접 호출 금지.
|
|
5
|
+
user-invocable: false
|
|
3
6
|
tier: core
|
|
4
|
-
description: "Regression test auto-evolution. Registers bugs (auto from /vibe.verify failures or manual), generates preventive vitest/jest files from bug records, clusters repeated patterns (3+ same root-cause-tag) into shared tests, and imports historical `fix:` commits from git log. Storage: .vibe/regressions/<slug>.md. Must use this skill when user runs /vibe.regress, when /vibe.verify produces a failure, or when the user says 'don't let this happen again' / 'regression test' / '회귀 테스트'."
|
|
5
|
-
triggers: [regress, regression, "회귀", "다시는", "반복 버그", "fix commit"]
|
|
6
|
-
priority: 70
|
|
7
|
-
chain-next: []
|
|
8
7
|
---
|
|
9
8
|
|
|
10
9
|
# vibe.regress — Regression Auto-Evolution
|
|
@@ -134,7 +133,7 @@ cart-stock-race-double-deduct cart concurrency open 1d
|
|
|
134
133
|
When `/vibe.verify` fails it calls:
|
|
135
134
|
|
|
136
135
|
```
|
|
137
|
-
Load skill `
|
|
136
|
+
Load skill `regress` with: register --from-verify
|
|
138
137
|
<feature>: {feature-name}
|
|
139
138
|
<scenario>: {failed-scenario}
|
|
140
139
|
<error>: {error-message}
|
package/skills/rob-pike/SKILL.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: rob-pike
|
|
3
|
+
user-invocable: false
|
|
4
|
+
invocation: [auto]
|
|
3
5
|
tier: core
|
|
4
6
|
description: "Rob Pike's 5 Rules — block premature optimization. Auto-activates on optimize, slow, performance, cache, parallelize keywords."
|
|
5
7
|
triggers: [optimize, slow, performance, cache, parallelize, bottleneck, speed up, faster, latency, benchmark]
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: seo-checklist
|
|
3
|
+
invocation: [auto]
|
|
3
4
|
tier: core
|
|
4
5
|
description: "SEO gotchas for web development — easy-to-miss items that hurt search ranking. Covers meta tags, Open Graph, structured data (JSON-LD), sitemap, robots.txt, canonical URLs, and Naver/Google-specific requirements. Use when building or reviewing any public-facing web page, landing page, or marketing site. Must use this skill when user mentions SEO, search ranking, meta tags, or when deploying a web app that needs to be discoverable."
|
|
5
6
|
triggers: [seo, search, meta, sitemap, schema, structured data, og, opengraph, google, naver]
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: spec
|
|
3
|
+
description: PTCF 구조 SPEC 한 문서 작성 — parallel research (GPT/Gemini/Claude agents), ambiguity scan, 100-point quality gate. plan 파일 입력 → .vibe/specs/{feature}.md + .vibe/features/{feature}.feature 생성.
|
|
4
|
+
when_to_use: vibe.spec orchestrator의 Phase 3에서 호출. 직접 호출 금지 — /vibe.spec 사용.
|
|
5
|
+
user-invocable: false
|
|
3
6
|
tier: core
|
|
4
|
-
|
|
5
|
-
triggers: [spec, SPEC, 명세, "코드 명세", "구현 명세", "write spec", "create spec", PTCF]
|
|
6
|
-
priority: 85
|
|
7
|
-
chain-next: [vibe-spec-review]
|
|
7
|
+
chain-next: [spec-review]
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# vibe.spec — Specification Agent
|
|
@@ -29,7 +29,7 @@ When `ultrawork` (or `ulw`) is included, automatically chains:
|
|
|
29
29
|
↓
|
|
30
30
|
[1] SPEC Creation (this command)
|
|
31
31
|
↓
|
|
32
|
-
[2] Auto: Load skill `
|
|
32
|
+
[2] Auto: Load skill `spec-review` (chain-next from this skill)
|
|
33
33
|
↓
|
|
34
34
|
[3] Auto: /vibe.run "{feature}" ultrawork
|
|
35
35
|
```
|
|
@@ -483,10 +483,10 @@ node "[LLM_SCRIPT]" gemini orchestrate-json "Security advisories for passkey aut
|
|
|
483
483
|
|
|
484
484
|
| Claude Agent | Role | Source |
|
|
485
485
|
|--------------|------|--------|
|
|
486
|
-
| `best-practices
|
|
487
|
-
| `framework-docs
|
|
488
|
-
| `codebase-patterns
|
|
489
|
-
| `security-advisory
|
|
486
|
+
| `best-practices` | Best practices for [feature] + [stack] | WebSearch |
|
|
487
|
+
| `framework-docs` | Latest docs via context7 | context7 MCP |
|
|
488
|
+
| `codebase-patterns` | Similar patterns in existing codebase | Glob, Grep |
|
|
489
|
+
| `security-advisory` | Security advisories for [feature] | WebSearch |
|
|
490
490
|
|
|
491
491
|
**Total: 4 GPT/Gemini calls (Bash) + 4 Claude agents (Task) = 8 parallel research tasks**
|
|
492
492
|
|
|
@@ -954,7 +954,7 @@ Stuck? (score == prev_score)
|
|
|
954
954
|
├─ Interactive: ask user → fill values OR "proceed" OR "abort"
|
|
955
955
|
└─ ultrawork: record gaps as TODO → proceed
|
|
956
956
|
↓
|
|
957
|
-
Score == 100 (or user-approved) → SPEC Draft Complete → Handoff to
|
|
957
|
+
Score == 100 (or user-approved) → SPEC Draft Complete → Handoff to spec-review skill
|
|
958
958
|
```
|
|
959
959
|
|
|
960
960
|
#### 7.4 Auto-Fix for Low Score
|
|
@@ -977,7 +977,7 @@ After SPEC draft is complete (score ≥ 95):
|
|
|
977
977
|
**If `ultrawork` mode:**
|
|
978
978
|
- ❌ DO NOT show handoff message
|
|
979
979
|
- ❌ DO NOT ask for confirmation
|
|
980
|
-
- ✅ Immediately load skill `
|
|
980
|
+
- ✅ Immediately load skill `spec-review` with feature `{feature-name}` (chain-next)
|
|
981
981
|
- ✅ After review passes, immediately proceed to `/vibe.run "{feature-name}" ultrawork`
|
|
982
982
|
|
|
983
983
|
**If normal mode:**
|
|
@@ -995,10 +995,10 @@ Output the handoff message:
|
|
|
995
995
|
⏱️ Completed: {getCurrentTime result}
|
|
996
996
|
|
|
997
997
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
998
|
-
⚠️ NEXT STEP: Run SPEC review (
|
|
998
|
+
⚠️ NEXT STEP: Run SPEC review (spec-review skill)
|
|
999
999
|
|
|
1000
1000
|
Option 1 (same session):
|
|
1001
|
-
Load skill `
|
|
1001
|
+
Load skill `spec-review` with feature `{feature-name}`
|
|
1002
1002
|
(or natural language: "spec review")
|
|
1003
1003
|
|
|
1004
1004
|
Option 2 (recommended for large context):
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: spec-review
|
|
3
|
+
description: SPEC 품질 리뷰 본체 — GPT/Gemini 크로스 검증, 100-point gate, Race Review(수렴 종료), Codex 적대 리뷰, 사용자 체크포인트.
|
|
4
|
+
when_to_use: spec 완료 후 또는 /vibe.spec Phase 4에서 체인. 직접 호출 금지.
|
|
5
|
+
user-invocable: false
|
|
3
6
|
tier: core
|
|
4
|
-
description: "Review and enhance an existing SPEC with GPT/Gemini cross-validation. Runs 100-point quality gate (loop until perfect or stuck), Race Review with convergence-based termination (no round cap), optional Codex adversarial review, Review Debate Team, and final user checkpoint. Must use this skill after vibe-spec completes, or when the user says 'review spec', '스펙 리뷰'."
|
|
5
|
-
triggers: ["spec review", "review spec", "SPEC 리뷰", "명세 리뷰", race review]
|
|
6
|
-
priority: 80
|
|
7
|
-
chain-next: []
|
|
8
7
|
---
|
|
9
8
|
|
|
10
|
-
#
|
|
9
|
+
# spec-review — SPEC Quality Review
|
|
11
10
|
|
|
12
11
|
Review and enhance SPEC with GPT/Gemini cross-validation.
|
|
13
12
|
|
|
14
|
-
**Purpose:** Run this skill after `
|
|
13
|
+
**Purpose:** Run this skill after `spec` to ensure accurate review execution. For large contexts, invoke in a new session.
|
|
15
14
|
|
|
16
15
|
---
|
|
17
16
|
|
|
@@ -20,7 +19,7 @@ Review and enhance SPEC with GPT/Gemini cross-validation.
|
|
|
20
19
|
This skill is automatically called in Phase 4 of the `/vibe.spec` orchestrator. If direct invocation is needed:
|
|
21
20
|
|
|
22
21
|
```
|
|
23
|
-
Load skill `
|
|
22
|
+
Load skill `spec-review` with feature: "feature-name"
|
|
24
23
|
```
|
|
25
24
|
|
|
26
25
|
Or via natural language trigger: "스펙 리뷰", "review spec", "명세 리뷰".
|
|
@@ -57,7 +56,7 @@ If the value is already the same, no-op.
|
|
|
57
56
|
```
|
|
58
57
|
/vibe.spec "feature" → SPEC created (Phase 3)
|
|
59
58
|
↓
|
|
60
|
-
Phase 4:
|
|
59
|
+
Phase 4: spec-review skill (this) → Quality validation + GPT/Gemini review
|
|
61
60
|
↓
|
|
62
61
|
/vibe.run "feature"
|
|
63
62
|
```
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: systematic-debugging
|
|
3
|
+
user-invocable: false
|
|
4
|
+
invocation: [auto]
|
|
3
5
|
tier: core
|
|
4
6
|
description: "Enforce reproduce-first, root-cause-first, failing-test-first debugging. Auto-activates on bug, error, fail, broken, crash, flaky keywords."
|
|
5
7
|
triggers: [bug, error, fail, broken, crash, flaky, not working, regression, unexpected, stack trace, exception, debug]
|
package/skills/techdebt/SKILL.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: techdebt
|
|
3
|
+
user-invocable: false
|
|
4
|
+
invocation: [auto, chain]
|
|
3
5
|
tier: core
|
|
4
6
|
description: "Technical debt cleanup — detect and fix duplicate code, console.log, unused imports, any types, etc. Recommended before session end. Activates on techdebt, cleanup, debt keywords."
|
|
5
7
|
triggers: [techdebt, cleanup, debt, unused imports, console.log, dead code]
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: test
|
|
3
|
+
description: vibe 자가검진 본체 — 대상 harness(~/.claude/~/.codex)의 모든 command/skill/hook/agent 프로빙 → pass/fail 리포트 → ~/.vibe/test-reports/.
|
|
4
|
+
when_to_use: /vibe.test 진입점에서 체인 호출. 직접 호출 금지.
|
|
5
|
+
user-invocable: false
|
|
3
6
|
tier: core
|
|
4
|
-
description: "Self-test vibe by probing every command/skill/hook/agent in a target harness install dir (~/.claude or ~/.coco) and writing a pass/fail report to ~/.vibe/test-reports/. Takes an optional harness argument (cc|coco); empty = current harness. Must use this skill when user runs /vibe.test, when verifying a vibe install before release, or when the user says 'self-test', 'harness 점검', 'vibe 건강'."
|
|
5
|
-
triggers: [test, self-test, "vibe 건강", "harness 점검", "자가검진"]
|
|
6
|
-
priority: 70
|
|
7
|
-
chain-next: []
|
|
8
7
|
---
|
|
9
8
|
|
|
10
|
-
#
|
|
9
|
+
# test — Self-Test
|
|
11
10
|
|
|
12
11
|
Probe every shipped vibe surface in one install dir and emit a pass/fail report.
|
|
13
12
|
|
|
14
13
|
## Why this exists
|
|
15
14
|
|
|
16
|
-
When vibe ships new commands, skills, hooks, or agents, one side (CC or
|
|
15
|
+
When vibe ships new commands, skills, hooks, or agents, one side (CC or Codex) can end up out of sync with the other, frontmatter can drift, and hook tests can silently break. `/vibe.test` is the single mechanical check: does every surface in the target install actually load and pass its own tests?
|
|
17
16
|
|
|
18
17
|
## Target harness
|
|
19
18
|
|
|
@@ -21,15 +20,15 @@ The argument selects which install dir to probe:
|
|
|
21
20
|
|
|
22
21
|
| Arg | Probed dir |
|
|
23
22
|
|---|---|
|
|
24
|
-
| (empty) | current harness — CC: `~/.claude/`,
|
|
23
|
+
| (empty) | current harness — CC: `~/.claude/`, Codex: `~/.codex/` |
|
|
25
24
|
| `cc` | `~/.claude/` |
|
|
26
|
-
| `
|
|
25
|
+
| `codex` | `~/.codex/` |
|
|
27
26
|
|
|
28
27
|
If the target dir does not exist, print a clear message and exit with guidance (not an error). Example:
|
|
29
28
|
|
|
30
29
|
```
|
|
31
|
-
~/.
|
|
32
|
-
To install:
|
|
30
|
+
~/.codex/ not found — Codex isn't installed on this machine.
|
|
31
|
+
To install: npm i -g @openai/codex
|
|
33
32
|
```
|
|
34
33
|
|
|
35
34
|
## Probes
|
|
@@ -39,7 +38,7 @@ All probes are **structural or test-based** — no interactive command is ever a
|
|
|
39
38
|
| Category | Source | Check |
|
|
40
39
|
|---|---|---|
|
|
41
40
|
| commands | `<install>/commands/*.md` | file readable · frontmatter parses · `description` present · body references a skill (`Load skill \`...\``) if it delegates |
|
|
42
|
-
| skills | `<install>/skills/*/SKILL.md` | frontmatter parses · required fields (`name`, `description`) · `
|
|
41
|
+
| skills | `<install>/skills/*/SKILL.md` | frontmatter parses · required fields (`name`, `description`, `invocation`) · `invocation` ⊆ `{command, auto, chain}` and non-empty · if `invocation` includes `auto` then `triggers` non-empty · if includes `command` then matching `commands/{vibe.X}.md` or `Load skill <name>` reference exists · if includes `chain` then another skill lists it in `chain-next` · body non-empty |
|
|
43
42
|
| hooks | repo `hooks/scripts/*.js` | for each script with a matching `__tests__/<name>.test.js`, run `npx vitest run <test> --reporter=json` and parse pass/fail counts |
|
|
44
43
|
| agents | `<install>/agents/*.md` | file readable · frontmatter parses · required fields (`name`, `description`) |
|
|
45
44
|
|
|
@@ -68,8 +67,8 @@ Written to `~/.vibe/test-reports/<YYYYMMDD-HHmm>-<harness>.{json,md}`. Exact sch
|
|
|
68
67
|
{ "name": "vibe.test", "status": "pass" }
|
|
69
68
|
],
|
|
70
69
|
"skills": [
|
|
71
|
-
{ "name": "
|
|
72
|
-
{ "name": "
|
|
70
|
+
{ "name": "test", "status": "pass" },
|
|
71
|
+
{ "name": "spec", "status": "fail", "error": "invocation includes `auto` but triggers array is empty" }
|
|
73
72
|
],
|
|
74
73
|
"hooks": [
|
|
75
74
|
{ "name": "pre-tool-guard", "status": "pass", "tests": "38/38" },
|
|
@@ -82,7 +81,7 @@ Written to `~/.vibe/test-reports/<YYYYMMDD-HHmm>-<harness>.{json,md}`. Exact sch
|
|
|
82
81
|
"failed": [
|
|
83
82
|
{
|
|
84
83
|
"category": "skills",
|
|
85
|
-
"name": "
|
|
84
|
+
"name": "spec",
|
|
86
85
|
"error": "frontmatter: triggers array is empty"
|
|
87
86
|
}
|
|
88
87
|
]
|
|
@@ -111,7 +110,7 @@ Written to `~/.vibe/test-reports/<YYYYMMDD-HHmm>-<harness>.{json,md}`. Exact sch
|
|
|
111
110
|
|
|
112
111
|
## Failures
|
|
113
112
|
|
|
114
|
-
- **skills /
|
|
113
|
+
- **skills / spec** — invocation includes `auto` but triggers array is empty
|
|
115
114
|
- **agents / explorer** — agent file not found
|
|
116
115
|
```
|
|
117
116
|
|
|
@@ -119,15 +118,15 @@ If `failed` is empty, replace the Failures section with `_All probes passed._`.
|
|
|
119
118
|
|
|
120
119
|
## Steps
|
|
121
120
|
|
|
122
|
-
1. **Resolve target**: argument (`cc` / `
|
|
123
|
-
2. **Resolve install dir**: `cc` → `~/.claude`, `
|
|
121
|
+
1. **Resolve target**: argument (`cc` / `codex` / empty). Empty → detect current harness (`$CLAUDE_PROJECT_DIR` set → `cc`; else fall back to `cc`).
|
|
122
|
+
2. **Resolve install dir**: `cc` → `~/.claude`, `codex` → `~/.codex`. If missing → print guidance + exit.
|
|
124
123
|
3. **Read `vibe_version`** from `package.json` in the current repo.
|
|
125
124
|
4. **Walk each category**, run its check, append `{ name, status, error? }` to `probes.<category>`.
|
|
126
125
|
5. **Compute** `summary` counts and the flat `failed[]` list.
|
|
127
126
|
6. **Ensure** `~/.vibe/test-reports/` exists (`mkdir -p`, dir mode `0o700` — consistent with `~/.vibe/config.json`).
|
|
128
127
|
7. **Write** `<ts>-<harness>.json` and `<ts>-<harness>.md`.
|
|
129
128
|
8. **Print** the Markdown summary to the console.
|
|
130
|
-
9. **If `summary.failed > 0`**, load skill `
|
|
129
|
+
9. **If `summary.failed > 0`**, load skill `regress` with `subcommand: register --from-test` and pass the failed entries. P1 = any probe with `status: fail`.
|
|
131
130
|
|
|
132
131
|
## Done Criteria
|
|
133
132
|
|
|
@@ -138,3 +137,4 @@ If `failed` is empty, replace the Failures section with `_All probes passed._`.
|
|
|
138
137
|
- [ ] Markdown summary printed to console after the run
|
|
139
138
|
- [ ] Reports land in `~/.vibe/test-reports/`, never in project-local `.vibe/`
|
|
140
139
|
- [ ] `failed.length > 0` → auto-invokes `/vibe.regress register --from-test`
|
|
140
|
+
- [ ] `invocation` field invariants enforced per skill (`command` / `auto` / `chain` validity)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: tool-fallback
|
|
3
|
+
invocation: [auto]
|
|
3
4
|
tier: optional
|
|
4
5
|
description: "Tool failure fallback strategies with circuit breaker. Auto-activates on API errors, search failures, timeouts, 429, 5xx, overloaded errors."
|
|
5
6
|
triggers: [API error, search failure, timeout, 429, 5xx, overloaded, fallback, circuit breaker]
|