@hasna/skills 0.1.62 → 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 (526) 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 -254
  95. package/agent-skills/skill-publish/scripts/capture_registry.js +0 -47
  96. package/agent-skills/skill-publish/scripts/publish_with_git_head.sh +0 -143
  97. package/agent-skills/skill-publish/scripts/test_publish_with_git_head.sh +0 -231
  98. package/skills/_common/auth.ts +0 -45
  99. package/skills/_common/http-client.ts +0 -143
  100. package/skills/_common/index.ts +0 -26
  101. package/skills/_common/install.sh +0 -7
  102. package/skills/_common/installer.ts +0 -72
  103. package/skills/_common/skill-install.ts +0 -37
  104. package/skills/_common/vision.ts +0 -374
  105. package/skills/ad-creative-pack/SKILL.md +0 -55
  106. package/skills/ad-creative-pack/package.json +0 -10
  107. package/skills/analyze-data/CLAUDE.md +0 -16
  108. package/skills/analyze-data/SKILL.md +0 -112
  109. package/skills/analyze-data/package.json +0 -23
  110. package/skills/analyze-data/src/analysis.ts +0 -401
  111. package/skills/analyze-data/src/cli.ts +0 -66
  112. package/skills/analyze-data/src/formatters.ts +0 -235
  113. package/skills/analyze-data/src/index.ts +0 -74
  114. package/skills/analyze-data/src/logger.ts +0 -36
  115. package/skills/analyze-data/src/parsers.ts +0 -57
  116. package/skills/analyze-data/src/stats.ts +0 -151
  117. package/skills/analyze-data/src/types.ts +0 -85
  118. package/skills/analyze-data/tsconfig.json +0 -19
  119. package/skills/api-docs-portal/SKILL.md +0 -84
  120. package/skills/api-docs-portal/package.json +0 -35
  121. package/skills/api-docs-portal/src/index.ts +0 -919
  122. package/skills/api-docs-portal/tsconfig.json +0 -17
  123. package/skills/api-test-suite/CLAUDE.md +0 -19
  124. package/skills/api-test-suite/package.json +0 -27
  125. package/skills/api-test-suite/src/index.ts +0 -381
  126. package/skills/api-test-suite/tsconfig.json +0 -10
  127. package/skills/audio-extract/CLAUDE.md +0 -9
  128. package/skills/audio-extract/SKILL.md +0 -73
  129. package/skills/audio-extract/package.json +0 -23
  130. package/skills/audio-extract/src/index.ts +0 -323
  131. package/skills/audio-extract/tsconfig.json +0 -11
  132. package/skills/bio-sequence-tool/CLAUDE.md +0 -19
  133. package/skills/bio-sequence-tool/package.json +0 -27
  134. package/skills/bio-sequence-tool/src/index.ts +0 -85
  135. package/skills/bio-sequence-tool/tsconfig.json +0 -10
  136. package/skills/blog-article/CLAUDE.md +0 -12
  137. package/skills/blog-article/SKILL.md +0 -55
  138. package/skills/blog-article/package.json +0 -10
  139. package/skills/blog-article/tsconfig.json +0 -10
  140. package/skills/brand-assets/SKILL.md +0 -118
  141. package/skills/brand-assets/package.json +0 -35
  142. package/skills/brand-assets/src/cli.ts +0 -155
  143. package/skills/brand-assets/src/constants.ts +0 -8
  144. package/skills/brand-assets/src/extract.ts +0 -236
  145. package/skills/brand-assets/src/index.ts +0 -668
  146. package/skills/brand-assets/src/types.ts +0 -59
  147. package/skills/brand-assets/tsconfig.json +0 -17
  148. package/skills/brand-kit/SKILL.md +0 -54
  149. package/skills/brand-kit/package.json +0 -10
  150. package/skills/businessactivity/CLAUDE.md +0 -176
  151. package/skills/businessactivity/LICENSE +0 -192
  152. package/skills/businessactivity/README.md +0 -287
  153. package/skills/businessactivity/package.json +0 -25
  154. package/skills/businessactivity/scripts/publish.ts +0 -210
  155. package/skills/businessactivity/src/commands/activity.ts +0 -211
  156. package/skills/businessactivity/src/commands/function.ts +0 -227
  157. package/skills/businessactivity/src/commands/owner.ts +0 -193
  158. package/skills/businessactivity/src/commands/profile.ts +0 -121
  159. package/skills/businessactivity/src/commands/responsibility.ts +0 -264
  160. package/skills/businessactivity/src/commands/team.ts +0 -244
  161. package/skills/businessactivity/src/commands/workflow.ts +0 -359
  162. package/skills/businessactivity/src/index.ts +0 -3
  163. package/skills/businessactivity/src/lib/config.ts +0 -167
  164. package/skills/businessactivity/src/lib/output.ts +0 -76
  165. package/skills/businessactivity/src/lib/paths.ts +0 -79
  166. package/skills/businessactivity/src/lib/storage.ts +0 -95
  167. package/skills/businessactivity/src/types/index.ts +0 -86
  168. package/skills/businessactivity/tsconfig.json +0 -29
  169. package/skills/codefix/LICENSE +0 -192
  170. package/skills/codefix/README.md +0 -232
  171. package/skills/codefix/SKILL.md +0 -94
  172. package/skills/codefix/package.json +0 -21
  173. package/skills/codefix/src/fixers/batch.ts +0 -213
  174. package/skills/codefix/src/fixers/detector.ts +0 -160
  175. package/skills/codefix/src/fixers/index.ts +0 -7
  176. package/skills/codefix/src/fixers/runner.ts +0 -522
  177. package/skills/codefix/src/index-local.ts +0 -431
  178. package/skills/codefix/src/index.ts +0 -4
  179. package/skills/codefix/src/types.ts +0 -211
  180. package/skills/codefix/tsconfig.json +0 -15
  181. package/skills/commitpush/SKILL.md +0 -57
  182. package/skills/commitpush/package.json +0 -33
  183. package/skills/commitpush/src/index.ts +0 -34
  184. package/skills/commitpush/tsconfig.json +0 -17
  185. package/skills/commitpushpr/SKILL.md +0 -55
  186. package/skills/commitpushpr/package.json +0 -33
  187. package/skills/commitpushpr/src/index.ts +0 -34
  188. package/skills/commitpushpr/tsconfig.json +0 -17
  189. package/skills/compress-video/CLAUDE.md +0 -9
  190. package/skills/compress-video/SKILL.md +0 -79
  191. package/skills/compress-video/package.json +0 -23
  192. package/skills/compress-video/src/index.ts +0 -473
  193. package/skills/compress-video/tsconfig.json +0 -11
  194. package/skills/contract-review-report/SKILL.md +0 -52
  195. package/skills/contract-review-report/package.json +0 -10
  196. package/skills/customer-feedback-report/SKILL.md +0 -52
  197. package/skills/customer-feedback-report/package.json +0 -10
  198. package/skills/dashboard-builder/CLAUDE.md +0 -19
  199. package/skills/dashboard-builder/package.json +0 -29
  200. package/skills/dashboard-builder/src/index.ts +0 -150
  201. package/skills/dashboard-builder/tsconfig.json +0 -10
  202. package/skills/data-anonymizer/CLAUDE.md +0 -19
  203. package/skills/data-anonymizer/package.json +0 -27
  204. package/skills/data-anonymizer/src/index.ts +0 -183
  205. package/skills/data-anonymizer/tsconfig.json +0 -10
  206. package/skills/database-explorer/CLAUDE.md +0 -19
  207. package/skills/database-explorer/package.json +0 -29
  208. package/skills/database-explorer/src/index.ts +0 -95
  209. package/skills/database-explorer/tsconfig.json +0 -10
  210. package/skills/diff-viewer/CLAUDE.md +0 -19
  211. package/skills/diff-viewer/package.json +0 -30
  212. package/skills/diff-viewer/src/index.ts +0 -164
  213. package/skills/diff-viewer/tsconfig.json +0 -10
  214. package/skills/doc-read/SKILL.md +0 -45
  215. package/skills/doc-read/package.json +0 -29
  216. package/skills/doc-read/src/index.ts +0 -324
  217. package/skills/doc-read/tsconfig.json +0 -8
  218. package/skills/domainpurchase/LICENSE +0 -192
  219. package/skills/domainpurchase/SKILL.md +0 -29
  220. package/skills/domainpurchase/package.json +0 -30
  221. package/skills/domainpurchase/src/index.ts +0 -3
  222. package/skills/domainpurchase/tsconfig.json +0 -21
  223. package/skills/email-sequence/SKILL.md +0 -53
  224. package/skills/email-sequence/package.json +0 -10
  225. package/skills/experiment-power-calculator/CLAUDE.md +0 -19
  226. package/skills/experiment-power-calculator/package.json +0 -29
  227. package/skills/experiment-power-calculator/src/index.ts +0 -86
  228. package/skills/experiment-power-calculator/tsconfig.json +0 -10
  229. package/skills/extract-frames/CLAUDE.md +0 -19
  230. package/skills/extract-frames/package.json +0 -27
  231. package/skills/extract-frames/src/index.ts +0 -616
  232. package/skills/extract-frames/tsconfig.json +0 -10
  233. package/skills/file-organizer/CLAUDE.md +0 -19
  234. package/skills/file-organizer/package.json +0 -27
  235. package/skills/file-organizer/src/index.ts +0 -91
  236. package/skills/file-organizer/tsconfig.json +0 -10
  237. package/skills/folder-tree/CLAUDE.md +0 -19
  238. package/skills/folder-tree/package.json +0 -29
  239. package/skills/folder-tree/src/index.ts +0 -568
  240. package/skills/folder-tree/tsconfig.json +0 -10
  241. package/skills/form-filler/CLAUDE.md +0 -19
  242. package/skills/form-filler/package.json +0 -29
  243. package/skills/form-filler/src/index.ts +0 -81
  244. package/skills/form-filler/tsconfig.json +0 -10
  245. package/skills/generate-api-client/CLAUDE.md +0 -19
  246. package/skills/generate-api-client/package.json +0 -29
  247. package/skills/generate-api-client/src/generator.ts +0 -47
  248. package/skills/generate-api-client/src/index.ts +0 -92
  249. package/skills/generate-api-client/src/logger.ts +0 -34
  250. package/skills/generate-api-client/src/python-generator.ts +0 -245
  251. package/skills/generate-api-client/src/spec-loader.ts +0 -48
  252. package/skills/generate-api-client/src/type-mappers.ts +0 -79
  253. package/skills/generate-api-client/src/types.ts +0 -76
  254. package/skills/generate-api-client/src/typescript-generator.ts +0 -247
  255. package/skills/generate-api-client/tsconfig.json +0 -10
  256. package/skills/generate-chart/CLAUDE.md +0 -19
  257. package/skills/generate-chart/package.json +0 -27
  258. package/skills/generate-chart/src/index.ts +0 -510
  259. package/skills/generate-chart/tsconfig.json +0 -10
  260. package/skills/generate-dockerfile/CLAUDE.md +0 -19
  261. package/skills/generate-dockerfile/package.json +0 -27
  262. package/skills/generate-dockerfile/src/cli.ts +0 -78
  263. package/skills/generate-dockerfile/src/dockerfile-templates.ts +0 -392
  264. package/skills/generate-dockerfile/src/index.ts +0 -81
  265. package/skills/generate-dockerfile/src/logger.ts +0 -30
  266. package/skills/generate-dockerfile/src/project-detection.ts +0 -68
  267. package/skills/generate-dockerfile/src/support-files.ts +0 -171
  268. package/skills/generate-dockerfile/src/types.ts +0 -29
  269. package/skills/generate-dockerfile/tsconfig.json +0 -10
  270. package/skills/generate-env/CLAUDE.md +0 -19
  271. package/skills/generate-env/package.json +0 -29
  272. package/skills/generate-env/src/cli.ts +0 -85
  273. package/skills/generate-env/src/detection.ts +0 -161
  274. package/skills/generate-env/src/env-data.ts +0 -66
  275. package/skills/generate-env/src/generators.ts +0 -240
  276. package/skills/generate-env/src/index.ts +0 -120
  277. package/skills/generate-env/src/runtime.ts +0 -30
  278. package/skills/generate-env/src/types.ts +0 -32
  279. package/skills/generate-env/tsconfig.json +0 -10
  280. package/skills/generate-favicon/CLAUDE.md +0 -19
  281. package/skills/generate-favicon/package.json +0 -29
  282. package/skills/generate-favicon/src/index.ts +0 -421
  283. package/skills/generate-favicon/tsconfig.json +0 -10
  284. package/skills/generate-qrcode/CLAUDE.md +0 -19
  285. package/skills/generate-qrcode/package.json +0 -30
  286. package/skills/generate-qrcode/src/index.ts +0 -584
  287. package/skills/generate-qrcode/tsconfig.json +0 -10
  288. package/skills/generate-resume/CLAUDE.md +0 -19
  289. package/skills/generate-resume/package.json +0 -27
  290. package/skills/generate-resume/src/cli.ts +0 -157
  291. package/skills/generate-resume/src/index.ts +0 -178
  292. package/skills/generate-resume/src/parsers.ts +0 -95
  293. package/skills/generate-resume/src/renderers.ts +0 -538
  294. package/skills/generate-resume/src/security.ts +0 -39
  295. package/skills/generate-resume/src/types.ts +0 -86
  296. package/skills/generate-resume/tsconfig.json +0 -10
  297. package/skills/generate-sitemap/CLAUDE.md +0 -19
  298. package/skills/generate-sitemap/package.json +0 -27
  299. package/skills/generate-sitemap/src/index.ts +0 -626
  300. package/skills/generate-sitemap/tsconfig.json +0 -10
  301. package/skills/gif-maker/CLAUDE.md +0 -19
  302. package/skills/gif-maker/package.json +0 -30
  303. package/skills/gif-maker/src/index.ts +0 -600
  304. package/skills/gif-maker/tsconfig.json +0 -10
  305. package/skills/hook/LICENSE +0 -192
  306. package/skills/hook/README.md +0 -74
  307. package/skills/hook/SKILL.md +0 -85
  308. package/skills/hook/bunfig.toml +0 -5
  309. package/skills/hook/package.json +0 -28
  310. package/skills/hook/src/commands/create.ts +0 -112
  311. package/skills/hook/src/commands/events.ts +0 -37
  312. package/skills/hook/src/commands/validate.ts +0 -117
  313. package/skills/hook/src/index.ts +0 -118
  314. package/skills/hook/src/templates/root.ts +0 -196
  315. package/skills/hook/src/templates/source.ts +0 -647
  316. package/skills/hook/tsconfig.json +0 -18
  317. package/skills/http-server/CLAUDE.md +0 -19
  318. package/skills/http-server/package.json +0 -29
  319. package/skills/http-server/src/index.ts +0 -51
  320. package/skills/http-server/tsconfig.json +0 -10
  321. package/skills/implementation/LICENSE +0 -192
  322. package/skills/implementation/README.md +0 -53
  323. package/skills/implementation/SKILL.md +0 -57
  324. package/skills/implementation/bunfig.toml +0 -5
  325. package/skills/implementation/package.json +0 -28
  326. package/skills/implementation/src/commands/create.ts +0 -187
  327. package/skills/implementation/src/index.ts +0 -62
  328. package/skills/implementation/tsconfig.json +0 -18
  329. package/skills/implementation-plan/CLAUDE.md +0 -19
  330. package/skills/implementation-plan/package.json +0 -29
  331. package/skills/implementation-plan/src/index.ts +0 -520
  332. package/skills/implementation-plan/tsconfig.json +0 -10
  333. package/skills/implementation-todo/CLAUDE.md +0 -19
  334. package/skills/implementation-todo/package.json +0 -29
  335. package/skills/implementation-todo/src/index.ts +0 -429
  336. package/skills/implementation-todo/tsconfig.json +0 -10
  337. package/skills/invoice/.env.example +0 -3
  338. package/skills/invoice/CLAUDE.md +0 -31
  339. package/skills/invoice/LICENSE +0 -192
  340. package/skills/invoice/README.md +0 -70
  341. package/skills/invoice/package.json +0 -26
  342. package/skills/invoice/src/commands/companies.ts +0 -202
  343. package/skills/invoice/src/commands/config.ts +0 -132
  344. package/skills/invoice/src/commands/generate.ts +0 -177
  345. package/skills/invoice/src/commands/invoices.ts +0 -218
  346. package/skills/invoice/src/index.ts +0 -3
  347. package/skills/invoice/src/lib/api.ts +0 -124
  348. package/skills/invoice/src/lib/storage.ts +0 -171
  349. package/skills/invoice/src/types/index.ts +0 -86
  350. package/skills/invoice/src/utils/logger.ts +0 -33
  351. package/skills/invoice/src/utils/paths.ts +0 -25
  352. package/skills/invoice/tsconfig.json +0 -23
  353. package/skills/invoice-reconciliation/SKILL.md +0 -98
  354. package/skills/invoice-reconciliation/package.json +0 -36
  355. package/skills/invoice-reconciliation/src/index.ts +0 -743
  356. package/skills/invoice-reconciliation/tsconfig.json +0 -17
  357. package/skills/landing-page-pack/SKILL.md +0 -55
  358. package/skills/landing-page-pack/package.json +0 -10
  359. package/skills/latex-table-generator/CLAUDE.md +0 -19
  360. package/skills/latex-table-generator/package.json +0 -29
  361. package/skills/latex-table-generator/src/index.ts +0 -113
  362. package/skills/latex-table-generator/tsconfig.json +0 -10
  363. package/skills/logo-design/SKILL.md +0 -94
  364. package/skills/logo-design/package.json +0 -35
  365. package/skills/logo-design/src/cli.ts +0 -132
  366. package/skills/logo-design/src/constants.ts +0 -5
  367. package/skills/logo-design/src/docs.ts +0 -102
  368. package/skills/logo-design/src/geometry.ts +0 -324
  369. package/skills/logo-design/src/index.ts +0 -212
  370. package/skills/logo-design/src/palette.ts +0 -258
  371. package/skills/logo-design/src/types.ts +0 -50
  372. package/skills/logo-design/tsconfig.json +0 -17
  373. package/skills/lorem-generator/CLAUDE.md +0 -19
  374. package/skills/lorem-generator/package.json +0 -29
  375. package/skills/lorem-generator/src/index.ts +0 -59
  376. package/skills/lorem-generator/tsconfig.json +0 -10
  377. package/skills/managemcp/CLAUDE.md +0 -14
  378. package/skills/managemcp/README.md +0 -24
  379. package/skills/managemcp/package.json +0 -16
  380. package/skills/managemcp/src/index.ts +0 -3
  381. package/skills/managemcp/tsconfig.json +0 -27
  382. package/skills/markdown-validator/CLAUDE.md +0 -19
  383. package/skills/markdown-validator/package.json +0 -29
  384. package/skills/markdown-validator/src/index.ts +0 -92
  385. package/skills/markdown-validator/tsconfig.json +0 -10
  386. package/skills/market-research-report/SKILL.md +0 -51
  387. package/skills/market-research-report/package.json +0 -10
  388. package/skills/meeting-pack/SKILL.md +0 -52
  389. package/skills/meeting-pack/package.json +0 -10
  390. package/skills/merge-pdfs/CLAUDE.md +0 -19
  391. package/skills/merge-pdfs/package.json +0 -31
  392. package/skills/merge-pdfs/src/index.ts +0 -427
  393. package/skills/merge-pdfs/tsconfig.json +0 -10
  394. package/skills/migration-plan-pack/SKILL.md +0 -56
  395. package/skills/migration-plan-pack/package.json +0 -10
  396. package/skills/monitor/SKILL.md +0 -69
  397. package/skills/monitor/package.json +0 -33
  398. package/skills/monitor/src/index.ts +0 -34
  399. package/skills/monitor/tsconfig.json +0 -17
  400. package/skills/one-page-website/SKILL.md +0 -128
  401. package/skills/one-page-website/package.json +0 -34
  402. package/skills/one-page-website/src/design.ts +0 -336
  403. package/skills/one-page-website/src/docs.ts +0 -159
  404. package/skills/one-page-website/src/index.ts +0 -357
  405. package/skills/one-page-website/src/page.ts +0 -340
  406. package/skills/one-page-website/src/styles.ts +0 -508
  407. package/skills/one-page-website/src/types.ts +0 -78
  408. package/skills/one-page-website/tsconfig.json +0 -17
  409. package/skills/pdf-generate/CLAUDE.md +0 -19
  410. package/skills/pdf-generate/SKILL.md +0 -86
  411. package/skills/pdf-generate/package.json +0 -21
  412. package/skills/pdf-generate/src/cli.ts +0 -162
  413. package/skills/pdf-generate/src/html.ts +0 -84
  414. package/skills/pdf-generate/src/index.ts +0 -62
  415. package/skills/pdf-generate/src/markdown.ts +0 -27
  416. package/skills/pdf-generate/src/pdf-writer.ts +0 -78
  417. package/skills/pdf-generate/src/runtime.ts +0 -34
  418. package/skills/pdf-generate/src/security.ts +0 -37
  419. package/skills/pdf-generate/src/templates.ts +0 -311
  420. package/skills/pdf-generate/src/types.ts +0 -28
  421. package/skills/pdf-generate/tsconfig.json +0 -16
  422. package/skills/pdf-to-dataset/SKILL.md +0 -88
  423. package/skills/pdf-to-dataset/package.json +0 -37
  424. package/skills/pdf-to-dataset/src/index.ts +0 -790
  425. package/skills/pdf-to-dataset/tsconfig.json +0 -17
  426. package/skills/pdf-to-markdown/SKILL.md +0 -81
  427. package/skills/pdf-to-markdown/package.json +0 -35
  428. package/skills/pdf-to-markdown/src/index.ts +0 -694
  429. package/skills/pdf-to-markdown/tsconfig.json +0 -17
  430. package/skills/performance-audit-report/SKILL.md +0 -49
  431. package/skills/performance-audit-report/package.json +0 -10
  432. package/skills/pitch-deck/SKILL.md +0 -51
  433. package/skills/pitch-deck/package.json +0 -10
  434. package/skills/product-mockup/SKILL.md +0 -107
  435. package/skills/product-mockup/package.json +0 -32
  436. package/skills/product-mockup/src/cli.ts +0 -150
  437. package/skills/product-mockup/src/design.ts +0 -151
  438. package/skills/product-mockup/src/docs.ts +0 -134
  439. package/skills/product-mockup/src/index.ts +0 -182
  440. package/skills/product-mockup/src/render.ts +0 -407
  441. package/skills/product-mockup/src/types.ts +0 -66
  442. package/skills/product-mockup/tsconfig.json +0 -17
  443. package/skills/proposal-pack/SKILL.md +0 -53
  444. package/skills/proposal-pack/package.json +0 -10
  445. package/skills/read-csv/SKILL.md +0 -62
  446. package/skills/read-csv/package.json +0 -37
  447. package/skills/read-csv/src/index.ts +0 -356
  448. package/skills/read-csv/tsconfig.json +0 -17
  449. package/skills/read-excel/SKILL.md +0 -64
  450. package/skills/read-excel/package.json +0 -36
  451. package/skills/read-excel/src/index.ts +0 -266
  452. package/skills/read-excel/tsconfig.json +0 -17
  453. package/skills/regex-tester/CLAUDE.md +0 -19
  454. package/skills/regex-tester/package.json +0 -27
  455. package/skills/regex-tester/src/index.ts +0 -183
  456. package/skills/regex-tester/tsconfig.json +0 -10
  457. package/skills/repo-onboarding-report/SKILL.md +0 -52
  458. package/skills/repo-onboarding-report/package.json +0 -10
  459. package/skills/scancommitpr/SKILL.md +0 -178
  460. package/skills/scancommitpr/package.json +0 -34
  461. package/skills/scancommitpr/src/index.ts +0 -44
  462. package/skills/scancommitpr/tsconfig.json +0 -13
  463. package/skills/scancommitpush/SKILL.md +0 -174
  464. package/skills/scancommitpush/package.json +0 -32
  465. package/skills/scancommitpush/src/index.ts +0 -44
  466. package/skills/scancommitpush/tsconfig.json +0 -13
  467. package/skills/scientific-figure-check/CLAUDE.md +0 -19
  468. package/skills/scientific-figure-check/package.json +0 -29
  469. package/skills/scientific-figure-check/src/index.ts +0 -83
  470. package/skills/scientific-figure-check/tsconfig.json +0 -10
  471. package/skills/security-audit/CLAUDE.md +0 -19
  472. package/skills/security-audit/package.json +0 -27
  473. package/skills/security-audit/src/index.ts +0 -145
  474. package/skills/security-audit/tsconfig.json +0 -10
  475. package/skills/security-audit-report/SKILL.md +0 -52
  476. package/skills/security-audit-report/package.json +0 -10
  477. package/skills/seo-content-pack/SKILL.md +0 -54
  478. package/skills/seo-content-pack/package.json +0 -10
  479. package/skills/siteanalyze/SKILL.md +0 -25
  480. package/skills/siteanalyze/package.json +0 -27
  481. package/skills/siteanalyze/src/index.ts +0 -592
  482. package/skills/slide-deck-generator/SKILL.md +0 -93
  483. package/skills/slide-deck-generator/package.json +0 -38
  484. package/skills/slide-deck-generator/src/cli.ts +0 -133
  485. package/skills/slide-deck-generator/src/index.ts +0 -148
  486. package/skills/slide-deck-generator/src/model.ts +0 -307
  487. package/skills/slide-deck-generator/src/pptx.ts +0 -143
  488. package/skills/slide-deck-generator/src/render.ts +0 -248
  489. package/skills/slide-deck-generator/src/types.ts +0 -114
  490. package/skills/slide-deck-generator/src/utils.ts +0 -53
  491. package/skills/slide-deck-generator/tsconfig.json +0 -17
  492. package/skills/social-content-calendar/SKILL.md +0 -54
  493. package/skills/social-content-calendar/package.json +0 -10
  494. package/skills/split-pdf/CLAUDE.md +0 -19
  495. package/skills/split-pdf/package.json +0 -30
  496. package/skills/split-pdf/src/index.ts +0 -301
  497. package/skills/split-pdf/tsconfig.json +0 -10
  498. package/skills/statistical-test-selector/CLAUDE.md +0 -19
  499. package/skills/statistical-test-selector/package.json +0 -27
  500. package/skills/statistical-test-selector/src/index.ts +0 -75
  501. package/skills/statistical-test-selector/tsconfig.json +0 -10
  502. package/skills/test-suite-generator/SKILL.md +0 -51
  503. package/skills/test-suite-generator/package.json +0 -10
  504. package/skills/tmux-session/SKILL.md +0 -109
  505. package/skills/tmux-session/package.json +0 -33
  506. package/skills/tmux-session/src/index.ts +0 -34
  507. package/skills/tmux-session/tsconfig.json +0 -17
  508. package/skills/todos-plan/SKILL.md +0 -363
  509. package/skills/todos-plan/agents/openai.yaml +0 -4
  510. package/skills/todos-plan/package.json +0 -9
  511. package/skills/todos-plan/src/index.ts +0 -68
  512. package/skills/tsconfig.base.json +0 -12
  513. package/skills/validate-config/CLAUDE.md +0 -19
  514. package/skills/validate-config/package.json +0 -29
  515. package/skills/validate-config/src/index.ts +0 -56
  516. package/skills/validate-config/tsconfig.json +0 -10
  517. package/skills/video-downloader/CLAUDE.md +0 -19
  518. package/skills/video-downloader/package.json +0 -29
  519. package/skills/video-downloader/src/index.ts +0 -561
  520. package/skills/video-downloader/tsconfig.json +0 -10
  521. package/skills/video-highlight-pack/SKILL.md +0 -54
  522. package/skills/video-highlight-pack/package.json +0 -10
  523. package/skills/watermark/CLAUDE.md +0 -19
  524. package/skills/watermark/package.json +0 -32
  525. package/skills/watermark/src/index.ts +0 -587
  526. 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";