@su-record/vibe 2.16.4 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +8 -8
- package/README.en.md +46 -29
- package/README.md +41 -24
- package/agents/acceptance-tester.md +56 -0
- package/agents/architect.md +25 -67
- package/agents/build-error-resolver.md +28 -97
- package/agents/code-reviewer.md +89 -0
- package/agents/diagrammer.md +34 -169
- package/agents/documenter.md +43 -0
- package/agents/e2e-tester.md +46 -281
- package/agents/event/event-ops.md +54 -77
- package/agents/event/event-planner.md +63 -0
- package/agents/figma/figma-engineer.md +76 -0
- package/agents/implementer.md +26 -41
- package/agents/security-reviewer.md +56 -0
- package/agents/tester.md +37 -33
- package/agents/ui/design-reviewer.md +62 -0
- package/agents/ui/design-system-gen.md +63 -0
- package/dist/cli/commands/remove.d.ts.map +1 -1
- package/dist/cli/commands/remove.js +8 -10
- package/dist/cli/commands/remove.js.map +1 -1
- package/dist/cli/index.d.ts +0 -4
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +0 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/llm/model-refresh.js +1 -1
- package/dist/cli/llm/model-refresh.js.map +1 -1
- package/dist/cli/postinstall/claude-agents.d.ts.map +1 -1
- package/dist/cli/postinstall/claude-agents.js +16 -77
- package/dist/cli/postinstall/claude-agents.js.map +1 -1
- package/dist/cli/postinstall/constants.d.ts.map +1 -1
- package/dist/cli/postinstall/constants.js +80 -296
- package/dist/cli/postinstall/constants.js.map +1 -1
- package/dist/cli/postinstall/cursor-agents.d.ts +5 -0
- package/dist/cli/postinstall/cursor-agents.d.ts.map +1 -1
- package/dist/cli/postinstall/cursor-agents.js +26 -68
- package/dist/cli/postinstall/cursor-agents.js.map +1 -1
- package/dist/cli/postinstall/cursor-skills.d.ts.map +1 -1
- package/dist/cli/postinstall/cursor-skills.js +26 -30
- package/dist/cli/postinstall/cursor-skills.js.map +1 -1
- package/dist/cli/postinstall/main.d.ts.map +1 -1
- package/dist/cli/postinstall/main.js +0 -2
- package/dist/cli/postinstall/main.js.map +1 -1
- package/dist/cli/setup/Provisioner.d.ts.map +1 -1
- package/dist/cli/setup/Provisioner.js +19 -21
- package/dist/cli/setup/Provisioner.js.map +1 -1
- package/dist/cli/utils.d.ts +4 -1
- package/dist/cli/utils.d.ts.map +1 -1
- package/dist/cli/utils.js +4 -1
- package/dist/cli/utils.js.map +1 -1
- package/dist/infra/lib/FrameworkDetector.js +4 -4
- package/dist/infra/lib/FrameworkDetector.js.map +1 -1
- package/dist/infra/lib/OrchestrateWorkflow.js +2 -2
- package/dist/infra/lib/OrchestrateWorkflow.js.map +1 -1
- package/dist/infra/lib/browser/launch.js +1 -1
- package/dist/infra/lib/browser/launch.js.map +1 -1
- package/dist/infra/lib/browser/types.d.ts +1 -1
- package/dist/infra/lib/browser/types.js +1 -1
- package/dist/infra/lib/constants.d.ts +1 -1
- package/dist/infra/lib/constants.d.ts.map +1 -1
- package/dist/infra/lib/constants.js +4 -5
- package/dist/infra/lib/constants.js.map +1 -1
- package/dist/infra/lib/evolution/__tests__/integration.test.js +7 -7
- package/dist/infra/lib/evolution/__tests__/integration.test.js.map +1 -1
- package/dist/infra/lib/memory/index.d.ts +0 -2
- package/dist/infra/lib/memory/index.d.ts.map +1 -1
- package/dist/infra/lib/memory/index.js +0 -2
- package/dist/infra/lib/memory/index.js.map +1 -1
- package/dist/infra/lib/telemetry/SkillTelemetry.test.js +1 -1
- package/dist/infra/lib/telemetry/SkillTelemetry.test.js.map +1 -1
- package/dist/tools/index.d.ts +0 -4
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +0 -4
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/memory/autoSaveContext.d.ts +0 -1
- package/dist/tools/memory/autoSaveContext.d.ts.map +1 -1
- package/dist/tools/memory/autoSaveContext.js +13 -27
- package/dist/tools/memory/autoSaveContext.js.map +1 -1
- package/hooks/scripts/__tests__/.vibe/command-log.txt +3 -78
- package/hooks/scripts/__tests__/.vibe/memories/memories.db +0 -0
- package/hooks/scripts/__tests__/.vibe/memories/memories.db-shm +0 -0
- package/hooks/scripts/__tests__/.vibe/memories/memories.db-wal +0 -0
- package/hooks/scripts/__tests__/clone-behaviors.test.js +64 -0
- package/hooks/scripts/__tests__/clone-merge-responsive.test.js +106 -0
- 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/clone-extract.js +242 -28
- package/hooks/scripts/clone-merge-responsive.js +184 -0
- package/hooks/scripts/clone-spec.js +33 -8
- package/hooks/scripts/clone-validate.js +15 -9
- package/hooks/scripts/code-check.js +16 -203
- package/hooks/scripts/context-save.js +0 -11
- package/hooks/scripts/lib/scope-from-spec.js +9 -6
- package/hooks/scripts/post-edit-dispatcher.js +1 -1
- package/hooks/scripts/prompt-dispatcher.js +7 -18
- package/hooks/scripts/session-start.js +25 -35
- package/package.json +6 -5
- 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/clone/SKILL.md +132 -55
- package/skills/commerce-patterns/SKILL.md +2 -2
- package/skills/commit-push-pr/SKILL.md +0 -1
- package/skills/context7-usage/SKILL.md +1 -1
- package/skills/design-refine/SKILL.md +140 -0
- package/skills/{design-polish → design-refine}/templates/polish-report.md +1 -1
- package/skills/{design-normalize → design-refine}/templates/token-audit.md +3 -3
- package/skills/design-review/SKILL.md +143 -0
- package/skills/{design-audit → design-review}/agents/a11y-auditor.md +1 -1
- package/skills/{design-audit → design-review}/agents/performance-auditor.md +1 -1
- package/skills/{design-audit → design-review}/agents/responsive-auditor.md +1 -1
- package/skills/{design-audit → design-review}/agents/slop-detector.md +1 -1
- package/skills/{design-audit → design-review}/frameworks/core-web-vitals.md +1 -1
- package/skills/{design-audit → design-review}/frameworks/wcag-checklist.md +1 -1
- package/skills/{design-audit → design-review}/orchestrator.md +3 -3
- package/skills/{design-critique → design-review}/templates/critique-report.md +3 -3
- package/skills/{design-audit → design-review}/templates/report.md +3 -3
- package/skills/design-teach/SKILL.md +11 -11
- package/skills/docs/SKILL.md +14 -16
- package/skills/e2e-commerce/SKILL.md +1 -1
- package/skills/event-comms/SKILL.md +1 -1
- package/skills/event-ops/SKILL.md +2 -2
- package/skills/event-planning/SKILL.md +1 -1
- package/skills/exec-plan/SKILL.md +2 -2
- package/skills/figma/SKILL.md +240 -148
- package/skills/figma/rubrics/css-mapping.md +125 -0
- package/skills/git-worktree/SKILL.md +1 -1
- package/skills/handoff/SKILL.md +1 -1
- package/skills/parallel-research/SKILL.md +14 -28
- package/skills/priority-todos/SKILL.md +1 -1
- package/skills/regress/SKILL.md +11 -0
- package/skills/restraint/SKILL.md +72 -0
- package/skills/seo-checklist/SKILL.md +2 -2
- package/skills/spec/SKILL.md +65 -836
- package/skills/test/SKILL.md +3 -3
- package/skills/tool-fallback/SKILL.md +2 -2
- package/skills/vercel-react-best-practices/SKILL.md +1 -1
- package/skills/vibe/SKILL.md +20 -35
- package/skills/vibe.analyze/SKILL.md +7 -9
- package/skills/vibe.clone/SKILL.md +39 -19
- package/skills/vibe.docs/SKILL.md +1 -1
- package/skills/vibe.event/SKILL.md +27 -27
- package/skills/vibe.figma/SKILL.md +14 -18
- package/skills/vibe.harness/SKILL.md +5 -5
- package/skills/vibe.reason/SKILL.md +0 -2
- package/skills/vibe.review/SKILL.md +45 -49
- package/skills/vibe.run/SKILL.md +2 -5
- package/skills/vibe.run/references/parallel-agents.md +33 -98
- package/skills/vibe.spec/SKILL.md +38 -535
- package/skills/vibe.utils/SKILL.md +3 -3
- package/skills/vibe.verify/SKILL.md +70 -542
- package/skills/video-production/SKILL.md +1 -1
- package/vibe/rules/orchestrator-contract.md +5 -4
- package/vibe/rules/quality/performance.md +1 -1
- package/vibe/templates/claudemd-template.md +1 -1
- package/vibe/templates/spec-template.md +35 -185
- package/agents/architect-low.md +0 -41
- package/agents/architect-medium.md +0 -59
- package/agents/compounder.md +0 -265
- package/agents/docs/api-documenter.md +0 -99
- package/agents/docs/changelog-writer.md +0 -93
- package/agents/event/event-comms.md +0 -78
- package/agents/event/event-content.md +0 -68
- package/agents/event/event-image.md +0 -95
- package/agents/event/event-scheduler.md +0 -69
- package/agents/event/event-speaker.md +0 -86
- package/agents/explorer-low.md +0 -42
- package/agents/explorer-medium.md +0 -59
- package/agents/explorer.md +0 -48
- package/agents/figma/figma-analyst.md +0 -56
- package/agents/figma/figma-architect.md +0 -116
- package/agents/figma/figma-auditor.md +0 -86
- package/agents/figma/figma-builder.md +0 -104
- package/agents/implementer-low.md +0 -43
- package/agents/implementer-medium.md +0 -52
- package/agents/junior-mentor.md +0 -141
- package/agents/planning/requirements-analyst.md +0 -84
- package/agents/planning/ux-advisor.md +0 -83
- package/agents/qa/acceptance-tester.md +0 -86
- package/agents/qa/edge-case-finder.md +0 -93
- package/agents/qa/qa-coordinator.md +0 -131
- package/agents/refactor-cleaner.md +0 -143
- package/agents/research/best-practices.md +0 -199
- package/agents/research/codebase-patterns.md +0 -157
- package/agents/research/framework-docs.md +0 -188
- package/agents/research/security-advisory.md +0 -213
- package/agents/review/architecture-reviewer.md +0 -107
- package/agents/review/complexity-reviewer.md +0 -116
- package/agents/review/data-integrity-reviewer.md +0 -88
- package/agents/review/git-history-reviewer.md +0 -103
- package/agents/review/performance-reviewer.md +0 -86
- package/agents/review/python-reviewer.md +0 -150
- package/agents/review/rails-reviewer.md +0 -139
- package/agents/review/react-reviewer.md +0 -144
- package/agents/review/security-reviewer.md +0 -80
- package/agents/review/simplicity-reviewer.md +0 -140
- package/agents/review/test-coverage-reviewer.md +0 -116
- package/agents/review/typescript-reviewer.md +0 -127
- package/agents/searcher.md +0 -54
- package/agents/simplifier.md +0 -124
- package/agents/teams/debug-team.md +0 -74
- package/agents/teams/dev-team.md +0 -92
- package/agents/teams/docs-team.md +0 -84
- package/agents/teams/figma-team.md +0 -89
- package/agents/teams/fullstack-team.md +0 -87
- package/agents/teams/lite-team.md +0 -73
- package/agents/teams/migration-team.md +0 -82
- package/agents/teams/refactor-team.md +0 -98
- package/agents/teams/research-team.md +0 -90
- package/agents/teams/review-debate-team.md +0 -129
- package/agents/teams/security-team.md +0 -85
- package/agents/ui/ui-a11y-auditor.md +0 -93
- package/agents/ui/ui-antipattern-detector.md +0 -102
- package/agents/ui/ui-dataviz-advisor.md +0 -69
- package/agents/ui/ui-design-system-gen.md +0 -57
- package/agents/ui/ui-industry-analyzer.md +0 -49
- package/agents/ui/ui-layout-architect.md +0 -65
- package/agents/ui/ui-stack-implementer.md +0 -68
- package/agents/ui/ux-compliance-reviewer.md +0 -81
- package/agents/ui-previewer.md +0 -262
- package/dist/cli/llm/gemini-commands.d.ts +0 -25
- package/dist/cli/llm/gemini-commands.d.ts.map +0 -1
- package/dist/cli/llm/gemini-commands.js +0 -143
- package/dist/cli/llm/gemini-commands.js.map +0 -1
- package/dist/cli/postinstall/codex-agents.d.ts +0 -24
- package/dist/cli/postinstall/codex-agents.d.ts.map +0 -1
- package/dist/cli/postinstall/codex-agents.js +0 -114
- package/dist/cli/postinstall/codex-agents.js.map +0 -1
- package/dist/cli/postinstall/codex-instruction.d.ts +0 -10
- package/dist/cli/postinstall/codex-instruction.d.ts.map +0 -1
- package/dist/cli/postinstall/codex-instruction.js +0 -56
- package/dist/cli/postinstall/codex-instruction.js.map +0 -1
- package/dist/cli/postinstall/gemini-agents.d.ts +0 -12
- package/dist/cli/postinstall/gemini-agents.d.ts.map +0 -1
- package/dist/cli/postinstall/gemini-agents.js +0 -80
- package/dist/cli/postinstall/gemini-agents.js.map +0 -1
- package/dist/cli/postinstall/gemini-instruction.d.ts +0 -10
- package/dist/cli/postinstall/gemini-instruction.d.ts.map +0 -1
- package/dist/cli/postinstall/gemini-instruction.js +0 -59
- package/dist/cli/postinstall/gemini-instruction.js.map +0 -1
- package/dist/infra/lib/ContextCompressor.d.ts +0 -104
- package/dist/infra/lib/ContextCompressor.d.ts.map +0 -1
- package/dist/infra/lib/ContextCompressor.js +0 -297
- package/dist/infra/lib/ContextCompressor.js.map +0 -1
- package/dist/infra/lib/ContextCompressor.test.d.ts +0 -2
- package/dist/infra/lib/ContextCompressor.test.d.ts.map +0 -1
- package/dist/infra/lib/ContextCompressor.test.js +0 -25
- package/dist/infra/lib/ContextCompressor.test.js.map +0 -1
- package/dist/infra/lib/ProgressTracker.d.ts +0 -73
- package/dist/infra/lib/ProgressTracker.d.ts.map +0 -1
- package/dist/infra/lib/ProgressTracker.js +0 -267
- package/dist/infra/lib/ProgressTracker.js.map +0 -1
- package/dist/infra/lib/TokenBudgetTracker.d.ts +0 -68
- package/dist/infra/lib/TokenBudgetTracker.d.ts.map +0 -1
- package/dist/infra/lib/TokenBudgetTracker.js +0 -191
- package/dist/infra/lib/TokenBudgetTracker.js.map +0 -1
- package/dist/infra/lib/autonomy/AuditStore.d.ts +0 -63
- package/dist/infra/lib/autonomy/AuditStore.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/AuditStore.js +0 -185
- package/dist/infra/lib/autonomy/AuditStore.js.map +0 -1
- package/dist/infra/lib/autonomy/AutonomyConfig.d.ts +0 -84
- package/dist/infra/lib/autonomy/AutonomyConfig.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/AutonomyConfig.js +0 -49
- package/dist/infra/lib/autonomy/AutonomyConfig.js.map +0 -1
- package/dist/infra/lib/autonomy/AutonomyOrchestrator.d.ts +0 -78
- package/dist/infra/lib/autonomy/AutonomyOrchestrator.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/AutonomyOrchestrator.js +0 -246
- package/dist/infra/lib/autonomy/AutonomyOrchestrator.js.map +0 -1
- package/dist/infra/lib/autonomy/BackgroundMonitor.d.ts +0 -36
- package/dist/infra/lib/autonomy/BackgroundMonitor.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/BackgroundMonitor.js +0 -138
- package/dist/infra/lib/autonomy/BackgroundMonitor.js.map +0 -1
- package/dist/infra/lib/autonomy/CollaborationProtocol.d.ts +0 -56
- package/dist/infra/lib/autonomy/CollaborationProtocol.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/CollaborationProtocol.js +0 -122
- package/dist/infra/lib/autonomy/CollaborationProtocol.js.map +0 -1
- package/dist/infra/lib/autonomy/ConfirmationManager.d.ts +0 -42
- package/dist/infra/lib/autonomy/ConfirmationManager.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/ConfirmationManager.js +0 -200
- package/dist/infra/lib/autonomy/ConfirmationManager.js.map +0 -1
- package/dist/infra/lib/autonomy/ConfirmationStore.d.ts +0 -55
- package/dist/infra/lib/autonomy/ConfirmationStore.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/ConfirmationStore.js +0 -130
- package/dist/infra/lib/autonomy/ConfirmationStore.js.map +0 -1
- package/dist/infra/lib/autonomy/EventBus.d.ts +0 -20
- package/dist/infra/lib/autonomy/EventBus.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/EventBus.js +0 -119
- package/dist/infra/lib/autonomy/EventBus.js.map +0 -1
- package/dist/infra/lib/autonomy/EventOutbox.d.ts +0 -32
- package/dist/infra/lib/autonomy/EventOutbox.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/EventOutbox.js +0 -152
- package/dist/infra/lib/autonomy/EventOutbox.js.map +0 -1
- package/dist/infra/lib/autonomy/NotificationDispatcher.d.ts +0 -24
- package/dist/infra/lib/autonomy/NotificationDispatcher.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/NotificationDispatcher.js +0 -112
- package/dist/infra/lib/autonomy/NotificationDispatcher.js.map +0 -1
- package/dist/infra/lib/autonomy/PolicyEngine.d.ts +0 -76
- package/dist/infra/lib/autonomy/PolicyEngine.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/PolicyEngine.js +0 -208
- package/dist/infra/lib/autonomy/PolicyEngine.js.map +0 -1
- package/dist/infra/lib/autonomy/ProactiveAnalyzer.d.ts +0 -61
- package/dist/infra/lib/autonomy/ProactiveAnalyzer.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/ProactiveAnalyzer.js +0 -236
- package/dist/infra/lib/autonomy/ProactiveAnalyzer.js.map +0 -1
- package/dist/infra/lib/autonomy/RiskClassifier.d.ts +0 -35
- package/dist/infra/lib/autonomy/RiskClassifier.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/RiskClassifier.js +0 -147
- package/dist/infra/lib/autonomy/RiskClassifier.js.map +0 -1
- package/dist/infra/lib/autonomy/SecuritySentinel.d.ts +0 -51
- package/dist/infra/lib/autonomy/SecuritySentinel.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/SecuritySentinel.js +0 -162
- package/dist/infra/lib/autonomy/SecuritySentinel.js.map +0 -1
- package/dist/infra/lib/autonomy/SuggestionStore.d.ts +0 -54
- package/dist/infra/lib/autonomy/SuggestionStore.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/SuggestionStore.js +0 -144
- package/dist/infra/lib/autonomy/SuggestionStore.js.map +0 -1
- package/dist/infra/lib/autonomy/TaskDecomposer.d.ts +0 -38
- package/dist/infra/lib/autonomy/TaskDecomposer.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/TaskDecomposer.js +0 -175
- package/dist/infra/lib/autonomy/TaskDecomposer.js.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/audit-store.test.d.ts +0 -2
- package/dist/infra/lib/autonomy/__tests__/audit-store.test.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/audit-store.test.js +0 -198
- package/dist/infra/lib/autonomy/__tests__/audit-store.test.js.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/event-bus.test.d.ts +0 -2
- package/dist/infra/lib/autonomy/__tests__/event-bus.test.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/event-bus.test.js +0 -225
- package/dist/infra/lib/autonomy/__tests__/event-bus.test.js.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/event-core.test.d.ts +0 -2
- package/dist/infra/lib/autonomy/__tests__/event-core.test.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/event-core.test.js +0 -194
- package/dist/infra/lib/autonomy/__tests__/event-core.test.js.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/governance.test.d.ts +0 -2
- package/dist/infra/lib/autonomy/__tests__/governance.test.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/governance.test.js +0 -540
- package/dist/infra/lib/autonomy/__tests__/governance.test.js.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/integration.test.d.ts +0 -2
- package/dist/infra/lib/autonomy/__tests__/integration.test.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/integration.test.js +0 -480
- package/dist/infra/lib/autonomy/__tests__/integration.test.js.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/proactive.test.d.ts +0 -2
- package/dist/infra/lib/autonomy/__tests__/proactive.test.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/proactive.test.js +0 -410
- package/dist/infra/lib/autonomy/__tests__/proactive.test.js.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/sentinel.test.d.ts +0 -2
- package/dist/infra/lib/autonomy/__tests__/sentinel.test.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/__tests__/sentinel.test.js +0 -486
- package/dist/infra/lib/autonomy/__tests__/sentinel.test.js.map +0 -1
- package/dist/infra/lib/autonomy/index.d.ts +0 -18
- package/dist/infra/lib/autonomy/index.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/index.js +0 -22
- package/dist/infra/lib/autonomy/index.js.map +0 -1
- package/dist/infra/lib/autonomy/schemas.d.ts +0 -317
- package/dist/infra/lib/autonomy/schemas.d.ts.map +0 -1
- package/dist/infra/lib/autonomy/schemas.js +0 -90
- package/dist/infra/lib/autonomy/schemas.js.map +0 -1
- package/dist/infra/lib/claude/index.d.ts +0 -5
- package/dist/infra/lib/claude/index.d.ts.map +0 -1
- package/dist/infra/lib/claude/index.js +0 -5
- package/dist/infra/lib/claude/index.js.map +0 -1
- package/dist/infra/lib/claude/storage.d.ts +0 -12
- package/dist/infra/lib/claude/storage.d.ts.map +0 -1
- package/dist/infra/lib/claude/storage.js +0 -54
- package/dist/infra/lib/claude/storage.js.map +0 -1
- package/dist/infra/lib/gemini/auth.d.ts +0 -18
- package/dist/infra/lib/gemini/auth.d.ts.map +0 -1
- package/dist/infra/lib/gemini/auth.js +0 -32
- package/dist/infra/lib/gemini/auth.js.map +0 -1
- package/dist/infra/lib/gemini/capabilities.d.ts +0 -28
- package/dist/infra/lib/gemini/capabilities.d.ts.map +0 -1
- package/dist/infra/lib/gemini/capabilities.js +0 -178
- package/dist/infra/lib/gemini/capabilities.js.map +0 -1
- package/dist/infra/lib/gemini/chat.d.ts +0 -35
- package/dist/infra/lib/gemini/chat.d.ts.map +0 -1
- package/dist/infra/lib/gemini/chat.js +0 -161
- package/dist/infra/lib/gemini/chat.js.map +0 -1
- package/dist/infra/lib/gemini/completion.d.ts +0 -12
- package/dist/infra/lib/gemini/completion.d.ts.map +0 -1
- package/dist/infra/lib/gemini/completion.js +0 -13
- package/dist/infra/lib/gemini/completion.js.map +0 -1
- package/dist/infra/lib/gemini/constants.d.ts +0 -8
- package/dist/infra/lib/gemini/constants.d.ts.map +0 -1
- package/dist/infra/lib/gemini/constants.js +0 -11
- package/dist/infra/lib/gemini/constants.js.map +0 -1
- package/dist/infra/lib/gemini/index.d.ts +0 -13
- package/dist/infra/lib/gemini/index.d.ts.map +0 -1
- package/dist/infra/lib/gemini/index.js +0 -12
- package/dist/infra/lib/gemini/index.js.map +0 -1
- package/dist/infra/lib/gemini/models.d.ts +0 -11
- package/dist/infra/lib/gemini/models.d.ts.map +0 -1
- package/dist/infra/lib/gemini/models.js +0 -38
- package/dist/infra/lib/gemini/models.js.map +0 -1
- package/dist/infra/lib/gemini/orchestration.d.ts +0 -33
- package/dist/infra/lib/gemini/orchestration.d.ts.map +0 -1
- package/dist/infra/lib/gemini/orchestration.js +0 -62
- package/dist/infra/lib/gemini/orchestration.js.map +0 -1
- package/dist/infra/lib/gemini/types.d.ts +0 -115
- package/dist/infra/lib/gemini/types.d.ts.map +0 -1
- package/dist/infra/lib/gemini/types.js +0 -5
- package/dist/infra/lib/gemini/types.js.map +0 -1
- package/dist/infra/orchestrator/AgentAnnouncer.d.ts +0 -64
- package/dist/infra/orchestrator/AgentAnnouncer.d.ts.map +0 -1
- package/dist/infra/orchestrator/AgentAnnouncer.js +0 -127
- package/dist/infra/orchestrator/AgentAnnouncer.js.map +0 -1
- package/dist/infra/orchestrator/AgentAnnouncer.test.d.ts +0 -5
- package/dist/infra/orchestrator/AgentAnnouncer.test.d.ts.map +0 -1
- package/dist/infra/orchestrator/AgentAnnouncer.test.js +0 -119
- package/dist/infra/orchestrator/AgentAnnouncer.test.js.map +0 -1
- package/dist/infra/orchestrator/AgentExecutor.d.ts +0 -22
- package/dist/infra/orchestrator/AgentExecutor.d.ts.map +0 -1
- package/dist/infra/orchestrator/AgentExecutor.js +0 -272
- package/dist/infra/orchestrator/AgentExecutor.js.map +0 -1
- package/dist/infra/orchestrator/AgentManager.d.ts +0 -72
- package/dist/infra/orchestrator/AgentManager.d.ts.map +0 -1
- package/dist/infra/orchestrator/AgentManager.js +0 -183
- package/dist/infra/orchestrator/AgentManager.js.map +0 -1
- package/dist/infra/orchestrator/AgentManifestCache.d.ts +0 -54
- package/dist/infra/orchestrator/AgentManifestCache.d.ts.map +0 -1
- package/dist/infra/orchestrator/AgentManifestCache.js +0 -191
- package/dist/infra/orchestrator/AgentManifestCache.js.map +0 -1
- package/dist/infra/orchestrator/AgentRegistry.d.ts +0 -76
- package/dist/infra/orchestrator/AgentRegistry.d.ts.map +0 -1
- package/dist/infra/orchestrator/AgentRegistry.js +0 -217
- package/dist/infra/orchestrator/AgentRegistry.js.map +0 -1
- package/dist/infra/orchestrator/AgentRegistry.test.d.ts +0 -5
- package/dist/infra/orchestrator/AgentRegistry.test.d.ts.map +0 -1
- package/dist/infra/orchestrator/AgentRegistry.test.js +0 -122
- package/dist/infra/orchestrator/AgentRegistry.test.js.map +0 -1
- package/dist/infra/orchestrator/BackgroundManager.d.ts +0 -128
- package/dist/infra/orchestrator/BackgroundManager.d.ts.map +0 -1
- package/dist/infra/orchestrator/BackgroundManager.js +0 -620
- package/dist/infra/orchestrator/BackgroundManager.js.map +0 -1
- package/dist/infra/orchestrator/BackgroundManager.test.d.ts +0 -6
- package/dist/infra/orchestrator/BackgroundManager.test.d.ts.map +0 -1
- package/dist/infra/orchestrator/BackgroundManager.test.js +0 -162
- package/dist/infra/orchestrator/BackgroundManager.test.js.map +0 -1
- package/dist/infra/orchestrator/CheckpointManager.d.ts +0 -54
- package/dist/infra/orchestrator/CheckpointManager.d.ts.map +0 -1
- package/dist/infra/orchestrator/CheckpointManager.js +0 -121
- package/dist/infra/orchestrator/CheckpointManager.js.map +0 -1
- package/dist/infra/orchestrator/CodexAgentRuntime.d.ts +0 -12
- package/dist/infra/orchestrator/CodexAgentRuntime.d.ts.map +0 -1
- package/dist/infra/orchestrator/CodexAgentRuntime.js +0 -94
- package/dist/infra/orchestrator/CodexAgentRuntime.js.map +0 -1
- package/dist/infra/orchestrator/CodexAgentRuntime.test.d.ts +0 -2
- package/dist/infra/orchestrator/CodexAgentRuntime.test.d.ts.map +0 -1
- package/dist/infra/orchestrator/CodexAgentRuntime.test.js +0 -37
- package/dist/infra/orchestrator/CodexAgentRuntime.test.js.map +0 -1
- package/dist/infra/orchestrator/LLMCluster.d.ts +0 -82
- package/dist/infra/orchestrator/LLMCluster.d.ts.map +0 -1
- package/dist/infra/orchestrator/LLMCluster.js +0 -146
- package/dist/infra/orchestrator/LLMCluster.js.map +0 -1
- package/dist/infra/orchestrator/MultiLlmResearch.d.ts +0 -31
- package/dist/infra/orchestrator/MultiLlmResearch.d.ts.map +0 -1
- package/dist/infra/orchestrator/MultiLlmResearch.js +0 -160
- package/dist/infra/orchestrator/MultiLlmResearch.js.map +0 -1
- package/dist/infra/orchestrator/PhasePipeline.d.ts +0 -122
- package/dist/infra/orchestrator/PhasePipeline.d.ts.map +0 -1
- package/dist/infra/orchestrator/PhasePipeline.js +0 -385
- package/dist/infra/orchestrator/PhasePipeline.js.map +0 -1
- package/dist/infra/orchestrator/PhaseResultStore.d.ts +0 -39
- package/dist/infra/orchestrator/PhaseResultStore.d.ts.map +0 -1
- package/dist/infra/orchestrator/PhaseResultStore.js +0 -151
- package/dist/infra/orchestrator/PhaseResultStore.js.map +0 -1
- package/dist/infra/orchestrator/SessionStore.d.ts +0 -40
- package/dist/infra/orchestrator/SessionStore.d.ts.map +0 -1
- package/dist/infra/orchestrator/SessionStore.js +0 -116
- package/dist/infra/orchestrator/SessionStore.js.map +0 -1
- package/dist/infra/orchestrator/SmartRouter.d.ts +0 -90
- package/dist/infra/orchestrator/SmartRouter.d.ts.map +0 -1
- package/dist/infra/orchestrator/SmartRouter.js +0 -277
- package/dist/infra/orchestrator/SmartRouter.js.map +0 -1
- package/dist/infra/orchestrator/SmartRouter.test.d.ts +0 -5
- package/dist/infra/orchestrator/SmartRouter.test.d.ts.map +0 -1
- package/dist/infra/orchestrator/SmartRouter.test.js +0 -484
- package/dist/infra/orchestrator/SmartRouter.test.js.map +0 -1
- package/dist/infra/orchestrator/SwarmOrchestrator.d.ts +0 -143
- package/dist/infra/orchestrator/SwarmOrchestrator.d.ts.map +0 -1
- package/dist/infra/orchestrator/SwarmOrchestrator.js +0 -378
- package/dist/infra/orchestrator/SwarmOrchestrator.js.map +0 -1
- package/dist/infra/orchestrator/SwarmOrchestrator.test.d.ts +0 -5
- package/dist/infra/orchestrator/SwarmOrchestrator.test.d.ts.map +0 -1
- package/dist/infra/orchestrator/SwarmOrchestrator.test.js +0 -95
- package/dist/infra/orchestrator/SwarmOrchestrator.test.js.map +0 -1
- package/dist/infra/orchestrator/agentDiscovery.d.ts +0 -26
- package/dist/infra/orchestrator/agentDiscovery.d.ts.map +0 -1
- package/dist/infra/orchestrator/agentDiscovery.js +0 -175
- package/dist/infra/orchestrator/agentDiscovery.js.map +0 -1
- package/dist/infra/orchestrator/backgroundAgent.d.ts +0 -9
- package/dist/infra/orchestrator/backgroundAgent.d.ts.map +0 -1
- package/dist/infra/orchestrator/backgroundAgent.js +0 -10
- package/dist/infra/orchestrator/backgroundAgent.js.map +0 -1
- package/dist/infra/orchestrator/index.d.ts +0 -207
- package/dist/infra/orchestrator/index.d.ts.map +0 -1
- package/dist/infra/orchestrator/index.js +0 -362
- package/dist/infra/orchestrator/index.js.map +0 -1
- package/dist/infra/orchestrator/orchestrator.d.ts +0 -60
- package/dist/infra/orchestrator/orchestrator.d.ts.map +0 -1
- package/dist/infra/orchestrator/orchestrator.js +0 -214
- package/dist/infra/orchestrator/orchestrator.js.map +0 -1
- package/dist/infra/orchestrator/parallelResearch.d.ts +0 -27
- package/dist/infra/orchestrator/parallelResearch.d.ts.map +0 -1
- package/dist/infra/orchestrator/parallelResearch.js +0 -285
- package/dist/infra/orchestrator/parallelResearch.js.map +0 -1
- package/dist/infra/orchestrator/types.d.ts +0 -205
- package/dist/infra/orchestrator/types.d.ts.map +0 -1
- package/dist/infra/orchestrator/types.js +0 -87
- package/dist/infra/orchestrator/types.js.map +0 -1
- package/dist/infra/orchestrator/types.test.d.ts +0 -2
- package/dist/infra/orchestrator/types.test.d.ts.map +0 -1
- package/dist/infra/orchestrator/types.test.js +0 -57
- package/dist/infra/orchestrator/types.test.js.map +0 -1
- package/dist/tools/semantic/analyzeDependencyGraph.d.ts +0 -12
- package/dist/tools/semantic/analyzeDependencyGraph.d.ts.map +0 -1
- package/dist/tools/semantic/analyzeDependencyGraph.js +0 -359
- package/dist/tools/semantic/analyzeDependencyGraph.js.map +0 -1
- package/dist/tools/semantic/astGrep.d.ts +0 -25
- package/dist/tools/semantic/astGrep.d.ts.map +0 -1
- package/dist/tools/semantic/astGrep.js +0 -324
- package/dist/tools/semantic/astGrep.js.map +0 -1
- package/dist/tools/semantic/astGrep.test.d.ts +0 -2
- package/dist/tools/semantic/astGrep.test.d.ts.map +0 -1
- package/dist/tools/semantic/astGrep.test.js +0 -74
- package/dist/tools/semantic/astGrep.test.js.map +0 -1
- package/dist/tools/semantic/findReferences.d.ts +0 -9
- package/dist/tools/semantic/findReferences.d.ts.map +0 -1
- package/dist/tools/semantic/findReferences.js +0 -200
- package/dist/tools/semantic/findReferences.js.map +0 -1
- package/dist/tools/semantic/findSymbol.d.ts +0 -8
- package/dist/tools/semantic/findSymbol.d.ts.map +0 -1
- package/dist/tools/semantic/findSymbol.js +0 -204
- package/dist/tools/semantic/findSymbol.js.map +0 -1
- package/dist/tools/semantic/index.d.ts +0 -9
- package/dist/tools/semantic/index.d.ts.map +0 -1
- package/dist/tools/semantic/index.js +0 -11
- package/dist/tools/semantic/index.js.map +0 -1
- package/dist/tools/semantic/lsp.d.ts +0 -68
- package/dist/tools/semantic/lsp.d.ts.map +0 -1
- package/dist/tools/semantic/lsp.js +0 -561
- package/dist/tools/semantic/lsp.js.map +0 -1
- package/dist/tools/spec/e2eTestGenerator.d.ts +0 -61
- package/dist/tools/spec/e2eTestGenerator.d.ts.map +0 -1
- package/dist/tools/spec/e2eTestGenerator.js +0 -255
- package/dist/tools/spec/e2eTestGenerator.js.map +0 -1
- package/dist/tools/spec/specVersioning.d.ts +0 -76
- package/dist/tools/spec/specVersioning.d.ts.map +0 -1
- package/dist/tools/spec/specVersioning.js +0 -236
- package/dist/tools/spec/specVersioning.js.map +0 -1
- package/hooks/scripts/__tests__/keyword-detector.test.js +0 -242
- package/hooks/scripts/keyword-detector.js +0 -226
- package/skills/characterization-test/SKILL.md +0 -209
- package/skills/characterization-test/agents/behavior-capturer.md +0 -50
- package/skills/characterization-test/agents/coverage-checker.md +0 -54
- package/skills/characterization-test/agents/reporter.md +0 -50
- package/skills/characterization-test/agents/test-writer.md +0 -49
- package/skills/characterization-test/rubrics/coverage-criteria.md +0 -53
- package/skills/characterization-test/templates/test-template.ts +0 -101
- package/skills/claude-md-guide/SKILL.md +0 -353
- package/skills/claude-md-guide/rubrics/anti-patterns.md +0 -88
- package/skills/design-audit/SKILL.md +0 -154
- package/skills/design-critique/SKILL.md +0 -140
- package/skills/design-distill/SKILL.md +0 -131
- package/skills/design-normalize/SKILL.md +0 -135
- package/skills/design-polish/SKILL.md +0 -132
- package/skills/figma-convert/SKILL.md +0 -236
- package/skills/figma-extract/SKILL.md +0 -242
- package/skills/interview/SKILL.md +0 -358
- package/skills/interview/checklists/api.md +0 -101
- package/skills/interview/checklists/feature.md +0 -88
- package/skills/interview/checklists/library.md +0 -95
- package/skills/interview/checklists/mobile.md +0 -89
- package/skills/interview/checklists/webapp.md +0 -97
- package/skills/interview/checklists/website.md +0 -99
- package/skills/plan/SKILL.md +0 -254
- package/skills/rob-pike/SKILL.md +0 -66
- package/skills/spec/references/askuser-examples.md +0 -57
- package/skills/spec/references/example-session.md +0 -87
- package/skills/spec/references/templates.md +0 -194
- package/skills/spec-review/SKILL.md +0 -725
- package/skills/systematic-debugging/SKILL.md +0 -142
- package/skills/techdebt/SKILL.md +0 -126
- package/skills/techdebt/agents/analyzer.md +0 -50
- package/skills/techdebt/agents/fixer.md +0 -41
- package/skills/techdebt/agents/reviewer.md +0 -47
- package/skills/techdebt/agents/scanner.md +0 -44
- package/skills/techdebt/orchestrator.md +0 -72
- package/skills/techdebt/rubrics/severity.md +0 -51
- package/skills/techdebt/scripts/scan.js +0 -90
- package/skills/techdebt/templates/report.md +0 -86
- package/skills/typescript-advanced-types/SKILL.md +0 -68
- package/skills/typescript-advanced-types/rubrics/type-patterns.md +0 -109
- package/skills/yagni-ladder/SKILL.md +0 -90
- /package/skills/{claude-md-guide → agents-md}/templates/claude-md.md +0 -0
- /package/skills/{design-polish → design-refine}/rubrics/polish-checklist.md +0 -0
- /package/skills/{design-normalize → design-refine}/rubrics/token-naming.md +0 -0
- /package/skills/{design-distill → design-refine}/templates/design-system.md +0 -0
- /package/skills/{design-audit → design-review}/agents/scorer.md +0 -0
- /package/skills/{design-audit → design-review}/rubrics/ai-slop-patterns.md +0 -0
- /package/skills/{design-audit → design-review}/rubrics/scoring.md +0 -0
- /package/skills/{design-critique → design-review}/rubrics/ux-heuristics.md +0 -0
- /package/skills/{figma-convert → figma}/rubrics/conversion-rules.md +0 -0
- /package/skills/{figma-extract → figma}/rubrics/image-rules.md +0 -0
- /package/skills/{figma-convert → figma}/templates/component.md +0 -0
package/agents/ui-previewer.md
DELETED
|
@@ -1,262 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Preview UI with Gemini image or ASCII art fallback
|
|
3
|
-
argument-hint: "UI description or design folder path"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# /vibe.ui
|
|
7
|
-
|
|
8
|
-
Preview UI from description or design guide folder.
|
|
9
|
-
|
|
10
|
-
- **Gemini enabled**: Generate actual UI image
|
|
11
|
-
- **Gemini disabled**: ASCII art fallback
|
|
12
|
-
|
|
13
|
-
## Model
|
|
14
|
-
|
|
15
|
-
**Sonnet** — Balanced reasoning and quality
|
|
16
|
-
|
|
17
|
-
## Usage
|
|
18
|
-
|
|
19
|
-
```
|
|
20
|
-
/vibe.ui "login page" # Text description
|
|
21
|
-
/vibe.ui "dashboard" --layout grid # With layout option
|
|
22
|
-
/vibe.ui ./design/ # Design guide folder
|
|
23
|
-
/vibe.ui ./mockups/login.html # Single HTML file
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## Process
|
|
27
|
-
|
|
28
|
-
### 0. Detect Input Type
|
|
29
|
-
|
|
30
|
-
First, determine if input is:
|
|
31
|
-
|
|
32
|
-
- **Text description**: Generate UI from description
|
|
33
|
-
- **Folder path**: Read design files and generate UI
|
|
34
|
-
- **File path**: Read single file and generate UI
|
|
35
|
-
|
|
36
|
-
**Detection logic:**
|
|
37
|
-
|
|
38
|
-
```
|
|
39
|
-
if (input starts with "./" or "/" or contains "/" or "\") → path
|
|
40
|
-
else → text description
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
### 1. If Folder/File Path: Read Design Files
|
|
44
|
-
|
|
45
|
-
**Supported file formats:**
|
|
46
|
-
|
|
47
|
-
| Format | Purpose | How to read |
|
|
48
|
-
| ------ | ------- | ----------- |
|
|
49
|
-
| `*.html` | HTML mockups/prototypes | Read and parse structure |
|
|
50
|
-
| `*.md` | Design guide documents | Read content |
|
|
51
|
-
| `*.json` | Design tokens, theme config | Parse JSON |
|
|
52
|
-
| `*.css` / `*.scss` | Style variables, colors | Extract variables |
|
|
53
|
-
| `*.png` / `*.jpg` / `*.webp` | UI screenshots, mockups | **Use Read tool** (multimodal) |
|
|
54
|
-
| `*.svg` | Icons, vector graphics | Read as XML |
|
|
55
|
-
| `*.figma.json` | Figma export | Parse components |
|
|
56
|
-
|
|
57
|
-
**Reading images:**
|
|
58
|
-
|
|
59
|
-
Claude can read images using the Read tool. When encountering image files:
|
|
60
|
-
|
|
61
|
-
1. Use Read tool to view the image
|
|
62
|
-
2. Analyze UI structure, colors, layout from the image
|
|
63
|
-
3. Extract component hierarchy
|
|
64
|
-
|
|
65
|
-
**Folder scanning priority:**
|
|
66
|
-
|
|
67
|
-
1. `*.html` files first (main structure)
|
|
68
|
-
2. `*.png` / `*.jpg` images (visual reference)
|
|
69
|
-
3. `*.json` (design tokens)
|
|
70
|
-
4. `*.css` / `*.scss` (styles)
|
|
71
|
-
5. `*.md` (documentation)
|
|
72
|
-
|
|
73
|
-
**Example folder structure:**
|
|
74
|
-
|
|
75
|
-
```
|
|
76
|
-
design/
|
|
77
|
-
├── mockup.html # Main HTML mockup
|
|
78
|
-
├── screenshot.png # UI screenshot
|
|
79
|
-
├── tokens.json # Design tokens
|
|
80
|
-
├── variables.css # CSS variables
|
|
81
|
-
└── style-guide.md # Documentation
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
### 2. Analyze UI (from description or files)
|
|
85
|
-
|
|
86
|
-
Analyze the UI structure:
|
|
87
|
-
|
|
88
|
-
- Page/component name
|
|
89
|
-
- Required UI elements (buttons, inputs, cards, etc.)
|
|
90
|
-
- Layout structure (header-footer, sidebar, grid, etc.)
|
|
91
|
-
- **Colors and typography** (from design tokens/CSS)
|
|
92
|
-
- **Component hierarchy** (from HTML/images)
|
|
93
|
-
|
|
94
|
-
### 3. Check Gemini Status and Generate
|
|
95
|
-
|
|
96
|
-
**Check Gemini authentication:**
|
|
97
|
-
|
|
98
|
-
```bash
|
|
99
|
-
vibe gemini status
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
#### If Gemini Enabled: Generate UI Image + Code
|
|
103
|
-
|
|
104
|
-
##### A. UI Mockup Image Generation
|
|
105
|
-
|
|
106
|
-
```bash
|
|
107
|
-
node "[LLM_SCRIPT]" gemini image "Modern UI mockup: [UI Description from step 2]. Clean design, [colors/typography if available], mobile-first responsive layout" --output "./ui-preview.png"
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
##### B. UI Code Generation (from design files)
|
|
111
|
-
|
|
112
|
-
When design files (image/HTML/folder) are provided, use Gemini to generate production-ready component code:
|
|
113
|
-
|
|
114
|
-
```bash
|
|
115
|
-
node "[LLM_SCRIPT]" gemini orchestrate "You are a UI code generator. Analyze the provided design and generate production-ready React TypeScript components with Tailwind CSS. Output complete component code with proper types, responsive layout, and accessibility attributes."
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
Pass the design context (file contents, extracted colors, layout structure from step 2) as the user prompt via stdin or arguments.
|
|
119
|
-
|
|
120
|
-
**When to use each:**
|
|
121
|
-
|
|
122
|
-
| Input | Image (Step A) | Code (Step B) |
|
|
123
|
-
| ----- | -------------- | ------------- |
|
|
124
|
-
| Text description | Generate mockup | Skip |
|
|
125
|
-
| Image/HTML/Folder | Generate mockup | Generate component code |
|
|
126
|
-
|
|
127
|
-
#### If Gemini Disabled: ASCII Art Fallback
|
|
128
|
-
|
|
129
|
-
Generate ASCII art based on the UI description:
|
|
130
|
-
|
|
131
|
-
**Input format:**
|
|
132
|
-
|
|
133
|
-
- Page name
|
|
134
|
-
- Layout type (centered, sidebar, grid, header-footer)
|
|
135
|
-
- Components list (type, label, position)
|
|
136
|
-
|
|
137
|
-
**Example ASCII output:**
|
|
138
|
-
|
|
139
|
-
```
|
|
140
|
-
┌─────────────────────────────────────────┐
|
|
141
|
-
│ Welcome │
|
|
142
|
-
├─────────────────────────────────────────┤
|
|
143
|
-
│ │
|
|
144
|
-
│ ┌─────────────────────┐ │
|
|
145
|
-
│ Email: │ │ │
|
|
146
|
-
│ └─────────────────────┘ │
|
|
147
|
-
│ │
|
|
148
|
-
│ ┌─────────────────────┐ │
|
|
149
|
-
│ Pass: │ │ │
|
|
150
|
-
│ └─────────────────────┘ │
|
|
151
|
-
│ │
|
|
152
|
-
│ ┌─────────────────────┐ │
|
|
153
|
-
│ │ Login │ │
|
|
154
|
-
│ └─────────────────────┘ │
|
|
155
|
-
│ │
|
|
156
|
-
└─────────────────────────────────────────┘
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
### 4. Generate Component List
|
|
160
|
-
|
|
161
|
-
Suggest list of components needed for UI:
|
|
162
|
-
|
|
163
|
-
**Required Components:**
|
|
164
|
-
|
|
165
|
-
- `Header.tsx` - Header ("Welcome")
|
|
166
|
-
- `LoginForm.tsx` - Form container
|
|
167
|
-
- `Input.tsx` - Reusable input field
|
|
168
|
-
- `Button.tsx` - Login button
|
|
169
|
-
|
|
170
|
-
**Expected File Structure:**
|
|
171
|
-
|
|
172
|
-
```
|
|
173
|
-
src/
|
|
174
|
-
├── components/
|
|
175
|
-
│ ├── common/
|
|
176
|
-
│ │ ├── Input.tsx
|
|
177
|
-
│ │ └── Button.tsx
|
|
178
|
-
│ └── auth/
|
|
179
|
-
│ ├── Header.tsx
|
|
180
|
-
│ └── LoginForm.tsx
|
|
181
|
-
└── pages/
|
|
182
|
-
└── LoginPage.tsx
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
## Example (with Gemini)
|
|
186
|
-
|
|
187
|
-
```
|
|
188
|
-
User: /vibe.ui ./design/dashboard/
|
|
189
|
-
|
|
190
|
-
Claude: Reading design folder...
|
|
191
|
-
- Found: mockup.png, tokens.json, style-guide.md
|
|
192
|
-
|
|
193
|
-
Analyzing design files...
|
|
194
|
-
- Layout: Sidebar + Main content
|
|
195
|
-
- Colors: Primary #2F6BFF, Background #F5F5F5
|
|
196
|
-
- Components: Header, Sidebar, 3 StatCards, Footer
|
|
197
|
-
|
|
198
|
-
Generating UI mockup with Gemini...
|
|
199
|
-
|
|
200
|
-
✅ UI Preview generated: ./ui-preview-1706234567.png
|
|
201
|
-
|
|
202
|
-
[Image displayed]
|
|
203
|
-
|
|
204
|
-
**Component Breakdown:**
|
|
205
|
-
1. Header (logo, user menu)
|
|
206
|
-
2. Sidebar (navigation)
|
|
207
|
-
3. StatsCard (reusable card)
|
|
208
|
-
4. Footer (copyright, links)
|
|
209
|
-
5. DashboardLayout (overall layout)
|
|
210
|
-
|
|
211
|
-
Next step: /vibe.spec "dashboard page"
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
## Example (ASCII Fallback)
|
|
215
|
-
|
|
216
|
-
```
|
|
217
|
-
User: /vibe.ui "Dashboard page - header, sidebar, main content (3 cards), footer"
|
|
218
|
-
|
|
219
|
-
Claude: Gemini not configured. Using ASCII preview...
|
|
220
|
-
|
|
221
|
-
┌────────────────────────────────────────────────────────┐
|
|
222
|
-
│ [Logo] Dashboard [User] [Logout] │
|
|
223
|
-
├────────┬───────────────────────────────────────────────┤
|
|
224
|
-
│ │ │
|
|
225
|
-
│ Home │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
|
226
|
-
│ Stats │ │ Card 1 │ │ Card 2 │ │ Card 3 │ │
|
|
227
|
-
│ Users │ │ │ │ │ │ │ │
|
|
228
|
-
│ Settings│ │ 100 │ │ 200 │ │ 50 │ │
|
|
229
|
-
│ │ └──────────┘ └──────────┘ └──────────┘ │
|
|
230
|
-
│ │ │
|
|
231
|
-
│ │ │
|
|
232
|
-
├────────┴───────────────────────────────────────────────┤
|
|
233
|
-
│ © 2025 Company Privacy | Terms │
|
|
234
|
-
└────────────────────────────────────────────────────────┘
|
|
235
|
-
|
|
236
|
-
**Required Components:**
|
|
237
|
-
1. Header (logo, user menu)
|
|
238
|
-
2. Sidebar (navigation)
|
|
239
|
-
3. StatsCard (reusable card)
|
|
240
|
-
4. Footer (copyright, links)
|
|
241
|
-
5. DashboardLayout (overall layout)
|
|
242
|
-
|
|
243
|
-
**Layout Structure:**
|
|
244
|
-
- Layout: sidebar (fixed left)
|
|
245
|
-
- Main: grid (3 columns)
|
|
246
|
-
- Responsive: Changes to 1 column on mobile
|
|
247
|
-
|
|
248
|
-
💡 Tip: Run `vibe gemini key <key>` for actual UI image generation
|
|
249
|
-
|
|
250
|
-
Next step: /vibe.spec "dashboard page"
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
## Notes
|
|
254
|
-
|
|
255
|
-
- For complex UI, request in multiple parts
|
|
256
|
-
- Layout options: `sidebar`, `header-footer`, `grid`, `centered`, `split`
|
|
257
|
-
- Gemini generates high-quality mockups; ASCII is for quick visualization
|
|
258
|
-
- Design folder input extracts colors, typography, and component structure automatically
|
|
259
|
-
|
|
260
|
-
---
|
|
261
|
-
|
|
262
|
-
ARGUMENTS: $ARGUMENTS
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Gemini CLI 명령어
|
|
3
|
-
*
|
|
4
|
-
* - vibe gemini key: API Key 설정
|
|
5
|
-
* - vibe gemini status: 상태 확인
|
|
6
|
-
* - vibe gemini logout: 설정 제거
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* Gemini 인증 핵심 로직 (process.exit 없음)
|
|
10
|
-
* API Key 확인
|
|
11
|
-
*/
|
|
12
|
-
export declare function geminiAuthCore(): boolean;
|
|
13
|
-
/**
|
|
14
|
-
* Gemini 인증 (CLI 명령어용)
|
|
15
|
-
*/
|
|
16
|
-
export declare function geminiAuth(): Promise<void>;
|
|
17
|
-
/**
|
|
18
|
-
* Gemini 상태 확인
|
|
19
|
-
*/
|
|
20
|
-
export declare function geminiStatus(): void;
|
|
21
|
-
/**
|
|
22
|
-
* Gemini 로그아웃
|
|
23
|
-
*/
|
|
24
|
-
export declare function geminiLogout(): void;
|
|
25
|
-
//# sourceMappingURL=gemini-commands.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/llm/gemini-commands.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAcH;;;GAGG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAYxC;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAwBhD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAiCnC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CA6BnC"}
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Gemini CLI 명령어
|
|
3
|
-
*
|
|
4
|
-
* - vibe gemini key: API Key 설정
|
|
5
|
-
* - vibe gemini status: 상태 확인
|
|
6
|
-
* - vibe gemini logout: 설정 제거
|
|
7
|
-
*/
|
|
8
|
-
import fs from 'fs';
|
|
9
|
-
import { getProjectConfigPath, getProjectConfigPaths, readGlobalConfig, writeGlobalConfig, } from '../../infra/lib/config/GlobalConfigManager.js';
|
|
10
|
-
/**
|
|
11
|
-
* Gemini 인증 핵심 로직 (process.exit 없음)
|
|
12
|
-
* API Key 확인
|
|
13
|
-
*/
|
|
14
|
-
export function geminiAuthCore() {
|
|
15
|
-
const config = readGlobalConfig();
|
|
16
|
-
const apiKey = config.credentials?.gemini?.apiKey || process.env.GEMINI_API_KEY;
|
|
17
|
-
if (apiKey) {
|
|
18
|
-
updateConfigOnAuth('apikey');
|
|
19
|
-
console.log('Gemini API Key configured.');
|
|
20
|
-
return true;
|
|
21
|
-
}
|
|
22
|
-
console.log('No API key found. Run "vibe gemini key <key>" to set up.');
|
|
23
|
-
return false;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Gemini 인증 (CLI 명령어용)
|
|
27
|
-
*/
|
|
28
|
-
export async function geminiAuth() {
|
|
29
|
-
console.log(`
|
|
30
|
-
Gemini Authentication
|
|
31
|
-
|
|
32
|
-
API Key (Google AI Studio):
|
|
33
|
-
vibe gemini key <your-api-key>
|
|
34
|
-
|
|
35
|
-
Get your API key from:
|
|
36
|
-
https://aistudio.google.com/apikey
|
|
37
|
-
`);
|
|
38
|
-
const config = readGlobalConfig();
|
|
39
|
-
const apiKey = config.credentials?.gemini?.apiKey;
|
|
40
|
-
if (apiKey) {
|
|
41
|
-
console.log('API Key: configured');
|
|
42
|
-
console.log('\nStatus: vibe gemini status');
|
|
43
|
-
console.log('Logout: vibe gemini logout');
|
|
44
|
-
process.exit(0);
|
|
45
|
-
}
|
|
46
|
-
console.log('No API key configured.');
|
|
47
|
-
console.log('Run: vibe gemini key <your-api-key>');
|
|
48
|
-
process.exit(1);
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Gemini 상태 확인
|
|
52
|
-
*/
|
|
53
|
-
export function geminiStatus() {
|
|
54
|
-
try {
|
|
55
|
-
const config = readGlobalConfig();
|
|
56
|
-
const geminiCreds = config.credentials?.gemini;
|
|
57
|
-
const hasApiKey = Boolean(geminiCreds?.apiKey) || Boolean(process.env.GEMINI_API_KEY);
|
|
58
|
-
if (hasApiKey) {
|
|
59
|
-
const modelOverrides = config.models;
|
|
60
|
-
const lines = [
|
|
61
|
-
'\nGemini Status\n',
|
|
62
|
-
'Auth: API Key',
|
|
63
|
-
`Source: ${geminiCreds?.apiKey ? '~/.vibe/config.json' : 'GEMINI_API_KEY env'}`,
|
|
64
|
-
];
|
|
65
|
-
lines.push('\nModels:');
|
|
66
|
-
lines.push(` gemini=${modelOverrides?.gemini || process.env.GEMINI_MODEL || '(default)'}`);
|
|
67
|
-
lines.push(` geminiFlash=${modelOverrides?.geminiFlash || process.env.GEMINI_FLASH_MODEL || '(default)'}\n`);
|
|
68
|
-
console.log(lines.join('\n'));
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
console.log(`
|
|
72
|
-
Gemini Status
|
|
73
|
-
|
|
74
|
-
No credentials found.
|
|
75
|
-
|
|
76
|
-
Set up:
|
|
77
|
-
vibe gemini key <your-api-key>
|
|
78
|
-
or set GEMINI_API_KEY env var
|
|
79
|
-
`);
|
|
80
|
-
}
|
|
81
|
-
catch (error) {
|
|
82
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
83
|
-
console.error('Status check failed:', message);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Gemini 로그아웃
|
|
88
|
-
*/
|
|
89
|
-
export function geminiLogout() {
|
|
90
|
-
try {
|
|
91
|
-
const config = readGlobalConfig();
|
|
92
|
-
if (config.credentials?.gemini) {
|
|
93
|
-
delete config.credentials.gemini;
|
|
94
|
-
writeGlobalConfig(config);
|
|
95
|
-
console.log('Gemini credentials removed from ~/.vibe/config.json');
|
|
96
|
-
}
|
|
97
|
-
const projectRoot = process.cwd();
|
|
98
|
-
const configPath = findExistingProjectConfig(projectRoot);
|
|
99
|
-
if (fs.existsSync(configPath)) {
|
|
100
|
-
try {
|
|
101
|
-
const projConfig = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
102
|
-
if (projConfig.models?.gemini) {
|
|
103
|
-
projConfig.models.gemini.enabled = false;
|
|
104
|
-
projConfig.models.gemini.authType = undefined;
|
|
105
|
-
projConfig.models.gemini.email = undefined;
|
|
106
|
-
fs.writeFileSync(configPath, JSON.stringify(projConfig, null, 2));
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
catch { /* ignore */ }
|
|
110
|
-
}
|
|
111
|
-
console.log('Gemini credentials cleared.');
|
|
112
|
-
}
|
|
113
|
-
catch (error) {
|
|
114
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
115
|
-
console.error('Logout failed:', message);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* config.json에 Gemini 활성화 기록
|
|
120
|
-
*/
|
|
121
|
-
function updateConfigOnAuth(method) {
|
|
122
|
-
const configPath = findExistingProjectConfig(process.cwd());
|
|
123
|
-
if (!fs.existsSync(configPath))
|
|
124
|
-
return;
|
|
125
|
-
try {
|
|
126
|
-
const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
127
|
-
if (!config.models)
|
|
128
|
-
config.models = {};
|
|
129
|
-
config.models.gemini = {
|
|
130
|
-
enabled: true,
|
|
131
|
-
authType: method,
|
|
132
|
-
role: 'exploration',
|
|
133
|
-
description: 'Gemini (API Key)',
|
|
134
|
-
};
|
|
135
|
-
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
136
|
-
}
|
|
137
|
-
catch { /* ignore */ }
|
|
138
|
-
}
|
|
139
|
-
function findExistingProjectConfig(projectRoot) {
|
|
140
|
-
return getProjectConfigPaths(projectRoot).find(p => fs.existsSync(p))
|
|
141
|
-
|| getProjectConfigPath(projectRoot);
|
|
142
|
-
}
|
|
143
|
-
//# sourceMappingURL=gemini-commands.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-commands.js","sourceRoot":"","sources":["../../../src/cli/llm/gemini-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Codex 플러그인 설치
|
|
3
|
-
*
|
|
4
|
-
* Codex v0.117.0+ 플러그인 시스템 대응.
|
|
5
|
-
* agents + skills → ~/.codex/plugins/vibe/ 플러그인 번들로 패키징.
|
|
6
|
-
*
|
|
7
|
-
* 생성 구조:
|
|
8
|
-
* ~/.codex/plugins/vibe/
|
|
9
|
-
* ├── .codex-plugin/plugin.json
|
|
10
|
-
* ├── skills/
|
|
11
|
-
* ├── agents/
|
|
12
|
-
* └── AGENTS.md
|
|
13
|
-
*/
|
|
14
|
-
/**
|
|
15
|
-
* Codex 플러그인 설치 (agents + skills + manifest + AGENTS.md)
|
|
16
|
-
*
|
|
17
|
-
* @param agentsSource - agents/ 소스 디렉토리
|
|
18
|
-
* @param skillsSource - skills/ 소스 디렉토리
|
|
19
|
-
* @param codexConfigDir - ~/.codex/ 디렉토리
|
|
20
|
-
* @param packageRoot - 패키지 루트 디렉토리
|
|
21
|
-
*/
|
|
22
|
-
export declare function installCodexPlugin(agentsSource: string, skillsSource: string, codexConfigDir: string, packageRoot: string): void;
|
|
23
|
-
export declare const installCodexAgents: typeof installCodexPlugin;
|
|
24
|
-
//# sourceMappingURL=codex-agents.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codex-agents.d.ts","sourceRoot":"","sources":["../../../src/cli/postinstall/codex-agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAgFH;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,GAClB,IAAI,CA+BN;AAGD,eAAO,MAAM,kBAAkB,2BAAqB,CAAC"}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Codex 플러그인 설치
|
|
3
|
-
*
|
|
4
|
-
* Codex v0.117.0+ 플러그인 시스템 대응.
|
|
5
|
-
* agents + skills → ~/.codex/plugins/vibe/ 플러그인 번들로 패키징.
|
|
6
|
-
*
|
|
7
|
-
* 생성 구조:
|
|
8
|
-
* ~/.codex/plugins/vibe/
|
|
9
|
-
* ├── .codex-plugin/plugin.json
|
|
10
|
-
* ├── skills/
|
|
11
|
-
* ├── agents/
|
|
12
|
-
* └── AGENTS.md
|
|
13
|
-
*/
|
|
14
|
-
import path from 'path';
|
|
15
|
-
import fs from 'fs';
|
|
16
|
-
import { ensureDir, removeDirRecursive, copySkillsFiltered, removeLegacySkills } from './fs-utils.js';
|
|
17
|
-
import { GLOBAL_SKILLS, LEGACY_SKILL_DIRS } from './constants.js';
|
|
18
|
-
import { generateCodexAgentsMd } from './codex-instruction.js';
|
|
19
|
-
/**
|
|
20
|
-
* package.json에서 버전 읽기
|
|
21
|
-
*/
|
|
22
|
-
function getPackageVersion(packageRoot) {
|
|
23
|
-
try {
|
|
24
|
-
const pkgPath = path.join(packageRoot, 'package.json');
|
|
25
|
-
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
|
|
26
|
-
return pkg.version ?? '0.0.0';
|
|
27
|
-
}
|
|
28
|
-
catch {
|
|
29
|
-
return '0.0.0';
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* .codex-plugin/plugin.json 매니페스트 생성
|
|
34
|
-
*/
|
|
35
|
-
function writePluginManifest(pluginDir, version) {
|
|
36
|
-
const manifestDir = path.join(pluginDir, '.codex-plugin');
|
|
37
|
-
ensureDir(manifestDir);
|
|
38
|
-
const manifest = {
|
|
39
|
-
name: 'vibe',
|
|
40
|
-
version,
|
|
41
|
-
description: 'VIBE — Easy vibe coding with minimum quality guaranteed',
|
|
42
|
-
skills: './skills/',
|
|
43
|
-
agents: './agents/',
|
|
44
|
-
};
|
|
45
|
-
fs.writeFileSync(path.join(manifestDir, 'plugin.json'), JSON.stringify(manifest, null, 2) + '\n', 'utf-8');
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* agents/*.md → pluginDir/agents/ 재귀 복사 (YAML frontmatter 제거)
|
|
49
|
-
*/
|
|
50
|
-
function installAgentsToPlugin(agentsSource, pluginAgentsDir) {
|
|
51
|
-
if (!fs.existsSync(agentsSource))
|
|
52
|
-
return 0;
|
|
53
|
-
ensureDir(pluginAgentsDir);
|
|
54
|
-
let installed = 0;
|
|
55
|
-
function processDirectory(srcDir, destDir) {
|
|
56
|
-
ensureDir(destDir);
|
|
57
|
-
const entries = fs.readdirSync(srcDir, { withFileTypes: true });
|
|
58
|
-
for (const entry of entries) {
|
|
59
|
-
const srcPath = path.join(srcDir, entry.name);
|
|
60
|
-
const destPath = path.join(destDir, entry.name);
|
|
61
|
-
if (entry.isDirectory()) {
|
|
62
|
-
processDirectory(srcPath, destPath);
|
|
63
|
-
}
|
|
64
|
-
else if (entry.name.endsWith('.md')) {
|
|
65
|
-
try {
|
|
66
|
-
let content = fs.readFileSync(srcPath, 'utf-8');
|
|
67
|
-
content = content.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
|
|
68
|
-
content = content.replace(/^---\n[\s\S]*?\n---\n/, '');
|
|
69
|
-
fs.writeFileSync(destPath, content.trimStart(), 'utf-8');
|
|
70
|
-
installed++;
|
|
71
|
-
}
|
|
72
|
-
catch {
|
|
73
|
-
// skip failed files
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
processDirectory(agentsSource, pluginAgentsDir);
|
|
79
|
-
return installed;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Codex 플러그인 설치 (agents + skills + manifest + AGENTS.md)
|
|
83
|
-
*
|
|
84
|
-
* @param agentsSource - agents/ 소스 디렉토리
|
|
85
|
-
* @param skillsSource - skills/ 소스 디렉토리
|
|
86
|
-
* @param codexConfigDir - ~/.codex/ 디렉토리
|
|
87
|
-
* @param packageRoot - 패키지 루트 디렉토리
|
|
88
|
-
*/
|
|
89
|
-
export function installCodexPlugin(agentsSource, skillsSource, codexConfigDir, packageRoot) {
|
|
90
|
-
const pluginDir = path.join(codexConfigDir, 'plugins', 'vibe');
|
|
91
|
-
// 클린 설치
|
|
92
|
-
if (fs.existsSync(pluginDir)) {
|
|
93
|
-
removeDirRecursive(pluginDir);
|
|
94
|
-
}
|
|
95
|
-
ensureDir(pluginDir);
|
|
96
|
-
// 1. 매니페스트 생성
|
|
97
|
-
const version = getPackageVersion(packageRoot);
|
|
98
|
-
writePluginManifest(pluginDir, version);
|
|
99
|
-
// 2. Agents 설치
|
|
100
|
-
const agentCount = installAgentsToPlugin(agentsSource, path.join(pluginDir, 'agents'));
|
|
101
|
-
// 3. Skills 설치
|
|
102
|
-
const pluginSkillsDir = path.join(pluginDir, 'skills');
|
|
103
|
-
if (fs.existsSync(skillsSource)) {
|
|
104
|
-
ensureDir(pluginSkillsDir);
|
|
105
|
-
removeLegacySkills(pluginSkillsDir, LEGACY_SKILL_DIRS);
|
|
106
|
-
copySkillsFiltered(skillsSource, pluginSkillsDir, GLOBAL_SKILLS);
|
|
107
|
-
}
|
|
108
|
-
// 4. AGENTS.md 생성 (플러그인 내부)
|
|
109
|
-
generateCodexAgentsMd(pluginDir, packageRoot);
|
|
110
|
-
console.log(` 📦 Codex plugin: ${agentCount} agents installed → ${pluginDir}`);
|
|
111
|
-
}
|
|
112
|
-
// 레거시 호환 — installCodexAgents 이름으로도 export
|
|
113
|
-
export const installCodexAgents = installCodexPlugin;
|
|
114
|
-
//# sourceMappingURL=codex-agents.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codex-agents.js","sourceRoot":"","sources":["../../../src/cli/postinstall/codex-agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Codex CLI 전역 AGENTS.md 생성
|
|
3
|
-
*
|
|
4
|
-
* CLAUDE.md에서 VIBE 섹션을 읽어 Codex AGENTS.md 형식으로 변환
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* 전역 ~/.codex/AGENTS.md 생성
|
|
8
|
-
*/
|
|
9
|
-
export declare function generateCodexAgentsMd(codexDir: string, packageRoot: string): void;
|
|
10
|
-
//# sourceMappingURL=codex-instruction.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codex-instruction.d.ts","sourceRoot":"","sources":["../../../src/cli/postinstall/codex-instruction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmDH;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAQjF"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Codex CLI 전역 AGENTS.md 생성
|
|
3
|
-
*
|
|
4
|
-
* CLAUDE.md에서 VIBE 섹션을 읽어 Codex AGENTS.md 형식으로 변환
|
|
5
|
-
*/
|
|
6
|
-
import path from 'path';
|
|
7
|
-
import fs from 'fs';
|
|
8
|
-
const CORE_START_MARKER = '# VIBE';
|
|
9
|
-
const CORE_END_MARKER = '<!-- VIBE:END -->';
|
|
10
|
-
/**
|
|
11
|
-
* CLAUDE.md에서 VIBE 섹션 추출 (CLI-neutral 공통 내용)
|
|
12
|
-
*/
|
|
13
|
-
function getVibeInstructionContent(packageRoot) {
|
|
14
|
-
const claudeMdPath = path.join(packageRoot, 'CLAUDE.md');
|
|
15
|
-
if (!fs.existsSync(claudeMdPath))
|
|
16
|
-
return '';
|
|
17
|
-
const content = fs.readFileSync(claudeMdPath, 'utf-8').replace(/\r\n/g, '\n');
|
|
18
|
-
const startIdx = content.indexOf(CORE_START_MARKER);
|
|
19
|
-
const endIdx = content.indexOf(CORE_END_MARKER);
|
|
20
|
-
if (startIdx === -1)
|
|
21
|
-
return '';
|
|
22
|
-
const endPos = endIdx !== -1 ? endIdx + CORE_END_MARKER.length : content.length;
|
|
23
|
-
return content.substring(startIdx, endPos);
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* VIBE 내용을 Codex 형식으로 변환
|
|
27
|
-
* - "Claude Code Exclusive" 문구 제거
|
|
28
|
-
* - hooks 관련 섹션 제거 (Codex 미지원)
|
|
29
|
-
* - 경로 참조를 ~/.codex/ 기준으로 변환
|
|
30
|
-
*/
|
|
31
|
-
function adaptForCodex(content) {
|
|
32
|
-
let adapted = content;
|
|
33
|
-
// "Claude Code Exclusive" 문구 제거
|
|
34
|
-
adapted = adapted.replace(/\(Claude Code Exclusive\)/g, '');
|
|
35
|
-
adapted = adapted.replace(/Claude Code Exclusive/g, '');
|
|
36
|
-
// Hooks System 섹션 제거 (Codex 미지원)
|
|
37
|
-
adapted = adapted.replace(/## Hooks System\n[\s\S]*?(?=\n## )/g, '');
|
|
38
|
-
// ~/.claude/ → ~/.codex/ 경로 변환
|
|
39
|
-
adapted = adapted.replace(/~\/\.claude\//g, '~/.codex/');
|
|
40
|
-
adapted = adapted.replace(/\.claude\//g, '.codex/');
|
|
41
|
-
// "Claude Code" → "Codex CLI" 변환 (일반적 참조)
|
|
42
|
-
adapted = adapted.replace(/Claude Code/g, 'Codex CLI');
|
|
43
|
-
return adapted.trim();
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* 전역 ~/.codex/AGENTS.md 생성
|
|
47
|
-
*/
|
|
48
|
-
export function generateCodexAgentsMd(codexDir, packageRoot) {
|
|
49
|
-
const vibeContent = getVibeInstructionContent(packageRoot);
|
|
50
|
-
if (!vibeContent)
|
|
51
|
-
return;
|
|
52
|
-
const codexContent = adaptForCodex(vibeContent);
|
|
53
|
-
const agentsMdPath = path.join(codexDir, 'AGENTS.md');
|
|
54
|
-
fs.writeFileSync(agentsMdPath, codexContent + '\n', 'utf-8');
|
|
55
|
-
}
|
|
56
|
-
//# sourceMappingURL=codex-instruction.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codex-instruction.js","sourceRoot":"","sources":["../../../src/cli/postinstall/codex-instruction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AACnC,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAE5C;;GAEG;AACH,SAAS,yBAAyB,CAAC,WAAmB;IACpD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACzD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,EAAE,CAAC;IAE5C,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC9E,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAEhD,IAAI,QAAQ,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAEhF,OAAO,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,OAAe;IACpC,IAAI,OAAO,GAAG,OAAO,CAAC;IAEtB,gCAAgC;IAChC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,4BAA4B,EAAE,EAAE,CAAC,CAAC;IAC5D,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;IAExD,iCAAiC;IACjC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,qCAAqC,EAAE,EAAE,CAAC,CAAC;IAErE,+BAA+B;IAC/B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;IACzD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAEpD,0CAA0C;IAC1C,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAEvD,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB,EAAE,WAAmB;IACzE,MAAM,WAAW,GAAG,yBAAyB,CAAC,WAAW,CAAC,CAAC;IAC3D,IAAI,CAAC,WAAW;QAAE,OAAO;IAEzB,MAAM,YAAY,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAEtD,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/D,CAAC"}
|