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,146 @@
|
|
|
1
|
+
# Voice and Tone Guide
|
|
2
|
+
|
|
3
|
+
> How your brand speaks. Copy to `knowledge/VOICE_AND_TONE.md` and customize.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Voice (Consistent)
|
|
8
|
+
|
|
9
|
+
Your voice is WHO you are. It stays consistent across all contexts.
|
|
10
|
+
|
|
11
|
+
### Voice Attributes
|
|
12
|
+
|
|
13
|
+
**We are:**
|
|
14
|
+
- {attribute 1} - {what this means in practice}
|
|
15
|
+
- {attribute 2} - {what this means in practice}
|
|
16
|
+
- {attribute 3} - {what this means in practice}
|
|
17
|
+
|
|
18
|
+
**We are NOT:**
|
|
19
|
+
- {anti-attribute 1}
|
|
20
|
+
- {anti-attribute 2}
|
|
21
|
+
- {anti-attribute 3}
|
|
22
|
+
|
|
23
|
+
### Voice Examples
|
|
24
|
+
|
|
25
|
+
| Instead of | We say |
|
|
26
|
+
|------------|--------|
|
|
27
|
+
| "Leverage synergies" | {plain language version} |
|
|
28
|
+
| "Click here" | {more engaging version} |
|
|
29
|
+
| "Dear valued customer" | {your version} |
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Tone (Flexible)
|
|
34
|
+
|
|
35
|
+
Tone is HOW you express your voice in different contexts. It shifts based on situation.
|
|
36
|
+
|
|
37
|
+
### Tone Spectrum
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
Serious ←────────────────────────────→ Playful
|
|
41
|
+
Where do you sit by default?
|
|
42
|
+
|
|
43
|
+
Formal ←────────────────────────────→ Casual
|
|
44
|
+
Where do you sit by default?
|
|
45
|
+
|
|
46
|
+
Reserved ←────────────────────────────→ Enthusiastic
|
|
47
|
+
Where do you sit by default?
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Tone by Context
|
|
51
|
+
|
|
52
|
+
| Context | Tone Adjustment |
|
|
53
|
+
|---------|-----------------|
|
|
54
|
+
| Error messages | More empathetic, helpful |
|
|
55
|
+
| Success messages | More celebratory |
|
|
56
|
+
| Documentation | More neutral, clear |
|
|
57
|
+
| Marketing | More energetic |
|
|
58
|
+
| Support | More patient, detailed |
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Copy Patterns
|
|
63
|
+
|
|
64
|
+
### Headlines
|
|
65
|
+
- {Pattern: question / statement / command}
|
|
66
|
+
- {Case: lowercase / Title Case / UPPERCASE}
|
|
67
|
+
- {Length: short punchy / descriptive}
|
|
68
|
+
|
|
69
|
+
**Examples:**
|
|
70
|
+
- Good: "{example}"
|
|
71
|
+
- Avoid: "{anti-example}"
|
|
72
|
+
|
|
73
|
+
### Body Copy
|
|
74
|
+
- {Sentence length preference}
|
|
75
|
+
- {Paragraph length}
|
|
76
|
+
- {Use of contractions: yes/no}
|
|
77
|
+
|
|
78
|
+
### CTAs (Calls to Action)
|
|
79
|
+
- {Action verbs you prefer}
|
|
80
|
+
- {Length: short / descriptive}
|
|
81
|
+
|
|
82
|
+
**Examples:**
|
|
83
|
+
- Good: "{example}"
|
|
84
|
+
- Avoid: "{anti-example}"
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Formatting Conventions
|
|
89
|
+
|
|
90
|
+
### Punctuation
|
|
91
|
+
- **Periods in headlines:** {yes/no}
|
|
92
|
+
- **Oxford comma:** {yes/no}
|
|
93
|
+
- **Exclamation points:** {rarely/sometimes/often}
|
|
94
|
+
|
|
95
|
+
### Capitalization
|
|
96
|
+
- **Headings:** {lowercase / Title Case / Sentence case}
|
|
97
|
+
- **Buttons:** {lowercase / Title Case / UPPERCASE}
|
|
98
|
+
- **Product names:** {how to capitalize your product name}
|
|
99
|
+
|
|
100
|
+
### Special Characters
|
|
101
|
+
- **Emoji:** {never / sparingly / freely}
|
|
102
|
+
- **Terminal characters:** {>, //, $, etc.}
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Word List
|
|
107
|
+
|
|
108
|
+
### Words We Use
|
|
109
|
+
| Word | Instead of | Why |
|
|
110
|
+
|------|------------|-----|
|
|
111
|
+
| {your word} | {common alternative} | {reason} |
|
|
112
|
+
|
|
113
|
+
### Words We Avoid
|
|
114
|
+
| Avoid | Because |
|
|
115
|
+
|-------|---------|
|
|
116
|
+
| {word} | {reason} |
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Sample Copy
|
|
121
|
+
|
|
122
|
+
### Tagline
|
|
123
|
+
> "{your tagline}"
|
|
124
|
+
|
|
125
|
+
### Elevator Pitch (1 sentence)
|
|
126
|
+
> "{one sentence description}"
|
|
127
|
+
|
|
128
|
+
### Boilerplate (1 paragraph)
|
|
129
|
+
> "{standard description paragraph}"
|
|
130
|
+
|
|
131
|
+
### Error Message Example
|
|
132
|
+
> "{example error in your voice}"
|
|
133
|
+
|
|
134
|
+
### Success Message Example
|
|
135
|
+
> "{example success in your voice}"
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Voice Checklist
|
|
140
|
+
|
|
141
|
+
Before publishing, ask:
|
|
142
|
+
- [ ] Does this sound like us?
|
|
143
|
+
- [ ] Would we say this out loud?
|
|
144
|
+
- [ ] Is it clear to our audience?
|
|
145
|
+
- [ ] Does it match the context's tone?
|
|
146
|
+
- [ ] Are we avoiding our "don't" words?
|
|
File without changes
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
#
|
|
3
|
+
# Auto-commit script for JFL projects
|
|
4
|
+
# Runs in background, commits changes at specified interval
|
|
5
|
+
#
|
|
6
|
+
# Usage:
|
|
7
|
+
# ./scripts/session/auto-commit.sh start [INTERVAL] # Start (default 120s)
|
|
8
|
+
# ./scripts/session/auto-commit.sh stop # Stop background process
|
|
9
|
+
# ./scripts/session/auto-commit.sh status # Check if running
|
|
10
|
+
# ./scripts/session/auto-commit.sh once # Run once (for testing)
|
|
11
|
+
#
|
|
12
|
+
# Merges best of:
|
|
13
|
+
# - Original JFL auto-commit (smart messages, author detection, pull first)
|
|
14
|
+
# - Session protection (push after, product handling, faster interval)
|
|
15
|
+
|
|
16
|
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
17
|
+
# Use current working directory (where script is called from), not script location
|
|
18
|
+
REPO_DIR="$(pwd)"
|
|
19
|
+
PID_FILE="$REPO_DIR/.jfl/auto-commit.pid"
|
|
20
|
+
LOG_FILE="$REPO_DIR/.jfl/auto-commit.log"
|
|
21
|
+
INTERVAL=${2:-120} # Default 2 minutes (was 5 in original)
|
|
22
|
+
|
|
23
|
+
mkdir -p "$REPO_DIR/.jfl"
|
|
24
|
+
cd "$REPO_DIR" || exit 1
|
|
25
|
+
|
|
26
|
+
# Critical paths to always include
|
|
27
|
+
CRITICAL_PATHS=(
|
|
28
|
+
"knowledge/"
|
|
29
|
+
"previews/"
|
|
30
|
+
"content/"
|
|
31
|
+
"suggestions/"
|
|
32
|
+
"CLAUDE.md"
|
|
33
|
+
".jfl/"
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
do_commit() {
|
|
37
|
+
# Pull latest first (sync with team) - from original
|
|
38
|
+
git pull --rebase --quiet 2>/dev/null || true
|
|
39
|
+
|
|
40
|
+
# Build paths string
|
|
41
|
+
local paths=""
|
|
42
|
+
for p in "${CRITICAL_PATHS[@]}"; do
|
|
43
|
+
if [ -e "$p" ]; then
|
|
44
|
+
paths="$paths $p"
|
|
45
|
+
fi
|
|
46
|
+
done
|
|
47
|
+
|
|
48
|
+
# Check for changes
|
|
49
|
+
if [[ -z $(git status --porcelain $paths 2>/dev/null) ]]; then
|
|
50
|
+
return 0 # Nothing to commit
|
|
51
|
+
fi
|
|
52
|
+
|
|
53
|
+
# Get list of changed files for commit message - from original
|
|
54
|
+
CHANGED=$(git status --porcelain $paths | head -5 | awk '{print $2}' | tr '\n' ', ' | sed 's/,$//')
|
|
55
|
+
CHANGE_COUNT=$(git status --porcelain $paths | wc -l | tr -d ' ')
|
|
56
|
+
|
|
57
|
+
# Try to identify who's working (check recent suggestions files) - from original
|
|
58
|
+
AUTHOR="auto"
|
|
59
|
+
RECENT_SUGGESTION=$(ls -t suggestions/*.md 2>/dev/null | head -1)
|
|
60
|
+
if [[ -n "$RECENT_SUGGESTION" ]]; then
|
|
61
|
+
AUTHOR=$(basename "$RECENT_SUGGESTION" .md)
|
|
62
|
+
fi
|
|
63
|
+
|
|
64
|
+
# Generate commit message - from original style
|
|
65
|
+
if [[ $CHANGE_COUNT -gt 5 ]]; then
|
|
66
|
+
MSG="$AUTHOR: auto-save ($CHANGE_COUNT files including $CHANGED...)"
|
|
67
|
+
else
|
|
68
|
+
MSG="$AUTHOR: auto-save ($CHANGED)"
|
|
69
|
+
fi
|
|
70
|
+
|
|
71
|
+
# Commit
|
|
72
|
+
git add $paths
|
|
73
|
+
git commit -m "$MSG" || return 0
|
|
74
|
+
|
|
75
|
+
# Push after commit - from ours
|
|
76
|
+
git push origin main 2>/dev/null || echo "[$(date '+%H:%M:%S')] Push failed - will retry"
|
|
77
|
+
|
|
78
|
+
echo "[$(date '+%H:%M:%S')] Committed: $MSG"
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
# Commit and push changes in ALL submodules with feature branches
|
|
82
|
+
commit_submodules_if_changes() {
|
|
83
|
+
local submodules_dir="$REPO_DIR/.jfl/submodules"
|
|
84
|
+
|
|
85
|
+
# If no submodules directory, fall back to legacy product-only handling
|
|
86
|
+
if [[ ! -d "$submodules_dir" ]]; then
|
|
87
|
+
# Legacy: check for product-branch file
|
|
88
|
+
local product_branch_file="$REPO_DIR/.jfl/product-branch"
|
|
89
|
+
if [[ -f "$product_branch_file" ]]; then
|
|
90
|
+
commit_single_submodule "product" "$(cat "$product_branch_file")"
|
|
91
|
+
fi
|
|
92
|
+
return 0
|
|
93
|
+
fi
|
|
94
|
+
|
|
95
|
+
# Iterate through all submodule branch files (use find for nested paths like libs/mylib)
|
|
96
|
+
while IFS= read -r -d '' branch_file; do
|
|
97
|
+
if [[ -f "$branch_file" ]]; then
|
|
98
|
+
# Get submodule path by stripping the prefix directory
|
|
99
|
+
local submodule_path="${branch_file#$submodules_dir/}"
|
|
100
|
+
local target_branch=$(cat "$branch_file")
|
|
101
|
+
commit_single_submodule "$submodule_path" "$target_branch"
|
|
102
|
+
fi
|
|
103
|
+
done < <(find "$submodules_dir" -type f -print0 2>/dev/null)
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
# Commit changes in a single submodule
|
|
107
|
+
commit_single_submodule() {
|
|
108
|
+
local submodule_path="$1"
|
|
109
|
+
local target_branch="$2"
|
|
110
|
+
local full_path="$REPO_DIR/$submodule_path"
|
|
111
|
+
|
|
112
|
+
# Resolve symlink if needed
|
|
113
|
+
if [[ -L "$full_path" ]]; then
|
|
114
|
+
full_path=$(cd "$full_path" 2>/dev/null && pwd) || return 0
|
|
115
|
+
fi
|
|
116
|
+
|
|
117
|
+
# Check if submodule has git
|
|
118
|
+
if [[ -d "$full_path/.git" ]] || [[ -f "$full_path/.git" ]]; then
|
|
119
|
+
cd "$full_path"
|
|
120
|
+
|
|
121
|
+
if [[ -n $(git status --porcelain 2>/dev/null) ]]; then
|
|
122
|
+
# Make sure we're on the right branch
|
|
123
|
+
local current_branch=$(git branch --show-current 2>/dev/null)
|
|
124
|
+
if [[ "$current_branch" != "$target_branch" ]] && [[ "$target_branch" != "main" ]]; then
|
|
125
|
+
git checkout "$target_branch" 2>/dev/null || true
|
|
126
|
+
fi
|
|
127
|
+
|
|
128
|
+
git add -A
|
|
129
|
+
git commit -m "auto: $submodule_path save ($(date '+%Y-%m-%d %H:%M'))" || true
|
|
130
|
+
|
|
131
|
+
# Push to feature branch (NOT main)
|
|
132
|
+
if [[ "$target_branch" != "main" ]]; then
|
|
133
|
+
git push origin "$target_branch" 2>/dev/null || true
|
|
134
|
+
echo "[$(date '+%H:%M:%S')] $submodule_path committed to branch: $target_branch"
|
|
135
|
+
else
|
|
136
|
+
# No feature branch - warn but don't push to main
|
|
137
|
+
echo "[$(date '+%H:%M:%S')] $submodule_path committed locally (no feature branch set)"
|
|
138
|
+
fi
|
|
139
|
+
fi
|
|
140
|
+
|
|
141
|
+
cd "$REPO_DIR"
|
|
142
|
+
fi
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
start_daemon() {
|
|
146
|
+
if [[ -f "$PID_FILE" ]]; then
|
|
147
|
+
local pid=$(cat "$PID_FILE")
|
|
148
|
+
if kill -0 "$pid" 2>/dev/null; then
|
|
149
|
+
echo "Auto-commit already running (PID: $pid)"
|
|
150
|
+
return 0
|
|
151
|
+
fi
|
|
152
|
+
rm -f "$PID_FILE"
|
|
153
|
+
fi
|
|
154
|
+
|
|
155
|
+
echo "Starting auto-commit daemon (interval: ${INTERVAL}s)..."
|
|
156
|
+
|
|
157
|
+
# Run in background (match original JFL pattern)
|
|
158
|
+
# Close inherited file descriptors so parent doesn't wait for us
|
|
159
|
+
(
|
|
160
|
+
exec </dev/null >/dev/null 2>&1
|
|
161
|
+
while true; do
|
|
162
|
+
{
|
|
163
|
+
echo "[$(date '+%H:%M:%S')] Checking for changes..."
|
|
164
|
+
do_commit
|
|
165
|
+
commit_submodules_if_changes
|
|
166
|
+
} >> "$LOG_FILE" 2>&1
|
|
167
|
+
sleep "$INTERVAL"
|
|
168
|
+
done
|
|
169
|
+
) &
|
|
170
|
+
|
|
171
|
+
DAEMON_PID=$!
|
|
172
|
+
echo "$DAEMON_PID" > "$PID_FILE"
|
|
173
|
+
echo "Auto-commit started (PID: $DAEMON_PID)"
|
|
174
|
+
echo "Log: $LOG_FILE"
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
stop_daemon() {
|
|
178
|
+
if [[ -f "$PID_FILE" ]]; then
|
|
179
|
+
local pid=$(cat "$PID_FILE")
|
|
180
|
+
if kill -0 "$pid" 2>/dev/null; then
|
|
181
|
+
echo "Stopping auto-commit (PID: $pid)..."
|
|
182
|
+
kill "$pid" 2>/dev/null
|
|
183
|
+
rm -f "$PID_FILE"
|
|
184
|
+
echo "Stopped."
|
|
185
|
+
else
|
|
186
|
+
echo "Process not running (stale PID file)"
|
|
187
|
+
rm -f "$PID_FILE"
|
|
188
|
+
fi
|
|
189
|
+
else
|
|
190
|
+
echo "Auto-commit not running"
|
|
191
|
+
fi
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
show_status() {
|
|
195
|
+
if [[ -f "$PID_FILE" ]]; then
|
|
196
|
+
local pid=$(cat "$PID_FILE")
|
|
197
|
+
if kill -0 "$pid" 2>/dev/null; then
|
|
198
|
+
echo "Auto-commit running (PID: $pid)"
|
|
199
|
+
echo "Interval: ${INTERVAL}s"
|
|
200
|
+
echo "Log: $LOG_FILE"
|
|
201
|
+
echo ""
|
|
202
|
+
echo "Recent activity:"
|
|
203
|
+
tail -5 "$LOG_FILE" 2>/dev/null || echo " (no log yet)"
|
|
204
|
+
return 0
|
|
205
|
+
fi
|
|
206
|
+
fi
|
|
207
|
+
echo "Auto-commit not running"
|
|
208
|
+
return 1
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
run_once() {
|
|
212
|
+
echo "Running single commit check..."
|
|
213
|
+
do_commit
|
|
214
|
+
commit_submodules_if_changes
|
|
215
|
+
echo "Done."
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
case "${1:-}" in
|
|
219
|
+
start)
|
|
220
|
+
start_daemon
|
|
221
|
+
;;
|
|
222
|
+
stop)
|
|
223
|
+
stop_daemon
|
|
224
|
+
;;
|
|
225
|
+
status)
|
|
226
|
+
show_status
|
|
227
|
+
;;
|
|
228
|
+
once)
|
|
229
|
+
run_once
|
|
230
|
+
;;
|
|
231
|
+
*)
|
|
232
|
+
echo "Auto-commit for JFL projects"
|
|
233
|
+
echo ""
|
|
234
|
+
echo "Usage:"
|
|
235
|
+
echo " $0 start [INTERVAL] Start daemon (default: 120s)"
|
|
236
|
+
echo " $0 stop Stop daemon"
|
|
237
|
+
echo " $0 status Show status"
|
|
238
|
+
echo " $0 once Run once"
|
|
239
|
+
echo ""
|
|
240
|
+
echo "Examples:"
|
|
241
|
+
echo " $0 start 60 Start with 1-minute interval"
|
|
242
|
+
echo " $0 start Start with 2-minute interval"
|
|
243
|
+
exit 1
|
|
244
|
+
;;
|
|
245
|
+
esac
|