jfl 0.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/LICENSE +21 -0
- package/README.md +313 -0
- package/clawdbot-skill/README.md +328 -0
- package/clawdbot-skill/SKILL.md +362 -0
- package/clawdbot-skill/index.ts +486 -0
- package/clawdbot-skill/package.json +28 -0
- package/clawdbot-skill/skill.json +28 -0
- package/dist/commands/agents.d.ts +5 -0
- package/dist/commands/agents.d.ts.map +1 -0
- package/dist/commands/agents.js +399 -0
- package/dist/commands/agents.js.map +1 -0
- package/dist/commands/context-hub.d.ts +12 -0
- package/dist/commands/context-hub.d.ts.map +1 -0
- package/dist/commands/context-hub.js +642 -0
- package/dist/commands/context-hub.js.map +1 -0
- package/dist/commands/deploy.d.ts +5 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +370 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/feedback.d.ts +2 -0
- package/dist/commands/feedback.d.ts.map +1 -0
- package/dist/commands/feedback.js +178 -0
- package/dist/commands/feedback.js.map +1 -0
- package/dist/commands/hud.d.ts +4 -0
- package/dist/commands/hud.d.ts.map +1 -0
- package/dist/commands/hud.js +262 -0
- package/dist/commands/hud.js.map +1 -0
- package/dist/commands/init.d.ts +4 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +553 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/login.d.ts +23 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +818 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/ralph.d.ts +9 -0
- package/dist/commands/ralph.d.ts.map +1 -0
- package/dist/commands/ralph.js +67 -0
- package/dist/commands/ralph.js.map +1 -0
- package/dist/commands/repair.d.ts +7 -0
- package/dist/commands/repair.d.ts.map +1 -0
- package/dist/commands/repair.js +283 -0
- package/dist/commands/repair.js.map +1 -0
- package/dist/commands/session-mgmt.d.ts +33 -0
- package/dist/commands/session-mgmt.d.ts.map +1 -0
- package/dist/commands/session-mgmt.js +404 -0
- package/dist/commands/session-mgmt.js.map +1 -0
- package/dist/commands/session.d.ts +2 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +639 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/skills.d.ts +31 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +314 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/status.d.ts +2 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +127 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/synopsis.d.ts +10 -0
- package/dist/commands/synopsis.d.ts.map +1 -0
- package/dist/commands/synopsis.js +277 -0
- package/dist/commands/synopsis.js.map +1 -0
- package/dist/commands/update.d.ts +10 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +165 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/voice.d.ts +410 -0
- package/dist/commands/voice.d.ts.map +1 -0
- package/dist/commands/voice.js +4763 -0
- package/dist/commands/voice.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +512 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/context-hub-mcp.d.ts +11 -0
- package/dist/mcp/context-hub-mcp.d.ts.map +1 -0
- package/dist/mcp/context-hub-mcp.js +548 -0
- package/dist/mcp/context-hub-mcp.js.map +1 -0
- package/dist/telegram/voice.d.ts +146 -0
- package/dist/telegram/voice.d.ts.map +1 -0
- package/dist/telegram/voice.js +351 -0
- package/dist/telegram/voice.js.map +1 -0
- package/dist/types/skills.d.ts +44 -0
- package/dist/types/skills.d.ts.map +1 -0
- package/dist/types/skills.js +5 -0
- package/dist/types/skills.js.map +1 -0
- package/dist/ui/banner.d.ts +18 -0
- package/dist/ui/banner.d.ts.map +1 -0
- package/dist/ui/banner.js +323 -0
- package/dist/ui/banner.js.map +1 -0
- package/dist/ui/index.d.ts +8 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +8 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/prompts.d.ts +52 -0
- package/dist/ui/prompts.d.ts.map +1 -0
- package/dist/ui/prompts.js +72 -0
- package/dist/ui/prompts.js.map +1 -0
- package/dist/ui/theme.d.ts +82 -0
- package/dist/ui/theme.d.ts.map +1 -0
- package/dist/ui/theme.js +142 -0
- package/dist/ui/theme.js.map +1 -0
- package/dist/utils/auth-guard.d.ts +66 -0
- package/dist/utils/auth-guard.d.ts.map +1 -0
- package/dist/utils/auth-guard.js +348 -0
- package/dist/utils/auth-guard.js.map +1 -0
- package/dist/utils/ensure-project.d.ts +11 -0
- package/dist/utils/ensure-project.d.ts.map +1 -0
- package/dist/utils/ensure-project.js +70 -0
- package/dist/utils/ensure-project.js.map +1 -0
- package/dist/utils/git.d.ts +73 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +219 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/github-auth.d.ts +54 -0
- package/dist/utils/github-auth.d.ts.map +1 -0
- package/dist/utils/github-auth.js +375 -0
- package/dist/utils/github-auth.js.map +1 -0
- package/dist/utils/github-repo.d.ts +30 -0
- package/dist/utils/github-repo.d.ts.map +1 -0
- package/dist/utils/github-repo.js +219 -0
- package/dist/utils/github-repo.js.map +1 -0
- package/dist/utils/platform-auth.d.ts +81 -0
- package/dist/utils/platform-auth.d.ts.map +1 -0
- package/dist/utils/platform-auth.js +191 -0
- package/dist/utils/platform-auth.js.map +1 -0
- package/dist/utils/project-config.d.ts +43 -0
- package/dist/utils/project-config.d.ts.map +1 -0
- package/dist/utils/project-config.js +97 -0
- package/dist/utils/project-config.js.map +1 -0
- package/dist/utils/skill-registry.d.ts +49 -0
- package/dist/utils/skill-registry.d.ts.map +1 -0
- package/dist/utils/skill-registry.js +192 -0
- package/dist/utils/skill-registry.js.map +1 -0
- package/dist/utils/wallet.d.ts +62 -0
- package/dist/utils/wallet.d.ts.map +1 -0
- package/dist/utils/wallet.js +252 -0
- package/dist/utils/wallet.js.map +1 -0
- package/dist/utils/x402-client.d.ts +86 -0
- package/dist/utils/x402-client.d.ts.map +1 -0
- package/dist/utils/x402-client.js +265 -0
- package/dist/utils/x402-client.js.map +1 -0
- package/package.json +76 -0
- package/scripts/postinstall.js +116 -0
- package/scripts/test-onboarding.sh +121 -0
- package/scripts/voice-start.sh +128 -0
- package/scripts/voice-stop.sh +33 -0
- package/template/.claude/settings.json +92 -0
- package/template/.claude/skills/agent-browser/SKILL.md +116 -0
- package/template/.claude/skills/brand-architect/SKILL.md +240 -0
- package/template/.claude/skills/brand-architect/config.yaml +137 -0
- package/template/.claude/skills/campaign-hud/config.yaml +112 -0
- package/template/.claude/skills/content-creator/SKILL.md +294 -0
- package/template/.claude/skills/debug/MULTI_AGENT.md +360 -0
- package/template/.claude/skills/debug/SKILL.md +549 -0
- package/template/.claude/skills/fly-deploy/SKILL.md +676 -0
- package/template/.claude/skills/founder-video/SKILL.md +467 -0
- package/template/.claude/skills/hud/SKILL.md +157 -0
- package/template/.claude/skills/ralph-tui/SKILL.md +210 -0
- package/template/.claude/skills/react-best-practices/AGENTS.md +2249 -0
- package/template/.claude/skills/react-best-practices/README.md +123 -0
- package/template/.claude/skills/react-best-practices/SKILL.md +125 -0
- package/template/.claude/skills/react-best-practices/metadata.json +15 -0
- package/template/.claude/skills/react-best-practices/rules/_sections.md +46 -0
- package/template/.claude/skills/react-best-practices/rules/_template.md +28 -0
- package/template/.claude/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/template/.claude/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
- package/template/.claude/skills/react-best-practices/rules/async-api-routes.md +38 -0
- package/template/.claude/skills/react-best-practices/rules/async-defer-await.md +80 -0
- package/template/.claude/skills/react-best-practices/rules/async-dependencies.md +36 -0
- package/template/.claude/skills/react-best-practices/rules/async-parallel.md +28 -0
- package/template/.claude/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/template/.claude/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/template/.claude/skills/react-best-practices/rules/bundle-conditional.md +31 -0
- package/template/.claude/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/template/.claude/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/template/.claude/skills/react-best-practices/rules/bundle-preload.md +50 -0
- package/template/.claude/skills/react-best-practices/rules/client-event-listeners.md +74 -0
- package/template/.claude/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/template/.claude/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
- package/template/.claude/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/template/.claude/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/template/.claude/skills/react-best-practices/rules/js-cache-storage.md +70 -0
- package/template/.claude/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/template/.claude/skills/react-best-practices/rules/js-early-exit.md +50 -0
- package/template/.claude/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/template/.claude/skills/react-best-practices/rules/js-index-maps.md +37 -0
- package/template/.claude/skills/react-best-practices/rules/js-length-check-first.md +49 -0
- package/template/.claude/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/template/.claude/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/template/.claude/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/template/.claude/skills/react-best-practices/rules/rendering-activity.md +26 -0
- package/template/.claude/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/template/.claude/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/template/.claude/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/template/.claude/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/template/.claude/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/template/.claude/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/template/.claude/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/template/.claude/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/template/.claude/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/template/.claude/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/template/.claude/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/template/.claude/skills/react-best-practices/rules/rerender-memo.md +44 -0
- package/template/.claude/skills/react-best-practices/rules/rerender-transitions.md +40 -0
- package/template/.claude/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/template/.claude/skills/react-best-practices/rules/server-cache-lru.md +41 -0
- package/template/.claude/skills/react-best-practices/rules/server-cache-react.md +26 -0
- package/template/.claude/skills/react-best-practices/rules/server-parallel-fetching.md +79 -0
- package/template/.claude/skills/react-best-practices/rules/server-serialization.md +38 -0
- package/template/.claude/skills/remotion-best-practices/SKILL.md +43 -0
- package/template/.claude/skills/remotion-best-practices/rules/3d.md +86 -0
- package/template/.claude/skills/remotion-best-practices/rules/animations.md +29 -0
- package/template/.claude/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
- package/template/.claude/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
- package/template/.claude/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/template/.claude/skills/remotion-best-practices/rules/assets.md +78 -0
- package/template/.claude/skills/remotion-best-practices/rules/audio.md +172 -0
- package/template/.claude/skills/remotion-best-practices/rules/calculate-metadata.md +104 -0
- package/template/.claude/skills/remotion-best-practices/rules/can-decode.md +75 -0
- package/template/.claude/skills/remotion-best-practices/rules/charts.md +58 -0
- package/template/.claude/skills/remotion-best-practices/rules/compositions.md +146 -0
- package/template/.claude/skills/remotion-best-practices/rules/display-captions.md +126 -0
- package/template/.claude/skills/remotion-best-practices/rules/extract-frames.md +229 -0
- package/template/.claude/skills/remotion-best-practices/rules/fonts.md +152 -0
- package/template/.claude/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
- package/template/.claude/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
- package/template/.claude/skills/remotion-best-practices/rules/get-video-duration.md +58 -0
- package/template/.claude/skills/remotion-best-practices/rules/gifs.md +138 -0
- package/template/.claude/skills/remotion-best-practices/rules/images.md +130 -0
- package/template/.claude/skills/remotion-best-practices/rules/import-srt-captions.md +67 -0
- package/template/.claude/skills/remotion-best-practices/rules/lottie.md +68 -0
- package/template/.claude/skills/remotion-best-practices/rules/measuring-dom-nodes.md +35 -0
- package/template/.claude/skills/remotion-best-practices/rules/measuring-text.md +143 -0
- package/template/.claude/skills/remotion-best-practices/rules/sequencing.md +106 -0
- package/template/.claude/skills/remotion-best-practices/rules/tailwind.md +11 -0
- package/template/.claude/skills/remotion-best-practices/rules/text-animations.md +20 -0
- package/template/.claude/skills/remotion-best-practices/rules/timing.md +179 -0
- package/template/.claude/skills/remotion-best-practices/rules/transcribe-captions.md +19 -0
- package/template/.claude/skills/remotion-best-practices/rules/transitions.md +122 -0
- package/template/.claude/skills/remotion-best-practices/rules/trimming.md +53 -0
- package/template/.claude/skills/remotion-best-practices/rules/videos.md +171 -0
- package/template/.claude/skills/search/SKILL.md +220 -0
- package/template/.claude/skills/spec/SKILL.md +377 -0
- package/template/.claude/skills/startup/SKILL.md +310 -0
- package/template/.claude/skills/web-architect/SKILL.md +309 -0
- package/template/.claude/skills/x-algorithm/SKILL.md +305 -0
- package/template/.jfl/config.json +8 -0
- package/template/.mcp.json +11 -0
- package/template/CLAUDE.md +960 -0
- package/template/content/.gitkeep +0 -0
- package/template/context-hub +3 -0
- package/template/knowledge/BRAND_BRIEF.md +124 -0
- package/template/knowledge/BRAND_DECISIONS.md +168 -0
- package/template/knowledge/NARRATIVE.md +114 -0
- package/template/knowledge/ROADMAP.md +128 -0
- package/template/knowledge/THESIS.md +108 -0
- package/template/knowledge/VISION.md +74 -0
- package/template/knowledge/VOICE_AND_TONE.md +146 -0
- package/template/previews/.gitkeep +0 -0
- package/template/scripts/session/auto-commit.sh +245 -0
- package/template/scripts/session/auto-merge.sh +325 -0
- package/template/scripts/session/jfl-doctor.sh +587 -0
- package/template/scripts/session/session-end.sh +194 -0
- package/template/scripts/session/session-init.sh +163 -0
- package/template/scripts/session/session-sync.sh +167 -0
- package/template/scripts/session/test-context-preservation.sh +160 -0
- package/template/skills/agent-browser/SKILL.md +116 -0
- package/template/skills/brand-architect/SKILL.md +240 -0
- package/template/skills/brand-architect/config.yaml +137 -0
- package/template/skills/campaign-hud/config.yaml +112 -0
- package/template/skills/content-creator/SKILL.md +294 -0
- package/template/skills/debug/MULTI_AGENT.md +360 -0
- package/template/skills/debug/SKILL.md +549 -0
- package/template/skills/fly-deploy/SKILL.md +676 -0
- package/template/skills/founder-video/SKILL.md +467 -0
- package/template/skills/hud/SKILL.md +204 -0
- package/template/skills/ralph-tui/SKILL.md +210 -0
- package/template/skills/react-best-practices/AGENTS.md +2249 -0
- package/template/skills/react-best-practices/README.md +123 -0
- package/template/skills/react-best-practices/SKILL.md +125 -0
- package/template/skills/react-best-practices/metadata.json +15 -0
- package/template/skills/react-best-practices/rules/_sections.md +46 -0
- package/template/skills/react-best-practices/rules/_template.md +28 -0
- package/template/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/template/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
- package/template/skills/react-best-practices/rules/async-api-routes.md +38 -0
- package/template/skills/react-best-practices/rules/async-defer-await.md +80 -0
- package/template/skills/react-best-practices/rules/async-dependencies.md +36 -0
- package/template/skills/react-best-practices/rules/async-parallel.md +28 -0
- package/template/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/template/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/template/skills/react-best-practices/rules/bundle-conditional.md +31 -0
- package/template/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/template/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/template/skills/react-best-practices/rules/bundle-preload.md +50 -0
- package/template/skills/react-best-practices/rules/client-event-listeners.md +74 -0
- package/template/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/template/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
- package/template/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/template/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/template/skills/react-best-practices/rules/js-cache-storage.md +70 -0
- package/template/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/template/skills/react-best-practices/rules/js-early-exit.md +50 -0
- package/template/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/template/skills/react-best-practices/rules/js-index-maps.md +37 -0
- package/template/skills/react-best-practices/rules/js-length-check-first.md +49 -0
- package/template/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/template/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/template/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/template/skills/react-best-practices/rules/rendering-activity.md +26 -0
- package/template/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/template/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/template/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/template/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/template/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/template/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/template/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/template/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/template/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/template/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/template/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/template/skills/react-best-practices/rules/rerender-memo.md +44 -0
- package/template/skills/react-best-practices/rules/rerender-transitions.md +40 -0
- package/template/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/template/skills/react-best-practices/rules/server-cache-lru.md +41 -0
- package/template/skills/react-best-practices/rules/server-cache-react.md +26 -0
- package/template/skills/react-best-practices/rules/server-parallel-fetching.md +79 -0
- package/template/skills/react-best-practices/rules/server-serialization.md +38 -0
- package/template/skills/remotion-best-practices/SKILL.md +43 -0
- package/template/skills/remotion-best-practices/rules/3d.md +86 -0
- package/template/skills/remotion-best-practices/rules/animations.md +29 -0
- package/template/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
- package/template/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
- package/template/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/template/skills/remotion-best-practices/rules/assets.md +78 -0
- package/template/skills/remotion-best-practices/rules/audio.md +172 -0
- package/template/skills/remotion-best-practices/rules/calculate-metadata.md +104 -0
- package/template/skills/remotion-best-practices/rules/can-decode.md +75 -0
- package/template/skills/remotion-best-practices/rules/charts.md +58 -0
- package/template/skills/remotion-best-practices/rules/compositions.md +146 -0
- package/template/skills/remotion-best-practices/rules/display-captions.md +126 -0
- package/template/skills/remotion-best-practices/rules/extract-frames.md +229 -0
- package/template/skills/remotion-best-practices/rules/fonts.md +152 -0
- package/template/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
- package/template/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
- package/template/skills/remotion-best-practices/rules/get-video-duration.md +58 -0
- package/template/skills/remotion-best-practices/rules/gifs.md +138 -0
- package/template/skills/remotion-best-practices/rules/images.md +130 -0
- package/template/skills/remotion-best-practices/rules/import-srt-captions.md +67 -0
- package/template/skills/remotion-best-practices/rules/lottie.md +68 -0
- package/template/skills/remotion-best-practices/rules/measuring-dom-nodes.md +35 -0
- package/template/skills/remotion-best-practices/rules/measuring-text.md +143 -0
- package/template/skills/remotion-best-practices/rules/sequencing.md +106 -0
- package/template/skills/remotion-best-practices/rules/tailwind.md +11 -0
- package/template/skills/remotion-best-practices/rules/text-animations.md +20 -0
- package/template/skills/remotion-best-practices/rules/timing.md +179 -0
- package/template/skills/remotion-best-practices/rules/transcribe-captions.md +19 -0
- package/template/skills/remotion-best-practices/rules/transitions.md +122 -0
- package/template/skills/remotion-best-practices/rules/trimming.md +53 -0
- package/template/skills/remotion-best-practices/rules/videos.md +171 -0
- package/template/skills/search/SKILL.md +220 -0
- package/template/skills/spec/SKILL.md +377 -0
- package/template/skills/startup/SKILL.md +310 -0
- package/template/skills/web-architect/SKILL.md +309 -0
- package/template/skills/x-algorithm/SKILL.md +305 -0
- package/template/suggestions/.gitkeep +0 -0
- package/template/templates/QUICKSTART_SKILL_TO_PRODUCT.md +242 -0
- package/template/templates/brand/BRAND_BRIEF.md +124 -0
- package/template/templates/brand/BRAND_DECISIONS.md +168 -0
- package/template/templates/brand/BRAND_GUIDELINES.md +251 -0
- package/template/templates/brand/VOICE_AND_TONE.md +146 -0
- package/template/templates/brand/global.css +240 -0
- package/template/templates/collaboration/CONTRIBUTOR.md +74 -0
- package/template/templates/collaboration/CRM.md +97 -0
- package/template/templates/collaboration/TASKS.md +83 -0
- package/template/templates/strategic/NARRATIVE.md +114 -0
- package/template/templates/strategic/ROADMAP.md +128 -0
- package/template/templates/strategic/THESIS.md +108 -0
- package/template/templates/strategic/VISION.md +74 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# voice-start.sh - Start voice input with one command
|
|
3
|
+
# Usage: ./voice-start.sh [--daemon]
|
|
4
|
+
|
|
5
|
+
set -e
|
|
6
|
+
|
|
7
|
+
JFL_DIR="$HOME/.jfl"
|
|
8
|
+
MODELS_DIR="$JFL_DIR/models"
|
|
9
|
+
WHISPER_MODEL="$MODELS_DIR/ggml-base.bin"
|
|
10
|
+
VAD_MODEL="$MODELS_DIR/ggml-silero-vad.bin"
|
|
11
|
+
SOCKET_PATH="$JFL_DIR/voice.sock"
|
|
12
|
+
TOKEN_PATH="$JFL_DIR/voice-server.token"
|
|
13
|
+
PID_FILE="$JFL_DIR/voice-server.pid"
|
|
14
|
+
WHISPER_SERVER="/Users/alectaggart/CascadeProjects/jfl-platform/packages/whisper-server/build/whisper-stream-server"
|
|
15
|
+
|
|
16
|
+
# Colors
|
|
17
|
+
RED='\033[0;31m'
|
|
18
|
+
GREEN='\033[0;32m'
|
|
19
|
+
YELLOW='\033[0;33m'
|
|
20
|
+
GRAY='\033[0;90m'
|
|
21
|
+
NC='\033[0m'
|
|
22
|
+
|
|
23
|
+
echo -e "${GREEN}🎤 JFL Voice - Starting${NC}"
|
|
24
|
+
echo ""
|
|
25
|
+
|
|
26
|
+
# Check if server binary exists
|
|
27
|
+
if [ ! -f "$WHISPER_SERVER" ]; then
|
|
28
|
+
echo -e "${RED}✗ Whisper server not built${NC}"
|
|
29
|
+
echo -e "${GRAY} Run: cd product/packages/whisper-server && ./build.sh${NC}"
|
|
30
|
+
exit 1
|
|
31
|
+
fi
|
|
32
|
+
|
|
33
|
+
# Check if models exist
|
|
34
|
+
if [ ! -f "$WHISPER_MODEL" ]; then
|
|
35
|
+
echo -e "${YELLOW}⚠ Whisper model not found. Downloading...${NC}"
|
|
36
|
+
jfl voice model download base
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
if [ ! -f "$VAD_MODEL" ]; then
|
|
40
|
+
echo -e "${YELLOW}⚠ VAD model not found. Downloading...${NC}"
|
|
41
|
+
curl -L "https://huggingface.co/ggml-org/whisper-vad/resolve/main/ggml-silero-v5.1.2.bin" \
|
|
42
|
+
-o "$VAD_MODEL"
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
# Generate token if needed
|
|
46
|
+
if [ ! -f "$TOKEN_PATH" ]; then
|
|
47
|
+
TOKEN=$(openssl rand -hex 16)
|
|
48
|
+
echo "$TOKEN" > "$TOKEN_PATH"
|
|
49
|
+
chmod 600 "$TOKEN_PATH"
|
|
50
|
+
echo -e "${GRAY} Generated auth token${NC}"
|
|
51
|
+
fi
|
|
52
|
+
|
|
53
|
+
TOKEN=$(cat "$TOKEN_PATH")
|
|
54
|
+
|
|
55
|
+
# Check if server already running
|
|
56
|
+
if [ -f "$PID_FILE" ]; then
|
|
57
|
+
OLD_PID=$(cat "$PID_FILE")
|
|
58
|
+
if ps -p "$OLD_PID" > /dev/null 2>&1; then
|
|
59
|
+
echo -e "${GREEN}✓ Server already running (PID: $OLD_PID)${NC}"
|
|
60
|
+
else
|
|
61
|
+
rm -f "$PID_FILE"
|
|
62
|
+
fi
|
|
63
|
+
fi
|
|
64
|
+
|
|
65
|
+
# Start server if not running
|
|
66
|
+
if [ ! -f "$PID_FILE" ]; then
|
|
67
|
+
echo -e "${GRAY} Starting whisper server...${NC}"
|
|
68
|
+
|
|
69
|
+
# Start server in background
|
|
70
|
+
# Note: VAD threshold lowered to 0.05 for better sensitivity to quiet speech
|
|
71
|
+
"$WHISPER_SERVER" \
|
|
72
|
+
--model "$WHISPER_MODEL" \
|
|
73
|
+
--vad-model "$VAD_MODEL" \
|
|
74
|
+
--vad-threshold 0.05 \
|
|
75
|
+
--port 9090 \
|
|
76
|
+
--host 127.0.0.1 \
|
|
77
|
+
--token "$TOKEN" \
|
|
78
|
+
> "$JFL_DIR/voice-server.log" 2>&1 &
|
|
79
|
+
|
|
80
|
+
SERVER_PID=$!
|
|
81
|
+
echo "$SERVER_PID" > "$PID_FILE"
|
|
82
|
+
|
|
83
|
+
# Wait for server to load models
|
|
84
|
+
echo -e "${GRAY} Loading models (takes ~8s on first run)...${NC}"
|
|
85
|
+
sleep 8
|
|
86
|
+
|
|
87
|
+
if ps -p "$SERVER_PID" > /dev/null 2>&1; then
|
|
88
|
+
echo -e "${GREEN}✓ Server started (PID: $SERVER_PID)${NC}"
|
|
89
|
+
else
|
|
90
|
+
echo -e "${RED}✗ Server failed to start${NC}"
|
|
91
|
+
echo -e "${GRAY} Check logs: cat $JFL_DIR/voice-server.log${NC}"
|
|
92
|
+
rm -f "$PID_FILE"
|
|
93
|
+
exit 1
|
|
94
|
+
fi
|
|
95
|
+
fi
|
|
96
|
+
|
|
97
|
+
# Set up Unix socket bridge (kill old one first)
|
|
98
|
+
pkill -f "socat.*voice.sock" 2>/dev/null || true
|
|
99
|
+
rm -f "$SOCKET_PATH"
|
|
100
|
+
|
|
101
|
+
socat UNIX-LISTEN:"$SOCKET_PATH",mode=600,fork TCP:127.0.0.1:9090 &
|
|
102
|
+
SOCAT_PID=$!
|
|
103
|
+
sleep 1
|
|
104
|
+
|
|
105
|
+
if [ -S "$SOCKET_PATH" ]; then
|
|
106
|
+
echo -e "${GREEN}✓ Unix socket ready${NC}"
|
|
107
|
+
else
|
|
108
|
+
echo -e "${RED}✗ Failed to create socket${NC}"
|
|
109
|
+
exit 1
|
|
110
|
+
fi
|
|
111
|
+
|
|
112
|
+
echo ""
|
|
113
|
+
echo -e "${GREEN}Voice input ready!${NC}"
|
|
114
|
+
echo ""
|
|
115
|
+
|
|
116
|
+
# If --daemon flag, start the hotkey daemon
|
|
117
|
+
if [ "$1" = "--daemon" ]; then
|
|
118
|
+
echo -e "${GRAY}Starting hotkey daemon...${NC}"
|
|
119
|
+
jfl voice daemon start
|
|
120
|
+
else
|
|
121
|
+
echo -e "Commands:"
|
|
122
|
+
echo -e " ${GRAY}jfl voice test${NC} Record 3s and transcribe"
|
|
123
|
+
echo -e " ${GRAY}jfl voice${NC} Record with VAD (stops on silence)"
|
|
124
|
+
echo -e " ${GRAY}jfl voice hotkey${NC} Start hotkey listener (Cmd+Shift+V)"
|
|
125
|
+
echo -e " ${GRAY}jfl voice daemon start${NC} Run hotkey in background"
|
|
126
|
+
echo ""
|
|
127
|
+
echo -e "To stop: ${GRAY}./voice-stop.sh${NC}"
|
|
128
|
+
fi
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# voice-stop.sh - Stop voice input services
|
|
3
|
+
|
|
4
|
+
JFL_DIR="$HOME/.jfl"
|
|
5
|
+
PID_FILE="$JFL_DIR/voice-server.pid"
|
|
6
|
+
|
|
7
|
+
GREEN='\033[0;32m'
|
|
8
|
+
GRAY='\033[0;90m'
|
|
9
|
+
NC='\033[0m'
|
|
10
|
+
|
|
11
|
+
echo -e "${GRAY}Stopping voice services...${NC}"
|
|
12
|
+
|
|
13
|
+
# Stop daemon if running
|
|
14
|
+
jfl voice daemon stop 2>/dev/null || true
|
|
15
|
+
|
|
16
|
+
# Stop socat bridge
|
|
17
|
+
pkill -f "socat.*voice.sock" 2>/dev/null || true
|
|
18
|
+
rm -f "$JFL_DIR/voice.sock"
|
|
19
|
+
|
|
20
|
+
# Stop whisper server
|
|
21
|
+
if [ -f "$PID_FILE" ]; then
|
|
22
|
+
PID=$(cat "$PID_FILE")
|
|
23
|
+
if ps -p "$PID" > /dev/null 2>&1; then
|
|
24
|
+
kill "$PID" 2>/dev/null || true
|
|
25
|
+
echo -e "${GREEN}✓ Stopped whisper server${NC}"
|
|
26
|
+
fi
|
|
27
|
+
rm -f "$PID_FILE"
|
|
28
|
+
fi
|
|
29
|
+
|
|
30
|
+
# Also kill any orphaned processes
|
|
31
|
+
pkill -f whisper-stream-server 2>/dev/null || true
|
|
32
|
+
|
|
33
|
+
echo -e "${GREEN}✓ Voice services stopped${NC}"
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hooks": {
|
|
3
|
+
"SessionStart": [
|
|
4
|
+
{
|
|
5
|
+
"hooks": [
|
|
6
|
+
{
|
|
7
|
+
"type": "command",
|
|
8
|
+
"command": "./scripts/session/session-init.sh"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"type": "command",
|
|
12
|
+
"command": "jfl context-hub ensure >> .jfl/logs/context-hub.log 2>&1 &",
|
|
13
|
+
"async": true
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"PostToolUse": [
|
|
19
|
+
{
|
|
20
|
+
"matcher": "Bash",
|
|
21
|
+
"hooks": [
|
|
22
|
+
{
|
|
23
|
+
"type": "command",
|
|
24
|
+
"command": "if echo \"$TOOL_INPUT\" | grep -qE 'git commit'; then BRANCH=$(cat .jfl/current-session-branch.txt 2>/dev/null || git branch --show-current); MSG=$(git log -1 --pretty=%B 2>/dev/null | head -1); FILES=$(git diff-tree --no-commit-id --name-only -r HEAD 2>/dev/null | tr '\\n' ', ' | sed 's/,$//'); echo ''; echo '═══════════════════════════════════════════════════════════'; echo '📝 JOURNAL REQUIRED: Git commit detected'; echo '═══════════════════════════════════════════════════════════'; echo \"Commit: $(git rev-parse --short HEAD 2>/dev/null)\"; echo \"Message: $MSG\"; echo \"Files: $FILES\"; echo ''; echo 'WRITE JOURNAL ENTRY NOW. File: .jfl/journal/'\"${BRANCH}\"'.jsonl'; echo '═══════════════════════════════════════════════════════════'; fi"
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"matcher": "Write|Edit",
|
|
30
|
+
"hooks": [
|
|
31
|
+
{
|
|
32
|
+
"type": "command",
|
|
33
|
+
"command": "FILE=$(echo \"$TOOL_INPUT\" | grep -oE '\"file_path\":\\s*\"[^\"]+\"' | head -1 | sed 's/.*\"\\([^\"]*\\)\"/\\1/'); if echo \"$FILE\" | grep -qE '\\.(ts|tsx|js|jsx)$'; then if [ -f \"$FILE\" ] && ! head -20 \"$FILE\" | grep -q '@purpose'; then echo ''; echo '⚠️ MISSING @purpose HEADER'; echo \" File: $FILE\"; echo ' Add: /** @purpose One-line description */'; fi; fi",
|
|
34
|
+
"async": true
|
|
35
|
+
}
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"matcher": "TaskUpdate",
|
|
40
|
+
"hooks": [
|
|
41
|
+
{
|
|
42
|
+
"type": "command",
|
|
43
|
+
"command": "if echo \"$TOOL_INPUT\" | grep -q '\"status\":\\s*\"completed\"'; then BRANCH=$(cat .jfl/current-session-branch.txt 2>/dev/null || git branch --show-current); echo ''; echo '═══════════════════════════════════════════════════════════'; echo '📝 JOURNAL REQUIRED: Task completed'; echo '═══════════════════════════════════════════════════════════'; echo 'WRITE JOURNAL ENTRY NOW. File: .jfl/journal/'\"${BRANCH}\"'.jsonl'; echo '═══════════════════════════════════════════════════════════'; fi"
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"UserPromptSubmit": [
|
|
49
|
+
{
|
|
50
|
+
"matcher": "done|looks good|ship it|approved|lgtm|perfect|yes do it|go ahead|yeah|yep",
|
|
51
|
+
"hooks": [
|
|
52
|
+
{
|
|
53
|
+
"type": "command",
|
|
54
|
+
"command": "BRANCH=$(cat .jfl/current-session-branch.txt 2>/dev/null || git branch --show-current); echo ''; echo '═══════════════════════════════════════════════════════════'; echo '📝 JOURNAL CHECK: User approved/confirmed something'; echo '═══════════════════════════════════════════════════════════'; echo 'If a decision or feature was just approved, write journal entry.'; echo 'File: .jfl/journal/'\"${BRANCH}\"'.jsonl'; echo '═══════════════════════════════════════════════════════════'"
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"Stop": [
|
|
60
|
+
{
|
|
61
|
+
"hooks": [
|
|
62
|
+
{
|
|
63
|
+
"type": "command",
|
|
64
|
+
"command": "BRANCH=$(cat .jfl/current-session-branch.txt 2>/dev/null || git branch --show-current); JOURNAL=\".jfl/journal/${BRANCH}.jsonl\"; if [ ! -s \"$JOURNAL\" ] 2>/dev/null; then echo '⚠️ No journal entry for session'; else echo '✓ Journal exists'; fi; exit 0"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"type": "command",
|
|
68
|
+
"command": "jfl context-hub stop >> .jfl/logs/context-hub.log 2>&1; echo '✓ Context hub stopped'; exit 0"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"type": "command",
|
|
72
|
+
"command": "./scripts/session/session-end.sh 2>&1 || (git add -A && git diff --cached --quiet || git commit -m 'auto: stop save') 2>/dev/null; echo '✓ Session ended'; exit 0"
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
],
|
|
77
|
+
"PreCompact": [
|
|
78
|
+
{
|
|
79
|
+
"hooks": [
|
|
80
|
+
{
|
|
81
|
+
"type": "command",
|
|
82
|
+
"command": "BRANCH=$(cat .jfl/current-session-branch.txt 2>/dev/null || git branch --show-current); JOURNAL=\".jfl/journal/${BRANCH}.jsonl\"; if [ ! -s \"$JOURNAL\" ] 2>/dev/null; then echo ''; echo '🚨 CONTEXT COMPACTING - WRITE JOURNAL NOW'; echo \"File: .jfl/journal/${BRANCH}.jsonl\"; fi"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"type": "command",
|
|
86
|
+
"command": "nohup sh -c 'git add -A && git diff --cached --quiet || git commit -m \"auto: pre-compact save\"' > /dev/null 2>&1 & disown; exit 0"
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
}
|
|
90
|
+
]
|
|
91
|
+
}
|
|
92
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agent-browser
|
|
3
|
+
description: Headless browser automation for AI agents - auto-installs if needed
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Agent Browser
|
|
7
|
+
|
|
8
|
+
Headless browser automation CLI for AI agents. [GitHub](https://github.com/vercel-labs/agent-browser)
|
|
9
|
+
|
|
10
|
+
## On Skill Invoke
|
|
11
|
+
|
|
12
|
+
**Step 1: Check if installed**
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
which agent-browser
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
**Step 2: If NOT installed, offer to install**
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
agent-browser not installed.
|
|
22
|
+
|
|
23
|
+
This tool lets me browse the web, fill forms, take screenshots, and scrape dynamic content.
|
|
24
|
+
|
|
25
|
+
Install it?
|
|
26
|
+
|
|
27
|
+
npm install -g agent-browser
|
|
28
|
+
agent-browser install
|
|
29
|
+
|
|
30
|
+
[Yes] [No]
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
If user says yes, run:
|
|
34
|
+
```bash
|
|
35
|
+
npm install -g agent-browser && agent-browser install
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
On Linux, if install fails with dependency errors:
|
|
39
|
+
```bash
|
|
40
|
+
agent-browser install --with-deps
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
After install, confirm:
|
|
44
|
+
```
|
|
45
|
+
Done. agent-browser ready.
|
|
46
|
+
|
|
47
|
+
Try: agent-browser navigate https://example.com
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Step 3: If already installed, show status**
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
agent-browser is installed.
|
|
54
|
+
|
|
55
|
+
Quick commands:
|
|
56
|
+
agent-browser navigate <url> # Go to URL
|
|
57
|
+
agent-browser snapshot # Get page structure (for AI)
|
|
58
|
+
agent-browser click <ref> # Click element
|
|
59
|
+
agent-browser type <ref> <text> # Type into input
|
|
60
|
+
agent-browser screenshot # Capture page
|
|
61
|
+
agent-browser pdf # Generate PDF
|
|
62
|
+
|
|
63
|
+
Need help with something specific?
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## What It Does
|
|
67
|
+
|
|
68
|
+
Agent-browser gives Claude the ability to:
|
|
69
|
+
- Navigate and interact with web pages
|
|
70
|
+
- Click, type, scroll
|
|
71
|
+
- Take screenshots and generate PDFs
|
|
72
|
+
- Extract accessibility trees (semantic page understanding)
|
|
73
|
+
- Monitor network requests
|
|
74
|
+
- Manage cookies and storage
|
|
75
|
+
|
|
76
|
+
## Common Commands
|
|
77
|
+
|
|
78
|
+
| Command | What It Does |
|
|
79
|
+
|---------|--------------|
|
|
80
|
+
| `agent-browser navigate <url>` | Go to a URL |
|
|
81
|
+
| `agent-browser snapshot` | Get accessibility tree (for AI understanding) |
|
|
82
|
+
| `agent-browser click <ref>` | Click an element by reference |
|
|
83
|
+
| `agent-browser type <ref> <text>` | Type into an input |
|
|
84
|
+
| `agent-browser screenshot` | Capture the page |
|
|
85
|
+
| `agent-browser pdf` | Generate PDF |
|
|
86
|
+
|
|
87
|
+
## When to Use
|
|
88
|
+
|
|
89
|
+
Use agent-browser when you need to:
|
|
90
|
+
- Scrape dynamic content (SPAs, JS-rendered pages)
|
|
91
|
+
- Fill out forms programmatically
|
|
92
|
+
- Test user flows
|
|
93
|
+
- Capture screenshots for docs/previews
|
|
94
|
+
- Extract data from authenticated pages
|
|
95
|
+
|
|
96
|
+
## Typical Workflow
|
|
97
|
+
|
|
98
|
+
1. `agent-browser navigate <url>` - load the page
|
|
99
|
+
2. `agent-browser snapshot` - understand page structure
|
|
100
|
+
3. `agent-browser click <ref>` / `agent-browser type <ref> <text>` - interact
|
|
101
|
+
4. `agent-browser screenshot` or extract data
|
|
102
|
+
|
|
103
|
+
## Troubleshooting
|
|
104
|
+
|
|
105
|
+
### "chromium not found"
|
|
106
|
+
```bash
|
|
107
|
+
agent-browser install
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Permission errors on Linux
|
|
111
|
+
```bash
|
|
112
|
+
agent-browser install --with-deps
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Page not loading
|
|
116
|
+
Some sites block headless browsers. The tool handles most cases, but very aggressive bot detection may block it.
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: brand-architect
|
|
3
|
+
description: Generate brand identity options from brief - marks, colors, typography
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Brand Architect Skill
|
|
7
|
+
|
|
8
|
+
Creates brand identity options based on your brand brief.
|
|
9
|
+
|
|
10
|
+
## Capabilities
|
|
11
|
+
|
|
12
|
+
- Generate mark/logo options (SVG)
|
|
13
|
+
- Propose color palettes (dark/light modes)
|
|
14
|
+
- Suggest typography stacks
|
|
15
|
+
- Create mark + text compositions
|
|
16
|
+
- Update preview files with options
|
|
17
|
+
- Guide through selection process
|
|
18
|
+
- Record decisions
|
|
19
|
+
|
|
20
|
+
## Input Requirements
|
|
21
|
+
|
|
22
|
+
Requires `knowledge/BRAND_BRIEF.md` with:
|
|
23
|
+
- Brand name and tagline
|
|
24
|
+
- Values and voice
|
|
25
|
+
- Visual direction preferences
|
|
26
|
+
|
|
27
|
+
## Commands
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
/brand-architect # Full workflow
|
|
31
|
+
/brand-architect marks # Generate mark options only
|
|
32
|
+
/brand-architect colors # Generate color palette options
|
|
33
|
+
/brand-architect typography # Suggest typography
|
|
34
|
+
/brand-architect compositions # Mark + text lockups
|
|
35
|
+
/brand-architect review # Review current options
|
|
36
|
+
/brand-architect decide # Record selections
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Workflow
|
|
40
|
+
|
|
41
|
+
### Step 1: Read Brief
|
|
42
|
+
```
|
|
43
|
+
Reading knowledge/BRAND_BRIEF.md...
|
|
44
|
+
|
|
45
|
+
Brand: {name}
|
|
46
|
+
Tagline: "{tagline}"
|
|
47
|
+
Aesthetic: {aesthetic}
|
|
48
|
+
Mark preference: {type}
|
|
49
|
+
|
|
50
|
+
Ready to generate options.
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Step 2: Generate Marks
|
|
54
|
+
|
|
55
|
+
Create 3-5 mark options based on brief:
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
Generating mark options...
|
|
59
|
+
|
|
60
|
+
OPTION 1: {description}
|
|
61
|
+
├─ Type: {symbol/lettermark/wordmark/icon}
|
|
62
|
+
├─ Concept: {what it represents}
|
|
63
|
+
└─ File: outputs/svg/mark/mark-v1-transparent.svg
|
|
64
|
+
|
|
65
|
+
OPTION 2: {description}
|
|
66
|
+
...
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
For each mark:
|
|
70
|
+
1. Create transparent SVG (base)
|
|
71
|
+
2. Create dark mode variant
|
|
72
|
+
3. Create light mode variant
|
|
73
|
+
4. Test at multiple sizes (16px, 80px, 400px)
|
|
74
|
+
|
|
75
|
+
### Step 3: Generate Colors
|
|
76
|
+
|
|
77
|
+
Propose color palette:
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
Color Palette Proposal:
|
|
81
|
+
|
|
82
|
+
DARK MODE (default):
|
|
83
|
+
├─ Background: #000000
|
|
84
|
+
├─ Foreground: #FFFFFF
|
|
85
|
+
├─ Accent: {based on brand}
|
|
86
|
+
└─ Preview: [color swatches]
|
|
87
|
+
|
|
88
|
+
LIGHT MODE:
|
|
89
|
+
├─ Background: #FFFFFF
|
|
90
|
+
├─ Foreground: #000000
|
|
91
|
+
├─ Accent: {darker version}
|
|
92
|
+
└─ Preview: [color swatches]
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Step 4: Suggest Typography
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
Typography Recommendation:
|
|
99
|
+
|
|
100
|
+
Based on your {aesthetic} aesthetic:
|
|
101
|
+
|
|
102
|
+
FONT STACK:
|
|
103
|
+
{stack}
|
|
104
|
+
|
|
105
|
+
RATIONALE:
|
|
106
|
+
- {why this fits the brand}
|
|
107
|
+
- {where it works well}
|
|
108
|
+
|
|
109
|
+
ALTERNATIVES:
|
|
110
|
+
1. {alternative stack} - {when to use}
|
|
111
|
+
2. {alternative stack} - {when to use}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Step 5: Update Previews
|
|
115
|
+
|
|
116
|
+
Update preview HTML files with generated options:
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
Updating previews...
|
|
120
|
+
|
|
121
|
+
✓ previews/brand/twitter-profile.html
|
|
122
|
+
✓ previews/brand/og-preview.html
|
|
123
|
+
✓ previews/brand/favicon-preview.html
|
|
124
|
+
✓ previews/brand/mobile-preview.html
|
|
125
|
+
|
|
126
|
+
Open these in your browser to see options in context.
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Step 6: Guide Selection
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
Let's review each option in context.
|
|
133
|
+
|
|
134
|
+
MARK SELECTION:
|
|
135
|
+
Open previews/brand/twitter-profile.html
|
|
136
|
+
|
|
137
|
+
Which mark works best as a PFP?
|
|
138
|
+
1. mark-v1 - {description}
|
|
139
|
+
2. mark-v2 - {description}
|
|
140
|
+
3. mark-v3 - {description}
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Wait for user input at each decision point.
|
|
144
|
+
|
|
145
|
+
### Step 7: Record Decisions
|
|
146
|
+
|
|
147
|
+
Save selections to `knowledge/BRAND_DECISIONS.md`:
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
Recording your selections...
|
|
151
|
+
|
|
152
|
+
✓ Primary mark: mark-v3
|
|
153
|
+
✓ Colors: dark-first, accent #00ff88
|
|
154
|
+
✓ Typography: ui-monospace stack
|
|
155
|
+
|
|
156
|
+
Saved to knowledge/BRAND_DECISIONS.md
|
|
157
|
+
|
|
158
|
+
Next: Run /web-architect to generate final assets.
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Mark Generation Guidelines
|
|
162
|
+
|
|
163
|
+
### SVG Structure
|
|
164
|
+
```xml
|
|
165
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
166
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
|
|
167
|
+
<!-- Use paths, not text elements -->
|
|
168
|
+
<path d="..." fill="currentColor"/>
|
|
169
|
+
</svg>
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### Size Variants
|
|
173
|
+
| Size | Use |
|
|
174
|
+
|------|-----|
|
|
175
|
+
| 16px | Favicon |
|
|
176
|
+
| 32px | Favicon @2x |
|
|
177
|
+
| 80px | Small icon |
|
|
178
|
+
| 160px | Medium icon |
|
|
179
|
+
| 400px | PFP, large icon |
|
|
180
|
+
|
|
181
|
+
### Naming Convention
|
|
182
|
+
```
|
|
183
|
+
mark-{version}-{size}-{theme}.svg
|
|
184
|
+
mark-v1-transparent.svg # Base
|
|
185
|
+
mark-v1-80-dark.svg # Dark mode
|
|
186
|
+
mark-v1-80-light.svg # Light mode
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## Color Generation Guidelines
|
|
190
|
+
|
|
191
|
+
### Required Tokens
|
|
192
|
+
- Background (bg)
|
|
193
|
+
- Foreground (fg)
|
|
194
|
+
- Accent (primary action color)
|
|
195
|
+
- Success, Error, Warning
|
|
196
|
+
- Muted (secondary text)
|
|
197
|
+
|
|
198
|
+
### Contrast Requirements
|
|
199
|
+
- Text on bg: 4.5:1 minimum
|
|
200
|
+
- Large text: 3:1 minimum
|
|
201
|
+
|
|
202
|
+
## Output Files
|
|
203
|
+
|
|
204
|
+
```
|
|
205
|
+
outputs/
|
|
206
|
+
├── svg/
|
|
207
|
+
│ └── mark/
|
|
208
|
+
│ ├── mark-v1-transparent.svg
|
|
209
|
+
│ ├── mark-v1-80-dark.svg
|
|
210
|
+
│ ├── mark-v1-80-light.svg
|
|
211
|
+
│ ├── mark-v2-transparent.svg
|
|
212
|
+
│ └── ...
|
|
213
|
+
└── (other outputs created by web-architect)
|
|
214
|
+
|
|
215
|
+
knowledge/
|
|
216
|
+
└── BRAND_DECISIONS.md # Updated with selections
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
## Error Handling
|
|
220
|
+
|
|
221
|
+
### No Brief Found
|
|
222
|
+
```
|
|
223
|
+
Brand brief not found.
|
|
224
|
+
|
|
225
|
+
Please create knowledge/BRAND_BRIEF.md using the template:
|
|
226
|
+
cp templates/BRAND_BRIEF.md knowledge/BRAND_BRIEF.md
|
|
227
|
+
|
|
228
|
+
Then fill it out and run /brand-architect again.
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### Incomplete Brief
|
|
232
|
+
```
|
|
233
|
+
Brand brief is incomplete.
|
|
234
|
+
|
|
235
|
+
Missing required fields:
|
|
236
|
+
- {field 1}
|
|
237
|
+
- {field 2}
|
|
238
|
+
|
|
239
|
+
Please update knowledge/BRAND_BRIEF.md and try again.
|
|
240
|
+
```
|