@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,323 +0,0 @@
1
- #!/usr/bin/env bun
2
- /**
3
- * Extract Audio Skill
4
- * Extracts audio from video files using FFmpeg
5
- */
6
-
7
- import { parseArgs } from "util";
8
- import { mkdirSync, appendFileSync, existsSync, statSync } from "fs";
9
- import { join, dirname, basename, extname } from "path";
10
- import { randomUUID } from "crypto";
11
- import { spawn } from "child_process";
12
-
13
- // Types
14
- interface ExtractOptions {
15
- inputFiles: string[];
16
- format: "mp3" | "wav" | "aac" | "flac" | "ogg";
17
- quality: "low" | "medium" | "high" | "ultra";
18
- output?: string;
19
- }
20
-
21
- interface BitrateConfig {
22
- mp3: string;
23
- aac: string;
24
- wav: string;
25
- flac: string;
26
- ogg: string;
27
- }
28
-
29
- // Constants
30
- const SKILL_NAME = "extract-audio";
31
- const SESSION_ID = randomUUID().slice(0, 8);
32
-
33
- // Use SKILLS_OUTPUT_DIR from CLI if available, otherwise fall back to cwd
34
- const SKILLS_OUTPUT_DIR = process.env.SKILLS_OUTPUT_DIR || join(process.cwd(), ".skills");
35
- const EXPORTS_DIR = join(SKILLS_OUTPUT_DIR, "exports", SKILL_NAME);
36
- const LOGS_DIR = join(SKILLS_OUTPUT_DIR, "logs", SKILL_NAME);
37
-
38
- // Supported video formats
39
- const SUPPORTED_VIDEO_FORMATS = [".mp4", ".mov", ".avi", ".mkv", ".webm", ".flv", ".wmv", ".m4v", ".3gp"];
40
-
41
- // Bitrate configurations for different quality levels
42
- const BITRATES: Record<ExtractOptions["quality"], BitrateConfig> = {
43
- low: { mp3: "128k", aac: "96k", wav: "", flac: "", ogg: "64k" },
44
- medium: { mp3: "192k", aac: "128k", wav: "", flac: "", ogg: "128k" },
45
- high: { mp3: "256k", aac: "192k", wav: "", flac: "", ogg: "192k" },
46
- ultra: { mp3: "320k", aac: "256k", wav: "", flac: "", ogg: "256k" },
47
- };
48
-
49
- // Ensure directories exist
50
- function ensureDir(dir: string) {
51
- if (!existsSync(dir)) {
52
- mkdirSync(dir, { recursive: true });
53
- }
54
- }
55
-
56
- // Session timestamp for log filename
57
- const SESSION_TIMESTAMP = new Date().toISOString().replace(/[:.]/g, "_").replace(/-/g, "_").slice(0, 19).toLowerCase();
58
-
59
- // Logger
60
- function log(message: string, level: "info" | "error" | "success" = "info") {
61
- const timestamp = new Date().toISOString();
62
- const logFile = join(LOGS_DIR, `log_${SESSION_TIMESTAMP}_${SESSION_ID}.log`);
63
-
64
- ensureDir(LOGS_DIR);
65
-
66
- const logEntry = `[${timestamp}] [${level.toUpperCase()}] ${message}\n`;
67
- appendFileSync(logFile, logEntry);
68
-
69
- const prefix = level === "error" ? "❌" : level === "success" ? "✅" : "ℹ️";
70
- if (level === "error") {
71
- console.error(`${prefix} ${message}`);
72
- } else {
73
- console.log(`${prefix} ${message}`);
74
- }
75
- }
76
-
77
- // Check if FFmpeg is installed
78
- async function checkFFmpeg(): Promise<boolean> {
79
- return new Promise((resolve) => {
80
- const process = spawn("ffmpeg", ["-version"]);
81
-
82
- process.on("error", () => {
83
- resolve(false);
84
- });
85
-
86
- process.on("close", (code) => {
87
- resolve(code === 0);
88
- });
89
- });
90
- }
91
-
92
- // Validate input file
93
- function validateInputFile(filePath: string): void {
94
- if (!existsSync(filePath)) {
95
- throw new Error(`Input file not found: ${filePath}`);
96
- }
97
-
98
- const stats = statSync(filePath);
99
- if (!stats.isFile()) {
100
- throw new Error(`Not a file: ${filePath}`);
101
- }
102
-
103
- const ext = extname(filePath).toLowerCase();
104
- if (!SUPPORTED_VIDEO_FORMATS.includes(ext)) {
105
- throw new Error(`Unsupported video format: ${ext}. Supported formats: ${SUPPORTED_VIDEO_FORMATS.join(", ")}`);
106
- }
107
- }
108
-
109
- // Extract audio from video file
110
- async function extractAudio(
111
- inputFile: string,
112
- outputFile: string,
113
- options: ExtractOptions
114
- ): Promise<void> {
115
- log(`Extracting audio from: ${inputFile}`);
116
- log(`Output format: ${options.format}, Quality: ${options.quality}`);
117
-
118
- const args: string[] = [
119
- "-i", inputFile,
120
- "-vn", // No video
121
- ];
122
-
123
- // Add codec and bitrate based on format
124
- const bitrate = BITRATES[options.quality][options.format];
125
-
126
- switch (options.format) {
127
- case "mp3":
128
- args.push("-acodec", "libmp3lame");
129
- if (bitrate) args.push("-b:a", bitrate);
130
- break;
131
- case "wav":
132
- args.push("-acodec", "pcm_s16le");
133
- break;
134
- case "aac":
135
- args.push("-acodec", "aac");
136
- if (bitrate) args.push("-b:a", bitrate);
137
- break;
138
- case "flac":
139
- args.push("-acodec", "flac");
140
- break;
141
- case "ogg":
142
- args.push("-acodec", "libvorbis");
143
- if (bitrate) args.push("-b:a", bitrate);
144
- break;
145
- }
146
-
147
- args.push("-y"); // Overwrite output file
148
- args.push(outputFile);
149
-
150
- return new Promise((resolve, reject) => {
151
- const ffmpeg = spawn("ffmpeg", args);
152
-
153
- let stderr = "";
154
-
155
- ffmpeg.stderr.on("data", (data) => {
156
- stderr += data.toString();
157
- });
158
-
159
- ffmpeg.on("close", (code) => {
160
- if (code === 0) {
161
- log(`Successfully extracted audio to: ${outputFile}`, "success");
162
- resolve();
163
- } else {
164
- log(`FFmpeg error: ${stderr}`, "error");
165
- reject(new Error(`FFmpeg exited with code ${code}`));
166
- }
167
- });
168
-
169
- ffmpeg.on("error", (error) => {
170
- reject(new Error(`Failed to spawn FFmpeg: ${error.message}`));
171
- });
172
- });
173
- }
174
-
175
- // Generate output filename
176
- function generateOutputFilename(inputFile: string, format: string): string {
177
- const timestamp = new Date().toISOString().replace(/[:.]/g, "_").replace(/-/g, "_").slice(0, 19).toLowerCase();
178
- const inputBasename = basename(inputFile, extname(inputFile));
179
- return join(EXPORTS_DIR, `export_${timestamp}_${inputBasename}.${format}`);
180
- }
181
-
182
- // Main function
183
- async function main() {
184
- const { values, positionals } = parseArgs({
185
- args: Bun.argv.slice(2),
186
- options: {
187
- format: { type: "string", default: "mp3" },
188
- quality: { type: "string", default: "medium" },
189
- output: { type: "string", short: "o" },
190
- help: { type: "boolean", short: "h" },
191
- },
192
- allowPositionals: true,
193
- });
194
-
195
- // Show help
196
- if (values.help || positionals.length === 0) {
197
- console.log(`
198
- Extract Audio - Extract audio from video files using FFmpeg
199
-
200
- Usage:
201
- bun run src/index.ts <video-file> [more-files...] [options]
202
-
203
- Options:
204
- --format <format> Output format (mp3, wav, aac, flac, ogg) [default: mp3]
205
- --quality <quality> Quality level (low, medium, high, ultra) [default: medium]
206
- --output, -o <path> Custom output path (single file only)
207
- --help, -h Show this help
208
-
209
- Quality Levels:
210
- low - MP3: 128k, AAC: 96k (suitable for voice, podcasts)
211
- medium - MP3: 192k, AAC: 128k (good balance)
212
- high - MP3: 256k, AAC: 192k (high quality music)
213
- ultra - MP3: 320k, AAC: 256k (maximum quality)
214
-
215
- Supported Input Formats:
216
- ${SUPPORTED_VIDEO_FORMATS.join(", ")}
217
-
218
- Examples:
219
- bun run src/index.ts video.mp4
220
- bun run src/index.ts video.mov --format wav --quality high
221
- bun run src/index.ts video1.mp4 video2.mp4 video3.mp4
222
- bun run src/index.ts interview.mp4 --output ./podcast.mp3
223
- `);
224
- process.exit(0);
225
- }
226
-
227
- // Validate format
228
- const format = values.format?.toLowerCase() as ExtractOptions["format"];
229
- const validFormats = ["mp3", "wav", "aac", "flac", "ogg"];
230
- if (!validFormats.includes(format)) {
231
- log(`Invalid format: ${format}. Valid formats: ${validFormats.join(", ")}`, "error");
232
- process.exit(1);
233
- }
234
-
235
- // Validate quality
236
- const quality = values.quality?.toLowerCase() as ExtractOptions["quality"];
237
- const validQualities = ["low", "medium", "high", "ultra"];
238
- if (!validQualities.includes(quality)) {
239
- log(`Invalid quality: ${quality}. Valid qualities: ${validQualities.join(", ")}`, "error");
240
- process.exit(1);
241
- }
242
-
243
- // Get input files
244
- const inputFiles = positionals;
245
-
246
- if (inputFiles.length === 0) {
247
- log("Please provide at least one video file", "error");
248
- process.exit(1);
249
- }
250
-
251
- // Check for custom output with multiple files
252
- if (values.output && inputFiles.length > 1) {
253
- log("Custom output path can only be used with a single input file", "error");
254
- process.exit(1);
255
- }
256
-
257
- try {
258
- log(`Session ID: ${SESSION_ID}`);
259
-
260
- // Check if FFmpeg is installed
261
- log("Checking for FFmpeg installation...");
262
- const ffmpegInstalled = await checkFFmpeg();
263
-
264
- if (!ffmpegInstalled) {
265
- log("FFmpeg is not installed or not found in PATH", "error");
266
- console.log(`
267
- ⚠️ FFmpeg is required but not found
268
-
269
- Please install FFmpeg:
270
-
271
- macOS:
272
- brew install ffmpeg
273
-
274
- Ubuntu/Debian:
275
- sudo apt-get install ffmpeg
276
-
277
- Windows:
278
- Download from https://ffmpeg.org/download.html
279
- `);
280
- process.exit(1);
281
- }
282
-
283
- log("FFmpeg is installed", "success");
284
-
285
- // Ensure export directory exists
286
- ensureDir(EXPORTS_DIR);
287
-
288
- // Validate all input files
289
- for (const inputFile of inputFiles) {
290
- validateInputFile(inputFile);
291
- }
292
-
293
- log(`Processing ${inputFiles.length} file(s)...`);
294
-
295
- // Process each file
296
- for (const inputFile of inputFiles) {
297
- const outputFile = values.output || generateOutputFilename(inputFile, format);
298
-
299
- // Ensure output directory exists
300
- const outputDir = dirname(outputFile);
301
- ensureDir(outputDir);
302
-
303
- await extractAudio(inputFile, outputFile, {
304
- inputFiles,
305
- format,
306
- quality,
307
- output: values.output as string,
308
- });
309
-
310
- console.log(`\n✨ Audio extracted successfully!`);
311
- console.log(` 📁 Input: ${inputFile}`);
312
- console.log(` 🎵 Output: ${outputFile}`);
313
- }
314
-
315
- console.log(`\n 📋 Log: ${join(LOGS_DIR, `log_${SESSION_TIMESTAMP}_${SESSION_ID}.log`)}`);
316
-
317
- } catch (error) {
318
- log(`Error: ${error instanceof Error ? error.message : "Unknown error"}`, "error");
319
- process.exit(1);
320
- }
321
- }
322
-
323
- main();
@@ -1,11 +0,0 @@
1
- {
2
- "extends": "../tsconfig.base.json",
3
- "compilerOptions": {
4
- "forceConsistentCasingInFileNames": true,
5
- "outDir": "dist"
6
- },
7
- "include": [
8
- "src",
9
- "bin"
10
- ]
11
- }
@@ -1,19 +0,0 @@
1
- # bio-sequence-tool
2
-
3
- Bio Sequence Tool skill.
4
-
5
- ## Tech Stack
6
-
7
- - Runtime: Bun
8
- - Language: TypeScript
9
- - CLI: Commander.js
10
-
11
- ## CLI
12
-
13
- ```bash
14
- bio-sequence-tool run
15
- ```
16
-
17
- ## Data Directory
18
-
19
- ~/.skill/bio-sequence-tool/
@@ -1,27 +0,0 @@
1
- {
2
- "name": "bio-sequence-tool",
3
- "version": "0.1.0",
4
- "description": "Bio Sequence Tool skill",
5
- "type": "module",
6
- "bin": {
7
- "bio-sequence-tool": "./src/index.ts"
8
- },
9
- "scripts": {
10
- "dev": "bun run src/index.ts",
11
- "build": "bun build src/index.ts --outdir dist --target node",
12
- "typecheck": "tsc --noEmit"
13
- },
14
- "dependencies": {},
15
- "devDependencies": {
16
- "@types/bun": "latest",
17
- "typescript": "^5.7.0"
18
- },
19
- "publishConfig": {
20
- "access": "restricted",
21
- "registry": "https://registry.npmjs.org/"
22
- },
23
- "files": [
24
- "src",
25
- "tsconfig.json"
26
- ]
27
- }
@@ -1,85 +0,0 @@
1
- #!/usr/bin/env bun
2
- import { parseArgs } from "util";
3
-
4
- const { values, positionals } = parseArgs({
5
- args: process.argv.slice(2),
6
- options: {
7
- mode: { type: "string", default: "reverse-complement" }, // reverse-complement, translate, gc-content
8
- help: { type: "boolean" },
9
- },
10
- allowPositionals: true,
11
- });
12
-
13
- if (values.help || positionals.length === 0) {
14
- console.log(`
15
- Bio Sequence Tool
16
- Usage: skills run bio-sequence-tool -- <sequence> [options]
17
-
18
- Options:
19
- --mode <mode> Operation mode: reverse-complement, translate, gc-content
20
- `);
21
- process.exit(0);
22
- }
23
-
24
- const sequence = positionals[0].toUpperCase().replace(/[^ATGCU]/g, "");
25
-
26
- if (!sequence) {
27
- console.error("Error: Invalid sequence provided.");
28
- process.exit(1);
29
- }
30
-
31
- function reverseComplement(seq: string): string {
32
- const map: Record<string, string> = { A: "T", T: "A", G: "C", C: "G", U: "A" };
33
- return seq.split("").reverse().map(c => map[c] || c).join("");
34
- }
35
-
36
- function getGCContent(seq: string): number {
37
- const gc = seq.split("").filter(c => c === "G" || c === "C").length;
38
- return (gc / seq.length) * 100;
39
- }
40
-
41
- function translate(seq: string): string {
42
- // Basic codon table (DNA)
43
- const codons: Record<string, string> = {
44
- ATA: "I", ATC: "I", ATT: "I", ATG: "M",
45
- ACA: "T", ACC: "T", ACG: "T", ACT: "T",
46
- AAC: "N", AAT: "N", AAA: "K", AAG: "K",
47
- AGC: "S", AGT: "S", AGA: "R", AGG: "R",
48
- CTA: "L", CTC: "L", CTG: "L", CTT: "L",
49
- CCA: "P", CCC: "P", CCG: "P", CCT: "P",
50
- CAC: "H", CAT: "H", CAA: "Q", CAG: "Q",
51
- CGA: "R", CGC: "R", CGG: "R", CGT: "R",
52
- GTA: "V", GTC: "V", GTG: "V", GTT: "V",
53
- GCA: "A", GCC: "A", GCG: "A", GCT: "A",
54
- GAC: "D", GAT: "D", GAA: "E", GAG: "E",
55
- GGA: "G", GGC: "G", GGG: "G", GGT: "G",
56
- TCA: "S", TCC: "S", TCG: "S", TCT: "S",
57
- TTC: "F", TTT: "F", TTA: "L", TTG: "L",
58
- TAC: "Y", TAT: "Y", TAA: "_", TAG: "_",
59
- TGC: "C", TGT: "C", TGA: "_", TGG: "W",
60
- };
61
-
62
- let protein = "";
63
- for (let i = 0; i < seq.length; i += 3) {
64
- const codon = seq.substr(i, 3);
65
- if (codon.length === 3) {
66
- protein += codons[codon] || "?";
67
- }
68
- }
69
- return protein;
70
- }
71
-
72
- switch (values.mode) {
73
- case "reverse-complement":
74
- console.log(reverseComplement(sequence));
75
- break;
76
- case "translate":
77
- console.log(translate(sequence.replace(/U/g, "T"))); // Treat as DNA for simplicity
78
- break;
79
- case "gc-content":
80
- console.log(`${getGCContent(sequence).toFixed(2)}%`);
81
- break;
82
- default:
83
- console.error(`Unknown mode: ${values.mode}`);
84
- process.exit(1);
85
- }
@@ -1,10 +0,0 @@
1
- {
2
- "extends": "../tsconfig.base.json",
3
- "compilerOptions": {
4
- "outDir": "dist"
5
- },
6
- "include": [
7
- "src/**/*",
8
- "bin/**/*"
9
- ]
10
- }
@@ -1,12 +0,0 @@
1
- # blog-article
2
-
3
- Generate one or more SEO-ready blog article packages through the hosted Skills runtime.
4
-
5
- Use via:
6
-
7
- ```bash
8
- skills quote create-blog-article --count 8 --topic "SaaS onboarding"
9
- skills run create-blog-article --count 8 --topic "SaaS onboarding" --audience "founders" --length long --seo
10
- ```
11
-
12
- Hosted runs write Markdown, HTML, JSON, and manifest artifacts to the run export directory.
@@ -1,55 +0,0 @@
1
- ---
2
- name: blog-article
3
- description: Generate one or more SEO-ready blog article packages as hosted artifacts.
4
- kind: instruction
5
- ---
6
-
7
- # Blog Article
8
-
9
- Generate blog articles as downloadable Markdown, HTML, JSON, and manifest artifacts.
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
- | `topic` | Topic or theme. Positional text also works. | required |
26
- | `audience` | Intended reader or buyer persona. | |
27
- | `count` | Number of articles to generate, 1-12. | 1 |
28
- | `articles` | Alias for `--count`. | |
29
- | `tone` | `professional`, `casual`, `technical`, or `friendly`. | professional |
30
- | `length` | `short`, `medium`, or `long`. | medium |
31
- | `seo` | Include SEO metadata and keyword-oriented structure. | false |
32
- | `outline` | Optional outline, angles, or required sections. | |
33
-
34
- ## Deliverables
35
-
36
- - `manifest.json` using the `skills.blogArticle.outputs.v1` contract
37
- - For a single article: `article.md`, `article.html`, `article.json`
38
- - For batch runs: `article-XX-<slug>/article.md`, `article.html`, `article.json`
39
-
40
- `manifest.json` includes the run id, prompt, sanitized input options, requested tone/length/SEO settings, receipt cost, and an `articles` array. Each article entry includes `title`, `slug`, `summary`, `keywords`, optional `featuredImage`, word count, reading time, and relative file paths.
41
-
42
- ## Method
43
-
44
- 1. Confirm topic, audience and search intent before writing. If the topic is
45
- ambiguous, state the interpretation you chose.
46
- 2. Outline first: H2/H3 skeleton with one sentence of intent per section. Get the
47
- shape right before producing prose.
48
- 3. Write the draft to the requested length and tone. Lead with the answer; do not
49
- warm up for three paragraphs.
50
- 4. Support claims with specifics — numbers, examples, named tools. Remove any
51
- sentence that would survive unchanged in an article about something else.
52
- 5. If SEO is requested, add title, meta description, slug and internal-link
53
- suggestions as a separate block, never by stuffing the body.
54
- 6. Finish with a self-edit pass: cut hedging, merge duplicate points, verify every
55
- factual claim you cannot source is marked as an assumption.
@@ -1,10 +0,0 @@
1
- {
2
- "name": "blog-article",
3
- "version": "0.1.0",
4
- "private": true,
5
- "description": "Hosted premium blog article artifact generator",
6
- "type": "module",
7
- "skills": {
8
- "kind": "instruction"
9
- }
10
- }
@@ -1,10 +0,0 @@
1
- {
2
- "extends": "../tsconfig.base.json",
3
- "compilerOptions": {
4
- "outDir": "dist"
5
- },
6
- "include": [
7
- "src/**/*",
8
- "bin/**/*"
9
- ]
10
- }
@@ -1,118 +0,0 @@
1
- ---
2
- name: brand-assets
3
- description: Extract brand assets from a website you name — icons, social preview images, logo images, inline SVG marks, theme colors, CSS color tokens, and font stacks — downloaded into a folder with full source provenance. Use when a user asks to find, extract, download, or package a site's logo and visual identity.
4
- ---
5
-
6
- # Brand Assets
7
-
8
- Point this at a URL. It fetches that page over plain HTTP, parses the markup and
9
- the stylesheets it links, and pulls out the brand's icons, social images, logo
10
- images, colors, and typography. Everything downloaded is recorded against the
11
- exact URL it came from.
12
-
13
- The only hosts contacted are the one you name and whatever that page links its
14
- own assets from. There is no search API, no AI service, and no key of any kind.
15
-
16
- ## Requirements
17
-
18
- - Bun (the skill runs as `bun run src/index.ts`).
19
- - Outbound HTTP access to the site you pass. Nothing else.
20
- - No API keys and no environment variables.
21
- - One runtime dependency: `node-html-parser`. Run `bun install` in this skill
22
- directory. If it is missing you get
23
- `Missing dependency 'node-html-parser'. Run bun install in this skill directory.`
24
-
25
- `--url` is **required**. There is no brand-name search fallback — omitting it
26
- fails immediately and names the flag.
27
-
28
- ## Usage
29
-
30
- ```bash
31
- # the normal case
32
- skills run brand-assets -- --url https://example.com
33
-
34
- # positional URL, custom destination and timeout
35
- skills run brand-assets -- https://example.com --output ./out/example --timeout 30000
36
-
37
- # inspect without downloading any binaries
38
- skills run brand-assets -- --url https://example.com --no-download
39
-
40
- # machine-readable profile on stdout
41
- skills run brand-assets -- --url https://example.com --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
- | `--url <url>`, `-u` | Website to inspect. A bare hostname is upgraded to `https://`. A positional URL also works. | **required** |
51
- | `--output <dir>`, `-o` | Output directory. | `./brand-assets` |
52
- | `--timeout <ms>`, `-t` | Per-request timeout, 500–300000. Applies to the page, each stylesheet, and each asset. | `15000` |
53
- | `--max-assets <n>` | Cap on downloaded assets, 0–200. Anything beyond is listed as `skipped`. | `20` |
54
- | `--no-download` | Discover and report only; fetch no binaries. | off |
55
- | `--json` | Print the full profile as JSON on stdout. | off |
56
- | `--help` | Show help and exit 0. | |
57
- | `--version` | Print the version. | |
58
-
59
- ## What is discovered
60
-
61
- | Source | What is taken |
62
- |--------|---------------|
63
- | `<link rel="icon">`, `shortcut icon`, `apple-touch-icon`, `mask-icon` | Favicons and touch icons, with their `sizes` and `type` |
64
- | `<link rel="manifest">` | The web app manifest: `name`, `short_name`, `theme_color`, `background_color`, and every declared icon |
65
- | `<meta property="og:image">`, `<meta name="twitter:image">` | Social preview images |
66
- | `<meta name="theme-color">` | Brand color, including per-`media` light/dark variants |
67
- | `<img>` whose `src`, `alt`, `class`, or `id` matches logo / wordmark / brandmark / brand | Logo images |
68
- | Inline `<svg>` inside `header`, `nav`, links, or logo-classed elements | Up to three inline marks, saved as standalone SVG files |
69
- | Inline `<style>`, `style=` attributes, and up to 6 linked stylesheets | CSS custom properties whose name mentions color / brand / accent / primary / bg / fg / surface / theme, plus ordinary `color`, `background`, `fill`, and `stroke` declarations |
70
- | The same CSS | `font-family` declarations and font-related custom properties |
71
-
72
- If the page declares no icon at all, `/favicon.ico` is tried as a conventional
73
- fallback and reported honestly if it 404s.
74
-
75
- ### How colors are ranked
76
-
77
- `<meta>` and web app manifest colors first, then hand-authored CSS custom
78
- properties, then ordinary declarations. Utility-framework plumbing (`--tw-*` and
79
- friends) is deliberately demoted so real brand tokens surface first. Every entry
80
- records how many times it was seen and every source it appeared in. The palette
81
- is capped at 48 distinct colors.
82
-
83
- ## Outputs
84
-
85
- | File | Contents |
86
- |------|----------|
87
- | `assets/` | Every downloaded file, named `<role>-<original-name>.<ext>` — e.g. `icon-favicon-32x32.png`, `logo-img-wordmark.svg`, `inline-logo-01.svg`. |
88
- | `brand-profile.json` | Everything discovered: metadata, assets with status, palette, typography, stylesheet results, counts. |
89
- | `brand-profile.md` | The same profile as a readable summary with asset, palette, and typography tables. |
90
- | `palette.json` | Every color: hex, how it was declared, which properties carried it, its kind, occurrence count, and every source. |
91
- | `typography.md` | Each font stack with its full fallback chain, source, and notes on reproducing the type without the font binaries. |
92
- | `sources.json` | The provenance map: downloaded file → source URL, status, content type, byte size, plus per-stylesheet fetch results. |
93
- | `manifest.json` | Every file written, with byte sizes and the run inputs. |
94
-
95
- Webfont binaries are never downloaded — licenses almost never permit
96
- redistributing them. `typography.md` gives you the stacks instead.
97
-
98
- ## Failure behaviour
99
-
100
- Exit code 1 with a single clear line on stderr for each of:
101
-
102
- - `--url` missing — names the flag and shows an example.
103
- - A value that is not an http(s) URL.
104
- - DNS or connection failure.
105
- - A timeout — the message tells you to raise `--timeout`.
106
- - A non-200 response — the status code is included.
107
- - A response whose content type is not HTML — the actual content type is quoted.
108
-
109
- Failures *below* the page level are not fatal: a 404 favicon, an unreachable
110
- stylesheet, or a malformed manifest is recorded with its status in
111
- `sources.json` and `brand-profile.md`, and the run still completes.
112
-
113
- ## Provenance and reuse
114
-
115
- These are someone else's trademarks. `sources.json` exists so you can prove where
116
- each file came from. Confirm you have the right to use an asset before you ship
117
- it, and check the site's own brand or press page for official guidelines and
118
- higher-resolution originals.