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