jfl 0.4.3 → 0.5.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 (428) hide show
  1. package/README.md +15 -5
  2. package/dist/commands/context-hub.d.ts.map +1 -1
  3. package/dist/commands/context-hub.js +818 -39
  4. package/dist/commands/context-hub.js.map +1 -1
  5. package/dist/commands/eval.d.ts +1 -1
  6. package/dist/commands/eval.d.ts.map +1 -1
  7. package/dist/commands/eval.js +192 -1
  8. package/dist/commands/eval.js.map +1 -1
  9. package/dist/commands/findings.d.ts +6 -0
  10. package/dist/commands/findings.d.ts.map +1 -0
  11. package/dist/commands/findings.js +203 -0
  12. package/dist/commands/findings.js.map +1 -0
  13. package/dist/commands/hud.d.ts.map +1 -1
  14. package/dist/commands/hud.js +47 -9
  15. package/dist/commands/hud.js.map +1 -1
  16. package/dist/commands/ide.d.ts +27 -0
  17. package/dist/commands/ide.d.ts.map +1 -0
  18. package/dist/commands/ide.js +546 -0
  19. package/dist/commands/ide.js.map +1 -0
  20. package/dist/commands/onboard.d.ts.map +1 -1
  21. package/dist/commands/onboard.js +212 -2
  22. package/dist/commands/onboard.js.map +1 -1
  23. package/dist/commands/openclaw.d.ts +3 -0
  24. package/dist/commands/openclaw.d.ts.map +1 -1
  25. package/dist/commands/openclaw.js +76 -2
  26. package/dist/commands/openclaw.js.map +1 -1
  27. package/dist/commands/peter.d.ts +3 -0
  28. package/dist/commands/peter.d.ts.map +1 -1
  29. package/dist/commands/peter.js +1218 -2
  30. package/dist/commands/peter.js.map +1 -1
  31. package/dist/commands/pi-fleet.d.ts +18 -0
  32. package/dist/commands/pi-fleet.d.ts.map +1 -0
  33. package/dist/commands/pi-fleet.js +382 -0
  34. package/dist/commands/pi-fleet.js.map +1 -0
  35. package/dist/commands/pi.d.ts.map +1 -1
  36. package/dist/commands/pi.js +18 -3
  37. package/dist/commands/pi.js.map +1 -1
  38. package/dist/commands/scope.d.ts.map +1 -1
  39. package/dist/commands/scope.js +90 -1
  40. package/dist/commands/scope.js.map +1 -1
  41. package/dist/commands/services.d.ts.map +1 -1
  42. package/dist/commands/services.js +18 -0
  43. package/dist/commands/services.js.map +1 -1
  44. package/dist/commands/status.d.ts.map +1 -1
  45. package/dist/commands/status.js +22 -4
  46. package/dist/commands/status.js.map +1 -1
  47. package/dist/commands/viz.d.ts.map +1 -1
  48. package/dist/commands/viz.js +417 -0
  49. package/dist/commands/viz.js.map +1 -1
  50. package/dist/dashboard-static/assets/index-B6b867Pv.js +121 -0
  51. package/dist/dashboard-static/assets/index-Y4BrqxV-.css +1 -0
  52. package/dist/dashboard-static/index.html +2 -2
  53. package/dist/index.js +228 -62
  54. package/dist/index.js.map +1 -1
  55. package/dist/lib/agent-config.d.ts +52 -0
  56. package/dist/lib/agent-config.d.ts.map +1 -0
  57. package/dist/lib/agent-config.js +231 -0
  58. package/dist/lib/agent-config.js.map +1 -0
  59. package/dist/lib/agent-generator.d.ts +10 -0
  60. package/dist/lib/agent-generator.d.ts.map +1 -1
  61. package/dist/lib/agent-generator.js +64 -10
  62. package/dist/lib/agent-generator.js.map +1 -1
  63. package/dist/lib/agent-session.d.ts +104 -0
  64. package/dist/lib/agent-session.d.ts.map +1 -0
  65. package/dist/lib/agent-session.js +627 -0
  66. package/dist/lib/agent-session.js.map +1 -0
  67. package/dist/lib/eval-snapshot.d.ts +47 -0
  68. package/dist/lib/eval-snapshot.d.ts.map +1 -0
  69. package/dist/lib/eval-snapshot.js +315 -0
  70. package/dist/lib/eval-snapshot.js.map +1 -0
  71. package/dist/lib/eval-store.d.ts +5 -0
  72. package/dist/lib/eval-store.d.ts.map +1 -1
  73. package/dist/lib/eval-store.js +33 -3
  74. package/dist/lib/eval-store.js.map +1 -1
  75. package/dist/lib/findings-engine.d.ts +51 -0
  76. package/dist/lib/findings-engine.d.ts.map +1 -0
  77. package/dist/lib/findings-engine.js +338 -0
  78. package/dist/lib/findings-engine.js.map +1 -0
  79. package/dist/lib/flow-engine.d.ts +8 -0
  80. package/dist/lib/flow-engine.d.ts.map +1 -1
  81. package/dist/lib/flow-engine.js +84 -2
  82. package/dist/lib/flow-engine.js.map +1 -1
  83. package/dist/lib/hub-client.d.ts +1 -0
  84. package/dist/lib/hub-client.d.ts.map +1 -1
  85. package/dist/lib/hub-client.js +33 -6
  86. package/dist/lib/hub-client.js.map +1 -1
  87. package/dist/lib/ide-panes.d.ts +58 -0
  88. package/dist/lib/ide-panes.d.ts.map +1 -0
  89. package/dist/lib/ide-panes.js +508 -0
  90. package/dist/lib/ide-panes.js.map +1 -0
  91. package/dist/lib/memory-db.js +4 -4
  92. package/dist/lib/memory-db.js.map +1 -1
  93. package/dist/lib/memory-indexer.d.ts.map +1 -1
  94. package/dist/lib/memory-indexer.js +3 -0
  95. package/dist/lib/memory-indexer.js.map +1 -1
  96. package/dist/lib/memory-search.d.ts +148 -4
  97. package/dist/lib/memory-search.d.ts.map +1 -1
  98. package/dist/lib/memory-search.js +496 -58
  99. package/dist/lib/memory-search.js.map +1 -1
  100. package/dist/lib/meta-orchestrator.d.ts +104 -0
  101. package/dist/lib/meta-orchestrator.d.ts.map +1 -0
  102. package/dist/lib/meta-orchestrator.js +373 -0
  103. package/dist/lib/meta-orchestrator.js.map +1 -0
  104. package/dist/lib/peer-agent-generator.d.ts.map +1 -1
  105. package/dist/lib/peer-agent-generator.js +43 -19
  106. package/dist/lib/peer-agent-generator.js.map +1 -1
  107. package/dist/lib/policy-head.d.ts +25 -0
  108. package/dist/lib/policy-head.d.ts.map +1 -0
  109. package/dist/lib/policy-head.js +136 -0
  110. package/dist/lib/policy-head.js.map +1 -0
  111. package/dist/lib/replay-buffer.d.ts +93 -0
  112. package/dist/lib/replay-buffer.d.ts.map +1 -0
  113. package/dist/lib/replay-buffer.js +302 -0
  114. package/dist/lib/replay-buffer.js.map +1 -0
  115. package/dist/lib/sentinel-rl.d.ts +97 -0
  116. package/dist/lib/sentinel-rl.d.ts.map +1 -0
  117. package/dist/lib/sentinel-rl.js +430 -0
  118. package/dist/lib/sentinel-rl.js.map +1 -0
  119. package/dist/lib/session-lock.d.ts +61 -0
  120. package/dist/lib/session-lock.d.ts.map +1 -0
  121. package/dist/lib/session-lock.js +438 -0
  122. package/dist/lib/session-lock.js.map +1 -0
  123. package/dist/lib/stratus-client.d.ts +1 -0
  124. package/dist/lib/stratus-client.d.ts.map +1 -1
  125. package/dist/lib/stratus-client.js +24 -2
  126. package/dist/lib/stratus-client.js.map +1 -1
  127. package/dist/lib/telemetry-agent-v2.d.ts +128 -0
  128. package/dist/lib/telemetry-agent-v2.d.ts.map +1 -0
  129. package/dist/lib/telemetry-agent-v2.js +1042 -0
  130. package/dist/lib/telemetry-agent-v2.js.map +1 -0
  131. package/dist/lib/telemetry-agent.d.ts.map +1 -1
  132. package/dist/lib/telemetry-agent.js +27 -6
  133. package/dist/lib/telemetry-agent.js.map +1 -1
  134. package/dist/lib/telemetry-digest.d.ts.map +1 -1
  135. package/dist/lib/telemetry-digest.js +27 -5
  136. package/dist/lib/telemetry-digest.js.map +1 -1
  137. package/dist/lib/telemetry.d.ts.map +1 -1
  138. package/dist/lib/telemetry.js +29 -4
  139. package/dist/lib/telemetry.js.map +1 -1
  140. package/dist/lib/text-preprocessing.d.ts +83 -0
  141. package/dist/lib/text-preprocessing.d.ts.map +1 -0
  142. package/dist/lib/text-preprocessing.js +261 -0
  143. package/dist/lib/text-preprocessing.js.map +1 -0
  144. package/dist/lib/training-buffer.d.ts +86 -0
  145. package/dist/lib/training-buffer.d.ts.map +1 -0
  146. package/dist/lib/training-buffer.js +139 -0
  147. package/dist/lib/training-buffer.js.map +1 -0
  148. package/dist/lib/tuple-miner.d.ts +30 -0
  149. package/dist/lib/tuple-miner.d.ts.map +1 -0
  150. package/dist/lib/tuple-miner.js +427 -0
  151. package/dist/lib/tuple-miner.js.map +1 -0
  152. package/dist/lib/vm-backend.d.ts +72 -0
  153. package/dist/lib/vm-backend.d.ts.map +1 -0
  154. package/dist/lib/vm-backend.js +175 -0
  155. package/dist/lib/vm-backend.js.map +1 -0
  156. package/dist/lib/workspace/backend.d.ts +53 -0
  157. package/dist/lib/workspace/backend.d.ts.map +1 -0
  158. package/dist/lib/workspace/backend.js +37 -0
  159. package/dist/lib/workspace/backend.js.map +1 -0
  160. package/dist/lib/workspace/cmux-adapter.d.ts +46 -0
  161. package/dist/lib/workspace/cmux-adapter.d.ts.map +1 -0
  162. package/dist/lib/workspace/cmux-adapter.js +261 -0
  163. package/dist/lib/workspace/cmux-adapter.js.map +1 -0
  164. package/dist/lib/workspace/data-pipeline.d.ts +35 -0
  165. package/dist/lib/workspace/data-pipeline.d.ts.map +1 -0
  166. package/dist/lib/workspace/data-pipeline.js +463 -0
  167. package/dist/lib/workspace/data-pipeline.js.map +1 -0
  168. package/dist/lib/workspace/engine.d.ts +64 -0
  169. package/dist/lib/workspace/engine.d.ts.map +1 -0
  170. package/dist/lib/workspace/engine.js +397 -0
  171. package/dist/lib/workspace/engine.js.map +1 -0
  172. package/dist/lib/workspace/notifications.d.ts +14 -0
  173. package/dist/lib/workspace/notifications.d.ts.map +1 -0
  174. package/dist/lib/workspace/notifications.js +41 -0
  175. package/dist/lib/workspace/notifications.js.map +1 -0
  176. package/dist/lib/workspace/surface-registry.d.ts +49 -0
  177. package/dist/lib/workspace/surface-registry.d.ts.map +1 -0
  178. package/dist/lib/workspace/surface-registry.js +217 -0
  179. package/dist/lib/workspace/surface-registry.js.map +1 -0
  180. package/dist/lib/workspace/surface-type.d.ts +153 -0
  181. package/dist/lib/workspace/surface-type.d.ts.map +1 -0
  182. package/dist/lib/workspace/surface-type.js +9 -0
  183. package/dist/lib/workspace/surface-type.js.map +1 -0
  184. package/dist/lib/workspace/surfaces/agent-overview.d.ts +16 -0
  185. package/dist/lib/workspace/surfaces/agent-overview.d.ts.map +1 -0
  186. package/dist/lib/workspace/surfaces/agent-overview.js +116 -0
  187. package/dist/lib/workspace/surfaces/agent-overview.js.map +1 -0
  188. package/dist/lib/workspace/surfaces/agent.d.ts +16 -0
  189. package/dist/lib/workspace/surfaces/agent.d.ts.map +1 -0
  190. package/dist/lib/workspace/surfaces/agent.js +112 -0
  191. package/dist/lib/workspace/surfaces/agent.js.map +1 -0
  192. package/dist/lib/workspace/surfaces/claude.d.ts +15 -0
  193. package/dist/lib/workspace/surfaces/claude.d.ts.map +1 -0
  194. package/dist/lib/workspace/surfaces/claude.js +23 -0
  195. package/dist/lib/workspace/surfaces/claude.js.map +1 -0
  196. package/dist/lib/workspace/surfaces/dashboard.d.ts +21 -0
  197. package/dist/lib/workspace/surfaces/dashboard.d.ts.map +1 -0
  198. package/dist/lib/workspace/surfaces/dashboard.js +32 -0
  199. package/dist/lib/workspace/surfaces/dashboard.js.map +1 -0
  200. package/dist/lib/workspace/surfaces/eval.d.ts +15 -0
  201. package/dist/lib/workspace/surfaces/eval.d.ts.map +1 -0
  202. package/dist/lib/workspace/surfaces/eval.js +42 -0
  203. package/dist/lib/workspace/surfaces/eval.js.map +1 -0
  204. package/dist/lib/workspace/surfaces/event-stream.d.ts +16 -0
  205. package/dist/lib/workspace/surfaces/event-stream.d.ts.map +1 -0
  206. package/dist/lib/workspace/surfaces/event-stream.js +40 -0
  207. package/dist/lib/workspace/surfaces/event-stream.js.map +1 -0
  208. package/dist/lib/workspace/surfaces/flow.d.ts +16 -0
  209. package/dist/lib/workspace/surfaces/flow.d.ts.map +1 -0
  210. package/dist/lib/workspace/surfaces/flow.js +49 -0
  211. package/dist/lib/workspace/surfaces/flow.js.map +1 -0
  212. package/dist/lib/workspace/surfaces/index.d.ts +16 -0
  213. package/dist/lib/workspace/surfaces/index.d.ts.map +1 -0
  214. package/dist/lib/workspace/surfaces/index.js +16 -0
  215. package/dist/lib/workspace/surfaces/index.js.map +1 -0
  216. package/dist/lib/workspace/surfaces/portfolio.d.ts +16 -0
  217. package/dist/lib/workspace/surfaces/portfolio.d.ts.map +1 -0
  218. package/dist/lib/workspace/surfaces/portfolio.js +102 -0
  219. package/dist/lib/workspace/surfaces/portfolio.js.map +1 -0
  220. package/dist/lib/workspace/surfaces/service.d.ts +16 -0
  221. package/dist/lib/workspace/surfaces/service.d.ts.map +1 -0
  222. package/dist/lib/workspace/surfaces/service.js +45 -0
  223. package/dist/lib/workspace/surfaces/service.js.map +1 -0
  224. package/dist/lib/workspace/surfaces/shell.d.ts +15 -0
  225. package/dist/lib/workspace/surfaces/shell.d.ts.map +1 -0
  226. package/dist/lib/workspace/surfaces/shell.js +19 -0
  227. package/dist/lib/workspace/surfaces/shell.js.map +1 -0
  228. package/dist/lib/workspace/surfaces/telemetry.d.ts +16 -0
  229. package/dist/lib/workspace/surfaces/telemetry.d.ts.map +1 -0
  230. package/dist/lib/workspace/surfaces/telemetry.js +48 -0
  231. package/dist/lib/workspace/surfaces/telemetry.js.map +1 -0
  232. package/dist/lib/workspace/surfaces/topology.d.ts +15 -0
  233. package/dist/lib/workspace/surfaces/topology.d.ts.map +1 -0
  234. package/dist/lib/workspace/surfaces/topology.js +19 -0
  235. package/dist/lib/workspace/surfaces/topology.js.map +1 -0
  236. package/dist/lib/workspace/surfaces/training.d.ts +16 -0
  237. package/dist/lib/workspace/surfaces/training.d.ts.map +1 -0
  238. package/dist/lib/workspace/surfaces/training.js +22 -0
  239. package/dist/lib/workspace/surfaces/training.js.map +1 -0
  240. package/dist/lib/workspace/tmux-adapter.d.ts +27 -0
  241. package/dist/lib/workspace/tmux-adapter.d.ts.map +1 -0
  242. package/dist/lib/workspace/tmux-adapter.js +106 -0
  243. package/dist/lib/workspace/tmux-adapter.js.map +1 -0
  244. package/dist/mcp/context-hub-mcp.js +7 -24
  245. package/dist/mcp/context-hub-mcp.js.map +1 -1
  246. package/dist/types/flows.d.ts +2 -0
  247. package/dist/types/flows.d.ts.map +1 -1
  248. package/dist/types/ide.d.ts +49 -0
  249. package/dist/types/ide.d.ts.map +1 -0
  250. package/dist/types/ide.js +5 -0
  251. package/dist/types/ide.js.map +1 -0
  252. package/dist/types/platform-digest.d.ts +228 -0
  253. package/dist/types/platform-digest.d.ts.map +1 -0
  254. package/dist/types/platform-digest.js +5 -0
  255. package/dist/types/platform-digest.js.map +1 -0
  256. package/dist/types/telemetry-digest.d.ts +2 -0
  257. package/dist/types/telemetry-digest.d.ts.map +1 -1
  258. package/dist/utils/ensure-project.d.ts +1 -0
  259. package/dist/utils/ensure-project.d.ts.map +1 -1
  260. package/dist/utils/ensure-project.js +19 -7
  261. package/dist/utils/ensure-project.js.map +1 -1
  262. package/dist/utils/jfl-config.d.ts +1 -0
  263. package/dist/utils/jfl-config.d.ts.map +1 -1
  264. package/dist/utils/jfl-config.js +19 -1
  265. package/dist/utils/jfl-config.js.map +1 -1
  266. package/dist/utils/jfl-paths.d.ts +5 -0
  267. package/dist/utils/jfl-paths.d.ts.map +1 -1
  268. package/dist/utils/jfl-paths.js +25 -3
  269. package/dist/utils/jfl-paths.js.map +1 -1
  270. package/package.json +3 -2
  271. package/packages/pi/AGENTS.md +112 -0
  272. package/packages/pi/extensions/agent-grid.ts +191 -0
  273. package/packages/pi/extensions/agent-names.ts +178 -0
  274. package/packages/pi/extensions/autoresearch.ts +427 -0
  275. package/packages/pi/extensions/bookmarks.ts +85 -0
  276. package/packages/pi/extensions/context.ts +151 -0
  277. package/packages/pi/extensions/crm-tool.ts +61 -0
  278. package/packages/pi/extensions/eval-tool.ts +224 -0
  279. package/packages/pi/extensions/eval.ts +60 -0
  280. package/packages/pi/extensions/footer.ts +239 -0
  281. package/packages/pi/extensions/hud-tool.ts +145 -0
  282. package/packages/pi/extensions/index.ts +392 -0
  283. package/packages/pi/extensions/journal.ts +224 -0
  284. package/packages/pi/extensions/map-bridge.ts +178 -0
  285. package/packages/pi/extensions/memory-tool.ts +68 -0
  286. package/packages/pi/extensions/notifications.ts +73 -0
  287. package/packages/pi/extensions/peter-parker.ts +202 -0
  288. package/packages/pi/extensions/policy-head-tool.ts +276 -0
  289. package/packages/pi/extensions/portfolio-bridge.ts +90 -0
  290. package/packages/pi/extensions/session.ts +90 -0
  291. package/packages/pi/extensions/shortcuts.ts +259 -0
  292. package/packages/pi/extensions/stratus-bridge.ts +115 -0
  293. package/packages/pi/extensions/synopsis-tool.ts +83 -0
  294. package/packages/pi/extensions/tool-renderers.ts +352 -0
  295. package/packages/pi/extensions/training-buffer-tool.ts +368 -0
  296. package/packages/pi/extensions/types.ts +163 -0
  297. package/packages/pi/package-lock.json +346 -0
  298. package/packages/pi/package.json +44 -0
  299. package/packages/pi/skills/agent-browser/SKILL.md +116 -0
  300. package/packages/pi/skills/brand-architect/SKILL.md +240 -0
  301. package/packages/pi/skills/brand-architect/config.yaml +137 -0
  302. package/packages/pi/skills/campaign-hud/config.yaml +112 -0
  303. package/packages/pi/skills/content-creator/SKILL.md +294 -0
  304. package/packages/pi/skills/context/SKILL.md +65 -0
  305. package/packages/pi/skills/debug/MULTI_AGENT.md +360 -0
  306. package/packages/pi/skills/debug/SKILL.md +554 -0
  307. package/packages/pi/skills/end/SKILL.md +1782 -0
  308. package/packages/pi/skills/eval/SKILL.md +75 -0
  309. package/packages/pi/skills/fly-deploy/SKILL.md +676 -0
  310. package/packages/pi/skills/founder-video/SKILL.md +467 -0
  311. package/packages/pi/skills/hud/SKILL.md +160 -0
  312. package/packages/pi/skills/orchestrate/SKILL.md +74 -0
  313. package/packages/pi/skills/pi-agents/SKILL.md +78 -0
  314. package/packages/pi/skills/react-best-practices/AGENTS.md +2249 -0
  315. package/packages/pi/skills/react-best-practices/README.md +123 -0
  316. package/packages/pi/skills/react-best-practices/SKILL.md +125 -0
  317. package/packages/pi/skills/react-best-practices/metadata.json +15 -0
  318. package/packages/pi/skills/react-best-practices/rules/_sections.md +46 -0
  319. package/packages/pi/skills/react-best-practices/rules/_template.md +28 -0
  320. package/packages/pi/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  321. package/packages/pi/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
  322. package/packages/pi/skills/react-best-practices/rules/async-api-routes.md +38 -0
  323. package/packages/pi/skills/react-best-practices/rules/async-defer-await.md +80 -0
  324. package/packages/pi/skills/react-best-practices/rules/async-dependencies.md +36 -0
  325. package/packages/pi/skills/react-best-practices/rules/async-parallel.md +28 -0
  326. package/packages/pi/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  327. package/packages/pi/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  328. package/packages/pi/skills/react-best-practices/rules/bundle-conditional.md +31 -0
  329. package/packages/pi/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  330. package/packages/pi/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  331. package/packages/pi/skills/react-best-practices/rules/bundle-preload.md +50 -0
  332. package/packages/pi/skills/react-best-practices/rules/client-event-listeners.md +74 -0
  333. package/packages/pi/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
  334. package/packages/pi/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
  335. package/packages/pi/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
  336. package/packages/pi/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
  337. package/packages/pi/skills/react-best-practices/rules/js-cache-storage.md +70 -0
  338. package/packages/pi/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
  339. package/packages/pi/skills/react-best-practices/rules/js-early-exit.md +50 -0
  340. package/packages/pi/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
  341. package/packages/pi/skills/react-best-practices/rules/js-index-maps.md +37 -0
  342. package/packages/pi/skills/react-best-practices/rules/js-length-check-first.md +49 -0
  343. package/packages/pi/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
  344. package/packages/pi/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
  345. package/packages/pi/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  346. package/packages/pi/skills/react-best-practices/rules/rendering-activity.md +26 -0
  347. package/packages/pi/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  348. package/packages/pi/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
  349. package/packages/pi/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
  350. package/packages/pi/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  351. package/packages/pi/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  352. package/packages/pi/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
  353. package/packages/pi/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
  354. package/packages/pi/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
  355. package/packages/pi/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
  356. package/packages/pi/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  357. package/packages/pi/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  358. package/packages/pi/skills/react-best-practices/rules/rerender-memo.md +44 -0
  359. package/packages/pi/skills/react-best-practices/rules/rerender-transitions.md +40 -0
  360. package/packages/pi/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
  361. package/packages/pi/skills/react-best-practices/rules/server-cache-lru.md +41 -0
  362. package/packages/pi/skills/react-best-practices/rules/server-cache-react.md +26 -0
  363. package/packages/pi/skills/react-best-practices/rules/server-parallel-fetching.md +79 -0
  364. package/packages/pi/skills/react-best-practices/rules/server-serialization.md +38 -0
  365. package/packages/pi/skills/remotion-best-practices/SKILL.md +43 -0
  366. package/packages/pi/skills/remotion-best-practices/rules/3d.md +86 -0
  367. package/packages/pi/skills/remotion-best-practices/rules/animations.md +29 -0
  368. package/packages/pi/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
  369. package/packages/pi/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
  370. package/packages/pi/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +108 -0
  371. package/packages/pi/skills/remotion-best-practices/rules/assets.md +78 -0
  372. package/packages/pi/skills/remotion-best-practices/rules/audio.md +172 -0
  373. package/packages/pi/skills/remotion-best-practices/rules/calculate-metadata.md +104 -0
  374. package/packages/pi/skills/remotion-best-practices/rules/can-decode.md +75 -0
  375. package/packages/pi/skills/remotion-best-practices/rules/charts.md +58 -0
  376. package/packages/pi/skills/remotion-best-practices/rules/compositions.md +146 -0
  377. package/packages/pi/skills/remotion-best-practices/rules/display-captions.md +126 -0
  378. package/packages/pi/skills/remotion-best-practices/rules/extract-frames.md +229 -0
  379. package/packages/pi/skills/remotion-best-practices/rules/fonts.md +152 -0
  380. package/packages/pi/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
  381. package/packages/pi/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
  382. package/packages/pi/skills/remotion-best-practices/rules/get-video-duration.md +58 -0
  383. package/packages/pi/skills/remotion-best-practices/rules/gifs.md +138 -0
  384. package/packages/pi/skills/remotion-best-practices/rules/images.md +130 -0
  385. package/packages/pi/skills/remotion-best-practices/rules/import-srt-captions.md +67 -0
  386. package/packages/pi/skills/remotion-best-practices/rules/lottie.md +68 -0
  387. package/packages/pi/skills/remotion-best-practices/rules/measuring-dom-nodes.md +35 -0
  388. package/packages/pi/skills/remotion-best-practices/rules/measuring-text.md +143 -0
  389. package/packages/pi/skills/remotion-best-practices/rules/sequencing.md +106 -0
  390. package/packages/pi/skills/remotion-best-practices/rules/tailwind.md +11 -0
  391. package/packages/pi/skills/remotion-best-practices/rules/text-animations.md +20 -0
  392. package/packages/pi/skills/remotion-best-practices/rules/timing.md +179 -0
  393. package/packages/pi/skills/remotion-best-practices/rules/transcribe-captions.md +19 -0
  394. package/packages/pi/skills/remotion-best-practices/rules/transitions.md +122 -0
  395. package/packages/pi/skills/remotion-best-practices/rules/trimming.md +53 -0
  396. package/packages/pi/skills/remotion-best-practices/rules/videos.md +171 -0
  397. package/packages/pi/skills/search/SKILL.md +220 -0
  398. package/packages/pi/skills/spec/SKILL.md +377 -0
  399. package/packages/pi/skills/startup/SKILL.md +315 -0
  400. package/packages/pi/skills/web-architect/SKILL.md +309 -0
  401. package/packages/pi/skills/x-algorithm/SKILL.md +305 -0
  402. package/packages/pi/teams/dev-team.yaml +63 -0
  403. package/packages/pi/teams/gtm-team.yaml +79 -0
  404. package/packages/pi/themes/jfl.theme.json +76 -0
  405. package/packages/pi/tsconfig.json +21 -0
  406. package/scripts/collect-tuples.sh +124 -0
  407. package/scripts/destroy-fleet.sh +37 -0
  408. package/scripts/jfl-ide.sh +48 -0
  409. package/scripts/session/session-cleanup.sh +4 -11
  410. package/scripts/session/session-init.sh +6 -0
  411. package/scripts/session/session-sync.sh +25 -0
  412. package/scripts/setup-branch-protection.sh +106 -0
  413. package/scripts/spawn-fleet.sh +144 -0
  414. package/scripts/train-policy-head.py +434 -0
  415. package/scripts/vm-swarm/README.md +301 -0
  416. package/scripts/vm-swarm/collect-tuples.sh +331 -0
  417. package/scripts/vm-swarm/create-base-template.sh +339 -0
  418. package/scripts/vm-swarm/kill-fleet.sh +204 -0
  419. package/scripts/vm-swarm/monitor-fleet.sh +346 -0
  420. package/scripts/vm-swarm/spawn-fleet.sh +304 -0
  421. package/template/.github/workflows/jfl-eval.yml +105 -8
  422. package/template/.github/workflows/jfl-review.yml +4 -0
  423. package/template/scripts/session/session-end.sh +69 -6
  424. package/template/scripts/session/session-init.sh +55 -30
  425. package/template/scripts/session/session-lock.sh +464 -0
  426. package/template/templates/service-agent/workflows/jfl-eval.yml +19 -0
  427. package/dist/dashboard-static/assets/index-B6kRK9Rq.js +0 -116
  428. package/dist/dashboard-static/assets/index-BpdKJPLu.css +0 -1
@@ -0,0 +1,315 @@
1
+ ---
2
+ name: startup
3
+ description: The startup journey from idea to scale — stage assessment, MVP scoping, launch playbooks, informed by Paul Graham + Garry Tan
4
+ ---
5
+
6
+ # Startup Skill
7
+
8
+ The startup journey from idea to scale, informed by Paul Graham + Garry Tan wisdom.
9
+
10
+ ---
11
+
12
+ ## Philosophy
13
+
14
+ **Vision is emergent.** You don't know what you're building at first. The skill adapts to where you are.
15
+
16
+ **Do things that don't scale.** Early stage is about learning, not efficiency.
17
+
18
+ **Talk to users.** Every week. The answers are in conversations, not spreadsheets.
19
+
20
+ ---
21
+
22
+ ## Commands
23
+
24
+ ```
25
+ /startup # Where am I? What's next?
26
+ /startup stage # Assess current stage from docs
27
+ /startup next # The one thing to do this week
28
+ /startup validate [idea] # PG-style idea critique
29
+ /startup mvp [idea] # Scope to 2-week MVP
30
+ /startup customers # How to find your first 10
31
+ /startup launch # Launch playbook
32
+ /startup fundraise [stage] # Fundraising by stage
33
+ /startup diagnose [problem] # What's actually wrong
34
+ /startup pg [topic] # What would PG say?
35
+ /startup garry [topic] # What would Garry say?
36
+ ```
37
+
38
+ ---
39
+
40
+ ## THE STAGES
41
+
42
+ ### Stage 0: Idea
43
+
44
+ **Goal:** Validate that real people have this problem and will pay to solve it.
45
+
46
+ **Key questions:**
47
+ - Who has this problem? (Be specific—names, not personas)
48
+ - How are they solving it now?
49
+ - Why will they switch to you?
50
+ - What's the insight that makes this work?
51
+
52
+ **PG frameworks:**
53
+ - "How to Get Startup Ideas" - Live in the future, build what's missing
54
+ - "Schlep Blindness" - The best ideas look like work
55
+ - "Organic Startup Ideas" - Build what you need yourself
56
+ - "Frighteningly Ambitious Startup Ideas" - Think bigger
57
+
58
+ **Actions:**
59
+ 1. Talk to 10 potential users this week
60
+ 2. Document their exact words (not your interpretation)
61
+ 3. Find the hair-on-fire problem
62
+
63
+ **Anti-patterns:**
64
+ - Building before talking
65
+ - Asking "would you use this?" (ask about their current behavior)
66
+ - Targeting everyone (niche down)
67
+
68
+ ---
69
+
70
+ ### Stage 1: MVP
71
+
72
+ **Goal:** Build the smallest thing that delivers value to one person.
73
+
74
+ **Key questions:**
75
+ - What's the one thing it needs to do?
76
+ - Can you build it in 2 weeks?
77
+ - Can you describe it in one sentence?
78
+
79
+ **PG frameworks:**
80
+ - "Do Things That Don't Scale" - Manual before automated
81
+ - "The Airbnbs" - Professional photos changed everything
82
+ - "Ramen Profitable" - Survive while you figure it out
83
+ - "Default Alive or Default Dead" - Know which you are
84
+
85
+ **Actions:**
86
+ 1. Cut scope until it hurts
87
+ 2. Ship something this week
88
+ 3. Get it in front of one real user
89
+
90
+ **Anti-patterns:**
91
+ - Building for 6 months before launching
92
+ - Adding features before anyone uses it
93
+ - Waiting until it's "ready"
94
+
95
+ ---
96
+
97
+ ### Stage 2: First Customers
98
+
99
+ **Goal:** Get 5-10 paying customers manually.
100
+
101
+ **Key questions:**
102
+ - Who are the first 10 people who will pay?
103
+ - Can you name them?
104
+ - How will you reach them?
105
+
106
+ **PG frameworks:**
107
+ - "Do Things That Don't Scale" - Recruit users manually
108
+ - "Relentlessly Resourceful" - Find a way or make one
109
+ - "Be Good" - Make something people want
110
+ - "Mean People Fail" - Nice founders win
111
+
112
+ **Garry frameworks:**
113
+ - "Default alive matters" - Grow profitably if you can't raise
114
+ - "Six skills for startup success" - What to develop early
115
+
116
+ **Actions:**
117
+ 1. Make a list of 20 potential customers (names, not categories)
118
+ 2. Reach out to 5 today
119
+ 3. Offer to do it for them manually
120
+
121
+ **Anti-patterns:**
122
+ - Waiting for inbound
123
+ - Mass marketing before product-market fit
124
+ - Discounting instead of learning
125
+
126
+ ---
127
+
128
+ ### Stage 3: Launch
129
+
130
+ **Goal:** Create a moment that gets attention and establishes your position.
131
+
132
+ **Key questions:**
133
+ - What's the story?
134
+ - Who will amplify it?
135
+ - What's the one thing people should remember?
136
+
137
+ **PG frameworks:**
138
+ - "Startup = Growth" - Launch is just the beginning of the curve
139
+ - "How to Convince Investors" - Same principles apply to users
140
+ - "The Submarine" - PR is a game
141
+
142
+ **Actions:**
143
+ 1. Line up 5 people who will share on launch day
144
+ 2. Have a specific, concrete demo
145
+ 3. Ship, don't wait for perfect
146
+
147
+ **Anti-patterns:**
148
+ - Launch as a one-time event (it's a process)
149
+ - Waiting for the "right moment"
150
+ - Announcing without showing
151
+
152
+ ---
153
+
154
+ ### Stage 4: Growth
155
+
156
+ **Goal:** Find repeatable acquisition and scale what works.
157
+
158
+ **Key questions:**
159
+ - What's your growth rate?
160
+ - What's the one channel that's working?
161
+ - Are you default alive?
162
+
163
+ **PG frameworks:**
164
+ - "Startup = Growth" - If you're not growing, you're dying
165
+ - "The Fatal Pinch" - When growth and runway cross
166
+ - "How to Raise Money" - Raise when you don't need it
167
+ - "Founder Mode" - Stay hands-on longer than feels right
168
+
169
+ **Garry frameworks:**
170
+ - "Why startups are growing 5x faster" - AI enables smaller teams
171
+ - "Micromanagement is toxic" - Delegate as you scale
172
+
173
+ **Actions:**
174
+ 1. Measure weekly growth rate
175
+ 2. Double down on what's working
176
+ 3. Kill what isn't
177
+
178
+ **Anti-patterns:**
179
+ - Premature scaling
180
+ - Hiring before product-market fit
181
+ - Multiple channels before one works
182
+
183
+ ---
184
+
185
+ ## DIAGNOSIS FRAMEWORK
186
+
187
+ When something's wrong, find the root cause:
188
+
189
+ | Symptom | Likely Cause | Prescription |
190
+ |---------|--------------|--------------|
191
+ | No users signing up | Distribution problem or wrong audience | Talk to 10 more people, find where they are |
192
+ | Users sign up but don't use | Onboarding or value prop problem | Watch 5 users try it, fix the friction |
193
+ | Users use but don't pay | Pricing or value problem | Ask them what they'd pay for |
194
+ | Users churn | Not solving real problem | Talk to churned users, find why |
195
+ | Can't raise money | Traction or story problem | Focus on customers, not investors |
196
+ | Growing but unprofitable | Unit economics problem | Fix before you scale |
197
+
198
+ ---
199
+
200
+ ## INTEGRATION WITH DOCS
201
+
202
+ The skill reads your docs to understand where you are:
203
+
204
+ ```
205
+ knowledge/VISION.md → EMERGENT = still figuring it out
206
+ → DECLARED = you know what you're building
207
+
208
+ knowledge/CRM.md → Who you're talking to, what's resonating
209
+
210
+ content/articles/ → How you explain it to the world
211
+
212
+ drafts/ → Active outreach, what's working
213
+ ```
214
+
215
+ ---
216
+
217
+ ## KNOWLEDGE BASE
218
+
219
+ ```
220
+ knowledge/startup/
221
+ ├── 0-idea/
222
+ │ ├── HOW_TO_GET_STARTUP_IDEAS.md
223
+ │ ├── SCHLEP_BLINDNESS.md
224
+ │ ├── ORGANIC_STARTUP_IDEAS.md
225
+ │ └── VALIDATION.md
226
+ ├── 1-mvp/
227
+ │ ├── DO_THINGS_THAT_DONT_SCALE.md
228
+ │ ├── RAMEN_PROFITABLE.md
229
+ │ └── SCOPE.md
230
+ ├── 2-customers/
231
+ │ ├── FIRST_10.md
232
+ │ ├── RELENTLESSLY_RESOURCEFUL.md
233
+ │ └── BE_GOOD.md
234
+ ├── 3-launch/
235
+ │ ├── LAUNCH_PLAYBOOK.md
236
+ │ └── STARTUP_EQUALS_GROWTH.md
237
+ ├── 4-growth/
238
+ │ ├── THE_FATAL_PINCH.md
239
+ │ ├── HOW_TO_RAISE_MONEY.md
240
+ │ └── FOUNDER_MODE.md
241
+ └── raw/
242
+ ├── pg/ # All PG essays
243
+ └── garry/ # All Garry content
244
+ ```
245
+
246
+ ---
247
+
248
+ ## QUICK REFERENCE
249
+
250
+ ### The PG Stack
251
+
252
+ 1. **Make something people want** (the only thing that matters)
253
+ 2. **Do things that don't scale** (early stage superpower)
254
+ 3. **Talk to users** (the answers are there)
255
+ 4. **Launch fast** (embarrassingly early)
256
+ 5. **Grow or die** (weekly growth is the metric)
257
+
258
+ ### The Garry Stack
259
+
260
+ 1. **Default alive > default dead**
261
+ 2. **AI enables smaller teams**
262
+ 3. **Delegation > micromanagement**
263
+ 4. **Learn or earn at every job**
264
+ 5. **The best time to start is now**
265
+
266
+ ### Anti-patterns (from "18 Mistakes That Kill Startups")
267
+
268
+ 1. Single founder
269
+ 2. Bad location
270
+ 3. Marginal niche
271
+ 4. Derivative idea
272
+ 5. Obstinacy
273
+ 6. Hiring bad programmers
274
+ 7. Choosing the wrong platform
275
+ 8. Slowness in launching
276
+ 9. Launching too early
277
+ 10. Having no specific user in mind
278
+ 11. Raising too little money
279
+ 12. Spending too much
280
+ 13. Raising too much money
281
+ 14. Poor investor management
282
+ 15. Sacrificing users to (supposed) profit
283
+ 16. Not wanting to get your hands dirty
284
+ 17. Fights between founders
285
+ 18. A half-hearted effort
286
+
287
+ ---
288
+
289
+ ## OUTPUT FILES
290
+
291
+ ```
292
+ outputs/startup/
293
+ ├── assessments/
294
+ │ └── stage-assessment-{date}.md
295
+ ├── ideas/
296
+ │ └── validation-{idea}.md
297
+ ├── mvp/
298
+ │ └── scope-{idea}.md
299
+ └── fundraising/
300
+ └── prep-{stage}.md
301
+ ```
302
+
303
+ ---
304
+
305
+ ## SOURCES
306
+
307
+ - Paul Graham essays: paulgraham.com (200+ essays)
308
+ - Garry Tan: blog.garrytan.com, YC blog, YouTube
309
+ - Y Combinator library: ycombinator.com/library
310
+
311
+ ---
312
+
313
+ *"Make something people want."* — Paul Graham
314
+
315
+ *"At every job you should either learn or earn. Either is fine. Both is best. But if it's neither, quit."* — Garry Tan
@@ -0,0 +1,309 @@
1
+ ---
2
+ name: web-architect
3
+ description: Generate brand assets and audit web code against best practices - CSS, favicons, social images, exports, React/Next.js performance
4
+ ---
5
+
6
+ # Web Architect Skill
7
+
8
+ Implements the brand system by generating all required assets. Also audits web code against best practices.
9
+
10
+ ## Related Skills
11
+
12
+ - **react-best-practices** - React/Next.js performance optimization. Use when building or auditing React sites.
13
+
14
+ ## Capabilities
15
+
16
+ - Generate favicon package (all sizes)
17
+ - Create social assets (OG images, banners, PFP)
18
+ - Build CSS with brand tokens
19
+ - Export SVGs to PNGs
20
+ - Audit asset completeness
21
+ - Update preview files with final assets
22
+
23
+ ## Input Requirements
24
+
25
+ Requires `knowledge/BRAND_DECISIONS.md` with:
26
+ - Selected mark
27
+ - Color palette
28
+ - Typography choices
29
+
30
+ ## Commands
31
+
32
+ ```
33
+ /web-architect # Show status
34
+ /web-architect audit # Check what's missing
35
+ /web-architect implement all # Generate everything
36
+ /web-architect implement css # Generate CSS only
37
+ /web-architect implement favicons # Generate favicon package
38
+ /web-architect implement social # Generate social assets
39
+ /web-architect implement marks # Generate mark size variants
40
+ /web-architect export png # Export all SVGs to PNG
41
+ ```
42
+
43
+ ## Workflow
44
+
45
+ ### Audit
46
+
47
+ ```
48
+ /web-architect audit
49
+
50
+ Checking brand assets...
51
+
52
+ MARKS:
53
+ ├─ [✓] Primary mark selected
54
+ ├─ [✓] Transparent version
55
+ ├─ [ ] Size variants (80, 160, 400)
56
+ └─ [ ] Dark/light variants
57
+
58
+ FAVICONS:
59
+ ├─ [ ] 16px
60
+ ├─ [ ] 32px
61
+ ├─ [ ] 48px
62
+ ├─ [ ] 96px
63
+ ├─ [ ] 180px (Apple Touch)
64
+ ├─ [ ] 192px (Android)
65
+ └─ [ ] 512px (PWA)
66
+
67
+ SOCIAL:
68
+ ├─ [ ] Twitter banner (1500x500)
69
+ ├─ [ ] OG image (1200x630)
70
+ ├─ [ ] Twitter PFP (400x400)
71
+ └─ [ ] Banner size variants
72
+
73
+ CSS:
74
+ ├─ [ ] Color tokens
75
+ ├─ [ ] Typography tokens
76
+ └─ [ ] global.css generated
77
+
78
+ Missing: 18 assets
79
+ Run /web-architect implement all to generate.
80
+ ```
81
+
82
+ ### Implement All
83
+
84
+ ```
85
+ /web-architect implement all
86
+
87
+ Generating brand assets...
88
+
89
+ MARKS:
90
+ ├─ [✓] mark-v3-80-dark.svg
91
+ ├─ [✓] mark-v3-80-light.svg
92
+ ├─ [✓] mark-v3-160-dark.svg
93
+ ├─ [✓] mark-v3-400-dark.svg
94
+ └─ Saved to outputs/svg/mark/
95
+
96
+ FAVICONS:
97
+ ├─ [✓] favicon-16-dark.svg
98
+ ├─ [✓] favicon-32-dark.svg
99
+ ├─ [✓] favicon-48-dark.svg
100
+ ├─ [✓] favicon-96-dark.svg
101
+ ├─ [✓] favicon-180-dark.svg
102
+ ├─ [✓] favicon-192-dark.svg
103
+ ├─ [✓] favicon-512-dark.svg
104
+ └─ Saved to outputs/svg/favicon/
105
+
106
+ SOCIAL:
107
+ ├─ [✓] twitter-banner-sm-1500x500-dark.svg
108
+ ├─ [✓] twitter-banner-md-1500x500-dark.svg
109
+ ├─ [✓] twitter-banner-lg-1500x500-dark.svg
110
+ ├─ [✓] twitter-banner-xl-1500x500-dark.svg
111
+ ├─ [✓] og-default-1200x630-dark.svg
112
+ ├─ [✓] pfp-400-dark.svg
113
+ └─ Saved to outputs/svg/social/
114
+
115
+ CSS:
116
+ ├─ [✓] outputs/css/global.css
117
+ └─ Tokens from BRAND_DECISIONS.md
118
+
119
+ PNG EXPORT:
120
+ ├─ [✓] All SVGs exported to PNG
121
+ └─ Saved to outputs/png/
122
+
123
+ Complete! 24 assets generated.
124
+ ```
125
+
126
+ ## Asset Generation
127
+
128
+ ### Favicons
129
+
130
+ Generate all standard favicon sizes:
131
+
132
+ ```bash
133
+ # Sizes needed
134
+ 16 - Browser tab
135
+ 32 - Browser tab @2x
136
+ 48 - Windows
137
+ 96 - Android Chrome
138
+ 180 - Apple Touch Icon
139
+ 192 - Android Chrome @2x
140
+ 512 - PWA splash
141
+ ```
142
+
143
+ SVG structure:
144
+ ```xml
145
+ <?xml version="1.0" encoding="UTF-8"?>
146
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 {size} {size}">
147
+ <rect width="100%" height="100%" fill="{bg-color}"/>
148
+ <!-- Mark scaled to fit with padding -->
149
+ </svg>
150
+ ```
151
+
152
+ ### Social Assets
153
+
154
+ #### Twitter Banner (1500x500)
155
+ - Box with mark inside
156
+ - Left-aligned with padding
157
+ - Size variants: sm, md, lg, xl
158
+
159
+ #### OG Image (1200x630)
160
+ - Mark centered in box
161
+ - Optional: tagline variant
162
+
163
+ #### PFP (400x400)
164
+ - Square crop
165
+ - Mark centered
166
+ - High contrast
167
+
168
+ ### CSS Generation
169
+
170
+ Read from BRAND_DECISIONS.md and generate:
171
+
172
+ ```css
173
+ :root {
174
+ /* Colors from decisions */
175
+ --brand-bg: {bg};
176
+ --brand-fg: {fg};
177
+ --brand-accent: {accent};
178
+
179
+ /* Typography from decisions */
180
+ --brand-font: {font-stack};
181
+ --brand-font-weight: {weight};
182
+ }
183
+ ```
184
+
185
+ ### PNG Export
186
+
187
+ Use rsvg-convert for all SVG → PNG conversions:
188
+
189
+ ```bash
190
+ # Single file
191
+ rsvg-convert -w {width} -h {height} input.svg -o output.png
192
+
193
+ # Batch export script
194
+ ./scripts/export-pngs.sh
195
+ ```
196
+
197
+ ## File Structure
198
+
199
+ ```
200
+ outputs/
201
+ ├── svg/
202
+ │ ├── mark/
203
+ │ │ ├── mark-v3-transparent.svg
204
+ │ │ ├── mark-v3-80-dark.svg
205
+ │ │ ├── mark-v3-80-light.svg
206
+ │ │ ├── mark-v3-160-dark.svg
207
+ │ │ ├── mark-v3-400-dark.svg
208
+ │ │ └── ...
209
+ │ ├── social/
210
+ │ │ ├── twitter-banner-sm-1500x500-dark.svg
211
+ │ │ ├── twitter-banner-md-1500x500-dark.svg
212
+ │ │ ├── twitter-banner-lg-1500x500-dark.svg
213
+ │ │ ├── twitter-banner-xl-1500x500-dark.svg
214
+ │ │ ├── og-default-1200x630-dark.svg
215
+ │ │ ├── pfp-400-dark.svg
216
+ │ │ └── (light variants)
217
+ │ └── favicon/
218
+ │ ├── favicon-16-dark.svg
219
+ │ ├── favicon-32-dark.svg
220
+ │ └── ...
221
+ ├── png/
222
+ │ ├── mark/
223
+ │ ├── social/
224
+ │ └── favicon/
225
+ └── css/
226
+ └── global.css
227
+ ```
228
+
229
+ ## Naming Conventions
230
+
231
+ ```
232
+ {type}-{variant}-{size}-{theme}.{ext}
233
+
234
+ Examples:
235
+ mark-v3-80-dark.svg
236
+ twitter-banner-xl-1500x500-dark.svg
237
+ og-tagline-1200x630-dark.svg
238
+ favicon-32-dark.png
239
+ ```
240
+
241
+ ## Error Handling
242
+
243
+ ### No Decisions Found
244
+ ```
245
+ No brand decisions found.
246
+
247
+ Run /brand-architect first to:
248
+ 1. Generate mark options
249
+ 2. Select colors and typography
250
+ 3. Record decisions
251
+
252
+ Then run /web-architect implement all.
253
+ ```
254
+
255
+ ### Missing Dependencies
256
+ ```
257
+ rsvg-convert not found.
258
+
259
+ PNG export requires librsvg. Install with:
260
+ brew install librsvg # macOS
261
+ apt install librsvg2-bin # Ubuntu
262
+ ```
263
+
264
+ ### Incomplete Decisions
265
+ ```
266
+ Brand decisions incomplete.
267
+
268
+ Missing:
269
+ - Primary mark selection
270
+ - Color palette
271
+
272
+ Update knowledge/BRAND_DECISIONS.md or run /brand-architect decide.
273
+ ```
274
+
275
+ ---
276
+
277
+ ## Code Auditing
278
+
279
+ ### React/Next.js Projects
280
+
281
+ For React or Next.js sites, use the **react-best-practices** skill:
282
+
283
+ ```
284
+ /web-architect audit react
285
+ ```
286
+
287
+ This runs the Vercel React Best Practices audit covering:
288
+ - Eliminating waterfalls (CRITICAL)
289
+ - Bundle size optimization (CRITICAL)
290
+ - Server-side performance (HIGH)
291
+ - Client-side data fetching (MEDIUM-HIGH)
292
+ - Re-render optimization (MEDIUM)
293
+ - Rendering performance (MEDIUM)
294
+ - JavaScript performance (LOW-MEDIUM)
295
+
296
+ See `skills/react-best-practices/SKILL.md` for full rule reference.
297
+
298
+ ### Static Sites
299
+
300
+ For static HTML sites:
301
+ ```
302
+ /web-architect audit static
303
+ ```
304
+
305
+ Checks:
306
+ - Asset optimization (images, SVGs)
307
+ - CSS best practices
308
+ - Accessibility basics
309
+ - Performance hints