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.
Files changed (381) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +313 -0
  3. package/clawdbot-skill/README.md +328 -0
  4. package/clawdbot-skill/SKILL.md +362 -0
  5. package/clawdbot-skill/index.ts +486 -0
  6. package/clawdbot-skill/package.json +28 -0
  7. package/clawdbot-skill/skill.json +28 -0
  8. package/dist/commands/agents.d.ts +5 -0
  9. package/dist/commands/agents.d.ts.map +1 -0
  10. package/dist/commands/agents.js +399 -0
  11. package/dist/commands/agents.js.map +1 -0
  12. package/dist/commands/context-hub.d.ts +12 -0
  13. package/dist/commands/context-hub.d.ts.map +1 -0
  14. package/dist/commands/context-hub.js +642 -0
  15. package/dist/commands/context-hub.js.map +1 -0
  16. package/dist/commands/deploy.d.ts +5 -0
  17. package/dist/commands/deploy.d.ts.map +1 -0
  18. package/dist/commands/deploy.js +370 -0
  19. package/dist/commands/deploy.js.map +1 -0
  20. package/dist/commands/feedback.d.ts +2 -0
  21. package/dist/commands/feedback.d.ts.map +1 -0
  22. package/dist/commands/feedback.js +178 -0
  23. package/dist/commands/feedback.js.map +1 -0
  24. package/dist/commands/hud.d.ts +4 -0
  25. package/dist/commands/hud.d.ts.map +1 -0
  26. package/dist/commands/hud.js +262 -0
  27. package/dist/commands/hud.js.map +1 -0
  28. package/dist/commands/init.d.ts +4 -0
  29. package/dist/commands/init.d.ts.map +1 -0
  30. package/dist/commands/init.js +553 -0
  31. package/dist/commands/init.js.map +1 -0
  32. package/dist/commands/login.d.ts +23 -0
  33. package/dist/commands/login.d.ts.map +1 -0
  34. package/dist/commands/login.js +818 -0
  35. package/dist/commands/login.js.map +1 -0
  36. package/dist/commands/ralph.d.ts +9 -0
  37. package/dist/commands/ralph.d.ts.map +1 -0
  38. package/dist/commands/ralph.js +67 -0
  39. package/dist/commands/ralph.js.map +1 -0
  40. package/dist/commands/repair.d.ts +7 -0
  41. package/dist/commands/repair.d.ts.map +1 -0
  42. package/dist/commands/repair.js +283 -0
  43. package/dist/commands/repair.js.map +1 -0
  44. package/dist/commands/session-mgmt.d.ts +33 -0
  45. package/dist/commands/session-mgmt.d.ts.map +1 -0
  46. package/dist/commands/session-mgmt.js +404 -0
  47. package/dist/commands/session-mgmt.js.map +1 -0
  48. package/dist/commands/session.d.ts +2 -0
  49. package/dist/commands/session.d.ts.map +1 -0
  50. package/dist/commands/session.js +639 -0
  51. package/dist/commands/session.js.map +1 -0
  52. package/dist/commands/skills.d.ts +31 -0
  53. package/dist/commands/skills.d.ts.map +1 -0
  54. package/dist/commands/skills.js +314 -0
  55. package/dist/commands/skills.js.map +1 -0
  56. package/dist/commands/status.d.ts +2 -0
  57. package/dist/commands/status.d.ts.map +1 -0
  58. package/dist/commands/status.js +127 -0
  59. package/dist/commands/status.js.map +1 -0
  60. package/dist/commands/synopsis.d.ts +10 -0
  61. package/dist/commands/synopsis.d.ts.map +1 -0
  62. package/dist/commands/synopsis.js +277 -0
  63. package/dist/commands/synopsis.js.map +1 -0
  64. package/dist/commands/update.d.ts +10 -0
  65. package/dist/commands/update.d.ts.map +1 -0
  66. package/dist/commands/update.js +165 -0
  67. package/dist/commands/update.js.map +1 -0
  68. package/dist/commands/voice.d.ts +410 -0
  69. package/dist/commands/voice.d.ts.map +1 -0
  70. package/dist/commands/voice.js +4763 -0
  71. package/dist/commands/voice.js.map +1 -0
  72. package/dist/index.d.ts +9 -0
  73. package/dist/index.d.ts.map +1 -0
  74. package/dist/index.js +512 -0
  75. package/dist/index.js.map +1 -0
  76. package/dist/mcp/context-hub-mcp.d.ts +11 -0
  77. package/dist/mcp/context-hub-mcp.d.ts.map +1 -0
  78. package/dist/mcp/context-hub-mcp.js +548 -0
  79. package/dist/mcp/context-hub-mcp.js.map +1 -0
  80. package/dist/telegram/voice.d.ts +146 -0
  81. package/dist/telegram/voice.d.ts.map +1 -0
  82. package/dist/telegram/voice.js +351 -0
  83. package/dist/telegram/voice.js.map +1 -0
  84. package/dist/types/skills.d.ts +44 -0
  85. package/dist/types/skills.d.ts.map +1 -0
  86. package/dist/types/skills.js +5 -0
  87. package/dist/types/skills.js.map +1 -0
  88. package/dist/ui/banner.d.ts +18 -0
  89. package/dist/ui/banner.d.ts.map +1 -0
  90. package/dist/ui/banner.js +323 -0
  91. package/dist/ui/banner.js.map +1 -0
  92. package/dist/ui/index.d.ts +8 -0
  93. package/dist/ui/index.d.ts.map +1 -0
  94. package/dist/ui/index.js +8 -0
  95. package/dist/ui/index.js.map +1 -0
  96. package/dist/ui/prompts.d.ts +52 -0
  97. package/dist/ui/prompts.d.ts.map +1 -0
  98. package/dist/ui/prompts.js +72 -0
  99. package/dist/ui/prompts.js.map +1 -0
  100. package/dist/ui/theme.d.ts +82 -0
  101. package/dist/ui/theme.d.ts.map +1 -0
  102. package/dist/ui/theme.js +142 -0
  103. package/dist/ui/theme.js.map +1 -0
  104. package/dist/utils/auth-guard.d.ts +66 -0
  105. package/dist/utils/auth-guard.d.ts.map +1 -0
  106. package/dist/utils/auth-guard.js +348 -0
  107. package/dist/utils/auth-guard.js.map +1 -0
  108. package/dist/utils/ensure-project.d.ts +11 -0
  109. package/dist/utils/ensure-project.d.ts.map +1 -0
  110. package/dist/utils/ensure-project.js +70 -0
  111. package/dist/utils/ensure-project.js.map +1 -0
  112. package/dist/utils/git.d.ts +73 -0
  113. package/dist/utils/git.d.ts.map +1 -0
  114. package/dist/utils/git.js +219 -0
  115. package/dist/utils/git.js.map +1 -0
  116. package/dist/utils/github-auth.d.ts +54 -0
  117. package/dist/utils/github-auth.d.ts.map +1 -0
  118. package/dist/utils/github-auth.js +375 -0
  119. package/dist/utils/github-auth.js.map +1 -0
  120. package/dist/utils/github-repo.d.ts +30 -0
  121. package/dist/utils/github-repo.d.ts.map +1 -0
  122. package/dist/utils/github-repo.js +219 -0
  123. package/dist/utils/github-repo.js.map +1 -0
  124. package/dist/utils/platform-auth.d.ts +81 -0
  125. package/dist/utils/platform-auth.d.ts.map +1 -0
  126. package/dist/utils/platform-auth.js +191 -0
  127. package/dist/utils/platform-auth.js.map +1 -0
  128. package/dist/utils/project-config.d.ts +43 -0
  129. package/dist/utils/project-config.d.ts.map +1 -0
  130. package/dist/utils/project-config.js +97 -0
  131. package/dist/utils/project-config.js.map +1 -0
  132. package/dist/utils/skill-registry.d.ts +49 -0
  133. package/dist/utils/skill-registry.d.ts.map +1 -0
  134. package/dist/utils/skill-registry.js +192 -0
  135. package/dist/utils/skill-registry.js.map +1 -0
  136. package/dist/utils/wallet.d.ts +62 -0
  137. package/dist/utils/wallet.d.ts.map +1 -0
  138. package/dist/utils/wallet.js +252 -0
  139. package/dist/utils/wallet.js.map +1 -0
  140. package/dist/utils/x402-client.d.ts +86 -0
  141. package/dist/utils/x402-client.d.ts.map +1 -0
  142. package/dist/utils/x402-client.js +265 -0
  143. package/dist/utils/x402-client.js.map +1 -0
  144. package/package.json +76 -0
  145. package/scripts/postinstall.js +116 -0
  146. package/scripts/test-onboarding.sh +121 -0
  147. package/scripts/voice-start.sh +128 -0
  148. package/scripts/voice-stop.sh +33 -0
  149. package/template/.claude/settings.json +92 -0
  150. package/template/.claude/skills/agent-browser/SKILL.md +116 -0
  151. package/template/.claude/skills/brand-architect/SKILL.md +240 -0
  152. package/template/.claude/skills/brand-architect/config.yaml +137 -0
  153. package/template/.claude/skills/campaign-hud/config.yaml +112 -0
  154. package/template/.claude/skills/content-creator/SKILL.md +294 -0
  155. package/template/.claude/skills/debug/MULTI_AGENT.md +360 -0
  156. package/template/.claude/skills/debug/SKILL.md +549 -0
  157. package/template/.claude/skills/fly-deploy/SKILL.md +676 -0
  158. package/template/.claude/skills/founder-video/SKILL.md +467 -0
  159. package/template/.claude/skills/hud/SKILL.md +157 -0
  160. package/template/.claude/skills/ralph-tui/SKILL.md +210 -0
  161. package/template/.claude/skills/react-best-practices/AGENTS.md +2249 -0
  162. package/template/.claude/skills/react-best-practices/README.md +123 -0
  163. package/template/.claude/skills/react-best-practices/SKILL.md +125 -0
  164. package/template/.claude/skills/react-best-practices/metadata.json +15 -0
  165. package/template/.claude/skills/react-best-practices/rules/_sections.md +46 -0
  166. package/template/.claude/skills/react-best-practices/rules/_template.md +28 -0
  167. package/template/.claude/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  168. package/template/.claude/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
  169. package/template/.claude/skills/react-best-practices/rules/async-api-routes.md +38 -0
  170. package/template/.claude/skills/react-best-practices/rules/async-defer-await.md +80 -0
  171. package/template/.claude/skills/react-best-practices/rules/async-dependencies.md +36 -0
  172. package/template/.claude/skills/react-best-practices/rules/async-parallel.md +28 -0
  173. package/template/.claude/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  174. package/template/.claude/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  175. package/template/.claude/skills/react-best-practices/rules/bundle-conditional.md +31 -0
  176. package/template/.claude/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  177. package/template/.claude/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  178. package/template/.claude/skills/react-best-practices/rules/bundle-preload.md +50 -0
  179. package/template/.claude/skills/react-best-practices/rules/client-event-listeners.md +74 -0
  180. package/template/.claude/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
  181. package/template/.claude/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
  182. package/template/.claude/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
  183. package/template/.claude/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
  184. package/template/.claude/skills/react-best-practices/rules/js-cache-storage.md +70 -0
  185. package/template/.claude/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
  186. package/template/.claude/skills/react-best-practices/rules/js-early-exit.md +50 -0
  187. package/template/.claude/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
  188. package/template/.claude/skills/react-best-practices/rules/js-index-maps.md +37 -0
  189. package/template/.claude/skills/react-best-practices/rules/js-length-check-first.md +49 -0
  190. package/template/.claude/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
  191. package/template/.claude/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
  192. package/template/.claude/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  193. package/template/.claude/skills/react-best-practices/rules/rendering-activity.md +26 -0
  194. package/template/.claude/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  195. package/template/.claude/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
  196. package/template/.claude/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
  197. package/template/.claude/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  198. package/template/.claude/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  199. package/template/.claude/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
  200. package/template/.claude/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
  201. package/template/.claude/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
  202. package/template/.claude/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
  203. package/template/.claude/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  204. package/template/.claude/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  205. package/template/.claude/skills/react-best-practices/rules/rerender-memo.md +44 -0
  206. package/template/.claude/skills/react-best-practices/rules/rerender-transitions.md +40 -0
  207. package/template/.claude/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
  208. package/template/.claude/skills/react-best-practices/rules/server-cache-lru.md +41 -0
  209. package/template/.claude/skills/react-best-practices/rules/server-cache-react.md +26 -0
  210. package/template/.claude/skills/react-best-practices/rules/server-parallel-fetching.md +79 -0
  211. package/template/.claude/skills/react-best-practices/rules/server-serialization.md +38 -0
  212. package/template/.claude/skills/remotion-best-practices/SKILL.md +43 -0
  213. package/template/.claude/skills/remotion-best-practices/rules/3d.md +86 -0
  214. package/template/.claude/skills/remotion-best-practices/rules/animations.md +29 -0
  215. package/template/.claude/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
  216. package/template/.claude/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
  217. package/template/.claude/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +108 -0
  218. package/template/.claude/skills/remotion-best-practices/rules/assets.md +78 -0
  219. package/template/.claude/skills/remotion-best-practices/rules/audio.md +172 -0
  220. package/template/.claude/skills/remotion-best-practices/rules/calculate-metadata.md +104 -0
  221. package/template/.claude/skills/remotion-best-practices/rules/can-decode.md +75 -0
  222. package/template/.claude/skills/remotion-best-practices/rules/charts.md +58 -0
  223. package/template/.claude/skills/remotion-best-practices/rules/compositions.md +146 -0
  224. package/template/.claude/skills/remotion-best-practices/rules/display-captions.md +126 -0
  225. package/template/.claude/skills/remotion-best-practices/rules/extract-frames.md +229 -0
  226. package/template/.claude/skills/remotion-best-practices/rules/fonts.md +152 -0
  227. package/template/.claude/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
  228. package/template/.claude/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
  229. package/template/.claude/skills/remotion-best-practices/rules/get-video-duration.md +58 -0
  230. package/template/.claude/skills/remotion-best-practices/rules/gifs.md +138 -0
  231. package/template/.claude/skills/remotion-best-practices/rules/images.md +130 -0
  232. package/template/.claude/skills/remotion-best-practices/rules/import-srt-captions.md +67 -0
  233. package/template/.claude/skills/remotion-best-practices/rules/lottie.md +68 -0
  234. package/template/.claude/skills/remotion-best-practices/rules/measuring-dom-nodes.md +35 -0
  235. package/template/.claude/skills/remotion-best-practices/rules/measuring-text.md +143 -0
  236. package/template/.claude/skills/remotion-best-practices/rules/sequencing.md +106 -0
  237. package/template/.claude/skills/remotion-best-practices/rules/tailwind.md +11 -0
  238. package/template/.claude/skills/remotion-best-practices/rules/text-animations.md +20 -0
  239. package/template/.claude/skills/remotion-best-practices/rules/timing.md +179 -0
  240. package/template/.claude/skills/remotion-best-practices/rules/transcribe-captions.md +19 -0
  241. package/template/.claude/skills/remotion-best-practices/rules/transitions.md +122 -0
  242. package/template/.claude/skills/remotion-best-practices/rules/trimming.md +53 -0
  243. package/template/.claude/skills/remotion-best-practices/rules/videos.md +171 -0
  244. package/template/.claude/skills/search/SKILL.md +220 -0
  245. package/template/.claude/skills/spec/SKILL.md +377 -0
  246. package/template/.claude/skills/startup/SKILL.md +310 -0
  247. package/template/.claude/skills/web-architect/SKILL.md +309 -0
  248. package/template/.claude/skills/x-algorithm/SKILL.md +305 -0
  249. package/template/.jfl/config.json +8 -0
  250. package/template/.mcp.json +11 -0
  251. package/template/CLAUDE.md +960 -0
  252. package/template/content/.gitkeep +0 -0
  253. package/template/context-hub +3 -0
  254. package/template/knowledge/BRAND_BRIEF.md +124 -0
  255. package/template/knowledge/BRAND_DECISIONS.md +168 -0
  256. package/template/knowledge/NARRATIVE.md +114 -0
  257. package/template/knowledge/ROADMAP.md +128 -0
  258. package/template/knowledge/THESIS.md +108 -0
  259. package/template/knowledge/VISION.md +74 -0
  260. package/template/knowledge/VOICE_AND_TONE.md +146 -0
  261. package/template/previews/.gitkeep +0 -0
  262. package/template/scripts/session/auto-commit.sh +245 -0
  263. package/template/scripts/session/auto-merge.sh +325 -0
  264. package/template/scripts/session/jfl-doctor.sh +587 -0
  265. package/template/scripts/session/session-end.sh +194 -0
  266. package/template/scripts/session/session-init.sh +163 -0
  267. package/template/scripts/session/session-sync.sh +167 -0
  268. package/template/scripts/session/test-context-preservation.sh +160 -0
  269. package/template/skills/agent-browser/SKILL.md +116 -0
  270. package/template/skills/brand-architect/SKILL.md +240 -0
  271. package/template/skills/brand-architect/config.yaml +137 -0
  272. package/template/skills/campaign-hud/config.yaml +112 -0
  273. package/template/skills/content-creator/SKILL.md +294 -0
  274. package/template/skills/debug/MULTI_AGENT.md +360 -0
  275. package/template/skills/debug/SKILL.md +549 -0
  276. package/template/skills/fly-deploy/SKILL.md +676 -0
  277. package/template/skills/founder-video/SKILL.md +467 -0
  278. package/template/skills/hud/SKILL.md +204 -0
  279. package/template/skills/ralph-tui/SKILL.md +210 -0
  280. package/template/skills/react-best-practices/AGENTS.md +2249 -0
  281. package/template/skills/react-best-practices/README.md +123 -0
  282. package/template/skills/react-best-practices/SKILL.md +125 -0
  283. package/template/skills/react-best-practices/metadata.json +15 -0
  284. package/template/skills/react-best-practices/rules/_sections.md +46 -0
  285. package/template/skills/react-best-practices/rules/_template.md +28 -0
  286. package/template/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  287. package/template/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
  288. package/template/skills/react-best-practices/rules/async-api-routes.md +38 -0
  289. package/template/skills/react-best-practices/rules/async-defer-await.md +80 -0
  290. package/template/skills/react-best-practices/rules/async-dependencies.md +36 -0
  291. package/template/skills/react-best-practices/rules/async-parallel.md +28 -0
  292. package/template/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  293. package/template/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  294. package/template/skills/react-best-practices/rules/bundle-conditional.md +31 -0
  295. package/template/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  296. package/template/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  297. package/template/skills/react-best-practices/rules/bundle-preload.md +50 -0
  298. package/template/skills/react-best-practices/rules/client-event-listeners.md +74 -0
  299. package/template/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
  300. package/template/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
  301. package/template/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
  302. package/template/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
  303. package/template/skills/react-best-practices/rules/js-cache-storage.md +70 -0
  304. package/template/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
  305. package/template/skills/react-best-practices/rules/js-early-exit.md +50 -0
  306. package/template/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
  307. package/template/skills/react-best-practices/rules/js-index-maps.md +37 -0
  308. package/template/skills/react-best-practices/rules/js-length-check-first.md +49 -0
  309. package/template/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
  310. package/template/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
  311. package/template/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  312. package/template/skills/react-best-practices/rules/rendering-activity.md +26 -0
  313. package/template/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  314. package/template/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
  315. package/template/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
  316. package/template/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  317. package/template/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  318. package/template/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
  319. package/template/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
  320. package/template/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
  321. package/template/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
  322. package/template/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  323. package/template/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  324. package/template/skills/react-best-practices/rules/rerender-memo.md +44 -0
  325. package/template/skills/react-best-practices/rules/rerender-transitions.md +40 -0
  326. package/template/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
  327. package/template/skills/react-best-practices/rules/server-cache-lru.md +41 -0
  328. package/template/skills/react-best-practices/rules/server-cache-react.md +26 -0
  329. package/template/skills/react-best-practices/rules/server-parallel-fetching.md +79 -0
  330. package/template/skills/react-best-practices/rules/server-serialization.md +38 -0
  331. package/template/skills/remotion-best-practices/SKILL.md +43 -0
  332. package/template/skills/remotion-best-practices/rules/3d.md +86 -0
  333. package/template/skills/remotion-best-practices/rules/animations.md +29 -0
  334. package/template/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
  335. package/template/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
  336. package/template/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +108 -0
  337. package/template/skills/remotion-best-practices/rules/assets.md +78 -0
  338. package/template/skills/remotion-best-practices/rules/audio.md +172 -0
  339. package/template/skills/remotion-best-practices/rules/calculate-metadata.md +104 -0
  340. package/template/skills/remotion-best-practices/rules/can-decode.md +75 -0
  341. package/template/skills/remotion-best-practices/rules/charts.md +58 -0
  342. package/template/skills/remotion-best-practices/rules/compositions.md +146 -0
  343. package/template/skills/remotion-best-practices/rules/display-captions.md +126 -0
  344. package/template/skills/remotion-best-practices/rules/extract-frames.md +229 -0
  345. package/template/skills/remotion-best-practices/rules/fonts.md +152 -0
  346. package/template/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
  347. package/template/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
  348. package/template/skills/remotion-best-practices/rules/get-video-duration.md +58 -0
  349. package/template/skills/remotion-best-practices/rules/gifs.md +138 -0
  350. package/template/skills/remotion-best-practices/rules/images.md +130 -0
  351. package/template/skills/remotion-best-practices/rules/import-srt-captions.md +67 -0
  352. package/template/skills/remotion-best-practices/rules/lottie.md +68 -0
  353. package/template/skills/remotion-best-practices/rules/measuring-dom-nodes.md +35 -0
  354. package/template/skills/remotion-best-practices/rules/measuring-text.md +143 -0
  355. package/template/skills/remotion-best-practices/rules/sequencing.md +106 -0
  356. package/template/skills/remotion-best-practices/rules/tailwind.md +11 -0
  357. package/template/skills/remotion-best-practices/rules/text-animations.md +20 -0
  358. package/template/skills/remotion-best-practices/rules/timing.md +179 -0
  359. package/template/skills/remotion-best-practices/rules/transcribe-captions.md +19 -0
  360. package/template/skills/remotion-best-practices/rules/transitions.md +122 -0
  361. package/template/skills/remotion-best-practices/rules/trimming.md +53 -0
  362. package/template/skills/remotion-best-practices/rules/videos.md +171 -0
  363. package/template/skills/search/SKILL.md +220 -0
  364. package/template/skills/spec/SKILL.md +377 -0
  365. package/template/skills/startup/SKILL.md +310 -0
  366. package/template/skills/web-architect/SKILL.md +309 -0
  367. package/template/skills/x-algorithm/SKILL.md +305 -0
  368. package/template/suggestions/.gitkeep +0 -0
  369. package/template/templates/QUICKSTART_SKILL_TO_PRODUCT.md +242 -0
  370. package/template/templates/brand/BRAND_BRIEF.md +124 -0
  371. package/template/templates/brand/BRAND_DECISIONS.md +168 -0
  372. package/template/templates/brand/BRAND_GUIDELINES.md +251 -0
  373. package/template/templates/brand/VOICE_AND_TONE.md +146 -0
  374. package/template/templates/brand/global.css +240 -0
  375. package/template/templates/collaboration/CONTRIBUTOR.md +74 -0
  376. package/template/templates/collaboration/CRM.md +97 -0
  377. package/template/templates/collaboration/TASKS.md +83 -0
  378. package/template/templates/strategic/NARRATIVE.md +114 -0
  379. package/template/templates/strategic/ROADMAP.md +128 -0
  380. package/template/templates/strategic/THESIS.md +108 -0
  381. package/template/templates/strategic/VISION.md +74 -0
@@ -0,0 +1,323 @@
1
+ /**
2
+ * JFL Banner & Taglines
3
+ * Beautiful ASCII art banner with rotating taglines (Clawdbot-style)
4
+ */
5
+ import chalk from "chalk";
6
+ import { theme, colors, getTerminalWidth, center } from "./theme.js";
7
+ // ============================================================================
8
+ // ASCII BANNER (Clawdbot-style with block characters)
9
+ // ============================================================================
10
+ // Box-drawing style "GTM" with "JUST*LAUNCH" subtitle
11
+ const BANNER_ART = [
12
+ " ██████╗ ████████╗███╗ ███╗",
13
+ " ██╔════╝ ╚══██╔══╝████╗ ████║",
14
+ " ██║ ███╗ ██║ ██╔████╔██║",
15
+ " ██║ ██║ ██║ ██║╚██╔╝██║",
16
+ " ╚██████╔╝ ██║ ██║ ╚═╝ ██║",
17
+ " ╚═════╝ ╚═╝ ╚═╝ ╚═╝",
18
+ " ",
19
+ " 🚀 JUST * LAUNCH 🚀 ",
20
+ ];
21
+ // Simpler version for medium terminals
22
+ const BANNER_MEDIUM = [
23
+ " ██████╗ ████████╗███╗ ███╗",
24
+ " ██╔════╝ ╚══██╔══╝████╗ ████║",
25
+ " ██║ ███╗ ██║ ██╔████╔██║",
26
+ " ██║ ██║ ██║ ██║╚██╔╝██║",
27
+ " ╚██████╔╝ ██║ ██║ ╚═╝ ██║",
28
+ " ╚═════╝ ╚═╝ ╚═╝ ╚═╝",
29
+ " ",
30
+ " 🚀 JUST * LAUNCH 🚀 ",
31
+ ];
32
+ // Compact for narrow terminals
33
+ const BANNER_COMPACT = [
34
+ " ██████╗ ████████╗███╗ ███╗",
35
+ "██╔════╝ ╚══██╔══╝████╗ ████║",
36
+ "██║ ███╗ ██║ ██╔████╔██║",
37
+ "╚██████╔╝ ██║ ██║ ╚═╝ ██║",
38
+ " ╚═════╝ ╚═╝ ╚═╝ ╚═╝",
39
+ " ",
40
+ " 🚀 JUST * LAUNCH 🚀 ",
41
+ ];
42
+ // Minimal fallback
43
+ const BANNER_MINIMAL = "🚀 JFL — Just Fucking Launch";
44
+ // ============================================================================
45
+ // TAGLINES (70+ like Clawdbot)
46
+ // ============================================================================
47
+ const TAGLINES = [
48
+ // Core philosophy
49
+ "Ship it or it didn't happen.",
50
+ "Your context layer for shipping.",
51
+ "Vision emerges from doing, not declaring.",
52
+ "Stop planning. Start shipping.",
53
+ "The best launch is the one that happens.",
54
+ "Context compounds. Ship daily.",
55
+ "Ideas are cheap. Execution is everything.",
56
+ "Built different. Ships different.",
57
+ // Motivational
58
+ "Less roadmap, more road.",
59
+ "Your MVP is ready when you are.",
60
+ "Perfect is the enemy of shipped.",
61
+ "Launch first. Iterate forever.",
62
+ "The market doesn't care about your Notion.",
63
+ "Features ship. Decks don't.",
64
+ "Momentum > perfection.",
65
+ "Your competition shipped while you were planning.",
66
+ "The best time to launch was yesterday. The second best is now.",
67
+ "Shipped beats perfect every single time.",
68
+ "Nobody ever got funded by a roadmap alone.",
69
+ // Technical / Dev humor
70
+ "AI-powered shipping.",
71
+ "From zero to shipped.",
72
+ "Claude Code's best friend.",
73
+ "GTM on autopilot.",
74
+ "git push origin main && celebrate",
75
+ "We ship on Fridays. Assert dominance.",
76
+ "Your TODO list, automated.",
77
+ "Less JIRA, more shipped.",
78
+ "Prod is the best QA environment.",
79
+ "Works on my machine → Works in production.",
80
+ "The only standup that matters is the one where you shipped.",
81
+ "Agile, but like... actually agile.",
82
+ // Cheeky
83
+ "Because 'next quarter' is not a date.",
84
+ "We don't do beta.",
85
+ "README-driven development.",
86
+ "The only vaporware is the one you don't ship.",
87
+ "Funded by impatience.",
88
+ "Moving fast, breaking nothing.",
89
+ "Your pitch deck is not a product.",
90
+ "Stealth mode is just fear with better branding.",
91
+ "Traction > Slideware.",
92
+ "The market doesn't wait for your feelings.",
93
+ "Launch anxiety is just excitement wearing a mask.",
94
+ "Your competitors don't have a \"launch committee\".",
95
+ "Analysis paralysis is the enemy of progress.",
96
+ "Ship now, apologize never.",
97
+ "Done is better than perfect. Shipped is better than done.",
98
+ // Startup culture
99
+ "Zero to one, one commit at a time.",
100
+ "Your users want the feature, not the spec.",
101
+ "Build in public, ship in peace.",
102
+ "The lean startup, but make it leaner.",
103
+ "PMF is a verb, not a milestone.",
104
+ "Iterate until it hurts, then iterate more.",
105
+ "Feedback loops > focus groups.",
106
+ "Launch small, dream big, ship constantly.",
107
+ "Revenue is the ultimate validation.",
108
+ "Growth hacking is just shipping with analytics.",
109
+ // Meta / Self-aware
110
+ "I can't write your code, but I can make sure it ships.",
111
+ "Your context, my context, our context.",
112
+ "Less planning docs, more doing docs.",
113
+ "Strategy is what happens after you ship.",
114
+ "Press enter and find out.",
115
+ "Your keyboard's best friend.",
116
+ "Making founders dangerous since 2026.",
117
+ "Because your co-founder is tired of your excuses.",
118
+ "The bot that believes in you (and your deploy button).",
119
+ ];
120
+ // Holiday-specific taglines
121
+ const HOLIDAY_TAGLINES = {
122
+ "new-year": [
123
+ "New year, new ship date. This time it's real.",
124
+ "2026: The year you actually launch.",
125
+ "Resolution: Ship more, plan less.",
126
+ ],
127
+ halloween: [
128
+ "The scariest thing is not launching.",
129
+ "Don't be afraid to ship.",
130
+ "Bugs are temporary. Not shipping is forever.",
131
+ ],
132
+ christmas: [
133
+ "The best gift is a shipped product.",
134
+ "'Tis the season to deploy.",
135
+ "All I want for Christmas is a production URL.",
136
+ ],
137
+ thanksgiving: [
138
+ "Grateful for that deploy button.",
139
+ "Thanks for shipping.",
140
+ ],
141
+ "july-4": [
142
+ "Independence from feature creep.",
143
+ "Freedom to ship.",
144
+ ],
145
+ friday: [
146
+ "Deploy on Friday. Assert dominance.",
147
+ "TGIF: Thank God It's Finally shipped.",
148
+ ],
149
+ };
150
+ function getActiveHoliday() {
151
+ const now = new Date();
152
+ const month = now.getMonth() + 1; // 1-12
153
+ const day = now.getDate();
154
+ const dayOfWeek = now.getDay(); // 0 = Sunday
155
+ // Check specific dates
156
+ if (month === 1 && day <= 7) {
157
+ return { name: "new-year", taglines: HOLIDAY_TAGLINES["new-year"] };
158
+ }
159
+ if (month === 10 && day >= 25 && day <= 31) {
160
+ return { name: "halloween", taglines: HOLIDAY_TAGLINES["halloween"] };
161
+ }
162
+ if (month === 12 && day >= 20 && day <= 26) {
163
+ return { name: "christmas", taglines: HOLIDAY_TAGLINES["christmas"] };
164
+ }
165
+ if (month === 11 && day >= 22 && day <= 28) {
166
+ return { name: "thanksgiving", taglines: HOLIDAY_TAGLINES["thanksgiving"] };
167
+ }
168
+ if (month === 7 && day >= 1 && day <= 4) {
169
+ return { name: "july-4", taglines: HOLIDAY_TAGLINES["july-4"] };
170
+ }
171
+ // Friday special (10% chance)
172
+ if (dayOfWeek === 5 && Math.random() < 0.1) {
173
+ return { name: "friday", taglines: HOLIDAY_TAGLINES["friday"] };
174
+ }
175
+ return null;
176
+ }
177
+ // ============================================================================
178
+ // BANNER FUNCTIONS
179
+ // ============================================================================
180
+ function pickRandom(arr) {
181
+ return arr[Math.floor(Math.random() * arr.length)];
182
+ }
183
+ export function getTagline() {
184
+ const holiday = getActiveHoliday();
185
+ if (holiday) {
186
+ return pickRandom(holiday.taglines);
187
+ }
188
+ return pickRandom(TAGLINES);
189
+ }
190
+ export function getBannerArt() {
191
+ const width = getTerminalWidth();
192
+ if (width >= 50) {
193
+ return BANNER_ART;
194
+ }
195
+ else if (width >= 40) {
196
+ return BANNER_MEDIUM;
197
+ }
198
+ else if (width >= 35) {
199
+ return BANNER_COMPACT;
200
+ }
201
+ return [BANNER_MINIMAL];
202
+ }
203
+ // Color a character based on what it is (Clawdbot-style)
204
+ function colorChar(ch) {
205
+ if (ch === "█")
206
+ return chalk.hex(colors.accent)(ch); // Bright gold for solid blocks
207
+ if (ch === "░")
208
+ return chalk.hex(colors.accentDim)(ch); // Dim gold for shade
209
+ if (ch === "▀" || ch === "▄")
210
+ return chalk.hex(colors.accentSoft)(ch); // Orange for half-blocks
211
+ // Box-drawing characters (╗╔═║╚╝╣) → gold accent
212
+ if ("╗╔═║╚╝╣╩╦╠╬".includes(ch))
213
+ return chalk.hex(colors.accent)(ch);
214
+ if (ch === "🚀")
215
+ return ch; // Keep emoji as-is
216
+ return chalk.hex(colors.dim)(ch); // Dim for other chars
217
+ }
218
+ // Color a whole line of ASCII art
219
+ function colorLine(line) {
220
+ // Special handling for the tagline/slogan line
221
+ if (line.includes("🚀") && (line.includes("SHIP") || line.includes("JFL") || line.includes("LAUNCH"))) {
222
+ // Extract the text between rockets
223
+ const match = line.match(/^(\s*)(🚀\s*)(.+?)(\s*🚀)(\s*)$/);
224
+ if (match) {
225
+ const [, leadingSpace, leftRocket, text, rightRocket, trailingSpace] = match;
226
+ return (chalk.hex(colors.dim)(leadingSpace) +
227
+ leftRocket +
228
+ chalk.hex(colors.accentSoft)(text) +
229
+ rightRocket +
230
+ chalk.hex(colors.dim)(trailingSpace));
231
+ }
232
+ }
233
+ // Color each character
234
+ return Array.from(line).map(colorChar).join("");
235
+ }
236
+ export function renderBanner(options = {}) {
237
+ const { version, tagline = getTagline(), showTagline = true, centered = true, } = options;
238
+ const width = getTerminalWidth();
239
+ const lines = [];
240
+ // Get appropriate banner art
241
+ const artLines = getBannerArt();
242
+ const isMinimal = artLines.length === 1 && artLines[0] === BANNER_MINIMAL;
243
+ if (isMinimal) {
244
+ // Minimal banner for very narrow terminals
245
+ const versionStr = version ? ` v${version}` : "";
246
+ lines.push("");
247
+ lines.push(theme.accentBold(`🚀 JFL${versionStr}`) + theme.dim(" — Just Fucking Launch"));
248
+ if (showTagline) {
249
+ lines.push(theme.soft(`"${tagline}"`));
250
+ }
251
+ lines.push("");
252
+ }
253
+ else {
254
+ // Full ASCII art banner
255
+ lines.push("");
256
+ // Color and center each line
257
+ for (const line of artLines) {
258
+ const coloredLine = colorLine(line);
259
+ lines.push(centered ? center(coloredLine, width) : coloredLine);
260
+ }
261
+ lines.push("");
262
+ // Version line (smaller, below art)
263
+ if (version) {
264
+ const versionLine = theme.dim(`v${version}`);
265
+ lines.push(centered ? center(versionLine, width) : versionLine);
266
+ }
267
+ // Tagline
268
+ if (showTagline) {
269
+ const taglineFormatted = theme.soft(`"${tagline}"`);
270
+ lines.push(centered ? center(taglineFormatted, width) : taglineFormatted);
271
+ }
272
+ lines.push("");
273
+ }
274
+ return lines.join("\n");
275
+ }
276
+ // ============================================================================
277
+ // QUICK ACCESS
278
+ // ============================================================================
279
+ export function showBanner(version) {
280
+ console.log(renderBanner({ version }));
281
+ }
282
+ // One-liner status banner (for after commands)
283
+ export function showStatus(message) {
284
+ console.log(`\n${theme.accent("🚀")} ${theme.text(message)}\n`);
285
+ }
286
+ // Section header
287
+ export function showSection(title) {
288
+ const width = Math.min(getTerminalWidth(), 60);
289
+ console.log("");
290
+ console.log(theme.accentBold(title));
291
+ console.log(theme.dimmer("─".repeat(width)));
292
+ }
293
+ // ============================================================================
294
+ // HOW IT WORKS NOTICE (Clawdbot-style)
295
+ // ============================================================================
296
+ export function showHowItWorksNotice() {
297
+ const width = Math.min(getTerminalWidth(), 70);
298
+ console.log("");
299
+ console.log(theme.accentBold("How JFL Works"));
300
+ console.log(theme.dimmer("─".repeat(width)));
301
+ console.log("");
302
+ console.log(theme.text("JFL creates isolated work sessions that sync automatically:"));
303
+ console.log("");
304
+ console.log(theme.success(" ✓") + theme.text(" Your session runs in its own workspace (git worktree)"));
305
+ console.log(theme.success(" ✓") + theme.text(" Changes auto-commit every 2 minutes (never lose work)"));
306
+ console.log(theme.success(" ✓") + theme.text(" Context compounds across sessions (journal + knowledge docs)"));
307
+ console.log(theme.success(" ✓") + theme.text(" Multiple teammates can work in parallel (see who's active)"));
308
+ console.log(theme.success(" ✓") + theme.text(" Works with any AI (Claude Code, Clawdbot, Aider, etc.)"));
309
+ console.log("");
310
+ console.log(theme.dimmer("Your AI agent can:"));
311
+ console.log(theme.dim(" • Read/write files in your project"));
312
+ console.log(theme.dim(" • Run git commands (isolated to your session)"));
313
+ console.log(theme.dim(" • Execute bash commands"));
314
+ console.log(theme.dim(" • Search and modify code"));
315
+ console.log("");
316
+ console.log(theme.dimmer("Safety features:"));
317
+ console.log(theme.dim(" • All work happens in isolated branches"));
318
+ console.log(theme.dim(" • Auto-commit backs up constantly"));
319
+ console.log(theme.dim(" • Easy to review changes before merging"));
320
+ console.log(theme.dim(" • Team presence shows overlap warnings"));
321
+ console.log("");
322
+ }
323
+ //# sourceMappingURL=banner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/ui/banner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * JFL UI Module
3
+ * Re-exports all UI components for easy importing
4
+ */
5
+ export * from "./theme.js";
6
+ export * from "./banner.js";
7
+ export * from "./prompts.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * JFL UI Module
3
+ * Re-exports all UI components for easy importing
4
+ */
5
+ export * from "./theme.js";
6
+ export * from "./banner.js";
7
+ export * from "./prompts.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * JFL Prompts - Wrapper around @clack/prompts with JFL styling
3
+ */
4
+ import * as clack from "@clack/prompts";
5
+ export declare function intro(version?: string): void;
6
+ export declare function outro(message: string): void;
7
+ export declare function note(message: string, title?: string): void;
8
+ export declare function cancel(message?: string): void;
9
+ export declare function spinner(): ReturnType<typeof clack.spinner>;
10
+ export declare function text(opts: {
11
+ message: string;
12
+ placeholder?: string;
13
+ defaultValue?: string;
14
+ validate?: (value: string) => string | undefined;
15
+ }): Promise<string | symbol>;
16
+ export declare function select<T>(opts: {
17
+ message: string;
18
+ options: {
19
+ value: T;
20
+ label: string;
21
+ hint?: string;
22
+ }[];
23
+ initialValue?: T;
24
+ }): Promise<T | symbol>;
25
+ export declare function confirm(opts: {
26
+ message: string;
27
+ initialValue?: boolean;
28
+ }): Promise<boolean | symbol>;
29
+ export declare function multiselect<T>(opts: {
30
+ message: string;
31
+ options: {
32
+ value: T;
33
+ label: string;
34
+ hint?: string;
35
+ }[];
36
+ required?: boolean;
37
+ initialValues?: T[];
38
+ }): Promise<T[] | symbol>;
39
+ export declare function password(opts: {
40
+ message: string;
41
+ mask?: string;
42
+ validate?: (value: string) => string | undefined;
43
+ }): Promise<string | symbol>;
44
+ export declare function isCancel(value: unknown): value is symbol;
45
+ export declare function log(message: string): void;
46
+ export declare function logStep(message: string): void;
47
+ export declare function logSuccess(message: string): void;
48
+ export declare function logWarning(message: string): void;
49
+ export declare function logError(message: string): void;
50
+ export declare function logInfo(message: string): void;
51
+ export { clack };
52
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/ui/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AAQvC,wBAAgB,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAE5C;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAE1D;AAED,wBAAgB,MAAM,CAAC,OAAO,GAAE,MAAoB,GAAG,IAAI,CAE1D;AAGD,wBAAgB,OAAO,IAAI,UAAU,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,CAE1D;AAMD,wBAAsB,IAAI,CAAC,IAAI,EAAE;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAA;CACjD,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAE3B;AAED,wBAAsB,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE;IACpC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE;QAAE,KAAK,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACrD,YAAY,CAAC,EAAE,CAAC,CAAA;CACjB,GAAG,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,CAEtB;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,GAAG,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,CAE5B;AAED,wBAAsB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE;IACzC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE;QAAE,KAAK,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACrD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,aAAa,CAAC,EAAE,CAAC,EAAE,CAAA;CACpB,GAAG,OAAO,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,CAExB;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAA;CACjD,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAE3B;AAMD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AAED,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEzC;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C;AAMD,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * JFL Prompts - Wrapper around @clack/prompts with JFL styling
3
+ */
4
+ import * as clack from "@clack/prompts";
5
+ import { theme } from "./theme.js";
6
+ import { renderBanner } from "./banner.js";
7
+ // ============================================================================
8
+ // STYLED WRAPPERS
9
+ // ============================================================================
10
+ export function intro(version) {
11
+ console.log(renderBanner({ version }));
12
+ }
13
+ export function outro(message) {
14
+ clack.outro(theme.success("✓") + " " + theme.text(message));
15
+ }
16
+ export function note(message, title) {
17
+ clack.note(message, title);
18
+ }
19
+ export function cancel(message = "Cancelled") {
20
+ clack.cancel(theme.dim(message));
21
+ }
22
+ // Spinner with JFL styling
23
+ export function spinner() {
24
+ return clack.spinner();
25
+ }
26
+ // ============================================================================
27
+ // PROMPTS - Re-export with simpler types
28
+ // ============================================================================
29
+ export async function text(opts) {
30
+ return clack.text(opts);
31
+ }
32
+ export async function select(opts) {
33
+ return clack.select(opts);
34
+ }
35
+ export async function confirm(opts) {
36
+ return clack.confirm(opts);
37
+ }
38
+ export async function multiselect(opts) {
39
+ return clack.multiselect(opts);
40
+ }
41
+ export async function password(opts) {
42
+ return clack.password(opts);
43
+ }
44
+ // ============================================================================
45
+ // UTILITIES
46
+ // ============================================================================
47
+ export function isCancel(value) {
48
+ return clack.isCancel(value);
49
+ }
50
+ export function log(message) {
51
+ clack.log.message(message);
52
+ }
53
+ export function logStep(message) {
54
+ clack.log.step(message);
55
+ }
56
+ export function logSuccess(message) {
57
+ clack.log.success(message);
58
+ }
59
+ export function logWarning(message) {
60
+ clack.log.warn(message);
61
+ }
62
+ export function logError(message) {
63
+ clack.log.error(message);
64
+ }
65
+ export function logInfo(message) {
66
+ clack.log.info(message);
67
+ }
68
+ // ============================================================================
69
+ // RE-EXPORT clack for advanced usage
70
+ // ============================================================================
71
+ export { clack };
72
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/ui/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,MAAM,UAAU,KAAK,CAAC,OAAgB;IACpC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;AACxC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,OAAe;IACnC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;AAC7D,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAe,EAAE,KAAc;IAClD,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,UAAkB,WAAW;IAClD,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;AAClC,CAAC;AAED,2BAA2B;AAC3B,MAAM,UAAU,OAAO;IACrB,OAAO,KAAK,CAAC,OAAO,EAAE,CAAA;AACxB,CAAC;AAED,+EAA+E;AAC/E,yCAAyC;AACzC,+EAA+E;AAE/E,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAK1B;IACC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAI,IAI/B;IACC,OAAO,KAAK,CAAC,MAAM,CAAC,IAA0C,CAAwB,CAAA;AACxF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAG7B;IACC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAI,IAKpC;IACC,OAAO,KAAK,CAAC,WAAW,CAAC,IAA+C,CAA0B,CAAA;AACpG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAI9B;IACC,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;AAC7B,CAAC;AAED,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,OAAe;IACjC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,OAAe;IACrC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAAe;IACtC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,OAAe;IACrC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACzB,CAAC;AAED,+EAA+E;AAC/E,qCAAqC;AACrC,+EAA+E;AAE/E,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * JFL Theme System
3
+ * Consistent colors and styling across the CLI
4
+ */
5
+ export declare const colors: {
6
+ accent: string;
7
+ accentSoft: string;
8
+ accentDim: string;
9
+ text: string;
10
+ textSoft: string;
11
+ dim: string;
12
+ dimmer: string;
13
+ success: string;
14
+ error: string;
15
+ warning: string;
16
+ info: string;
17
+ rocket: string;
18
+ ship: string;
19
+ code: string;
20
+ bgDark: string;
21
+ bgCard: string;
22
+ };
23
+ export declare const theme: {
24
+ text: (s: string) => string;
25
+ soft: (s: string) => string;
26
+ dim: (s: string) => string;
27
+ dimmer: (s: string) => string;
28
+ accent: (s: string) => string;
29
+ accentSoft: (s: string) => string;
30
+ accentBold: (s: string) => string;
31
+ success: (s: string) => string;
32
+ error: (s: string) => string;
33
+ warning: (s: string) => string;
34
+ info: (s: string) => string;
35
+ rocket: (s: string) => string;
36
+ ship: (s: string) => string;
37
+ code: (s: string) => string;
38
+ bold: import("chalk").ChalkInstance;
39
+ italic: import("chalk").ChalkInstance;
40
+ underline: import("chalk").ChalkInstance;
41
+ check: string;
42
+ cross: string;
43
+ dot: string;
44
+ arrow: string;
45
+ };
46
+ export declare const symbols: {
47
+ success: string;
48
+ error: string;
49
+ warning: string;
50
+ info: string;
51
+ spinner: string[];
52
+ dots: string[];
53
+ bullet: string;
54
+ arrow: string;
55
+ arrowRight: string;
56
+ line: string;
57
+ corner: string;
58
+ tee: string;
59
+ pipe: string;
60
+ rocket: string;
61
+ ship: string;
62
+ fire: string;
63
+ star: string;
64
+ sparkle: string;
65
+ };
66
+ export declare const box: {
67
+ topLeft: string;
68
+ topRight: string;
69
+ bottomLeft: string;
70
+ bottomRight: string;
71
+ horizontal: string;
72
+ vertical: string;
73
+ teeRight: string;
74
+ teeLeft: string;
75
+ heavyHorizontal: string;
76
+ heavyVertical: string;
77
+ };
78
+ export declare function drawBox(content: string[], width?: number): string;
79
+ export declare function getTerminalWidth(): number;
80
+ export declare function center(text: string, width?: number): string;
81
+ export declare function hr(char?: string, width?: number): string;
82
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/ui/theme.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;CA0BlB,CAAA;AAMD,eAAO,MAAM,KAAK;cAEN,MAAM;cACN,MAAM;aACP,MAAM;gBACH,MAAM;gBAGN,MAAM;oBACF,MAAM;oBACN,MAAM;iBAGT,MAAM;eACR,MAAM;iBACJ,MAAM;cACT,MAAM;gBAGJ,MAAM;cACR,MAAM;cACN,MAAM;;;;;;;;CAYjB,CAAA;AAMD,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;CA0BnB,CAAA;AAMD,eAAO,MAAM,GAAG;;;;;;;;;;;CAaf,CAAA;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAejE;AAYD,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAGD,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAK3D;AAGD,wBAAgB,EAAE,CAAC,IAAI,SAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAGrD"}