@su-record/vibe 2.8.24 → 2.8.26
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/dist/cli/commands/config.d.ts +17 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +207 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/index.d.ts +2 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +2 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/info.d.ts.map +1 -1
- package/dist/cli/commands/info.js +2 -0
- package/dist/cli/commands/info.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +78 -54
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/stats.d.ts +13 -0
- package/dist/cli/commands/stats.d.ts.map +1 -0
- package/dist/cli/commands/stats.js +280 -0
- package/dist/cli/commands/stats.js.map +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +33 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/postinstall/constants.d.ts.map +1 -1
- package/dist/cli/postinstall/constants.js +1 -0
- package/dist/cli/postinstall/constants.js.map +1 -1
- package/dist/cli/setup/GlobalInstaller.d.ts.map +1 -1
- package/dist/cli/setup/GlobalInstaller.js +7 -7
- package/dist/cli/setup/GlobalInstaller.js.map +1 -1
- package/dist/cli/setup/ProjectSetup.d.ts.map +1 -1
- package/dist/cli/setup/ProjectSetup.js +18 -12
- package/dist/cli/setup/ProjectSetup.js.map +1 -1
- package/dist/infra/lib/ContextCompressor.d.ts.map +1 -1
- package/dist/infra/lib/ContextCompressor.js +10 -4
- package/dist/infra/lib/ContextCompressor.js.map +1 -1
- package/dist/infra/lib/ProjectCache.d.ts +2 -2
- package/dist/infra/lib/ProjectCache.d.ts.map +1 -1
- package/dist/infra/lib/ProjectCache.js +4 -3
- package/dist/infra/lib/ProjectCache.js.map +1 -1
- package/dist/infra/lib/utils.d.ts +24 -0
- package/dist/infra/lib/utils.d.ts.map +1 -1
- package/dist/infra/lib/utils.js +41 -0
- package/dist/infra/lib/utils.js.map +1 -1
- package/dist/infra/orchestrator/SmartRouter.d.ts +3 -0
- package/dist/infra/orchestrator/SmartRouter.d.ts.map +1 -1
- package/dist/infra/orchestrator/SmartRouter.js +11 -1
- package/dist/infra/orchestrator/SmartRouter.js.map +1 -1
- package/dist/infra/orchestrator/SmartRouter.test.d.ts +5 -0
- package/dist/infra/orchestrator/SmartRouter.test.d.ts.map +1 -0
- package/dist/infra/orchestrator/SmartRouter.test.js +457 -0
- package/dist/infra/orchestrator/SmartRouter.test.js.map +1 -0
- package/dist/tools/convention/analyzeComplexity.d.ts.map +1 -1
- package/dist/tools/convention/analyzeComplexity.js +18 -10
- package/dist/tools/convention/analyzeComplexity.js.map +1 -1
- package/dist/tools/convention/checkCouplingCohesion.d.ts.map +1 -1
- package/dist/tools/convention/checkCouplingCohesion.js +14 -6
- package/dist/tools/convention/checkCouplingCohesion.js.map +1 -1
- package/dist/tools/semantic/analyzeDependencyGraph.d.ts.map +1 -1
- package/dist/tools/semantic/analyzeDependencyGraph.js +1 -1
- package/dist/tools/semantic/analyzeDependencyGraph.js.map +1 -1
- package/dist/tools/semantic/findReferences.d.ts.map +1 -1
- package/dist/tools/semantic/findReferences.js +13 -13
- package/dist/tools/semantic/findReferences.js.map +1 -1
- package/dist/tools/semantic/findSymbol.d.ts.map +1 -1
- package/dist/tools/semantic/findSymbol.js +12 -13
- package/dist/tools/semantic/findSymbol.js.map +1 -1
- package/dist/tools/semantic/lsp.d.ts.map +1 -1
- package/dist/tools/semantic/lsp.js +22 -14
- package/dist/tools/semantic/lsp.js.map +1 -1
- package/hooks/hooks.json +29 -0
- package/hooks/scripts/__tests__/keyword-detector.test.js +199 -0
- package/hooks/scripts/__tests__/pre-tool-guard.test.js +286 -0
- package/hooks/scripts/__tests__/sentinel-guard.test.js +210 -0
- package/hooks/scripts/auto-commit.js +65 -0
- package/hooks/scripts/auto-format.js +64 -0
- package/hooks/scripts/auto-test.js +81 -0
- package/hooks/scripts/code-check.js +139 -0
- package/hooks/scripts/command-log.js +32 -0
- package/hooks/scripts/context-save.js +60 -6
- package/hooks/scripts/hud-status.js +32 -2
- package/hooks/scripts/llm-orchestrate.js +95 -17
- package/hooks/scripts/pr-test-gate.js +52 -0
- package/package.json +1 -1
- package/skills/agents-md/rubrics/what-to-keep.md +49 -0
- package/skills/agents-md/templates/agents-md.md +36 -0
- package/skills/arch-guard/agents/detector.md +48 -0
- package/skills/arch-guard/agents/reporter.md +48 -0
- package/skills/arch-guard/agents/rule-generator.md +49 -0
- package/skills/arch-guard/agents/violation-checker.md +51 -0
- package/skills/arch-guard/frameworks/clean-architecture.md +108 -0
- package/skills/arch-guard/frameworks/solid.md +102 -0
- package/skills/arch-guard/scripts/check-boundaries.js +90 -0
- package/skills/arch-guard/templates/arch-rules.json +47 -0
- package/skills/arch-guard/templates/violation-report.md +53 -0
- package/skills/brand-assets/rubrics/asset-checklist.md +98 -0
- package/skills/brand-assets/templates/brand-guide.md +161 -0
- package/skills/capability-loop/agents/capability-designer.md +61 -0
- package/skills/capability-loop/agents/failure-analyst.md +55 -0
- package/skills/capability-loop/agents/implementer.md +50 -0
- package/skills/capability-loop/agents/tester.md +53 -0
- package/skills/capability-loop/templates/capability-spec.md +118 -0
- package/skills/capability-loop/templates/failure-analysis.md +118 -0
- package/skills/characterization-test/agents/behavior-capturer.md +50 -0
- package/skills/characterization-test/agents/coverage-checker.md +54 -0
- package/skills/characterization-test/agents/reporter.md +50 -0
- package/skills/characterization-test/agents/test-writer.md +49 -0
- package/skills/characterization-test/rubrics/coverage-criteria.md +53 -0
- package/skills/characterization-test/templates/test-template.ts +101 -0
- package/skills/claude-md-guide/rubrics/anti-patterns.md +88 -0
- package/skills/claude-md-guide/templates/claude-md.md +54 -0
- package/skills/commerce-patterns/rubrics/checkout-flow.md +48 -0
- package/skills/commerce-patterns/templates/product-schema.md +85 -0
- package/skills/commit-push-pr/agents/change-analyzer.md +55 -0
- package/skills/commit-push-pr/agents/message-writer.md +50 -0
- package/skills/commit-push-pr/agents/pr-writer.md +58 -0
- package/skills/commit-push-pr/agents/reviewer.md +52 -0
- package/skills/commit-push-pr/rubrics/commit-message.md +73 -0
- package/skills/commit-push-pr/templates/pr-body.md +63 -0
- package/skills/context7-usage/rubrics/when-to-use.md +50 -0
- package/skills/create-prd/agents/edge-case-finder.md +48 -0
- package/skills/create-prd/agents/prioritizer.md +60 -0
- package/skills/create-prd/agents/requirements-writer.md +48 -0
- package/skills/create-prd/agents/researcher.md +55 -0
- package/skills/create-prd/agents/reviewer.md +54 -0
- package/skills/create-prd/frameworks/jobs-to-be-done.md +96 -0
- package/skills/create-prd/frameworks/rice-scoring.md +97 -0
- package/skills/create-prd/orchestrator.md +70 -0
- package/skills/create-prd/rubrics/completeness.md +58 -0
- package/skills/create-prd/templates/prd.md +139 -0
- package/skills/design-audit/agents/a11y-auditor.md +43 -0
- package/skills/design-audit/agents/performance-auditor.md +46 -0
- package/skills/design-audit/agents/responsive-auditor.md +46 -0
- package/skills/design-audit/agents/scorer.md +47 -0
- package/skills/design-audit/agents/slop-detector.md +47 -0
- package/skills/design-audit/frameworks/core-web-vitals.md +107 -0
- package/skills/design-audit/frameworks/wcag-checklist.md +64 -0
- package/skills/design-audit/orchestrator.md +64 -0
- package/skills/design-audit/rubrics/ai-slop-patterns.md +83 -0
- package/skills/design-audit/rubrics/scoring.md +63 -0
- package/skills/design-audit/templates/report.md +88 -0
- package/skills/design-critique/rubrics/ux-heuristics.md +143 -0
- package/skills/design-critique/templates/critique-report.md +86 -0
- package/skills/design-distill/templates/design-system.md +132 -0
- package/skills/design-normalize/rubrics/token-naming.md +117 -0
- package/skills/design-normalize/templates/token-audit.md +89 -0
- package/skills/design-polish/rubrics/polish-checklist.md +68 -0
- package/skills/design-polish/templates/polish-report.md +64 -0
- package/skills/design-teach/rubrics/brand-personality.md +73 -0
- package/skills/design-teach/templates/design-context.json +36 -0
- package/skills/e2e-commerce/templates/test-scenarios.md +170 -0
- package/skills/event-comms/templates/email-invite.md +99 -0
- package/skills/event-comms/templates/sns-post.md +133 -0
- package/skills/event-ops/rubrics/contingency.md +85 -0
- package/skills/event-ops/templates/d-day-checklist.md +65 -0
- package/skills/event-planning/rubrics/timeline.md +70 -0
- package/skills/event-planning/templates/event-plan.md +91 -0
- package/skills/exec-plan/agents/decomposer.md +47 -0
- package/skills/exec-plan/agents/dependency-mapper.md +44 -0
- package/skills/exec-plan/agents/estimator.md +43 -0
- package/skills/exec-plan/agents/validator.md +55 -0
- package/skills/exec-plan/orchestrator.md +70 -0
- package/skills/exec-plan/rubrics/complexity-scoring.md +75 -0
- package/skills/exec-plan/templates/plan.md +147 -0
- package/skills/git-worktree/rubrics/when-to-use.md +55 -0
- package/skills/handoff/agents/context-summarizer.md +51 -0
- package/skills/handoff/agents/document-writer.md +63 -0
- package/skills/handoff/agents/state-collector.md +53 -0
- package/skills/handoff/agents/verifier.md +48 -0
- package/skills/handoff/rubrics/completeness.md +62 -0
- package/skills/handoff/templates/handoff.md +107 -0
- package/skills/parallel-research/agents/best-practices.md +43 -0
- package/skills/parallel-research/agents/codebase-patterns.md +46 -0
- package/skills/parallel-research/agents/framework-docs.md +45 -0
- package/skills/parallel-research/agents/security-advisory.md +46 -0
- package/skills/parallel-research/agents/synthesizer.md +52 -0
- package/skills/parallel-research/experts/best-practices.md +50 -0
- package/skills/parallel-research/experts/codebase-patterns.md +70 -0
- package/skills/parallel-research/experts/framework-docs.md +65 -0
- package/skills/parallel-research/experts/security-advisory.md +69 -0
- package/skills/parallel-research/orchestrator.md +65 -0
- package/skills/parallel-research/templates/synthesis.md +101 -0
- package/skills/prioritization-frameworks/rubrics/frameworks.md +79 -0
- package/skills/prioritization-frameworks/templates/scoring-matrix.md +69 -0
- package/skills/priority-todos/rubrics/prioritization.md +70 -0
- package/skills/priority-todos/templates/todo-board.md +59 -0
- package/skills/seo-checklist/frameworks/structured-data.md +153 -0
- package/skills/seo-checklist/rubrics/content-seo.md +42 -0
- package/skills/seo-checklist/rubrics/technical-seo.md +48 -0
- package/skills/techdebt/agents/analyzer.md +50 -0
- package/skills/techdebt/agents/fixer.md +41 -0
- package/skills/techdebt/agents/reviewer.md +47 -0
- package/skills/techdebt/agents/scanner.md +44 -0
- package/skills/techdebt/orchestrator.md +70 -0
- package/skills/techdebt/rubrics/severity.md +51 -0
- package/skills/techdebt/scripts/scan.js +90 -0
- package/skills/techdebt/templates/report.md +86 -0
- package/skills/tool-fallback/rubrics/fallback-chain.md +58 -0
- package/skills/typescript-advanced-types/rubrics/type-patterns.md +109 -0
- package/skills/ui-ux-pro-max/rubrics/interaction-states.md +83 -0
- package/skills/ui-ux-pro-max/rubrics/responsive-breakpoints.md +99 -0
- package/skills/user-personas/rubrics/research-methods.md +56 -0
- package/skills/user-personas/templates/persona.md +89 -0
- package/skills/vercel-react-best-practices/rubrics/performance.md +82 -0
- package/skills/vercel-react-best-practices/rubrics/server-components.md +86 -0
- package/skills/vibe-docs/SKILL.md +171 -0
- package/skills/vibe-docs/templates/architecture.md +80 -0
- package/skills/vibe-docs/templates/readme.md +84 -0
- package/skills/vibe-docs/templates/release-notes.md +74 -0
- package/skills/vibe-figma/SKILL.md +122 -206
- package/skills/vibe-figma/rubrics/extraction-checklist.md +51 -0
- package/skills/vibe-figma/templates/figma-handoff.md +96 -0
- package/skills/vibe-figma-analyze/rubrics/analysis-dimensions.md +53 -0
- package/skills/vibe-figma-codegen/rubrics/code-quality.md +54 -0
- package/skills/vibe-figma-consolidate/templates/consolidation-report.md +95 -0
- package/skills/vibe-figma-convert/SKILL.md +13 -175
- package/skills/vibe-figma-convert/rubrics/conversion-rules.md +83 -0
- package/skills/vibe-figma-convert/templates/component.md +152 -0
- package/skills/vibe-figma-extract/rubrics/image-rules.md +67 -0
- package/skills/vibe-figma-frame/rubrics/frame-selection.md +55 -0
- package/skills/vibe-figma-pipeline/rubrics/pipeline-stages.md +96 -0
- package/skills/vibe-figma-rules/rubrics/naming-conventions.md +70 -0
- package/skills/vibe-figma-style/rubrics/style-mapping.md +100 -0
- package/skills/video-production/rubrics/quality-checklist.md +58 -0
- package/skills/video-production/templates/production-plan.md +104 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Event Plan: {{EVENT_NAME}} {{EDITION}}회
|
|
2
|
+
|
|
3
|
+
| Field | Value |
|
|
4
|
+
|-------|-------|
|
|
5
|
+
| Event type | {{TYPE}} (MDC / Webinar / DWK / Other) |
|
|
6
|
+
| Date & time | {{DATE}} {{TIME}} |
|
|
7
|
+
| Venue | {{VENUE}} |
|
|
8
|
+
| Format | {{OFFLINE / ONLINE / HYBRID}} |
|
|
9
|
+
| Expected attendees | {{EXPECTED_COUNT}} |
|
|
10
|
+
| Registration URL | {{REG_URL}} |
|
|
11
|
+
| Participation fee | {{FEE}} |
|
|
12
|
+
|
|
13
|
+
## Topic & Theme
|
|
14
|
+
|
|
15
|
+
**Main theme**: {{THEME}}
|
|
16
|
+
|
|
17
|
+
**Session topics:**
|
|
18
|
+
|
|
19
|
+
| # | Topic | Speaker | Duration |
|
|
20
|
+
|---|-------|---------|----------|
|
|
21
|
+
| 1 | {{TOPIC_1}} | {{SPEAKER_1}} | {{DURATION}} |
|
|
22
|
+
| 2 | {{TOPIC_2}} | {{SPEAKER_2}} | {{DURATION}} |
|
|
23
|
+
| 3 | {{TOPIC_3}} | {{SPEAKER_3}} | {{DURATION}} |
|
|
24
|
+
|
|
25
|
+
## Timetable
|
|
26
|
+
|
|
27
|
+
| Time | Item |
|
|
28
|
+
|------|------|
|
|
29
|
+
| {{TIME_1}} | {{ITEM_1}} |
|
|
30
|
+
| {{TIME_2}} | {{ITEM_2}} |
|
|
31
|
+
| {{TIME_3}} | {{ITEM_3}} |
|
|
32
|
+
| {{TIME_4}} | Q&A + Networking |
|
|
33
|
+
|
|
34
|
+
## Speakers
|
|
35
|
+
|
|
36
|
+
### Speaker 1: {{SPEAKER_1_NAME}}
|
|
37
|
+
|
|
38
|
+
- Role: {{ROLE}}
|
|
39
|
+
- Company: {{COMPANY}}
|
|
40
|
+
- Topic: {{TOPIC}}
|
|
41
|
+
- Contact: {{EMAIL_OR_DM}}
|
|
42
|
+
- Confirmation status: {{PENDING / CONFIRMED}}
|
|
43
|
+
|
|
44
|
+
### Speaker 2: {{SPEAKER_2_NAME}}
|
|
45
|
+
|
|
46
|
+
- Role: {{ROLE}}
|
|
47
|
+
- Company: {{COMPANY}}
|
|
48
|
+
- Topic: {{TOPIC}}
|
|
49
|
+
- Contact: {{EMAIL_OR_DM}}
|
|
50
|
+
- Confirmation status: {{PENDING / CONFIRMED}}
|
|
51
|
+
|
|
52
|
+
## D-Day Timeline
|
|
53
|
+
|
|
54
|
+
| D-Day | Task | Owner | Status |
|
|
55
|
+
|-------|------|-------|--------|
|
|
56
|
+
| D-{{N}} | {{TASK_1}} | {{OWNER}} | Not started |
|
|
57
|
+
| D-{{N}} | {{TASK_2}} | {{OWNER}} | Not started |
|
|
58
|
+
| D-3 | Confirmation email + SMS | {{OWNER}} | Not started |
|
|
59
|
+
| D-1 | Nametags + checklist + slides | {{OWNER}} | Not started |
|
|
60
|
+
| D-Day | Day-of operations | {{OWNER}} | Not started |
|
|
61
|
+
| D+1 | Review post + settlement | {{OWNER}} | Not started |
|
|
62
|
+
|
|
63
|
+
## Budget
|
|
64
|
+
|
|
65
|
+
| Item | Estimated Cost | Actual Cost |
|
|
66
|
+
|------|---------------|-------------|
|
|
67
|
+
| Venue | {{AMOUNT}} | — |
|
|
68
|
+
| Snacks / Refreshments | {{AMOUNT}} | — |
|
|
69
|
+
| Speaker gifts | {{AMOUNT}} | — |
|
|
70
|
+
| Printing (nametags, etc.) | {{AMOUNT}} | — |
|
|
71
|
+
| **Total** | {{TOTAL}} | — |
|
|
72
|
+
|
|
73
|
+
Revenue: {{EXPECTED_ATTENDEES}} × {{FEE}} = {{EXPECTED_REVENUE}}
|
|
74
|
+
|
|
75
|
+
## State File Reference
|
|
76
|
+
|
|
77
|
+
Save progress to `.event_state.json` after each step completion.
|
|
78
|
+
|
|
79
|
+
```json
|
|
80
|
+
{
|
|
81
|
+
"event_id": "{{TYPE}}-{{EDITION}}",
|
|
82
|
+
"type": "{{TYPE}}",
|
|
83
|
+
"date": "{{DATE}}",
|
|
84
|
+
"title": "{{EVENT_NAME}} {{EDITION}}회",
|
|
85
|
+
"topic": "{{THEME}}",
|
|
86
|
+
"speakers": [],
|
|
87
|
+
"current_step": "{{CURRENT_STEP}}",
|
|
88
|
+
"completed_steps": [],
|
|
89
|
+
"outputs": {}
|
|
90
|
+
}
|
|
91
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plan-decomposer
|
|
3
|
+
role: Breaks a SPEC document into concrete phases and atomic tasks
|
|
4
|
+
tools: [Read]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Plan Decomposer
|
|
8
|
+
|
|
9
|
+
## Role
|
|
10
|
+
Reads a SPEC document and breaks it into a structured hierarchy of phases and tasks. Each task is scoped to a single file or function change, making it independently assignable and reviewable. Produces the raw task list that all other planning agents operate on.
|
|
11
|
+
|
|
12
|
+
## Responsibilities
|
|
13
|
+
- Parse SPEC phases and acceptance criteria into discrete implementation tasks
|
|
14
|
+
- Scope each task to a single concern: one file, one function, one schema change
|
|
15
|
+
- Classify each task by type: create, modify, delete, test, config, migration
|
|
16
|
+
- Identify tasks that are purely setup/scaffolding vs. feature logic vs. verification
|
|
17
|
+
- Flag ambiguous requirements that need clarification before implementation can begin
|
|
18
|
+
- Produce a flat numbered task list with parent-phase references
|
|
19
|
+
|
|
20
|
+
## Input
|
|
21
|
+
- SPEC document path (e.g., `.claude/vibe/specs/my-feature.spec.md`)
|
|
22
|
+
- Optional: existing codebase context to detect which files already exist
|
|
23
|
+
|
|
24
|
+
## Output
|
|
25
|
+
Task list JSON:
|
|
26
|
+
```json
|
|
27
|
+
{
|
|
28
|
+
"phases": [
|
|
29
|
+
{
|
|
30
|
+
"id": "P1",
|
|
31
|
+
"name": "Data Layer",
|
|
32
|
+
"tasks": [
|
|
33
|
+
{ "id": "T1", "phase": "P1", "type": "create", "description": "Create User schema in src/db/schema.ts", "file": "src/db/schema.ts" },
|
|
34
|
+
{ "id": "T2", "phase": "P1", "type": "create", "description": "Create userRepository with findById, save, delete", "file": "src/infra/userRepository.ts" }
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"ambiguities": ["SPEC phase 3 does not specify error handling strategy for 404 case"]
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Communication
|
|
43
|
+
- Reports task list to: `plan-dependency-mapper`
|
|
44
|
+
- Receives instructions from: exec-plan orchestrator (SKILL.md)
|
|
45
|
+
|
|
46
|
+
## Domain Knowledge
|
|
47
|
+
Decomposition heuristics: tasks should be completable in 15-60 min. If a task description contains "and", split it. Test tasks must correspond 1:1 with feature tasks. Migration tasks always precede the feature tasks that depend on the new schema. Prefer vertical slices (full feature thin slice) over horizontal layers when parallelizing.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plan-dependency-mapper
|
|
3
|
+
role: Creates a directed acyclic graph of task dependencies to reveal what can run in parallel
|
|
4
|
+
tools: [Read]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Dependency Mapper
|
|
8
|
+
|
|
9
|
+
## Role
|
|
10
|
+
Analyzes the decomposed task list and maps the true dependency relationships between tasks, producing a DAG (directed acyclic graph). Identifies which tasks have no dependencies and can start immediately, which must wait, and which form the critical path — the longest chain that determines the minimum total execution time.
|
|
11
|
+
|
|
12
|
+
## Responsibilities
|
|
13
|
+
- Analyze each task pair for dependency relationships (does T2 require T1's output?)
|
|
14
|
+
- Classify dependency types: file-level (imports the file), schema-level (uses the type), logical (tests the feature)
|
|
15
|
+
- Build a DAG with tasks as nodes and dependencies as directed edges
|
|
16
|
+
- Detect and flag cycles — which indicate a SPEC conflict requiring clarification
|
|
17
|
+
- Identify the critical path: the longest chain of sequential dependencies
|
|
18
|
+
- List all tasks with zero dependencies (immediately parallelizable)
|
|
19
|
+
|
|
20
|
+
## Input
|
|
21
|
+
Task list JSON from `plan-decomposer`.
|
|
22
|
+
|
|
23
|
+
## Output
|
|
24
|
+
Dependency graph:
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"dag": {
|
|
28
|
+
"T1": { "deps": [], "dependents": ["T2", "T3"] },
|
|
29
|
+
"T2": { "deps": ["T1"], "dependents": ["T4"] },
|
|
30
|
+
"T3": { "deps": ["T1"], "dependents": ["T4"] },
|
|
31
|
+
"T4": { "deps": ["T2", "T3"], "dependents": [] }
|
|
32
|
+
},
|
|
33
|
+
"criticalPath": ["T1", "T2", "T4"],
|
|
34
|
+
"parallelizable": [["T2", "T3"]],
|
|
35
|
+
"cycles": []
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Communication
|
|
40
|
+
- Reports dependency graph to: `plan-estimator`
|
|
41
|
+
- Receives instructions from: exec-plan orchestrator (SKILL.md)
|
|
42
|
+
|
|
43
|
+
## Domain Knowledge
|
|
44
|
+
Dependency detection rules: if task A creates a file that task B imports, A must precede B. If task A defines a type that task B uses, A must precede B. Test tasks depend on the feature task they test. Config/setup tasks depend on nothing and should be in the first wave. DAG critical path calculation: longest path from source to sink node by task count (not time, until estimator adds duration).
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plan-estimator
|
|
3
|
+
role: Estimates complexity and duration for each task and suggests parallelization strategy
|
|
4
|
+
tools: [Read, Glob]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Plan Estimator
|
|
8
|
+
|
|
9
|
+
## Role
|
|
10
|
+
Assigns complexity and effort estimates to each task based on task type, scope, and codebase context. Uses the dependency graph to compute the estimated critical path duration and suggest an optimal parallel execution wave plan that minimizes total clock time.
|
|
11
|
+
|
|
12
|
+
## Responsibilities
|
|
13
|
+
- Assign effort estimates per task: trivial (< 15 min), minor (15-30 min), moderate (30-60 min), major (> 60 min)
|
|
14
|
+
- Check existing codebase for similar implementations to calibrate estimates
|
|
15
|
+
- Compute total sequential estimate and parallel estimate using the DAG waves
|
|
16
|
+
- Group tasks into execution waves: Wave 1 (no deps), Wave 2 (deps only on Wave 1), etc.
|
|
17
|
+
- Identify tasks suitable for sub-agent delegation vs. tasks requiring orchestrator attention
|
|
18
|
+
- Flag tasks with high uncertainty that need a spike/research step first
|
|
19
|
+
|
|
20
|
+
## Input
|
|
21
|
+
Task list JSON from `plan-decomposer` and dependency graph from `plan-dependency-mapper`.
|
|
22
|
+
|
|
23
|
+
## Output
|
|
24
|
+
Estimated plan with waves:
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"totalSequentialEstimate": "4h 30m",
|
|
28
|
+
"totalParallelEstimate": "2h 15m",
|
|
29
|
+
"waves": [
|
|
30
|
+
{ "wave": 1, "tasks": ["T1"], "estimate": "30m", "note": "Foundation — must complete before anything else" },
|
|
31
|
+
{ "wave": 2, "tasks": ["T2", "T3"], "estimate": "45m", "note": "Parallel — independent of each other" },
|
|
32
|
+
{ "wave": 3, "tasks": ["T4", "T5"], "estimate": "60m", "note": "Integration — requires wave 2 output" }
|
|
33
|
+
],
|
|
34
|
+
"highUncertaintyTasks": ["T6 — no existing auth pattern to reference, consider spike first"]
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Communication
|
|
39
|
+
- Reports estimated plan to: `plan-validator`
|
|
40
|
+
- Receives instructions from: exec-plan orchestrator (SKILL.md)
|
|
41
|
+
|
|
42
|
+
## Domain Knowledge
|
|
43
|
+
Complexity signals: new file creation = minor baseline; modifying existing file = trivial baseline + proportional to change scope; schema changes with migrations = moderate; cross-cutting changes (multiple files) = major. Parallelization is only safe when tasks have no shared file writes. Always add 20% buffer to estimates for integration and debugging time.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plan-validator
|
|
3
|
+
role: Validates the execution plan for completeness against the original SPEC acceptance criteria
|
|
4
|
+
tools: [Read]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Plan Validator
|
|
8
|
+
|
|
9
|
+
## Role
|
|
10
|
+
Cross-checks the final execution plan against the original SPEC to verify that every acceptance criterion is covered by at least one task. Flags gaps, redundancies, and coverage ambiguities before implementation begins. Acts as the last gate before the plan is handed to the user for approval.
|
|
11
|
+
|
|
12
|
+
## Responsibilities
|
|
13
|
+
- Map each SPEC acceptance criterion to one or more tasks in the plan
|
|
14
|
+
- Flag criteria with no corresponding task (coverage gap)
|
|
15
|
+
- Flag tasks with no traceable SPEC criterion (scope creep risk)
|
|
16
|
+
- Verify that every feature task has a corresponding test task
|
|
17
|
+
- Check that error cases and edge cases mentioned in the SPEC are covered
|
|
18
|
+
- Confirm the wave plan has no dependency violations (no task requires output from a later wave)
|
|
19
|
+
|
|
20
|
+
## Input
|
|
21
|
+
- Original SPEC document path
|
|
22
|
+
- Estimated plan with waves from `plan-estimator`
|
|
23
|
+
- Task list from `plan-decomposer`
|
|
24
|
+
|
|
25
|
+
## Output
|
|
26
|
+
Validation report:
|
|
27
|
+
```markdown
|
|
28
|
+
## Plan Validation Report
|
|
29
|
+
|
|
30
|
+
### Coverage Matrix
|
|
31
|
+
| SPEC Criterion | Covered By | Status |
|
|
32
|
+
|----------------|------------|--------|
|
|
33
|
+
| User can register with email | T1, T3, T7 | Covered |
|
|
34
|
+
| Password must be hashed | T2 | Covered |
|
|
35
|
+
| Rate limiting on login | — | **MISSING** |
|
|
36
|
+
|
|
37
|
+
### Issues Found
|
|
38
|
+
- **GAP**: SPEC section 2.3 "rate limiting" has no corresponding task — add before implementing
|
|
39
|
+
- **SCOPE CREEP**: T9 "add analytics tracking" has no SPEC criterion — remove or add to SPEC
|
|
40
|
+
|
|
41
|
+
### Test Coverage
|
|
42
|
+
- 8/10 feature tasks have corresponding test tasks (T5, T8 missing tests)
|
|
43
|
+
|
|
44
|
+
### Wave Integrity
|
|
45
|
+
- All wave dependencies valid: no forward-reference violations detected
|
|
46
|
+
|
|
47
|
+
**Verdict**: Plan requires 2 fixes before execution.
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Communication
|
|
51
|
+
- Reports validation result to: orchestrator / user
|
|
52
|
+
- Receives instructions from: exec-plan orchestrator (SKILL.md)
|
|
53
|
+
|
|
54
|
+
## Domain Knowledge
|
|
55
|
+
Traceability matrix: every acceptance criterion must map to at least one implementation task AND one test task. Gap detection: scan SPEC for action verbs (can, must, should, will) and verify each has a task. Wave integrity check: for each task in wave N, verify all its dependencies are in waves < N. A plan is valid when gaps = 0, all feature tasks have tests, and wave integrity passes.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: exec-plan-orchestrator
|
|
3
|
+
type: orchestrator
|
|
4
|
+
agents: [decomposer, dependency-mapper, estimator, validator]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Exec-Plan Orchestrator
|
|
8
|
+
|
|
9
|
+
## Workflow
|
|
10
|
+
|
|
11
|
+
### Phase 1: Decompose
|
|
12
|
+
- **Agent**: decomposer
|
|
13
|
+
- **Input**: SPEC document (phases, requirements, acceptance criteria)
|
|
14
|
+
- **Output**: Flat task list `[{taskId, title, phase, files[], description}]`
|
|
15
|
+
- **Parallel**: no — sequential read of SPEC structure
|
|
16
|
+
|
|
17
|
+
### Phase 2: Map Dependencies
|
|
18
|
+
- **Agent**: dependency-mapper
|
|
19
|
+
- **Input**: Task list from Phase 1
|
|
20
|
+
- **Output**: DAG as adjacency list `{taskId: [dependsOn[]]}` + critical path
|
|
21
|
+
- **Parallel**: no — requires complete task list to resolve cross-task deps
|
|
22
|
+
|
|
23
|
+
### Phase 3: Estimate
|
|
24
|
+
- **Agent**: estimator
|
|
25
|
+
- **Input**: Task list + DAG from Phases 1–2
|
|
26
|
+
- **Output**: Per-task complexity score, parallelization opportunities, estimated effort tiers (S/M/L)
|
|
27
|
+
- **Parallel**: yes — each task scored independently
|
|
28
|
+
|
|
29
|
+
### Phase 4: Validate
|
|
30
|
+
- **Agent**: validator
|
|
31
|
+
- **Input**: Task list + SPEC requirements + acceptance criteria
|
|
32
|
+
- **Output**: Coverage report — uncovered requirements flagged, missing tasks identified
|
|
33
|
+
- **Parallel**: no — cross-references full SPEC against task list
|
|
34
|
+
|
|
35
|
+
### Phase 5: Output Plan
|
|
36
|
+
- **Agent**: orchestrator (self)
|
|
37
|
+
- **Input**: All outputs from Phases 1–4
|
|
38
|
+
- **Output**: Execution plan with DAG visualization, effort summary, parallelization batches
|
|
39
|
+
- **Parallel**: no
|
|
40
|
+
|
|
41
|
+
## DAG (Dependency Graph)
|
|
42
|
+
|
|
43
|
+
```mermaid
|
|
44
|
+
graph TD
|
|
45
|
+
A[Phase 1: Decomposer] --> B[Phase 2: Dependency-Mapper]
|
|
46
|
+
A --> D[Phase 4: Validator]
|
|
47
|
+
B --> C[Phase 3: Estimator\nparallel per task]
|
|
48
|
+
C --> E[Phase 5: Output Plan]
|
|
49
|
+
D --> E
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Error Handling
|
|
53
|
+
|
|
54
|
+
| Phase | Failure Mode | Strategy |
|
|
55
|
+
|-------|-------------|----------|
|
|
56
|
+
| Phase 1 | SPEC missing or malformed | Escalate — cannot proceed without SPEC |
|
|
57
|
+
| Phase 1 | SPEC has no phases defined | Treat entire SPEC as single phase, continue |
|
|
58
|
+
| Phase 2 | Circular dependency detected | Flag cycle, escalate to user for resolution |
|
|
59
|
+
| Phase 2 | Isolated task (no deps, no dependents) | Include as standalone, note in plan |
|
|
60
|
+
| Phase 3 | Estimator cannot classify complexity | Default to M (medium), flag for manual review |
|
|
61
|
+
| Phase 4 | Uncovered requirements found | Add placeholder tasks, mark as `needs-spec-clarification` |
|
|
62
|
+
| Phase 5 | DAG too large to render (>20 nodes) | Render phase-level DAG only, link to task list |
|
|
63
|
+
|
|
64
|
+
## Scalability Modes
|
|
65
|
+
|
|
66
|
+
| Mode | When | Agents Used |
|
|
67
|
+
|------|------|-------------|
|
|
68
|
+
| Full | Normal operation | decomposer + dependency-mapper + estimator + validator |
|
|
69
|
+
| Reduced | Small SPEC (<5 tasks) | decomposer + dependency-mapper only |
|
|
70
|
+
| Single | Quick task list | decomposer only — flat list without DAG or estimates |
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Complexity Scoring Rubric
|
|
2
|
+
|
|
3
|
+
Use this rubric to decide whether a task needs an ExecPlan and how to decompose it.
|
|
4
|
+
|
|
5
|
+
## Scoring Dimensions
|
|
6
|
+
|
|
7
|
+
Score each dimension 1–3. Total determines the approach.
|
|
8
|
+
|
|
9
|
+
### Dimension 1: File Scope
|
|
10
|
+
|
|
11
|
+
| Score | Criteria |
|
|
12
|
+
|-------|----------|
|
|
13
|
+
| 1 | 1–2 files touched |
|
|
14
|
+
| 2 | 3–5 files touched |
|
|
15
|
+
| 3 | 6+ files, or new module created |
|
|
16
|
+
|
|
17
|
+
### Dimension 2: Dependency Depth
|
|
18
|
+
|
|
19
|
+
| Score | Criteria |
|
|
20
|
+
|-------|----------|
|
|
21
|
+
| 1 | No external deps; isolated change |
|
|
22
|
+
| 2 | 1–2 existing modules depended on |
|
|
23
|
+
| 3 | Cross-layer dependencies; DB schema; API contract changes |
|
|
24
|
+
|
|
25
|
+
### Dimension 3: Ambiguity
|
|
26
|
+
|
|
27
|
+
| Score | Criteria |
|
|
28
|
+
|-------|----------|
|
|
29
|
+
| 1 | Requirement is explicit; no design decisions needed |
|
|
30
|
+
| 2 | 1–2 decision points that need resolution before coding |
|
|
31
|
+
| 3 | Architecture-level decisions; unknown patterns; research needed |
|
|
32
|
+
|
|
33
|
+
### Dimension 4: Test Surface
|
|
34
|
+
|
|
35
|
+
| Score | Criteria |
|
|
36
|
+
|-------|----------|
|
|
37
|
+
| 1 | Existing test file; trivial assertion additions |
|
|
38
|
+
| 2 | New test file needed; mocking required |
|
|
39
|
+
| 3 | Integration tests; DB fixtures; snapshot regeneration |
|
|
40
|
+
|
|
41
|
+
### Dimension 5: Session Risk
|
|
42
|
+
|
|
43
|
+
| Score | Criteria |
|
|
44
|
+
|-------|----------|
|
|
45
|
+
| 1 | Fits in one session; easy to resume |
|
|
46
|
+
| 2 | May span sessions; partial state is safe |
|
|
47
|
+
| 3 | Long-running; partial state is dangerous; handoff required |
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Decision Matrix
|
|
52
|
+
|
|
53
|
+
| Total Score | Approach |
|
|
54
|
+
|-------------|----------|
|
|
55
|
+
| 5–7 | Plan Mode (in-head plan, no file needed) |
|
|
56
|
+
| 8–10 | Light ExecPlan (phases only, no inline patterns) |
|
|
57
|
+
| 11–13 | Full ExecPlan (all fields, inline patterns, phase gates) |
|
|
58
|
+
| 14–15 | ExecPlan + parallel research before starting |
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Decomposition Rules
|
|
63
|
+
|
|
64
|
+
When total ≥ 11, decompose into phases:
|
|
65
|
+
|
|
66
|
+
1. **One phase = one deployable unit** — each phase leaves the codebase in a working state
|
|
67
|
+
2. **Max 3 scenarios per phase** — more means the phase is too large; split it
|
|
68
|
+
3. **Phase gate before next phase** — build + tests must pass at each boundary
|
|
69
|
+
4. **No implicit dependencies between phases** — phase 2 must not assume phase 1 code style; document patterns inline
|
|
70
|
+
|
|
71
|
+
## Anti-patterns
|
|
72
|
+
|
|
73
|
+
- Scoring 1 on all dimensions then creating an ExecPlan → overhead without benefit
|
|
74
|
+
- Scoring 3 on ambiguity without resolving decisions first → plan will fail
|
|
75
|
+
- Skipping phase gates to go faster → regressions compound
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# ExecPlan: {{FEATURE_NAME}}
|
|
2
|
+
|
|
3
|
+
## Meta
|
|
4
|
+
|
|
5
|
+
| Field | Value |
|
|
6
|
+
|-------|-------|
|
|
7
|
+
| SPEC | `.claude/vibe/specs/{{FEATURE_NAME}}.md` |
|
|
8
|
+
| Feature | `.claude/vibe/features/{{FEATURE_NAME}}.feature` |
|
|
9
|
+
| Generated | {{GENERATED_DATE}} |
|
|
10
|
+
| Phases | {{PHASE_COUNT}} |
|
|
11
|
+
| Scenarios | {{SCENARIO_COUNT}} |
|
|
12
|
+
| Estimated effort | {{EFFORT_ESTIMATE}} |
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Pre-flight Checks
|
|
17
|
+
|
|
18
|
+
Run these before starting any phase. All must pass.
|
|
19
|
+
|
|
20
|
+
- [ ] `npm run build` — clean build
|
|
21
|
+
- [ ] `npx vitest run` — baseline tests pass ({{BASELINE_TEST_COUNT}} tests)
|
|
22
|
+
- [ ] Required files exist:
|
|
23
|
+
- `{{REQUIRED_FILE_1}}`
|
|
24
|
+
- `{{REQUIRED_FILE_2}}`
|
|
25
|
+
- [ ] Dependencies installed: `{{DEPENDENCY_CHECK_COMMAND}}`
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Phase 1: {{PHASE_1_NAME}}
|
|
30
|
+
|
|
31
|
+
### Environment
|
|
32
|
+
|
|
33
|
+
| Item | Detail |
|
|
34
|
+
|------|--------|
|
|
35
|
+
| Files to modify | `{{PHASE_1_MODIFY_FILES}}` |
|
|
36
|
+
| Files to create | `{{PHASE_1_CREATE_FILES}}` |
|
|
37
|
+
| Dependencies | `{{PHASE_1_DEPENDENCIES}}` |
|
|
38
|
+
| Pattern to follow | See inline snippet below |
|
|
39
|
+
|
|
40
|
+
**Pattern (copy from codebase, do not paraphrase):**
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
{{PHASE_1_PATTERN_SNIPPET}}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Scenario 1.1: {{SCENARIO_1_1_NAME}}
|
|
47
|
+
|
|
48
|
+
**REQ**: {{REQ_ID}}
|
|
49
|
+
|
|
50
|
+
**Given**: {{GIVEN_CONDITION}}
|
|
51
|
+
→ Setup:
|
|
52
|
+
```typescript
|
|
53
|
+
{{SETUP_CODE}}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**When**: {{ACTION}}
|
|
57
|
+
→ Implement in `{{TARGET_FILE}}`, after line containing `{{ANCHOR_TEXT}}`:
|
|
58
|
+
```typescript
|
|
59
|
+
{{IMPLEMENTATION_SNIPPET}}
|
|
60
|
+
```
|
|
61
|
+
Imports needed: `{{IMPORTS_LIST}}`
|
|
62
|
+
|
|
63
|
+
**Then**: {{EXPECTED_RESULT}}
|
|
64
|
+
→ Verify:
|
|
65
|
+
```bash
|
|
66
|
+
{{VERIFY_COMMAND}}
|
|
67
|
+
```
|
|
68
|
+
Expected output: `{{EXPECTED_OUTPUT}}`
|
|
69
|
+
Fallback if fails: {{FALLBACK_INSTRUCTION}}
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
### Scenario 1.2: {{SCENARIO_1_2_NAME}}
|
|
74
|
+
|
|
75
|
+
**Given**: {{GIVEN_CONDITION}}
|
|
76
|
+
→ Setup: {{SETUP_INSTRUCTION}}
|
|
77
|
+
|
|
78
|
+
**When**: {{ACTION}}
|
|
79
|
+
→ Implement: {{IMPLEMENTATION_INSTRUCTION}}
|
|
80
|
+
|
|
81
|
+
**Then**: {{EXPECTED_RESULT}}
|
|
82
|
+
→ Verify: `{{VERIFY_COMMAND}}`
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
### Phase 1 Gate
|
|
87
|
+
|
|
88
|
+
- [ ] `npm run build` — no type errors
|
|
89
|
+
- [ ] `npx vitest run {{PHASE_1_TEST_FILES}}` — all pass
|
|
90
|
+
- [ ] `npx tsc --noEmit` — clean
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Phase 2: {{PHASE_2_NAME}}
|
|
95
|
+
|
|
96
|
+
### Environment
|
|
97
|
+
|
|
98
|
+
| Item | Detail |
|
|
99
|
+
|------|--------|
|
|
100
|
+
| Files to modify | `{{PHASE_2_MODIFY_FILES}}` |
|
|
101
|
+
| Files to create | `{{PHASE_2_CREATE_FILES}}` |
|
|
102
|
+
| Dependencies | `{{PHASE_2_DEPENDENCIES}}` |
|
|
103
|
+
|
|
104
|
+
### Scenario 2.1: {{SCENARIO_2_1_NAME}}
|
|
105
|
+
|
|
106
|
+
**Given**: {{GIVEN_CONDITION}}
|
|
107
|
+
→ Setup: {{SETUP_INSTRUCTION}}
|
|
108
|
+
|
|
109
|
+
**When**: {{ACTION}}
|
|
110
|
+
→ Implement: {{IMPLEMENTATION_INSTRUCTION}}
|
|
111
|
+
|
|
112
|
+
**Then**: {{EXPECTED_RESULT}}
|
|
113
|
+
→ Verify: `{{VERIFY_COMMAND}}`
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
### Phase 2 Gate
|
|
118
|
+
|
|
119
|
+
- [ ] `npm run build`
|
|
120
|
+
- [ ] `npx vitest run {{PHASE_2_TEST_FILES}}`
|
|
121
|
+
- [ ] `npx tsc --noEmit`
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Completion Criteria
|
|
126
|
+
|
|
127
|
+
- [ ] All scenarios passing
|
|
128
|
+
- [ ] Coverage: ≥ {{COVERAGE_THRESHOLD}}%
|
|
129
|
+
- [ ] No regressions in existing tests
|
|
130
|
+
- [ ] `npm run build` exits 0
|
|
131
|
+
- [ ] RTM generated: `generateTraceabilityMatrix("{{FEATURE_NAME}}")`
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Handoff (if incomplete)
|
|
136
|
+
|
|
137
|
+
Save state before ending session:
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
save_memory("execplan-{{FEATURE_NAME}}", {
|
|
141
|
+
"last_completed": "Phase X, Scenario Y.Z",
|
|
142
|
+
"next_step": "{{NEXT_STEP_DESCRIPTION}}",
|
|
143
|
+
"blockers": "{{BLOCKERS_IF_ANY}}"
|
|
144
|
+
})
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Resume: `/vibe.utils --continue` → load this file.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Git Worktree: When to Use Decision Guide
|
|
2
|
+
|
|
3
|
+
## Decision Tree
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
Need to work on a different branch?
|
|
7
|
+
│
|
|
8
|
+
├─ How long? < 5 minutes
|
|
9
|
+
│ └─ Use git stash + switch
|
|
10
|
+
│
|
|
11
|
+
├─ Will you need to run tests/build?
|
|
12
|
+
│ └─ No → git stash is fine
|
|
13
|
+
│ Yes → Consider worktree
|
|
14
|
+
│
|
|
15
|
+
└─ Can you commit current work?
|
|
16
|
+
└─ Yes → commit + switch (simplest)
|
|
17
|
+
No → worktree or stash
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Use Worktree When
|
|
21
|
+
|
|
22
|
+
| Scenario | Reason |
|
|
23
|
+
|----------|--------|
|
|
24
|
+
| Reviewing a PR that needs running | Avoids dirty working tree; test in isolation |
|
|
25
|
+
| Critical hotfix while mid-feature | Keep feature branch untouched |
|
|
26
|
+
| A/B testing two implementations | Both runnable simultaneously |
|
|
27
|
+
| Long-running parallel experiment | Work on both without context switching |
|
|
28
|
+
|
|
29
|
+
## Skip Worktree When
|
|
30
|
+
|
|
31
|
+
| Scenario | Better Alternative |
|
|
32
|
+
|----------|--------------------|
|
|
33
|
+
| Quick config change on another branch | `git stash && git switch` |
|
|
34
|
+
| Just reading code on another branch | `git show branch:file` |
|
|
35
|
+
| Already committed current work | `git switch` directly |
|
|
36
|
+
| Change touches same files | Merging will conflict regardless |
|
|
37
|
+
| Repo uses large node_modules | Each worktree needs separate install — expensive |
|
|
38
|
+
|
|
39
|
+
## Cost/Benefit
|
|
40
|
+
|
|
41
|
+
| Factor | Worktree Cost |
|
|
42
|
+
|--------|--------------|
|
|
43
|
+
| Disk space | Full working copy per worktree |
|
|
44
|
+
| `npm install` / `pnpm install` | Required in each worktree |
|
|
45
|
+
| Mental overhead | Tracking multiple worktree paths |
|
|
46
|
+
| Cleanup discipline | Must `git worktree remove` when done |
|
|
47
|
+
|
|
48
|
+
**Rule of thumb**: If the task is under 15 minutes, `git stash` is almost always faster than setting up a worktree.
|
|
49
|
+
|
|
50
|
+
## Gotchas
|
|
51
|
+
|
|
52
|
+
- A branch can only be checked out in **one** worktree at a time
|
|
53
|
+
- Worktrees share `.git` — commits in any worktree are immediately visible in all
|
|
54
|
+
- Forgetting to remove worktrees leaves stale locks — run `git worktree prune` periodically
|
|
55
|
+
- CI/CD hooks may not run correctly outside the main worktree path
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: context-summarizer
|
|
3
|
+
role: Summarizes decisions made during the session and their rationale
|
|
4
|
+
tools: [Read, Bash]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Context Summarizer
|
|
8
|
+
|
|
9
|
+
## Role
|
|
10
|
+
Distills the session's reasoning into a compact decision log. Captures the "why" behind architectural and implementation choices so the next session (or developer) doesn't re-litigate resolved questions.
|
|
11
|
+
|
|
12
|
+
## Responsibilities
|
|
13
|
+
- Review recent conversation context for key decisions and trade-offs
|
|
14
|
+
- Summarize rejected alternatives and the reason they were rejected
|
|
15
|
+
- Identify blockers that were encountered and how they were resolved
|
|
16
|
+
- Note any assumptions made that should be validated later
|
|
17
|
+
- Flag unresolved debates or open questions for the next session
|
|
18
|
+
|
|
19
|
+
## Input
|
|
20
|
+
- State snapshot from state-collector
|
|
21
|
+
- Session conversation context (decisions, debates, trade-offs discussed)
|
|
22
|
+
|
|
23
|
+
## Output
|
|
24
|
+
Decision log section for HANDOFF.md:
|
|
25
|
+
|
|
26
|
+
```markdown
|
|
27
|
+
## Decisions & Rationale
|
|
28
|
+
|
|
29
|
+
### Decided: JWT over sessions
|
|
30
|
+
Chose stateless JWT for auth because the API must support mobile clients.
|
|
31
|
+
Rejected: server-side sessions — would require sticky sessions in Kubernetes.
|
|
32
|
+
|
|
33
|
+
### Decided: Skip refresh token for now
|
|
34
|
+
Deferred refresh token implementation — out of scope for this sprint.
|
|
35
|
+
Risk: tokens expire after 1h, users must re-login.
|
|
36
|
+
|
|
37
|
+
### Open Questions
|
|
38
|
+
- Should we store token revocation list in Redis or Postgres?
|
|
39
|
+
- Confirm with team: is 1h token TTL acceptable for mobile?
|
|
40
|
+
|
|
41
|
+
### Assumptions Made
|
|
42
|
+
- Mobile client handles 401 → re-login flow gracefully
|
|
43
|
+
- Redis will be available in production (not confirmed)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Communication
|
|
47
|
+
- Reports findings to: document-writer
|
|
48
|
+
- Receives instructions from: orchestrator (handoff skill)
|
|
49
|
+
|
|
50
|
+
## Domain Knowledge
|
|
51
|
+
Decisions without rationale are useless. Every decision entry must include: what was decided, why, and what was rejected with reason. Keep each entry under 3 lines.
|