@hasna/skills 0.1.60 → 0.1.62

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 (1062) hide show
  1. package/README.md +189 -60
  2. package/agent-skills/README.md +41 -0
  3. package/agent-skills/fleet-package-rollout/SKILL.md +169 -0
  4. package/agent-skills/inbox/SKILL.md +25 -0
  5. package/agent-skills/inbox/scripts/inbox +109 -0
  6. package/agent-skills/inbox/tests/test_registered_sender_id.sh +92 -0
  7. package/agent-skills/inbox-monitor/SKILL.md +41 -0
  8. package/agent-skills/inbox-monitor/scripts/inbox_monitor.sh +91 -0
  9. package/agent-skills/inbox-monitor/scripts/test_inbox_monitor.sh +71 -0
  10. package/agent-skills/merge-pr/SKILL.md +85 -0
  11. package/agent-skills/merge-pr/references/merge-safety.md +82 -0
  12. package/agent-skills/merge-pr/scripts/merge_pr_guard.py +694 -0
  13. package/agent-skills/merge-pr/scripts/test_merge_pr_guard.py +647 -0
  14. package/agent-skills/merge-pr/tests/fixtures/multi-commit-synthesized.json +28 -0
  15. package/agent-skills/merge-pr/tests/fixtures/trailer-free-provider.json +28 -0
  16. package/agent-skills/skill-goal-execute/SKILL.md +115 -0
  17. package/agent-skills/skill-login/SKILL.md +109 -0
  18. package/agent-skills/skill-project-create/SKILL.md +91 -0
  19. package/agent-skills/skill-publish/SKILL.md +254 -0
  20. package/agent-skills/skill-publish/scripts/capture_registry.js +47 -0
  21. package/agent-skills/skill-publish/scripts/publish_with_git_head.sh +143 -0
  22. package/agent-skills/skill-publish/scripts/test_publish_with_git_head.sh +231 -0
  23. package/bin/index.js +2760 -3690
  24. package/bin/mcp.js +1200 -2714
  25. package/bin/migrate.js +955 -33
  26. package/bin/server.js +2491 -2113
  27. package/bin/worker.js +2213 -275
  28. package/dist/cli/cli.test-utils.d.ts +13 -2
  29. package/dist/cli/commands/publish.d.ts +30 -0
  30. package/dist/cli/commands/registry.d.ts +8 -0
  31. package/dist/index.d.ts +8 -6
  32. package/dist/index.js +1811 -2797
  33. package/dist/lib/agent-sync.d.ts +123 -0
  34. package/dist/lib/api-url.d.ts +34 -0
  35. package/dist/lib/auth-store.d.ts +21 -5
  36. package/dist/lib/blog-article.d.ts +37 -0
  37. package/dist/lib/config.d.ts +56 -2
  38. package/dist/lib/content-scan.d.ts +62 -9
  39. package/dist/lib/discovery.d.ts +10 -10
  40. package/dist/lib/doc-derived-counts.d.ts +56 -0
  41. package/dist/lib/feedback.d.ts +7 -0
  42. package/dist/lib/file-bytes.d.ts +43 -0
  43. package/dist/lib/hosted-skill-set.d.ts +69 -0
  44. package/dist/lib/infra-identifiers.d.ts +144 -0
  45. package/dist/lib/installer.d.ts +20 -6
  46. package/dist/lib/native-storage.d.ts +14 -11
  47. package/dist/lib/packlist.d.ts +13 -0
  48. package/dist/lib/portable-skills-files.d.ts +25 -0
  49. package/dist/lib/portable-skills-types.d.ts +105 -0
  50. package/dist/lib/portable-skills.d.ts +52 -103
  51. package/dist/lib/pull.d.ts +41 -0
  52. package/dist/lib/registry-merge.d.ts +57 -0
  53. package/dist/lib/registry-types.d.ts +1 -14
  54. package/dist/lib/registry.d.ts +6 -3
  55. package/dist/lib/remote-client.d.ts +15 -1
  56. package/dist/lib/remote-registry.d.ts +1 -1
  57. package/dist/lib/remote-run-contract.d.ts +0 -7
  58. package/dist/lib/retired-settings.d.ts +100 -0
  59. package/dist/lib/run-state.d.ts +14 -0
  60. package/dist/lib/skill-aliases.d.ts +0 -12
  61. package/dist/lib/skill-bundle.d.ts +37 -0
  62. package/dist/lib/vendor-host-code-scan.d.ts +66 -0
  63. package/dist/lib/vendor-host-folding.d.ts +40 -0
  64. package/dist/lib/vendor-host-guard.d.ts +47 -0
  65. package/dist/lib/vendor-host-package.d.ts +42 -0
  66. package/dist/lib/vendor-host-policy.d.ts +96 -0
  67. package/dist/lib/vendor-host-url.d.ts +81 -0
  68. package/dist/mcp/mcp-test-client.d.ts +18 -0
  69. package/dist/storage.d.ts +1 -1
  70. package/dist/storage.js +104 -51
  71. package/docs/skill-standard.md +1 -1
  72. package/migrations/postgres/0002_org_scoped_skill_registry.sql +72 -0
  73. package/migrations/sqlite/0001_open_skills_self_hosted.sql +150 -0
  74. package/migrations/sqlite/0002_org_scoped_skill_registry.sql +47 -0
  75. package/package.json +4 -4
  76. package/skills/_common/http-client.ts +17 -2
  77. package/skills/_common/install.sh +2 -2
  78. package/skills/_common/installer.ts +4 -5
  79. package/skills/_common/skill-install.ts +3 -3
  80. package/skills/ad-creative-pack/SKILL.md +28 -18
  81. package/skills/ad-creative-pack/package.json +1 -2
  82. package/skills/analyze-data/SKILL.md +1 -1
  83. package/skills/analyze-data/src/formatters.ts +2 -2
  84. package/skills/api-docs-portal/SKILL.md +62 -24
  85. package/skills/api-docs-portal/package.json +28 -4
  86. package/skills/api-docs-portal/src/index.ts +919 -0
  87. package/skills/audio-extract/SKILL.md +1 -1
  88. package/skills/blog-article/SKILL.md +32 -22
  89. package/skills/blog-article/package.json +1 -2
  90. package/skills/brand-assets/SKILL.md +94 -33
  91. package/skills/brand-assets/package.json +28 -4
  92. package/skills/brand-assets/src/cli.ts +155 -0
  93. package/skills/brand-assets/src/constants.ts +8 -0
  94. package/skills/brand-assets/src/extract.ts +236 -0
  95. package/skills/brand-assets/src/index.ts +668 -0
  96. package/skills/brand-assets/src/types.ts +59 -0
  97. package/skills/brand-kit/SKILL.md +27 -18
  98. package/skills/brand-kit/package.json +1 -2
  99. package/skills/compress-video/SKILL.md +1 -1
  100. package/skills/contract-review-report/SKILL.md +27 -18
  101. package/skills/contract-review-report/package.json +1 -2
  102. package/skills/customer-feedback-report/SKILL.md +27 -19
  103. package/skills/customer-feedback-report/package.json +1 -2
  104. package/skills/email-sequence/SKILL.md +26 -17
  105. package/skills/email-sequence/package.json +1 -2
  106. package/skills/generate-sitemap/src/index.ts +1 -1
  107. package/skills/invoice-reconciliation/SKILL.md +75 -19
  108. package/skills/invoice-reconciliation/package.json +29 -4
  109. package/skills/invoice-reconciliation/src/index.ts +743 -0
  110. package/skills/{convert → invoice-reconciliation}/tsconfig.json +3 -1
  111. package/skills/landing-page-pack/SKILL.md +27 -19
  112. package/skills/landing-page-pack/package.json +1 -2
  113. package/skills/logo-design/SKILL.md +69 -26
  114. package/skills/logo-design/package.json +28 -4
  115. package/skills/logo-design/src/cli.ts +132 -0
  116. package/skills/logo-design/src/constants.ts +5 -0
  117. package/skills/logo-design/src/docs.ts +102 -0
  118. package/skills/logo-design/src/geometry.ts +324 -0
  119. package/skills/logo-design/src/index.ts +212 -0
  120. package/skills/logo-design/src/palette.ts +258 -0
  121. package/skills/logo-design/src/types.ts +50 -0
  122. package/skills/logo-design/tsconfig.json +11 -2
  123. package/skills/market-research-report/SKILL.md +28 -18
  124. package/skills/market-research-report/package.json +2 -3
  125. package/skills/meeting-pack/SKILL.md +26 -17
  126. package/skills/meeting-pack/package.json +1 -2
  127. package/skills/merge-pdfs/src/index.ts +1 -1
  128. package/skills/migration-plan-pack/SKILL.md +30 -19
  129. package/skills/migration-plan-pack/package.json +1 -2
  130. package/skills/one-page-website/SKILL.md +105 -23
  131. package/skills/one-page-website/package.json +27 -4
  132. package/skills/one-page-website/src/design.ts +336 -0
  133. package/skills/one-page-website/src/docs.ts +159 -0
  134. package/skills/one-page-website/src/index.ts +357 -0
  135. package/skills/one-page-website/src/page.ts +340 -0
  136. package/skills/one-page-website/src/styles.ts +508 -0
  137. package/skills/one-page-website/src/types.ts +78 -0
  138. package/skills/one-page-website/tsconfig.json +11 -2
  139. package/skills/pdf-generate/SKILL.md +1 -1
  140. package/skills/pdf-to-dataset/SKILL.md +64 -21
  141. package/skills/pdf-to-dataset/package.json +30 -4
  142. package/skills/pdf-to-dataset/src/index.ts +790 -0
  143. package/skills/{emoji → pdf-to-dataset}/tsconfig.json +3 -4
  144. package/skills/pdf-to-markdown/SKILL.md +55 -23
  145. package/skills/pdf-to-markdown/package.json +28 -4
  146. package/skills/pdf-to-markdown/src/index.ts +694 -0
  147. package/skills/pdf-to-markdown/tsconfig.json +11 -4
  148. package/skills/performance-audit-report/SKILL.md +24 -17
  149. package/skills/performance-audit-report/package.json +1 -2
  150. package/skills/pitch-deck/SKILL.md +27 -19
  151. package/skills/pitch-deck/package.json +1 -2
  152. package/skills/product-mockup/SKILL.md +85 -23
  153. package/skills/product-mockup/package.json +25 -4
  154. package/skills/product-mockup/src/cli.ts +150 -0
  155. package/skills/product-mockup/src/design.ts +151 -0
  156. package/skills/product-mockup/src/docs.ts +134 -0
  157. package/skills/product-mockup/src/index.ts +182 -0
  158. package/skills/product-mockup/src/render.ts +407 -0
  159. package/skills/product-mockup/src/types.ts +66 -0
  160. package/skills/product-mockup/tsconfig.json +11 -2
  161. package/skills/proposal-pack/SKILL.md +27 -19
  162. package/skills/proposal-pack/package.json +2 -3
  163. package/skills/repo-onboarding-report/SKILL.md +26 -16
  164. package/skills/repo-onboarding-report/package.json +1 -2
  165. package/skills/security-audit/src/index.ts +1 -1
  166. package/skills/security-audit-report/SKILL.md +28 -16
  167. package/skills/security-audit-report/package.json +2 -3
  168. package/skills/seo-content-pack/SKILL.md +27 -17
  169. package/skills/seo-content-pack/package.json +1 -2
  170. package/skills/slide-deck-generator/SKILL.md +70 -21
  171. package/skills/slide-deck-generator/package.json +31 -4
  172. package/skills/slide-deck-generator/src/cli.ts +133 -0
  173. package/skills/slide-deck-generator/src/index.ts +148 -0
  174. package/skills/slide-deck-generator/src/model.ts +307 -0
  175. package/skills/slide-deck-generator/src/pptx.ts +143 -0
  176. package/skills/slide-deck-generator/src/render.ts +248 -0
  177. package/skills/slide-deck-generator/src/types.ts +114 -0
  178. package/skills/slide-deck-generator/src/utils.ts +53 -0
  179. package/skills/slide-deck-generator/tsconfig.json +17 -0
  180. package/skills/social-content-calendar/SKILL.md +27 -18
  181. package/skills/social-content-calendar/package.json +1 -2
  182. package/skills/split-pdf/src/index.ts +1 -1
  183. package/skills/test-suite-generator/SKILL.md +26 -16
  184. package/skills/test-suite-generator/package.json +2 -3
  185. package/skills/todos-plan/SKILL.md +339 -170
  186. package/skills/video-highlight-pack/SKILL.md +27 -17
  187. package/skills/video-highlight-pack/package.json +1 -2
  188. package/dist/cli/onboarding.d.ts +0 -13
  189. package/dist/lib/hosted-availability.d.ts +0 -13
  190. package/dist/lib/pricing.d.ts +0 -89
  191. package/skills/academic-journal-matcher/CLAUDE.md +0 -19
  192. package/skills/academic-journal-matcher/package.json +0 -27
  193. package/skills/academic-journal-matcher/src/index.ts +0 -86
  194. package/skills/academic-journal-matcher/tsconfig.json +0 -10
  195. package/skills/action-item-router/CLAUDE.md +0 -19
  196. package/skills/action-item-router/package.json +0 -27
  197. package/skills/action-item-router/src/index.ts +0 -304
  198. package/skills/action-item-router/tsconfig.json +0 -10
  199. package/skills/ad-creative-generator/CLAUDE.md +0 -19
  200. package/skills/ad-creative-generator/package.json +0 -27
  201. package/skills/ad-creative-generator/src/index.ts +0 -419
  202. package/skills/ad-creative-generator/tsconfig.json +0 -10
  203. package/skills/advanced-math/CLAUDE.md +0 -19
  204. package/skills/advanced-math/package.json +0 -29
  205. package/skills/advanced-math/src/calculators.ts +0 -118
  206. package/skills/advanced-math/src/cli.ts +0 -130
  207. package/skills/advanced-math/src/conversion.ts +0 -90
  208. package/skills/advanced-math/src/finance.ts +0 -75
  209. package/skills/advanced-math/src/formatting.ts +0 -95
  210. package/skills/advanced-math/src/index.ts +0 -133
  211. package/skills/advanced-math/src/runtime.ts +0 -49
  212. package/skills/advanced-math/src/symbolic.ts +0 -110
  213. package/skills/advanced-math/src/types.ts +0 -36
  214. package/skills/advanced-math/tsconfig.json +0 -10
  215. package/skills/anomaly-investigator/CLAUDE.md +0 -19
  216. package/skills/anomaly-investigator/package.json +0 -27
  217. package/skills/anomaly-investigator/src/index.ts +0 -311
  218. package/skills/anomaly-investigator/tsconfig.json +0 -10
  219. package/skills/apidocs/.env.example +0 -8
  220. package/skills/apidocs/CLAUDE.md +0 -278
  221. package/skills/apidocs/LICENSE +0 -192
  222. package/skills/apidocs/README.md +0 -196
  223. package/skills/apidocs/api-docs-list.json +0 -186
  224. package/skills/apidocs/package.json +0 -53
  225. package/skills/apidocs/scripts/crawl-all.ts +0 -157
  226. package/skills/apidocs/scripts/publish.ts +0 -210
  227. package/skills/apidocs/src/commands/add.ts +0 -279
  228. package/skills/apidocs/src/commands/endpoints.ts +0 -157
  229. package/skills/apidocs/src/commands/list.ts +0 -51
  230. package/skills/apidocs/src/commands/query.ts +0 -63
  231. package/skills/apidocs/src/commands/remove.ts +0 -39
  232. package/skills/apidocs/src/commands/sync.ts +0 -227
  233. package/skills/apidocs/src/index.ts +0 -3
  234. package/skills/apidocs/src/lib/crawler.ts +0 -427
  235. package/skills/apidocs/src/lib/discovery.ts +0 -244
  236. package/skills/apidocs/src/lib/embeddings.ts +0 -136
  237. package/skills/apidocs/src/lib/endpoint-extractor.ts +0 -359
  238. package/skills/apidocs/src/lib/html-to-md.ts +0 -163
  239. package/skills/apidocs/src/lib/parser.ts +0 -288
  240. package/skills/apidocs/src/lib/search.ts +0 -189
  241. package/skills/apidocs/src/lib/storage.ts +0 -242
  242. package/skills/apidocs/src/lib/vectors-local.ts +0 -220
  243. package/skills/apidocs/src/lib/vectors-s3.ts +0 -255
  244. package/skills/apidocs/src/lib/vectors.ts +0 -97
  245. package/skills/apidocs/src/types/index.ts +0 -297
  246. package/skills/apidocs/src/utils/output.ts +0 -132
  247. package/skills/apidocs/src/utils/paths.ts +0 -126
  248. package/skills/apidocs/tsconfig.json +0 -24
  249. package/skills/audio/SKILL.md +0 -35
  250. package/skills/audio/package.json +0 -11
  251. package/skills/audio-cleanup-lab/CLAUDE.md +0 -3
  252. package/skills/audio-cleanup-lab/SKILL.md +0 -81
  253. package/skills/audio-cleanup-lab/package.json +0 -23
  254. package/skills/audio-cleanup-lab/src/index.ts +0 -274
  255. package/skills/audio-cleanup-lab/tsconfig.json +0 -14
  256. package/skills/audio-transcript-pack/SKILL.md +0 -43
  257. package/skills/audio-transcript-pack/package.json +0 -11
  258. package/skills/banner-ad-suite/CLAUDE.md +0 -19
  259. package/skills/banner-ad-suite/package.json +0 -27
  260. package/skills/banner-ad-suite/src/index.ts +0 -331
  261. package/skills/banner-ad-suite/tsconfig.json +0 -10
  262. package/skills/benchmark-finder/CLAUDE.md +0 -19
  263. package/skills/benchmark-finder/package.json +0 -27
  264. package/skills/benchmark-finder/src/index.ts +0 -294
  265. package/skills/benchmark-finder/tsconfig.json +0 -10
  266. package/skills/blog-topic-cluster/CLAUDE.md +0 -19
  267. package/skills/blog-topic-cluster/package.json +0 -27
  268. package/skills/blog-topic-cluster/src/index.ts +0 -274
  269. package/skills/blog-topic-cluster/tsconfig.json +0 -10
  270. package/skills/brand-photo-shoot/SKILL.md +0 -28
  271. package/skills/brand-photo-shoot/package.json +0 -11
  272. package/skills/brand-style-guide/CLAUDE.md +0 -20
  273. package/skills/brand-style-guide/SKILL.md +0 -13
  274. package/skills/brand-style-guide/package.json +0 -26
  275. package/skills/brand-style-guide/src/index.ts +0 -288
  276. package/skills/brand-style-guide/tsconfig.json +0 -22
  277. package/skills/brand-voice-audit/CLAUDE.md +0 -19
  278. package/skills/brand-voice-audit/package.json +0 -27
  279. package/skills/brand-voice-audit/src/index.ts +0 -302
  280. package/skills/brand-voice-audit/tsconfig.json +0 -10
  281. package/skills/browse/LICENSE +0 -192
  282. package/skills/browse/README.md +0 -25
  283. package/skills/browse/SKILL.md +0 -35
  284. package/skills/browse/package.json +0 -11
  285. package/skills/browse/tsconfig.json +0 -22
  286. package/skills/budget-variance-analyzer/CLAUDE.md +0 -16
  287. package/skills/budget-variance-analyzer/SKILL.md +0 -83
  288. package/skills/budget-variance-analyzer/package.json +0 -24
  289. package/skills/budget-variance-analyzer/src/index.ts +0 -298
  290. package/skills/budget-variance-analyzer/tsconfig.json +0 -21
  291. package/skills/calendar-events/CLAUDE.md +0 -19
  292. package/skills/calendar-events/package.json +0 -27
  293. package/skills/calendar-events/src/ai-parser.ts +0 -103
  294. package/skills/calendar-events/src/api.ts +0 -157
  295. package/skills/calendar-events/src/auth.ts +0 -22
  296. package/skills/calendar-events/src/config.ts +0 -6
  297. package/skills/calendar-events/src/format.ts +0 -96
  298. package/skills/calendar-events/src/help.ts +0 -54
  299. package/skills/calendar-events/src/index.ts +0 -415
  300. package/skills/calendar-events/src/logger.ts +0 -34
  301. package/skills/calendar-events/src/types.ts +0 -67
  302. package/skills/calendar-events/tsconfig.json +0 -10
  303. package/skills/campaign-metric-brief/CLAUDE.md +0 -19
  304. package/skills/campaign-metric-brief/package.json +0 -27
  305. package/skills/campaign-metric-brief/src/index.ts +0 -307
  306. package/skills/campaign-metric-brief/tsconfig.json +0 -10
  307. package/skills/campaign-moodboard/CLAUDE.md +0 -19
  308. package/skills/campaign-moodboard/package.json +0 -27
  309. package/skills/campaign-moodboard/src/index.ts +0 -288
  310. package/skills/campaign-moodboard/tsconfig.json +0 -10
  311. package/skills/caption-style-stylist/CLAUDE.md +0 -19
  312. package/skills/caption-style-stylist/package.json +0 -27
  313. package/skills/caption-style-stylist/src/index.ts +0 -275
  314. package/skills/caption-style-stylist/tsconfig.json +0 -10
  315. package/skills/chemistry-calculator/CLAUDE.md +0 -19
  316. package/skills/chemistry-calculator/package.json +0 -27
  317. package/skills/chemistry-calculator/src/index.ts +0 -110
  318. package/skills/chemistry-calculator/tsconfig.json +0 -10
  319. package/skills/churn-risk-notifier/CLAUDE.md +0 -19
  320. package/skills/churn-risk-notifier/package.json +0 -27
  321. package/skills/churn-risk-notifier/src/index.ts +0 -308
  322. package/skills/churn-risk-notifier/tsconfig.json +0 -10
  323. package/skills/citation-formatter/CLAUDE.md +0 -19
  324. package/skills/citation-formatter/package.json +0 -27
  325. package/skills/citation-formatter/src/index.ts +0 -83
  326. package/skills/citation-formatter/tsconfig.json +0 -10
  327. package/skills/classroom-newsletter-kit/CLAUDE.md +0 -19
  328. package/skills/classroom-newsletter-kit/package.json +0 -27
  329. package/skills/classroom-newsletter-kit/src/index.ts +0 -293
  330. package/skills/classroom-newsletter-kit/tsconfig.json +0 -10
  331. package/skills/color-palette-harmonizer/CLAUDE.md +0 -19
  332. package/skills/color-palette-harmonizer/package.json +0 -27
  333. package/skills/color-palette-harmonizer/src/index.ts +0 -278
  334. package/skills/color-palette-harmonizer/tsconfig.json +0 -10
  335. package/skills/colorextract/SKILL.md +0 -35
  336. package/skills/colorextract/bun.lock +0 -102
  337. package/skills/colorextract/package.json +0 -25
  338. package/skills/colorextract/src/index.ts +0 -405
  339. package/skills/competitor-ad-analyzer/CLAUDE.md +0 -19
  340. package/skills/competitor-ad-analyzer/package.json +0 -27
  341. package/skills/competitor-ad-analyzer/src/index.ts +0 -350
  342. package/skills/competitor-ad-analyzer/tsconfig.json +0 -10
  343. package/skills/compliance-copy-check/CLAUDE.md +0 -19
  344. package/skills/compliance-copy-check/package.json +0 -27
  345. package/skills/compliance-copy-check/src/index.ts +0 -289
  346. package/skills/compliance-copy-check/tsconfig.json +0 -10
  347. package/skills/compliance-report-pack/CLAUDE.md +0 -19
  348. package/skills/compliance-report-pack/package.json +0 -27
  349. package/skills/compliance-report-pack/src/index.ts +0 -301
  350. package/skills/compliance-report-pack/tsconfig.json +0 -10
  351. package/skills/consolelog/.env.example +0 -19
  352. package/skills/consolelog/CLAUDE.md +0 -157
  353. package/skills/consolelog/LICENSE +0 -192
  354. package/skills/consolelog/README.md +0 -239
  355. package/skills/consolelog/data/.gitkeep +0 -0
  356. package/skills/consolelog/exports/products-2025-12-14T13-50-53-041Z.csv +0 -16
  357. package/skills/consolelog/exports/products-2025-12-14T13-50-53-041Z.json +0 -227
  358. package/skills/consolelog/package.json +0 -40
  359. package/skills/consolelog/scripts/migrate.ts +0 -26
  360. package/skills/consolelog/scripts/seed.ts +0 -48
  361. package/skills/consolelog/src/db/index.ts +0 -44
  362. package/skills/consolelog/src/db/queries.ts +0 -348
  363. package/skills/consolelog/src/db/schema.ts +0 -93
  364. package/skills/consolelog/src/index.ts +0 -3
  365. package/skills/consolelog/src/lib/config.ts +0 -110
  366. package/skills/consolelog/src/lib/installer.ts +0 -294
  367. package/skills/consolelog/src/lib/monitor.ts +0 -194
  368. package/skills/consolelog/src/lib/types.ts +0 -189
  369. package/skills/consolelog/src/lib/watcher.ts +0 -207
  370. package/skills/consolelog/tests/api.test.ts +0 -154
  371. package/skills/consolelog/tests/config.test.ts +0 -192
  372. package/skills/consolelog/tests/db.test.ts +0 -447
  373. package/skills/consolelog/tests/installer.test.ts +0 -155
  374. package/skills/consolelog/tsconfig.json +0 -24
  375. package/skills/contract-plainlanguage/CLAUDE.md +0 -19
  376. package/skills/contract-plainlanguage/package.json +0 -27
  377. package/skills/contract-plainlanguage/src/index.ts +0 -294
  378. package/skills/contract-plainlanguage/tsconfig.json +0 -10
  379. package/skills/convert/.env.example +0 -7
  380. package/skills/convert/LICENSE +0 -192
  381. package/skills/convert/README.md +0 -250
  382. package/skills/convert/SKILL.md +0 -106
  383. package/skills/convert/package.json +0 -37
  384. package/skills/convert/src/converters/ai.ts +0 -375
  385. package/skills/convert/src/converters/data.ts +0 -339
  386. package/skills/convert/src/converters/document.ts +0 -189
  387. package/skills/convert/src/converters/image.ts +0 -227
  388. package/skills/convert/src/converters/index.ts +0 -9
  389. package/skills/convert/src/converters/pdf.ts +0 -255
  390. package/skills/convert/src/index-local.ts +0 -568
  391. package/skills/convert/src/index.ts +0 -4
  392. package/skills/convert/src/types.ts +0 -192
  393. package/skills/copytone-translator/CLAUDE.md +0 -19
  394. package/skills/copytone-translator/package.json +0 -27
  395. package/skills/copytone-translator/src/index.ts +0 -295
  396. package/skills/copytone-translator/tsconfig.json +0 -10
  397. package/skills/create-ebook/CLAUDE.md +0 -19
  398. package/skills/create-ebook/package.json +0 -27
  399. package/skills/create-ebook/src/index.ts +0 -637
  400. package/skills/create-ebook/tsconfig.json +0 -10
  401. package/skills/crm-note-enhancer/CLAUDE.md +0 -19
  402. package/skills/crm-note-enhancer/package.json +0 -27
  403. package/skills/crm-note-enhancer/src/index.ts +0 -317
  404. package/skills/crm-note-enhancer/tsconfig.json +0 -10
  405. package/skills/customer-journey-mapper/CLAUDE.md +0 -19
  406. package/skills/customer-journey-mapper/package.json +0 -27
  407. package/skills/customer-journey-mapper/src/index.ts +0 -312
  408. package/skills/customer-journey-mapper/tsconfig.json +0 -10
  409. package/skills/dashboard-narrator/CLAUDE.md +0 -19
  410. package/skills/dashboard-narrator/package.json +0 -27
  411. package/skills/dashboard-narrator/src/index.ts +0 -307
  412. package/skills/dashboard-narrator/tsconfig.json +0 -10
  413. package/skills/dataset-health-check/CLAUDE.md +0 -19
  414. package/skills/dataset-health-check/package.json +0 -27
  415. package/skills/dataset-health-check/src/index.ts +0 -323
  416. package/skills/dataset-health-check/tsconfig.json +0 -10
  417. package/skills/decision-journal/CLAUDE.md +0 -19
  418. package/skills/decision-journal/package.json +0 -27
  419. package/skills/decision-journal/src/index.ts +0 -313
  420. package/skills/decision-journal/tsconfig.json +0 -10
  421. package/skills/deepresearch/CLAUDE.md +0 -11
  422. package/skills/deepresearch/README.md +0 -26
  423. package/skills/deepresearch/SKILL.md +0 -41
  424. package/skills/deepresearch/package.json +0 -11
  425. package/skills/deepresearch/tsconfig.json +0 -29
  426. package/skills/delegation-brief-writer/CLAUDE.md +0 -19
  427. package/skills/delegation-brief-writer/package.json +0 -27
  428. package/skills/delegation-brief-writer/src/index.ts +0 -314
  429. package/skills/delegation-brief-writer/tsconfig.json +0 -10
  430. package/skills/deploy/LICENSE +0 -192
  431. package/skills/deploy/README.md +0 -382
  432. package/skills/deploy/SKILL.md +0 -138
  433. package/skills/deploy/package.json +0 -18
  434. package/skills/deploy/src/deployer.ts +0 -256
  435. package/skills/deploy/src/health.ts +0 -103
  436. package/skills/deploy/src/hosts.ts +0 -45
  437. package/skills/deploy/src/http-client.ts +0 -128
  438. package/skills/deploy/src/index-local.ts +0 -366
  439. package/skills/deploy/src/index.ts +0 -4
  440. package/skills/deploy/src/types.ts +0 -56
  441. package/skills/deploy/tsconfig.json +0 -18
  442. package/skills/destination-briefing/CLAUDE.md +0 -19
  443. package/skills/destination-briefing/package.json +0 -27
  444. package/skills/destination-briefing/src/index.ts +0 -291
  445. package/skills/destination-briefing/tsconfig.json +0 -10
  446. package/skills/doc-generate/CLAUDE.md +0 -19
  447. package/skills/doc-generate/SKILL.md +0 -295
  448. package/skills/doc-generate/package.json +0 -23
  449. package/skills/doc-generate/src/ai.ts +0 -50
  450. package/skills/doc-generate/src/cli.ts +0 -203
  451. package/skills/doc-generate/src/dependencies.ts +0 -44
  452. package/skills/doc-generate/src/document-builder.ts +0 -299
  453. package/skills/doc-generate/src/index.ts +0 -90
  454. package/skills/doc-generate/src/markdown-parser.ts +0 -125
  455. package/skills/doc-generate/src/types.ts +0 -68
  456. package/skills/doc-generate/tsconfig.json +0 -16
  457. package/skills/domainsearch/.env.example +0 -7
  458. package/skills/domainsearch/LICENSE +0 -192
  459. package/skills/domainsearch/SKILL.md +0 -41
  460. package/skills/domainsearch/package.json +0 -33
  461. package/skills/domainsearch/src/index.ts +0 -3
  462. package/skills/domainsearch/src/lib/api-client.ts +0 -181
  463. package/skills/domainsearch/src/lib/config.ts +0 -72
  464. package/skills/domainsearch/src/lib/installer.ts +0 -164
  465. package/skills/domainsearch/tsconfig.json +0 -22
  466. package/skills/educational-resource-finder/CLAUDE.md +0 -19
  467. package/skills/educational-resource-finder/package.json +0 -27
  468. package/skills/educational-resource-finder/src/index.ts +0 -289
  469. package/skills/educational-resource-finder/tsconfig.json +0 -10
  470. package/skills/email-campaign/CLAUDE.md +0 -19
  471. package/skills/email-campaign/package.json +0 -27
  472. package/skills/email-campaign/src/index.ts +0 -339
  473. package/skills/email-campaign/tsconfig.json +0 -10
  474. package/skills/emoji/.env.example +0 -7
  475. package/skills/emoji/QUICKSTART.md +0 -52
  476. package/skills/emoji/README.md +0 -175
  477. package/skills/emoji/SKILL.md +0 -63
  478. package/skills/emoji/package.json +0 -31
  479. package/skills/emoji/src/image-processor.ts +0 -143
  480. package/skills/emoji/src/index.ts +0 -282
  481. package/skills/emoji/src/prompt-generator.ts +0 -181
  482. package/skills/emoji/src/providers/gemini.ts +0 -58
  483. package/skills/emoji/src/providers/openai.ts +0 -55
  484. package/skills/emoji/src/types.ts +0 -72
  485. package/skills/exam-readiness-check/CLAUDE.md +0 -19
  486. package/skills/exam-readiness-check/package.json +0 -27
  487. package/skills/exam-readiness-check/src/index.ts +0 -289
  488. package/skills/exam-readiness-check/tsconfig.json +0 -10
  489. package/skills/excel/CLAUDE.md +0 -19
  490. package/skills/excel/SKILL.md +0 -38
  491. package/skills/excel/package.json +0 -30
  492. package/skills/excel/src/index.ts +0 -644
  493. package/skills/excel/tsconfig.json +0 -10
  494. package/skills/extract/.env.example +0 -3
  495. package/skills/extract/LICENSE +0 -192
  496. package/skills/extract/README.md +0 -61
  497. package/skills/extract/SKILL.md +0 -91
  498. package/skills/extract/package.json +0 -35
  499. package/skills/extract/src/extractors/image.ts +0 -42
  500. package/skills/extract/src/extractors/pdf.ts +0 -96
  501. package/skills/extract/src/index-local.ts +0 -258
  502. package/skills/extract/src/index.ts +0 -4
  503. package/skills/extract/src/providers/openai.ts +0 -222
  504. package/skills/extract/src/types.ts +0 -61
  505. package/skills/extract/tsconfig.json +0 -19
  506. package/skills/extract-invoice/CLAUDE.md +0 -19
  507. package/skills/extract-invoice/package.json +0 -27
  508. package/skills/extract-invoice/src/cli.ts +0 -97
  509. package/skills/extract-invoice/src/extractor.ts +0 -170
  510. package/skills/extract-invoice/src/file-utils.ts +0 -46
  511. package/skills/extract-invoice/src/formatters.ts +0 -144
  512. package/skills/extract-invoice/src/index.ts +0 -129
  513. package/skills/extract-invoice/src/runtime.ts +0 -46
  514. package/skills/extract-invoice/src/types.ts +0 -88
  515. package/skills/extract-invoice/tsconfig.json +0 -10
  516. package/skills/family-activity-curator/CLAUDE.md +0 -19
  517. package/skills/family-activity-curator/package.json +0 -27
  518. package/skills/family-activity-curator/src/index.ts +0 -293
  519. package/skills/family-activity-curator/tsconfig.json +0 -10
  520. package/skills/faq-packager/CLAUDE.md +0 -19
  521. package/skills/faq-packager/package.json +0 -27
  522. package/skills/faq-packager/src/index.ts +0 -292
  523. package/skills/faq-packager/tsconfig.json +0 -10
  524. package/skills/feedback-survey-designer/CLAUDE.md +0 -19
  525. package/skills/feedback-survey-designer/package.json +0 -27
  526. package/skills/feedback-survey-designer/src/index.ts +0 -299
  527. package/skills/feedback-survey-designer/tsconfig.json +0 -10
  528. package/skills/field-trip-planner/CLAUDE.md +0 -19
  529. package/skills/field-trip-planner/package.json +0 -27
  530. package/skills/field-trip-planner/src/index.ts +0 -289
  531. package/skills/field-trip-planner/tsconfig.json +0 -10
  532. package/skills/forecast-scenario-lab/CLAUDE.md +0 -19
  533. package/skills/forecast-scenario-lab/package.json +0 -27
  534. package/skills/forecast-scenario-lab/src/index.ts +0 -314
  535. package/skills/forecast-scenario-lab/tsconfig.json +0 -10
  536. package/skills/generate-book-cover/CLAUDE.md +0 -19
  537. package/skills/generate-book-cover/package.json +0 -11
  538. package/skills/generate-book-cover/tsconfig.json +0 -10
  539. package/skills/generate-diagram/CLAUDE.md +0 -19
  540. package/skills/generate-diagram/package.json +0 -27
  541. package/skills/generate-diagram/src/index.ts +0 -514
  542. package/skills/generate-diagram/tsconfig.json +0 -10
  543. package/skills/generate-documentation/CLAUDE.md +0 -19
  544. package/skills/generate-documentation/package.json +0 -27
  545. package/skills/generate-documentation/src/ai.ts +0 -131
  546. package/skills/generate-documentation/src/cli.ts +0 -71
  547. package/skills/generate-documentation/src/code-parser.ts +0 -300
  548. package/skills/generate-documentation/src/file-processing.ts +0 -182
  549. package/skills/generate-documentation/src/index.ts +0 -65
  550. package/skills/generate-documentation/src/runtime.ts +0 -35
  551. package/skills/generate-documentation/src/types.ts +0 -30
  552. package/skills/generate-documentation/tsconfig.json +0 -10
  553. package/skills/generate-mock-data/CLAUDE.md +0 -19
  554. package/skills/generate-mock-data/package.json +0 -29
  555. package/skills/generate-mock-data/src/ai.ts +0 -102
  556. package/skills/generate-mock-data/src/formatters.ts +0 -84
  557. package/skills/generate-mock-data/src/generator.ts +0 -377
  558. package/skills/generate-mock-data/src/index.ts +0 -201
  559. package/skills/generate-mock-data/src/logger.ts +0 -37
  560. package/skills/generate-mock-data/src/presets.ts +0 -110
  561. package/skills/generate-mock-data/src/types.ts +0 -21
  562. package/skills/generate-mock-data/tsconfig.json +0 -10
  563. package/skills/generate-pr-description/CLAUDE.md +0 -19
  564. package/skills/generate-pr-description/package.json +0 -27
  565. package/skills/generate-pr-description/src/ai.ts +0 -144
  566. package/skills/generate-pr-description/src/cli.ts +0 -80
  567. package/skills/generate-pr-description/src/clipboard.ts +0 -30
  568. package/skills/generate-pr-description/src/formatters.ts +0 -231
  569. package/skills/generate-pr-description/src/git.ts +0 -153
  570. package/skills/generate-pr-description/src/index.ts +0 -114
  571. package/skills/generate-pr-description/src/types.ts +0 -49
  572. package/skills/generate-pr-description/tsconfig.json +0 -10
  573. package/skills/generate-presentation/CLAUDE.md +0 -19
  574. package/skills/generate-presentation/package.json +0 -27
  575. package/skills/generate-presentation/src/ai-clients.ts +0 -61
  576. package/skills/generate-presentation/src/cli.ts +0 -126
  577. package/skills/generate-presentation/src/index.ts +0 -44
  578. package/skills/generate-presentation/src/logger.ts +0 -67
  579. package/skills/generate-presentation/src/presentation-generator.ts +0 -425
  580. package/skills/generate-presentation/src/runtime.ts +0 -6
  581. package/skills/generate-presentation/src/security.ts +0 -12
  582. package/skills/generate-presentation/src/types.ts +0 -28
  583. package/skills/generate-presentation/tsconfig.json +0 -10
  584. package/skills/generate-regex/CLAUDE.md +0 -19
  585. package/skills/generate-regex/package.json +0 -29
  586. package/skills/generate-regex/src/index.ts +0 -669
  587. package/skills/generate-regex/tsconfig.json +0 -10
  588. package/skills/generate-social-posts/CLAUDE.md +0 -19
  589. package/skills/generate-social-posts/package.json +0 -27
  590. package/skills/generate-social-posts/src/ai.ts +0 -88
  591. package/skills/generate-social-posts/src/cli.ts +0 -118
  592. package/skills/generate-social-posts/src/exporters.ts +0 -126
  593. package/skills/generate-social-posts/src/generator.ts +0 -130
  594. package/skills/generate-social-posts/src/index.ts +0 -78
  595. package/skills/generate-social-posts/src/platforms.ts +0 -39
  596. package/skills/generate-social-posts/src/runtime.ts +0 -34
  597. package/skills/generate-social-posts/src/source.ts +0 -116
  598. package/skills/generate-social-posts/src/types.ts +0 -58
  599. package/skills/generate-social-posts/tsconfig.json +0 -10
  600. package/skills/generate-sql/CLAUDE.md +0 -19
  601. package/skills/generate-sql/package.json +0 -27
  602. package/skills/generate-sql/src/index.ts +0 -636
  603. package/skills/generate-sql/tsconfig.json +0 -10
  604. package/skills/github-manager/CLAUDE.md +0 -19
  605. package/skills/github-manager/package.json +0 -29
  606. package/skills/github-manager/src/index.ts +0 -101
  607. package/skills/github-manager/tsconfig.json +0 -10
  608. package/skills/gmail/CLAUDE.md +0 -19
  609. package/skills/gmail/package.json +0 -27
  610. package/skills/gmail/src/index.ts +0 -410
  611. package/skills/gmail/tsconfig.json +0 -10
  612. package/skills/goal-quarterly-roadmap/CLAUDE.md +0 -19
  613. package/skills/goal-quarterly-roadmap/package.json +0 -27
  614. package/skills/goal-quarterly-roadmap/src/index.ts +0 -305
  615. package/skills/goal-quarterly-roadmap/tsconfig.json +0 -10
  616. package/skills/grant-application-drafter/CLAUDE.md +0 -19
  617. package/skills/grant-application-drafter/package.json +0 -27
  618. package/skills/grant-application-drafter/src/index.ts +0 -309
  619. package/skills/grant-application-drafter/tsconfig.json +0 -10
  620. package/skills/grocery-basket-optimizer/CLAUDE.md +0 -19
  621. package/skills/grocery-basket-optimizer/package.json +0 -27
  622. package/skills/grocery-basket-optimizer/src/index.ts +0 -304
  623. package/skills/grocery-basket-optimizer/tsconfig.json +0 -10
  624. package/skills/guest-communication-suite/CLAUDE.md +0 -19
  625. package/skills/guest-communication-suite/package.json +0 -27
  626. package/skills/guest-communication-suite/src/index.ts +0 -312
  627. package/skills/guest-communication-suite/tsconfig.json +0 -10
  628. package/skills/habit-reflection-digest/CLAUDE.md +0 -19
  629. package/skills/habit-reflection-digest/package.json +0 -27
  630. package/skills/habit-reflection-digest/src/index.ts +0 -308
  631. package/skills/habit-reflection-digest/tsconfig.json +0 -10
  632. package/skills/highlight-reel-generator/CLAUDE.md +0 -19
  633. package/skills/highlight-reel-generator/package.json +0 -27
  634. package/skills/highlight-reel-generator/src/index.ts +0 -286
  635. package/skills/highlight-reel-generator/tsconfig.json +0 -10
  636. package/skills/homework-feedback-coach/CLAUDE.md +0 -19
  637. package/skills/homework-feedback-coach/package.json +0 -27
  638. package/skills/homework-feedback-coach/src/index.ts +0 -316
  639. package/skills/homework-feedback-coach/tsconfig.json +0 -10
  640. package/skills/household-maintenance-mgr/CLAUDE.md +0 -19
  641. package/skills/household-maintenance-mgr/package.json +0 -27
  642. package/skills/household-maintenance-mgr/src/index.ts +0 -293
  643. package/skills/household-maintenance-mgr/tsconfig.json +0 -10
  644. package/skills/icon-pack/README.md +0 -28
  645. package/skills/icon-pack/SKILL.md +0 -23
  646. package/skills/icon-pack/package.json +0 -11
  647. package/skills/icon-pack/tsconfig.json +0 -20
  648. package/skills/image/LICENSE +0 -192
  649. package/skills/image/README.md +0 -25
  650. package/skills/image/SKILL.md +0 -49
  651. package/skills/image/examples/aurora-examples.sh +0 -33
  652. package/skills/image/examples/google-examples.sh +0 -37
  653. package/skills/image/examples/openai-examples.sh +0 -35
  654. package/skills/image/package.json +0 -11
  655. package/skills/image/tsconfig.json +0 -19
  656. package/skills/implementation-agent/CLAUDE.md +0 -19
  657. package/skills/implementation-agent/package.json +0 -29
  658. package/skills/implementation-agent/src/ai-generation.ts +0 -225
  659. package/skills/implementation-agent/src/index.ts +0 -608
  660. package/skills/implementation-agent/src/minimist.d.ts +0 -15
  661. package/skills/implementation-agent/src/templates.ts +0 -686
  662. package/skills/implementation-agent/src/types.ts +0 -53
  663. package/skills/implementation-agent/tsconfig.json +0 -10
  664. package/skills/inbox-priority-planner/CLAUDE.md +0 -19
  665. package/skills/inbox-priority-planner/package.json +0 -27
  666. package/skills/inbox-priority-planner/src/index.ts +0 -309
  667. package/skills/inbox-priority-planner/tsconfig.json +0 -10
  668. package/skills/invoice-dispute-helper/CLAUDE.md +0 -19
  669. package/skills/invoice-dispute-helper/package.json +0 -27
  670. package/skills/invoice-dispute-helper/src/index.ts +0 -304
  671. package/skills/invoice-dispute-helper/tsconfig.json +0 -10
  672. package/skills/itinerary-architect/CLAUDE.md +0 -19
  673. package/skills/itinerary-architect/package.json +0 -27
  674. package/skills/itinerary-architect/src/index.ts +0 -313
  675. package/skills/itinerary-architect/tsconfig.json +0 -10
  676. package/skills/kpi-digest-generator/CLAUDE.md +0 -19
  677. package/skills/kpi-digest-generator/package.json +0 -27
  678. package/skills/kpi-digest-generator/src/index.ts +0 -318
  679. package/skills/kpi-digest-generator/tsconfig.json +0 -10
  680. package/skills/lab-notebook-formatter/CLAUDE.md +0 -19
  681. package/skills/lab-notebook-formatter/package.json +0 -27
  682. package/skills/lab-notebook-formatter/src/index.ts +0 -88
  683. package/skills/lab-notebook-formatter/tsconfig.json +0 -10
  684. package/skills/landing-page-copy/CLAUDE.md +0 -19
  685. package/skills/landing-page-copy/package.json +0 -27
  686. package/skills/landing-page-copy/src/index.ts +0 -400
  687. package/skills/landing-page-copy/tsconfig.json +0 -10
  688. package/skills/learning-style-profiler/CLAUDE.md +0 -19
  689. package/skills/learning-style-profiler/package.json +0 -27
  690. package/skills/learning-style-profiler/src/index.ts +0 -291
  691. package/skills/learning-style-profiler/tsconfig.json +0 -10
  692. package/skills/lesson-plan-customizer/CLAUDE.md +0 -19
  693. package/skills/lesson-plan-customizer/package.json +0 -27
  694. package/skills/lesson-plan-customizer/src/index.ts +0 -303
  695. package/skills/lesson-plan-customizer/tsconfig.json +0 -10
  696. package/skills/livestream-runofshow/CLAUDE.md +0 -19
  697. package/skills/livestream-runofshow/package.json +0 -27
  698. package/skills/livestream-runofshow/src/index.ts +0 -299
  699. package/skills/livestream-runofshow/tsconfig.json +0 -10
  700. package/skills/longform-structurer/CLAUDE.md +0 -19
  701. package/skills/longform-structurer/package.json +0 -27
  702. package/skills/longform-structurer/src/index.ts +0 -293
  703. package/skills/longform-structurer/tsconfig.json +0 -10
  704. package/skills/managehook/.env.example +0 -16
  705. package/skills/managehook/CLAUDE.md +0 -48
  706. package/skills/managehook/README.md +0 -210
  707. package/skills/managehook/package.json +0 -24
  708. package/skills/managehook/scripts/migrate.ts +0 -57
  709. package/skills/managehook/scripts/seed.ts +0 -58
  710. package/skills/managehook/src/db/index.ts +0 -37
  711. package/skills/managehook/src/index.ts +0 -3
  712. package/skills/managehook/src/lib/api-client.ts +0 -108
  713. package/skills/managehook/src/lib/config.ts +0 -34
  714. package/skills/managehook/src/lib/installer.ts +0 -140
  715. package/skills/managehook/src/lib/service-dir.ts +0 -119
  716. package/skills/managehook/tsconfig.json +0 -29
  717. package/skills/manageskill/.env.example +0 -16
  718. package/skills/manageskill/CLAUDE.md +0 -48
  719. package/skills/manageskill/README.md +0 -210
  720. package/skills/manageskill/package.json +0 -24
  721. package/skills/manageskill/scripts/migrate.ts +0 -57
  722. package/skills/manageskill/scripts/seed.ts +0 -58
  723. package/skills/manageskill/src/db/index.ts +0 -37
  724. package/skills/manageskill/src/index.ts +0 -3
  725. package/skills/manageskill/src/lib/api-client.ts +0 -108
  726. package/skills/manageskill/src/lib/config.ts +0 -34
  727. package/skills/manageskill/src/lib/installer.ts +0 -140
  728. package/skills/manageskill/src/lib/service-dir.ts +0 -119
  729. package/skills/manageskill/tsconfig.json +0 -29
  730. package/skills/mcp-builder/CLAUDE.md +0 -19
  731. package/skills/mcp-builder/package.json +0 -30
  732. package/skills/mcp-builder/src/ai-descriptions.ts +0 -37
  733. package/skills/mcp-builder/src/generators.ts +0 -513
  734. package/skills/mcp-builder/src/index.ts +0 -62
  735. package/skills/mcp-builder/src/minimist.d.ts +0 -15
  736. package/skills/mcp-builder/src/naming.ts +0 -12
  737. package/skills/mcp-builder/src/options.ts +0 -170
  738. package/skills/mcp-builder/src/templates.ts +0 -149
  739. package/skills/mcp-builder/src/types.ts +0 -42
  740. package/skills/mcp-builder/tsconfig.json +0 -10
  741. package/skills/meal-plan-designer/CLAUDE.md +0 -19
  742. package/skills/meal-plan-designer/package.json +0 -27
  743. package/skills/meal-plan-designer/src/index.ts +0 -301
  744. package/skills/meal-plan-designer/tsconfig.json +0 -10
  745. package/skills/meeting-insight-summarizer/CLAUDE.md +0 -19
  746. package/skills/meeting-insight-summarizer/package.json +0 -27
  747. package/skills/meeting-insight-summarizer/src/index.ts +0 -316
  748. package/skills/meeting-insight-summarizer/tsconfig.json +0 -10
  749. package/skills/microcopy-generator/CLAUDE.md +0 -19
  750. package/skills/microcopy-generator/package.json +0 -27
  751. package/skills/microcopy-generator/src/index.ts +0 -303
  752. package/skills/microcopy-generator/tsconfig.json +0 -10
  753. package/skills/mindfulness-prompt-cache/CLAUDE.md +0 -19
  754. package/skills/mindfulness-prompt-cache/package.json +0 -27
  755. package/skills/mindfulness-prompt-cache/src/index.ts +0 -290
  756. package/skills/mindfulness-prompt-cache/tsconfig.json +0 -10
  757. package/skills/music/SKILL.md +0 -33
  758. package/skills/music/package.json +0 -11
  759. package/skills/music-album/SKILL.md +0 -37
  760. package/skills/music-album/package.json +0 -11
  761. package/skills/notion-manager/CLAUDE.md +0 -19
  762. package/skills/notion-manager/package.json +0 -29
  763. package/skills/notion-manager/src/index.ts +0 -105
  764. package/skills/notion-manager/tsconfig.json +0 -10
  765. package/skills/npmpublish/CLAUDE.md +0 -30
  766. package/skills/npmpublish/README.md +0 -83
  767. package/skills/npmpublish/SKILL.md +0 -70
  768. package/skills/npmpublish/package.json +0 -41
  769. package/skills/npmpublish/src/index.ts +0 -192
  770. package/skills/npmpublish/tsconfig.json +0 -18
  771. package/skills/onboarding-sequence-builder/CLAUDE.md +0 -19
  772. package/skills/onboarding-sequence-builder/package.json +0 -27
  773. package/skills/onboarding-sequence-builder/src/index.ts +0 -321
  774. package/skills/onboarding-sequence-builder/tsconfig.json +0 -10
  775. package/skills/onsite-ops-checklist/CLAUDE.md +0 -19
  776. package/skills/onsite-ops-checklist/package.json +0 -27
  777. package/skills/onsite-ops-checklist/src/index.ts +0 -307
  778. package/skills/onsite-ops-checklist/tsconfig.json +0 -10
  779. package/skills/outreach-cadence-designer/CLAUDE.md +0 -19
  780. package/skills/outreach-cadence-designer/package.json +0 -27
  781. package/skills/outreach-cadence-designer/src/index.ts +0 -330
  782. package/skills/outreach-cadence-designer/tsconfig.json +0 -10
  783. package/skills/packaging-concept-studio/CLAUDE.md +0 -19
  784. package/skills/packaging-concept-studio/package.json +0 -27
  785. package/skills/packaging-concept-studio/src/index.ts +0 -296
  786. package/skills/packaging-concept-studio/tsconfig.json +0 -10
  787. package/skills/packing-plan-pro/CLAUDE.md +0 -19
  788. package/skills/packing-plan-pro/package.json +0 -27
  789. package/skills/packing-plan-pro/src/index.ts +0 -306
  790. package/skills/packing-plan-pro/tsconfig.json +0 -10
  791. package/skills/parent-teacher-brief/CLAUDE.md +0 -19
  792. package/skills/parent-teacher-brief/package.json +0 -27
  793. package/skills/parent-teacher-brief/src/index.ts +0 -290
  794. package/skills/parent-teacher-brief/tsconfig.json +0 -10
  795. package/skills/partner-kit-assembler/CLAUDE.md +0 -19
  796. package/skills/partner-kit-assembler/package.json +0 -27
  797. package/skills/partner-kit-assembler/src/index.ts +0 -313
  798. package/skills/partner-kit-assembler/tsconfig.json +0 -10
  799. package/skills/payroll-change-prepper/CLAUDE.md +0 -19
  800. package/skills/payroll-change-prepper/package.json +0 -27
  801. package/skills/payroll-change-prepper/src/index.ts +0 -304
  802. package/skills/payroll-change-prepper/tsconfig.json +0 -10
  803. package/skills/pdf-read/SKILL.md +0 -56
  804. package/skills/pdf-read/package.json +0 -11
  805. package/skills/pdf-read/tsconfig.json +0 -8
  806. package/skills/persona-based-adwriter/CLAUDE.md +0 -19
  807. package/skills/persona-based-adwriter/package.json +0 -27
  808. package/skills/persona-based-adwriter/src/index.ts +0 -285
  809. package/skills/persona-based-adwriter/tsconfig.json +0 -10
  810. package/skills/persona-generator/CLAUDE.md +0 -19
  811. package/skills/persona-generator/package.json +0 -27
  812. package/skills/persona-generator/src/index.ts +0 -443
  813. package/skills/persona-generator/tsconfig.json +0 -10
  814. package/skills/personal-daily-ops/CLAUDE.md +0 -19
  815. package/skills/personal-daily-ops/package.json +0 -27
  816. package/skills/personal-daily-ops/src/index.ts +0 -324
  817. package/skills/personal-daily-ops/tsconfig.json +0 -10
  818. package/skills/pet-care-scheduler/CLAUDE.md +0 -19
  819. package/skills/pet-care-scheduler/package.json +0 -27
  820. package/skills/pet-care-scheduler/src/index.ts +0 -298
  821. package/skills/pet-care-scheduler/tsconfig.json +0 -10
  822. package/skills/photo-album/SKILL.md +0 -29
  823. package/skills/photo-album/package.json +0 -11
  824. package/skills/photo-album/tsconfig.json +0 -4
  825. package/skills/playlist-maker/SKILL.md +0 -33
  826. package/skills/playlist-maker/package.json +0 -11
  827. package/skills/playlist-maker/tsconfig.json +0 -4
  828. package/skills/podcast-show-notes/CLAUDE.md +0 -19
  829. package/skills/podcast-show-notes/package.json +0 -27
  830. package/skills/podcast-show-notes/src/index.ts +0 -302
  831. package/skills/podcast-show-notes/tsconfig.json +0 -10
  832. package/skills/presentation-theme-maker/CLAUDE.md +0 -19
  833. package/skills/presentation-theme-maker/package.json +0 -27
  834. package/skills/presentation-theme-maker/src/index.ts +0 -292
  835. package/skills/presentation-theme-maker/tsconfig.json +0 -10
  836. package/skills/press-release-drafter/CLAUDE.md +0 -19
  837. package/skills/press-release-drafter/package.json +0 -27
  838. package/skills/press-release-drafter/src/index.ts +0 -291
  839. package/skills/press-release-drafter/tsconfig.json +0 -10
  840. package/skills/print-collateral-designer/CLAUDE.md +0 -19
  841. package/skills/print-collateral-designer/package.json +0 -27
  842. package/skills/print-collateral-designer/src/index.ts +0 -298
  843. package/skills/print-collateral-designer/tsconfig.json +0 -10
  844. package/skills/procurement-scorecard/CLAUDE.md +0 -19
  845. package/skills/procurement-scorecard/package.json +0 -27
  846. package/skills/procurement-scorecard/src/index.ts +0 -338
  847. package/skills/procurement-scorecard/tsconfig.json +0 -10
  848. package/skills/product-demo-script/CLAUDE.md +0 -19
  849. package/skills/product-demo-script/package.json +0 -27
  850. package/skills/product-demo-script/src/index.ts +0 -326
  851. package/skills/product-demo-script/tsconfig.json +0 -10
  852. package/skills/project-dashboard-reports/SKILL.md +0 -78
  853. package/skills/project-dashboard-reports/package.json +0 -25
  854. package/skills/project-dashboard-reports/src/index.ts +0 -67
  855. package/skills/project-retro-companion/CLAUDE.md +0 -19
  856. package/skills/project-retro-companion/package.json +0 -27
  857. package/skills/project-retro-companion/src/index.ts +0 -298
  858. package/skills/project-retro-companion/tsconfig.json +0 -10
  859. package/skills/proposal-redline-advisor/CLAUDE.md +0 -19
  860. package/skills/proposal-redline-advisor/package.json +0 -27
  861. package/skills/proposal-redline-advisor/src/index.ts +0 -320
  862. package/skills/proposal-redline-advisor/tsconfig.json +0 -10
  863. package/skills/read-image/SKILL.md +0 -47
  864. package/skills/read-image/package.json +0 -33
  865. package/skills/read-image/src/index.ts +0 -264
  866. package/skills/read-pdf/SKILL.md +0 -53
  867. package/skills/read-pdf/package.json +0 -11
  868. package/skills/remove-background/CLAUDE.md +0 -19
  869. package/skills/remove-background/package.json +0 -11
  870. package/skills/remove-background/tsconfig.json +0 -10
  871. package/skills/risk-disclosure-kit/CLAUDE.md +0 -19
  872. package/skills/risk-disclosure-kit/package.json +0 -27
  873. package/skills/risk-disclosure-kit/src/index.ts +0 -307
  874. package/skills/risk-disclosure-kit/tsconfig.json +0 -10
  875. package/skills/roi-comparison-tool/CLAUDE.md +0 -19
  876. package/skills/roi-comparison-tool/package.json +0 -27
  877. package/skills/roi-comparison-tool/src/index.ts +0 -322
  878. package/skills/roi-comparison-tool/tsconfig.json +0 -10
  879. package/skills/sales-call-recapper/CLAUDE.md +0 -19
  880. package/skills/sales-call-recapper/package.json +0 -27
  881. package/skills/sales-call-recapper/src/index.ts +0 -300
  882. package/skills/sales-call-recapper/tsconfig.json +0 -10
  883. package/skills/salescopy/.env.example +0 -2
  884. package/skills/salescopy/CLAUDE.md +0 -23
  885. package/skills/salescopy/LICENSE +0 -192
  886. package/skills/salescopy/README.md +0 -72
  887. package/skills/salescopy/package.json +0 -27
  888. package/skills/salescopy/src/commands/config.ts +0 -115
  889. package/skills/salescopy/src/commands/generate.ts +0 -179
  890. package/skills/salescopy/src/commands/sessions.ts +0 -169
  891. package/skills/salescopy/src/commands/templates.ts +0 -99
  892. package/skills/salescopy/src/index.ts +0 -3
  893. package/skills/salescopy/src/lib/generator.ts +0 -197
  894. package/skills/salescopy/src/lib/storage.ts +0 -191
  895. package/skills/salescopy/src/types/index.ts +0 -74
  896. package/skills/salescopy/src/utils/logger.ts +0 -33
  897. package/skills/salescopy/src/utils/paths.ts +0 -25
  898. package/skills/salescopy/tsconfig.json +0 -23
  899. package/skills/scaffold-project/CLAUDE.md +0 -19
  900. package/skills/scaffold-project/package.json +0 -29
  901. package/skills/scaffold-project/src/ai-detect.ts +0 -136
  902. package/skills/scaffold-project/src/file-generators.ts +0 -292
  903. package/skills/scaffold-project/src/index.ts +0 -240
  904. package/skills/scaffold-project/src/project-config.ts +0 -338
  905. package/skills/scaffold-project/src/templates.ts +0 -173
  906. package/skills/scaffold-project/src/types.ts +0 -58
  907. package/skills/scaffold-project/tsconfig.json +0 -10
  908. package/skills/scholarship-tracker/CLAUDE.md +0 -19
  909. package/skills/scholarship-tracker/package.json +0 -27
  910. package/skills/scholarship-tracker/src/index.ts +0 -298
  911. package/skills/scholarship-tracker/tsconfig.json +0 -10
  912. package/skills/sdk-generator/SKILL.md +0 -45
  913. package/skills/sdk-generator/package.json +0 -11
  914. package/skills/sdk-generator/tsconfig.json +0 -8
  915. package/skills/seating-chart-maker/CLAUDE.md +0 -19
  916. package/skills/seating-chart-maker/package.json +0 -27
  917. package/skills/seating-chart-maker/src/index.ts +0 -312
  918. package/skills/seating-chart-maker/tsconfig.json +0 -10
  919. package/skills/seo-brief-builder/CLAUDE.md +0 -19
  920. package/skills/seo-brief-builder/package.json +0 -27
  921. package/skills/seo-brief-builder/src/index.ts +0 -288
  922. package/skills/seo-brief-builder/tsconfig.json +0 -10
  923. package/skills/short-video-pack/SKILL.md +0 -30
  924. package/skills/short-video-pack/package.json +0 -11
  925. package/skills/slack-assistant/CLAUDE.md +0 -19
  926. package/skills/slack-assistant/package.json +0 -29
  927. package/skills/slack-assistant/src/index.ts +0 -79
  928. package/skills/slack-assistant/tsconfig.json +0 -10
  929. package/skills/sleep-routine-analyzer/CLAUDE.md +0 -19
  930. package/skills/sleep-routine-analyzer/package.json +0 -27
  931. package/skills/sleep-routine-analyzer/src/index.ts +0 -293
  932. package/skills/sleep-routine-analyzer/tsconfig.json +0 -10
  933. package/skills/sms/README.md +0 -33
  934. package/skills/sms/package.json +0 -35
  935. package/skills/sms/src/index.ts +0 -335
  936. package/skills/sms/tsconfig.json +0 -21
  937. package/skills/social-media-kit/CLAUDE.md +0 -19
  938. package/skills/social-media-kit/package.json +0 -27
  939. package/skills/social-media-kit/src/index.ts +0 -281
  940. package/skills/social-media-kit/tsconfig.json +0 -10
  941. package/skills/sponsorship-proposal-lab/CLAUDE.md +0 -19
  942. package/skills/sponsorship-proposal-lab/package.json +0 -27
  943. package/skills/sponsorship-proposal-lab/src/index.ts +0 -300
  944. package/skills/sponsorship-proposal-lab/tsconfig.json +0 -10
  945. package/skills/spreadsheet-cleanroom/CLAUDE.md +0 -19
  946. package/skills/spreadsheet-cleanroom/package.json +0 -27
  947. package/skills/spreadsheet-cleanroom/src/index.ts +0 -331
  948. package/skills/spreadsheet-cleanroom/tsconfig.json +0 -10
  949. package/skills/stress-relief-playbook/CLAUDE.md +0 -19
  950. package/skills/stress-relief-playbook/package.json +0 -27
  951. package/skills/stress-relief-playbook/src/index.ts +0 -298
  952. package/skills/stress-relief-playbook/tsconfig.json +0 -10
  953. package/skills/study-guide-builder/CLAUDE.md +0 -19
  954. package/skills/study-guide-builder/package.json +0 -27
  955. package/skills/study-guide-builder/src/index.ts +0 -298
  956. package/skills/study-guide-builder/tsconfig.json +0 -10
  957. package/skills/subscription-spend-watcher/CLAUDE.md +0 -19
  958. package/skills/subscription-spend-watcher/package.json +0 -27
  959. package/skills/subscription-spend-watcher/src/index.ts +0 -312
  960. package/skills/subscription-spend-watcher/tsconfig.json +0 -10
  961. package/skills/subtitle/.env.example +0 -2
  962. package/skills/subtitle/CLAUDE.md +0 -37
  963. package/skills/subtitle/LICENSE +0 -192
  964. package/skills/subtitle/README.md +0 -63
  965. package/skills/subtitle/package.json +0 -43
  966. package/skills/subtitle/src/commands/config.ts +0 -53
  967. package/skills/subtitle/src/commands/generate.ts +0 -61
  968. package/skills/subtitle/src/index.ts +0 -3
  969. package/skills/subtitle/src/lib/generator.ts +0 -216
  970. package/skills/subtitle/src/lib/storage.ts +0 -62
  971. package/skills/subtitle/src/types/index.ts +0 -68
  972. package/skills/subtitle/src/utils/logger.ts +0 -34
  973. package/skills/subtitle/src/utils/paths.ts +0 -51
  974. package/skills/subtitle/tsconfig.json +0 -21
  975. package/skills/survey-insight-extractor/CLAUDE.md +0 -19
  976. package/skills/survey-insight-extractor/package.json +0 -27
  977. package/skills/survey-insight-extractor/src/index.ts +0 -317
  978. package/skills/survey-insight-extractor/tsconfig.json +0 -10
  979. package/skills/terraform-generator/CLAUDE.md +0 -19
  980. package/skills/terraform-generator/package.json +0 -29
  981. package/skills/terraform-generator/src/index.ts +0 -99
  982. package/skills/terraform-generator/tsconfig.json +0 -10
  983. package/skills/testimonial-graphics/CLAUDE.md +0 -19
  984. package/skills/testimonial-graphics/package.json +0 -27
  985. package/skills/testimonial-graphics/src/index.ts +0 -303
  986. package/skills/testimonial-graphics/tsconfig.json +0 -10
  987. package/skills/timesheet/.env.example +0 -25
  988. package/skills/timesheet/README.md +0 -235
  989. package/skills/timesheet/package.json +0 -47
  990. package/skills/timesheet/scripts/publish.ts +0 -210
  991. package/skills/timesheet/src/commands/employee.ts +0 -96
  992. package/skills/timesheet/src/commands/export.ts +0 -29
  993. package/skills/timesheet/src/commands/generate.ts +0 -102
  994. package/skills/timesheet/src/commands/holiday.ts +0 -74
  995. package/skills/timesheet/src/commands/profile.ts +0 -133
  996. package/skills/timesheet/src/commands/setup.ts +0 -21
  997. package/skills/timesheet/src/commands/vacation.ts +0 -93
  998. package/skills/timesheet/src/index.ts +0 -3
  999. package/skills/timesheet/src/lib/employees.ts +0 -56
  1000. package/skills/timesheet/src/lib/export.ts +0 -123
  1001. package/skills/timesheet/src/lib/holidays.ts +0 -79
  1002. package/skills/timesheet/src/lib/paths.ts +0 -59
  1003. package/skills/timesheet/src/lib/profiles.ts +0 -168
  1004. package/skills/timesheet/src/lib/storage.ts +0 -83
  1005. package/skills/timesheet/src/lib/timesheet.ts +0 -130
  1006. package/skills/timesheet/src/lib/vacations.ts +0 -70
  1007. package/skills/timesheet/src/types/index.ts +0 -96
  1008. package/skills/timesheet/tsconfig.json +0 -29
  1009. package/skills/transcript/LICENSE +0 -192
  1010. package/skills/transcript/README.md +0 -17
  1011. package/skills/transcript/SKILL.md +0 -80
  1012. package/skills/transcript/package.json +0 -11
  1013. package/skills/transcript/tsconfig.json +0 -18
  1014. package/skills/travel-budget-balancer/CLAUDE.md +0 -19
  1015. package/skills/travel-budget-balancer/package.json +0 -27
  1016. package/skills/travel-budget-balancer/src/index.ts +0 -297
  1017. package/skills/travel-budget-balancer/tsconfig.json +0 -10
  1018. package/skills/video/SKILL.md +0 -37
  1019. package/skills/video/package.json +0 -11
  1020. package/skills/video-cut-suggester/CLAUDE.md +0 -19
  1021. package/skills/video-cut-suggester/package.json +0 -27
  1022. package/skills/video-cut-suggester/src/index.ts +0 -304
  1023. package/skills/video-cut-suggester/tsconfig.json +0 -10
  1024. package/skills/video-thumbnail/CLAUDE.md +0 -19
  1025. package/skills/video-thumbnail/package.json +0 -27
  1026. package/skills/video-thumbnail/src/index.ts +0 -356
  1027. package/skills/video-thumbnail/tsconfig.json +0 -10
  1028. package/skills/voiceover-jingle-pack/SKILL.md +0 -28
  1029. package/skills/voiceover-jingle-pack/package.json +0 -11
  1030. package/skills/webcrawling/CLAUDE.md +0 -11
  1031. package/skills/webcrawling/LICENSE +0 -192
  1032. package/skills/webcrawling/README.md +0 -24
  1033. package/skills/webcrawling/package.json +0 -11
  1034. package/skills/webcrawling/tsconfig.json +0 -22
  1035. package/skills/webinar-script-coach/CLAUDE.md +0 -19
  1036. package/skills/webinar-script-coach/package.json +0 -27
  1037. package/skills/webinar-script-coach/src/index.ts +0 -296
  1038. package/skills/webinar-script-coach/tsconfig.json +0 -10
  1039. package/skills/wellness-progress-reporter/CLAUDE.md +0 -19
  1040. package/skills/wellness-progress-reporter/package.json +0 -27
  1041. package/skills/wellness-progress-reporter/src/index.ts +0 -298
  1042. package/skills/wellness-progress-reporter/tsconfig.json +0 -10
  1043. package/skills/workout-cycle-planner/CLAUDE.md +0 -19
  1044. package/skills/workout-cycle-planner/package.json +0 -27
  1045. package/skills/workout-cycle-planner/src/index.ts +0 -299
  1046. package/skills/workout-cycle-planner/tsconfig.json +0 -10
  1047. package/skills/write/.env.example +0 -9
  1048. package/skills/write/LICENSE +0 -192
  1049. package/skills/write/README.md +0 -17
  1050. package/skills/write/SKILL.md +0 -90
  1051. package/skills/write/package.json +0 -32
  1052. package/skills/write/src/agents/image-generator.ts +0 -186
  1053. package/skills/write/src/agents/researcher.ts +0 -61
  1054. package/skills/write/src/agents/writer.ts +0 -99
  1055. package/skills/write/src/index-local.ts +0 -248
  1056. package/skills/write/src/index.ts +0 -4
  1057. package/skills/write/src/orchestrator.ts +0 -171
  1058. package/skills/write/src/types.ts +0 -65
  1059. package/skills/write/tsconfig.json +0 -18
  1060. /package/migrations/{0001_open_skills_self_hosted.sql → postgres/0001_open_skills_self_hosted.sql} +0 -0
  1061. /package/skills/{read-image → api-docs-portal}/tsconfig.json +0 -0
  1062. /package/skills/{read-pdf → brand-assets}/tsconfig.json +0 -0
@@ -0,0 +1,123 @@
1
+ /**
2
+ * `skills sync` — the last mile: write skills from this machine's corpus
3
+ * (~/.hasna/skills/installed/<name>/) into each coding agent's global skills directory,
4
+ * per-tool adapted, so an agent auto-loads them.
5
+ *
6
+ * This is the deliberate reversal of the old "pins, not installs" stub: agent skill
7
+ * folders used to be left entirely unmanaged and every write path returned success:false.
8
+ * They are now written — but only the ones this tool owns. Ownership is tracked with a
9
+ * marker file. An unmarked directory is left alone by default; only one that already has
10
+ * SKILL.md can be explicitly adopted, while any other unmarked directory is never touched.
11
+ */
12
+ import { renameSync } from "node:fs";
13
+ /**
14
+ * The coding agents `skills sync` targets by default. These runtimes load a
15
+ * `<home>/.<agent>/skills/<name>/SKILL.md` tree (OpenCode is the one path exception).
16
+ * Gemini is retired; Windsurf/pi are addressable through installSkillForAgent but are
17
+ * not in the default fan-out.
18
+ */
19
+ export type SyncAgent = "claude" | "codewith" | "codex" | "opencode" | "cursor";
20
+ export declare const SYNC_AGENTS: readonly SyncAgent[];
21
+ /**
22
+ * Ownership marker written beside every SKILL.md this tool syncs. Its presence is how a
23
+ * re-sync tells "a skill I wrote, safe to update" from "a skill the user hand-authored,
24
+ * do not touch". A hidden sidecar rather than a frontmatter field so the SKILL.md the
25
+ * agent loads stays exactly the adapted document and nothing else.
26
+ */
27
+ export declare const SYNC_MARKER_FILE = ".hasna-skills.json";
28
+ export declare const SYNC_MARKER_MANAGED_BY = "@hasna/skills";
29
+ export interface SyncMarker {
30
+ managedBy: string;
31
+ skill: string;
32
+ source: string;
33
+ syncedAt: string;
34
+ }
35
+ export declare function isSyncAgent(value: string): value is SyncAgent;
36
+ export declare function resolveSyncAgents(arg?: string): SyncAgent[];
37
+ /** The global skills directory for an agent, honouring a test-supplied home. */
38
+ export declare function agentGlobalSkillsDir(agent: SyncAgent, homeDir?: string): string;
39
+ /**
40
+ * Adapt a SKILL.md for a target agent.
41
+ *
42
+ * `user_invocable` is a Claude-only frontmatter field (it controls Claude's slash menu).
43
+ * The Claude copy carries it; every other agent's copy has it stripped, because the field
44
+ * is meaningless there and skill-sync policy is that non-Claude copies must not carry
45
+ * Claude-specific frontmatter. The body is left verbatim: automatically rewriting prose
46
+ * would corrupt meaning, and corpus/instruction skills are authored tool-neutral.
47
+ */
48
+ export declare function adaptSkillMdForAgent(skillMd: string, agent: string): string;
49
+ /** A pointer SKILL.md for an executable skill: what it is and how to actually run it. */
50
+ export declare function pointerSkillMd(name: string, description: string): string;
51
+ export type SyncActionKind = "create" | "update" | "skip";
52
+ export interface AgentSyncAction {
53
+ skill: string;
54
+ agent: SyncAgent;
55
+ path: string;
56
+ action: SyncActionKind;
57
+ reason?: string;
58
+ }
59
+ export interface SyncSkillsOptions {
60
+ /** Specific skills to sync. When empty, every corpus skill is synced. */
61
+ names?: string[];
62
+ /** Explicit; the default when no names are given is already "all". */
63
+ all?: boolean;
64
+ /** Target agents. Defaults to SYNC_AGENTS. */
65
+ agents?: SyncAgent[];
66
+ /** Report intended actions without writing anything. */
67
+ dryRun?: boolean;
68
+ /** Adopt an unmanaged agent skill only when its directory already contains SKILL.md. */
69
+ force?: boolean;
70
+ /** Corpus root override. Tests only. */
71
+ rootDir?: string;
72
+ /** Home directory override for agent skill dirs. Tests only. */
73
+ homeDir?: string;
74
+ }
75
+ export interface SyncSkillsResult {
76
+ actions: AgentSyncAction[];
77
+ }
78
+ export declare function syncSkillsToAgents(options?: SyncSkillsOptions): SyncSkillsResult;
79
+ export interface WriteManagedAgentSkillParams {
80
+ skill: string;
81
+ agent: SyncAgent;
82
+ skillMd: string;
83
+ source?: "bundled" | "corpus";
84
+ resourceDir?: string;
85
+ homeDir?: string;
86
+ dryRun?: boolean;
87
+ force?: boolean;
88
+ }
89
+ /**
90
+ * Write one skill into one agent's global folder, non-clobbering.
91
+ *
92
+ * A directory this tool has written before carries the marker file and is replaced with
93
+ * an exact mirror. A directory with a SKILL.md but no marker is the user's own skill and
94
+ * is skipped unless `force` explicitly adopts it. Any other pre-existing unmarked
95
+ * directory is always left untouched. A fresh directory is created.
96
+ */
97
+ export declare function writeManagedAgentSkill(params: WriteManagedAgentSkillParams): AgentSyncAction;
98
+ export interface ManagedDirWriteResult {
99
+ action: SyncActionKind;
100
+ path: string;
101
+ reason?: string;
102
+ }
103
+ export interface ManagedDirWriteOptions {
104
+ skill: string;
105
+ source?: string;
106
+ resourceDir?: string;
107
+ dryRun?: boolean;
108
+ force?: boolean;
109
+ /** Test seam for exercising rollback after the original directory has moved. */
110
+ renameDirectory?: typeof renameSync;
111
+ }
112
+ /**
113
+ * The primitive both the fan-out sync and the single-skill installer share: replace one
114
+ * owned skill directory with an exact staged mirror, non-clobbering, and stamp it as ours.
115
+ * `dir` is the skill's own directory (…/skills/<name>), so callers control scope (global
116
+ * vs project) by choosing the directory.
117
+ */
118
+ export declare function writeManagedSkillDir(dir: string, skillMd: string, options: ManagedDirWriteOptions): ManagedDirWriteResult;
119
+ /**
120
+ * Remove a skill this tool synced from an agent folder. Refuses to delete a directory it
121
+ * did not write (no marker), so it can never remove a user's hand-authored skill.
122
+ */
123
+ export declare function removeManagedAgentSkill(skill: string, agent: SyncAgent, homeDir?: string): boolean;
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Single source of truth for resolving the Skills API endpoint.
3
+ *
4
+ * Boundary rule (R1): an unconfigured install must never produce a URL on a
5
+ * vendor-controlled host.
6
+ *
7
+ * - Read paths fail closed: `resolveApiUrl()` returns `undefined` and the
8
+ * caller keeps working against the bundled local registry.
9
+ * - Auth and write paths fail loudly: `requireApiUrl()` throws an error that
10
+ * names the missing configuration.
11
+ *
12
+ * There is deliberately no fallback endpoint and no localhost default. An
13
+ * unconfigured CLI has nothing sane to point a credential-bearing request at,
14
+ * so it must say so rather than pick a host on the user's behalf.
15
+ */
16
+ import { type SkillsConfig } from "./config.js";
17
+ export declare const API_URL_ENV_VAR = "SKILLS_API_URL";
18
+ export declare const API_URL_CONFIG_KEY = "apiUrl";
19
+ /** Hint shown wherever a Skills API URL is required but absent. */
20
+ export declare const MISSING_API_URL_HINT: string;
21
+ export declare class MissingApiUrlError extends Error {
22
+ readonly code = "MISSING_API_URL";
23
+ constructor(action?: string);
24
+ }
25
+ /**
26
+ * Resolve the configured Skills API origin, or `undefined` when the install has
27
+ * not been pointed at an instance. `SKILLS_API_URL` wins over the config file.
28
+ */
29
+ export declare function resolveApiUrl(config?: SkillsConfig, env?: Record<string, string | undefined>): string | undefined;
30
+ /**
31
+ * Resolve the configured Skills API origin, or throw naming the missing
32
+ * configuration. Use this on every auth and write path.
33
+ */
34
+ export declare function requireApiUrl(action?: string, config?: SkillsConfig, env?: Record<string, string | undefined>): string;
@@ -1,13 +1,29 @@
1
+ /**
2
+ * Stored credentials for a Skills API instance.
3
+ *
4
+ * `apiKey` is the only credential. The identity fields are display metadata
5
+ * echoed back from the instance's `whoami`, so they are optional: an instance
6
+ * that does not return them leaves them unset. They are never invented locally
7
+ * — a placeholder written here is indistinguishable from a value the server
8
+ * actually returned once it is read back out of `auth.json`.
9
+ */
1
10
  export interface AuthConfig {
2
11
  apiKey: string;
3
- email: string;
4
- orgId: string;
5
- orgSlug: string;
6
- userId: string;
12
+ email?: string;
13
+ orgId?: string;
14
+ orgSlug?: string;
15
+ userId?: string;
7
16
  }
8
17
  export declare function getAuthConfig(): AuthConfig | null;
9
18
  export declare function saveAuthConfig(config: AuthConfig): void;
10
19
  export declare function clearAuthConfig(): void;
11
20
  export declare function getApiKey(): string | null;
12
21
  export declare function normalizeSkillsApiOrigin(apiUrl: string): string;
13
- export declare function getApiUrl(): string;
22
+ /**
23
+ * Origin every credential-bearing request is sent to.
24
+ *
25
+ * Throws `MissingApiUrlError` when the install has not been pointed at an
26
+ * instance. There is no fallback endpoint: an unconfigured CLI must not decide
27
+ * on the user's behalf where their email address, login code, or API key goes.
28
+ */
29
+ export declare function getApiUrl(action?: string): string;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Input validation for the `blog-article` skill.
3
+ *
4
+ * This is ordinary run-option validation — topic, tone, length, SEO flag, and
5
+ * article count — surfaced at the CLI/MCP layer so a bad invocation fails with a
6
+ * clear message before the skill runs. It carries no pricing or billing concern.
7
+ */
8
+ export declare const ARTICLE_GENERATION_SLUG = "blog-article";
9
+ export declare const ARTICLE_MAX_COUNT = 12;
10
+ export declare const ARTICLE_COUNT_ERROR = "Count must be an integer between 1 and 12.";
11
+ declare const ARTICLE_TONES: readonly ["professional", "casual", "technical", "friendly"];
12
+ declare const ARTICLE_LENGTHS: readonly ["short", "medium", "long"];
13
+ export type ArticleTone = typeof ARTICLE_TONES[number];
14
+ export type ArticleLength = typeof ARTICLE_LENGTHS[number];
15
+ export interface BlogArticleRunOptions {
16
+ topic?: string;
17
+ audience?: string;
18
+ tone: ArticleTone;
19
+ length: ArticleLength;
20
+ seo: boolean;
21
+ outline?: string;
22
+ count: number;
23
+ }
24
+ export type BlogArticleValidationResult = {
25
+ ok: true;
26
+ options: BlogArticleRunOptions;
27
+ input: Record<string, unknown>;
28
+ errors: [];
29
+ } | {
30
+ ok: false;
31
+ input: Record<string, unknown>;
32
+ errors: string[];
33
+ };
34
+ export declare function validateBlogArticleRunOptions(input?: unknown, args?: string[], validation?: {
35
+ requireTopic?: boolean;
36
+ }): BlogArticleValidationResult;
37
+ export {};
@@ -8,17 +8,59 @@
8
8
  *
9
9
  * Values from the project config override global config.
10
10
  */
11
+ /**
12
+ * There is no deployment "mode" key.
13
+ *
14
+ * Skills has one deployment story: you run it. Whether this CLI talks to a
15
+ * server is not a product variant, it is one fact — whether an API origin is
16
+ * configured (apiUrl here, or $SKILLS_API_URL). Nothing else may be derived
17
+ * from a declared label, because a label can disagree with the configuration
18
+ * it claims to describe.
19
+ *
20
+ * One caveat, true at the time of writing and tracked separately: getApiUrl()
21
+ * in auth-store.ts still falls back to a built-in origin when neither is set,
22
+ * so "no origin configured" is not yet the same as "sends nothing anywhere" on
23
+ * the auth path. Removing that fallback belongs to the no-vendor-defaults work,
24
+ * not here; remote-registry.ts already fails closed and is the model.
25
+ *
26
+ * Configs written by older versions may still carry a "mode" key on disk. That is
27
+ * refused rather than ignored - see lib/retired-settings.ts for why silence is
28
+ * the worse of the two failures - and `skills config unset mode` removes it.
29
+ */
11
30
  export interface SkillsConfig {
12
- mode?: "local" | "self-hosted";
13
31
  defaultAgent?: "claude" | "codex" | "gemini" | "pi" | "opencode" | "all";
14
32
  defaultScope?: "global" | "project";
15
33
  format?: "compact" | "json" | "csv";
16
34
  apiUrl?: string;
35
+ extensionsDir?: string;
17
36
  }
18
37
  export type ConfigScope = "global" | "project";
38
+ /**
39
+ * Environment variable that relocates the skills data directory.
40
+ *
41
+ * Exported so that every reader agrees on the name: previously the literal was
42
+ * duplicated in portable-skills.ts and honoured there but *not* in getDataDir(),
43
+ * which is what made the override only half work (see getDataDir below).
44
+ */
45
+ export declare const DATA_DIR_ENV = "HASNA_SKILLS_DIR";
46
+ /**
47
+ * Subfolder of the data directory holding the installed skill corpus.
48
+ *
49
+ * ~/.hasna/skills is the skills *app* folder, matching every sibling Hasna app:
50
+ * mementos keeps agents/ beside config.json and mementos.db, accounts keeps
51
+ * profiles/ beside accounts.json, knowledge keeps artifacts/ and cache/ beside
52
+ * auth.json. Each puts app data at the app root and content in a named subfolder.
53
+ *
54
+ * Skills used to be the exception, writing one folder per skill straight into the
55
+ * app root next to config.json and skills.db. That is the only reason a denylist
56
+ * of "entries that look like skills but aren't" ever had to exist; no sibling app
57
+ * needs one. With the corpus under installed/, a skill may be named `config` or
58
+ * `custom` without colliding with anything.
59
+ */
60
+ export declare const INSTALLED_SKILLS_DIRNAME = "installed";
19
61
  /**
20
62
  * Get the data directory for skills global config/data.
21
- * New default: ~/.hasna/skills/
63
+ * Default: ~/.hasna/skills/, overridable with $HASNA_SKILLS_DIR.
22
64
  * Auto-migrates from ~/.skills/ and ~/.skillsrc without deleting legacy data.
23
65
  */
24
66
  export declare function getDataDir(): string;
@@ -34,3 +76,15 @@ export declare function loadConfig(): SkillsConfig;
34
76
  * Save a single config key-value pair to the specified scope
35
77
  */
36
78
  export declare function saveConfig(key: string, value: string, scope?: ConfigScope): void;
79
+ /**
80
+ * Remove a single config key from the specified scope.
81
+ *
82
+ * This is the counterpart that makes "no deployment mode" workable. Running on
83
+ * this machine is the absence of a configured apiUrl, so there has to be a way
84
+ * to get back to that state; previously the only way to express the intent was
85
+ * to set mode=local, and that key is gone.
86
+ *
87
+ * Returns whether the key was actually present, so callers can distinguish
88
+ * "removed" from "there was nothing to remove" instead of guessing.
89
+ */
90
+ export declare function unsetConfig(key: string, scope?: ConfigScope): boolean;
@@ -2,17 +2,32 @@
2
2
  * content-scan.ts — scans skill BODIES (not just package.json/README) for content
3
3
  * that must never ship in the public @hasna/skills package.
4
4
  *
5
- * Three finding categories:
5
+ * Five finding categories:
6
6
  * - secret-value: credential-shaped values (API keys, tokens, private keys)
7
- * - pii-contact: personal contact PII (E.164 phone numbers)
7
+ * - pii-contact: personal contact PII (E.164 phone numbers, consumer-provider
8
+ * email addresses)
9
+ * - pii-personal: personal data ABOUT an identified individual — a real human
10
+ * name paired with employment/HR/leave/health status, or a
11
+ * government identifier carrying a real-looking value
8
12
  * - private-context: internal/operational context that leaks the private fleet
9
13
  * (fleet hostnames, home-directory paths with a real user,
10
14
  * internal CLI invocations, internal infra/product names)
15
+ * - committed-output: operational tool output committed into the package — a
16
+ * run artifact (timestamped filename, data file under an
17
+ * exports/ directory) rather than an authored fixture
11
18
  *
12
- * All output is REDACTED: secret values are never emitted, phone numbers are masked
13
- * to their country code, and only the rule id + a safe redacted marker are reported.
19
+ * The first four categories are matched against file CONTENT (see {@link scanText}).
20
+ * `committed-output` is matched against the package-relative PATH instead (see
21
+ * {@link scanPaths}), because what makes an artifact wrong is where it came from,
22
+ * not what is inside it — a scraped catalog and a hand-written fixture can be
23
+ * byte-identical in shape.
24
+ *
25
+ * All output is REDACTED: secret values are never emitted, phone numbers, emails and
26
+ * personal names are masked, and only the rule id + a safe redacted marker are
27
+ * reported. Findings are surfaced in (potentially public) CI logs, so a rule must
28
+ * never echo the personal data it just found.
14
29
  */
15
- export type ScanCategory = "secret-value" | "pii-contact" | "private-context";
30
+ export type ScanCategory = "secret-value" | "pii-contact" | "pii-personal" | "private-context" | "committed-output";
16
31
  export interface ScanRule {
17
32
  category: ScanCategory;
18
33
  /** Stable, human-readable rule id (safe to print — never a secret value). */
@@ -21,6 +36,13 @@ export interface ScanRule {
21
36
  pattern: RegExp;
22
37
  /** Optional predicate to drop known-safe example matches (e.g. 555 phone numbers). */
23
38
  isExample?: (match: string) => boolean;
39
+ /**
40
+ * Match against the whole text rather than line by line. Needed for record
41
+ * shapes whose fields sit on DIFFERENT lines — a YAML export writes the
42
+ * person on one line and the status on the next, and a per-line regex can
43
+ * never see that pairing.
44
+ */
45
+ multiline?: boolean;
24
46
  }
25
47
  export interface ScanFinding {
26
48
  file: string;
@@ -32,11 +54,33 @@ export interface ScanFinding {
32
54
  redacted: string;
33
55
  }
34
56
  export declare const SCAN_RULES: ScanRule[];
57
+ /** A rule matched against a package-relative path rather than file content. */
58
+ export interface ScanPathRule {
59
+ category: ScanCategory;
60
+ id: string;
61
+ description: string;
62
+ pattern: RegExp;
63
+ /** Optional predicate to drop known-safe paths (e.g. source trees). */
64
+ isExample?: (path: string) => boolean;
65
+ }
66
+ /**
67
+ * Scan package-relative PATHS for committed tool output. Unlike the content
68
+ * scanners this reads nothing from disk — the path itself is the evidence. The
69
+ * reported marker is the path verbatim: it is not sensitive, and the maintainer
70
+ * needs it in order to delete the file.
71
+ */
72
+ export declare function scanPaths(paths: string[]): ScanFinding[];
35
73
  /**
36
74
  * Produce a redacted marker for a matched value. Secret values are NEVER emitted;
37
- * phone numbers are reduced to their leading country context; private-context
38
- * matches (hostnames, paths, CLI names — not credentials) are shown verbatim so a
39
- * maintainer can locate and remove them.
75
+ * PII (phone numbers, emails, personal names and identifiers) keeps only a short
76
+ * two-character locating prefix; private-context matches (hostnames, paths, CLI
77
+ * names — not credentials) are shown verbatim so a maintainer can locate and
78
+ * remove them.
79
+ *
80
+ * Personal data must be masked here as well as elsewhere: findings are printed
81
+ * into (potentially public) CI logs, so reporting a leaked name in full would
82
+ * republish the very data the rule exists to catch. The rule id plus file:line is
83
+ * enough for a maintainer to find it in the working tree.
40
84
  */
41
85
  export declare function redactMatch(category: ScanCategory, ruleId: string, match: string): string;
42
86
  /**
@@ -44,7 +88,16 @@ export declare function redactMatch(category: ScanCategory, ruleId: string, matc
44
88
  * reporting; it is never read from disk here.
45
89
  */
46
90
  export declare function scanText(text: string, file?: string): ScanFinding[];
47
- /** Read a file and scan its contents. Binary files are skipped and yield no findings. */
91
+ /**
92
+ * Read a file and scan its contents.
93
+ *
94
+ * This used to skip any file whose first 8000 bytes contained a NUL, which made
95
+ * a NUL byte a silent opt-out from secret and PII scanning: the identical
96
+ * credential-shaped literal was caught without a NUL and passed with one. Only
97
+ * genuinely compiled/compressed content is skipped now, decided by magic number
98
+ * rather than by the presence of a byte, and NULs are stripped during decoding
99
+ * so they cannot be used to break a pattern apart either.
100
+ */
48
101
  export declare function scanFile(path: string, reportedName?: string): ScanFinding[];
49
102
  /**
50
103
  * Scan a list of files. `nameFor` maps an absolute path to the name reported in
@@ -1,24 +1,24 @@
1
1
  import type { SkillMeta } from "./registry-types.js";
2
- import { type PublicSkillPricing } from "./pricing.js";
3
2
  export interface CompactSkillDiscovery {
4
3
  name: string;
5
4
  category: string;
6
5
  description: string;
7
- pricing: PublicSkillPricing;
8
6
  }
9
7
  export type PublicSkillDiscovery<T extends SkillMeta = SkillMeta> = Omit<T, "description" | "tags"> & {
10
8
  description: string;
11
9
  tags: string[];
12
- pricing: PublicSkillPricing;
13
10
  };
14
11
  export declare function getCompactSkillDiscovery(skill: SkillMeta): CompactSkillDiscovery;
15
12
  export declare function getPublicSkillDiscovery<T extends SkillMeta>(skill: T): PublicSkillDiscovery<T>;
16
- export declare function publicDiscoveryPriceLabel(skill: {
17
- name: string;
18
- pricing?: PublicSkillPricing;
19
- }): string;
20
13
  export declare function publicDiscoveryTags(tags: string[]): string[];
21
14
  export declare function sanitizePublicDiscoveryText(text: string): string;
22
- export declare function publicDiscoveryEnvVars(skillName: string, envVars: string[]): string[];
23
- export declare function publicDiscoveryDependencies(skillName: string, dependencies: Record<string, string>): Record<string, string>;
24
- export declare function publicDiscoveryDocumentation(skill: SkillMeta, documentation: string | null): string | null;
15
+ /**
16
+ * Every skill now runs from bundled source or is instruction prose, so the
17
+ * environment it declares IS the environment a caller must provide. A BYO-key
18
+ * skill's variable is the single most important thing to surface, not to redact.
19
+ */
20
+ export declare function publicDiscoveryEnvVars(_skillName: string, envVars: string[]): string[];
21
+ /** Dependencies are installed locally now, so the real list is the useful one. */
22
+ export declare function publicDiscoveryDependencies(_skillName: string, dependencies: Record<string, string>): Record<string, string>;
23
+ /** The skill's own docs are the truth; there is no hosted runtime to describe. */
24
+ export declare function publicDiscoveryDocumentation(_skill: SkillMeta, documentation: string | null): string | null;
@@ -0,0 +1,56 @@
1
+ /**
2
+ * doc-derived-counts.ts — the one place that re-derives the counts our docs assert.
3
+ *
4
+ * WHY THIS IS A MODULE AND NOT INLINE IN ONE TEST
5
+ *
6
+ * CLAUDE.md rotted once (it claimed 202 skills against a real 229) and grew the
7
+ * guard in `claude-md.test.ts`. README.md then rotted the SAME number in the same
8
+ * direction and nobody noticed for weeks, because the guard was scoped to a single
9
+ * hard-coded path: `202+` sat in README while the guarded table two files away read
10
+ * 85. One document was fixed and its neighbour was left asserting the old figure.
11
+ *
12
+ * A guard that covers one of the two places a number is written is not a guard on
13
+ * the number; it is a guard on a file. So the derivation and the table parser live
14
+ * here, and every document that asserts these counts is checked by the same code.
15
+ * Adding a third document is a two-line test, which is the point — the cheap path
16
+ * has to be the correct one or the next document will hand-copy the numbers again.
17
+ */
18
+ /**
19
+ * The heading every guarded table sits under. Fixed rather than per-document so a
20
+ * document cannot opt out of the guard by renaming its own section.
21
+ */
22
+ export declare const TABLE_HEADING = "### Derived counts";
23
+ /**
24
+ * Parse the `### Derived counts` table in `docPath` into {label -> value}.
25
+ *
26
+ * Scoped to the section rather than the whole file so an unrelated markdown table
27
+ * elsewhere in the document cannot inject rows. Throws rather than returning empty
28
+ * when the section is missing: an empty map would make every assertion pass or fail
29
+ * for the wrong reason.
30
+ *
31
+ * The three tolerances below are not incidental — each one is a way this guard
32
+ * could have failed for a reason that has nothing to do with doc drift, and a doc
33
+ * test that cries wolf is a doc test that gets deleted:
34
+ *
35
+ * - Up to three leading spaces before `|`. GFM permits them, so an editor that
36
+ * indents the table would otherwise yield zero rows and a diff that looks like
37
+ * catastrophic drift.
38
+ * - A delimiter row of ANY dash count, with or without alignment colons. `|-|-|-|`
39
+ * is legal GFM; an earlier `-{2,}` test let it through as a data row named "-".
40
+ * - The header is dropped BY POSITION (first row), not by matching the literal
41
+ * "Count". Renaming that cell to "Metric" must not break the guard.
42
+ */
43
+ export declare function readDocumentedCounts(docPath: string): Record<string, string>;
44
+ export declare function deriveCounts(): Promise<Record<string, string>>;
45
+ /**
46
+ * Narrow the derived set to the rows a given document actually publishes.
47
+ *
48
+ * README and CLAUDE.md have different audiences and deliberately carry different
49
+ * subsets — forcing every document to restate all seven rows would mean every skill
50
+ * PR edits every document, which is the tax that gets a guard deleted.
51
+ *
52
+ * Throws on a key the derivation does not produce. Without that, a typo in a
53
+ * document's expected-key list would silently shrink the comparison to the rows that
54
+ * happened to match, and the guard would pass while checking less than it claims.
55
+ */
56
+ export declare function selectCounts(derived: Record<string, string>, keys: readonly string[]): Record<string, string>;
@@ -11,5 +11,12 @@ export interface FeedbackResult {
11
11
  category: FeedbackCategory;
12
12
  path: string;
13
13
  }
14
+ /**
15
+ * Resolved via getDataDir() rather than homedir() so that it agrees with the
16
+ * path `skills storage` advertises (native-storage.ts builds `feedbackDbPath`
17
+ * from getDataDir()). While this read the home directly, setting
18
+ * $HASNA_SKILLS_DIR made the reported path and the written path diverge - the
19
+ * CLI would name a database it was not using.
20
+ */
14
21
  export declare function getFeedbackDbPath(): string;
15
22
  export declare function saveFeedback(input: FeedbackInput): FeedbackResult;
@@ -0,0 +1,43 @@
1
+ /**
2
+ * file-bytes.ts — turning bytes into text that a content guard can actually scan.
3
+ *
4
+ * Every guard in this repo that reads files used to decide "is this text?" with
5
+ * some form of `buffer.includes(0)` and skip the file when the answer was no.
6
+ * That is not a heuristic, it is an opt-out: appending or prepending one NUL
7
+ * byte removed a file from the scan entirely, silently, and the guard still
8
+ * exited 0. It was live in three places at once — the R4 infrastructure scan,
9
+ * `content-scan.ts`'s secret/PII scanner, and `release-guard.ts`'s own marker
10
+ * scan, which is the actual publish gate.
11
+ *
12
+ * The rule here is: decode everything, skip almost nothing, and let the caller
13
+ * treat a skip as a finding.
14
+ */
15
+ /**
16
+ * Whether the bytes are a compiled/compressed binary.
17
+ *
18
+ * Decided by CONTENT, never by filename. A filename-based version of this check
19
+ * was itself a bypass: a plain-text file named `leak.gz` was skipped without
20
+ * ever being opened. An extension is attacker-chosen; the leading bytes are not.
21
+ *
22
+ * Note what this deliberately does NOT do: it does not treat "contains a NUL"
23
+ * as binary. Plenty of legitimate text files contain NUL — fixtures, test
24
+ * corpora, anything storing a NUL-separated key — and treating that byte as a
25
+ * skip signal is exactly the hole being closed.
26
+ */
27
+ export declare function looksBinary(buffer: Buffer): boolean;
28
+ /**
29
+ * Decode file bytes to scannable text.
30
+ *
31
+ * - UTF-16 (BOM-marked, or detected from the alternating-NUL pattern of
32
+ * BOM-less ASCII) is decoded properly, so an identifier stored as UTF-16 is
33
+ * ordinary text by the time any rule sees it.
34
+ * - NUL bytes are stripped AFTER decoding, which defeats NUL-interleaved
35
+ * payloads (`1\0"2\0"3456789012`) and, as a bonus, renders BOM-less UTF-16
36
+ * ASCII readable even when the heuristic misses it.
37
+ * - Line structure is preserved: NUL is not a newline, so reported line
38
+ * numbers stay correct.
39
+ *
40
+ * Stripping NULs cannot cause a false negative — no rule in this repo matches a
41
+ * NUL — and it removes the single byte that most reliably blinded these guards.
42
+ */
43
+ export declare function decodeForScanning(buffer: Buffer): string;
@@ -0,0 +1,69 @@
1
+ /**
2
+ * hosted-skill-set.ts — the single authoritative derivation of the
3
+ * "hosted metadata skill" set.
4
+ *
5
+ * A hosted metadata skill ships its `package.json` and docs but NOT its `src/`.
6
+ * That set is expressed in three places that can silently drift apart:
7
+ *
8
+ * 1. Each skill's own `package.json` -> `skills.runtime` / `skills.source`.
9
+ * 2. The negated `!skills/{...}/src` glob(s) in the root `package.json` `files`.
10
+ *
11
+ * (1) is AUTHORITATIVE. It lives next to the thing it describes, so it cannot be
12
+ * forgotten when a directory is added, removed, or converted. (2) and (3) are
13
+ * projections of it and are guarded against drift in `hosted-skill-set.test.ts`.
14
+ *
15
+ * Two accessors, deliberately different:
16
+ *
17
+ * THIS REPO now has ZERO hosted skills: every catalog entry ships bundled source
18
+ * or is instruction prose. The guard-facing `requireHostedMetadataSlugs`
19
+ * accessor, and the five guards derived from it, were retired in the change that
20
+ * emptied the set — which is precisely what its own emptiness error demanded.
21
+ * `catalog-runnable.test.ts` now asserts the set stays empty, so re-introducing
22
+ * a hosted skill fails loudly rather than silently.
23
+ *
24
+ * The parsing helpers below remain: `release-guard.ts` still applies them to
25
+ * ARBITRARY packages, where a non-empty hosted set is a legitimate answer, and
26
+ * `release-guard.integration.test.ts` exercises them against synthetic fixtures.
27
+ */
28
+ /** Shape of the only part of a skill `package.json` this module reads. */
29
+ export interface HostedSkillPackageMarkers {
30
+ skills?: {
31
+ runtime?: unknown;
32
+ source?: unknown;
33
+ };
34
+ }
35
+ /**
36
+ * The authoritative predicate: does this parsed skill `package.json` declare
37
+ * itself as hosted metadata (implementation lives off-repo)?
38
+ */
39
+ export declare function isHostedMetadataPackage(pkg: unknown): boolean;
40
+ /** Read a skill directory's `package.json` and apply the authoritative predicate. */
41
+ export declare function isHostedMetadataSkillDir(skillDir: string): boolean;
42
+ /**
43
+ * Enumerate the hosted metadata slugs under a `skills/` root, sorted.
44
+ * Returns `[]` for this repo, and may legitimately be non-empty for another.
45
+ */
46
+ export declare function listHostedMetadataSlugs(skillsRoot: string): string[];
47
+ export declare const HOSTED_METADATA_SET_EMPTY_ERROR: string;
48
+ /**
49
+ * Extract the set of slugs whose `src/` the root `files` array genuinely
50
+ * excludes from the published package, sorted and de-duplicated.
51
+ *
52
+ * Only negations that survive to the end of the array count: a later entry that
53
+ * re-includes `skills/` discards every exclusion before it, exactly as npm
54
+ * resolves them.
55
+ */
56
+ export declare function parseHostedSourceExclusionSlugs(files: readonly string[]): string[];
57
+ /**
58
+ * Render the canonical `files` exclusion entry for a slug set, so a drift
59
+ * failure can print the exact line to paste. Emits the bare form for a single
60
+ * slug because the one-element brace form is inert under `npm pack`.
61
+ */
62
+ export declare function buildHostedSourceExclusionGlob(slugs: readonly string[]): string;
63
+ /** Paths in a packed file list that would ship a hosted skill's implementation source. */
64
+ export declare function findHostedSourcePacklistLeaks(packedPaths: readonly string[], hostedSlugs: Iterable<string>): string[];
65
+ /** Symmetric difference between two slug sets, for readable drift failures. */
66
+ export declare function diffSlugSets(expected: readonly string[], actual: readonly string[]): {
67
+ missing: string[];
68
+ unexpected: string[];
69
+ };