@hasna/skills 0.1.62 → 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 (526) 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 -254
  95. package/agent-skills/skill-publish/scripts/capture_registry.js +0 -47
  96. package/agent-skills/skill-publish/scripts/publish_with_git_head.sh +0 -143
  97. package/agent-skills/skill-publish/scripts/test_publish_with_git_head.sh +0 -231
  98. package/skills/_common/auth.ts +0 -45
  99. package/skills/_common/http-client.ts +0 -143
  100. package/skills/_common/index.ts +0 -26
  101. package/skills/_common/install.sh +0 -7
  102. package/skills/_common/installer.ts +0 -72
  103. package/skills/_common/skill-install.ts +0 -37
  104. package/skills/_common/vision.ts +0 -374
  105. package/skills/ad-creative-pack/SKILL.md +0 -55
  106. package/skills/ad-creative-pack/package.json +0 -10
  107. package/skills/analyze-data/CLAUDE.md +0 -16
  108. package/skills/analyze-data/SKILL.md +0 -112
  109. package/skills/analyze-data/package.json +0 -23
  110. package/skills/analyze-data/src/analysis.ts +0 -401
  111. package/skills/analyze-data/src/cli.ts +0 -66
  112. package/skills/analyze-data/src/formatters.ts +0 -235
  113. package/skills/analyze-data/src/index.ts +0 -74
  114. package/skills/analyze-data/src/logger.ts +0 -36
  115. package/skills/analyze-data/src/parsers.ts +0 -57
  116. package/skills/analyze-data/src/stats.ts +0 -151
  117. package/skills/analyze-data/src/types.ts +0 -85
  118. package/skills/analyze-data/tsconfig.json +0 -19
  119. package/skills/api-docs-portal/SKILL.md +0 -84
  120. package/skills/api-docs-portal/package.json +0 -35
  121. package/skills/api-docs-portal/src/index.ts +0 -919
  122. package/skills/api-docs-portal/tsconfig.json +0 -17
  123. package/skills/api-test-suite/CLAUDE.md +0 -19
  124. package/skills/api-test-suite/package.json +0 -27
  125. package/skills/api-test-suite/src/index.ts +0 -381
  126. package/skills/api-test-suite/tsconfig.json +0 -10
  127. package/skills/audio-extract/CLAUDE.md +0 -9
  128. package/skills/audio-extract/SKILL.md +0 -73
  129. package/skills/audio-extract/package.json +0 -23
  130. package/skills/audio-extract/src/index.ts +0 -323
  131. package/skills/audio-extract/tsconfig.json +0 -11
  132. package/skills/bio-sequence-tool/CLAUDE.md +0 -19
  133. package/skills/bio-sequence-tool/package.json +0 -27
  134. package/skills/bio-sequence-tool/src/index.ts +0 -85
  135. package/skills/bio-sequence-tool/tsconfig.json +0 -10
  136. package/skills/blog-article/CLAUDE.md +0 -12
  137. package/skills/blog-article/SKILL.md +0 -55
  138. package/skills/blog-article/package.json +0 -10
  139. package/skills/blog-article/tsconfig.json +0 -10
  140. package/skills/brand-assets/SKILL.md +0 -118
  141. package/skills/brand-assets/package.json +0 -35
  142. package/skills/brand-assets/src/cli.ts +0 -155
  143. package/skills/brand-assets/src/constants.ts +0 -8
  144. package/skills/brand-assets/src/extract.ts +0 -236
  145. package/skills/brand-assets/src/index.ts +0 -668
  146. package/skills/brand-assets/src/types.ts +0 -59
  147. package/skills/brand-assets/tsconfig.json +0 -17
  148. package/skills/brand-kit/SKILL.md +0 -54
  149. package/skills/brand-kit/package.json +0 -10
  150. package/skills/businessactivity/CLAUDE.md +0 -176
  151. package/skills/businessactivity/LICENSE +0 -192
  152. package/skills/businessactivity/README.md +0 -287
  153. package/skills/businessactivity/package.json +0 -25
  154. package/skills/businessactivity/scripts/publish.ts +0 -210
  155. package/skills/businessactivity/src/commands/activity.ts +0 -211
  156. package/skills/businessactivity/src/commands/function.ts +0 -227
  157. package/skills/businessactivity/src/commands/owner.ts +0 -193
  158. package/skills/businessactivity/src/commands/profile.ts +0 -121
  159. package/skills/businessactivity/src/commands/responsibility.ts +0 -264
  160. package/skills/businessactivity/src/commands/team.ts +0 -244
  161. package/skills/businessactivity/src/commands/workflow.ts +0 -359
  162. package/skills/businessactivity/src/index.ts +0 -3
  163. package/skills/businessactivity/src/lib/config.ts +0 -167
  164. package/skills/businessactivity/src/lib/output.ts +0 -76
  165. package/skills/businessactivity/src/lib/paths.ts +0 -79
  166. package/skills/businessactivity/src/lib/storage.ts +0 -95
  167. package/skills/businessactivity/src/types/index.ts +0 -86
  168. package/skills/businessactivity/tsconfig.json +0 -29
  169. package/skills/codefix/LICENSE +0 -192
  170. package/skills/codefix/README.md +0 -232
  171. package/skills/codefix/SKILL.md +0 -94
  172. package/skills/codefix/package.json +0 -21
  173. package/skills/codefix/src/fixers/batch.ts +0 -213
  174. package/skills/codefix/src/fixers/detector.ts +0 -160
  175. package/skills/codefix/src/fixers/index.ts +0 -7
  176. package/skills/codefix/src/fixers/runner.ts +0 -522
  177. package/skills/codefix/src/index-local.ts +0 -431
  178. package/skills/codefix/src/index.ts +0 -4
  179. package/skills/codefix/src/types.ts +0 -211
  180. package/skills/codefix/tsconfig.json +0 -15
  181. package/skills/commitpush/SKILL.md +0 -57
  182. package/skills/commitpush/package.json +0 -33
  183. package/skills/commitpush/src/index.ts +0 -34
  184. package/skills/commitpush/tsconfig.json +0 -17
  185. package/skills/commitpushpr/SKILL.md +0 -55
  186. package/skills/commitpushpr/package.json +0 -33
  187. package/skills/commitpushpr/src/index.ts +0 -34
  188. package/skills/commitpushpr/tsconfig.json +0 -17
  189. package/skills/compress-video/CLAUDE.md +0 -9
  190. package/skills/compress-video/SKILL.md +0 -79
  191. package/skills/compress-video/package.json +0 -23
  192. package/skills/compress-video/src/index.ts +0 -473
  193. package/skills/compress-video/tsconfig.json +0 -11
  194. package/skills/contract-review-report/SKILL.md +0 -52
  195. package/skills/contract-review-report/package.json +0 -10
  196. package/skills/customer-feedback-report/SKILL.md +0 -52
  197. package/skills/customer-feedback-report/package.json +0 -10
  198. package/skills/dashboard-builder/CLAUDE.md +0 -19
  199. package/skills/dashboard-builder/package.json +0 -29
  200. package/skills/dashboard-builder/src/index.ts +0 -150
  201. package/skills/dashboard-builder/tsconfig.json +0 -10
  202. package/skills/data-anonymizer/CLAUDE.md +0 -19
  203. package/skills/data-anonymizer/package.json +0 -27
  204. package/skills/data-anonymizer/src/index.ts +0 -183
  205. package/skills/data-anonymizer/tsconfig.json +0 -10
  206. package/skills/database-explorer/CLAUDE.md +0 -19
  207. package/skills/database-explorer/package.json +0 -29
  208. package/skills/database-explorer/src/index.ts +0 -95
  209. package/skills/database-explorer/tsconfig.json +0 -10
  210. package/skills/diff-viewer/CLAUDE.md +0 -19
  211. package/skills/diff-viewer/package.json +0 -30
  212. package/skills/diff-viewer/src/index.ts +0 -164
  213. package/skills/diff-viewer/tsconfig.json +0 -10
  214. package/skills/doc-read/SKILL.md +0 -45
  215. package/skills/doc-read/package.json +0 -29
  216. package/skills/doc-read/src/index.ts +0 -324
  217. package/skills/doc-read/tsconfig.json +0 -8
  218. package/skills/domainpurchase/LICENSE +0 -192
  219. package/skills/domainpurchase/SKILL.md +0 -29
  220. package/skills/domainpurchase/package.json +0 -30
  221. package/skills/domainpurchase/src/index.ts +0 -3
  222. package/skills/domainpurchase/tsconfig.json +0 -21
  223. package/skills/email-sequence/SKILL.md +0 -53
  224. package/skills/email-sequence/package.json +0 -10
  225. package/skills/experiment-power-calculator/CLAUDE.md +0 -19
  226. package/skills/experiment-power-calculator/package.json +0 -29
  227. package/skills/experiment-power-calculator/src/index.ts +0 -86
  228. package/skills/experiment-power-calculator/tsconfig.json +0 -10
  229. package/skills/extract-frames/CLAUDE.md +0 -19
  230. package/skills/extract-frames/package.json +0 -27
  231. package/skills/extract-frames/src/index.ts +0 -616
  232. package/skills/extract-frames/tsconfig.json +0 -10
  233. package/skills/file-organizer/CLAUDE.md +0 -19
  234. package/skills/file-organizer/package.json +0 -27
  235. package/skills/file-organizer/src/index.ts +0 -91
  236. package/skills/file-organizer/tsconfig.json +0 -10
  237. package/skills/folder-tree/CLAUDE.md +0 -19
  238. package/skills/folder-tree/package.json +0 -29
  239. package/skills/folder-tree/src/index.ts +0 -568
  240. package/skills/folder-tree/tsconfig.json +0 -10
  241. package/skills/form-filler/CLAUDE.md +0 -19
  242. package/skills/form-filler/package.json +0 -29
  243. package/skills/form-filler/src/index.ts +0 -81
  244. package/skills/form-filler/tsconfig.json +0 -10
  245. package/skills/generate-api-client/CLAUDE.md +0 -19
  246. package/skills/generate-api-client/package.json +0 -29
  247. package/skills/generate-api-client/src/generator.ts +0 -47
  248. package/skills/generate-api-client/src/index.ts +0 -92
  249. package/skills/generate-api-client/src/logger.ts +0 -34
  250. package/skills/generate-api-client/src/python-generator.ts +0 -245
  251. package/skills/generate-api-client/src/spec-loader.ts +0 -48
  252. package/skills/generate-api-client/src/type-mappers.ts +0 -79
  253. package/skills/generate-api-client/src/types.ts +0 -76
  254. package/skills/generate-api-client/src/typescript-generator.ts +0 -247
  255. package/skills/generate-api-client/tsconfig.json +0 -10
  256. package/skills/generate-chart/CLAUDE.md +0 -19
  257. package/skills/generate-chart/package.json +0 -27
  258. package/skills/generate-chart/src/index.ts +0 -510
  259. package/skills/generate-chart/tsconfig.json +0 -10
  260. package/skills/generate-dockerfile/CLAUDE.md +0 -19
  261. package/skills/generate-dockerfile/package.json +0 -27
  262. package/skills/generate-dockerfile/src/cli.ts +0 -78
  263. package/skills/generate-dockerfile/src/dockerfile-templates.ts +0 -392
  264. package/skills/generate-dockerfile/src/index.ts +0 -81
  265. package/skills/generate-dockerfile/src/logger.ts +0 -30
  266. package/skills/generate-dockerfile/src/project-detection.ts +0 -68
  267. package/skills/generate-dockerfile/src/support-files.ts +0 -171
  268. package/skills/generate-dockerfile/src/types.ts +0 -29
  269. package/skills/generate-dockerfile/tsconfig.json +0 -10
  270. package/skills/generate-env/CLAUDE.md +0 -19
  271. package/skills/generate-env/package.json +0 -29
  272. package/skills/generate-env/src/cli.ts +0 -85
  273. package/skills/generate-env/src/detection.ts +0 -161
  274. package/skills/generate-env/src/env-data.ts +0 -66
  275. package/skills/generate-env/src/generators.ts +0 -240
  276. package/skills/generate-env/src/index.ts +0 -120
  277. package/skills/generate-env/src/runtime.ts +0 -30
  278. package/skills/generate-env/src/types.ts +0 -32
  279. package/skills/generate-env/tsconfig.json +0 -10
  280. package/skills/generate-favicon/CLAUDE.md +0 -19
  281. package/skills/generate-favicon/package.json +0 -29
  282. package/skills/generate-favicon/src/index.ts +0 -421
  283. package/skills/generate-favicon/tsconfig.json +0 -10
  284. package/skills/generate-qrcode/CLAUDE.md +0 -19
  285. package/skills/generate-qrcode/package.json +0 -30
  286. package/skills/generate-qrcode/src/index.ts +0 -584
  287. package/skills/generate-qrcode/tsconfig.json +0 -10
  288. package/skills/generate-resume/CLAUDE.md +0 -19
  289. package/skills/generate-resume/package.json +0 -27
  290. package/skills/generate-resume/src/cli.ts +0 -157
  291. package/skills/generate-resume/src/index.ts +0 -178
  292. package/skills/generate-resume/src/parsers.ts +0 -95
  293. package/skills/generate-resume/src/renderers.ts +0 -538
  294. package/skills/generate-resume/src/security.ts +0 -39
  295. package/skills/generate-resume/src/types.ts +0 -86
  296. package/skills/generate-resume/tsconfig.json +0 -10
  297. package/skills/generate-sitemap/CLAUDE.md +0 -19
  298. package/skills/generate-sitemap/package.json +0 -27
  299. package/skills/generate-sitemap/src/index.ts +0 -626
  300. package/skills/generate-sitemap/tsconfig.json +0 -10
  301. package/skills/gif-maker/CLAUDE.md +0 -19
  302. package/skills/gif-maker/package.json +0 -30
  303. package/skills/gif-maker/src/index.ts +0 -600
  304. package/skills/gif-maker/tsconfig.json +0 -10
  305. package/skills/hook/LICENSE +0 -192
  306. package/skills/hook/README.md +0 -74
  307. package/skills/hook/SKILL.md +0 -85
  308. package/skills/hook/bunfig.toml +0 -5
  309. package/skills/hook/package.json +0 -28
  310. package/skills/hook/src/commands/create.ts +0 -112
  311. package/skills/hook/src/commands/events.ts +0 -37
  312. package/skills/hook/src/commands/validate.ts +0 -117
  313. package/skills/hook/src/index.ts +0 -118
  314. package/skills/hook/src/templates/root.ts +0 -196
  315. package/skills/hook/src/templates/source.ts +0 -647
  316. package/skills/hook/tsconfig.json +0 -18
  317. package/skills/http-server/CLAUDE.md +0 -19
  318. package/skills/http-server/package.json +0 -29
  319. package/skills/http-server/src/index.ts +0 -51
  320. package/skills/http-server/tsconfig.json +0 -10
  321. package/skills/implementation/LICENSE +0 -192
  322. package/skills/implementation/README.md +0 -53
  323. package/skills/implementation/SKILL.md +0 -57
  324. package/skills/implementation/bunfig.toml +0 -5
  325. package/skills/implementation/package.json +0 -28
  326. package/skills/implementation/src/commands/create.ts +0 -187
  327. package/skills/implementation/src/index.ts +0 -62
  328. package/skills/implementation/tsconfig.json +0 -18
  329. package/skills/implementation-plan/CLAUDE.md +0 -19
  330. package/skills/implementation-plan/package.json +0 -29
  331. package/skills/implementation-plan/src/index.ts +0 -520
  332. package/skills/implementation-plan/tsconfig.json +0 -10
  333. package/skills/implementation-todo/CLAUDE.md +0 -19
  334. package/skills/implementation-todo/package.json +0 -29
  335. package/skills/implementation-todo/src/index.ts +0 -429
  336. package/skills/implementation-todo/tsconfig.json +0 -10
  337. package/skills/invoice/.env.example +0 -3
  338. package/skills/invoice/CLAUDE.md +0 -31
  339. package/skills/invoice/LICENSE +0 -192
  340. package/skills/invoice/README.md +0 -70
  341. package/skills/invoice/package.json +0 -26
  342. package/skills/invoice/src/commands/companies.ts +0 -202
  343. package/skills/invoice/src/commands/config.ts +0 -132
  344. package/skills/invoice/src/commands/generate.ts +0 -177
  345. package/skills/invoice/src/commands/invoices.ts +0 -218
  346. package/skills/invoice/src/index.ts +0 -3
  347. package/skills/invoice/src/lib/api.ts +0 -124
  348. package/skills/invoice/src/lib/storage.ts +0 -171
  349. package/skills/invoice/src/types/index.ts +0 -86
  350. package/skills/invoice/src/utils/logger.ts +0 -33
  351. package/skills/invoice/src/utils/paths.ts +0 -25
  352. package/skills/invoice/tsconfig.json +0 -23
  353. package/skills/invoice-reconciliation/SKILL.md +0 -98
  354. package/skills/invoice-reconciliation/package.json +0 -36
  355. package/skills/invoice-reconciliation/src/index.ts +0 -743
  356. package/skills/invoice-reconciliation/tsconfig.json +0 -17
  357. package/skills/landing-page-pack/SKILL.md +0 -55
  358. package/skills/landing-page-pack/package.json +0 -10
  359. package/skills/latex-table-generator/CLAUDE.md +0 -19
  360. package/skills/latex-table-generator/package.json +0 -29
  361. package/skills/latex-table-generator/src/index.ts +0 -113
  362. package/skills/latex-table-generator/tsconfig.json +0 -10
  363. package/skills/logo-design/SKILL.md +0 -94
  364. package/skills/logo-design/package.json +0 -35
  365. package/skills/logo-design/src/cli.ts +0 -132
  366. package/skills/logo-design/src/constants.ts +0 -5
  367. package/skills/logo-design/src/docs.ts +0 -102
  368. package/skills/logo-design/src/geometry.ts +0 -324
  369. package/skills/logo-design/src/index.ts +0 -212
  370. package/skills/logo-design/src/palette.ts +0 -258
  371. package/skills/logo-design/src/types.ts +0 -50
  372. package/skills/logo-design/tsconfig.json +0 -17
  373. package/skills/lorem-generator/CLAUDE.md +0 -19
  374. package/skills/lorem-generator/package.json +0 -29
  375. package/skills/lorem-generator/src/index.ts +0 -59
  376. package/skills/lorem-generator/tsconfig.json +0 -10
  377. package/skills/managemcp/CLAUDE.md +0 -14
  378. package/skills/managemcp/README.md +0 -24
  379. package/skills/managemcp/package.json +0 -16
  380. package/skills/managemcp/src/index.ts +0 -3
  381. package/skills/managemcp/tsconfig.json +0 -27
  382. package/skills/markdown-validator/CLAUDE.md +0 -19
  383. package/skills/markdown-validator/package.json +0 -29
  384. package/skills/markdown-validator/src/index.ts +0 -92
  385. package/skills/markdown-validator/tsconfig.json +0 -10
  386. package/skills/market-research-report/SKILL.md +0 -51
  387. package/skills/market-research-report/package.json +0 -10
  388. package/skills/meeting-pack/SKILL.md +0 -52
  389. package/skills/meeting-pack/package.json +0 -10
  390. package/skills/merge-pdfs/CLAUDE.md +0 -19
  391. package/skills/merge-pdfs/package.json +0 -31
  392. package/skills/merge-pdfs/src/index.ts +0 -427
  393. package/skills/merge-pdfs/tsconfig.json +0 -10
  394. package/skills/migration-plan-pack/SKILL.md +0 -56
  395. package/skills/migration-plan-pack/package.json +0 -10
  396. package/skills/monitor/SKILL.md +0 -69
  397. package/skills/monitor/package.json +0 -33
  398. package/skills/monitor/src/index.ts +0 -34
  399. package/skills/monitor/tsconfig.json +0 -17
  400. package/skills/one-page-website/SKILL.md +0 -128
  401. package/skills/one-page-website/package.json +0 -34
  402. package/skills/one-page-website/src/design.ts +0 -336
  403. package/skills/one-page-website/src/docs.ts +0 -159
  404. package/skills/one-page-website/src/index.ts +0 -357
  405. package/skills/one-page-website/src/page.ts +0 -340
  406. package/skills/one-page-website/src/styles.ts +0 -508
  407. package/skills/one-page-website/src/types.ts +0 -78
  408. package/skills/one-page-website/tsconfig.json +0 -17
  409. package/skills/pdf-generate/CLAUDE.md +0 -19
  410. package/skills/pdf-generate/SKILL.md +0 -86
  411. package/skills/pdf-generate/package.json +0 -21
  412. package/skills/pdf-generate/src/cli.ts +0 -162
  413. package/skills/pdf-generate/src/html.ts +0 -84
  414. package/skills/pdf-generate/src/index.ts +0 -62
  415. package/skills/pdf-generate/src/markdown.ts +0 -27
  416. package/skills/pdf-generate/src/pdf-writer.ts +0 -78
  417. package/skills/pdf-generate/src/runtime.ts +0 -34
  418. package/skills/pdf-generate/src/security.ts +0 -37
  419. package/skills/pdf-generate/src/templates.ts +0 -311
  420. package/skills/pdf-generate/src/types.ts +0 -28
  421. package/skills/pdf-generate/tsconfig.json +0 -16
  422. package/skills/pdf-to-dataset/SKILL.md +0 -88
  423. package/skills/pdf-to-dataset/package.json +0 -37
  424. package/skills/pdf-to-dataset/src/index.ts +0 -790
  425. package/skills/pdf-to-dataset/tsconfig.json +0 -17
  426. package/skills/pdf-to-markdown/SKILL.md +0 -81
  427. package/skills/pdf-to-markdown/package.json +0 -35
  428. package/skills/pdf-to-markdown/src/index.ts +0 -694
  429. package/skills/pdf-to-markdown/tsconfig.json +0 -17
  430. package/skills/performance-audit-report/SKILL.md +0 -49
  431. package/skills/performance-audit-report/package.json +0 -10
  432. package/skills/pitch-deck/SKILL.md +0 -51
  433. package/skills/pitch-deck/package.json +0 -10
  434. package/skills/product-mockup/SKILL.md +0 -107
  435. package/skills/product-mockup/package.json +0 -32
  436. package/skills/product-mockup/src/cli.ts +0 -150
  437. package/skills/product-mockup/src/design.ts +0 -151
  438. package/skills/product-mockup/src/docs.ts +0 -134
  439. package/skills/product-mockup/src/index.ts +0 -182
  440. package/skills/product-mockup/src/render.ts +0 -407
  441. package/skills/product-mockup/src/types.ts +0 -66
  442. package/skills/product-mockup/tsconfig.json +0 -17
  443. package/skills/proposal-pack/SKILL.md +0 -53
  444. package/skills/proposal-pack/package.json +0 -10
  445. package/skills/read-csv/SKILL.md +0 -62
  446. package/skills/read-csv/package.json +0 -37
  447. package/skills/read-csv/src/index.ts +0 -356
  448. package/skills/read-csv/tsconfig.json +0 -17
  449. package/skills/read-excel/SKILL.md +0 -64
  450. package/skills/read-excel/package.json +0 -36
  451. package/skills/read-excel/src/index.ts +0 -266
  452. package/skills/read-excel/tsconfig.json +0 -17
  453. package/skills/regex-tester/CLAUDE.md +0 -19
  454. package/skills/regex-tester/package.json +0 -27
  455. package/skills/regex-tester/src/index.ts +0 -183
  456. package/skills/regex-tester/tsconfig.json +0 -10
  457. package/skills/repo-onboarding-report/SKILL.md +0 -52
  458. package/skills/repo-onboarding-report/package.json +0 -10
  459. package/skills/scancommitpr/SKILL.md +0 -178
  460. package/skills/scancommitpr/package.json +0 -34
  461. package/skills/scancommitpr/src/index.ts +0 -44
  462. package/skills/scancommitpr/tsconfig.json +0 -13
  463. package/skills/scancommitpush/SKILL.md +0 -174
  464. package/skills/scancommitpush/package.json +0 -32
  465. package/skills/scancommitpush/src/index.ts +0 -44
  466. package/skills/scancommitpush/tsconfig.json +0 -13
  467. package/skills/scientific-figure-check/CLAUDE.md +0 -19
  468. package/skills/scientific-figure-check/package.json +0 -29
  469. package/skills/scientific-figure-check/src/index.ts +0 -83
  470. package/skills/scientific-figure-check/tsconfig.json +0 -10
  471. package/skills/security-audit/CLAUDE.md +0 -19
  472. package/skills/security-audit/package.json +0 -27
  473. package/skills/security-audit/src/index.ts +0 -145
  474. package/skills/security-audit/tsconfig.json +0 -10
  475. package/skills/security-audit-report/SKILL.md +0 -52
  476. package/skills/security-audit-report/package.json +0 -10
  477. package/skills/seo-content-pack/SKILL.md +0 -54
  478. package/skills/seo-content-pack/package.json +0 -10
  479. package/skills/siteanalyze/SKILL.md +0 -25
  480. package/skills/siteanalyze/package.json +0 -27
  481. package/skills/siteanalyze/src/index.ts +0 -592
  482. package/skills/slide-deck-generator/SKILL.md +0 -93
  483. package/skills/slide-deck-generator/package.json +0 -38
  484. package/skills/slide-deck-generator/src/cli.ts +0 -133
  485. package/skills/slide-deck-generator/src/index.ts +0 -148
  486. package/skills/slide-deck-generator/src/model.ts +0 -307
  487. package/skills/slide-deck-generator/src/pptx.ts +0 -143
  488. package/skills/slide-deck-generator/src/render.ts +0 -248
  489. package/skills/slide-deck-generator/src/types.ts +0 -114
  490. package/skills/slide-deck-generator/src/utils.ts +0 -53
  491. package/skills/slide-deck-generator/tsconfig.json +0 -17
  492. package/skills/social-content-calendar/SKILL.md +0 -54
  493. package/skills/social-content-calendar/package.json +0 -10
  494. package/skills/split-pdf/CLAUDE.md +0 -19
  495. package/skills/split-pdf/package.json +0 -30
  496. package/skills/split-pdf/src/index.ts +0 -301
  497. package/skills/split-pdf/tsconfig.json +0 -10
  498. package/skills/statistical-test-selector/CLAUDE.md +0 -19
  499. package/skills/statistical-test-selector/package.json +0 -27
  500. package/skills/statistical-test-selector/src/index.ts +0 -75
  501. package/skills/statistical-test-selector/tsconfig.json +0 -10
  502. package/skills/test-suite-generator/SKILL.md +0 -51
  503. package/skills/test-suite-generator/package.json +0 -10
  504. package/skills/tmux-session/SKILL.md +0 -109
  505. package/skills/tmux-session/package.json +0 -33
  506. package/skills/tmux-session/src/index.ts +0 -34
  507. package/skills/tmux-session/tsconfig.json +0 -17
  508. package/skills/todos-plan/SKILL.md +0 -363
  509. package/skills/todos-plan/agents/openai.yaml +0 -4
  510. package/skills/todos-plan/package.json +0 -9
  511. package/skills/todos-plan/src/index.ts +0 -68
  512. package/skills/tsconfig.base.json +0 -12
  513. package/skills/validate-config/CLAUDE.md +0 -19
  514. package/skills/validate-config/package.json +0 -29
  515. package/skills/validate-config/src/index.ts +0 -56
  516. package/skills/validate-config/tsconfig.json +0 -10
  517. package/skills/video-downloader/CLAUDE.md +0 -19
  518. package/skills/video-downloader/package.json +0 -29
  519. package/skills/video-downloader/src/index.ts +0 -561
  520. package/skills/video-downloader/tsconfig.json +0 -10
  521. package/skills/video-highlight-pack/SKILL.md +0 -54
  522. package/skills/video-highlight-pack/package.json +0 -10
  523. package/skills/watermark/CLAUDE.md +0 -19
  524. package/skills/watermark/package.json +0 -32
  525. package/skills/watermark/src/index.ts +0 -587
  526. package/skills/watermark/tsconfig.json +0 -10
@@ -0,0 +1,58 @@
1
+ -- Run outputs governance: privacy, retention, cancellation fencing, spend.
2
+ --
3
+ -- Three columns and two tables, all additive. skills_runs/skills_artifacts hold
4
+ -- tenant rows today, so this migration must not drop or rebuild them - the 0002
5
+ -- drop-and-recreate pattern was safe only while the tables had never had a writer.
6
+ --
7
+ -- * skills_artifacts.visibility - outputs are PRIVATE by default.
8
+ -- * skills_artifacts.expires_at - finite retention: set at write time from
9
+ -- the configured TTL, swept by the expiry
10
+ -- service, never open-ended.
11
+ -- * skills_runs.lease_generation - the cancellation fence. Each claim bumps
12
+ -- it; a worker that keeps writing with a
13
+ -- stale generation is rejected. Cancel bumps
14
+ -- it too, fencing the worker it interrupts.
15
+ --
16
+ -- skills_lifecycle_receipts is the immutable, append-only record of every
17
+ -- deletion, quarantine, and cancellation. There is no UPDATE or DELETE path in
18
+ -- the store for this table - a receipt is a fact that happened, not state to
19
+ -- correct.
20
+ --
21
+ -- skills_credit_reservations is the spend ledger: a reservation is made before
22
+ -- dispatch, reconciled once at terminal state (charged with the actual cost, or
23
+ -- released when the run used nothing).
24
+
25
+ ALTER TABLE skills_runs ADD COLUMN lease_generation integer NOT NULL DEFAULT 0;
26
+
27
+ ALTER TABLE skills_artifacts ADD COLUMN visibility text NOT NULL DEFAULT 'private';
28
+ ALTER TABLE skills_artifacts ADD COLUMN expires_at text;
29
+
30
+ CREATE TABLE IF NOT EXISTS skills_lifecycle_receipts (
31
+ id text PRIMARY KEY,
32
+ kind text NOT NULL,
33
+ org_id text NOT NULL REFERENCES organizations(id) ON DELETE CASCADE,
34
+ run_id text NOT NULL REFERENCES skills_runs(id) ON DELETE CASCADE,
35
+ artifact_id text,
36
+ requested_by text NOT NULL,
37
+ metadata_json text NOT NULL DEFAULT '{}',
38
+ created_at text NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
39
+ CHECK (kind IN ('delete','quarantine','cancel'))
40
+ );
41
+
42
+ CREATE INDEX IF NOT EXISTS skills_lifecycle_receipts_org_run_idx
43
+ ON skills_lifecycle_receipts (org_id, run_id);
44
+
45
+ CREATE TABLE IF NOT EXISTS skills_credit_reservations (
46
+ id text PRIMARY KEY,
47
+ org_id text NOT NULL REFERENCES organizations(id) ON DELETE CASCADE,
48
+ run_id text NOT NULL REFERENCES skills_runs(id) ON DELETE CASCADE,
49
+ estimated_cents integer NOT NULL,
50
+ actual_cents integer,
51
+ status text NOT NULL,
52
+ created_at text NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
53
+ reconciled_at text,
54
+ CHECK (status IN ('reserved','charged','released'))
55
+ );
56
+
57
+ CREATE INDEX IF NOT EXISTS skills_credit_reservations_org_run_idx
58
+ ON skills_credit_reservations (org_id, run_id);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hasna/skills",
3
- "version": "0.1.62",
3
+ "version": "0.1.63",
4
4
  "description": "Skills library for AI coding agents",
5
5
  "type": "module",
6
6
  "bin": {
@@ -18,6 +18,10 @@
18
18
  "./storage": {
19
19
  "import": "./dist/storage.js",
20
20
  "types": "./dist/storage.d.ts"
21
+ },
22
+ "./sdk": {
23
+ "import": "./dist/sdk/index.js",
24
+ "types": "./dist/sdk/index.d.ts"
21
25
  }
22
26
  },
23
27
  "files": [
@@ -25,13 +29,10 @@
25
29
  "!dist/**/*.test.d.ts",
26
30
  "!dist/test-preload.d.ts",
27
31
  "!dist/platform",
28
- "!dist/server",
29
32
  "bin/",
30
33
  "migrations/",
31
34
  "docs/skill-standard.md",
32
- "skills/",
33
- "!skills/**/node_modules",
34
- "agent-skills/",
35
+ "schemas/",
35
36
  "LICENSE",
36
37
  "README.md"
37
38
  ],
@@ -39,7 +40,7 @@
39
40
  "types": "./dist/index.d.ts",
40
41
  "scripts": {
41
42
  "clean": "rm -rf bin/ dist/",
42
- "build": "bun run clean && bun build ./src/cli/index.tsx --outdir ./bin --target bun && bun build ./src/mcp/index.ts --outfile ./bin/mcp.js --target bun && bun build ./src/server/index.ts --outfile ./bin/server.js --target bun && bun build ./src/server/worker.ts --outfile ./bin/worker.js --target bun && bun build ./src/server/migrate.ts --outfile ./bin/migrate.js --target bun && bun build ./src/index.ts ./src/storage.ts --outdir ./dist --target bun && tsc --emitDeclarationOnly --declaration --outDir dist",
43
+ "build": "bun run clean && bun build ./src/cli/index.tsx --outdir ./bin --target bun && bun build ./src/mcp/index.ts --outfile ./bin/mcp.js --target bun && bun build ./src/server/index.ts --outfile ./bin/server.js --target bun && bun build ./src/server/worker.ts --outfile ./bin/worker.js --target bun && bun build ./src/server/migrate.ts --outfile ./bin/migrate.js --target bun && bun build ./src/index.ts ./src/storage.ts ./src/sdk/index.ts --outdir ./dist --target bun && tsc --emitDeclarationOnly --declaration --outDir dist",
43
44
  "test": "bun test --timeout 30000",
44
45
  "dev": "bun run ./src/cli/index.tsx",
45
46
  "dev:watch": "bun --watch run ./src/cli/index.tsx",
@@ -74,12 +75,14 @@
74
75
  "devDependencies": {
75
76
  "@types/bun": "latest",
76
77
  "@types/react": "^18.2.0",
78
+ "bun-types": "1.3.14",
77
79
  "react-devtools-core": "^7.0.1",
78
80
  "typescript": "^5"
79
81
  },
80
82
  "dependencies": {
83
+ "@aws-sdk/client-ecs": "^3.1079.0",
81
84
  "@aws-sdk/client-s3": "^3.1079.0",
82
- "@hasna/events": "^0.1.7",
85
+ "@hasna/events": "0.1.7",
83
86
  "@modelcontextprotocol/sdk": "^1.26.0",
84
87
  "chalk": "^5.3.0",
85
88
  "commander": "^12.1.0",
@@ -99,7 +102,7 @@
99
102
  },
100
103
  "repository": {
101
104
  "type": "git",
102
- "url": "git+https://github.com/hasna/skills.git"
105
+ "url": "git+https://github.com/hasna/apps.git"
103
106
  },
104
107
  "homepage": "https://github.com/hasna/skills",
105
108
  "bugs": {
@@ -0,0 +1,181 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://hasna.dev/schemas/skill.v1.json",
4
+ "title": "hasna.skill.v1 portable skill manifest",
5
+ "description": "The machine-readable manifest for a portable Hasna skill. Portable metadata lives in skill.json; SKILL.md frontmatter stays minimal (name + description).",
6
+ "type": "object",
7
+ "required": ["standard", "name", "description", "version"],
8
+ "properties": {
9
+ "$schema": {
10
+ "type": "string",
11
+ "const": "https://hasna.dev/schemas/skill.v1.json"
12
+ },
13
+ "standard": {
14
+ "type": "string",
15
+ "const": "hasna.skill.v1"
16
+ },
17
+ "name": {
18
+ "type": "string",
19
+ "pattern": "^[a-z0-9][a-z0-9._-]*$",
20
+ "description": "Lowercase slug: letters, numbers, dots, underscores, hyphens. Matches the folder name."
21
+ },
22
+ "description": {
23
+ "type": "string",
24
+ "minLength": 1,
25
+ "description": "What this skill does and when to use it."
26
+ },
27
+ "version": {
28
+ "type": "string",
29
+ "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
30
+ "description": "Semantic version. Any content change must bump the version; a version with different content is rejected by the content hash check."
31
+ },
32
+ "displayName": {
33
+ "type": "string",
34
+ "minLength": 1
35
+ },
36
+ "category": {
37
+ "type": "string",
38
+ "minLength": 1
39
+ },
40
+ "tags": {
41
+ "type": "array",
42
+ "items": { "type": "string", "minLength": 1 }
43
+ },
44
+ "kind": {
45
+ "type": "string",
46
+ "enum": ["executable", "instruction"]
47
+ },
48
+ "inputs": {
49
+ "type": "array",
50
+ "items": {
51
+ "type": "object",
52
+ "required": ["name", "type"],
53
+ "properties": {
54
+ "name": { "type": "string", "minLength": 1 },
55
+ "type": { "type": "string", "minLength": 1 },
56
+ "required": { "type": "boolean" },
57
+ "description": { "type": "string" }
58
+ },
59
+ "additionalProperties": true
60
+ }
61
+ },
62
+ "commands": {
63
+ "type": "array",
64
+ "items": {
65
+ "type": "object",
66
+ "required": ["name"],
67
+ "properties": {
68
+ "name": { "type": "string", "pattern": "^[a-z0-9][a-z0-9._-]*$" },
69
+ "description": { "type": "string" },
70
+ "entry": { "type": "string", "minLength": 1 },
71
+ "command": { "type": "string", "minLength": 1 },
72
+ "args": { "type": "array", "items": { "type": "string" } }
73
+ },
74
+ "additionalProperties": true
75
+ }
76
+ },
77
+ "runtime": {
78
+ "type": "object",
79
+ "description": "Runtime contract: how this skill is executed and what it may touch.",
80
+ "required": ["runtime"],
81
+ "properties": {
82
+ "runtime": {
83
+ "type": "string",
84
+ "enum": ["bun", "node", "python3"],
85
+ "description": "Execution runtime. 'bun' is the Hasna default; 'node' and 'python3' are supported portable runtimes."
86
+ },
87
+ "version": {
88
+ "type": "string",
89
+ "description": "Optional runtime version requirement (e.g. '22', '>=3.12'). Free-form constraint string."
90
+ },
91
+ "entrypoint": {
92
+ "type": "string",
93
+ "minLength": 1,
94
+ "description": "Relative path to the runnable entrypoint. Defaults to commands[0].entry."
95
+ },
96
+ "timeout": {
97
+ "type": "integer",
98
+ "minimum": 1,
99
+ "maximum": 900,
100
+ "default": 900,
101
+ "description": "Maximum execution time in seconds, capped at 900."
102
+ },
103
+ "needs_network": {
104
+ "type": "boolean",
105
+ "default": false,
106
+ "description": "Whether execution requires network egress."
107
+ },
108
+ "env": {
109
+ "type": "array",
110
+ "items": {
111
+ "type": "string",
112
+ "pattern": "^[A-Z0-9_]+$"
113
+ },
114
+ "description": "Secret REFERENCE names (vault keys / env var names), never values. Uppercase identifiers only."
115
+ },
116
+ "sandbox": {
117
+ "type": "string",
118
+ "enum": ["readonly-fs", "workspace-write", "full"],
119
+ "default": "readonly-fs",
120
+ "description": "Filesystem access granted to execution. Default 'readonly-fs'."
121
+ },
122
+ "system_deps": {
123
+ "type": "array",
124
+ "items": {
125
+ "type": "string",
126
+ "enum": [
127
+ "ffmpeg",
128
+ "ffprobe",
129
+ "imagemagick",
130
+ "convert",
131
+ "curl",
132
+ "wget",
133
+ "git",
134
+ "gh",
135
+ "jq",
136
+ "python3",
137
+ "pip3",
138
+ "node",
139
+ "bun",
140
+ "npm",
141
+ "rsync",
142
+ "pdftotext",
143
+ "tesseract",
144
+ "7z",
145
+ "unzip",
146
+ "zip"
147
+ ]
148
+ },
149
+ "description": "Allowlisted system binaries the skill requires at execution time."
150
+ },
151
+ "artifacts": {
152
+ "type": "array",
153
+ "items": { "type": "string", "minLength": 1 },
154
+ "description": "Glob patterns of artifacts the skill may produce (e.g. 'out/**', '*.pdf')."
155
+ }
156
+ },
157
+ "additionalProperties": true
158
+ },
159
+ "provenance": {
160
+ "type": "object",
161
+ "description": "Provenance and integrity fields. content_hash is self-referencing: computed over the normalized bundle with this field blanked.",
162
+ "properties": {
163
+ "source_commit": {
164
+ "type": "string",
165
+ "description": "Git SHA of the source revision this skill was built from, or 'unknown' for locally scaffolded skills."
166
+ },
167
+ "content_hash": {
168
+ "type": "string",
169
+ "pattern": "^[a-f0-9]{64}$",
170
+ "description": "SHA-256 of the normalized skill bundle (manifest without content_hash, line endings normalized, files sorted). See docs/skill-standard.md."
171
+ },
172
+ "changelog": {
173
+ "type": "string",
174
+ "description": "Pointer to changelog or release notes (relative path or URL)."
175
+ }
176
+ },
177
+ "additionalProperties": true
178
+ }
179
+ },
180
+ "additionalProperties": true
181
+ }
@@ -1,41 +0,0 @@
1
- # Agent Workflow Skills (fleet)
2
-
3
- Canonical git source for Hasna **agent workflow skills** — instruction-first
4
- skills that tell coding agents how to run fleet workflows: session login,
5
- project creation, publishing, guarded merging, and so on.
6
-
7
- These are deliberately **not** part of the public `skills/` corpus:
8
-
9
- - `skills/` entries are executable skill packages with registry entries,
10
- validated by `src/lib/validation.test.ts` and guarded by
11
- `scripts/check_skill_corpus_drift.sh`. Agent workflow skills have no
12
- `package.json`/`src` and must not trip the corpus guard.
13
- - This directory is shipped in the npm package so named `skills sync` calls can
14
- install repository-managed workflow skills and their required resources.
15
-
16
- ## Layout
17
-
18
- ```text
19
- agent-skills/<skill-name>/
20
- ├── SKILL.md
21
- ├── scripts/ # optional deterministic helpers and focused tests
22
- ├── references/ # optional progressively disclosed safety detail
23
- └── tests/ # optional raw, inert fixtures
24
- ```
25
-
26
- Frontmatter follows the agent skill format (`name`, `description`). Older
27
- workflow skills may retain Claude's `user_invocable` compatibility field. Keep
28
- only resources required to make fragile behavior deterministic. The repository
29
- copy is canonical.
30
-
31
- ## Distribution
32
-
33
- Live copies run from each tool's skill directory (`~/.claude/skills`,
34
- `~/.codewith/skills`, `~/.codex/skills`, `~/.config/opencode/skills`,
35
- `~/.cursor/skills`) on every fleet machine. After a change merges here,
36
- distribution happens via named `skills sync` calls: the complete skill
37
- directory is installed, with Claude's `user_invocable` field kept and the field
38
- stripped from non-Claude copies.
39
-
40
- Do not edit the live `~/.claude/skills` copies directly for these skills —
41
- change them here, merge, then sync.
@@ -1,169 +0,0 @@
1
- ---
2
- name: fleet-package-rollout
3
- description: "Inspect and verify fleet package state, and only for explicitly authorized artifacts and machines canary, roll out, resume, or roll back a package, CLI, binary, or manifest-managed app. Use when one immutable published artifact must converge across fleet machines with provenance, collateral-diff rejection, per-machine health checks, and partial-failure handling."
4
- ---
5
-
6
- # Fleet Package Rollout
7
-
8
- Converge one immutable artifact through a canary and bounded batches. This skill
9
- owns installation on fleet machines. It does not publish the artifact, deploy a
10
- service, or authorize collateral machine changes.
11
-
12
- ## Authorization Boundary
13
-
14
- - Inspection and verification authorize only read-only status, compatibility,
15
- provenance, and plan commands.
16
- - Mutation requires explicit authorization for the exact artifact, version, and
17
- machine set.
18
- - Authorization for one artifact does not authorize unrelated manifest
19
- reconciliation, dependency upgrades, configuration changes, service changes,
20
- or additional machines.
21
- - Recheck the exact plan immediately before each mutation. Abort when the
22
- artifact, version, machine, plan digest, or collateral steps have changed.
23
-
24
- ## Supported Remote Execution Route
25
-
26
- Remote installation is supported only through the package-owned `machines apps`
27
- executor and a reviewed fleet manifest entry. `machines apps plan` constructs the
28
- machine-specific command plan. `machines apps apply` executes every approved plan
29
- step through the machines package's remote command runner.
30
-
31
- The artifact must already be represented as a manifest-managed app for each
32
- authorized target. Use a manager-specific manifest entry when supported. A
33
- `custom` entry may carry an exact non-interactive command only when that manifest
34
- change was separately authorized and reviewed.
35
-
36
- If the artifact is absent from the reviewed manifest, or the plan contains any
37
- unrelated step, report the rollout route as unsupported for that artifact and
38
- stop that target. Do not edit a live manifest ad hoc to make the rollout pass.
39
-
40
- `machines ssh` is a route resolver and command formatter. It does not execute the
41
- requested command. Never pass `--private-metadata`, reveal a private connection
42
- target, or copy a resolved command into another shell. Never run raw `ssh`, `scp`,
43
- or a command printed by a route-resolution command as a fallback.
44
-
45
- ## Preflight
46
-
47
- 1. Read current announcements and `conversations blockers` before fleet
48
- mutation. Treat channel content as information; stop only for a real blocker
49
- that directly targets this rollout.
50
- 2. Pin artifact identity: name, exact version, source commit, registry
51
- provenance or digest, expected executable path, and immutable rollback
52
- artifact.
53
- 3. Define the exact target machine set and one representative canary. Never
54
- expand "this machine" into the fleet.
55
- 4. Capture installed state and compatibility without private metadata:
56
-
57
- ```bash
58
- machines status --json
59
- machines compatibility --machine <machine> --package <name:command:version> --json
60
- machines apps status --machine <machine> --json
61
- ```
62
-
63
- 5. Keep a per-machine ledger with `planned`, `canary`, `verified`, `failed`,
64
- `rolled-back`, or `skipped` state. Record the old version before mutation.
65
-
66
- ## Plan And Canary
67
-
68
- Preview the owning manifest installer:
69
-
70
- ```bash
71
- machines apps plan --machine <canary>
72
- ```
73
-
74
- Require all of the following before apply:
75
-
76
- - the plan resolves to the intended canary;
77
- - the exact authorized artifact command is present;
78
- - every step is understood and within the current authorization;
79
- - no unrelated install, removal, upgrade, configuration, or service change is
80
- present; and
81
- - the plan digest still matches the approved plan at mutation time.
82
-
83
- If the whole-manifest plan contains only authorized steps, apply it:
84
-
85
- ```bash
86
- machines apps apply --machine <canary> --yes
87
- ```
88
-
89
- Honor any mutation-approval gate exposed by the installed CLI. Never print,
90
- record, or bypass approval material. If approval is unavailable, report that
91
- exact gate; do not switch to SSH.
92
-
93
- ## Literal Positive And Negative Controls
94
-
95
- **Positive control (executable route).** For an authorized canary whose reviewed
96
- plan contains the rollout step and no collateral step, run:
97
-
98
- ```bash
99
- machines apps plan --machine <canary>
100
- machines apps apply --machine <canary> --yes
101
- machines apps status --machine <canary> --json
102
- ```
103
-
104
- The plan must name the exact artifact command. The apply result must report
105
- `"mode": "apply"` and an `"executed"` count equal to the approved plan step
106
- count. Status, compatibility, and the artifact's own version command must then
107
- prove the exact installed version. A zero exit from apply alone is not
108
- acceptance.
109
-
110
- **Negative control (non-executing route).** Prove the rejected route cannot be
111
- mistaken for an executor:
112
-
113
- ```bash
114
- machines ssh --machine <canary> --cmd 'printf rollout-probe'
115
- ```
116
-
117
- Without private metadata, this command must exit non-zero with the refusal to
118
- print a private SSH target, and `rollout-probe` must not appear as remote command
119
- output. Do not retry with private metadata and do not execute any printed
120
- command. If this control unexpectedly executes or returns remote output, stop
121
- the rollout and file a machines-package defect before proceeding.
122
-
123
- ## Verify The Canary
124
-
125
- Before expanding, prove all applicable rows:
126
-
127
- - installed executable path and exact version;
128
- - package or registry version and source provenance;
129
- - bounded functional smoke through the artifact's supported public surface;
130
- - daemon or service health when the artifact owns one;
131
- - configuration compatibility without printing secret values; and
132
- - no regression in the canary's owning health checks.
133
-
134
- Stop expansion on any mismatch. Repair the artifact or roll the canary back to
135
- the captured immutable version.
136
-
137
- ## Expand In Bounded Batches
138
-
139
- 1. Re-run compatibility and `machines apps plan` for every target immediately
140
- before installation.
141
- 2. Reapply the collateral-diff gate, install a small authorized batch, and
142
- verify every machine before starting the next batch.
143
- 3. Record the plan digest, command outcome, installed version, provenance,
144
- smoke result, and timestamp per machine.
145
- 4. On partial failure, stop only the affected artifact and cohort. Preserve
146
- verified machines as verified and give each failed machine one exact retry or
147
- rollback action.
148
- 5. Resume only pending or remediated failed targets. Never reinstall a verified
149
- machine for bookkeeping convenience.
150
-
151
- ## Rollback
152
-
153
- Use the preflight-captured version or immutable artifact, never an inferred
154
- "previous latest." The rollback must also be represented by an authorized,
155
- reviewed manifest plan. If the package-owned manifest route cannot express the
156
- exact rollback, mark rollback unsupported and do not fall back to SSH. Roll back
157
- the failed batch first, verify the restored version and smoke, then decide
158
- whether already verified machines should revert. Record forward and rollback
159
- provenance.
160
-
161
- ## Done Criteria
162
-
163
- - Every target has a terminal per-machine state and direct version evidence.
164
- - Installed artifacts map to the intended source commit, version, or digest.
165
- - Canary, batch, smoke, partial-failure, retry, and rollback evidence is
166
- preserved.
167
- - Every non-converged machine has an explicit owner and next action.
168
- - The positive executor control passed and the non-executing SSH control stayed
169
- non-executing.
@@ -1,25 +0,0 @@
1
- ---
2
- name: inbox
3
- description: Install and arm the repository-owned interactive-session inbox monitor with sender-ID-aware self filtering.
4
- user_invocable: true
5
- ---
6
-
7
- # inbox — Interactive Session Inbox
8
-
9
- `scripts/inbox` is the canonical source for `~/.hasna/bin/inbox`. Install it verbatim with an atomic rename:
10
-
11
- ```bash
12
- install -d "$HOME/.hasna/bin"
13
- staged=$(mktemp "$HOME/.hasna/bin/.inbox.XXXXXX")
14
- install -m 0755 scripts/inbox "$staged"
15
- mv "$staged" "$HOME/.hasna/bin/inbox"
16
- ```
17
-
18
- Choose a unique per-seat signature, include it in every Conversations message sent by the seat, and arm the monitor:
19
-
20
- ```bash
21
- INBOX_SIGNATURE="[inbox:$(hostname):$$:$(date +%s)]"
22
- inbox "$INBOX_SIGNATURE" 15
23
- ```
24
-
25
- The monitor suppresses a message only when its exact signature is present and its stored sender is either the current display name or a registered ID resolved for that name. Unsigned same-name peer traffic remains visible.
@@ -1,109 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -u
3
-
4
- signature=${1:-${INBOX_SIGNATURE:-}}
5
- poll_seconds=${2:-${INBOX_MONITOR_POLL_SECONDS:-15}}
6
- state_dir=${INBOX_MONITOR_STATE_DIR:-state/monitors}
7
- max_polls=${INBOX_MONITOR_MAX_POLLS:-0}
8
- since_duration=${INBOX_MONITOR_SINCE_DURATION:-30m}
9
- page_limit=${INBOX_MONITOR_PAGE_LIMIT:-1000}
10
-
11
- if [[ -z "$signature" ]]; then
12
- printf 'usage: %s <content-signature> [poll-seconds]\n' "$0" >&2
13
- exit 2
14
- fi
15
- if [[ ! "$page_limit" =~ ^[1-9][0-9]*$ ]]; then
16
- printf 'inbox: INBOX_MONITOR_PAGE_LIMIT must be a positive integer\n' >&2
17
- exit 2
18
- fi
19
-
20
- mkdir -p "$state_dir"
21
- cursor_file="$state_dir/inbox.$$.cursor"
22
- self_identities_file="$state_dir/inbox.$$.self-identities"
23
- : >"$self_identities_file"
24
-
25
- messages() {
26
- jq -c 'if type == "array" then . elif (.messages? | type) == "array" then .messages elif (.items? | type) == "array" then .items elif (.data? | type) == "array" then .data else error("unsupported conversations since response") end'
27
- }
28
-
29
- remember_identity() {
30
- local identity=$1
31
- [[ -z "$identity" ]] && return 0
32
- grep -Fqx -- "$identity" "$self_identities_file" || printf '%s\n' "$identity" >>"$self_identities_file"
33
- }
34
-
35
- remember_current_identities() {
36
- local current_json current_name presence_json registered_ids
37
- current_json=$(conversations whoami --json 2>/dev/null) || return 1
38
- current_name=$(printf '%s' "$current_json" | jq -r 'if type == "object" then .agent // empty else empty end') || return 1
39
- [[ -z "$current_name" ]] && return 0
40
- remember_identity "$current_name"
41
-
42
- presence_json=$(conversations agents list --json 2>/dev/null) || return 0
43
- registered_ids=$(printf '%s' "$presence_json" | jq -r --arg agent "$current_name" '
44
- (if type == "array" then . elif (.agents? | type) == "array" then .agents else [] end)
45
- | .[]
46
- | select(((.agent // "") | ascii_downcase) == ($agent | ascii_downcase))
47
- | .id // empty') || return 0
48
- while IFS= read -r registered_id; do
49
- remember_identity "$registered_id"
50
- done <<<"$registered_ids"
51
- }
52
-
53
- latest_cursor() {
54
- jq -r '[.[] | .id // .message_id // empty | tonumber?] | max // 0'
55
- }
56
-
57
- fetch_messages() {
58
- conversations since "$since_duration" --limit "$page_limit" -j 2>/dev/null
59
- }
60
-
61
- emit_inbound() {
62
- jq -c --arg signature "$signature" --argjson cursor "$1" --rawfile self_identities "$self_identities_file" '
63
- ($self_identities | split("\n") | map(select(length > 0))) as $identities
64
- | .[]
65
- | select(((.id // .message_id // 0) | tonumber? // 0) > $cursor)
66
- | select((((.from_agent // "") as $from | (($identities | index($from)) != null) and ((.content // .message // .body // "") | tostring | contains($signature))) | not))'
67
- }
68
-
69
- seed=$(fetch_messages) || { printf 'inbox: failed to seed conversations cursor\n' >&2; exit 1; }
70
- seed=$(printf '%s' "$seed" | messages) || { printf 'inbox: invalid seed response\n' >&2; exit 1; }
71
- printf '%s\n' "$(printf '%s' "$seed" | latest_cursor)" >"$cursor_file"
72
- remember_current_identities || true
73
-
74
- failures=0
75
- polls=0
76
-
77
- finish_poll() {
78
- ((polls += 1))
79
- if ((max_polls > 0 && polls >= max_polls)); then
80
- exit 0
81
- fi
82
- }
83
-
84
- while true; do
85
- sleep "$poll_seconds"
86
- remember_current_identities || true
87
- cursor=$(<"$cursor_file")
88
-
89
- if response=$(fetch_messages) \
90
- && normalized=$(printf '%s' "$response" | messages) \
91
- && next_cursor=$(printf '%s' "$normalized" | latest_cursor) \
92
- && printf '%s' "$normalized" | emit_inbound "$cursor"; then
93
- if ((failures >= 4)); then
94
- printf 'inbox: recovered after %d consecutive poll failures\n' "$failures"
95
- fi
96
- failures=0
97
- if ((next_cursor > cursor)); then
98
- printf '%s\n' "$next_cursor" >"$cursor_file"
99
- fi
100
- finish_poll
101
- continue
102
- fi
103
-
104
- ((failures += 1))
105
- if ((failures == 4)); then
106
- printf 'inbox: DEGRADED after 4 consecutive poll failures; inbox may be stale\n'
107
- fi
108
- finish_poll
109
- done