@hasna/skills 0.1.61 → 0.1.63

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 (523) hide show
  1. package/README.md +10 -6
  2. package/bin/index.js +14271 -21602
  3. package/bin/mcp.js +3527 -11449
  4. package/bin/migrate.js +53 -3
  5. package/bin/server.js +5140 -2675
  6. package/bin/worker.js +4542 -2129
  7. package/dist/cli/commands/publish.d.ts +2 -0
  8. package/dist/cli/components/App.d.ts +2 -1
  9. package/dist/cli/components/CategorySelect.d.ts +2 -1
  10. package/dist/cli/components/Header.d.ts +2 -1
  11. package/dist/cli/components/InstallProgress.d.ts +2 -1
  12. package/dist/cli/components/SearchView.d.ts +2 -1
  13. package/dist/cli/components/SkillSelect.d.ts +2 -1
  14. package/dist/index.d.ts +4 -1
  15. package/dist/index.js +5094 -13755
  16. package/dist/lib/agent-sync.d.ts +38 -3
  17. package/dist/lib/home-adoption.d.ts +91 -0
  18. package/dist/lib/home-census.d.ts +22 -0
  19. package/dist/lib/home-migration.d.ts +61 -0
  20. package/dist/lib/portable-skills-files.d.ts +21 -1
  21. package/dist/lib/portable-skills-types.d.ts +46 -0
  22. package/dist/lib/pull.d.ts +66 -0
  23. package/dist/lib/remote-client.d.ts +6 -0
  24. package/dist/lib/run-state.d.ts +5 -0
  25. package/dist/lib/skill-bundles.d.ts +54 -0
  26. package/dist/lib/skill-contract.d.ts +35 -0
  27. package/dist/lib/skill-hash.d.ts +77 -0
  28. package/dist/sdk/cancel.d.ts +30 -0
  29. package/dist/sdk/dispatcher.d.ts +40 -0
  30. package/dist/sdk/event-sink.d.ts +2 -0
  31. package/dist/sdk/events.d.ts +79 -0
  32. package/dist/sdk/execution/admission.d.ts +44 -0
  33. package/dist/sdk/execution/dispatchers/e2b.d.ts +17 -0
  34. package/dist/sdk/execution/dispatchers/ecs.d.ts +151 -0
  35. package/dist/sdk/execution/image-profile.d.ts +73 -0
  36. package/dist/sdk/execution/index.d.ts +15 -0
  37. package/dist/sdk/execution/receipts.d.ts +44 -0
  38. package/dist/sdk/execution/state-machine.d.ts +38 -0
  39. package/dist/sdk/execution/storage.d.ts +158 -0
  40. package/dist/sdk/execution/types.d.ts +130 -0
  41. package/dist/sdk/executor.d.ts +17 -0
  42. package/dist/sdk/governance-store.d.ts +156 -0
  43. package/dist/sdk/governance.d.ts +92 -0
  44. package/dist/sdk/index.d.ts +26 -0
  45. package/dist/sdk/index.js +48730 -0
  46. package/dist/sdk/offline.d.ts +16 -0
  47. package/dist/sdk/outputs.d.ts +71 -0
  48. package/dist/sdk/registry.d.ts +28 -0
  49. package/dist/sdk/runs.d.ts +229 -0
  50. package/dist/sdk/server.d.ts +35 -0
  51. package/dist/sdk/spend.d.ts +36 -0
  52. package/dist/sdk/storage.d.ts +25 -0
  53. package/dist/server/app.d.ts +42 -0
  54. package/dist/server/artifact-storage.d.ts +102 -0
  55. package/dist/server/auth.d.ts +5 -0
  56. package/dist/server/config.d.ts +40 -0
  57. package/dist/server/database-url.d.ts +42 -0
  58. package/dist/server/handlers.d.ts +3 -0
  59. package/dist/server/index.d.ts +2 -0
  60. package/dist/server/migrate.d.ts +13 -0
  61. package/dist/server/migrations-dir.d.ts +18 -0
  62. package/dist/server/redaction.d.ts +1 -0
  63. package/dist/server/registry.d.ts +5 -0
  64. package/dist/server/rows.d.ts +23 -0
  65. package/dist/server/skills-api.d.ts +68 -0
  66. package/dist/server/sqlite-store.d.ts +114 -0
  67. package/dist/server/store-fixtures.d.ts +25 -0
  68. package/dist/server/store.d.ts +144 -0
  69. package/dist/server/types.d.ts +242 -0
  70. package/dist/server/worker.d.ts +4 -0
  71. package/dist/storage.js +32 -0
  72. package/docs/skill-standard.md +211 -39
  73. package/migrations/postgres/0003_run_outputs_governance.sql +83 -0
  74. package/migrations/sqlite/0003_run_outputs_governance.sql +58 -0
  75. package/package.json +11 -8
  76. package/schemas/skill.schema.json +181 -0
  77. package/agent-skills/README.md +0 -41
  78. package/agent-skills/fleet-package-rollout/SKILL.md +0 -169
  79. package/agent-skills/inbox/SKILL.md +0 -25
  80. package/agent-skills/inbox/scripts/inbox +0 -109
  81. package/agent-skills/inbox/tests/test_registered_sender_id.sh +0 -92
  82. package/agent-skills/inbox-monitor/SKILL.md +0 -41
  83. package/agent-skills/inbox-monitor/scripts/inbox_monitor.sh +0 -91
  84. package/agent-skills/inbox-monitor/scripts/test_inbox_monitor.sh +0 -71
  85. package/agent-skills/merge-pr/SKILL.md +0 -85
  86. package/agent-skills/merge-pr/references/merge-safety.md +0 -82
  87. package/agent-skills/merge-pr/scripts/merge_pr_guard.py +0 -694
  88. package/agent-skills/merge-pr/scripts/test_merge_pr_guard.py +0 -647
  89. package/agent-skills/merge-pr/tests/fixtures/multi-commit-synthesized.json +0 -28
  90. package/agent-skills/merge-pr/tests/fixtures/trailer-free-provider.json +0 -28
  91. package/agent-skills/skill-goal-execute/SKILL.md +0 -115
  92. package/agent-skills/skill-login/SKILL.md +0 -109
  93. package/agent-skills/skill-project-create/SKILL.md +0 -91
  94. package/agent-skills/skill-publish/SKILL.md +0 -207
  95. package/skills/_common/auth.ts +0 -45
  96. package/skills/_common/http-client.ts +0 -143
  97. package/skills/_common/index.ts +0 -26
  98. package/skills/_common/install.sh +0 -7
  99. package/skills/_common/installer.ts +0 -72
  100. package/skills/_common/skill-install.ts +0 -37
  101. package/skills/_common/vision.ts +0 -374
  102. package/skills/ad-creative-pack/SKILL.md +0 -55
  103. package/skills/ad-creative-pack/package.json +0 -10
  104. package/skills/analyze-data/CLAUDE.md +0 -16
  105. package/skills/analyze-data/SKILL.md +0 -112
  106. package/skills/analyze-data/package.json +0 -23
  107. package/skills/analyze-data/src/analysis.ts +0 -401
  108. package/skills/analyze-data/src/cli.ts +0 -66
  109. package/skills/analyze-data/src/formatters.ts +0 -235
  110. package/skills/analyze-data/src/index.ts +0 -74
  111. package/skills/analyze-data/src/logger.ts +0 -36
  112. package/skills/analyze-data/src/parsers.ts +0 -57
  113. package/skills/analyze-data/src/stats.ts +0 -151
  114. package/skills/analyze-data/src/types.ts +0 -85
  115. package/skills/analyze-data/tsconfig.json +0 -19
  116. package/skills/api-docs-portal/SKILL.md +0 -84
  117. package/skills/api-docs-portal/package.json +0 -35
  118. package/skills/api-docs-portal/src/index.ts +0 -919
  119. package/skills/api-docs-portal/tsconfig.json +0 -17
  120. package/skills/api-test-suite/CLAUDE.md +0 -19
  121. package/skills/api-test-suite/package.json +0 -27
  122. package/skills/api-test-suite/src/index.ts +0 -381
  123. package/skills/api-test-suite/tsconfig.json +0 -10
  124. package/skills/audio-extract/CLAUDE.md +0 -9
  125. package/skills/audio-extract/SKILL.md +0 -73
  126. package/skills/audio-extract/package.json +0 -23
  127. package/skills/audio-extract/src/index.ts +0 -323
  128. package/skills/audio-extract/tsconfig.json +0 -11
  129. package/skills/bio-sequence-tool/CLAUDE.md +0 -19
  130. package/skills/bio-sequence-tool/package.json +0 -27
  131. package/skills/bio-sequence-tool/src/index.ts +0 -85
  132. package/skills/bio-sequence-tool/tsconfig.json +0 -10
  133. package/skills/blog-article/CLAUDE.md +0 -12
  134. package/skills/blog-article/SKILL.md +0 -55
  135. package/skills/blog-article/package.json +0 -10
  136. package/skills/blog-article/tsconfig.json +0 -10
  137. package/skills/brand-assets/SKILL.md +0 -118
  138. package/skills/brand-assets/package.json +0 -35
  139. package/skills/brand-assets/src/cli.ts +0 -155
  140. package/skills/brand-assets/src/constants.ts +0 -8
  141. package/skills/brand-assets/src/extract.ts +0 -236
  142. package/skills/brand-assets/src/index.ts +0 -668
  143. package/skills/brand-assets/src/types.ts +0 -59
  144. package/skills/brand-assets/tsconfig.json +0 -17
  145. package/skills/brand-kit/SKILL.md +0 -54
  146. package/skills/brand-kit/package.json +0 -10
  147. package/skills/businessactivity/CLAUDE.md +0 -176
  148. package/skills/businessactivity/LICENSE +0 -192
  149. package/skills/businessactivity/README.md +0 -287
  150. package/skills/businessactivity/package.json +0 -25
  151. package/skills/businessactivity/scripts/publish.ts +0 -210
  152. package/skills/businessactivity/src/commands/activity.ts +0 -211
  153. package/skills/businessactivity/src/commands/function.ts +0 -227
  154. package/skills/businessactivity/src/commands/owner.ts +0 -193
  155. package/skills/businessactivity/src/commands/profile.ts +0 -121
  156. package/skills/businessactivity/src/commands/responsibility.ts +0 -264
  157. package/skills/businessactivity/src/commands/team.ts +0 -244
  158. package/skills/businessactivity/src/commands/workflow.ts +0 -359
  159. package/skills/businessactivity/src/index.ts +0 -3
  160. package/skills/businessactivity/src/lib/config.ts +0 -167
  161. package/skills/businessactivity/src/lib/output.ts +0 -76
  162. package/skills/businessactivity/src/lib/paths.ts +0 -79
  163. package/skills/businessactivity/src/lib/storage.ts +0 -95
  164. package/skills/businessactivity/src/types/index.ts +0 -86
  165. package/skills/businessactivity/tsconfig.json +0 -29
  166. package/skills/codefix/LICENSE +0 -192
  167. package/skills/codefix/README.md +0 -232
  168. package/skills/codefix/SKILL.md +0 -94
  169. package/skills/codefix/package.json +0 -21
  170. package/skills/codefix/src/fixers/batch.ts +0 -213
  171. package/skills/codefix/src/fixers/detector.ts +0 -160
  172. package/skills/codefix/src/fixers/index.ts +0 -7
  173. package/skills/codefix/src/fixers/runner.ts +0 -522
  174. package/skills/codefix/src/index-local.ts +0 -431
  175. package/skills/codefix/src/index.ts +0 -4
  176. package/skills/codefix/src/types.ts +0 -211
  177. package/skills/codefix/tsconfig.json +0 -15
  178. package/skills/commitpush/SKILL.md +0 -57
  179. package/skills/commitpush/package.json +0 -33
  180. package/skills/commitpush/src/index.ts +0 -34
  181. package/skills/commitpush/tsconfig.json +0 -17
  182. package/skills/commitpushpr/SKILL.md +0 -55
  183. package/skills/commitpushpr/package.json +0 -33
  184. package/skills/commitpushpr/src/index.ts +0 -34
  185. package/skills/commitpushpr/tsconfig.json +0 -17
  186. package/skills/compress-video/CLAUDE.md +0 -9
  187. package/skills/compress-video/SKILL.md +0 -79
  188. package/skills/compress-video/package.json +0 -23
  189. package/skills/compress-video/src/index.ts +0 -473
  190. package/skills/compress-video/tsconfig.json +0 -11
  191. package/skills/contract-review-report/SKILL.md +0 -52
  192. package/skills/contract-review-report/package.json +0 -10
  193. package/skills/customer-feedback-report/SKILL.md +0 -52
  194. package/skills/customer-feedback-report/package.json +0 -10
  195. package/skills/dashboard-builder/CLAUDE.md +0 -19
  196. package/skills/dashboard-builder/package.json +0 -29
  197. package/skills/dashboard-builder/src/index.ts +0 -150
  198. package/skills/dashboard-builder/tsconfig.json +0 -10
  199. package/skills/data-anonymizer/CLAUDE.md +0 -19
  200. package/skills/data-anonymizer/package.json +0 -27
  201. package/skills/data-anonymizer/src/index.ts +0 -183
  202. package/skills/data-anonymizer/tsconfig.json +0 -10
  203. package/skills/database-explorer/CLAUDE.md +0 -19
  204. package/skills/database-explorer/package.json +0 -29
  205. package/skills/database-explorer/src/index.ts +0 -95
  206. package/skills/database-explorer/tsconfig.json +0 -10
  207. package/skills/diff-viewer/CLAUDE.md +0 -19
  208. package/skills/diff-viewer/package.json +0 -30
  209. package/skills/diff-viewer/src/index.ts +0 -164
  210. package/skills/diff-viewer/tsconfig.json +0 -10
  211. package/skills/doc-read/SKILL.md +0 -45
  212. package/skills/doc-read/package.json +0 -29
  213. package/skills/doc-read/src/index.ts +0 -324
  214. package/skills/doc-read/tsconfig.json +0 -8
  215. package/skills/domainpurchase/LICENSE +0 -192
  216. package/skills/domainpurchase/SKILL.md +0 -29
  217. package/skills/domainpurchase/package.json +0 -30
  218. package/skills/domainpurchase/src/index.ts +0 -3
  219. package/skills/domainpurchase/tsconfig.json +0 -21
  220. package/skills/email-sequence/SKILL.md +0 -53
  221. package/skills/email-sequence/package.json +0 -10
  222. package/skills/experiment-power-calculator/CLAUDE.md +0 -19
  223. package/skills/experiment-power-calculator/package.json +0 -29
  224. package/skills/experiment-power-calculator/src/index.ts +0 -86
  225. package/skills/experiment-power-calculator/tsconfig.json +0 -10
  226. package/skills/extract-frames/CLAUDE.md +0 -19
  227. package/skills/extract-frames/package.json +0 -27
  228. package/skills/extract-frames/src/index.ts +0 -616
  229. package/skills/extract-frames/tsconfig.json +0 -10
  230. package/skills/file-organizer/CLAUDE.md +0 -19
  231. package/skills/file-organizer/package.json +0 -27
  232. package/skills/file-organizer/src/index.ts +0 -91
  233. package/skills/file-organizer/tsconfig.json +0 -10
  234. package/skills/folder-tree/CLAUDE.md +0 -19
  235. package/skills/folder-tree/package.json +0 -29
  236. package/skills/folder-tree/src/index.ts +0 -568
  237. package/skills/folder-tree/tsconfig.json +0 -10
  238. package/skills/form-filler/CLAUDE.md +0 -19
  239. package/skills/form-filler/package.json +0 -29
  240. package/skills/form-filler/src/index.ts +0 -81
  241. package/skills/form-filler/tsconfig.json +0 -10
  242. package/skills/generate-api-client/CLAUDE.md +0 -19
  243. package/skills/generate-api-client/package.json +0 -29
  244. package/skills/generate-api-client/src/generator.ts +0 -47
  245. package/skills/generate-api-client/src/index.ts +0 -92
  246. package/skills/generate-api-client/src/logger.ts +0 -34
  247. package/skills/generate-api-client/src/python-generator.ts +0 -245
  248. package/skills/generate-api-client/src/spec-loader.ts +0 -48
  249. package/skills/generate-api-client/src/type-mappers.ts +0 -79
  250. package/skills/generate-api-client/src/types.ts +0 -76
  251. package/skills/generate-api-client/src/typescript-generator.ts +0 -247
  252. package/skills/generate-api-client/tsconfig.json +0 -10
  253. package/skills/generate-chart/CLAUDE.md +0 -19
  254. package/skills/generate-chart/package.json +0 -27
  255. package/skills/generate-chart/src/index.ts +0 -510
  256. package/skills/generate-chart/tsconfig.json +0 -10
  257. package/skills/generate-dockerfile/CLAUDE.md +0 -19
  258. package/skills/generate-dockerfile/package.json +0 -27
  259. package/skills/generate-dockerfile/src/cli.ts +0 -78
  260. package/skills/generate-dockerfile/src/dockerfile-templates.ts +0 -392
  261. package/skills/generate-dockerfile/src/index.ts +0 -81
  262. package/skills/generate-dockerfile/src/logger.ts +0 -30
  263. package/skills/generate-dockerfile/src/project-detection.ts +0 -68
  264. package/skills/generate-dockerfile/src/support-files.ts +0 -171
  265. package/skills/generate-dockerfile/src/types.ts +0 -29
  266. package/skills/generate-dockerfile/tsconfig.json +0 -10
  267. package/skills/generate-env/CLAUDE.md +0 -19
  268. package/skills/generate-env/package.json +0 -29
  269. package/skills/generate-env/src/cli.ts +0 -85
  270. package/skills/generate-env/src/detection.ts +0 -161
  271. package/skills/generate-env/src/env-data.ts +0 -66
  272. package/skills/generate-env/src/generators.ts +0 -240
  273. package/skills/generate-env/src/index.ts +0 -120
  274. package/skills/generate-env/src/runtime.ts +0 -30
  275. package/skills/generate-env/src/types.ts +0 -32
  276. package/skills/generate-env/tsconfig.json +0 -10
  277. package/skills/generate-favicon/CLAUDE.md +0 -19
  278. package/skills/generate-favicon/package.json +0 -29
  279. package/skills/generate-favicon/src/index.ts +0 -421
  280. package/skills/generate-favicon/tsconfig.json +0 -10
  281. package/skills/generate-qrcode/CLAUDE.md +0 -19
  282. package/skills/generate-qrcode/package.json +0 -30
  283. package/skills/generate-qrcode/src/index.ts +0 -584
  284. package/skills/generate-qrcode/tsconfig.json +0 -10
  285. package/skills/generate-resume/CLAUDE.md +0 -19
  286. package/skills/generate-resume/package.json +0 -27
  287. package/skills/generate-resume/src/cli.ts +0 -157
  288. package/skills/generate-resume/src/index.ts +0 -178
  289. package/skills/generate-resume/src/parsers.ts +0 -95
  290. package/skills/generate-resume/src/renderers.ts +0 -538
  291. package/skills/generate-resume/src/security.ts +0 -39
  292. package/skills/generate-resume/src/types.ts +0 -86
  293. package/skills/generate-resume/tsconfig.json +0 -10
  294. package/skills/generate-sitemap/CLAUDE.md +0 -19
  295. package/skills/generate-sitemap/package.json +0 -27
  296. package/skills/generate-sitemap/src/index.ts +0 -626
  297. package/skills/generate-sitemap/tsconfig.json +0 -10
  298. package/skills/gif-maker/CLAUDE.md +0 -19
  299. package/skills/gif-maker/package.json +0 -30
  300. package/skills/gif-maker/src/index.ts +0 -600
  301. package/skills/gif-maker/tsconfig.json +0 -10
  302. package/skills/hook/LICENSE +0 -192
  303. package/skills/hook/README.md +0 -74
  304. package/skills/hook/SKILL.md +0 -85
  305. package/skills/hook/bunfig.toml +0 -5
  306. package/skills/hook/package.json +0 -28
  307. package/skills/hook/src/commands/create.ts +0 -112
  308. package/skills/hook/src/commands/events.ts +0 -37
  309. package/skills/hook/src/commands/validate.ts +0 -117
  310. package/skills/hook/src/index.ts +0 -118
  311. package/skills/hook/src/templates/root.ts +0 -196
  312. package/skills/hook/src/templates/source.ts +0 -647
  313. package/skills/hook/tsconfig.json +0 -18
  314. package/skills/http-server/CLAUDE.md +0 -19
  315. package/skills/http-server/package.json +0 -29
  316. package/skills/http-server/src/index.ts +0 -51
  317. package/skills/http-server/tsconfig.json +0 -10
  318. package/skills/implementation/LICENSE +0 -192
  319. package/skills/implementation/README.md +0 -53
  320. package/skills/implementation/SKILL.md +0 -57
  321. package/skills/implementation/bunfig.toml +0 -5
  322. package/skills/implementation/package.json +0 -28
  323. package/skills/implementation/src/commands/create.ts +0 -187
  324. package/skills/implementation/src/index.ts +0 -62
  325. package/skills/implementation/tsconfig.json +0 -18
  326. package/skills/implementation-plan/CLAUDE.md +0 -19
  327. package/skills/implementation-plan/package.json +0 -29
  328. package/skills/implementation-plan/src/index.ts +0 -520
  329. package/skills/implementation-plan/tsconfig.json +0 -10
  330. package/skills/implementation-todo/CLAUDE.md +0 -19
  331. package/skills/implementation-todo/package.json +0 -29
  332. package/skills/implementation-todo/src/index.ts +0 -429
  333. package/skills/implementation-todo/tsconfig.json +0 -10
  334. package/skills/invoice/.env.example +0 -3
  335. package/skills/invoice/CLAUDE.md +0 -31
  336. package/skills/invoice/LICENSE +0 -192
  337. package/skills/invoice/README.md +0 -70
  338. package/skills/invoice/package.json +0 -26
  339. package/skills/invoice/src/commands/companies.ts +0 -202
  340. package/skills/invoice/src/commands/config.ts +0 -132
  341. package/skills/invoice/src/commands/generate.ts +0 -177
  342. package/skills/invoice/src/commands/invoices.ts +0 -218
  343. package/skills/invoice/src/index.ts +0 -3
  344. package/skills/invoice/src/lib/api.ts +0 -124
  345. package/skills/invoice/src/lib/storage.ts +0 -171
  346. package/skills/invoice/src/types/index.ts +0 -86
  347. package/skills/invoice/src/utils/logger.ts +0 -33
  348. package/skills/invoice/src/utils/paths.ts +0 -25
  349. package/skills/invoice/tsconfig.json +0 -23
  350. package/skills/invoice-reconciliation/SKILL.md +0 -98
  351. package/skills/invoice-reconciliation/package.json +0 -36
  352. package/skills/invoice-reconciliation/src/index.ts +0 -743
  353. package/skills/invoice-reconciliation/tsconfig.json +0 -17
  354. package/skills/landing-page-pack/SKILL.md +0 -55
  355. package/skills/landing-page-pack/package.json +0 -10
  356. package/skills/latex-table-generator/CLAUDE.md +0 -19
  357. package/skills/latex-table-generator/package.json +0 -29
  358. package/skills/latex-table-generator/src/index.ts +0 -113
  359. package/skills/latex-table-generator/tsconfig.json +0 -10
  360. package/skills/logo-design/SKILL.md +0 -94
  361. package/skills/logo-design/package.json +0 -35
  362. package/skills/logo-design/src/cli.ts +0 -132
  363. package/skills/logo-design/src/constants.ts +0 -5
  364. package/skills/logo-design/src/docs.ts +0 -102
  365. package/skills/logo-design/src/geometry.ts +0 -324
  366. package/skills/logo-design/src/index.ts +0 -212
  367. package/skills/logo-design/src/palette.ts +0 -258
  368. package/skills/logo-design/src/types.ts +0 -50
  369. package/skills/logo-design/tsconfig.json +0 -17
  370. package/skills/lorem-generator/CLAUDE.md +0 -19
  371. package/skills/lorem-generator/package.json +0 -29
  372. package/skills/lorem-generator/src/index.ts +0 -59
  373. package/skills/lorem-generator/tsconfig.json +0 -10
  374. package/skills/managemcp/CLAUDE.md +0 -14
  375. package/skills/managemcp/README.md +0 -24
  376. package/skills/managemcp/package.json +0 -16
  377. package/skills/managemcp/src/index.ts +0 -3
  378. package/skills/managemcp/tsconfig.json +0 -27
  379. package/skills/markdown-validator/CLAUDE.md +0 -19
  380. package/skills/markdown-validator/package.json +0 -29
  381. package/skills/markdown-validator/src/index.ts +0 -92
  382. package/skills/markdown-validator/tsconfig.json +0 -10
  383. package/skills/market-research-report/SKILL.md +0 -51
  384. package/skills/market-research-report/package.json +0 -10
  385. package/skills/meeting-pack/SKILL.md +0 -52
  386. package/skills/meeting-pack/package.json +0 -10
  387. package/skills/merge-pdfs/CLAUDE.md +0 -19
  388. package/skills/merge-pdfs/package.json +0 -31
  389. package/skills/merge-pdfs/src/index.ts +0 -427
  390. package/skills/merge-pdfs/tsconfig.json +0 -10
  391. package/skills/migration-plan-pack/SKILL.md +0 -56
  392. package/skills/migration-plan-pack/package.json +0 -10
  393. package/skills/monitor/SKILL.md +0 -69
  394. package/skills/monitor/package.json +0 -33
  395. package/skills/monitor/src/index.ts +0 -34
  396. package/skills/monitor/tsconfig.json +0 -17
  397. package/skills/one-page-website/SKILL.md +0 -128
  398. package/skills/one-page-website/package.json +0 -34
  399. package/skills/one-page-website/src/design.ts +0 -336
  400. package/skills/one-page-website/src/docs.ts +0 -159
  401. package/skills/one-page-website/src/index.ts +0 -357
  402. package/skills/one-page-website/src/page.ts +0 -340
  403. package/skills/one-page-website/src/styles.ts +0 -508
  404. package/skills/one-page-website/src/types.ts +0 -78
  405. package/skills/one-page-website/tsconfig.json +0 -17
  406. package/skills/pdf-generate/CLAUDE.md +0 -19
  407. package/skills/pdf-generate/SKILL.md +0 -86
  408. package/skills/pdf-generate/package.json +0 -21
  409. package/skills/pdf-generate/src/cli.ts +0 -162
  410. package/skills/pdf-generate/src/html.ts +0 -84
  411. package/skills/pdf-generate/src/index.ts +0 -62
  412. package/skills/pdf-generate/src/markdown.ts +0 -27
  413. package/skills/pdf-generate/src/pdf-writer.ts +0 -78
  414. package/skills/pdf-generate/src/runtime.ts +0 -34
  415. package/skills/pdf-generate/src/security.ts +0 -37
  416. package/skills/pdf-generate/src/templates.ts +0 -311
  417. package/skills/pdf-generate/src/types.ts +0 -28
  418. package/skills/pdf-generate/tsconfig.json +0 -16
  419. package/skills/pdf-to-dataset/SKILL.md +0 -88
  420. package/skills/pdf-to-dataset/package.json +0 -37
  421. package/skills/pdf-to-dataset/src/index.ts +0 -790
  422. package/skills/pdf-to-dataset/tsconfig.json +0 -17
  423. package/skills/pdf-to-markdown/SKILL.md +0 -81
  424. package/skills/pdf-to-markdown/package.json +0 -35
  425. package/skills/pdf-to-markdown/src/index.ts +0 -694
  426. package/skills/pdf-to-markdown/tsconfig.json +0 -17
  427. package/skills/performance-audit-report/SKILL.md +0 -49
  428. package/skills/performance-audit-report/package.json +0 -10
  429. package/skills/pitch-deck/SKILL.md +0 -51
  430. package/skills/pitch-deck/package.json +0 -10
  431. package/skills/product-mockup/SKILL.md +0 -107
  432. package/skills/product-mockup/package.json +0 -32
  433. package/skills/product-mockup/src/cli.ts +0 -150
  434. package/skills/product-mockup/src/design.ts +0 -151
  435. package/skills/product-mockup/src/docs.ts +0 -134
  436. package/skills/product-mockup/src/index.ts +0 -182
  437. package/skills/product-mockup/src/render.ts +0 -407
  438. package/skills/product-mockup/src/types.ts +0 -66
  439. package/skills/product-mockup/tsconfig.json +0 -17
  440. package/skills/proposal-pack/SKILL.md +0 -53
  441. package/skills/proposal-pack/package.json +0 -10
  442. package/skills/read-csv/SKILL.md +0 -62
  443. package/skills/read-csv/package.json +0 -37
  444. package/skills/read-csv/src/index.ts +0 -356
  445. package/skills/read-csv/tsconfig.json +0 -17
  446. package/skills/read-excel/SKILL.md +0 -64
  447. package/skills/read-excel/package.json +0 -36
  448. package/skills/read-excel/src/index.ts +0 -266
  449. package/skills/read-excel/tsconfig.json +0 -17
  450. package/skills/regex-tester/CLAUDE.md +0 -19
  451. package/skills/regex-tester/package.json +0 -27
  452. package/skills/regex-tester/src/index.ts +0 -183
  453. package/skills/regex-tester/tsconfig.json +0 -10
  454. package/skills/repo-onboarding-report/SKILL.md +0 -52
  455. package/skills/repo-onboarding-report/package.json +0 -10
  456. package/skills/scancommitpr/SKILL.md +0 -178
  457. package/skills/scancommitpr/package.json +0 -34
  458. package/skills/scancommitpr/src/index.ts +0 -44
  459. package/skills/scancommitpr/tsconfig.json +0 -13
  460. package/skills/scancommitpush/SKILL.md +0 -174
  461. package/skills/scancommitpush/package.json +0 -32
  462. package/skills/scancommitpush/src/index.ts +0 -44
  463. package/skills/scancommitpush/tsconfig.json +0 -13
  464. package/skills/scientific-figure-check/CLAUDE.md +0 -19
  465. package/skills/scientific-figure-check/package.json +0 -29
  466. package/skills/scientific-figure-check/src/index.ts +0 -83
  467. package/skills/scientific-figure-check/tsconfig.json +0 -10
  468. package/skills/security-audit/CLAUDE.md +0 -19
  469. package/skills/security-audit/package.json +0 -27
  470. package/skills/security-audit/src/index.ts +0 -145
  471. package/skills/security-audit/tsconfig.json +0 -10
  472. package/skills/security-audit-report/SKILL.md +0 -52
  473. package/skills/security-audit-report/package.json +0 -10
  474. package/skills/seo-content-pack/SKILL.md +0 -54
  475. package/skills/seo-content-pack/package.json +0 -10
  476. package/skills/siteanalyze/SKILL.md +0 -25
  477. package/skills/siteanalyze/package.json +0 -27
  478. package/skills/siteanalyze/src/index.ts +0 -592
  479. package/skills/slide-deck-generator/SKILL.md +0 -93
  480. package/skills/slide-deck-generator/package.json +0 -38
  481. package/skills/slide-deck-generator/src/cli.ts +0 -133
  482. package/skills/slide-deck-generator/src/index.ts +0 -148
  483. package/skills/slide-deck-generator/src/model.ts +0 -307
  484. package/skills/slide-deck-generator/src/pptx.ts +0 -143
  485. package/skills/slide-deck-generator/src/render.ts +0 -248
  486. package/skills/slide-deck-generator/src/types.ts +0 -114
  487. package/skills/slide-deck-generator/src/utils.ts +0 -53
  488. package/skills/slide-deck-generator/tsconfig.json +0 -17
  489. package/skills/social-content-calendar/SKILL.md +0 -54
  490. package/skills/social-content-calendar/package.json +0 -10
  491. package/skills/split-pdf/CLAUDE.md +0 -19
  492. package/skills/split-pdf/package.json +0 -30
  493. package/skills/split-pdf/src/index.ts +0 -301
  494. package/skills/split-pdf/tsconfig.json +0 -10
  495. package/skills/statistical-test-selector/CLAUDE.md +0 -19
  496. package/skills/statistical-test-selector/package.json +0 -27
  497. package/skills/statistical-test-selector/src/index.ts +0 -75
  498. package/skills/statistical-test-selector/tsconfig.json +0 -10
  499. package/skills/test-suite-generator/SKILL.md +0 -51
  500. package/skills/test-suite-generator/package.json +0 -10
  501. package/skills/tmux-session/SKILL.md +0 -109
  502. package/skills/tmux-session/package.json +0 -33
  503. package/skills/tmux-session/src/index.ts +0 -34
  504. package/skills/tmux-session/tsconfig.json +0 -17
  505. package/skills/todos-plan/SKILL.md +0 -363
  506. package/skills/todos-plan/agents/openai.yaml +0 -4
  507. package/skills/todos-plan/package.json +0 -9
  508. package/skills/todos-plan/src/index.ts +0 -68
  509. package/skills/tsconfig.base.json +0 -12
  510. package/skills/validate-config/CLAUDE.md +0 -19
  511. package/skills/validate-config/package.json +0 -29
  512. package/skills/validate-config/src/index.ts +0 -56
  513. package/skills/validate-config/tsconfig.json +0 -10
  514. package/skills/video-downloader/CLAUDE.md +0 -19
  515. package/skills/video-downloader/package.json +0 -29
  516. package/skills/video-downloader/src/index.ts +0 -561
  517. package/skills/video-downloader/tsconfig.json +0 -10
  518. package/skills/video-highlight-pack/SKILL.md +0 -54
  519. package/skills/video-highlight-pack/package.json +0 -10
  520. package/skills/watermark/CLAUDE.md +0 -19
  521. package/skills/watermark/package.json +0 -32
  522. package/skills/watermark/src/index.ts +0 -587
  523. package/skills/watermark/tsconfig.json +0 -10
@@ -1,49 +0,0 @@
1
- ---
2
- name: performance-audit-report
3
- description: Generate performance audit reports for web apps, APIs, or SaaS surfaces with metrics, findings, budgets, remediation plans, and manifest metadata.
4
- kind: instruction
5
- ---
6
-
7
- # Performance Audit Report
8
-
9
- Generate a performance audit package from a URL, repo notes, trace summary, or product brief. Hosted runs can gather richer measurements, while local direct execution produces deterministic artifacts for validation.
10
-
11
- ## Requirements
12
-
13
- None. This is an instruction skill: it is prose an agent follows, so it needs no
14
- credentials, no network access, and no local runtime.
15
-
16
- ## Usage
17
-
18
- Ask an agent for the deliverables below and give it the inputs. Reading this file
19
- IS the invocation; `skills run` refuses instruction skills on purpose.
20
-
21
- ## Inputs
22
-
23
- | Input | Description | Default |
24
- |--------|-------------|---------|
25
- | `target` | App URL, route, repo path, or service name. | optional |
26
- | `notes` | Performance notes, metrics, trace summary, or constraints. Positional text also works. | optional |
27
- | `app` | Application or product name. | Performance Target |
28
- | `surface` | `web`, `api`, `mobile`, or `worker`. | web |
29
- | `budget` | `strict`, `balanced`, or `growth`. | balanced |
30
-
31
- ## Deliverables
32
-
33
- - `performance-audit-report.md`
34
- - `findings.csv`
35
- - `performance-budget.json`
36
- - `remediation-plan.md`
37
- - `metrics.json`
38
- - `manifest.json`
39
-
40
- ## Method
41
-
42
- 1. State what evidence you actually have. If no measurements were supplied, say
43
- so — an audit that presents guesses as measurements is worse than none.
44
- 2. Establish the budget before the findings: target metrics and thresholds.
45
- 3. Order findings by user-perceived impact, not by how easy they are to describe.
46
- 4. For each finding, give the mechanism (why it is slow), not just the symptom.
47
- 5. Attach an estimated saving and a confidence level to each recommendation.
48
- 6. Separate quick wins from structural work, and say what must be measured again
49
- after each change to confirm it worked.
@@ -1,10 +0,0 @@
1
- {
2
- "name": "performance-audit-report",
3
- "version": "0.1.0",
4
- "private": true,
5
- "description": "Hosted premium performance audit report generator",
6
- "type": "module",
7
- "skills": {
8
- "kind": "instruction"
9
- }
10
- }
@@ -1,51 +0,0 @@
1
- ---
2
- name: pitch-deck
3
- description: Generate investor or sales pitch deck packages with PPTX, PDF, notes, and design direction.
4
- kind: instruction
5
- ---
6
-
7
- # Pitch Deck
8
-
9
- Generate investor or sales deck packages from a short brief.
10
-
11
- ## Requirements
12
-
13
- None. This is an instruction skill: it is prose an agent follows, so it needs no
14
- credentials, no network access, and no local runtime.
15
-
16
- ## Usage
17
-
18
- Ask an agent for the deliverables below and give it the inputs. Reading this file
19
- IS the invocation; `skills run` refuses instruction skills on purpose.
20
-
21
- ## Inputs
22
-
23
- | Input | Description | Default |
24
- |--------|-------------|---------|
25
- | `brief` | Company, product, offer, or campaign brief. Positional text also works. | required |
26
- | `company` | Company or product name. | Company |
27
- | `audience` | `investors`, `sales`, or `internal`. | investors |
28
- | `slides` | Number of slides, 5-15. | 10 |
29
- | `tone` | `concise`, `bold`, or `technical`. | concise |
30
-
31
- ## Deliverables
32
-
33
- - `deck.md`
34
- - `slides.json`
35
- - `speaker-notes.md`
36
- - `design-direction.md`
37
- - `manifest.json`
38
-
39
- ## Method
40
-
41
- 1. Fix the narrative before the slides: problem, why now, what changes, why you.
42
- A deck is an argument with pictures, not a list of topics.
43
- 2. One idea per slide, stated in the headline. If the headline is a noun phrase
44
- ("Market"), rewrite it as the claim ("The market reprices every 18 months").
45
- 3. Put the number that matters on the slide, with its source and period.
46
- 4. Order for a live read: the appendix carries the detail, the body carries the
47
- argument.
48
- 5. Write speaker notes as what to say, including the transition into the next slide.
49
- 6. Give design direction (hierarchy, palette, chart style) as instructions a
50
- designer can follow. For rendered .pdf/.pptx files, hand `slides.json` to the
51
- `slide-deck-generator` skill, which renders binaries locally.
@@ -1,10 +0,0 @@
1
- {
2
- "name": "pitch-deck",
3
- "version": "0.1.0",
4
- "private": true,
5
- "description": "Hosted skill metadata for pitch-deck",
6
- "type": "module",
7
- "skills": {
8
- "kind": "instruction"
9
- }
10
- }
@@ -1,107 +0,0 @@
1
- ---
2
- name: product-mockup
3
- description: Generate parametric SVG product mockup frames — browser chrome, phone and laptop devices, or an analytics dashboard — plus a scene plan, asset metadata, usage notes, and written image prompts.
4
- ---
5
-
6
- # Product Mockup
7
-
8
- Draw real product mockup frames locally as SVG geometry. Browser chrome with a
9
- tab bar and URL pill, a phone or laptop bezel, or a full dashboard layout with
10
- KPI cards, charts, and a table — all composed from parameters, not from an image
11
- model.
12
-
13
- The package also ships `image-prompts.md`: written prompts you can paste into
14
- whichever image tool you use. This skill deliberately does not call one, so it
15
- needs no keys and no network.
16
-
17
- ## Requirements
18
-
19
- - Bun (the skill runs as `bun run src/index.ts`).
20
- - No API keys, no network access, no environment variables.
21
- - No runtime dependencies. `bun install` in this directory only pulls dev types.
22
- - Optional for raster export: any SVG renderer on your machine
23
- (`rsvg-convert`, `inkscape`, or a browser's print-to-PNG).
24
-
25
- ## Usage
26
-
27
- ```bash
28
- # browser frame, three variants
29
- skills run product-mockup -- "Usage-based billing dashboard" --scene browser -n 3
30
-
31
- # dashboard scene with a locked brand accent
32
- skills run product-mockup -- --product "MeterKit" --scene dashboard --accent "#2E86C1"
33
-
34
- # phone and laptop from one run (device + auto alternates)
35
- skills run product-mockup -- -p "AI meeting assistant" --scene device -n 2
36
-
37
- # dark style, custom headline and address bar
38
- skills run product-mockup -- -p "Relay" --title "Ship faster with Relay" --style noir --url https://relay.dev
39
-
40
- # machine-readable summary
41
- skills run product-mockup -- -p "MeterKit" --scene dashboard --json
42
- ```
43
-
44
- Run it directly from the skill directory with `bun run src/index.ts --help`.
45
-
46
- ## Options
47
-
48
- | Option | Description | Default |
49
- |--------|-------------|---------|
50
- | `--product <text>`, `-p` | Product, feature, or campaign. A positional string also works. | required |
51
- | `--title <text>` | Headline rendered inside the frame. | the product text |
52
- | `--scene <name>`, `-s` | `browser`, `device`, or `dashboard`. | `browser` |
53
- | `--device <kind>` | `auto`, `phone`, or `laptop`. Only used when `--scene device`. `auto` alternates per variant. | `auto` |
54
- | `--variants <1-4>`, `-n` | Number of mockup variants. | `3` |
55
- | `--style <text>` | Style direction. Matched against keyword presets (below). | `polished SaaS, crisp product UI` |
56
- | `--audience <text>` | Target audience, recorded in the brief and the prompts. | `software buyers` |
57
- | `--accent <hex>` | Force the accent color instead of deriving it. | derived from style |
58
- | `--url <text>` | URL shown in the browser address pill. | `https://example.com` |
59
- | `--output <dir>`, `-o` | Output directory. | `./product-mockup` |
60
- | `--json` | Print the run summary as JSON on stdout. | off |
61
- | `--help` | Show help and exit 0. | |
62
- | `--version` | Print the version. | |
63
-
64
- ### Style presets
65
-
66
- `--style` is free text; the first matching keyword wins.
67
-
68
- | Preset | Triggers on | Look |
69
- |--------|-------------|------|
70
- | `polished` (default) | polished, quiet, refined, saas, crisp, restrained, clean | Light neutral, blue accent, 12px radii |
71
- | `noir` | dark, noir, midnight, night, black | Dark surfaces, violet accent |
72
- | `warm` | warm, sunset, amber, friendly, human | Light warm neutrals, amber accent, soft radii |
73
- | `editorial` | editorial, sharp, print, serif, magazine | Light, near-square corners, red accent |
74
- | `technical` | technical, terminal, developer, mono, engineering | Dark, tight radii, teal accent |
75
- | `vivid` | vivid, bold, playful, loud, energetic | Light, large radii, magenta accent |
76
-
77
- The accent hue rotates 26 degrees per variant so a set reads as a family. Pass
78
- `--accent` to lock it.
79
-
80
- ## Scenes
81
-
82
- | Scene | Canvas | What is drawn |
83
- |-------|--------|---------------|
84
- | `browser` | 1280x800 | Window with traffic lights, three-tab bar, URL pill with lock glyph and toolbar buttons, two-column page body with eyebrow, headline, CTA pair, and a side panel of cards. |
85
- | `device` + `phone` | 720x1000 | Rounded body with side buttons, notch, status bar, headline, primary button, three content cards, four-item tab bar and home indicator. |
86
- | `device` + `laptop` | 1280x840 | Bezelled lid with camera dot, in-screen app window with title bar, headline and CTA, bar-chart panel, tapered base with trackpad edge. |
87
- | `dashboard` | 1440x900 | Six-item sidebar, header with search and avatar, four KPI cards with deltas, bar chart, line chart, and a four-row account table. |
88
-
89
- ## Outputs
90
-
91
- | File | Contents |
92
- |------|----------|
93
- | `variants/variant-NN.svg` | The mockup frame. Named `<g>` layers, `<title>`/`<desc>` for accessibility. |
94
- | `scene-plan.json` | Scene, resolved design tokens, seed, and notes for every variant. |
95
- | `asset-metadata.json` | Per file: format, width, height, viewBox, aspect ratio, layer names, accent. |
96
- | `image-prompts.md` | Prompt plus negative prompt per variant, and a compositing recipe. |
97
- | `mockup-brief.md` | Product, audience, style interpretation, and what was generated. |
98
- | `usage-notes.md` | How to edit layers, drop in a real screenshot, and export to PNG. |
99
- | `manifest.json` | Every file written, with byte sizes and the run inputs. |
100
-
101
- ## Working with the output
102
-
103
- - Delete the `canvas` layer for a transparent-background export.
104
- - Replace `page-content` / `app-content` with a real screenshot clipped to the
105
- `screen` rect; keep the frame hardware on top.
106
- - Variant geometry is seeded from the product text, scene, style, and index, so
107
- re-running the same command reproduces the same files exactly.
@@ -1,32 +0,0 @@
1
- {
2
- "name": "product-mockup",
3
- "version": "0.1.0",
4
- "private": true,
5
- "description": "Generate parametric SVG product mockup frames with scene plans, asset metadata, and image prompts",
6
- "type": "module",
7
- "main": "src/index.ts",
8
- "bin": {
9
- "product-mockup": "src/index.ts"
10
- },
11
- "files": [
12
- "src",
13
- "SKILL.md",
14
- "tsconfig.json"
15
- ],
16
- "keywords": [
17
- "mockup",
18
- "svg",
19
- "product",
20
- "ui",
21
- "skill"
22
- ],
23
- "scripts": {
24
- "start": "bun run src/index.ts",
25
- "typecheck": "tsc --noEmit"
26
- },
27
- "dependencies": {},
28
- "devDependencies": {
29
- "@types/bun": "latest",
30
- "typescript": "^5.7.0"
31
- }
32
- }
@@ -1,150 +0,0 @@
1
- import { normalizeHex } from "./design.js";
2
- import type { CliOptions } from "./types.js";
3
-
4
- const VERSION = "0.1.0";
5
-
6
- function printHelp(): void {
7
- console.log(`product-mockup v${VERSION}
8
-
9
- Emit parametric SVG product mockup frames. Everything is drawn locally as real
10
- SVG geometry: no image model, no network access, no API keys. The package also
11
- includes written image prompts you can hand to an image model yourself.
12
-
13
- USAGE:
14
- product-mockup --product <text> [options]
15
- product-mockup "<product text>" [options]
16
-
17
- OPTIONS:
18
- -p, --product <text> Product, feature, or campaign (positional works) [required]
19
- --title <text> Headline rendered inside the frame [product text]
20
- -s, --scene <name> browser | device | dashboard [browser]
21
- --device <kind> auto | phone | laptop (scene=device) [auto]
22
- -n, --variants <1-4> Number of mockup variants [3]
23
- --style <text> Style direction keyword or phrase [polished SaaS, crisp product UI]
24
- --audience <text> Target audience, recorded in the brief [software buyers]
25
- --accent <hex> Force the accent color (#RRGGBB) [derived from style]
26
- --url <text> URL shown in the browser address pill [https://example.com]
27
- -o, --output <dir> Output directory [./product-mockup]
28
- --json Print the run summary as JSON
29
- --help Show this help message
30
- --version Show the current version
31
-
32
- STYLE KEYWORDS:
33
- polished (default) | noir/dark | warm | editorial | technical | vivid
34
-
35
- OUTPUTS:
36
- variants/variant-NN.svg Real SVG frames, one per variant
37
- scene-plan.json Scene, tokens, and seed for every variant
38
- asset-metadata.json Dimensions, viewBox, and layer names per file
39
- image-prompts.md Text prompts for your own image model
40
- mockup-brief.md Brief, audience, and style interpretation
41
- usage-notes.md How to edit, export, and place the frames
42
- manifest.json Every file written, with byte sizes
43
-
44
- EXAMPLES:
45
- product-mockup "Usage-based billing dashboard" --scene dashboard -n 3
46
- product-mockup --product "AI meeting assistant" --scene device --device phone
47
- product-mockup -p "MeterKit" --scene browser --style noir --url https://example.com
48
- `);
49
- }
50
-
51
- export function parseArgs(argv: string[]): CliOptions {
52
- const options: CliOptions = {
53
- scene: "browser",
54
- device: "auto",
55
- variants: 3,
56
- style: "polished SaaS, crisp product UI",
57
- audience: "software buyers",
58
- url: "https://example.com",
59
- output: "./product-mockup",
60
- json: false,
61
- };
62
-
63
- for (let i = 0; i < argv.length; i += 1) {
64
- const arg = argv[i];
65
- switch (arg) {
66
- case "--help":
67
- case "-h":
68
- printHelp();
69
- process.exit(0);
70
- case "--version":
71
- case "-v":
72
- console.log(VERSION);
73
- process.exit(0);
74
- case "--product":
75
- case "-p":
76
- options.product = argv[++i];
77
- break;
78
- case "--title":
79
- options.title = argv[++i];
80
- break;
81
- case "--scene":
82
- case "-s": {
83
- const value = (argv[++i] ?? "").toLowerCase();
84
- if (value !== "browser" && value !== "device" && value !== "dashboard") {
85
- throw new Error(`Invalid --scene value: ${value} (expected browser | device | dashboard)`);
86
- }
87
- options.scene = value;
88
- break;
89
- }
90
- case "--device": {
91
- const value = (argv[++i] ?? "").toLowerCase();
92
- if (value !== "auto" && value !== "phone" && value !== "laptop") {
93
- throw new Error(`Invalid --device value: ${value} (expected auto | phone | laptop)`);
94
- }
95
- options.device = value;
96
- break;
97
- }
98
- case "--variants":
99
- case "-n": {
100
- const value = Number.parseInt(argv[++i] ?? "", 10);
101
- if (!Number.isFinite(value) || value < 1 || value > 4) {
102
- throw new Error(`Invalid --variants value: ${argv[i]} (expected 1-4)`);
103
- }
104
- options.variants = value;
105
- break;
106
- }
107
- case "--style":
108
- options.style = argv[++i] ?? options.style;
109
- break;
110
- case "--audience":
111
- options.audience = argv[++i] ?? options.audience;
112
- break;
113
- case "--accent": {
114
- const value = normalizeHex(argv[++i] ?? "");
115
- if (!value) {
116
- throw new Error(`Invalid --accent value: ${argv[i]} (expected a hex color such as #2E86C1)`);
117
- }
118
- options.accent = value;
119
- break;
120
- }
121
- case "--url":
122
- options.url = argv[++i] ?? options.url;
123
- break;
124
- case "--output":
125
- case "-o":
126
- options.output = argv[++i] ?? options.output;
127
- break;
128
- case "--json":
129
- options.json = true;
130
- break;
131
- default:
132
- if (arg.startsWith("-")) {
133
- throw new Error(`Unknown option: ${arg}`);
134
- }
135
- if (!options.product) {
136
- options.product = arg;
137
- break;
138
- }
139
- throw new Error(`Unexpected argument: ${arg}`);
140
- }
141
- }
142
-
143
- if (!options.product || options.product.trim() === "") {
144
- throw new Error("Missing required --product <text> argument (a positional description also works)");
145
- }
146
-
147
- return options;
148
- }
149
-
150
-
@@ -1,151 +0,0 @@
1
- import type { Tokens } from "./types.js";
2
-
3
- export function fnv1a(input: string): number {
4
- let hash = 0x811c9dc5;
5
- for (let i = 0; i < input.length; i += 1) {
6
- hash ^= input.charCodeAt(i);
7
- hash = Math.imul(hash, 0x01000193) >>> 0;
8
- }
9
- return hash >>> 0;
10
- }
11
-
12
- export function mulberry32(seed: number): () => number {
13
- let a = seed >>> 0;
14
- return () => {
15
- a = (a + 0x6d2b79f5) >>> 0;
16
- let t = a;
17
- t = Math.imul(t ^ (t >>> 15), t | 1);
18
- t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
19
- return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
20
- };
21
- }
22
-
23
- /* ------------------------------------------------------------------ */
24
- /* color + style tokens */
25
- /* ------------------------------------------------------------------ */
26
-
27
- function clamp(value: number, min: number, max: number): number {
28
- return Math.min(max, Math.max(min, value));
29
- }
30
-
31
- function hslToHex(h: number, s: number, l: number): string {
32
- const hue = ((h % 360) + 360) % 360;
33
- const sat = clamp(s, 0, 1);
34
- const lit = clamp(l, 0, 1);
35
- const c = (1 - Math.abs(2 * lit - 1)) * sat;
36
- const x = c * (1 - Math.abs(((hue / 60) % 2) - 1));
37
- const m = lit - c / 2;
38
- let rgb: [number, number, number];
39
- if (hue < 60) rgb = [c, x, 0];
40
- else if (hue < 120) rgb = [x, c, 0];
41
- else if (hue < 180) rgb = [0, c, x];
42
- else if (hue < 240) rgb = [0, x, c];
43
- else if (hue < 300) rgb = [x, 0, c];
44
- else rgb = [c, 0, x];
45
- const toHex = (v: number) =>
46
- Math.round((v + m) * 255)
47
- .toString(16)
48
- .padStart(2, "0")
49
- .toUpperCase();
50
- return `#${toHex(rgb[0])}${toHex(rgb[1])}${toHex(rgb[2])}`;
51
- }
52
-
53
- export function normalizeHex(token: string): string | null {
54
- const match = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(token.trim());
55
- if (!match) return null;
56
- const body = match[1];
57
- const full =
58
- body.length === 3
59
- ? body
60
- .split("")
61
- .map((c) => c + c)
62
- .join("")
63
- : body;
64
- return `#${full.toUpperCase()}`;
65
- }
66
-
67
- export interface StylePreset {
68
- name: string;
69
- dark: boolean;
70
- hue: number;
71
- radius: number;
72
- keywords: string[];
73
- }
74
-
75
- const STYLE_PRESETS: StylePreset[] = [
76
- { name: "noir", dark: true, hue: 258, radius: 14, keywords: ["dark", "noir", "midnight", "night", "black"] },
77
- { name: "warm", dark: false, hue: 24, radius: 18, keywords: ["warm", "sunset", "amber", "friendly", "human"] },
78
- { name: "editorial", dark: false, hue: 8, radius: 4, keywords: ["editorial", "sharp", "print", "serif", "magazine"] },
79
- { name: "technical", dark: true, hue: 168, radius: 6, keywords: ["technical", "terminal", "developer", "mono", "engineering"] },
80
- { name: "vivid", dark: false, hue: 292, radius: 22, keywords: ["vivid", "bold", "playful", "loud", "energetic"] },
81
- { name: "polished", dark: false, hue: 222, radius: 12, keywords: ["polished", "quiet", "refined", "saas", "crisp", "restrained", "clean"] },
82
- ];
83
-
84
- export function selectPreset(style: string): StylePreset {
85
- const lower = style.toLowerCase();
86
- for (const preset of STYLE_PRESETS) {
87
- if (preset.keywords.some((keyword) => lower.includes(keyword))) return preset;
88
- }
89
- return STYLE_PRESETS[STYLE_PRESETS.length - 1];
90
- }
91
-
92
- export function buildTokens(preset: StylePreset, variantIndex: number, accentOverride?: string): Tokens {
93
- const hue = (preset.hue + variantIndex * 26) % 360;
94
- const accent = accentOverride ?? hslToHex(hue, preset.dark ? 0.66 : 0.62, preset.dark ? 0.6 : 0.48);
95
- const accentSoft = hslToHex(hue, preset.dark ? 0.4 : 0.62, preset.dark ? 0.24 : 0.92);
96
-
97
- if (preset.dark) {
98
- return {
99
- name: preset.name,
100
- background: hslToHex(hue, 0.14, 0.09),
101
- surface: hslToHex(hue, 0.12, 0.14),
102
- surfaceAlt: hslToHex(hue, 0.11, 0.19),
103
- border: hslToHex(hue, 0.1, 0.27),
104
- text: "#F2F4F8",
105
- muted: hslToHex(hue, 0.08, 0.62),
106
- accent,
107
- accentSoft,
108
- radius: preset.radius,
109
- dark: true,
110
- };
111
- }
112
-
113
- return {
114
- name: preset.name,
115
- background: hslToHex(hue, 0.28, 0.965),
116
- surface: "#FFFFFF",
117
- surfaceAlt: hslToHex(hue, 0.3, 0.975),
118
- border: hslToHex(hue, 0.18, 0.87),
119
- text: hslToHex(hue, 0.24, 0.14),
120
- muted: hslToHex(hue, 0.1, 0.46),
121
- accent,
122
- accentSoft,
123
- radius: preset.radius,
124
- dark: false,
125
- };
126
- }
127
-
128
- /* ------------------------------------------------------------------ */
129
- /* svg helpers */
130
- /* ------------------------------------------------------------------ */
131
-
132
- export function xmlEscape(value: string): string {
133
- return value.replace(/[&<>"']/g, (char) => {
134
- switch (char) {
135
- case "&":
136
- return "&amp;";
137
- case "<":
138
- return "&lt;";
139
- case ">":
140
- return "&gt;";
141
- case '"':
142
- return "&quot;";
143
- default:
144
- return "&apos;";
145
- }
146
- });
147
- }
148
-
149
- export const FONT_STACK =
150
- "'Inter','Helvetica Neue',Helvetica,'Segoe UI',Arial,'DejaVu Sans',sans-serif";
151
- export const MONO_STACK = "'JetBrains Mono','SF Mono',Menlo,Consolas,'DejaVu Sans Mono',monospace";