@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,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
- }