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
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Alec Taggart (@402goose)
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
# JFL - Just Fucking Launch
|
|
2
|
+
|
|
3
|
+
Your team's context layer for shipping products. Any AI. Any task.
|
|
4
|
+
|
|
5
|
+
JFL is a CLI toolkit that powers go-to-market campaigns from zero to launch. It creates structured GTM workspaces where product code, strategy, brand, and content all work together.
|
|
6
|
+
|
|
7
|
+
## What JFL Does
|
|
8
|
+
|
|
9
|
+
- **Initialize GTM workspaces** with proper architecture
|
|
10
|
+
- **Manage your launch dashboard** with countdown, phases, and tasks
|
|
11
|
+
- **Authenticate and manage billing** ($5/day per person, crypto-first)
|
|
12
|
+
- **Deploy to platform** for team collaboration
|
|
13
|
+
- **Orchestrate parallel agents** for Pro tier
|
|
14
|
+
- **Track feedback** and iterate
|
|
15
|
+
|
|
16
|
+
## Installation
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm install -g jfl
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
JFL automatically installs all required dependencies, including:
|
|
23
|
+
- **httpcat-cli** - For gasless USDC transfers via x402 (bundled, no separate install needed)
|
|
24
|
+
- **@x402/evm** - x402 payment protocol for Day Pass payments
|
|
25
|
+
|
|
26
|
+
## Quick Start
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# Create a new GTM workspace
|
|
30
|
+
jfl init my-project-gtm
|
|
31
|
+
|
|
32
|
+
# Check status
|
|
33
|
+
cd my-project-gtm
|
|
34
|
+
jfl status
|
|
35
|
+
|
|
36
|
+
# View launch dashboard
|
|
37
|
+
jfl hud
|
|
38
|
+
|
|
39
|
+
# Or just type. It will walk you through it
|
|
40
|
+
jfl
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Architecture
|
|
44
|
+
|
|
45
|
+
JFL creates GTM workspaces that are **separate from your product code**:
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
my-project-gtm/ ← GTM workspace (strategy, content, brand)
|
|
49
|
+
├── product/ ← SUBMODULE → your-product-repo
|
|
50
|
+
├── knowledge/ ← Strategy, vision, narrative
|
|
51
|
+
├── content/ ← Marketing content
|
|
52
|
+
├── suggestions/ ← Contributor work
|
|
53
|
+
├── skills/ ← JFL skills (updated via jfl update)
|
|
54
|
+
└── CLAUDE.md ← AI instructions
|
|
55
|
+
|
|
56
|
+
your-product-repo/ ← SEPARATE REPO (all code lives here)
|
|
57
|
+
├── src/
|
|
58
|
+
├── cli/
|
|
59
|
+
└── ...
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Why?**
|
|
63
|
+
- Clean separation of concerns
|
|
64
|
+
- Product can be worked on independently
|
|
65
|
+
- GTM context doesn't pollute product repo
|
|
66
|
+
- Multiple GTMs can reference same product
|
|
67
|
+
- `jfl update` updates GTM toolkit without touching product
|
|
68
|
+
|
|
69
|
+
## Commands
|
|
70
|
+
|
|
71
|
+
### Core Commands
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
jfl # Start interactive session (with optional --update)
|
|
75
|
+
jfl init [template] # Initialize new GTM workspace
|
|
76
|
+
jfl status # Show project status
|
|
77
|
+
jfl hud # Show campaign dashboard
|
|
78
|
+
jfl hud --compact # One-line status
|
|
79
|
+
jfl update # Pull latest JFL updates
|
|
80
|
+
jfl update --dry # Preview updates without applying
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Platform Commands
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
jfl login # Authenticate to JFL platform
|
|
87
|
+
jfl login --x402 # Use x402 Day Pass ($5/day, crypto)
|
|
88
|
+
jfl login --solo # Use Solo plan ($49/mo)
|
|
89
|
+
jfl login --team # Use Team plan ($199/mo)
|
|
90
|
+
jfl login --free # Stay on trial
|
|
91
|
+
jfl logout # Logout from platform
|
|
92
|
+
jfl wallet # Show wallet and day pass status
|
|
93
|
+
jfl deploy # Deploy to JFL platform
|
|
94
|
+
jfl deploy --force # Force deploy even if no changes
|
|
95
|
+
jfl agents [action] # Manage parallel agents (list, create, start, stop)
|
|
96
|
+
jfl feedback # Rate your session
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Skill Shortcuts
|
|
100
|
+
|
|
101
|
+
These skills run in your Claude Code session:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
jfl brand [subcommand] # Run /brand-architect skill
|
|
105
|
+
jfl content <type> [topic] # Run /content skill (thread, post, article, one-pager)
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Authentication
|
|
109
|
+
|
|
110
|
+
JFL supports two authentication methods:
|
|
111
|
+
|
|
112
|
+
**GitHub OAuth**
|
|
113
|
+
```bash
|
|
114
|
+
jfl login
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**x402 Crypto Wallet** (with httpcat-cli bundled)
|
|
118
|
+
```bash
|
|
119
|
+
jfl login --x402
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
This enables:
|
|
123
|
+
- Gasless USDC transfers (no ETH needed for gas)
|
|
124
|
+
- $5/day payments via x402 protocol
|
|
125
|
+
- httpcat-cli automatically installed and configured
|
|
126
|
+
|
|
127
|
+
View your auth status:
|
|
128
|
+
```bash
|
|
129
|
+
jfl wallet
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Pricing
|
|
133
|
+
|
|
134
|
+
**Trial - $0**
|
|
135
|
+
- Full JFL toolkit
|
|
136
|
+
- Foundation + brand setup
|
|
137
|
+
- Use Claude Code or Codex CLI - download Claude Pro or Max at claude.ai
|
|
138
|
+
- Ends when you add teammates (context is more fun when you shape it together)
|
|
139
|
+
|
|
140
|
+
**Day Pass - $5/day per person**
|
|
141
|
+
- Only pay the days you use it
|
|
142
|
+
- AI included (no API key needed)
|
|
143
|
+
- Chat in Telegram, Slack, Discord
|
|
144
|
+
- Dashboard + Deploy at [TBD]
|
|
145
|
+
- Pay with USDC (gasless via x402)
|
|
146
|
+
|
|
147
|
+
**Solo - $49/mo**
|
|
148
|
+
- Just you (1 seat)
|
|
149
|
+
- AI included
|
|
150
|
+
- Everything in Day Pass
|
|
151
|
+
- Best if you use it most days
|
|
152
|
+
|
|
153
|
+
**Team - $199/mo**
|
|
154
|
+
- Up to 5 seats (+$25/seat after)
|
|
155
|
+
- AI included for everyone
|
|
156
|
+
- Team dashboard + analytics
|
|
157
|
+
- Parallel agents
|
|
158
|
+
- Priority support
|
|
159
|
+
|
|
160
|
+
## Project Setup Types
|
|
161
|
+
|
|
162
|
+
When initializing a project, JFL asks about your setup:
|
|
163
|
+
|
|
164
|
+
**Building a product**
|
|
165
|
+
- You're writing code
|
|
166
|
+
- Product repo linked as submodule at `product/`
|
|
167
|
+
- Code changes go to product repo
|
|
168
|
+
|
|
169
|
+
**GTM only**
|
|
170
|
+
- Team handles code
|
|
171
|
+
- You focus on content, brand, outreach
|
|
172
|
+
- No code changes, just marketing
|
|
173
|
+
|
|
174
|
+
**Contributor**
|
|
175
|
+
- Working on specific tasks
|
|
176
|
+
- Changes go to `suggestions/{name}.md`
|
|
177
|
+
- Owner reviews and merges
|
|
178
|
+
|
|
179
|
+
## Skills Available
|
|
180
|
+
|
|
181
|
+
JFL includes powerful skills for Claude Code:
|
|
182
|
+
|
|
183
|
+
| Skill | Description |
|
|
184
|
+
|-------|-------------|
|
|
185
|
+
| `/hud` | Campaign dashboard with countdown and tasks |
|
|
186
|
+
| `/brand-architect` | Generate brand identity (marks, colors, typography) |
|
|
187
|
+
| `/web-architect` | Implement assets (SVG, favicon, OG images) |
|
|
188
|
+
| `/content` | Create content (threads, posts, articles, one-pagers) |
|
|
189
|
+
| `/x-algorithm` | Optimize tweets for X For You feed using the open-sourced algorithm |
|
|
190
|
+
| `/video` | Founder video scripts (viral short-form) |
|
|
191
|
+
| `/startup` | Startup journey guidance (idea to scale) |
|
|
192
|
+
| `/agent-browser` | Headless browser automation - navigate, screenshot, scrape |
|
|
193
|
+
| `/search` | Semantic search across GTM knowledge base using qmd |
|
|
194
|
+
| `/spec` | Multi-agent adversarial spec refinement |
|
|
195
|
+
| `/react-best-practices` | React/Next.js performance optimization |
|
|
196
|
+
| `/remotion-best-practices` | Remotion video creation in React |
|
|
197
|
+
|
|
198
|
+
Run these in Claude Code after initializing your project. Easy to add more skills, it has a sklls factory just ask it or copy your favorite skills repos
|
|
199
|
+
|
|
200
|
+
## Knowledge Layer
|
|
201
|
+
|
|
202
|
+
JFL structures your GTM knowledge:
|
|
203
|
+
|
|
204
|
+
```
|
|
205
|
+
knowledge/
|
|
206
|
+
├── VISION.md # What you're building
|
|
207
|
+
├── NARRATIVE.md # How you tell the story
|
|
208
|
+
├── THESIS.md # Why you'll win
|
|
209
|
+
├── ROADMAP.md # What ships when
|
|
210
|
+
├── BRAND_BRIEF.md # Brand inputs
|
|
211
|
+
├── BRAND_DECISIONS.md # Finalized brand choices
|
|
212
|
+
├── VOICE_AND_TONE.md # How the brand speaks
|
|
213
|
+
├── TASKS.md # Master task list
|
|
214
|
+
└── CRM.md # Contact database
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
These docs are the source of truth that AI reads to generate content, make decisions, and maintain consistency.
|
|
218
|
+
|
|
219
|
+
## Updating JFL
|
|
220
|
+
|
|
221
|
+
JFL updates independently of your project:
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
jfl update # Pull latest skills and CLAUDE.md
|
|
225
|
+
jfl update --dry # Preview changes first
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
This updates:
|
|
229
|
+
- `skills/` - Latest skill implementations
|
|
230
|
+
- `CLAUDE.md` - Latest AI instructions
|
|
231
|
+
- Templates for new docs
|
|
232
|
+
|
|
233
|
+
Your project content (knowledge/, content/, product/) is never touched.
|
|
234
|
+
|
|
235
|
+
## Session Management
|
|
236
|
+
|
|
237
|
+
**Default:** Single session, direct in repo.
|
|
238
|
+
|
|
239
|
+
**Advanced:** For parallel work across multiple sessions, use worktrees:
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
./scripts/worktree-session.sh create [username] # Create isolated session
|
|
243
|
+
./scripts/worktree-session.sh list # List active sessions
|
|
244
|
+
./scripts/worktree-session.sh end [session-name] # End session
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
Each worktree session has:
|
|
248
|
+
- Isolated git worktree
|
|
249
|
+
- Auto-commit (every 5 min)
|
|
250
|
+
- Auto-merge to main (every 15 min)
|
|
251
|
+
- Own branch for changes
|
|
252
|
+
|
|
253
|
+
## Development
|
|
254
|
+
|
|
255
|
+
Contributing to JFL itself:
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
# Clone through GTM structure
|
|
259
|
+
jfl init my-jfl-gtm
|
|
260
|
+
# During setup, add: https://github.com/402goose/just-fucking-launch.git
|
|
261
|
+
|
|
262
|
+
# Run dev setup
|
|
263
|
+
cd my-jfl-gtm/product
|
|
264
|
+
./scripts/dev-setup.sh
|
|
265
|
+
|
|
266
|
+
# Work in the submodule
|
|
267
|
+
cd product/cli
|
|
268
|
+
npm install
|
|
269
|
+
npm run build
|
|
270
|
+
|
|
271
|
+
# Link globally for testing
|
|
272
|
+
npm link
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
## Environment Variables
|
|
276
|
+
|
|
277
|
+
```bash
|
|
278
|
+
CRM_SHEET_ID=your-sheet-id # Google Sheets CRM integration
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
## Files You'll Work With
|
|
282
|
+
|
|
283
|
+
```
|
|
284
|
+
.jfl/config.json # Project configuration
|
|
285
|
+
knowledge/ # Strategy docs (you fill these)
|
|
286
|
+
content/ # Generated content
|
|
287
|
+
suggestions/{name}.md # Per-person working space
|
|
288
|
+
previews/ # Generated assets
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
## Help
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
jfl help # Show all commands
|
|
295
|
+
jfl --version # Show version
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
For issues or feedback:
|
|
299
|
+
- GitHub: https://github.com/402goose/just-fucking-launch
|
|
300
|
+
- Docs: https://jfl.run
|
|
301
|
+
|
|
302
|
+
## License
|
|
303
|
+
|
|
304
|
+
MIT License - see LICENSE file for details.
|
|
305
|
+
|
|
306
|
+
## Credits
|
|
307
|
+
|
|
308
|
+
Built by [@tagga](https://x.com/taggaoyl) (Alec Taggart)
|
|
309
|
+
|
|
310
|
+
Powered by:
|
|
311
|
+
- Claude (Anthropic)
|
|
312
|
+
- x402 (crypto micropayments)
|
|
313
|
+
- Commander.js, Inquirer, Chalk, and more
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
# JFL GTM Clawdbot Skill
|
|
2
|
+
|
|
3
|
+
Access your JFL GTMs from Telegram, Slack, or Discord with full session isolation.
|
|
4
|
+
|
|
5
|
+
## Architecture
|
|
6
|
+
|
|
7
|
+
Clawdbot skills are markdown instruction files (SKILL.md) that teach Clawdbot how to use tools. This skill:
|
|
8
|
+
|
|
9
|
+
1. Uses `jfl session` commands for proper isolation (worktrees)
|
|
10
|
+
2. Each Telegram thread = isolated session with auto-commit
|
|
11
|
+
3. Executes via `jfl session exec` (syncs repos before every command)
|
|
12
|
+
4. Button UI for GTM picker and command menus
|
|
13
|
+
5. Formats output for chat (strips ANSI, converts to Markdown)
|
|
14
|
+
|
|
15
|
+
**Critical:** Every thread gets its own git worktree with journaling and auto-commit daemon.
|
|
16
|
+
|
|
17
|
+
## Local Testing
|
|
18
|
+
|
|
19
|
+
### 1. Verify JFL CLI is installed
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
jfl --version
|
|
23
|
+
# Should show version 0.1.0 or later
|
|
24
|
+
|
|
25
|
+
# If not installed:
|
|
26
|
+
cd ../jfl-cli && npm link
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### 2. Link skill to Clawdbot
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
cd product/clawdbot-skill
|
|
33
|
+
|
|
34
|
+
# Create symlink in Clawdbot's managed skills directory
|
|
35
|
+
ln -sf $(pwd) ~/.clawdbot/skills/jfl-gtm
|
|
36
|
+
|
|
37
|
+
# Verify - should point to this directory
|
|
38
|
+
ls -la ~/.clawdbot/skills/jfl-gtm
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 3. Restart Clawdbot to load the skill
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# If running as daemon:
|
|
45
|
+
clawdbot restart
|
|
46
|
+
|
|
47
|
+
# Or kill and restart Telegram/Slack session
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 4. Test session commands directly
|
|
51
|
+
|
|
52
|
+
Before testing in Telegram, verify the session commands work:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Create a test session
|
|
56
|
+
TEST_SESSION=$(jfl session create --platform telegram --thread test-123)
|
|
57
|
+
echo "Created: $TEST_SESSION"
|
|
58
|
+
|
|
59
|
+
# Execute command through session
|
|
60
|
+
jfl session exec $TEST_SESSION "jfl hud"
|
|
61
|
+
|
|
62
|
+
# List active sessions
|
|
63
|
+
jfl session list
|
|
64
|
+
|
|
65
|
+
# Clean up
|
|
66
|
+
jfl session destroy $TEST_SESSION
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 5. Test in Telegram
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
You: /jfl
|
|
73
|
+
|
|
74
|
+
Clawdbot:
|
|
75
|
+
🚀 JFL - Just Fucking Launch
|
|
76
|
+
|
|
77
|
+
Your team's context layer. Any AI. Any task.
|
|
78
|
+
|
|
79
|
+
Open a project:
|
|
80
|
+
|
|
81
|
+
[📂 JFL-GTM]
|
|
82
|
+
[📂 Kodiak]
|
|
83
|
+
[+ Create new]
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Click a GTM → Clawdbot creates session → shows command menu → execute commands
|
|
87
|
+
|
|
88
|
+
### 4. Test commands
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
/hud → Dashboard
|
|
92
|
+
/crm list → Pipeline
|
|
93
|
+
/brand → Brand menu
|
|
94
|
+
/content → Content menu
|
|
95
|
+
/gtm → Switch GTM
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## How It Works
|
|
99
|
+
|
|
100
|
+
### On First Message in Thread
|
|
101
|
+
|
|
102
|
+
1. **Find GTMs**: Scan for directories with `.jfl/`
|
|
103
|
+
2. **Show picker**: Button UI listing available GTMs
|
|
104
|
+
3. **Wait for selection**
|
|
105
|
+
|
|
106
|
+
### On GTM Selection
|
|
107
|
+
|
|
108
|
+
1. **Create isolated session**:
|
|
109
|
+
```bash
|
|
110
|
+
jfl session create --platform telegram --thread ${THREAD_ID}
|
|
111
|
+
# Returns: session-telegram-${THREAD_ID}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
This creates:
|
|
115
|
+
- Git worktree at `worktrees/session-telegram-${THREAD_ID}/`
|
|
116
|
+
- Auto-commit daemon (commits every 2 minutes)
|
|
117
|
+
- Journal file at `.jfl/journal/session-telegram-${THREAD_ID}.jsonl`
|
|
118
|
+
- Session metadata in `.jfl/sessions.json`
|
|
119
|
+
|
|
120
|
+
2. **Store session mapping**: Thread ID → Session ID
|
|
121
|
+
3. **Show command menu**: Dashboard, CRM, Brand, Content
|
|
122
|
+
|
|
123
|
+
### On Command Execution
|
|
124
|
+
|
|
125
|
+
1. **Lookup session ID** for this thread
|
|
126
|
+
2. **Execute through session**:
|
|
127
|
+
```bash
|
|
128
|
+
jfl session exec ${SESSION_ID} "jfl hud"
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
This:
|
|
132
|
+
- Runs `session-sync.sh` (syncs repos with remotes)
|
|
133
|
+
- CDs to worktree
|
|
134
|
+
- Executes command in isolated context
|
|
135
|
+
- Returns output
|
|
136
|
+
|
|
137
|
+
3. **Format output**: Strip ANSI, convert to Markdown
|
|
138
|
+
4. **Return to Telegram**
|
|
139
|
+
|
|
140
|
+
### Session Lifecycle
|
|
141
|
+
|
|
142
|
+
- **Created**: On first GTM selection in thread
|
|
143
|
+
- **Persists**: Across messages (doesn't recreate every time)
|
|
144
|
+
- **Auto-commits**: Every 2 minutes while active
|
|
145
|
+
- **Journals**: All commands logged to `.jfl/journal/`
|
|
146
|
+
- **Destroyed**: Optional cleanup (or let it persist)
|
|
147
|
+
|
|
148
|
+
## Local Development
|
|
149
|
+
|
|
150
|
+
### Test functions directly
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
# Install deps
|
|
154
|
+
npm install
|
|
155
|
+
|
|
156
|
+
# Test GTM detection
|
|
157
|
+
node -e "import('./index.js').then(m => m.findGTMs().then(console.log))"
|
|
158
|
+
|
|
159
|
+
# Test command execution
|
|
160
|
+
node -e "import('./index.js').then(m => m.runJFLCommand({gtmPath: '/Users/you/JFL-GTM'}, 'hud').then(console.log))"
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Debug mode
|
|
164
|
+
|
|
165
|
+
Set `DEBUG=1` to see command execution:
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
export DEBUG=1
|
|
169
|
+
# Then use Clawdbot normally
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## Publishing (Later)
|
|
173
|
+
|
|
174
|
+
### To ClawdHub
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
# Build
|
|
178
|
+
npm run build
|
|
179
|
+
|
|
180
|
+
# Publish
|
|
181
|
+
clawdbot skill publish
|
|
182
|
+
|
|
183
|
+
# Or to npm
|
|
184
|
+
npm publish --access public
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### To npm (bundled with CLI)
|
|
188
|
+
|
|
189
|
+
The skill will be bundled in `jfl-cli` package:
|
|
190
|
+
|
|
191
|
+
```
|
|
192
|
+
jfl-cli/
|
|
193
|
+
├── skills/
|
|
194
|
+
│ └── clawdbot/ ← This skill
|
|
195
|
+
│ ├── skill.json
|
|
196
|
+
│ └── index.ts
|
|
197
|
+
└── package.json
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
Post-install script detects Clawdbot and auto-registers.
|
|
201
|
+
|
|
202
|
+
## Requirements
|
|
203
|
+
|
|
204
|
+
- `jfl` CLI installed (`npm install -g jfl` or local dev)
|
|
205
|
+
- Clawdbot installed and configured
|
|
206
|
+
- At least one GTM created (`jfl init`)
|
|
207
|
+
|
|
208
|
+
## File Structure
|
|
209
|
+
|
|
210
|
+
```
|
|
211
|
+
product/clawdbot-skill/
|
|
212
|
+
├── skill.json # ClawdHub metadata
|
|
213
|
+
├── index.ts # Skill implementation
|
|
214
|
+
├── package.json # npm metadata
|
|
215
|
+
└── README.md # This file
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
## Key Functions
|
|
219
|
+
|
|
220
|
+
| Function | What It Does |
|
|
221
|
+
|----------|--------------|
|
|
222
|
+
| `onBoot()` | Shows GTM picker on first run |
|
|
223
|
+
| `onCallback()` | Handles button clicks |
|
|
224
|
+
| `onCommand()` | Handles `/` commands |
|
|
225
|
+
| `findGTMs()` | Scans for `.jfl` directories |
|
|
226
|
+
| `runJFLCommand()` | Executes actual `jfl` commands |
|
|
227
|
+
| `formatForTelegram()` | Strips ANSI, converts to Markdown |
|
|
228
|
+
|
|
229
|
+
## Examples
|
|
230
|
+
|
|
231
|
+
### Dashboard in Telegram
|
|
232
|
+
|
|
233
|
+
```
|
|
234
|
+
User: /hud
|
|
235
|
+
|
|
236
|
+
Clawdbot:
|
|
237
|
+
━━━━━━━━━━━━━━━━━━━━━━━━
|
|
238
|
+
JFL - Just Fucking Launch
|
|
239
|
+
━━━━━━━━━━━━━━━━━━━━━━━━
|
|
240
|
+
|
|
241
|
+
Phase: CLI Launch Prep
|
|
242
|
+
Version: 0.1.0
|
|
243
|
+
|
|
244
|
+
PIPELINE
|
|
245
|
+
🟠 Jack (Nascent) - IN_CONVO
|
|
246
|
+
🟠 Luca - IN_CONVO
|
|
247
|
+
✅ Wes - COMMITTED
|
|
248
|
+
|
|
249
|
+
NEXT: Publish CLI to npm
|
|
250
|
+
━━━━━━━━━━━━━━━━━━━━━━━━
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
### CRM in Telegram
|
|
254
|
+
|
|
255
|
+
```
|
|
256
|
+
User: /crm list
|
|
257
|
+
|
|
258
|
+
Clawdbot:
|
|
259
|
+
DEALS (22)
|
|
260
|
+
|
|
261
|
+
🟠 Jack (Nascent) - IN_CONVO
|
|
262
|
+
🟠 Luca - IN_CONVO
|
|
263
|
+
🟡 Avi (Coinfund) - REACHED_OUT
|
|
264
|
+
✅ Wes (Formation) - COMMITTED
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### Button UI
|
|
268
|
+
|
|
269
|
+
```
|
|
270
|
+
User: [clicks 📂 JFL-GTM]
|
|
271
|
+
|
|
272
|
+
Clawdbot:
|
|
273
|
+
✓ Opened JFL-GTM
|
|
274
|
+
|
|
275
|
+
[📊 Dashboard] [👥 CRM]
|
|
276
|
+
[🎨 Brand] [✍️ Content]
|
|
277
|
+
[🔄 Sync] [📝 Status]
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
## Troubleshooting
|
|
281
|
+
|
|
282
|
+
### "JFL CLI not found"
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
# Check if jfl is installed
|
|
286
|
+
jfl --version
|
|
287
|
+
|
|
288
|
+
# If not:
|
|
289
|
+
npm install -g jfl
|
|
290
|
+
|
|
291
|
+
# Or use local dev build:
|
|
292
|
+
cd jfl-cli && npm link
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### "No GTMs found"
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
# Create a GTM
|
|
299
|
+
jfl init
|
|
300
|
+
|
|
301
|
+
# Or check paths in findGTMs()
|
|
302
|
+
# Default search paths:
|
|
303
|
+
# - ~/CascadeProjects
|
|
304
|
+
# - ~/Projects
|
|
305
|
+
# - ~/code
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
### Skill not showing in Clawdbot
|
|
309
|
+
|
|
310
|
+
```bash
|
|
311
|
+
# Check symlink
|
|
312
|
+
ls -la ~/.clawdbot/skills/jfl-gtm
|
|
313
|
+
|
|
314
|
+
# Should point to:
|
|
315
|
+
# product/clawdbot-skill
|
|
316
|
+
|
|
317
|
+
# Restart Clawdbot
|
|
318
|
+
clawdbot restart
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
## Next Steps
|
|
322
|
+
|
|
323
|
+
- [ ] Test in Telegram
|
|
324
|
+
- [ ] Test in Slack
|
|
325
|
+
- [ ] Add voice note support
|
|
326
|
+
- [ ] Add image attachment support
|
|
327
|
+
- [ ] Publish to ClawdHub
|
|
328
|
+
- [ ] Bundle with CLI
|