@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,28 +0,0 @@
1
- {
2
- "pr_view": {
3
- "state": "MERGED",
4
- "mergedAt": "2026-07-23T15:36:23Z",
5
- "mergeCommit": {
6
- "oid": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
7
- },
8
- "headRefOid": "2797e3264c416018c06608434c0c57340f647330",
9
- "baseRefName": "main",
10
- "url": "https://github.com/hasna/tai/pull/4"
11
- },
12
- "source_commits": [
13
- {
14
- "oid": "5d38cd4fe95556a06f7d9f31481ce88c8bb78e85",
15
- "message": "ci: add provider-native validation workflow"
16
- },
17
- {
18
- "oid": "2797e3264c416018c06608434c0c57340f647330",
19
- "message": "ci: disable setup action cache and token"
20
- }
21
- ],
22
- "commit": {
23
- "sha": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
24
- "commit": {
25
- "message": "ci: add provider-native validation workflow (#4)\n\nMerge validated changes with an explicit sanitized message."
26
- }
27
- }
28
- }
@@ -1,115 +0,0 @@
1
- ---
2
- name: skill-goal-execute
3
- description: Take a high-level goal and drive it to done — break it into tasks via the todos CLI, open a goal thread in the project's conversations channel, create a plan in todos, generate the tasks under that plan, then execute them one by one until complete. Use for 'execute this goal', 'break down and do X', 'set a goal and run it'.
4
- user_invocable: true
5
- ---
6
-
7
- # skill-goal-execute — Goal → Channel Thread → Plan → Tasks → Execute
8
-
9
- Turn a stated goal into structured, tracked, executed work. This skill is the bridge
10
- between "here's what I want" and "it's done", using the three canonical systems:
11
- **conversations** (one goal thread in the project's channel), **todos** (a plan +
12
- tasks), and **mementos** (learnings as you go).
13
-
14
- ## Inputs
15
-
16
- - **The goal** — what the user wants achieved (one or more sentences).
17
- - **The project** — the project this goal belongs to. If global / not tied to a
18
- project, use the **machine-name** project returned by `hostname`.
19
-
20
- ## Workflow
21
-
22
- ### 0. Log in & route
23
-
24
- Ensure you're logged in as an agent (`skill-login`). Determine the target
25
- project; for global work ensure the machine-name project exists
26
- (`todos projects --add "$HOME" --name "$(hostname | sed 's/\.local$//')"`).
27
-
28
- ### 1. Open a goal thread in the project's conversations channel
29
-
30
- Every project has ONE channel, named per the channel classes (flat repo name
31
- for repo/package projects, full name for `platform-*`/`iapp-*`/`cweb-*`/
32
- `community-*` products, `oss-*`/`internal-*`/`research-*` for initiatives —
33
- same naming as `skill-project-create`). Goals do NOT get their own channels:
34
- one thread per goal inside the project channel, updated in-thread.
35
-
36
- ```bash
37
- # Ensure the project's channel exists (create if missing; "already exists" is fine)
38
- conversations channel create "<project-channel>" --description "<project> coordination" --from <agent> 2>/dev/null || true
39
- conversations channel join "<project-channel>" --from <agent>
40
-
41
- # Open the goal thread: post the kickoff and capture its message id
42
- GOAL_MSG_ID=$(conversations send "🎯 Goal: <goal>. Breaking into a plan + tasks now." \
43
- --channel "<project-channel>" --from <agent> -j \
44
- | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
45
- ```
46
-
47
- Machines have no channels of their own (machine traffic folds into `ops`), so
48
- for global / machine-level goals open the thread in `ops` instead.
49
-
50
- ### 2. Create a plan in todos
51
-
52
- ```bash
53
- todos plans --add "<goal title>" -d "<the goal, in full>"
54
- # capture the returned PLAN_ID
55
- ```
56
-
57
- ### 3. Break the goal into tasks under that plan
58
-
59
- Decompose the goal into concrete, ordered, individually-verifiable steps. Create each
60
- as a task assigned to the plan and the project:
61
-
62
- ```bash
63
- todos add "<step 1>" --plan "<PLAN_ID>" --project "<project>" -p high
64
- todos add "<step 2>" --plan "<PLAN_ID>" --project "<project>" -p high
65
- # ... one per step. Use --parent for sub-steps and deps for ordering if needed.
66
- ```
67
-
68
- Post the breakdown to the goal thread so it's visible:
69
-
70
- ```bash
71
- conversations reply "<plan id + task list>" --to $GOAL_MSG_ID --from <agent>
72
- ```
73
-
74
- ### 4. Execute the tasks ONE BY ONE
75
-
76
- Work strictly one task at a time — never batch:
77
-
78
- ```
79
- for each task in plan order:
80
- todos start <id> # claim + in_progress
81
- ... do the work, verify it actually works ...
82
- todos comment <id> "<what was done / result>"
83
- todos done <id> # only after verified
84
- conversations reply "✓ <task title>" --to $GOAL_MSG_ID --from <agent>
85
- (save a memory with skill-memory-save if something non-obvious was learned)
86
- ```
87
-
88
- Respect the "execute tasks one by one — never in bulk" rule: each task gets individual
89
- attention and verification before moving on.
90
-
91
- ### 5. Close out
92
-
93
- When all tasks are done:
94
-
95
- ```bash
96
- todos plans --complete "<PLAN_ID>"
97
- conversations reply "🏁 Goal complete: <goal>. <summary of what shipped>." --to $GOAL_MSG_ID --from <agent>
98
- ```
99
-
100
- Save a summary memory (`skill-memory-save`) capturing the outcome and any decisions.
101
-
102
- ## Rules
103
-
104
- - ALWAYS: goal thread (project channel) → plan (todos) → tasks (todos) → execute one
105
- by one. Don't skip the plan or the thread.
106
- - One thread per goal in the project's channel — never a per-goal channel, never
107
- duplicate threads; update in-thread (`conversations reply --to <goal-msg-id>`).
108
- - The project channel follows the channel-class naming (see `skill-project-create`);
109
- global/machine goals thread into `ops`.
110
- - Route the plan/tasks to the specific project, or the machine-name project for global
111
- goals.
112
- - Execute tasks individually and verify each before completing — never bulk-complete.
113
- - Post progress to the goal thread; save learnings to mementos. Never go dark.
114
- - Prefer the CLIs (`todos`, `conversations`, `mementos`); fall back from MCP to CLI if
115
- an MCP is stale/broken.
@@ -1,109 +0,0 @@
1
- ---
2
- name: skill-login
3
- description: Full session start — reuse or register an agent identity across todos, conversations, and mementos, send a heartbeat, join your duty channels per agent class, then check unread messages and pending tasks. Run this at the very start of EVERY session. (Replaces the former skill-agent-login.)
4
- user_invocable: true
5
- ---
6
-
7
- # skill-login — Session Start
8
-
9
- Log in at the very start of every session: make sure the session has an agent
10
- identity, signal you're active, join the channels your class owes attention to,
11
- and catch up on what you missed. This is the full flow; for bare registration
12
- only, see **`skill-register`**.
13
-
14
- **Subagent carve-out (hard rule): SUBAGENTS NEVER REGISTER, JOIN, OR
15
- SUBSCRIBE.** A subagent inherits its parent's identity and context and posts
16
- only where the parent directs. If you were spawned by another agent, skip this
17
- skill entirely.
18
-
19
- ## Workflow
20
-
21
- ### 1. Reuse or register an identity
22
-
23
- Register only if the session lacks an identity — never mint a duplicate.
24
- Standing roles (chief, loop runners, named coordinators) keep their stable
25
- identity across sessions.
26
-
27
- ```bash
28
- conversations whoami # already have an identity? reuse it, go to step 2
29
- ```
30
-
31
- If the session has no identity: pick an unused Roman name and register across
32
- **todos + conversations + mementos** (see **`skill-register`** for the name
33
- pool and exact commands):
34
-
35
- ```bash
36
- todos agents # see who's active, pick an unused Roman name
37
- todos init <name> # or mcp__todos__register_agent(name, working_dir)
38
- conversations agents register <name> # or mcp__conversations__register_agent(name)
39
- mementos register-agent <name> # or mcp__mementos__register_agent(name)
40
- ```
41
-
42
- ### 2. Send a heartbeat
43
-
44
- ```bash
45
- todos heartbeat <name> # or conversations agents heartbeat
46
- ```
47
-
48
- Repeat every 30 minutes while active, and immediately after claiming or
49
- completing a task.
50
-
51
- ### 3. Join your duty channels (per agent class)
52
-
53
- Join = membership + unread tracking (`conversations channel join`). Subscribe =
54
- preview-only notifications (`conversations channel subscribe`).
55
-
56
- | Class | Join | Subscribe |
57
- |---|---|---|
58
- | Interactive coordinator | `announcements`, `incidents`, `agent-policy` + owned project channels | `help`, `oss-cloud-runtime` |
59
- | Interactive worker | `announcements` + current task's channel (at claim; may leave at completion) | `incidents` |
60
- | Headless loop identity (stable, per-loop) | its `loops-*` lane + serviced package channel | `announcements` |
61
- | chief (standing) | all fleet-tier channels | all `loops-*` |
62
- | Subagent | NOTHING — never register, join, or subscribe | — |
63
-
64
- ```bash
65
- # interactive worker example
66
- conversations channel join announcements --from <name>
67
- conversations channel subscribe incidents --from <name>
68
- # join the task's project channel when you claim the task
69
- ```
70
-
71
- ### 4. Check in — unread messages and pending tasks
72
-
73
- Bounded to 7 days so a fresh identity is never handed full history as unread.
74
- `--since` requires an ISO timestamp (durations like `7d` silently match
75
- nothing):
76
-
77
- ```bash
78
- SINCE=$(date -u -d '7 days ago' +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -v-7d +%Y-%m-%dT%H:%M:%SZ)
79
- conversations context # one-shot boot context
80
- conversations blockers -j --from <name> # unread blocking messages
81
- conversations digest announcements --unread --since "$SINCE" --mark-read --from <name>
82
- conversations digest incidents --unread --since "$SINCE" --from <name>
83
- todos list --status pending --agent <name> # tasks waiting on you
84
- todos list --status in_progress # anything mid-flight
85
- ```
86
-
87
- Clear mentions directed at you before starting work. An unread `[FREEZE]`
88
- means stop and escalate to `help`.
89
-
90
- ### 5. Report
91
-
92
- ```
93
- Logged in as <name> (todos id: <id>).
94
- - Blockers: N | unread announcements/incidents: N
95
- - Channels joined: <list per class matrix>
96
- - Pending/assigned tasks: N
97
- - Ready to work.
98
- ```
99
-
100
- ## Rules
101
-
102
- - Run at the start of EVERY session, before doing work. Mandatory.
103
- - Register only when the session has no identity; reuse standing identities.
104
- - SUBAGENTS NEVER REGISTER, JOIN, OR SUBSCRIBE — they inherit the parent's context.
105
- - When registering: ALWAYS all three systems; ALWAYS heartbeat; ALWAYS check
106
- messages+tasks; ALWAYS apply your class's duty-channel row right after.
107
- - Pick a Roman name not currently active to avoid collisions.
108
- - If any MCP is unavailable, use its CLI immediately.
109
- - For just (re)registering identity without the check-in, use `skill-register`.
@@ -1,91 +0,0 @@
1
- ---
2
- name: skill-project-create
3
- description: Bootstrap a brand-new Hasna repo project or work project with the current `projects create`/`start` workflow, register todos/conversations, create the project's conversations channel, and preserve the intended category and naming convention.
4
- user_invocable: true
5
- ---
6
-
7
- # skill-project-create
8
-
9
- Create a new project end to end: folder, Projects registry row, todos tracking,
10
- the project conversations channel, and launch session. First classify it as a
11
- repo project or work project.
12
-
13
- ## Inputs
14
-
15
- - Name or idea from the user.
16
- - Description derived from the prompt.
17
- - Division/root, inferred when obvious.
18
- - Category: repo project or work project.
19
-
20
- ## Naming
21
-
22
- Repo projects are code repositories/apps such as `open-*`, platform repos, and
23
- internal apps. Work projects are business/research/operations folders under
24
- `.../project/<project-name>`.
25
-
26
- For new work projects, follow the user's requested name and the local root
27
- convention. Existing work folders may already use `project-*`; do not rename or
28
- collapse those names during import. For new repo projects, use the repo's naming
29
- convention, such as `open-<name>` for Hasna OSS apps.
30
-
31
- The project channel is named after the slug (flat repo name for repo projects).
32
- Channel class for the topic line: `package` for `open-*` and other repo/package
33
- projects, `product` for `platform-*`/`iapp-*`/`cweb-*`/`community-*`, and
34
- `initiative` for work projects (`oss-*`/`internal-*`/`research-*`) — initiative
35
- topics must carry `owner:<agent> until:<date|gate-id>`. When the installed
36
- conversations CLI supports `--class` on `channel create` (newer than 0.3.3),
37
- pass `--class <package|product|initiative>` as well so the class lands in
38
- `metadata.channel_schema.class`; the topic line stays either way.
39
-
40
- ## Workflow
41
-
42
- ```bash
43
- export HASNA_PROJECTS_DB_PATH="$HOME/.hasna/projects/projects.db"
44
- export HASNA_PROJECTS_HOME="$HOME/.hasna/projects"
45
- projects roots list --json
46
- mkdir -p "<path>"
47
- projects create \
48
- --name "<Name>" \
49
- --slug "<slug>" \
50
- --path "<path>" \
51
- --kind "<project|open-source|internal-app|platform>" \
52
- --description "<description>" \
53
- --tmux
54
- todos projects --add "<path>" --name "<slug>"
55
- # Every project has a conversations channel — create it if missing, then join.
56
- # "Already exists" is fine; join and continue.
57
- conversations channel create "<slug>" \
58
- --description "<description>" \
59
- --topic "class:<package|product|initiative> owner:<agent>" \
60
- --from <agent>
61
- conversations channel join "<slug>" --from <agent>
62
- conversations send "project created: <slug> — <description>" \
63
- --channel "<slug>" --from <agent>
64
- projects show "<slug>" --json
65
- projects status "<slug>" --json
66
- projects context "<slug>" --for-agent
67
- ```
68
-
69
- Use `projects publish <slug>` only for repo projects and only when the user wants
70
- a GitHub repository now.
71
-
72
- The project channel is the project's coordination home from this point on:
73
- post there when you claim a task, get blocked, hit a milestone, or finish
74
- (max 3 lines: task id, state, next step).
75
-
76
- ## Safety
77
-
78
- - Keep secrets out of the repo; use vaults or gitignored `.secrets/`.
79
- - `cleanup-create` is for rollback of a creation run only; do not use it for
80
- imported rows.
81
- - Do not delete source directories without backup and a clear registry/import
82
- undo plan.
83
- - Store/canvas/loop commands are allowed only when `projects --help` on the
84
- active machine shows `store`, `canvases`, and `loops`.
85
-
86
- ## Done When
87
-
88
- The folder exists, `projects show` resolves it, `projects status` reports the
89
- launch state, todos is registered, the project conversations channel exists
90
- with you joined and the creation message posted, and the description and path
91
- are reported.
@@ -1,207 +0,0 @@
1
- ---
2
- name: skill-publish
3
- description: Full publish workflow for @hasna npm packages. Runs tests, logical commits, push, OSS checks (if hasna org), posts publish intent to git-publishing, publishes to npm, installs locally via bun, verifies via CLI, confirms in-thread. Never uses npm to install.
4
- user_invocable: true
5
- ---
6
-
7
- # skill-publish — Full Publish Workflow
8
-
9
- Complete end-to-end publish for `@hasna/*` packages. Covers OSS requirements,
10
- version bump, validation, PR merge, publish intent to `git-publishing`, npm
11
- registry publish, bun install, CLI verification, and in-thread confirmation.
12
-
13
- ## Workflow
14
-
15
- ### 1. Pre-flight checks
16
-
17
- ```bash
18
- # Detect org from git remote
19
- REMOTE=$(git remote get-url origin)
20
- ORG=$(echo $REMOTE | grep -oP '(?<=github\.com[:/])[^/]+')
21
- PKG=$(cat package.json | python3 -c "import sys,json; print(json.load(sys.stdin)['name'])")
22
- echo "Org: $ORG | Package: $PKG"
23
- ```
24
-
25
- ### 2. OSS checks (hasna org only)
26
-
27
- If org is `hasna` (public open source), verify before doing anything else:
28
-
29
- **LICENSE** — Must be Apache 2.0:
30
- ```bash
31
- [ -f LICENSE ] || echo "MISSING: LICENSE file"
32
- grep -q "Apache" LICENSE 2>/dev/null || echo "WRONG LICENSE: must be Apache-2.0"
33
- ```
34
- If missing, create it (full Apache 2.0 text). Update `package.json` → `"license": "Apache-2.0"`.
35
-
36
- **README.md** — Must exist with at minimum: package name, description, install command, basic usage.
37
-
38
- **package.json** fields required:
39
- - `"license": "Apache-2.0"`
40
- - `"description"` — non-empty
41
- - `"repository"` — pointing to github.com/hasna/<name>
42
- - `"publishConfig": { "registry": "https://registry.npmjs.org", "access": "public" }`
43
-
44
- **GitHub repo visibility** — Hasna OSS packages must be public, but changing
45
- repo visibility is a risky disclosure action. Check it and stop for explicit
46
- human approval if it is private; do not auto-flip visibility inside this skill.
47
- ```bash
48
- if gh repo view --json isPrivate -q '.isPrivate' | grep -q true; then
49
- echo "BLOCKED: repo is private; get explicit approval and complete a full history/secret review before making it public"
50
- exit 1
51
- fi
52
- ```
53
-
54
- If org is `hasnaxyz` (private), ensure:
55
- - `"publishConfig": { "access": "restricted" }`
56
-
57
- ### 3. Bump version on a release branch
58
-
59
- Do release edits on a branch, never directly on `main`.
60
-
61
- ```bash
62
- git switch -c "release/${PKG##*/}-$(date -u +%Y%m%d%H%M%S)"
63
-
64
- # Check current published version. Prefer bun; fall back to npm only if present.
65
- CURRENT=$(bun pm view "$PKG" version 2>/dev/null || npm view "$PKG" version 2>/dev/null || echo "0.0.0")
66
- echo "Current: $CURRENT"
67
-
68
- # Bump patch in package.json unless the user explicitly requested another level.
69
- node -e "
70
- const fs = require('fs');
71
- const pkg = JSON.parse(fs.readFileSync('package.json'));
72
- const parts = pkg.version.split('.').map(Number);
73
- parts[2]++;
74
- pkg.version = parts.join('.');
75
- fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2) + '\n');
76
- console.log('New version:', pkg.version);
77
- "
78
- ```
79
-
80
- ### 4. Run tests and build
81
-
82
- ```bash
83
- bun test 2>&1
84
- [ "$(cat package.json | python3 -c "import sys,json; print('build' in json.load(sys.stdin).get('scripts',{}))")" = "True" ] && bun run build
85
- ```
86
- If tests fail → fix them before continuing. Never publish broken tests.
87
-
88
- ### 5. Secrets scan
89
-
90
- ```bash
91
- git add package.json bun.lock
92
- SECRET_PATTERN='sk-(ant|proj)-|npm_[[:alpha:]]|gh[op]_|AKIA[[:upper:][:digit:]]|xai[-]|AI[z]a'
93
- if git diff --cached --diff-filter=ACM --unified=0 | grep -iE "^\\+[^+].*($SECRET_PATTERN)"; then
94
- echo "SECRETS - STOP"
95
- exit 1
96
- fi
97
- ```
98
-
99
- ### 6. Logical commit, push, PR, and merge
100
-
101
- ```bash
102
- NEW_VERSION=$(cat package.json | python3 -c "import sys,json; print(json.load(sys.stdin)['version'])")
103
- git commit -m "chore: release $PKG@$NEW_VERSION"
104
- git push -u origin HEAD
105
- ```
106
-
107
- Open a PR for the release branch. Wait for required CI and an independent review,
108
- then merge it. After merge, update local `main` and verify that `package.json`
109
- on `main` contains the exact version you are about to publish. Do not publish
110
- from an unmerged branch or unreviewed local commit.
111
-
112
- ```bash
113
- gh pr create --fill
114
- # after CI/review approval:
115
- gh pr merge --squash --delete-branch
116
- git switch main
117
- git pull --ff-only origin main
118
- test "$(cat package.json | python3 -c "import sys,json; print(json.load(sys.stdin)['version'])")" = "$NEW_VERSION"
119
- ```
120
-
121
- ### 7. Post publish intent to git-publishing (BEFORE publishing)
122
-
123
- Fleet rule: publish intent goes to the `git-publishing` channel BEFORE any
124
- `bun publish`/`npm publish`, and the result is confirmed in the same thread
125
- after. Re-check blockers first — an unread `[FREEZE]` means stop and escalate
126
- to `help`.
127
-
128
- ```bash
129
- conversations blockers --from <agent> # unread [FREEZE] → STOP
130
- NEW_VERSION=$(cat package.json | python3 -c "import sys,json; print(json.load(sys.stdin)['version'])")
131
- INTENT_ID=$(conversations send "publish intent: $PKG@$NEW_VERSION — <one-line changelog>" \
132
- --channel git-publishing --from <agent> -j \
133
- | python3 -c "import sys,json; print(json.load(sys.stdin)['id'])")
134
- echo "Intent posted: message $INTENT_ID"
135
- ```
136
-
137
- ### 8. Publish
138
-
139
- ```bash
140
- ACCESS=public
141
- [ "$ORG" = "hasnaxyz" ] && ACCESS=restricted
142
- if command -v bun >/dev/null 2>&1; then
143
- bun publish --access "$ACCESS"
144
- elif command -v npm >/dev/null 2>&1; then
145
- npm publish --access "$ACCESS"
146
- else
147
- echo "BLOCKED: neither bun nor npm publish is available"
148
- exit 1
149
- fi
150
- ```
151
-
152
- ### 9. Install locally via bun (NOT npm)
153
-
154
- ```bash
155
- bun install -g $PKG
156
- ```
157
-
158
- Remove any npm global install if it exists:
159
- ```bash
160
- if command -v npm >/dev/null 2>&1 && npm list -g "$PKG" 2>/dev/null | grep -q "$PKG"; then
161
- npm uninstall -g "$PKG" && echo "Removed npm global install"
162
- fi
163
- ```
164
-
165
- ### 10. Verify via CLI
166
-
167
- Get the CLI binary name from `package.json#bin`, then test it:
168
- ```bash
169
- BIN=$(cat package.json | python3 -c "import sys,json; bins=json.load(sys.stdin).get('bin',{}); print(next(iter(bins), '')) if isinstance(bins, dict) else print('')" 2>/dev/null)
170
- if [ -z "$BIN" ]; then
171
- echo "BLOCKED: package.json has no CLI bin to verify"
172
- exit 1
173
- fi
174
- "$BIN" --version || "$BIN" --help 2>&1 | head -3
175
- echo "$PKG published and verified via $BIN"
176
- ```
177
-
178
- ### 11. Confirm in-thread on git-publishing
179
-
180
- Reply to the intent message — success or failure, always close the thread:
181
-
182
- ```bash
183
- conversations reply "published: $PKG@$NEW_VERSION — verified via $BIN" --to $INTENT_ID --from <agent>
184
- ```
185
-
186
- If the publish failed or was aborted after the intent post:
187
- ```bash
188
- conversations reply "publish aborted: $PKG@$NEW_VERSION — <reason>" --to $INTENT_ID --from <agent>
189
- ```
190
-
191
- Repo releases (GitHub tags/releases) are announced on `git-releases`, not
192
- `git-publishing`.
193
-
194
- ## Rules
195
-
196
- - NEVER `npm install -g` — always `bun install -g`
197
- - NEVER publish from an unmerged branch or unreviewed local commit
198
- - NEVER push release changes directly to `main`; use a branch, PR, CI, review, and merge
199
- - NEVER publish without running tests and build first
200
- - NEVER publish with secrets in the staged diff
201
- - NEVER publish without posting intent to `git-publishing` first (step 7)
202
- - ALWAYS confirm in the intent thread after — published or aborted, no silent exits
203
- - NEVER bump minor or major — patch only unless user explicitly says otherwise
204
- - NEVER skip the CLI verification step
205
- - NEVER auto-change GitHub repo visibility; stop for explicit approval and full history/secret review
206
- - If `hasna` org: Apache 2.0 + public + README required — no exceptions
207
- - If `hasnaxyz` org: restricted access required
@@ -1,45 +0,0 @@
1
- /**
2
- * Skill Authentication Check
3
- * Add this to the top of any skill's main function
4
- */
5
-
6
- export function checkSkillAuth(): void {
7
- const skillsApiKey = process.env.SKILLS_API_KEY || process.env.SKILL_API_KEY;
8
-
9
- if (!skillsApiKey) {
10
- console.error('Error: SKILLS_API_KEY environment variable not set');
11
- console.error('');
12
- console.error('To use hosted execution, set your SKILLS_API_KEY:');
13
- console.error('');
14
- console.error(' export SKILLS_API_KEY=your-api-key-here');
15
- console.error('');
16
- console.error('You can also use the root `skills auth login` command.');
17
- process.exit(1);
18
- }
19
-
20
- if (!skillsApiKey.startsWith('sk-skill-')) {
21
- console.error('Error: Invalid SKILLS_API_KEY format');
22
- console.error('Expected format: sk-skill-xxxxxxxxxxxx');
23
- process.exit(1);
24
- }
25
- }
26
-
27
- /**
28
- * Check if running remotely (via SSH or network)
29
- */
30
- export function isRemoteExecution(): boolean {
31
- return !!(
32
- process.env.SSH_CONNECTION ||
33
- process.env.SSH_CLIENT ||
34
- process.env.SSH_TTY
35
- );
36
- }
37
-
38
- /**
39
- * Require auth only if remote execution
40
- */
41
- export function requireAuthIfRemote(): void {
42
- if (isRemoteExecution()) {
43
- checkSkillAuth();
44
- }
45
- }