@su-record/vibe 2.16.3 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +15 -0
- package/CLAUDE.md +8 -8
- package/README.en.md +46 -29
- package/README.md +41 -24
- package/agents/acceptance-tester.md +56 -0
- package/agents/architect.md +25 -67
- package/agents/build-error-resolver.md +28 -97
- package/agents/code-reviewer.md +89 -0
- package/agents/diagrammer.md +34 -165
- package/agents/documenter.md +43 -0
- package/agents/e2e-tester.md +46 -277
- package/agents/event/event-ops.md +54 -77
- package/agents/event/event-planner.md +63 -0
- package/agents/figma/figma-engineer.md +76 -0
- package/agents/implementer.md +26 -41
- package/agents/security-reviewer.md +56 -0
- package/agents/tester.md +37 -33
- package/agents/ui/design-reviewer.md +62 -0
- package/agents/ui/design-system-gen.md +63 -0
- package/dist/__tests__/agent-model-sync.test.d.ts +2 -0
- package/dist/__tests__/agent-model-sync.test.d.ts.map +1 -0
- package/dist/__tests__/agent-model-sync.test.js +71 -0
- package/dist/__tests__/agent-model-sync.test.js.map +1 -0
- package/dist/cli/auth.d.ts.map +1 -1
- package/dist/cli/auth.js +8 -1
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli/commands/index.d.ts +1 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +1 -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/llm.d.ts +11 -0
- package/dist/cli/commands/llm.d.ts.map +1 -0
- package/dist/cli/commands/llm.js +62 -0
- package/dist/cli/commands/llm.js.map +1 -0
- package/dist/cli/commands/remove.d.ts.map +1 -1
- package/dist/cli/commands/remove.js +8 -10
- package/dist/cli/commands/remove.js.map +1 -1
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +35 -1
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/index.d.ts +0 -4
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +59 -6
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/llm/config.d.ts.map +1 -1
- package/dist/cli/llm/config.js +7 -0
- package/dist/cli/llm/config.js.map +1 -1
- package/dist/cli/llm/index.d.ts +1 -0
- package/dist/cli/llm/index.d.ts.map +1 -1
- package/dist/cli/llm/index.js +1 -0
- package/dist/cli/llm/index.js.map +1 -1
- package/dist/cli/llm/model-refresh.d.ts +29 -0
- package/dist/cli/llm/model-refresh.d.ts.map +1 -0
- package/dist/cli/llm/model-refresh.js +139 -0
- package/dist/cli/llm/model-refresh.js.map +1 -0
- package/dist/cli/llm/zai-commands.d.ts +15 -0
- package/dist/cli/llm/zai-commands.d.ts.map +1 -0
- package/dist/cli/llm/zai-commands.js +64 -0
- package/dist/cli/llm/zai-commands.js.map +1 -0
- package/dist/cli/postinstall/claude-agents.d.ts.map +1 -1
- package/dist/cli/postinstall/claude-agents.js +16 -77
- package/dist/cli/postinstall/claude-agents.js.map +1 -1
- package/dist/cli/postinstall/constants.d.ts.map +1 -1
- package/dist/cli/postinstall/constants.js +81 -296
- package/dist/cli/postinstall/constants.js.map +1 -1
- package/dist/cli/postinstall/cursor-agents.d.ts +5 -0
- package/dist/cli/postinstall/cursor-agents.d.ts.map +1 -1
- package/dist/cli/postinstall/cursor-agents.js +26 -68
- package/dist/cli/postinstall/cursor-agents.js.map +1 -1
- package/dist/cli/postinstall/cursor-skills.d.ts.map +1 -1
- package/dist/cli/postinstall/cursor-skills.js +26 -30
- package/dist/cli/postinstall/cursor-skills.js.map +1 -1
- package/dist/cli/postinstall/main.d.ts.map +1 -1
- package/dist/cli/postinstall/main.js +0 -2
- package/dist/cli/postinstall/main.js.map +1 -1
- package/dist/cli/setup/Provisioner.d.ts.map +1 -1
- package/dist/cli/setup/Provisioner.js +19 -21
- package/dist/cli/setup/Provisioner.js.map +1 -1
- package/dist/cli/types.d.ts +15 -0
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/utils.d.ts +4 -1
- package/dist/cli/utils.d.ts.map +1 -1
- package/dist/cli/utils.js +4 -1
- package/dist/cli/utils.js.map +1 -1
- package/dist/infra/lib/FrameworkDetector.js +4 -4
- package/dist/infra/lib/FrameworkDetector.js.map +1 -1
- package/dist/infra/lib/OrchestrateWorkflow.js +2 -2
- package/dist/infra/lib/OrchestrateWorkflow.js.map +1 -1
- package/dist/infra/lib/browser/launch.js +1 -1
- package/dist/infra/lib/browser/launch.js.map +1 -1
- package/dist/infra/lib/browser/types.d.ts +1 -1
- package/dist/infra/lib/browser/types.js +1 -1
- package/dist/infra/lib/config/GlobalConfigManager.d.ts +2 -0
- package/dist/infra/lib/config/GlobalConfigManager.d.ts.map +1 -1
- package/dist/infra/lib/config/GlobalConfigManager.js +6 -0
- package/dist/infra/lib/config/GlobalConfigManager.js.map +1 -1
- package/dist/infra/lib/constants.d.ts +1 -1
- package/dist/infra/lib/constants.d.ts.map +1 -1
- package/dist/infra/lib/constants.js +4 -5
- package/dist/infra/lib/constants.js.map +1 -1
- package/dist/infra/lib/evolution/__tests__/integration.test.js +7 -7
- package/dist/infra/lib/evolution/__tests__/integration.test.js.map +1 -1
- package/dist/infra/lib/llm-availability.d.ts +4 -0
- package/dist/infra/lib/llm-availability.d.ts.map +1 -1
- package/dist/infra/lib/llm-availability.js +9 -1
- package/dist/infra/lib/llm-availability.js.map +1 -1
- package/dist/infra/lib/memory/index.d.ts +0 -2
- package/dist/infra/lib/memory/index.d.ts.map +1 -1
- package/dist/infra/lib/memory/index.js +0 -2
- package/dist/infra/lib/memory/index.js.map +1 -1
- package/dist/infra/lib/telemetry/SkillTelemetry.test.js +1 -1
- package/dist/infra/lib/telemetry/SkillTelemetry.test.js.map +1 -1
- package/dist/infra/lib/zai/client.d.ts +30 -0
- package/dist/infra/lib/zai/client.d.ts.map +1 -0
- package/dist/infra/lib/zai/client.js +124 -0
- package/dist/infra/lib/zai/client.js.map +1 -0
- package/dist/infra/lib/zai/index.d.ts +11 -0
- package/dist/infra/lib/zai/index.d.ts.map +1 -0
- package/dist/infra/lib/zai/index.js +10 -0
- package/dist/infra/lib/zai/index.js.map +1 -0
- package/dist/infra/lib/zai/orchestration.d.ts +15 -0
- package/dist/infra/lib/zai/orchestration.d.ts.map +1 -0
- package/dist/infra/lib/zai/orchestration.js +54 -0
- package/dist/infra/lib/zai/orchestration.js.map +1 -0
- package/dist/infra/lib/zai/types.d.ts +40 -0
- package/dist/infra/lib/zai/types.d.ts.map +1 -0
- package/dist/infra/lib/zai/types.js +5 -0
- package/dist/infra/lib/zai/types.js.map +1 -0
- package/dist/infra/orchestrator/SmartRouter.d.ts.map +1 -1
- package/dist/infra/orchestrator/SmartRouter.js +16 -34
- package/dist/infra/orchestrator/SmartRouter.js.map +1 -1
- package/dist/infra/orchestrator/index.d.ts +1 -0
- package/dist/infra/orchestrator/index.d.ts.map +1 -1
- package/dist/infra/orchestrator/index.js +11 -9
- package/dist/infra/orchestrator/index.js.map +1 -1
- package/dist/infra/orchestrator/types.d.ts +32 -9
- package/dist/infra/orchestrator/types.d.ts.map +1 -1
- package/dist/infra/orchestrator/types.js +68 -37
- package/dist/infra/orchestrator/types.js.map +1 -1
- package/dist/infra/orchestrator/types.test.d.ts +2 -0
- package/dist/infra/orchestrator/types.test.d.ts.map +1 -0
- package/dist/infra/orchestrator/types.test.js +57 -0
- package/dist/infra/orchestrator/types.test.js.map +1 -0
- package/dist/tools/index.d.ts +0 -4
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +0 -4
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/memory/autoSaveContext.d.ts +0 -1
- package/dist/tools/memory/autoSaveContext.d.ts.map +1 -1
- package/dist/tools/memory/autoSaveContext.js +13 -27
- package/dist/tools/memory/autoSaveContext.js.map +1 -1
- package/hooks/scripts/__tests__/code-check-detectors.test.js +2 -2
- package/hooks/scripts/__tests__/run-ledger.test.js +1 -1
- package/hooks/scripts/__tests__/scope-from-spec.test.js +12 -12
- package/hooks/scripts/__tests__/step-counter.test.js +1 -1
- package/hooks/scripts/code-check.js +16 -203
- package/hooks/scripts/context-save.js +0 -11
- package/hooks/scripts/lib/scope-from-spec.js +9 -6
- package/hooks/scripts/llm-orchestrate.js +49 -0
- package/hooks/scripts/post-edit-dispatcher.js +1 -1
- package/hooks/scripts/prompt-dispatcher.js +7 -18
- package/hooks/scripts/session-start.js +25 -35
- package/package.json +4 -4
- package/skills/agents-md/SKILL.md +62 -15
- package/skills/arch-guard/SKILL.md +1 -1
- package/skills/brand-assets/SKILL.md +2 -2
- package/skills/capability-loop/SKILL.md +1 -1
- package/skills/chub-usage/SKILL.md +1 -1
- package/skills/commerce-patterns/SKILL.md +2 -2
- package/skills/commit-push-pr/SKILL.md +0 -1
- package/skills/context7-usage/SKILL.md +1 -1
- package/skills/create-prd/agents/edge-case-finder.md +4 -4
- package/skills/create-prd/agents/prioritizer.md +4 -4
- package/skills/create-prd/agents/requirements-writer.md +3 -3
- package/skills/create-prd/agents/researcher.md +3 -3
- package/skills/create-prd/agents/reviewer.md +3 -3
- package/skills/create-prd/orchestrator.md +2 -0
- package/skills/design-refine/SKILL.md +140 -0
- package/skills/{design-polish → design-refine}/templates/polish-report.md +1 -1
- package/skills/{design-normalize → design-refine}/templates/token-audit.md +3 -3
- package/skills/design-review/SKILL.md +143 -0
- package/skills/{design-audit → design-review}/agents/a11y-auditor.md +1 -1
- package/skills/{design-audit → design-review}/agents/performance-auditor.md +1 -1
- package/skills/{design-audit → design-review}/agents/responsive-auditor.md +1 -1
- package/skills/{design-audit → design-review}/agents/slop-detector.md +1 -1
- package/skills/{design-audit → design-review}/frameworks/core-web-vitals.md +1 -1
- package/skills/{design-audit → design-review}/frameworks/wcag-checklist.md +1 -1
- package/skills/{design-audit → design-review}/orchestrator.md +5 -3
- package/skills/{design-critique → design-review}/templates/critique-report.md +3 -3
- package/skills/{design-audit → design-review}/templates/report.md +3 -3
- package/skills/design-teach/SKILL.md +11 -11
- package/skills/docs/SKILL.md +14 -16
- package/skills/e2e-commerce/SKILL.md +1 -1
- package/skills/event-comms/SKILL.md +1 -1
- package/skills/event-ops/SKILL.md +2 -2
- package/skills/event-planning/SKILL.md +1 -1
- package/skills/exec-plan/SKILL.md +2 -2
- package/skills/exec-plan/orchestrator.md +2 -0
- package/skills/figma/SKILL.md +240 -148
- package/skills/figma/rubrics/css-mapping.md +125 -0
- package/skills/git-worktree/SKILL.md +1 -1
- package/skills/handoff/SKILL.md +1 -1
- package/skills/parallel-research/SKILL.md +14 -28
- package/skills/parallel-research/orchestrator.md +2 -0
- package/skills/priority-todos/SKILL.md +1 -1
- package/skills/regress/SKILL.md +11 -0
- package/skills/restraint/SKILL.md +72 -0
- package/skills/seo-checklist/SKILL.md +2 -2
- package/skills/spec/SKILL.md +65 -836
- package/skills/test/SKILL.md +3 -3
- package/skills/tool-fallback/SKILL.md +2 -2
- package/skills/vercel-react-best-practices/SKILL.md +1 -1
- package/skills/vibe/SKILL.md +20 -35
- package/skills/vibe.analyze/SKILL.md +7 -9
- package/skills/vibe.docs/SKILL.md +1 -1
- package/skills/vibe.event/SKILL.md +27 -27
- package/skills/vibe.figma/SKILL.md +14 -18
- package/skills/vibe.harness/SKILL.md +5 -5
- package/skills/vibe.llm/SKILL.md +50 -0
- package/skills/vibe.reason/SKILL.md +0 -2
- package/skills/vibe.review/SKILL.md +45 -49
- package/skills/vibe.run/SKILL.md +2 -5
- package/skills/vibe.run/references/parallel-agents.md +33 -98
- package/skills/vibe.spec/SKILL.md +38 -535
- package/skills/vibe.utils/SKILL.md +3 -3
- package/skills/vibe.verify/SKILL.md +70 -542
- package/skills/video-production/SKILL.md +1 -1
- package/vibe/rules/orchestrator-contract.md +57 -0
- package/vibe/rules/quality/performance.md +1 -1
- package/vibe/templates/claudemd-template.md +1 -1
- package/vibe/templates/spec-template.md +35 -185
- package/agents/architect-low.md +0 -41
- package/agents/architect-medium.md +0 -59
- package/agents/compounder.md +0 -261
- package/agents/docs/api-documenter.md +0 -99
- package/agents/docs/changelog-writer.md +0 -93
- package/agents/event/event-comms.md +0 -78
- package/agents/event/event-content.md +0 -68
- package/agents/event/event-image.md +0 -95
- package/agents/event/event-scheduler.md +0 -69
- package/agents/event/event-speaker.md +0 -86
- package/agents/explorer-low.md +0 -42
- package/agents/explorer-medium.md +0 -59
- package/agents/explorer.md +0 -48
- package/agents/figma/figma-analyst.md +0 -52
- package/agents/figma/figma-architect.md +0 -112
- package/agents/figma/figma-auditor.md +0 -82
- package/agents/figma/figma-builder.md +0 -100
- package/agents/implementer-low.md +0 -43
- package/agents/implementer-medium.md +0 -52
- package/agents/junior-mentor.md +0 -141
- package/agents/planning/requirements-analyst.md +0 -84
- package/agents/planning/ux-advisor.md +0 -83
- package/agents/qa/acceptance-tester.md +0 -86
- package/agents/qa/edge-case-finder.md +0 -93
- package/agents/qa/qa-coordinator.md +0 -131
- package/agents/refactor-cleaner.md +0 -143
- package/agents/research/best-practices.md +0 -199
- package/agents/research/codebase-patterns.md +0 -157
- package/agents/research/framework-docs.md +0 -188
- package/agents/research/security-advisory.md +0 -213
- package/agents/review/architecture-reviewer.md +0 -107
- package/agents/review/complexity-reviewer.md +0 -116
- package/agents/review/data-integrity-reviewer.md +0 -88
- package/agents/review/git-history-reviewer.md +0 -103
- package/agents/review/performance-reviewer.md +0 -86
- package/agents/review/python-reviewer.md +0 -150
- package/agents/review/rails-reviewer.md +0 -139
- package/agents/review/react-reviewer.md +0 -144
- package/agents/review/security-reviewer.md +0 -80
- package/agents/review/simplicity-reviewer.md +0 -140
- package/agents/review/test-coverage-reviewer.md +0 -116
- package/agents/review/typescript-reviewer.md +0 -127
- package/agents/searcher.md +0 -54
- package/agents/simplifier.md +0 -120
- package/agents/teams/debug-team.md +0 -70
- package/agents/teams/dev-team.md +0 -88
- package/agents/teams/docs-team.md +0 -80
- package/agents/teams/figma-team.md +0 -85
- package/agents/teams/fullstack-team.md +0 -83
- package/agents/teams/lite-team.md +0 -69
- package/agents/teams/migration-team.md +0 -78
- package/agents/teams/refactor-team.md +0 -94
- package/agents/teams/research-team.md +0 -86
- package/agents/teams/review-debate-team.md +0 -125
- package/agents/teams/security-team.md +0 -81
- package/agents/ui/ui-a11y-auditor.md +0 -93
- package/agents/ui/ui-antipattern-detector.md +0 -102
- package/agents/ui/ui-dataviz-advisor.md +0 -69
- package/agents/ui/ui-design-system-gen.md +0 -57
- package/agents/ui/ui-industry-analyzer.md +0 -49
- package/agents/ui/ui-layout-architect.md +0 -65
- package/agents/ui/ui-stack-implementer.md +0 -68
- package/agents/ui/ux-compliance-reviewer.md +0 -81
- package/agents/ui-previewer.md +0 -258
- package/hooks/scripts/__tests__/keyword-detector.test.js +0 -242
- package/hooks/scripts/keyword-detector.js +0 -226
- package/skills/characterization-test/SKILL.md +0 -209
- package/skills/characterization-test/agents/behavior-capturer.md +0 -50
- package/skills/characterization-test/agents/coverage-checker.md +0 -54
- package/skills/characterization-test/agents/reporter.md +0 -50
- package/skills/characterization-test/agents/test-writer.md +0 -49
- package/skills/characterization-test/rubrics/coverage-criteria.md +0 -53
- package/skills/characterization-test/templates/test-template.ts +0 -101
- package/skills/claude-md-guide/SKILL.md +0 -353
- package/skills/claude-md-guide/rubrics/anti-patterns.md +0 -88
- package/skills/design-audit/SKILL.md +0 -154
- package/skills/design-critique/SKILL.md +0 -140
- package/skills/design-distill/SKILL.md +0 -131
- package/skills/design-normalize/SKILL.md +0 -135
- package/skills/design-polish/SKILL.md +0 -132
- package/skills/figma-convert/SKILL.md +0 -236
- package/skills/figma-extract/SKILL.md +0 -242
- package/skills/interview/SKILL.md +0 -358
- package/skills/interview/checklists/api.md +0 -101
- package/skills/interview/checklists/feature.md +0 -88
- package/skills/interview/checklists/library.md +0 -95
- package/skills/interview/checklists/mobile.md +0 -89
- package/skills/interview/checklists/webapp.md +0 -97
- package/skills/interview/checklists/website.md +0 -99
- package/skills/plan/SKILL.md +0 -254
- package/skills/rob-pike/SKILL.md +0 -66
- package/skills/spec/references/askuser-examples.md +0 -57
- package/skills/spec/references/example-session.md +0 -87
- package/skills/spec/references/templates.md +0 -194
- package/skills/spec-review/SKILL.md +0 -725
- package/skills/systematic-debugging/SKILL.md +0 -142
- package/skills/techdebt/SKILL.md +0 -126
- package/skills/techdebt/agents/analyzer.md +0 -50
- package/skills/techdebt/agents/fixer.md +0 -41
- package/skills/techdebt/agents/reviewer.md +0 -47
- package/skills/techdebt/agents/scanner.md +0 -44
- package/skills/techdebt/orchestrator.md +0 -70
- package/skills/techdebt/rubrics/severity.md +0 -51
- package/skills/techdebt/scripts/scan.js +0 -90
- package/skills/techdebt/templates/report.md +0 -86
- package/skills/typescript-advanced-types/SKILL.md +0 -68
- package/skills/typescript-advanced-types/rubrics/type-patterns.md +0 -109
- package/skills/yagni-ladder/SKILL.md +0 -90
- /package/skills/{claude-md-guide → agents-md}/templates/claude-md.md +0 -0
- /package/skills/{design-polish → design-refine}/rubrics/polish-checklist.md +0 -0
- /package/skills/{design-normalize → design-refine}/rubrics/token-naming.md +0 -0
- /package/skills/{design-distill → design-refine}/templates/design-system.md +0 -0
- /package/skills/{design-audit → design-review}/agents/scorer.md +0 -0
- /package/skills/{design-audit → design-review}/rubrics/ai-slop-patterns.md +0 -0
- /package/skills/{design-audit → design-review}/rubrics/scoring.md +0 -0
- /package/skills/{design-critique → design-review}/rubrics/ux-heuristics.md +0 -0
- /package/skills/{figma-convert → figma}/rubrics/conversion-rules.md +0 -0
- /package/skills/{figma-extract → figma}/rubrics/image-rules.md +0 -0
- /package/skills/{figma-convert → figma}/templates/component.md +0 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Figma Property → CSS Mapping Reference
|
|
2
|
+
|
|
3
|
+
Properties automatically converted by `figma-extract.js` tree extraction (Extract Mode E1) and consumed by `figma-to-scss.js`. Phase 4 forbids hand-writing these values — this table is grounding for reviewing script output (and for modifying the scripts when output is unsatisfactory).
|
|
4
|
+
|
|
5
|
+
## Layout
|
|
6
|
+
|
|
7
|
+
| Figma Property | CSS | vw conversion |
|
|
8
|
+
|-----------|-----|---------|
|
|
9
|
+
| `layoutMode=VERTICAL` | `display:flex; flex-direction:column` | No |
|
|
10
|
+
| `layoutMode=HORIZONTAL` | `display:flex; flex-direction:row` | No |
|
|
11
|
+
| `primaryAxisAlignItems` | `justify-content` | No |
|
|
12
|
+
| `counterAxisAlignItems` | `align-items` | No |
|
|
13
|
+
| `itemSpacing` | `gap` | Yes |
|
|
14
|
+
| `layoutGrow=1` | `flex-grow: 1` | No |
|
|
15
|
+
| `padding*` | `padding` | Yes |
|
|
16
|
+
| `absoluteBoundingBox.width/height` | `width/height` | Yes |
|
|
17
|
+
| `layoutPositioning=ABSOLUTE` | `position: absolute` + `top/left` (relative to parent) | Yes |
|
|
18
|
+
| `layoutSizingHorizontal=HUG` | remove width (auto) | — |
|
|
19
|
+
| `layoutSizingHorizontal=FILL` | metadata `layoutSizingH` (converter decides flex:1/100%) | — |
|
|
20
|
+
| `layoutSizingVertical=HUG` | remove height (auto) | — |
|
|
21
|
+
| `layoutSizingVertical=FILL` | metadata `layoutSizingV` (converter decides) | — |
|
|
22
|
+
| `clipsContent` | `overflow: hidden` | No |
|
|
23
|
+
|
|
24
|
+
## Visual
|
|
25
|
+
|
|
26
|
+
| Figma Property | CSS | vw conversion |
|
|
27
|
+
|-----------|-----|---------|
|
|
28
|
+
| `fills[].SOLID` | `background-color` | No |
|
|
29
|
+
| `fills[].IMAGE` | `imageRef` + `imageScaleMode` (FILL/FIT/CROP/TILE) | — |
|
|
30
|
+
| `fills[].GRADIENT_LINEAR` | `background-image: linear-gradient(...)` | No |
|
|
31
|
+
| `fills[].GRADIENT_RADIAL` | `background-image: radial-gradient(...)` | No |
|
|
32
|
+
| `fills[] (2 or more)` | `fills` array (type, color, imageRef, gradient, blendMode, filters) | — |
|
|
33
|
+
| `fills[].blendMode` | `background-blend-mode` | No |
|
|
34
|
+
| `fills[].filters.saturation` | `filter: grayscale(X%)` / `saturate(X%)` | No |
|
|
35
|
+
| `fills[].color` (TEXT) | `color` | No |
|
|
36
|
+
| `strokes[] + strokeAlign=INSIDE` | `border` + `box-sizing: border-box` | Yes (width only) |
|
|
37
|
+
| `strokes[] + strokeAlign=OUTSIDE` | `outline` | Yes (width only) |
|
|
38
|
+
| `individualStrokeWeights` | `border-top/right/bottom/left` individually | Yes (width only) |
|
|
39
|
+
| `strokeDashes` | `border-style: dashed` | No |
|
|
40
|
+
| `effects[].DROP_SHADOW` | `box-shadow` | Yes (px only) |
|
|
41
|
+
| `effects[].INNER_SHADOW` | `box-shadow` (inset) | Yes (px only) |
|
|
42
|
+
| `effects[].LAYER_BLUR` | `filter: blur()` (accumulated) | Yes |
|
|
43
|
+
| `effects[].BACKGROUND_BLUR` | `backdrop-filter: blur()` | Yes |
|
|
44
|
+
| `cornerRadius` | `border-radius` | Yes |
|
|
45
|
+
| `opacity` | `opacity` | No |
|
|
46
|
+
| `rotation` | `transform: rotate(Xdeg)` | No |
|
|
47
|
+
| `blendMode` (node level) | `mix-blend-mode` | No |
|
|
48
|
+
|
|
49
|
+
## Text
|
|
50
|
+
|
|
51
|
+
| Figma Property | CSS | vw conversion |
|
|
52
|
+
|-----------|-----|---------|
|
|
53
|
+
| `style.fontFamily` | `font-family` | No |
|
|
54
|
+
| `style.fontSize` | `font-size` | Yes |
|
|
55
|
+
| `style.fontWeight` | `font-weight` | No |
|
|
56
|
+
| `style.lineHeightPx` | `line-height` | No |
|
|
57
|
+
| `style.letterSpacing` | `letter-spacing` | Yes |
|
|
58
|
+
| `style.textAlignHorizontal` | `text-align` | No |
|
|
59
|
+
| `style.textCase` | `text-transform` | No |
|
|
60
|
+
| `style.textTruncation` | `overflow: hidden; text-overflow: ellipsis` | No |
|
|
61
|
+
| `style.paragraphSpacing` | `margin-bottom` | Yes |
|
|
62
|
+
| `characters` | text content | — |
|
|
63
|
+
|
|
64
|
+
## SCSS Property Allowlist (per file group)
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
Layout (layout/ files):
|
|
68
|
+
display, flex-direction, justify-content, align-items, gap,
|
|
69
|
+
flex-grow, padding, width, height, overflow, position, top, left, transform
|
|
70
|
+
|
|
71
|
+
Visual (components/ files):
|
|
72
|
+
background-color, background-image, background-blend-mode, color,
|
|
73
|
+
font-family, font-size, font-weight, line-height, letter-spacing,
|
|
74
|
+
text-align, text-transform, text-overflow,
|
|
75
|
+
border-radius, border, outline, box-sizing, box-shadow,
|
|
76
|
+
opacity, mix-blend-mode, filter, backdrop-filter
|
|
77
|
+
|
|
78
|
+
If a value is absent in the tree → omit that property (no guessing)
|
|
79
|
+
|
|
80
|
+
❌ Forbidden: aspect-ratio, container queries, custom @function/@mixin (wp-fluid() etc.),
|
|
81
|
+
clamp() with guessed values — only 1:1 mapping from the tree is allowed.
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Responsive Unit Conversion (legacy vw workflow — Phase 4C reference)
|
|
85
|
+
|
|
86
|
+
> Current Phase 4 generates px as-is via figma-to-scss.js. These rules apply to the
|
|
87
|
+
> responsive-integration flow (Phase 4C) and to script maintenance.
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
vw conversion (mechanical formula only):
|
|
91
|
+
width, height, padding, gap, border-radius, box-shadow, top, left, border-width
|
|
92
|
+
vw value = (Figma px / designWidth) × 100
|
|
93
|
+
⛔ clamp, min(), max() etc. are allowed only for font-size
|
|
94
|
+
|
|
95
|
+
Font → clamp(min, vw, max):
|
|
96
|
+
| Role | Min | Determination Basis |
|
|
97
|
+
|---------|-------|-----------------------------|
|
|
98
|
+
| h1~h2 | 16px | name contains "title" |
|
|
99
|
+
| h3~h4 | 14px | medium size |
|
|
100
|
+
| Body | 12px | long text |
|
|
101
|
+
| Caption | 10px | small fontSize |
|
|
102
|
+
| Button | 12px | name contains "btn" |
|
|
103
|
+
max value = original Figma px as-is
|
|
104
|
+
|
|
105
|
+
Properties never converted:
|
|
106
|
+
color, opacity, font-weight, font-family, z-index, text-align,
|
|
107
|
+
mix-blend-mode, transform(rotate), background-blend-mode,
|
|
108
|
+
flex-grow, box-sizing, grayscale/saturate, background-image(gradient)
|
|
109
|
+
|
|
110
|
+
layoutSizing handling:
|
|
111
|
+
HUG → omit width/height (auto)
|
|
112
|
+
FILL → same direction as parent → flex: 1 0 0 · cross axis → align-self: stretch
|
|
113
|
+
FIXED → vw conversion
|
|
114
|
+
|
|
115
|
+
imageScaleMode:
|
|
116
|
+
FILL → background-size: cover · FIT → contain
|
|
117
|
+
CROP → cover + background-position: center · TILE → auto + repeat
|
|
118
|
+
|
|
119
|
+
MO↔PC responsive (remapped.json pcDiff → @media overrides, MO base preserved):
|
|
120
|
+
Same value → keep MO only
|
|
121
|
+
Different px → @media { PC vw }
|
|
122
|
+
Different layout → @media { flex-direction: row }
|
|
123
|
+
Different image → @media { background-image: url(pc-xxx.webp) }
|
|
124
|
+
layoutSizing diff → @media { flex/width change }
|
|
125
|
+
```
|
|
@@ -3,7 +3,7 @@ name: git-worktree
|
|
|
3
3
|
invocation: [auto]
|
|
4
4
|
tier: optional
|
|
5
5
|
description: "Git Worktree for parallel branch work. Auto-activates for PR review, hotfix, parallel testing, or working on multiple branches simultaneously."
|
|
6
|
-
triggers: [worktree,
|
|
6
|
+
triggers: [worktree, hotfix, parallel branch, multiple branches]
|
|
7
7
|
priority: 50
|
|
8
8
|
---
|
|
9
9
|
|
package/skills/handoff/SKILL.md
CHANGED
|
@@ -5,7 +5,7 @@ invocation: [auto]
|
|
|
5
5
|
tier: standard
|
|
6
6
|
description: "Generate HANDOFF.md work handover document before session end. Auto-activates on handoff, handover, session cleanup keywords."
|
|
7
7
|
triggers: [handoff, handover, session cleanup, session end, context save]
|
|
8
|
-
priority:
|
|
8
|
+
priority: 60
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Handoff — Session Handover Document
|
|
@@ -22,41 +22,27 @@ Parallel research patterns for solving complex problems.
|
|
|
22
22
|
| Technology selection | Comparison analysis needed |
|
|
23
23
|
| Complex bugs | Explore multiple causes |
|
|
24
24
|
|
|
25
|
-
## Research
|
|
25
|
+
## Research Lenses (4 Parallel)
|
|
26
26
|
|
|
27
|
-
|
|
|
28
|
-
|
|
29
|
-
| best-practices | Search best practices |
|
|
30
|
-
| framework-docs | Search official docs | context7 |
|
|
31
|
-
| codebase-patterns | Analyze existing code patterns |
|
|
32
|
-
| security-advisory | Search security advisories |
|
|
27
|
+
| Lens | Role | How |
|
|
28
|
+
|-------|------|-----|
|
|
29
|
+
| best-practices | Search best practices | native WebSearch (+context7) |
|
|
30
|
+
| framework-docs | Search official docs | native WebFetch/context7 |
|
|
31
|
+
| codebase-patterns | Analyze existing code patterns | native Explore subagent |
|
|
32
|
+
| security-advisory | Search security advisories | native WebSearch |
|
|
33
33
|
|
|
34
|
-
## Usage
|
|
34
|
+
## Usage
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
**Spawn the four lenses as concurrent native subagents in a single message** — each lens is blind to the others; synthesize after all return:
|
|
37
37
|
|
|
38
|
-
```bash
|
|
39
|
-
node -e "import('{{VIBE_PATH_URL}}/node_modules/@su-record/vibe/dist/infra/orchestrator/index.js').then(o =>
|
|
40
|
-
o.research('passkey authentication', ['React', 'Supabase'])
|
|
41
|
-
.then(r => console.log(r.content[0].text))
|
|
42
|
-
)"
|
|
43
38
|
```
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
/vibe.spec "feature-name"
|
|
49
|
-
→ Parallel research runs automatically after requirements confirmed
|
|
39
|
+
Task 1 (Explore): "Analyze existing auth code patterns" (concurrent)
|
|
40
|
+
Task 2 (general-purpose): "Search React auth best practices" (concurrent)
|
|
41
|
+
Task 3 (general-purpose): "Search Supabase Auth official docs" (concurrent)
|
|
42
|
+
Task 4 (general-purpose): "Search auth security vulnerabilities" (concurrent)
|
|
50
43
|
```
|
|
51
44
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
```
|
|
55
|
-
Task 1: "Search React auth best practices"
|
|
56
|
-
Task 2: "Search Supabase Auth official docs" (concurrent)
|
|
57
|
-
Task 3: "Analyze existing auth code patterns" (concurrent)
|
|
58
|
-
Task 4: "Search auth security vulnerabilities" (concurrent)
|
|
59
|
-
```
|
|
45
|
+
`/vibe.spec "feature-name"` runs this automatically when the SPEC pass needs unfamiliar-technology research.
|
|
60
46
|
|
|
61
47
|
## Using Research Results
|
|
62
48
|
|
|
@@ -4,7 +4,7 @@ user-invocable: false
|
|
|
4
4
|
invocation: [auto]
|
|
5
5
|
tier: standard
|
|
6
6
|
description: "Priority-based TODO management (P1/P2/P3). Auto-activates when managing tasks, reviewing issues, or organizing work by priority."
|
|
7
|
-
triggers: [todo,
|
|
7
|
+
triggers: [todo list, task management, P1, P2, P3, priority todos, organize tasks]
|
|
8
8
|
priority: 60
|
|
9
9
|
---
|
|
10
10
|
|
package/skills/regress/SKILL.md
CHANGED
|
@@ -14,6 +14,17 @@ tier: core
|
|
|
14
14
|
|
|
15
15
|
A classic vibe-coding weakness: LLMs reintroduce bugs of the same class. Regression tests are the only mechanical defense. But if the human has to write the test every time, it gets skipped — so automate.
|
|
16
16
|
|
|
17
|
+
## Characterization — lock behavior first
|
|
18
|
+
|
|
19
|
+
Before modifying legacy or untested code whose behavior is uncertain (large files without tests, complex branching, API contracts), **lock current behavior first, then change**:
|
|
20
|
+
|
|
21
|
+
1. Generate characterization tests over the public surface — snapshot the **actual** output (`toMatchSnapshot()`), not what you think it should be. Do NOT fix bugs while locking: a wrong value gets locked as-is; the goal is regression detection, not correctness.
|
|
22
|
+
2. Run them — all must pass against the unmodified code. A failure means the characterization is wrong: fix the test, never the code.
|
|
23
|
+
3. Make the change incrementally, re-running after each step. Unexpected failure = regression, stop and investigate.
|
|
24
|
+
4. Reconcile: update snapshots only for **intentionally** changed behavior, and add new tests for the new behavior.
|
|
25
|
+
|
|
26
|
+
Skip this for code you just wrote, already-well-tested code, or trivial changes — write regular unit tests instead. Test file naming/stack detection follows `generate` (below).
|
|
27
|
+
|
|
17
28
|
## Storage Contract
|
|
18
29
|
|
|
19
30
|
```
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: restraint
|
|
3
|
+
user-invocable: false
|
|
4
|
+
invocation: [auto]
|
|
5
|
+
tier: core
|
|
6
|
+
description: "Restraint gate — block premature abstraction and premature optimization. Escalate the YAGNI ladder only on demonstrated need; optimize only on measured evidence. Merges yagni-ladder + rob-pike."
|
|
7
|
+
triggers: [premature optimization, premature abstraction, abstraction layer, helper module, utility class, wrapper class, manager class, config system, cache layer, parallelize, benchmark]
|
|
8
|
+
priority: 60
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Restraint — Don't Write It, Don't Tune It (Yet)
|
|
12
|
+
|
|
13
|
+
Two constraints, one gate:
|
|
14
|
+
|
|
15
|
+
- **No premature code.** New abstractions must be *pulled* by a demonstrated
|
|
16
|
+
need, never pushed by "might need it later." Once the code exists, deleting
|
|
17
|
+
it costs more than never writing it.
|
|
18
|
+
- **No premature optimization.** Performance work must be *pulled* by a
|
|
19
|
+
measurement, never by a hunch.
|
|
20
|
+
|
|
21
|
+
## The YAGNI Ladder (code axis)
|
|
22
|
+
|
|
23
|
+
Satisfy the need at the **highest** rung that covers it; lower rungs are
|
|
24
|
+
blocked while a higher one applies:
|
|
25
|
+
|
|
26
|
+
1. **Not needed** — the requirement doesn't ask for it → don't build it
|
|
27
|
+
2. **Stdlib / built-ins** already do it (`crypto`, `Intl`, `pathlib`, …)
|
|
28
|
+
3. **Native platform feature** does it (`<input type="date">`, CSS `:has()`, DB constraints)
|
|
29
|
+
4. **Already-installed dependency** covers it — check the lockfile, don't guess
|
|
30
|
+
5. **One line** — a single expression; no new file, no class
|
|
31
|
+
6. **Minimal code** — only now, and nothing for "later"
|
|
32
|
+
|
|
33
|
+
Tie-break: native beats a one-liner; stdlib beats a dependency. Generalize
|
|
34
|
+
only when a *second* caller exists.
|
|
35
|
+
|
|
36
|
+
## Pike's Rules (optimization axis)
|
|
37
|
+
|
|
38
|
+
- You can't tell where a program spends its time — bottlenecks surprise.
|
|
39
|
+
**Measure; don't guess.**
|
|
40
|
+
- Don't tune until one part *measurably* overwhelms the rest.
|
|
41
|
+
- Fancy algorithms are slow when n is small — and n is usually small.
|
|
42
|
+
Ask "what's n?" before "what's the Big-O?"
|
|
43
|
+
- Simple algorithms + the right data structures beat clever code. Data dominates.
|
|
44
|
+
|
|
45
|
+
Optimization is justified only when ALL hold: a measured bottleneck exists →
|
|
46
|
+
it dominates runtime → the fix is the simplest change addressing it → you
|
|
47
|
+
re-measure after.
|
|
48
|
+
|
|
49
|
+
## Blocked Impulses
|
|
50
|
+
|
|
51
|
+
| Impulse | Constraint | Counter |
|
|
52
|
+
|---|---|---|
|
|
53
|
+
| helper / utility / wrapper / manager class | rungs 1–5 | a stdlib call or one line usually suffices |
|
|
54
|
+
| config system for one value | rung 1 | a `const` is the config |
|
|
55
|
+
| generic `Processor(strategy, validator…)` | rung 1 | one concrete function until a second caller exists |
|
|
56
|
+
| "add a cache here" / "parallelize this" | measure first | is this path even hot? Often it's I/O |
|
|
57
|
+
| swap in a B-tree / trie / skip list | what's n? | O(n²) with n=100 is microseconds |
|
|
58
|
+
| "this loop looks slow" | measure first | the bottleneck is probably elsewhere |
|
|
59
|
+
|
|
60
|
+
## Overrides — Restraint Never Erodes These
|
|
61
|
+
|
|
62
|
+
1. **Security and trust-boundary work are requirements**, not optional
|
|
63
|
+
complexity. Input validation, auth checks, escaping stay in — "one line"
|
|
64
|
+
is no excuse to drop them.
|
|
65
|
+
2. **Deliberate simplifications get a comment + upgrade path**, so the next
|
|
66
|
+
reader sees a *choice*, not an oversight:
|
|
67
|
+
|
|
68
|
+
```ts
|
|
69
|
+
// Global lock is enough at current throughput.
|
|
70
|
+
// Switch to per-account locking if write contention shows up.
|
|
71
|
+
const lock = new Mutex();
|
|
72
|
+
```
|
|
@@ -3,8 +3,8 @@ name: seo-checklist
|
|
|
3
3
|
invocation: [auto]
|
|
4
4
|
tier: core
|
|
5
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."
|
|
6
|
-
triggers: [seo,
|
|
7
|
-
priority:
|
|
6
|
+
triggers: [seo, meta tags, sitemap, structured data, opengraph, search ranking, robots.txt, naver]
|
|
7
|
+
priority: 60
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# SEO Checklist
|