@hasna/skills 0.1.62 → 0.1.64

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