@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,51 +0,0 @@
1
- ---
2
- name: market-research-report
3
- description: Generate a market research report with competitor, audience, pricing, source, Markdown, and PDF artifacts.
4
- kind: instruction
5
- ---
6
-
7
- # Market Research Report
8
-
9
- Generate a market research report package for SaaS, developer tools, and business planning work.
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` | Market, product category, or research question. Positional text also works. | required |
26
- | `audience` | Target audience or buyer segment. | Operators and founders |
27
- | `competitors` | Comma-separated competitor names. | inferred examples |
28
- | `region` | Geographic or commercial scope. | Global |
29
- | `format` | `strategic`, `investor`, or `product`. | strategic |
30
-
31
- ## Deliverables
32
-
33
- - `market-research-report.md`
34
- - `competitors.csv`
35
- - `sources.json`
36
- - `manifest.json`
37
-
38
- ## Method
39
-
40
- 1. State the question, the market boundary, and the date. A market report without
41
- an explicit as-of date decays silently.
42
- 2. Map competitors by the dimension that actually differentiates them, not by
43
- feature checklist. Say what each one is genuinely best at.
44
- 3. Segment the audience by job-to-be-done and note which segments are underserved.
45
- 4. Analyse pricing as packaging: what is metered, what is gated, where the
46
- upgrade pressure sits.
47
- 5. Separate what you verified from what you inferred, and record every source
48
- with its URL and access date. Use your own web tools or sources the user
49
- supplied; do not invent citations.
50
- 6. Close with the two or three findings that would change a decision, and say
51
- what evidence would falsify each.
@@ -1,10 +0,0 @@
1
- {
2
- "name": "market-research-report",
3
- "version": "0.1.0",
4
- "private": true,
5
- "description": "Generate market research report artifacts",
6
- "type": "module",
7
- "skills": {
8
- "kind": "instruction"
9
- }
10
- }
@@ -1,52 +0,0 @@
1
- ---
2
- name: meeting-pack
3
- description: Generate meeting artifact packs from transcripts or notes with summaries, decisions, action items, owner/deadline tables, follow-up email, project export, timeline, and manifest metadata.
4
- kind: instruction
5
- ---
6
-
7
- # Meeting Pack
8
-
9
- Generate a complete meeting artifact package from transcripts, notes, call summaries, or rough bullets.
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
- | `notes` | Meeting transcript, rough notes, or summary. Positional text also works. | required unless `--source` is used |
26
- | `source` | Read notes or transcript from a file. | none |
27
- | `meeting` | Meeting title. | Meeting |
28
- | `participants` | Comma-separated participant names. | Team |
29
- | `format` | `project`, `executive`, `sales`, or `standup`. | project |
30
-
31
- ## Deliverables
32
-
33
- - `meeting-summary.md`
34
- - `decisions.md`
35
- - `action-items.csv`
36
- - `follow-up-email.md`
37
- - `project-export.json`
38
- - `timeline.md`
39
- - `manifest.json`
40
-
41
- ## Method
42
-
43
- 1. Read the transcript fully before summarizing; decisions are often reversed
44
- later in the same meeting.
45
- 2. Separate decisions from discussion. A decision has an owner and a resolution;
46
- everything else is context.
47
- 3. Extract action items with owner, deadline, and the acceptance condition. An
48
- action item without an owner will not happen.
49
- 4. Flag anything explicitly deferred, and anything raised but never resolved —
50
- the second category is what meetings routinely lose.
51
- 5. Build the timeline from what was said, not from what you expect the process to be.
52
- 6. Draft the follow-up email so a non-attendee can act on it without the transcript.
@@ -1,10 +0,0 @@
1
- {
2
- "name": "meeting-pack",
3
- "version": "0.1.0",
4
- "private": true,
5
- "description": "Hosted premium meeting artifact package generator",
6
- "type": "module",
7
- "skills": {
8
- "kind": "instruction"
9
- }
10
- }
@@ -1,19 +0,0 @@
1
- # merge-pdfs
2
-
3
- Merge Pdfs skill.
4
-
5
- ## Tech Stack
6
-
7
- - Runtime: Bun
8
- - Language: TypeScript
9
- - CLI: Commander.js
10
-
11
- ## CLI
12
-
13
- ```bash
14
- merge-pdfs run
15
- ```
16
-
17
- ## Data Directory
18
-
19
- ~/.skill/merge-pdfs/
@@ -1,31 +0,0 @@
1
- {
2
- "name": "merge-pdfs",
3
- "version": "0.1.0",
4
- "description": "Merge Pdfs skill",
5
- "type": "module",
6
- "bin": {
7
- "merge-pdfs": "./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
- "pdf-lib": "^1.17.1",
16
- "minimist": "^1.2.8",
17
- "glob": "^11.1.0"
18
- },
19
- "devDependencies": {
20
- "@types/bun": "latest",
21
- "typescript": "^5.7.0"
22
- },
23
- "publishConfig": {
24
- "access": "restricted",
25
- "registry": "https://registry.npmjs.org/"
26
- },
27
- "files": [
28
- "src",
29
- "tsconfig.json"
30
- ]
31
- }
@@ -1,427 +0,0 @@
1
- #!/usr/bin/env bun
2
-
3
- import { PDFDocument, rgb, StandardFonts, degrees } from "pdf-lib";
4
- import * as fs from "fs";
5
- import * as path from "path";
6
- import minimist from "minimist";
7
- import { globSync } from "glob";
8
-
9
- // Types
10
- interface FileSpec {
11
- path: string;
12
- pages: string;
13
- }
14
-
15
- interface MergeOptions {
16
- output: string;
17
- bookmarks: boolean;
18
- sort: "none" | "name" | "date" | "size";
19
- reverse: boolean;
20
- blankBetween: boolean;
21
- title: string | null;
22
- author: string | null;
23
- rotate: number;
24
- compress: boolean;
25
- pageNumbers: boolean;
26
- pageNumberFormat: string;
27
- pageNumberPosition: string;
28
- }
29
-
30
- // Parse command line arguments
31
- const args = minimist(process.argv.slice(2), {
32
- string: [
33
- "output",
34
- "sort",
35
- "title",
36
- "author",
37
- "page-number-format",
38
- "page-number-position",
39
- ],
40
- boolean: [
41
- "bookmarks",
42
- "reverse",
43
- "blank-between",
44
- "compress",
45
- "page-numbers",
46
- "help",
47
- ],
48
- default: {
49
- output: "merged.pdf",
50
- sort: "none",
51
- reverse: false,
52
- bookmarks: false,
53
- "blank-between": false,
54
- compress: false,
55
- "page-numbers": false,
56
- "page-number-format": "Page {n}",
57
- "page-number-position": "bottom-center",
58
- rotate: 0,
59
- },
60
- alias: {
61
- o: "output",
62
- h: "help",
63
- },
64
- });
65
-
66
- // Show help
67
- if (args.help || args._.length === 0) {
68
- console.log(`
69
- Merge PDFs - Combine multiple PDF files into one
70
-
71
- Usage:
72
- skills run merge-pdfs -- <file1.pdf> [file2.pdf...] [options]
73
-
74
- Options:
75
- -o, --output <file> Output file path (default: merged.pdf)
76
- --bookmarks Add bookmarks for each source file
77
- --sort <type> Sort order: none, name, date, size (default: none)
78
- --reverse Reverse the merge order
79
- --blank-between Insert blank page between documents
80
- --title <text> Set PDF title metadata
81
- --author <text> Set PDF author metadata
82
- --rotate <degrees> Rotate all pages: 0, 90, 180, 270
83
- --compress Compress output PDF
84
- --page-numbers Add page numbers
85
- --page-number-format <fmt> Format: "Page {n}" or "Page {n} of {total}"
86
- --page-number-position <pos> Position: top/bottom-left/center/right
87
- -h, --help Show this help message
88
-
89
- Page Selection:
90
- file.pdf All pages
91
- file.pdf:1-5 Pages 1 through 5
92
- file.pdf:1,3,5 Specific pages
93
- file.pdf:1-3,7,10-12 Mixed ranges
94
-
95
- Examples:
96
- skills run merge-pdfs -- doc1.pdf doc2.pdf -o combined.pdf
97
- skills run merge-pdfs -- "doc.pdf:1-5" "other.pdf:2,4" -o output.pdf
98
- skills run merge-pdfs -- ./docs/*.pdf --sort name --bookmarks -o book.pdf
99
- `);
100
- process.exit(0);
101
- }
102
-
103
- // Parse options
104
- const options: MergeOptions = {
105
- output: args.output,
106
- bookmarks: args.bookmarks,
107
- sort: args.sort as MergeOptions["sort"],
108
- reverse: args.reverse,
109
- blankBetween: args["blank-between"],
110
- title: args.title || null,
111
- author: args.author || null,
112
- rotate: parseInt(args.rotate) || 0,
113
- compress: args.compress,
114
- pageNumbers: args["page-numbers"],
115
- pageNumberFormat: args["page-number-format"],
116
- pageNumberPosition: args["page-number-position"],
117
- };
118
-
119
- // Parse file spec (path:pages)
120
- function parseFileSpec(spec: string): FileSpec {
121
- const colonIndex = spec.lastIndexOf(":");
122
- // Check if colon is part of page spec (not Windows drive letter)
123
- if (colonIndex > 1 && !spec.substring(colonIndex + 1).includes("/")) {
124
- const possiblePages = spec.substring(colonIndex + 1);
125
- if (/^[\d,\-all]+$/i.test(possiblePages)) {
126
- return {
127
- path: spec.substring(0, colonIndex),
128
- pages: possiblePages.toLowerCase(),
129
- };
130
- }
131
- }
132
- return { path: spec, pages: "all" };
133
- }
134
-
135
- // Parse page range into array of page indices (0-based)
136
- function parsePageRange(pageStr: string, totalPages: number): number[] {
137
- if (pageStr === "all") {
138
- return Array.from({ length: totalPages }, (_, i) => i);
139
- }
140
-
141
- const pages: Set<number> = new Set();
142
- const parts = pageStr.split(",").map((p) => p.trim());
143
-
144
- for (const part of parts) {
145
- if (part.includes("-")) {
146
- const [startStr, endStr] = part.split("-");
147
- const start = startStr ? parseInt(startStr) : 1;
148
- const end = endStr ? parseInt(endStr) : totalPages;
149
- for (let i = start - 1; i < Math.min(end, totalPages); i++) {
150
- if (i >= 0) pages.add(i);
151
- }
152
- } else {
153
- const pageNum = parseInt(part) - 1;
154
- if (pageNum >= 0 && pageNum < totalPages) {
155
- pages.add(pageNum);
156
- }
157
- }
158
- }
159
-
160
- return Array.from(pages).sort((a, b) => a - b);
161
- }
162
-
163
- // Expand glob patterns and get file list
164
- function getFileList(specs: string[]): FileSpec[] {
165
- const files: FileSpec[] = [];
166
-
167
- for (const spec of specs) {
168
- const { path: pattern, pages } = parseFileSpec(spec);
169
-
170
- // Try glob expansion
171
- const matches = globSync(pattern);
172
-
173
- if (matches.length === 0) {
174
- // No glob match, try as literal path
175
- if (fs.existsSync(pattern)) {
176
- files.push({ path: pattern, pages });
177
- } else {
178
- console.warn(`Warning: File not found: ${pattern}`);
179
- }
180
- } else {
181
- for (const match of matches) {
182
- if (match.toLowerCase().endsWith(".pdf")) {
183
- files.push({ path: match, pages });
184
- }
185
- }
186
- }
187
- }
188
-
189
- return files;
190
- }
191
-
192
- // Sort files based on option
193
- function sortFiles(files: FileSpec[], sortBy: string, reverse: boolean): FileSpec[] {
194
- const sorted = [...files];
195
-
196
- switch (sortBy) {
197
- case "name":
198
- sorted.sort((a, b) =>
199
- path.basename(a.path).localeCompare(path.basename(b.path))
200
- );
201
- break;
202
- case "date":
203
- sorted.sort((a, b) => {
204
- const statA = fs.statSync(a.path);
205
- const statB = fs.statSync(b.path);
206
- return statA.mtime.getTime() - statB.mtime.getTime();
207
- });
208
- break;
209
- case "size":
210
- sorted.sort((a, b) => {
211
- const statA = fs.statSync(a.path);
212
- const statB = fs.statSync(b.path);
213
- return statA.size - statB.size;
214
- });
215
- break;
216
- }
217
-
218
- if (reverse) {
219
- sorted.reverse();
220
- }
221
-
222
- return sorted;
223
- }
224
-
225
- // Add page numbers to document
226
- async function addPageNumbers(
227
- pdfDoc: PDFDocument,
228
- format: string,
229
- position: string
230
- ): Promise<void> {
231
- const pages = pdfDoc.getPages();
232
- const totalPages = pages.length;
233
- const font = await pdfDoc.embedFont(StandardFonts.Helvetica);
234
- const fontSize = 10;
235
-
236
- for (let i = 0; i < pages.length; i++) {
237
- const page = pages[i];
238
- const { width, height } = page.getSize();
239
-
240
- const text = format
241
- .replace("{n}", String(i + 1))
242
- .replace("{total}", String(totalPages));
243
-
244
- const textWidth = font.widthOfTextAtSize(text, fontSize);
245
-
246
- let x: number;
247
- let y: number;
248
-
249
- // Determine position
250
- const [vPos, hPos] = position.split("-");
251
-
252
- // Vertical position
253
- if (vPos === "top") {
254
- y = height - 30;
255
- } else {
256
- y = 20;
257
- }
258
-
259
- // Horizontal position
260
- switch (hPos) {
261
- case "left":
262
- x = 30;
263
- break;
264
- case "right":
265
- x = width - textWidth - 30;
266
- break;
267
- default: // center
268
- x = (width - textWidth) / 2;
269
- }
270
-
271
- page.drawText(text, {
272
- x,
273
- y,
274
- size: fontSize,
275
- font,
276
- color: rgb(0.3, 0.3, 0.3),
277
- });
278
- }
279
- }
280
-
281
- // Create a blank page with same size as reference
282
- function createBlankPage(pdfDoc: PDFDocument, width: number, height: number) {
283
- return pdfDoc.addPage([width, height]);
284
- }
285
-
286
- // Main merge function
287
- async function mergePdfs(fileSpecs: FileSpec[]): Promise<void> {
288
- console.log(`\nMerging ${fileSpecs.length} PDF files...\n`);
289
-
290
- // Create output document
291
- const mergedPdf = await PDFDocument.create();
292
-
293
- // Track source documents for bookmarks
294
- const bookmarkInfo: { title: string; pageIndex: number }[] = [];
295
- let totalSourcePages = 0;
296
- const sourceStats: { name: string; pages: number }[] = [];
297
-
298
- // Process each file
299
- for (const spec of fileSpecs) {
300
- console.log(`Processing: ${spec.path}`);
301
-
302
- try {
303
- const fileBytes = fs.readFileSync(spec.path);
304
- const sourcePdf = await PDFDocument.load(fileBytes);
305
- const sourcePageCount = sourcePdf.getPageCount();
306
-
307
- // Get pages to include
308
- const pageIndices = parsePageRange(spec.pages, sourcePageCount);
309
- console.log(` - Including ${pageIndices.length} of ${sourcePageCount} pages`);
310
-
311
- // Record bookmark position
312
- if (options.bookmarks) {
313
- bookmarkInfo.push({
314
- title: path.basename(spec.path, ".pdf"),
315
- pageIndex: mergedPdf.getPageCount(),
316
- });
317
- }
318
-
319
- // Copy pages
320
- const copiedPages = await mergedPdf.copyPages(sourcePdf, pageIndices);
321
-
322
- for (const page of copiedPages) {
323
- // Apply rotation if specified
324
- if (options.rotate !== 0) {
325
- page.setRotation(degrees(options.rotate));
326
- }
327
- mergedPdf.addPage(page);
328
- }
329
-
330
- // Add blank page between documents if requested
331
- if (options.blankBetween && spec !== fileSpecs[fileSpecs.length - 1]) {
332
- const lastPage = copiedPages[copiedPages.length - 1];
333
- const { width, height } = lastPage.getSize();
334
- createBlankPage(mergedPdf, width, height);
335
- }
336
-
337
- totalSourcePages += pageIndices.length;
338
- sourceStats.push({
339
- name: path.basename(spec.path),
340
- pages: pageIndices.length,
341
- });
342
- } catch (error: any) {
343
- console.error(` Error processing ${spec.path}: ${error.message}`);
344
- }
345
- }
346
-
347
- // Set metadata
348
- if (options.title) {
349
- mergedPdf.setTitle(options.title);
350
- }
351
- if (options.author) {
352
- mergedPdf.setAuthor(options.author);
353
- }
354
- mergedPdf.setCreator("merge-pdfs skill");
355
- mergedPdf.setProducer("pdf-lib");
356
- mergedPdf.setCreationDate(new Date());
357
- mergedPdf.setModificationDate(new Date());
358
-
359
- // Add page numbers if requested
360
- if (options.pageNumbers) {
361
- console.log("\nAdding page numbers...");
362
- await addPageNumbers(
363
- mergedPdf,
364
- options.pageNumberFormat,
365
- options.pageNumberPosition
366
- );
367
- }
368
-
369
- // Note: pdf-lib doesn't support bookmarks/outlines directly
370
- // For full bookmark support, we'd need a different library
371
- if (options.bookmarks && bookmarkInfo.length > 0) {
372
- console.log("\nNote: Bookmark metadata recorded (visual bookmarks require additional processing)");
373
- }
374
-
375
- // Save output
376
- console.log("\nSaving merged PDF...");
377
- const outputBytes = await mergedPdf.save();
378
-
379
- // Ensure output directory exists
380
- const outputDir = path.dirname(options.output);
381
- if (outputDir && !fs.existsSync(outputDir)) {
382
- fs.mkdirSync(outputDir, { recursive: true });
383
- }
384
-
385
- fs.writeFileSync(options.output, outputBytes);
386
-
387
- // Print summary
388
- console.log(`\n${"=".repeat(50)}`);
389
- console.log(`Merged ${fileSpecs.length} files (${mergedPdf.getPageCount()} pages total) into: ${options.output}`);
390
- console.log("=".repeat(50));
391
- for (const stat of sourceStats) {
392
- console.log(` - ${stat.name}: ${stat.pages} pages`);
393
- }
394
- console.log("");
395
-
396
- const outputSize = fs.statSync(options.output).size;
397
- console.log(`Output file size: ${(outputSize / 1024 / 1024).toFixed(2)} MB`);
398
- console.log("\nDone!");
399
- }
400
-
401
- // Main execution
402
- async function main() {
403
- try {
404
- // Get file list
405
- let files = getFileList(args._ as string[]);
406
-
407
- if (files.length === 0) {
408
- console.error("Error: No valid PDF files found");
409
- process.exit(1);
410
- }
411
-
412
- if (files.length === 1) {
413
- console.warn("Warning: Only one file specified, nothing to merge");
414
- }
415
-
416
- // Sort files
417
- files = sortFiles(files, options.sort, options.reverse);
418
-
419
- // Perform merge
420
- await mergePdfs(files);
421
- } catch (error: any) {
422
- console.error(`Error: ${error.message}`);
423
- process.exit(1);
424
- }
425
- }
426
-
427
- main();
@@ -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,56 +0,0 @@
1
- ---
2
- name: migration-plan-pack
3
- description: Generate migration planning packs for framework, library, database, infrastructure, or architecture upgrades with risk matrix, checklist, rollout plan, and test strategy.
4
- kind: instruction
5
- ---
6
-
7
- # Migration Plan Pack
8
-
9
- Generate a migration package from current state, target state, system context, and operating constraints. Hosted runs can inspect richer project inputs, while local direct execution produces deterministic artifacts for validation.
10
-
11
- ## Requirements
12
-
13
- None. This is an instruction skill: it is prose an agent follows, so it needs no
14
- credentials, no network access, and no local runtime.
15
-
16
- ## Usage
17
-
18
- Ask an agent for the deliverables below and give it the inputs. Reading this file
19
- IS the invocation; `skills run` refuses instruction skills on purpose.
20
-
21
- ## Inputs
22
-
23
- | Input | Description | Default |
24
- |--------|-------------|---------|
25
- | `system` | Product, repo, app, or service being migrated. | Migration Target |
26
- | `from` | Current framework, library, database, infrastructure, or architecture state. | current state |
27
- | `to` | Desired target state. | target state |
28
- | `scope` | Comma-separated systems or workstreams in scope. | app, data, deploy, tests |
29
- | `constraints` | Risk, downtime, compliance, billing, or operational constraints. | optional |
30
- | `deadline` | Date, release train, or migration window. | optional |
31
- | `strategy` | `phased`, `big-bang`, or `parallel-run`. | phased |
32
-
33
- ## Deliverables
34
-
35
- - `migration-plan.md`
36
- - `risk-matrix.csv`
37
- - `ordered-checklist.md`
38
- - `test-strategy.md`
39
- - `dependency-map.json`
40
- - `rollout-plan.md`
41
- - `manifest.json`
42
-
43
- ## Method
44
-
45
- 1. Establish the from/to states precisely, including versions, and list what is
46
- explicitly out of scope.
47
- 2. Map dependencies before sequencing. The order is forced by the dependency
48
- graph, not by preference.
49
- 3. Identify the irreversible steps. These dominate the plan: everything else can
50
- be retried.
51
- 4. Build the risk matrix with a concrete mitigation and a rollback for each row.
52
- "Monitor closely" is not a mitigation.
53
- 5. Define the cutover checklist as ordered, individually verifiable steps with an
54
- explicit go/no-go gate.
55
- 6. Specify the test strategy per phase, including how you prove parity between
56
- old and new rather than merely that the new one starts.
@@ -1,10 +0,0 @@
1
- {
2
- "name": "migration-plan-pack",
3
- "version": "0.1.0",
4
- "private": true,
5
- "description": "Hosted premium migration planning pack generator",
6
- "type": "module",
7
- "skills": {
8
- "kind": "instruction"
9
- }
10
- }