@su-record/vibe 2.8.24 → 2.8.25
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/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/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,86 @@
|
|
|
1
|
+
# Server vs Client Component Decision Guide
|
|
2
|
+
|
|
3
|
+
## Decision Tree
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
Does this component need any of the following?
|
|
7
|
+
│
|
|
8
|
+
├─ useState / useReducer → Client
|
|
9
|
+
├─ useEffect / lifecycle hooks → Client
|
|
10
|
+
├─ Browser APIs (window, document, localStorage) → Client
|
|
11
|
+
├─ Event handlers (onClick, onChange, onSubmit) → Client
|
|
12
|
+
├─ Third-party hooks (useRouter, useForm, etc.) → Client
|
|
13
|
+
│
|
|
14
|
+
└─ None of the above? → Server (default)
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Default: Server Component
|
|
18
|
+
|
|
19
|
+
Next.js App Router defaults all components to Server. Only add `"use client"` when required.
|
|
20
|
+
|
|
21
|
+
**Server components can:**
|
|
22
|
+
- Fetch data directly (no useEffect needed)
|
|
23
|
+
- Access backend resources (DB, filesystem, env secrets)
|
|
24
|
+
- Reduce client bundle size (zero JS shipped)
|
|
25
|
+
- Use `async/await` at the component level
|
|
26
|
+
|
|
27
|
+
```tsx
|
|
28
|
+
// Server component — no directive needed
|
|
29
|
+
async function UserProfile({ id }: { id: string }) {
|
|
30
|
+
const user = await db.user.findUnique({ where: { id } });
|
|
31
|
+
return <div>{user?.name}</div>;
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Client Component
|
|
36
|
+
|
|
37
|
+
Add `"use client"` at the top of the file.
|
|
38
|
+
|
|
39
|
+
```tsx
|
|
40
|
+
"use client";
|
|
41
|
+
import { useState } from "react";
|
|
42
|
+
|
|
43
|
+
export function Counter() {
|
|
44
|
+
const [count, setCount] = useState(0);
|
|
45
|
+
return <button onClick={() => setCount(c => c + 1)}>{count}</button>;
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Composition Pattern: Push Client Down
|
|
50
|
+
|
|
51
|
+
Keep client boundary as low as possible. Wrap only the interactive slice, not the whole page.
|
|
52
|
+
|
|
53
|
+
```tsx
|
|
54
|
+
// Bad: entire section becomes client
|
|
55
|
+
"use client";
|
|
56
|
+
async function ProductPage({ id }: { id: string }) { ... }
|
|
57
|
+
|
|
58
|
+
// Good: server fetches, client handles interaction
|
|
59
|
+
async function ProductPage({ id }: { id: string }) {
|
|
60
|
+
const product = await getProduct(id);
|
|
61
|
+
return (
|
|
62
|
+
<div>
|
|
63
|
+
<ProductDetails product={product} /> {/* server */}
|
|
64
|
+
<AddToCartButton productId={id} /> {/* client — small, isolated */}
|
|
65
|
+
</div>
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Gotchas
|
|
71
|
+
|
|
72
|
+
| Mistake | Effect | Fix |
|
|
73
|
+
|---------|--------|-----|
|
|
74
|
+
| Importing a Client component into a Server component that passes a non-serializable prop | Runtime error | Only pass serializable data (string, number, plain object) |
|
|
75
|
+
| `"use client"` on a file that only uses server features | Unnecessary client bundle | Remove directive |
|
|
76
|
+
| `async` component without Suspense wrapper | Blocks entire parent render | Wrap in `<Suspense fallback={...}>` |
|
|
77
|
+
| Calling `React.cache()` in a Client component | No effect — cache is server-only | Move data fetching to Server component |
|
|
78
|
+
| Secrets in Client component | Exposed to browser | Move fetch to Server component or API route |
|
|
79
|
+
|
|
80
|
+
## Data Fetching Boundary
|
|
81
|
+
|
|
82
|
+
| Where | Pattern |
|
|
83
|
+
|-------|---------|
|
|
84
|
+
| Server component | `await fetch()` / direct DB call |
|
|
85
|
+
| Client component | `useEffect` + fetch, or SWR/React Query |
|
|
86
|
+
| Shared across server components | Wrap with `React.cache()` for per-request dedup |
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: vibe-docs
|
|
3
|
+
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
|
+
---
|
|
8
|
+
|
|
9
|
+
# vibe.docs — Project Documentation Generator
|
|
10
|
+
|
|
11
|
+
Generate or update project documentation by analyzing the actual codebase.
|
|
12
|
+
|
|
13
|
+
## Subcommands
|
|
14
|
+
|
|
15
|
+
### `/vibe.docs readme` — README Generation
|
|
16
|
+
|
|
17
|
+
Analyze the codebase and generate a complete README.md:
|
|
18
|
+
|
|
19
|
+
1. **Detect project nature**: Read package.json, CLAUDE.md, existing README
|
|
20
|
+
2. **Extract key info**: Tech stack, installation, usage, API surface
|
|
21
|
+
3. **Generate sections**:
|
|
22
|
+
|
|
23
|
+
```markdown
|
|
24
|
+
# Project Name
|
|
25
|
+
> One-line description from package.json
|
|
26
|
+
|
|
27
|
+
## What is this?
|
|
28
|
+
[2-3 sentences explaining the problem and solution]
|
|
29
|
+
|
|
30
|
+
## Quick Start
|
|
31
|
+
[Installation + minimal usage example]
|
|
32
|
+
|
|
33
|
+
## Features
|
|
34
|
+
[Auto-detected from codebase — exported functions, CLI commands, API endpoints]
|
|
35
|
+
|
|
36
|
+
## Architecture
|
|
37
|
+
[High-level module diagram if 5+ source directories]
|
|
38
|
+
|
|
39
|
+
## Configuration
|
|
40
|
+
[Detected config files and their purposes]
|
|
41
|
+
|
|
42
|
+
## Development
|
|
43
|
+
[Build, test, lint commands from package.json scripts]
|
|
44
|
+
|
|
45
|
+
## License
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**Analysis approach:**
|
|
49
|
+
```
|
|
50
|
+
Read: package.json → name, description, scripts, dependencies
|
|
51
|
+
Glob: src/**/*.ts → module structure
|
|
52
|
+
Grep: pattern="export (function|class|const)" → public API surface
|
|
53
|
+
Grep: pattern="(app|router)\.(get|post|put|delete)" → API endpoints
|
|
54
|
+
Read: CLAUDE.md → project conventions
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### `/vibe.docs guide` — User Guide
|
|
58
|
+
|
|
59
|
+
Generate a step-by-step user guide:
|
|
60
|
+
|
|
61
|
+
1. **Installation**: Detect package manager, prerequisites
|
|
62
|
+
2. **Configuration**: Find all config files, document each option
|
|
63
|
+
3. **Usage**: Extract CLI commands or API usage patterns
|
|
64
|
+
4. **FAQ**: Common issues from error handling patterns
|
|
65
|
+
5. **Troubleshooting**: Known edge cases from test files
|
|
66
|
+
|
|
67
|
+
Output: `docs/GUIDE.md`
|
|
68
|
+
|
|
69
|
+
**Analysis approach:**
|
|
70
|
+
```
|
|
71
|
+
Read: package.json → bin, scripts, peerDependencies
|
|
72
|
+
Glob: src/cli/commands/*.ts → CLI command list
|
|
73
|
+
Grep: pattern="throw new|Error\(" → common error scenarios
|
|
74
|
+
Grep: pattern="(process\.env|config)\.\w+" → configuration options
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### `/vibe.docs arch` — Architecture Documentation
|
|
78
|
+
|
|
79
|
+
Generate architecture overview with diagrams:
|
|
80
|
+
|
|
81
|
+
1. **Module map**: Directory structure → responsibility mapping
|
|
82
|
+
2. **Dependency graph**: Import analysis → Mermaid diagram
|
|
83
|
+
3. **Data flow**: Entry points → processing → output
|
|
84
|
+
4. **Key decisions**: Extract from CLAUDE.md and code comments
|
|
85
|
+
|
|
86
|
+
Output: `docs/ARCHITECTURE.md`
|
|
87
|
+
|
|
88
|
+
**Mermaid diagram generation:**
|
|
89
|
+
```
|
|
90
|
+
Glob: src/**/ → module list
|
|
91
|
+
Grep: pattern="^import .+ from" → dependency edges
|
|
92
|
+
Read: CLAUDE.md → architecture notes
|
|
93
|
+
|
|
94
|
+
Generate:
|
|
95
|
+
graph TD
|
|
96
|
+
CLI[CLI Commands] --> Core[Core Logic]
|
|
97
|
+
Core --> Infra[Infrastructure]
|
|
98
|
+
Infra --> DB[(Database)]
|
|
99
|
+
Infra --> API[External APIs]
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### `/vibe.docs release` — Release Notes
|
|
103
|
+
|
|
104
|
+
Generate release notes from git history:
|
|
105
|
+
|
|
106
|
+
1. **Collect**: `git log` since last tag
|
|
107
|
+
2. **Classify**: feat/fix/refactor/docs/chore from commit messages
|
|
108
|
+
3. **Group**: By category with breaking changes highlighted
|
|
109
|
+
4. **Format**: Semantic versioning suggestion
|
|
110
|
+
|
|
111
|
+
Output: `RELEASE_NOTES.md` or append to `CHANGELOG.md`
|
|
112
|
+
|
|
113
|
+
**Output format:**
|
|
114
|
+
```markdown
|
|
115
|
+
## [x.y.z] - YYYY-MM-DD
|
|
116
|
+
|
|
117
|
+
### Breaking Changes
|
|
118
|
+
- ...
|
|
119
|
+
|
|
120
|
+
### Features
|
|
121
|
+
- feat: description (#PR)
|
|
122
|
+
|
|
123
|
+
### Bug Fixes
|
|
124
|
+
- fix: description (#PR)
|
|
125
|
+
|
|
126
|
+
### Other
|
|
127
|
+
- refactor/docs/chore items
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Pipeline Integration
|
|
131
|
+
|
|
132
|
+
`/vibe.docs` completes the development pipeline:
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
/vibe.spec → Design (what to build)
|
|
136
|
+
/vibe.run → Implement (build it)
|
|
137
|
+
/vibe.trace → Verify (prove it works)
|
|
138
|
+
/vibe.docs → Document (explain it)
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Auto-trigger after `/vibe.trace`
|
|
142
|
+
|
|
143
|
+
When `/vibe.trace` completes with all scenarios passing, suggest:
|
|
144
|
+
> "All scenarios verified. Run `/vibe.docs readme` to update documentation?"
|
|
145
|
+
|
|
146
|
+
## Guidelines
|
|
147
|
+
|
|
148
|
+
### DO
|
|
149
|
+
- Read the actual codebase before generating — never guess
|
|
150
|
+
- Preserve existing documentation that's still accurate
|
|
151
|
+
- Include concrete code examples from the actual project
|
|
152
|
+
- Keep language consistent with project (Korean/English based on CLAUDE.md)
|
|
153
|
+
- Use changelog-writer agent for `/vibe.docs release`
|
|
154
|
+
- Use api-documenter agent for API-heavy projects
|
|
155
|
+
- Use diagrammer agent for `/vibe.docs arch` Mermaid generation
|
|
156
|
+
|
|
157
|
+
### DON'T
|
|
158
|
+
- Don't generate placeholder text ("Lorem ipsum", "TODO: fill in")
|
|
159
|
+
- Don't document internal implementation details in user-facing docs
|
|
160
|
+
- Don't create files without reading existing ones first
|
|
161
|
+
- Don't assume features — verify by reading code
|
|
162
|
+
|
|
163
|
+
## Quality Checklist
|
|
164
|
+
|
|
165
|
+
Before finalizing any document:
|
|
166
|
+
|
|
167
|
+
- [ ] All code examples are runnable (copy-paste ready)
|
|
168
|
+
- [ ] Installation steps tested against package.json
|
|
169
|
+
- [ ] Links and paths are valid
|
|
170
|
+
- [ ] No placeholder text remaining
|
|
171
|
+
- [ ] Consistent with project language (Korean/English)
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Architecture: {{PROJECT_NAME}}
|
|
2
|
+
|
|
3
|
+
> Version: {{VERSION}} | Updated: {{DATE}}
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
{{2-3 SENTENCES: WHAT THIS SYSTEM DOES AND ITS PRIMARY ARCHITECTURAL APPROACH.}}
|
|
8
|
+
|
|
9
|
+
## System Diagram
|
|
10
|
+
|
|
11
|
+
```mermaid
|
|
12
|
+
graph TD
|
|
13
|
+
{{ENTRY_POINT}}[{{ENTRY_LABEL}}] --> {{MODULE_A}}[{{MODULE_A_LABEL}}]
|
|
14
|
+
{{MODULE_A}} --> {{MODULE_B}}[{{MODULE_B_LABEL}}]
|
|
15
|
+
{{MODULE_A}} --> {{MODULE_C}}[{{MODULE_C_LABEL}}]
|
|
16
|
+
{{MODULE_B}} --> {{STORE}}[({{STORE_LABEL}})]
|
|
17
|
+
{{MODULE_C}} --> {{EXTERNAL}}[{{EXTERNAL_SERVICE_LABEL}}]
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
> Replace nodes above based on actual `import` analysis. Run:
|
|
21
|
+
> `grep -r "^import .* from" src/ | sed 's/.*from //' | sort | uniq` to get dependency edges.
|
|
22
|
+
|
|
23
|
+
## Module Responsibilities
|
|
24
|
+
|
|
25
|
+
| Module / Directory | Responsibility | Key Files |
|
|
26
|
+
|--------------------|---------------|-----------|
|
|
27
|
+
| `{{MODULE_1}}/` | {{RESPONSIBILITY}} | `{{KEY_FILE}}` |
|
|
28
|
+
| `{{MODULE_2}}/` | {{RESPONSIBILITY}} | `{{KEY_FILE}}` |
|
|
29
|
+
| `{{MODULE_3}}/` | {{RESPONSIBILITY}} | `{{KEY_FILE}}` |
|
|
30
|
+
|
|
31
|
+
## Data Flow
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
{{INPUT_SOURCE}}
|
|
35
|
+
↓ {{STEP_1_DESCRIPTION}}
|
|
36
|
+
{{PROCESSING_MODULE}}
|
|
37
|
+
↓ {{STEP_2_DESCRIPTION}}
|
|
38
|
+
{{OUTPUT_TARGET}}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Key Data Entities
|
|
42
|
+
|
|
43
|
+
| Entity | Where Defined | Storage |
|
|
44
|
+
|--------|--------------|---------|
|
|
45
|
+
| `{{ENTITY_1}}` | `{{FILE_PATH}}` | {{DB / FILE / MEMORY}} |
|
|
46
|
+
| `{{ENTITY_2}}` | `{{FILE_PATH}}` | {{DB / FILE / MEMORY}} |
|
|
47
|
+
|
|
48
|
+
## External Dependencies
|
|
49
|
+
|
|
50
|
+
| Service | Purpose | Auth Method |
|
|
51
|
+
|---------|---------|-------------|
|
|
52
|
+
| `{{SERVICE_1}}` | {{PURPOSE}} | {{API_KEY / OAUTH / NONE}} |
|
|
53
|
+
| `{{SERVICE_2}}` | {{PURPOSE}} | {{AUTH_METHOD}} |
|
|
54
|
+
|
|
55
|
+
## Key Decisions
|
|
56
|
+
|
|
57
|
+
| Decision | Chosen Approach | Alternatives Considered | Rationale |
|
|
58
|
+
|----------|----------------|------------------------|-----------|
|
|
59
|
+
| {{DECISION_1}} | {{CHOICE}} | {{ALTERNATIVES}} | {{WHY}} |
|
|
60
|
+
| {{DECISION_2}} | {{CHOICE}} | {{ALTERNATIVES}} | {{WHY}} |
|
|
61
|
+
|
|
62
|
+
## Constraints & Non-Goals
|
|
63
|
+
|
|
64
|
+
**Constraints:**
|
|
65
|
+
- {{CONSTRAINT_1}} (e.g., "Must work offline")
|
|
66
|
+
- {{CONSTRAINT_2}}
|
|
67
|
+
|
|
68
|
+
**Non-goals (out of scope):**
|
|
69
|
+
- {{NON_GOAL_1}}
|
|
70
|
+
- {{NON_GOAL_2}}
|
|
71
|
+
|
|
72
|
+
## Local Development Setup
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
{{SETUP_COMMANDS}}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Further Reading
|
|
79
|
+
|
|
80
|
+
- {{INTERNAL_LINK_OR_DOC}}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# {{PROJECT_NAME}}
|
|
2
|
+
|
|
3
|
+
> {{ONE_LINE_DESCRIPTION_FROM_PACKAGE_JSON}}
|
|
4
|
+
|
|
5
|
+
## What is this?
|
|
6
|
+
|
|
7
|
+
{{2-3 SENTENCES: THE PROBLEM THIS PROJECT SOLVES AND HOW IT SOLVES IT.}}
|
|
8
|
+
|
|
9
|
+
## Quick Start
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# Install
|
|
13
|
+
{{PACKAGE_MANAGER}} install {{PACKAGE_NAME}}
|
|
14
|
+
|
|
15
|
+
# Minimal usage example
|
|
16
|
+
{{USAGE_EXAMPLE}}
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Features
|
|
20
|
+
|
|
21
|
+
- **{{FEATURE_1}}** — {{BRIEF_DESCRIPTION}}
|
|
22
|
+
- **{{FEATURE_2}}** — {{BRIEF_DESCRIPTION}}
|
|
23
|
+
- **{{FEATURE_3}}** — {{BRIEF_DESCRIPTION}}
|
|
24
|
+
|
|
25
|
+
## Architecture
|
|
26
|
+
|
|
27
|
+
> Include this section if the project has 5+ source directories.
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
{{PROJECT_NAME}}/
|
|
31
|
+
├── {{DIR_1}}/ # {{RESPONSIBILITY_1}}
|
|
32
|
+
├── {{DIR_2}}/ # {{RESPONSIBILITY_2}}
|
|
33
|
+
└── {{DIR_3}}/ # {{RESPONSIBILITY_3}}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Configuration
|
|
37
|
+
|
|
38
|
+
| File | Purpose |
|
|
39
|
+
|------|---------|
|
|
40
|
+
| `{{CONFIG_FILE_1}}` | {{PURPOSE}} |
|
|
41
|
+
| `{{CONFIG_FILE_2}}` | {{PURPOSE}} |
|
|
42
|
+
|
|
43
|
+
**Key environment variables:**
|
|
44
|
+
|
|
45
|
+
| Variable | Required | Default | Description |
|
|
46
|
+
|----------|----------|---------|-------------|
|
|
47
|
+
| `{{ENV_VAR_1}}` | Yes / No | `{{DEFAULT}}` | {{DESCRIPTION}} |
|
|
48
|
+
|
|
49
|
+
## Development
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Install dependencies
|
|
53
|
+
{{INSTALL_COMMAND}}
|
|
54
|
+
|
|
55
|
+
# Build
|
|
56
|
+
{{BUILD_COMMAND}}
|
|
57
|
+
|
|
58
|
+
# Test
|
|
59
|
+
{{TEST_COMMAND}}
|
|
60
|
+
|
|
61
|
+
# Lint
|
|
62
|
+
{{LINT_COMMAND}}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## API Reference
|
|
66
|
+
|
|
67
|
+
> Include if the project exposes a public API.
|
|
68
|
+
|
|
69
|
+
### `{{FUNCTION_OR_CLASS_NAME}}`
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
{{FUNCTION_SIGNATURE}}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
{{DESCRIPTION}}
|
|
76
|
+
|
|
77
|
+
**Parameters:**
|
|
78
|
+
- `{{PARAM_1}}` — {{TYPE}}: {{DESCRIPTION}}
|
|
79
|
+
|
|
80
|
+
**Returns:** `{{RETURN_TYPE}}` — {{DESCRIPTION}}
|
|
81
|
+
|
|
82
|
+
## License
|
|
83
|
+
|
|
84
|
+
{{LICENSE}} — see [LICENSE](./LICENSE)
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Release Notes: {{PROJECT_NAME}}
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
## [{{VERSION}}] — {{RELEASE_DATE}}
|
|
6
|
+
|
|
7
|
+
> {{ONE_SENTENCE_SUMMARY_OF_THIS_RELEASE}}
|
|
8
|
+
|
|
9
|
+
### Breaking Changes
|
|
10
|
+
|
|
11
|
+
> If none, remove this section.
|
|
12
|
+
|
|
13
|
+
- **{{CHANGE_DESCRIPTION}}** — {{MIGRATION_GUIDE}}
|
|
14
|
+
- Before: `{{OLD_USAGE}}`
|
|
15
|
+
- After: `{{NEW_USAGE}}`
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
|
|
19
|
+
- `feat`: {{FEATURE_DESCRIPTION}} ([#{{PR_NUMBER}}]({{PR_URL}}))
|
|
20
|
+
- `feat`: {{FEATURE_DESCRIPTION}} ([#{{PR_NUMBER}}]({{PR_URL}}))
|
|
21
|
+
|
|
22
|
+
### Bug Fixes
|
|
23
|
+
|
|
24
|
+
- `fix`: {{BUG_DESCRIPTION}} — {{WHAT_WAS_WRONG_AND_HOW_FIXED}} ([#{{PR_NUMBER}}]({{PR_URL}}))
|
|
25
|
+
|
|
26
|
+
### Performance
|
|
27
|
+
|
|
28
|
+
- `perf`: {{IMPROVEMENT_DESCRIPTION}} — {{BEFORE}} → {{AFTER}}
|
|
29
|
+
|
|
30
|
+
### Other
|
|
31
|
+
|
|
32
|
+
- `refactor`: {{DESCRIPTION}}
|
|
33
|
+
- `docs`: {{DESCRIPTION}}
|
|
34
|
+
- `chore`: {{DESCRIPTION}}
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Upgrade Guide
|
|
39
|
+
|
|
40
|
+
### From {{PREVIOUS_VERSION}} to {{VERSION}}
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
{{UPGRADE_COMMAND}}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**Required config changes:**
|
|
47
|
+
1. {{CONFIG_CHANGE_1}}
|
|
48
|
+
2. {{CONFIG_CHANGE_2}}
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## [{{PREVIOUS_VERSION}}] — {{PREVIOUS_DATE}}
|
|
53
|
+
|
|
54
|
+
> Past release notes continue below in reverse chronological order.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
<!-- GENERATION NOTES (remove before publishing)
|
|
59
|
+
|
|
60
|
+
Run to generate draft:
|
|
61
|
+
git log {{PREVIOUS_TAG}}..HEAD --oneline --no-merges
|
|
62
|
+
|
|
63
|
+
Classify commits:
|
|
64
|
+
feat: → Features
|
|
65
|
+
fix: → Bug Fixes
|
|
66
|
+
perf: → Performance
|
|
67
|
+
refactor/docs/chore/test: → Other
|
|
68
|
+
BREAKING CHANGE in footer: → Breaking Changes
|
|
69
|
+
|
|
70
|
+
Version bump guidance:
|
|
71
|
+
Breaking changes → major (x.0.0)
|
|
72
|
+
New features → minor (0.x.0)
|
|
73
|
+
Bug fixes only → patch (0.0.x)
|
|
74
|
+
-->
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Extraction Checklist — What to Extract from Figma
|
|
2
|
+
|
|
3
|
+
## Colors
|
|
4
|
+
|
|
5
|
+
- [ ] Background colors (`bg-[#...]`) — section, card, overlay backgrounds
|
|
6
|
+
- [ ] Text colors (`text-[#...]`) — heading, body, label, disabled states
|
|
7
|
+
- [ ] Border colors (`border-[#...]`) — dividers, input outlines
|
|
8
|
+
- [ ] Overlay/alpha colors (`rgba(...)`) — modals, hover states
|
|
9
|
+
- [ ] Gradient stops — linear/radial gradients with exact hex + stop positions
|
|
10
|
+
- [ ] Blend mode colors — any element using `mix-blend-*`
|
|
11
|
+
|
|
12
|
+
## Spacing
|
|
13
|
+
|
|
14
|
+
- [ ] Section padding (`pt-[Npx]`, `pb-[Npx]`, `px-[Npx]`)
|
|
15
|
+
- [ ] Component gaps (`gap-[Npx]`) — flex/grid item spacing
|
|
16
|
+
- [ ] Inner padding (`p-[Npx]`, `px-[Npx]`) — cards, buttons
|
|
17
|
+
- [ ] Margin overrides (`mt-`, `mb-`, `ml-`, `mr-`)
|
|
18
|
+
- [ ] Absolute offsets (`top-[Npx]`, `left-[Npx]`) — positioned layers
|
|
19
|
+
|
|
20
|
+
## Typography
|
|
21
|
+
|
|
22
|
+
- [ ] Font family — extract from `font-[family-name:var(--...)]` fallback
|
|
23
|
+
- [ ] Font sizes (`text-[Npx]`) — all unique sizes per role (heading, sub, body, caption)
|
|
24
|
+
- [ ] Font weights (`font-black/bold/semibold/medium/normal`)
|
|
25
|
+
- [ ] Line heights (`leading-[N]` or `leading-[Npx]`)
|
|
26
|
+
- [ ] Letter spacing (`tracking-[Npx]` or `tracking-[-Npx]`)
|
|
27
|
+
- [ ] Text alignment (`text-center`, `text-left`, `text-right`)
|
|
28
|
+
- [ ] Text decoration / transform if present
|
|
29
|
+
|
|
30
|
+
## Components
|
|
31
|
+
|
|
32
|
+
- [ ] Button variants — primary, secondary, disabled; exact size + color + radius
|
|
33
|
+
- [ ] Card structures — border, shadow (`shadow-[...]`), border-radius
|
|
34
|
+
- [ ] Icon dimensions — width/height from `w-[Npx] h-[Npx]`
|
|
35
|
+
- [ ] Badges/tags — background color, font, padding, radius
|
|
36
|
+
- [ ] Input fields — border, focus ring, placeholder color
|
|
37
|
+
- [ ] Navigation — GNB/footer height, link styles
|
|
38
|
+
|
|
39
|
+
## Assets
|
|
40
|
+
|
|
41
|
+
- [ ] All `const img...` URL variables in reference code — zero omissions
|
|
42
|
+
- [ ] Background images vs content images vs decorative images classified
|
|
43
|
+
- [ ] Image dimensions noted for `width`/`height` attributes
|
|
44
|
+
- [ ] Sprite/overflow images identified (left negative %, width >100%)
|
|
45
|
+
|
|
46
|
+
## Tokens to Create
|
|
47
|
+
|
|
48
|
+
- [ ] Color tokens for every unique hex value used more than once
|
|
49
|
+
- [ ] Spacing tokens for recurring gap/padding values
|
|
50
|
+
- [ ] Typography tokens for each font-size role
|
|
51
|
+
- [ ] Breakpoint token (`$bp-pc`) from CONFIG frame
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# Figma Handoff — {{FEATURE_NAME}}
|
|
2
|
+
|
|
3
|
+
**Figma File:** {{FIGMA_FILE_URL}}
|
|
4
|
+
**Feature Key:** {{FEATURE_KEY}} (kebab-case)
|
|
5
|
+
**Date:** {{DATE}}
|
|
6
|
+
**Stack:** {{STACK}} (e.g. Vue/Nuxt + SCSS, React/Next.js + SCSS)
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Design Specs
|
|
11
|
+
|
|
12
|
+
### Viewport / Scale
|
|
13
|
+
|
|
14
|
+
| Breakpoint | Design Width | Target Width | Scale Factor |
|
|
15
|
+
|-----------|-------------|-------------|-------------|
|
|
16
|
+
| Mobile (base) | {{DESIGN_MOBILE_PX}}px | {{TARGET_MOBILE_PX}}px | {{SCALE_MOBILE}} |
|
|
17
|
+
| Desktop | {{DESIGN_PC_PX}}px | {{TARGET_PC_PX}}px | {{SCALE_PC}} |
|
|
18
|
+
|
|
19
|
+
Breakpoint threshold: `@media (min-width: {{BP_PC}}px)`
|
|
20
|
+
|
|
21
|
+
### Color Tokens
|
|
22
|
+
|
|
23
|
+
| Token | Hex | Usage |
|
|
24
|
+
|-------|-----|-------|
|
|
25
|
+
| `$color-{{NAME}}` | `{{HEX}}` | {{USAGE}} |
|
|
26
|
+
|
|
27
|
+
### Typography Tokens
|
|
28
|
+
|
|
29
|
+
| Token | Figma px | Scaled px | Weight | Role |
|
|
30
|
+
|-------|---------|----------|--------|------|
|
|
31
|
+
| `$text-{{ROLE}}` | {{FIGMA_PX}}px | {{SCALED_PX}}px | {{WEIGHT}} | {{ROLE}} |
|
|
32
|
+
|
|
33
|
+
### Spacing Tokens
|
|
34
|
+
|
|
35
|
+
| Token | Figma px | Scaled px | Usage |
|
|
36
|
+
|-------|---------|----------|-------|
|
|
37
|
+
| `$space-{{NAME}}` | {{FIGMA_PX}}px | {{SCALED_PX}}px | {{USAGE}} |
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Sections
|
|
42
|
+
|
|
43
|
+
| # | Section Name | Component File | Mode | Height (design) |
|
|
44
|
+
|---|-------------|---------------|------|----------------|
|
|
45
|
+
| 1 | {{SECTION_NAME}} | `components/{{FEATURE_KEY}}/{{ComponentName}}.vue` | {{MODE}} | {{HEIGHT}}px |
|
|
46
|
+
|
|
47
|
+
**Mode key:** `normal` = external SCSS | `literal` = scoped CSS (non-standard layout)
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Asset Manifest
|
|
52
|
+
|
|
53
|
+
| Variable | Local Path | Type | Alt Text |
|
|
54
|
+
|----------|-----------|------|----------|
|
|
55
|
+
| `{{IMG_VAR}}` | `/images/{{FEATURE_KEY}}/{{FILE_NAME}}.webp` | {{bg\|content\|decorative}} | {{ALT}} |
|
|
56
|
+
|
|
57
|
+
Total assets: {{ASSET_COUNT}}
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## File Structure
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
components/{{FEATURE_KEY}}/
|
|
65
|
+
{{ComponentName}}.vue
|
|
66
|
+
|
|
67
|
+
public/images/{{FEATURE_KEY}}/
|
|
68
|
+
{{FILE_NAME}}.webp
|
|
69
|
+
|
|
70
|
+
styles/{{FEATURE_KEY}}/
|
|
71
|
+
index.scss
|
|
72
|
+
_tokens.scss
|
|
73
|
+
_mixins.scss
|
|
74
|
+
_base.scss
|
|
75
|
+
layout/
|
|
76
|
+
_{{section}}.scss
|
|
77
|
+
components/
|
|
78
|
+
_{{section}}.scss
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Verification Checklist
|
|
84
|
+
|
|
85
|
+
- [ ] No `figma.com/api` URLs in any generated file
|
|
86
|
+
- [ ] No `placeholder` or empty `src=""` in components
|
|
87
|
+
- [ ] No `<style>` blocks in components (normal mode)
|
|
88
|
+
- [ ] All assets downloaded and non-zero bytes
|
|
89
|
+
- [ ] Build passes without errors
|
|
90
|
+
- [ ] Screenshot comparison: P1 issues = 0
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Notes
|
|
95
|
+
|
|
96
|
+
{{NOTES}}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Analysis Dimensions — Figma Design Analysis
|
|
2
|
+
|
|
3
|
+
> This skill is merged into vibe-figma (Phase 1: Storyboard). These dimensions guide what to extract and evaluate when reading Figma frames.
|
|
4
|
+
|
|
5
|
+
## Layout
|
|
6
|
+
|
|
7
|
+
- [ ] Overall page structure — single column, multi-column, grid, or free-form absolute
|
|
8
|
+
- [ ] Section boundaries — identify where each distinct section starts/ends by visual grouping
|
|
9
|
+
- [ ] Container width — fixed px vs fluid (100%)
|
|
10
|
+
- [ ] Alignment system — centered, left-aligned, or asymmetric
|
|
11
|
+
- [ ] Z-layering — how many stacked layers exist (BG/content/overlay count)
|
|
12
|
+
- [ ] Overflow behavior — clip, hidden, visible, scroll
|
|
13
|
+
|
|
14
|
+
## Spacing Consistency
|
|
15
|
+
|
|
16
|
+
- [ ] Gap between sections — does a single spacing value repeat, or is each unique?
|
|
17
|
+
- [ ] Internal component padding — consistent across card variants?
|
|
18
|
+
- [ ] Icon-to-text gap — uniform within a component family?
|
|
19
|
+
- [ ] Recurring values — list values that appear 3+ times (these become spacing tokens)
|
|
20
|
+
- [ ] Irregular values — flag one-off spacings that may indicate design inconsistency
|
|
21
|
+
|
|
22
|
+
## Color Usage
|
|
23
|
+
|
|
24
|
+
- [ ] Background palette — how many distinct background colors exist?
|
|
25
|
+
- [ ] Text color roles — identify heading / body / label / disabled colors separately
|
|
26
|
+
- [ ] Accent/brand colors — primary CTA color, hover state color
|
|
27
|
+
- [ ] Transparency usage — rgba overlays, opacity layers
|
|
28
|
+
- [ ] Blend modes present — `mix-blend-lighten`, `multiply`, `hue` flag a literal-mode section
|
|
29
|
+
- [ ] Dark/light variants — does the design have both, requiring CSS variable tokens?
|
|
30
|
+
|
|
31
|
+
## Typography Hierarchy
|
|
32
|
+
|
|
33
|
+
- [ ] H1 equivalent — largest display text, font-size + weight + role
|
|
34
|
+
- [ ] H2 / section heading — size, weight, color
|
|
35
|
+
- [ ] Body text — base size, line-height, color
|
|
36
|
+
- [ ] Caption / label text — smallest size, usage context
|
|
37
|
+
- [ ] Font families — how many distinct families? Any variable fonts?
|
|
38
|
+
- [ ] Responsive scaling — does font-size change across breakpoints?
|
|
39
|
+
|
|
40
|
+
## Component Inventory
|
|
41
|
+
|
|
42
|
+
- [ ] Repeating UI patterns — cards, list items, tabs (candidates for `v-for`)
|
|
43
|
+
- [ ] State variants — default, hover, active, disabled, selected (note which states exist)
|
|
44
|
+
- [ ] Shared components — GNB, Footer, Popup (already in project or needs creation?)
|
|
45
|
+
- [ ] Interactive elements — buttons, links, inputs, toggles
|
|
46
|
+
- [ ] Decorative elements — particles, background shapes, overlay effects
|
|
47
|
+
|
|
48
|
+
## Storyboard-Specific Dimensions
|
|
49
|
+
|
|
50
|
+
- [ ] Frame classification — SPEC, CONFIG, SHARED, PAGE (by name pattern)
|
|
51
|
+
- [ ] Interaction annotations — arrows, overlay connections, state transitions in Figma
|
|
52
|
+
- [ ] Section count — total PAGE frames that need components
|
|
53
|
+
- [ ] Tall frames (1500px+) — flag for split strategy before `get_design_context`
|