@hasna/skills 0.1.59 → 0.1.61

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 (1059) 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 +207 -0
  20. package/bin/index.js +2457 -3344
  21. package/bin/mcp.js +1127 -2641
  22. package/bin/migrate.js +955 -33
  23. package/bin/server.js +2367 -1989
  24. package/bin/worker.js +2089 -151
  25. package/dist/cli/cli.test-utils.d.ts +13 -2
  26. package/dist/cli/commands/publish.d.ts +30 -0
  27. package/dist/cli/commands/registry.d.ts +8 -0
  28. package/dist/index.d.ts +8 -6
  29. package/dist/index.js +1734 -2720
  30. package/dist/lib/agent-sync.d.ts +123 -0
  31. package/dist/lib/api-url.d.ts +34 -0
  32. package/dist/lib/auth-store.d.ts +21 -5
  33. package/dist/lib/blog-article.d.ts +37 -0
  34. package/dist/lib/config.d.ts +56 -2
  35. package/dist/lib/content-scan.d.ts +62 -9
  36. package/dist/lib/discovery.d.ts +10 -10
  37. package/dist/lib/doc-derived-counts.d.ts +56 -0
  38. package/dist/lib/feedback.d.ts +7 -0
  39. package/dist/lib/file-bytes.d.ts +43 -0
  40. package/dist/lib/hosted-skill-set.d.ts +69 -0
  41. package/dist/lib/infra-identifiers.d.ts +144 -0
  42. package/dist/lib/installer.d.ts +20 -6
  43. package/dist/lib/native-storage.d.ts +14 -11
  44. package/dist/lib/packlist.d.ts +13 -0
  45. package/dist/lib/portable-skills-files.d.ts +25 -0
  46. package/dist/lib/portable-skills-types.d.ts +105 -0
  47. package/dist/lib/portable-skills.d.ts +52 -103
  48. package/dist/lib/pull.d.ts +41 -0
  49. package/dist/lib/registry-merge.d.ts +57 -0
  50. package/dist/lib/registry-types.d.ts +1 -14
  51. package/dist/lib/registry.d.ts +6 -3
  52. package/dist/lib/remote-client.d.ts +15 -1
  53. package/dist/lib/remote-registry.d.ts +1 -1
  54. package/dist/lib/remote-run-contract.d.ts +0 -7
  55. package/dist/lib/retired-settings.d.ts +100 -0
  56. package/dist/lib/run-state.d.ts +14 -0
  57. package/dist/lib/skill-aliases.d.ts +0 -12
  58. package/dist/lib/skill-bundle.d.ts +37 -0
  59. package/dist/lib/vendor-host-code-scan.d.ts +66 -0
  60. package/dist/lib/vendor-host-folding.d.ts +40 -0
  61. package/dist/lib/vendor-host-guard.d.ts +47 -0
  62. package/dist/lib/vendor-host-package.d.ts +42 -0
  63. package/dist/lib/vendor-host-policy.d.ts +96 -0
  64. package/dist/lib/vendor-host-url.d.ts +81 -0
  65. package/dist/mcp/mcp-test-client.d.ts +18 -0
  66. package/dist/storage.d.ts +1 -1
  67. package/dist/storage.js +104 -51
  68. package/docs/skill-standard.md +1 -1
  69. package/migrations/postgres/0002_org_scoped_skill_registry.sql +72 -0
  70. package/migrations/sqlite/0001_open_skills_self_hosted.sql +150 -0
  71. package/migrations/sqlite/0002_org_scoped_skill_registry.sql +47 -0
  72. package/package.json +4 -4
  73. package/skills/_common/http-client.ts +17 -2
  74. package/skills/_common/install.sh +2 -2
  75. package/skills/_common/installer.ts +4 -5
  76. package/skills/_common/skill-install.ts +3 -3
  77. package/skills/ad-creative-pack/SKILL.md +28 -18
  78. package/skills/ad-creative-pack/package.json +1 -2
  79. package/skills/analyze-data/SKILL.md +1 -1
  80. package/skills/analyze-data/src/formatters.ts +2 -2
  81. package/skills/api-docs-portal/SKILL.md +62 -24
  82. package/skills/api-docs-portal/package.json +28 -4
  83. package/skills/api-docs-portal/src/index.ts +919 -0
  84. package/skills/audio-extract/SKILL.md +1 -1
  85. package/skills/blog-article/SKILL.md +32 -22
  86. package/skills/blog-article/package.json +1 -2
  87. package/skills/brand-assets/SKILL.md +94 -33
  88. package/skills/brand-assets/package.json +28 -4
  89. package/skills/brand-assets/src/cli.ts +155 -0
  90. package/skills/brand-assets/src/constants.ts +8 -0
  91. package/skills/brand-assets/src/extract.ts +236 -0
  92. package/skills/brand-assets/src/index.ts +668 -0
  93. package/skills/brand-assets/src/types.ts +59 -0
  94. package/skills/brand-kit/SKILL.md +27 -18
  95. package/skills/brand-kit/package.json +1 -2
  96. package/skills/compress-video/SKILL.md +1 -1
  97. package/skills/contract-review-report/SKILL.md +27 -18
  98. package/skills/contract-review-report/package.json +1 -2
  99. package/skills/customer-feedback-report/SKILL.md +27 -19
  100. package/skills/customer-feedback-report/package.json +1 -2
  101. package/skills/email-sequence/SKILL.md +26 -17
  102. package/skills/email-sequence/package.json +1 -2
  103. package/skills/generate-sitemap/src/index.ts +1 -1
  104. package/skills/invoice-reconciliation/SKILL.md +75 -19
  105. package/skills/invoice-reconciliation/package.json +29 -4
  106. package/skills/invoice-reconciliation/src/index.ts +743 -0
  107. package/skills/{convert → invoice-reconciliation}/tsconfig.json +3 -1
  108. package/skills/landing-page-pack/SKILL.md +27 -19
  109. package/skills/landing-page-pack/package.json +1 -2
  110. package/skills/logo-design/SKILL.md +69 -26
  111. package/skills/logo-design/package.json +28 -4
  112. package/skills/logo-design/src/cli.ts +132 -0
  113. package/skills/logo-design/src/constants.ts +5 -0
  114. package/skills/logo-design/src/docs.ts +102 -0
  115. package/skills/logo-design/src/geometry.ts +324 -0
  116. package/skills/logo-design/src/index.ts +212 -0
  117. package/skills/logo-design/src/palette.ts +258 -0
  118. package/skills/logo-design/src/types.ts +50 -0
  119. package/skills/logo-design/tsconfig.json +11 -2
  120. package/skills/market-research-report/SKILL.md +28 -18
  121. package/skills/market-research-report/package.json +2 -3
  122. package/skills/meeting-pack/SKILL.md +26 -17
  123. package/skills/meeting-pack/package.json +1 -2
  124. package/skills/merge-pdfs/src/index.ts +1 -1
  125. package/skills/migration-plan-pack/SKILL.md +30 -19
  126. package/skills/migration-plan-pack/package.json +1 -2
  127. package/skills/one-page-website/SKILL.md +105 -23
  128. package/skills/one-page-website/package.json +27 -4
  129. package/skills/one-page-website/src/design.ts +336 -0
  130. package/skills/one-page-website/src/docs.ts +159 -0
  131. package/skills/one-page-website/src/index.ts +357 -0
  132. package/skills/one-page-website/src/page.ts +340 -0
  133. package/skills/one-page-website/src/styles.ts +508 -0
  134. package/skills/one-page-website/src/types.ts +78 -0
  135. package/skills/one-page-website/tsconfig.json +11 -2
  136. package/skills/pdf-generate/SKILL.md +1 -1
  137. package/skills/pdf-to-dataset/SKILL.md +64 -21
  138. package/skills/pdf-to-dataset/package.json +30 -4
  139. package/skills/pdf-to-dataset/src/index.ts +790 -0
  140. package/skills/{emoji → pdf-to-dataset}/tsconfig.json +3 -4
  141. package/skills/pdf-to-markdown/SKILL.md +55 -23
  142. package/skills/pdf-to-markdown/package.json +28 -4
  143. package/skills/pdf-to-markdown/src/index.ts +694 -0
  144. package/skills/pdf-to-markdown/tsconfig.json +11 -4
  145. package/skills/performance-audit-report/SKILL.md +24 -17
  146. package/skills/performance-audit-report/package.json +1 -2
  147. package/skills/pitch-deck/SKILL.md +27 -19
  148. package/skills/pitch-deck/package.json +1 -2
  149. package/skills/product-mockup/SKILL.md +85 -23
  150. package/skills/product-mockup/package.json +25 -4
  151. package/skills/product-mockup/src/cli.ts +150 -0
  152. package/skills/product-mockup/src/design.ts +151 -0
  153. package/skills/product-mockup/src/docs.ts +134 -0
  154. package/skills/product-mockup/src/index.ts +182 -0
  155. package/skills/product-mockup/src/render.ts +407 -0
  156. package/skills/product-mockup/src/types.ts +66 -0
  157. package/skills/product-mockup/tsconfig.json +11 -2
  158. package/skills/proposal-pack/SKILL.md +27 -19
  159. package/skills/proposal-pack/package.json +2 -3
  160. package/skills/repo-onboarding-report/SKILL.md +26 -16
  161. package/skills/repo-onboarding-report/package.json +1 -2
  162. package/skills/security-audit/src/index.ts +1 -1
  163. package/skills/security-audit-report/SKILL.md +28 -16
  164. package/skills/security-audit-report/package.json +2 -3
  165. package/skills/seo-content-pack/SKILL.md +27 -17
  166. package/skills/seo-content-pack/package.json +1 -2
  167. package/skills/slide-deck-generator/SKILL.md +70 -21
  168. package/skills/slide-deck-generator/package.json +31 -4
  169. package/skills/slide-deck-generator/src/cli.ts +133 -0
  170. package/skills/slide-deck-generator/src/index.ts +148 -0
  171. package/skills/slide-deck-generator/src/model.ts +307 -0
  172. package/skills/slide-deck-generator/src/pptx.ts +143 -0
  173. package/skills/slide-deck-generator/src/render.ts +248 -0
  174. package/skills/slide-deck-generator/src/types.ts +114 -0
  175. package/skills/slide-deck-generator/src/utils.ts +53 -0
  176. package/skills/slide-deck-generator/tsconfig.json +17 -0
  177. package/skills/social-content-calendar/SKILL.md +27 -18
  178. package/skills/social-content-calendar/package.json +1 -2
  179. package/skills/split-pdf/src/index.ts +1 -1
  180. package/skills/test-suite-generator/SKILL.md +26 -16
  181. package/skills/test-suite-generator/package.json +2 -3
  182. package/skills/todos-plan/SKILL.md +339 -170
  183. package/skills/video-highlight-pack/SKILL.md +27 -17
  184. package/skills/video-highlight-pack/package.json +1 -2
  185. package/dist/cli/onboarding.d.ts +0 -13
  186. package/dist/lib/hosted-availability.d.ts +0 -13
  187. package/dist/lib/pricing.d.ts +0 -89
  188. package/skills/academic-journal-matcher/CLAUDE.md +0 -19
  189. package/skills/academic-journal-matcher/package.json +0 -27
  190. package/skills/academic-journal-matcher/src/index.ts +0 -86
  191. package/skills/academic-journal-matcher/tsconfig.json +0 -10
  192. package/skills/action-item-router/CLAUDE.md +0 -19
  193. package/skills/action-item-router/package.json +0 -27
  194. package/skills/action-item-router/src/index.ts +0 -304
  195. package/skills/action-item-router/tsconfig.json +0 -10
  196. package/skills/ad-creative-generator/CLAUDE.md +0 -19
  197. package/skills/ad-creative-generator/package.json +0 -27
  198. package/skills/ad-creative-generator/src/index.ts +0 -419
  199. package/skills/ad-creative-generator/tsconfig.json +0 -10
  200. package/skills/advanced-math/CLAUDE.md +0 -19
  201. package/skills/advanced-math/package.json +0 -29
  202. package/skills/advanced-math/src/calculators.ts +0 -118
  203. package/skills/advanced-math/src/cli.ts +0 -130
  204. package/skills/advanced-math/src/conversion.ts +0 -90
  205. package/skills/advanced-math/src/finance.ts +0 -75
  206. package/skills/advanced-math/src/formatting.ts +0 -95
  207. package/skills/advanced-math/src/index.ts +0 -133
  208. package/skills/advanced-math/src/runtime.ts +0 -49
  209. package/skills/advanced-math/src/symbolic.ts +0 -110
  210. package/skills/advanced-math/src/types.ts +0 -36
  211. package/skills/advanced-math/tsconfig.json +0 -10
  212. package/skills/anomaly-investigator/CLAUDE.md +0 -19
  213. package/skills/anomaly-investigator/package.json +0 -27
  214. package/skills/anomaly-investigator/src/index.ts +0 -311
  215. package/skills/anomaly-investigator/tsconfig.json +0 -10
  216. package/skills/apidocs/.env.example +0 -8
  217. package/skills/apidocs/CLAUDE.md +0 -278
  218. package/skills/apidocs/LICENSE +0 -192
  219. package/skills/apidocs/README.md +0 -196
  220. package/skills/apidocs/api-docs-list.json +0 -186
  221. package/skills/apidocs/package.json +0 -53
  222. package/skills/apidocs/scripts/crawl-all.ts +0 -157
  223. package/skills/apidocs/scripts/publish.ts +0 -210
  224. package/skills/apidocs/src/commands/add.ts +0 -279
  225. package/skills/apidocs/src/commands/endpoints.ts +0 -157
  226. package/skills/apidocs/src/commands/list.ts +0 -51
  227. package/skills/apidocs/src/commands/query.ts +0 -63
  228. package/skills/apidocs/src/commands/remove.ts +0 -39
  229. package/skills/apidocs/src/commands/sync.ts +0 -227
  230. package/skills/apidocs/src/index.ts +0 -3
  231. package/skills/apidocs/src/lib/crawler.ts +0 -427
  232. package/skills/apidocs/src/lib/discovery.ts +0 -244
  233. package/skills/apidocs/src/lib/embeddings.ts +0 -136
  234. package/skills/apidocs/src/lib/endpoint-extractor.ts +0 -359
  235. package/skills/apidocs/src/lib/html-to-md.ts +0 -163
  236. package/skills/apidocs/src/lib/parser.ts +0 -288
  237. package/skills/apidocs/src/lib/search.ts +0 -189
  238. package/skills/apidocs/src/lib/storage.ts +0 -242
  239. package/skills/apidocs/src/lib/vectors-local.ts +0 -220
  240. package/skills/apidocs/src/lib/vectors-s3.ts +0 -255
  241. package/skills/apidocs/src/lib/vectors.ts +0 -97
  242. package/skills/apidocs/src/types/index.ts +0 -297
  243. package/skills/apidocs/src/utils/output.ts +0 -132
  244. package/skills/apidocs/src/utils/paths.ts +0 -126
  245. package/skills/apidocs/tsconfig.json +0 -24
  246. package/skills/audio/SKILL.md +0 -35
  247. package/skills/audio/package.json +0 -11
  248. package/skills/audio-cleanup-lab/CLAUDE.md +0 -3
  249. package/skills/audio-cleanup-lab/SKILL.md +0 -81
  250. package/skills/audio-cleanup-lab/package.json +0 -23
  251. package/skills/audio-cleanup-lab/src/index.ts +0 -274
  252. package/skills/audio-cleanup-lab/tsconfig.json +0 -14
  253. package/skills/audio-transcript-pack/SKILL.md +0 -43
  254. package/skills/audio-transcript-pack/package.json +0 -11
  255. package/skills/banner-ad-suite/CLAUDE.md +0 -19
  256. package/skills/banner-ad-suite/package.json +0 -27
  257. package/skills/banner-ad-suite/src/index.ts +0 -331
  258. package/skills/banner-ad-suite/tsconfig.json +0 -10
  259. package/skills/benchmark-finder/CLAUDE.md +0 -19
  260. package/skills/benchmark-finder/package.json +0 -27
  261. package/skills/benchmark-finder/src/index.ts +0 -294
  262. package/skills/benchmark-finder/tsconfig.json +0 -10
  263. package/skills/blog-topic-cluster/CLAUDE.md +0 -19
  264. package/skills/blog-topic-cluster/package.json +0 -27
  265. package/skills/blog-topic-cluster/src/index.ts +0 -274
  266. package/skills/blog-topic-cluster/tsconfig.json +0 -10
  267. package/skills/brand-photo-shoot/SKILL.md +0 -28
  268. package/skills/brand-photo-shoot/package.json +0 -11
  269. package/skills/brand-style-guide/CLAUDE.md +0 -20
  270. package/skills/brand-style-guide/SKILL.md +0 -13
  271. package/skills/brand-style-guide/package.json +0 -26
  272. package/skills/brand-style-guide/src/index.ts +0 -288
  273. package/skills/brand-style-guide/tsconfig.json +0 -22
  274. package/skills/brand-voice-audit/CLAUDE.md +0 -19
  275. package/skills/brand-voice-audit/package.json +0 -27
  276. package/skills/brand-voice-audit/src/index.ts +0 -302
  277. package/skills/brand-voice-audit/tsconfig.json +0 -10
  278. package/skills/browse/LICENSE +0 -192
  279. package/skills/browse/README.md +0 -25
  280. package/skills/browse/SKILL.md +0 -35
  281. package/skills/browse/package.json +0 -11
  282. package/skills/browse/tsconfig.json +0 -22
  283. package/skills/budget-variance-analyzer/CLAUDE.md +0 -16
  284. package/skills/budget-variance-analyzer/SKILL.md +0 -83
  285. package/skills/budget-variance-analyzer/package.json +0 -24
  286. package/skills/budget-variance-analyzer/src/index.ts +0 -298
  287. package/skills/budget-variance-analyzer/tsconfig.json +0 -21
  288. package/skills/calendar-events/CLAUDE.md +0 -19
  289. package/skills/calendar-events/package.json +0 -27
  290. package/skills/calendar-events/src/ai-parser.ts +0 -103
  291. package/skills/calendar-events/src/api.ts +0 -157
  292. package/skills/calendar-events/src/auth.ts +0 -22
  293. package/skills/calendar-events/src/config.ts +0 -6
  294. package/skills/calendar-events/src/format.ts +0 -96
  295. package/skills/calendar-events/src/help.ts +0 -54
  296. package/skills/calendar-events/src/index.ts +0 -415
  297. package/skills/calendar-events/src/logger.ts +0 -34
  298. package/skills/calendar-events/src/types.ts +0 -67
  299. package/skills/calendar-events/tsconfig.json +0 -10
  300. package/skills/campaign-metric-brief/CLAUDE.md +0 -19
  301. package/skills/campaign-metric-brief/package.json +0 -27
  302. package/skills/campaign-metric-brief/src/index.ts +0 -307
  303. package/skills/campaign-metric-brief/tsconfig.json +0 -10
  304. package/skills/campaign-moodboard/CLAUDE.md +0 -19
  305. package/skills/campaign-moodboard/package.json +0 -27
  306. package/skills/campaign-moodboard/src/index.ts +0 -288
  307. package/skills/campaign-moodboard/tsconfig.json +0 -10
  308. package/skills/caption-style-stylist/CLAUDE.md +0 -19
  309. package/skills/caption-style-stylist/package.json +0 -27
  310. package/skills/caption-style-stylist/src/index.ts +0 -275
  311. package/skills/caption-style-stylist/tsconfig.json +0 -10
  312. package/skills/chemistry-calculator/CLAUDE.md +0 -19
  313. package/skills/chemistry-calculator/package.json +0 -27
  314. package/skills/chemistry-calculator/src/index.ts +0 -110
  315. package/skills/chemistry-calculator/tsconfig.json +0 -10
  316. package/skills/churn-risk-notifier/CLAUDE.md +0 -19
  317. package/skills/churn-risk-notifier/package.json +0 -27
  318. package/skills/churn-risk-notifier/src/index.ts +0 -308
  319. package/skills/churn-risk-notifier/tsconfig.json +0 -10
  320. package/skills/citation-formatter/CLAUDE.md +0 -19
  321. package/skills/citation-formatter/package.json +0 -27
  322. package/skills/citation-formatter/src/index.ts +0 -83
  323. package/skills/citation-formatter/tsconfig.json +0 -10
  324. package/skills/classroom-newsletter-kit/CLAUDE.md +0 -19
  325. package/skills/classroom-newsletter-kit/package.json +0 -27
  326. package/skills/classroom-newsletter-kit/src/index.ts +0 -293
  327. package/skills/classroom-newsletter-kit/tsconfig.json +0 -10
  328. package/skills/color-palette-harmonizer/CLAUDE.md +0 -19
  329. package/skills/color-palette-harmonizer/package.json +0 -27
  330. package/skills/color-palette-harmonizer/src/index.ts +0 -278
  331. package/skills/color-palette-harmonizer/tsconfig.json +0 -10
  332. package/skills/colorextract/SKILL.md +0 -35
  333. package/skills/colorextract/bun.lock +0 -102
  334. package/skills/colorextract/package.json +0 -25
  335. package/skills/colorextract/src/index.ts +0 -405
  336. package/skills/competitor-ad-analyzer/CLAUDE.md +0 -19
  337. package/skills/competitor-ad-analyzer/package.json +0 -27
  338. package/skills/competitor-ad-analyzer/src/index.ts +0 -350
  339. package/skills/competitor-ad-analyzer/tsconfig.json +0 -10
  340. package/skills/compliance-copy-check/CLAUDE.md +0 -19
  341. package/skills/compliance-copy-check/package.json +0 -27
  342. package/skills/compliance-copy-check/src/index.ts +0 -289
  343. package/skills/compliance-copy-check/tsconfig.json +0 -10
  344. package/skills/compliance-report-pack/CLAUDE.md +0 -19
  345. package/skills/compliance-report-pack/package.json +0 -27
  346. package/skills/compliance-report-pack/src/index.ts +0 -301
  347. package/skills/compliance-report-pack/tsconfig.json +0 -10
  348. package/skills/consolelog/.env.example +0 -19
  349. package/skills/consolelog/CLAUDE.md +0 -157
  350. package/skills/consolelog/LICENSE +0 -192
  351. package/skills/consolelog/README.md +0 -239
  352. package/skills/consolelog/data/.gitkeep +0 -0
  353. package/skills/consolelog/exports/products-2025-12-14T13-50-53-041Z.csv +0 -16
  354. package/skills/consolelog/exports/products-2025-12-14T13-50-53-041Z.json +0 -227
  355. package/skills/consolelog/package.json +0 -40
  356. package/skills/consolelog/scripts/migrate.ts +0 -26
  357. package/skills/consolelog/scripts/seed.ts +0 -48
  358. package/skills/consolelog/src/db/index.ts +0 -44
  359. package/skills/consolelog/src/db/queries.ts +0 -348
  360. package/skills/consolelog/src/db/schema.ts +0 -93
  361. package/skills/consolelog/src/index.ts +0 -3
  362. package/skills/consolelog/src/lib/config.ts +0 -110
  363. package/skills/consolelog/src/lib/installer.ts +0 -294
  364. package/skills/consolelog/src/lib/monitor.ts +0 -194
  365. package/skills/consolelog/src/lib/types.ts +0 -189
  366. package/skills/consolelog/src/lib/watcher.ts +0 -207
  367. package/skills/consolelog/tests/api.test.ts +0 -154
  368. package/skills/consolelog/tests/config.test.ts +0 -192
  369. package/skills/consolelog/tests/db.test.ts +0 -447
  370. package/skills/consolelog/tests/installer.test.ts +0 -155
  371. package/skills/consolelog/tsconfig.json +0 -24
  372. package/skills/contract-plainlanguage/CLAUDE.md +0 -19
  373. package/skills/contract-plainlanguage/package.json +0 -27
  374. package/skills/contract-plainlanguage/src/index.ts +0 -294
  375. package/skills/contract-plainlanguage/tsconfig.json +0 -10
  376. package/skills/convert/.env.example +0 -7
  377. package/skills/convert/LICENSE +0 -192
  378. package/skills/convert/README.md +0 -250
  379. package/skills/convert/SKILL.md +0 -106
  380. package/skills/convert/package.json +0 -37
  381. package/skills/convert/src/converters/ai.ts +0 -375
  382. package/skills/convert/src/converters/data.ts +0 -339
  383. package/skills/convert/src/converters/document.ts +0 -189
  384. package/skills/convert/src/converters/image.ts +0 -227
  385. package/skills/convert/src/converters/index.ts +0 -9
  386. package/skills/convert/src/converters/pdf.ts +0 -255
  387. package/skills/convert/src/index-local.ts +0 -568
  388. package/skills/convert/src/index.ts +0 -4
  389. package/skills/convert/src/types.ts +0 -192
  390. package/skills/copytone-translator/CLAUDE.md +0 -19
  391. package/skills/copytone-translator/package.json +0 -27
  392. package/skills/copytone-translator/src/index.ts +0 -295
  393. package/skills/copytone-translator/tsconfig.json +0 -10
  394. package/skills/create-ebook/CLAUDE.md +0 -19
  395. package/skills/create-ebook/package.json +0 -27
  396. package/skills/create-ebook/src/index.ts +0 -637
  397. package/skills/create-ebook/tsconfig.json +0 -10
  398. package/skills/crm-note-enhancer/CLAUDE.md +0 -19
  399. package/skills/crm-note-enhancer/package.json +0 -27
  400. package/skills/crm-note-enhancer/src/index.ts +0 -317
  401. package/skills/crm-note-enhancer/tsconfig.json +0 -10
  402. package/skills/customer-journey-mapper/CLAUDE.md +0 -19
  403. package/skills/customer-journey-mapper/package.json +0 -27
  404. package/skills/customer-journey-mapper/src/index.ts +0 -312
  405. package/skills/customer-journey-mapper/tsconfig.json +0 -10
  406. package/skills/dashboard-narrator/CLAUDE.md +0 -19
  407. package/skills/dashboard-narrator/package.json +0 -27
  408. package/skills/dashboard-narrator/src/index.ts +0 -307
  409. package/skills/dashboard-narrator/tsconfig.json +0 -10
  410. package/skills/dataset-health-check/CLAUDE.md +0 -19
  411. package/skills/dataset-health-check/package.json +0 -27
  412. package/skills/dataset-health-check/src/index.ts +0 -323
  413. package/skills/dataset-health-check/tsconfig.json +0 -10
  414. package/skills/decision-journal/CLAUDE.md +0 -19
  415. package/skills/decision-journal/package.json +0 -27
  416. package/skills/decision-journal/src/index.ts +0 -313
  417. package/skills/decision-journal/tsconfig.json +0 -10
  418. package/skills/deepresearch/CLAUDE.md +0 -11
  419. package/skills/deepresearch/README.md +0 -26
  420. package/skills/deepresearch/SKILL.md +0 -41
  421. package/skills/deepresearch/package.json +0 -11
  422. package/skills/deepresearch/tsconfig.json +0 -29
  423. package/skills/delegation-brief-writer/CLAUDE.md +0 -19
  424. package/skills/delegation-brief-writer/package.json +0 -27
  425. package/skills/delegation-brief-writer/src/index.ts +0 -314
  426. package/skills/delegation-brief-writer/tsconfig.json +0 -10
  427. package/skills/deploy/LICENSE +0 -192
  428. package/skills/deploy/README.md +0 -382
  429. package/skills/deploy/SKILL.md +0 -138
  430. package/skills/deploy/package.json +0 -18
  431. package/skills/deploy/src/deployer.ts +0 -256
  432. package/skills/deploy/src/health.ts +0 -103
  433. package/skills/deploy/src/hosts.ts +0 -45
  434. package/skills/deploy/src/http-client.ts +0 -128
  435. package/skills/deploy/src/index-local.ts +0 -366
  436. package/skills/deploy/src/index.ts +0 -4
  437. package/skills/deploy/src/types.ts +0 -56
  438. package/skills/deploy/tsconfig.json +0 -18
  439. package/skills/destination-briefing/CLAUDE.md +0 -19
  440. package/skills/destination-briefing/package.json +0 -27
  441. package/skills/destination-briefing/src/index.ts +0 -291
  442. package/skills/destination-briefing/tsconfig.json +0 -10
  443. package/skills/doc-generate/CLAUDE.md +0 -19
  444. package/skills/doc-generate/SKILL.md +0 -295
  445. package/skills/doc-generate/package.json +0 -23
  446. package/skills/doc-generate/src/ai.ts +0 -50
  447. package/skills/doc-generate/src/cli.ts +0 -203
  448. package/skills/doc-generate/src/dependencies.ts +0 -44
  449. package/skills/doc-generate/src/document-builder.ts +0 -299
  450. package/skills/doc-generate/src/index.ts +0 -90
  451. package/skills/doc-generate/src/markdown-parser.ts +0 -125
  452. package/skills/doc-generate/src/types.ts +0 -68
  453. package/skills/doc-generate/tsconfig.json +0 -16
  454. package/skills/domainsearch/.env.example +0 -7
  455. package/skills/domainsearch/LICENSE +0 -192
  456. package/skills/domainsearch/SKILL.md +0 -41
  457. package/skills/domainsearch/package.json +0 -33
  458. package/skills/domainsearch/src/index.ts +0 -3
  459. package/skills/domainsearch/src/lib/api-client.ts +0 -181
  460. package/skills/domainsearch/src/lib/config.ts +0 -72
  461. package/skills/domainsearch/src/lib/installer.ts +0 -164
  462. package/skills/domainsearch/tsconfig.json +0 -22
  463. package/skills/educational-resource-finder/CLAUDE.md +0 -19
  464. package/skills/educational-resource-finder/package.json +0 -27
  465. package/skills/educational-resource-finder/src/index.ts +0 -289
  466. package/skills/educational-resource-finder/tsconfig.json +0 -10
  467. package/skills/email-campaign/CLAUDE.md +0 -19
  468. package/skills/email-campaign/package.json +0 -27
  469. package/skills/email-campaign/src/index.ts +0 -339
  470. package/skills/email-campaign/tsconfig.json +0 -10
  471. package/skills/emoji/.env.example +0 -7
  472. package/skills/emoji/QUICKSTART.md +0 -52
  473. package/skills/emoji/README.md +0 -175
  474. package/skills/emoji/SKILL.md +0 -63
  475. package/skills/emoji/package.json +0 -31
  476. package/skills/emoji/src/image-processor.ts +0 -143
  477. package/skills/emoji/src/index.ts +0 -282
  478. package/skills/emoji/src/prompt-generator.ts +0 -181
  479. package/skills/emoji/src/providers/gemini.ts +0 -58
  480. package/skills/emoji/src/providers/openai.ts +0 -55
  481. package/skills/emoji/src/types.ts +0 -72
  482. package/skills/exam-readiness-check/CLAUDE.md +0 -19
  483. package/skills/exam-readiness-check/package.json +0 -27
  484. package/skills/exam-readiness-check/src/index.ts +0 -289
  485. package/skills/exam-readiness-check/tsconfig.json +0 -10
  486. package/skills/excel/CLAUDE.md +0 -19
  487. package/skills/excel/SKILL.md +0 -38
  488. package/skills/excel/package.json +0 -30
  489. package/skills/excel/src/index.ts +0 -644
  490. package/skills/excel/tsconfig.json +0 -10
  491. package/skills/extract/.env.example +0 -3
  492. package/skills/extract/LICENSE +0 -192
  493. package/skills/extract/README.md +0 -61
  494. package/skills/extract/SKILL.md +0 -91
  495. package/skills/extract/package.json +0 -35
  496. package/skills/extract/src/extractors/image.ts +0 -42
  497. package/skills/extract/src/extractors/pdf.ts +0 -96
  498. package/skills/extract/src/index-local.ts +0 -258
  499. package/skills/extract/src/index.ts +0 -4
  500. package/skills/extract/src/providers/openai.ts +0 -222
  501. package/skills/extract/src/types.ts +0 -61
  502. package/skills/extract/tsconfig.json +0 -19
  503. package/skills/extract-invoice/CLAUDE.md +0 -19
  504. package/skills/extract-invoice/package.json +0 -27
  505. package/skills/extract-invoice/src/cli.ts +0 -97
  506. package/skills/extract-invoice/src/extractor.ts +0 -170
  507. package/skills/extract-invoice/src/file-utils.ts +0 -46
  508. package/skills/extract-invoice/src/formatters.ts +0 -144
  509. package/skills/extract-invoice/src/index.ts +0 -129
  510. package/skills/extract-invoice/src/runtime.ts +0 -46
  511. package/skills/extract-invoice/src/types.ts +0 -88
  512. package/skills/extract-invoice/tsconfig.json +0 -10
  513. package/skills/family-activity-curator/CLAUDE.md +0 -19
  514. package/skills/family-activity-curator/package.json +0 -27
  515. package/skills/family-activity-curator/src/index.ts +0 -293
  516. package/skills/family-activity-curator/tsconfig.json +0 -10
  517. package/skills/faq-packager/CLAUDE.md +0 -19
  518. package/skills/faq-packager/package.json +0 -27
  519. package/skills/faq-packager/src/index.ts +0 -292
  520. package/skills/faq-packager/tsconfig.json +0 -10
  521. package/skills/feedback-survey-designer/CLAUDE.md +0 -19
  522. package/skills/feedback-survey-designer/package.json +0 -27
  523. package/skills/feedback-survey-designer/src/index.ts +0 -299
  524. package/skills/feedback-survey-designer/tsconfig.json +0 -10
  525. package/skills/field-trip-planner/CLAUDE.md +0 -19
  526. package/skills/field-trip-planner/package.json +0 -27
  527. package/skills/field-trip-planner/src/index.ts +0 -289
  528. package/skills/field-trip-planner/tsconfig.json +0 -10
  529. package/skills/forecast-scenario-lab/CLAUDE.md +0 -19
  530. package/skills/forecast-scenario-lab/package.json +0 -27
  531. package/skills/forecast-scenario-lab/src/index.ts +0 -314
  532. package/skills/forecast-scenario-lab/tsconfig.json +0 -10
  533. package/skills/generate-book-cover/CLAUDE.md +0 -19
  534. package/skills/generate-book-cover/package.json +0 -11
  535. package/skills/generate-book-cover/tsconfig.json +0 -10
  536. package/skills/generate-diagram/CLAUDE.md +0 -19
  537. package/skills/generate-diagram/package.json +0 -27
  538. package/skills/generate-diagram/src/index.ts +0 -514
  539. package/skills/generate-diagram/tsconfig.json +0 -10
  540. package/skills/generate-documentation/CLAUDE.md +0 -19
  541. package/skills/generate-documentation/package.json +0 -27
  542. package/skills/generate-documentation/src/ai.ts +0 -131
  543. package/skills/generate-documentation/src/cli.ts +0 -71
  544. package/skills/generate-documentation/src/code-parser.ts +0 -300
  545. package/skills/generate-documentation/src/file-processing.ts +0 -182
  546. package/skills/generate-documentation/src/index.ts +0 -65
  547. package/skills/generate-documentation/src/runtime.ts +0 -35
  548. package/skills/generate-documentation/src/types.ts +0 -30
  549. package/skills/generate-documentation/tsconfig.json +0 -10
  550. package/skills/generate-mock-data/CLAUDE.md +0 -19
  551. package/skills/generate-mock-data/package.json +0 -29
  552. package/skills/generate-mock-data/src/ai.ts +0 -102
  553. package/skills/generate-mock-data/src/formatters.ts +0 -84
  554. package/skills/generate-mock-data/src/generator.ts +0 -377
  555. package/skills/generate-mock-data/src/index.ts +0 -201
  556. package/skills/generate-mock-data/src/logger.ts +0 -37
  557. package/skills/generate-mock-data/src/presets.ts +0 -110
  558. package/skills/generate-mock-data/src/types.ts +0 -21
  559. package/skills/generate-mock-data/tsconfig.json +0 -10
  560. package/skills/generate-pr-description/CLAUDE.md +0 -19
  561. package/skills/generate-pr-description/package.json +0 -27
  562. package/skills/generate-pr-description/src/ai.ts +0 -144
  563. package/skills/generate-pr-description/src/cli.ts +0 -80
  564. package/skills/generate-pr-description/src/clipboard.ts +0 -30
  565. package/skills/generate-pr-description/src/formatters.ts +0 -231
  566. package/skills/generate-pr-description/src/git.ts +0 -153
  567. package/skills/generate-pr-description/src/index.ts +0 -114
  568. package/skills/generate-pr-description/src/types.ts +0 -49
  569. package/skills/generate-pr-description/tsconfig.json +0 -10
  570. package/skills/generate-presentation/CLAUDE.md +0 -19
  571. package/skills/generate-presentation/package.json +0 -27
  572. package/skills/generate-presentation/src/ai-clients.ts +0 -61
  573. package/skills/generate-presentation/src/cli.ts +0 -126
  574. package/skills/generate-presentation/src/index.ts +0 -44
  575. package/skills/generate-presentation/src/logger.ts +0 -67
  576. package/skills/generate-presentation/src/presentation-generator.ts +0 -425
  577. package/skills/generate-presentation/src/runtime.ts +0 -6
  578. package/skills/generate-presentation/src/security.ts +0 -12
  579. package/skills/generate-presentation/src/types.ts +0 -28
  580. package/skills/generate-presentation/tsconfig.json +0 -10
  581. package/skills/generate-regex/CLAUDE.md +0 -19
  582. package/skills/generate-regex/package.json +0 -29
  583. package/skills/generate-regex/src/index.ts +0 -669
  584. package/skills/generate-regex/tsconfig.json +0 -10
  585. package/skills/generate-social-posts/CLAUDE.md +0 -19
  586. package/skills/generate-social-posts/package.json +0 -27
  587. package/skills/generate-social-posts/src/ai.ts +0 -88
  588. package/skills/generate-social-posts/src/cli.ts +0 -118
  589. package/skills/generate-social-posts/src/exporters.ts +0 -126
  590. package/skills/generate-social-posts/src/generator.ts +0 -130
  591. package/skills/generate-social-posts/src/index.ts +0 -78
  592. package/skills/generate-social-posts/src/platforms.ts +0 -39
  593. package/skills/generate-social-posts/src/runtime.ts +0 -34
  594. package/skills/generate-social-posts/src/source.ts +0 -116
  595. package/skills/generate-social-posts/src/types.ts +0 -58
  596. package/skills/generate-social-posts/tsconfig.json +0 -10
  597. package/skills/generate-sql/CLAUDE.md +0 -19
  598. package/skills/generate-sql/package.json +0 -27
  599. package/skills/generate-sql/src/index.ts +0 -636
  600. package/skills/generate-sql/tsconfig.json +0 -10
  601. package/skills/github-manager/CLAUDE.md +0 -19
  602. package/skills/github-manager/package.json +0 -29
  603. package/skills/github-manager/src/index.ts +0 -101
  604. package/skills/github-manager/tsconfig.json +0 -10
  605. package/skills/gmail/CLAUDE.md +0 -19
  606. package/skills/gmail/package.json +0 -27
  607. package/skills/gmail/src/index.ts +0 -410
  608. package/skills/gmail/tsconfig.json +0 -10
  609. package/skills/goal-quarterly-roadmap/CLAUDE.md +0 -19
  610. package/skills/goal-quarterly-roadmap/package.json +0 -27
  611. package/skills/goal-quarterly-roadmap/src/index.ts +0 -305
  612. package/skills/goal-quarterly-roadmap/tsconfig.json +0 -10
  613. package/skills/grant-application-drafter/CLAUDE.md +0 -19
  614. package/skills/grant-application-drafter/package.json +0 -27
  615. package/skills/grant-application-drafter/src/index.ts +0 -309
  616. package/skills/grant-application-drafter/tsconfig.json +0 -10
  617. package/skills/grocery-basket-optimizer/CLAUDE.md +0 -19
  618. package/skills/grocery-basket-optimizer/package.json +0 -27
  619. package/skills/grocery-basket-optimizer/src/index.ts +0 -304
  620. package/skills/grocery-basket-optimizer/tsconfig.json +0 -10
  621. package/skills/guest-communication-suite/CLAUDE.md +0 -19
  622. package/skills/guest-communication-suite/package.json +0 -27
  623. package/skills/guest-communication-suite/src/index.ts +0 -312
  624. package/skills/guest-communication-suite/tsconfig.json +0 -10
  625. package/skills/habit-reflection-digest/CLAUDE.md +0 -19
  626. package/skills/habit-reflection-digest/package.json +0 -27
  627. package/skills/habit-reflection-digest/src/index.ts +0 -308
  628. package/skills/habit-reflection-digest/tsconfig.json +0 -10
  629. package/skills/highlight-reel-generator/CLAUDE.md +0 -19
  630. package/skills/highlight-reel-generator/package.json +0 -27
  631. package/skills/highlight-reel-generator/src/index.ts +0 -286
  632. package/skills/highlight-reel-generator/tsconfig.json +0 -10
  633. package/skills/homework-feedback-coach/CLAUDE.md +0 -19
  634. package/skills/homework-feedback-coach/package.json +0 -27
  635. package/skills/homework-feedback-coach/src/index.ts +0 -316
  636. package/skills/homework-feedback-coach/tsconfig.json +0 -10
  637. package/skills/household-maintenance-mgr/CLAUDE.md +0 -19
  638. package/skills/household-maintenance-mgr/package.json +0 -27
  639. package/skills/household-maintenance-mgr/src/index.ts +0 -293
  640. package/skills/household-maintenance-mgr/tsconfig.json +0 -10
  641. package/skills/icon-pack/README.md +0 -28
  642. package/skills/icon-pack/SKILL.md +0 -23
  643. package/skills/icon-pack/package.json +0 -11
  644. package/skills/icon-pack/tsconfig.json +0 -20
  645. package/skills/image/LICENSE +0 -192
  646. package/skills/image/README.md +0 -25
  647. package/skills/image/SKILL.md +0 -49
  648. package/skills/image/examples/aurora-examples.sh +0 -33
  649. package/skills/image/examples/google-examples.sh +0 -37
  650. package/skills/image/examples/openai-examples.sh +0 -35
  651. package/skills/image/package.json +0 -11
  652. package/skills/image/tsconfig.json +0 -19
  653. package/skills/implementation-agent/CLAUDE.md +0 -19
  654. package/skills/implementation-agent/package.json +0 -29
  655. package/skills/implementation-agent/src/ai-generation.ts +0 -225
  656. package/skills/implementation-agent/src/index.ts +0 -608
  657. package/skills/implementation-agent/src/minimist.d.ts +0 -15
  658. package/skills/implementation-agent/src/templates.ts +0 -686
  659. package/skills/implementation-agent/src/types.ts +0 -53
  660. package/skills/implementation-agent/tsconfig.json +0 -10
  661. package/skills/inbox-priority-planner/CLAUDE.md +0 -19
  662. package/skills/inbox-priority-planner/package.json +0 -27
  663. package/skills/inbox-priority-planner/src/index.ts +0 -309
  664. package/skills/inbox-priority-planner/tsconfig.json +0 -10
  665. package/skills/invoice-dispute-helper/CLAUDE.md +0 -19
  666. package/skills/invoice-dispute-helper/package.json +0 -27
  667. package/skills/invoice-dispute-helper/src/index.ts +0 -304
  668. package/skills/invoice-dispute-helper/tsconfig.json +0 -10
  669. package/skills/itinerary-architect/CLAUDE.md +0 -19
  670. package/skills/itinerary-architect/package.json +0 -27
  671. package/skills/itinerary-architect/src/index.ts +0 -313
  672. package/skills/itinerary-architect/tsconfig.json +0 -10
  673. package/skills/kpi-digest-generator/CLAUDE.md +0 -19
  674. package/skills/kpi-digest-generator/package.json +0 -27
  675. package/skills/kpi-digest-generator/src/index.ts +0 -318
  676. package/skills/kpi-digest-generator/tsconfig.json +0 -10
  677. package/skills/lab-notebook-formatter/CLAUDE.md +0 -19
  678. package/skills/lab-notebook-formatter/package.json +0 -27
  679. package/skills/lab-notebook-formatter/src/index.ts +0 -88
  680. package/skills/lab-notebook-formatter/tsconfig.json +0 -10
  681. package/skills/landing-page-copy/CLAUDE.md +0 -19
  682. package/skills/landing-page-copy/package.json +0 -27
  683. package/skills/landing-page-copy/src/index.ts +0 -400
  684. package/skills/landing-page-copy/tsconfig.json +0 -10
  685. package/skills/learning-style-profiler/CLAUDE.md +0 -19
  686. package/skills/learning-style-profiler/package.json +0 -27
  687. package/skills/learning-style-profiler/src/index.ts +0 -291
  688. package/skills/learning-style-profiler/tsconfig.json +0 -10
  689. package/skills/lesson-plan-customizer/CLAUDE.md +0 -19
  690. package/skills/lesson-plan-customizer/package.json +0 -27
  691. package/skills/lesson-plan-customizer/src/index.ts +0 -303
  692. package/skills/lesson-plan-customizer/tsconfig.json +0 -10
  693. package/skills/livestream-runofshow/CLAUDE.md +0 -19
  694. package/skills/livestream-runofshow/package.json +0 -27
  695. package/skills/livestream-runofshow/src/index.ts +0 -299
  696. package/skills/livestream-runofshow/tsconfig.json +0 -10
  697. package/skills/longform-structurer/CLAUDE.md +0 -19
  698. package/skills/longform-structurer/package.json +0 -27
  699. package/skills/longform-structurer/src/index.ts +0 -293
  700. package/skills/longform-structurer/tsconfig.json +0 -10
  701. package/skills/managehook/.env.example +0 -16
  702. package/skills/managehook/CLAUDE.md +0 -48
  703. package/skills/managehook/README.md +0 -210
  704. package/skills/managehook/package.json +0 -24
  705. package/skills/managehook/scripts/migrate.ts +0 -57
  706. package/skills/managehook/scripts/seed.ts +0 -58
  707. package/skills/managehook/src/db/index.ts +0 -37
  708. package/skills/managehook/src/index.ts +0 -3
  709. package/skills/managehook/src/lib/api-client.ts +0 -108
  710. package/skills/managehook/src/lib/config.ts +0 -34
  711. package/skills/managehook/src/lib/installer.ts +0 -140
  712. package/skills/managehook/src/lib/service-dir.ts +0 -119
  713. package/skills/managehook/tsconfig.json +0 -29
  714. package/skills/manageskill/.env.example +0 -16
  715. package/skills/manageskill/CLAUDE.md +0 -48
  716. package/skills/manageskill/README.md +0 -210
  717. package/skills/manageskill/package.json +0 -24
  718. package/skills/manageskill/scripts/migrate.ts +0 -57
  719. package/skills/manageskill/scripts/seed.ts +0 -58
  720. package/skills/manageskill/src/db/index.ts +0 -37
  721. package/skills/manageskill/src/index.ts +0 -3
  722. package/skills/manageskill/src/lib/api-client.ts +0 -108
  723. package/skills/manageskill/src/lib/config.ts +0 -34
  724. package/skills/manageskill/src/lib/installer.ts +0 -140
  725. package/skills/manageskill/src/lib/service-dir.ts +0 -119
  726. package/skills/manageskill/tsconfig.json +0 -29
  727. package/skills/mcp-builder/CLAUDE.md +0 -19
  728. package/skills/mcp-builder/package.json +0 -30
  729. package/skills/mcp-builder/src/ai-descriptions.ts +0 -37
  730. package/skills/mcp-builder/src/generators.ts +0 -513
  731. package/skills/mcp-builder/src/index.ts +0 -62
  732. package/skills/mcp-builder/src/minimist.d.ts +0 -15
  733. package/skills/mcp-builder/src/naming.ts +0 -12
  734. package/skills/mcp-builder/src/options.ts +0 -170
  735. package/skills/mcp-builder/src/templates.ts +0 -149
  736. package/skills/mcp-builder/src/types.ts +0 -42
  737. package/skills/mcp-builder/tsconfig.json +0 -10
  738. package/skills/meal-plan-designer/CLAUDE.md +0 -19
  739. package/skills/meal-plan-designer/package.json +0 -27
  740. package/skills/meal-plan-designer/src/index.ts +0 -301
  741. package/skills/meal-plan-designer/tsconfig.json +0 -10
  742. package/skills/meeting-insight-summarizer/CLAUDE.md +0 -19
  743. package/skills/meeting-insight-summarizer/package.json +0 -27
  744. package/skills/meeting-insight-summarizer/src/index.ts +0 -316
  745. package/skills/meeting-insight-summarizer/tsconfig.json +0 -10
  746. package/skills/microcopy-generator/CLAUDE.md +0 -19
  747. package/skills/microcopy-generator/package.json +0 -27
  748. package/skills/microcopy-generator/src/index.ts +0 -303
  749. package/skills/microcopy-generator/tsconfig.json +0 -10
  750. package/skills/mindfulness-prompt-cache/CLAUDE.md +0 -19
  751. package/skills/mindfulness-prompt-cache/package.json +0 -27
  752. package/skills/mindfulness-prompt-cache/src/index.ts +0 -290
  753. package/skills/mindfulness-prompt-cache/tsconfig.json +0 -10
  754. package/skills/music/SKILL.md +0 -33
  755. package/skills/music/package.json +0 -11
  756. package/skills/music-album/SKILL.md +0 -37
  757. package/skills/music-album/package.json +0 -11
  758. package/skills/notion-manager/CLAUDE.md +0 -19
  759. package/skills/notion-manager/package.json +0 -29
  760. package/skills/notion-manager/src/index.ts +0 -105
  761. package/skills/notion-manager/tsconfig.json +0 -10
  762. package/skills/npmpublish/CLAUDE.md +0 -30
  763. package/skills/npmpublish/README.md +0 -83
  764. package/skills/npmpublish/SKILL.md +0 -70
  765. package/skills/npmpublish/package.json +0 -41
  766. package/skills/npmpublish/src/index.ts +0 -192
  767. package/skills/npmpublish/tsconfig.json +0 -18
  768. package/skills/onboarding-sequence-builder/CLAUDE.md +0 -19
  769. package/skills/onboarding-sequence-builder/package.json +0 -27
  770. package/skills/onboarding-sequence-builder/src/index.ts +0 -321
  771. package/skills/onboarding-sequence-builder/tsconfig.json +0 -10
  772. package/skills/onsite-ops-checklist/CLAUDE.md +0 -19
  773. package/skills/onsite-ops-checklist/package.json +0 -27
  774. package/skills/onsite-ops-checklist/src/index.ts +0 -307
  775. package/skills/onsite-ops-checklist/tsconfig.json +0 -10
  776. package/skills/outreach-cadence-designer/CLAUDE.md +0 -19
  777. package/skills/outreach-cadence-designer/package.json +0 -27
  778. package/skills/outreach-cadence-designer/src/index.ts +0 -330
  779. package/skills/outreach-cadence-designer/tsconfig.json +0 -10
  780. package/skills/packaging-concept-studio/CLAUDE.md +0 -19
  781. package/skills/packaging-concept-studio/package.json +0 -27
  782. package/skills/packaging-concept-studio/src/index.ts +0 -296
  783. package/skills/packaging-concept-studio/tsconfig.json +0 -10
  784. package/skills/packing-plan-pro/CLAUDE.md +0 -19
  785. package/skills/packing-plan-pro/package.json +0 -27
  786. package/skills/packing-plan-pro/src/index.ts +0 -306
  787. package/skills/packing-plan-pro/tsconfig.json +0 -10
  788. package/skills/parent-teacher-brief/CLAUDE.md +0 -19
  789. package/skills/parent-teacher-brief/package.json +0 -27
  790. package/skills/parent-teacher-brief/src/index.ts +0 -290
  791. package/skills/parent-teacher-brief/tsconfig.json +0 -10
  792. package/skills/partner-kit-assembler/CLAUDE.md +0 -19
  793. package/skills/partner-kit-assembler/package.json +0 -27
  794. package/skills/partner-kit-assembler/src/index.ts +0 -313
  795. package/skills/partner-kit-assembler/tsconfig.json +0 -10
  796. package/skills/payroll-change-prepper/CLAUDE.md +0 -19
  797. package/skills/payroll-change-prepper/package.json +0 -27
  798. package/skills/payroll-change-prepper/src/index.ts +0 -304
  799. package/skills/payroll-change-prepper/tsconfig.json +0 -10
  800. package/skills/pdf-read/SKILL.md +0 -56
  801. package/skills/pdf-read/package.json +0 -11
  802. package/skills/pdf-read/tsconfig.json +0 -8
  803. package/skills/persona-based-adwriter/CLAUDE.md +0 -19
  804. package/skills/persona-based-adwriter/package.json +0 -27
  805. package/skills/persona-based-adwriter/src/index.ts +0 -285
  806. package/skills/persona-based-adwriter/tsconfig.json +0 -10
  807. package/skills/persona-generator/CLAUDE.md +0 -19
  808. package/skills/persona-generator/package.json +0 -27
  809. package/skills/persona-generator/src/index.ts +0 -443
  810. package/skills/persona-generator/tsconfig.json +0 -10
  811. package/skills/personal-daily-ops/CLAUDE.md +0 -19
  812. package/skills/personal-daily-ops/package.json +0 -27
  813. package/skills/personal-daily-ops/src/index.ts +0 -324
  814. package/skills/personal-daily-ops/tsconfig.json +0 -10
  815. package/skills/pet-care-scheduler/CLAUDE.md +0 -19
  816. package/skills/pet-care-scheduler/package.json +0 -27
  817. package/skills/pet-care-scheduler/src/index.ts +0 -298
  818. package/skills/pet-care-scheduler/tsconfig.json +0 -10
  819. package/skills/photo-album/SKILL.md +0 -29
  820. package/skills/photo-album/package.json +0 -11
  821. package/skills/photo-album/tsconfig.json +0 -4
  822. package/skills/playlist-maker/SKILL.md +0 -33
  823. package/skills/playlist-maker/package.json +0 -11
  824. package/skills/playlist-maker/tsconfig.json +0 -4
  825. package/skills/podcast-show-notes/CLAUDE.md +0 -19
  826. package/skills/podcast-show-notes/package.json +0 -27
  827. package/skills/podcast-show-notes/src/index.ts +0 -302
  828. package/skills/podcast-show-notes/tsconfig.json +0 -10
  829. package/skills/presentation-theme-maker/CLAUDE.md +0 -19
  830. package/skills/presentation-theme-maker/package.json +0 -27
  831. package/skills/presentation-theme-maker/src/index.ts +0 -292
  832. package/skills/presentation-theme-maker/tsconfig.json +0 -10
  833. package/skills/press-release-drafter/CLAUDE.md +0 -19
  834. package/skills/press-release-drafter/package.json +0 -27
  835. package/skills/press-release-drafter/src/index.ts +0 -291
  836. package/skills/press-release-drafter/tsconfig.json +0 -10
  837. package/skills/print-collateral-designer/CLAUDE.md +0 -19
  838. package/skills/print-collateral-designer/package.json +0 -27
  839. package/skills/print-collateral-designer/src/index.ts +0 -298
  840. package/skills/print-collateral-designer/tsconfig.json +0 -10
  841. package/skills/procurement-scorecard/CLAUDE.md +0 -19
  842. package/skills/procurement-scorecard/package.json +0 -27
  843. package/skills/procurement-scorecard/src/index.ts +0 -338
  844. package/skills/procurement-scorecard/tsconfig.json +0 -10
  845. package/skills/product-demo-script/CLAUDE.md +0 -19
  846. package/skills/product-demo-script/package.json +0 -27
  847. package/skills/product-demo-script/src/index.ts +0 -326
  848. package/skills/product-demo-script/tsconfig.json +0 -10
  849. package/skills/project-dashboard-reports/SKILL.md +0 -78
  850. package/skills/project-dashboard-reports/package.json +0 -25
  851. package/skills/project-dashboard-reports/src/index.ts +0 -67
  852. package/skills/project-retro-companion/CLAUDE.md +0 -19
  853. package/skills/project-retro-companion/package.json +0 -27
  854. package/skills/project-retro-companion/src/index.ts +0 -298
  855. package/skills/project-retro-companion/tsconfig.json +0 -10
  856. package/skills/proposal-redline-advisor/CLAUDE.md +0 -19
  857. package/skills/proposal-redline-advisor/package.json +0 -27
  858. package/skills/proposal-redline-advisor/src/index.ts +0 -320
  859. package/skills/proposal-redline-advisor/tsconfig.json +0 -10
  860. package/skills/read-image/SKILL.md +0 -47
  861. package/skills/read-image/package.json +0 -33
  862. package/skills/read-image/src/index.ts +0 -264
  863. package/skills/read-pdf/SKILL.md +0 -53
  864. package/skills/read-pdf/package.json +0 -11
  865. package/skills/remove-background/CLAUDE.md +0 -19
  866. package/skills/remove-background/package.json +0 -11
  867. package/skills/remove-background/tsconfig.json +0 -10
  868. package/skills/risk-disclosure-kit/CLAUDE.md +0 -19
  869. package/skills/risk-disclosure-kit/package.json +0 -27
  870. package/skills/risk-disclosure-kit/src/index.ts +0 -307
  871. package/skills/risk-disclosure-kit/tsconfig.json +0 -10
  872. package/skills/roi-comparison-tool/CLAUDE.md +0 -19
  873. package/skills/roi-comparison-tool/package.json +0 -27
  874. package/skills/roi-comparison-tool/src/index.ts +0 -322
  875. package/skills/roi-comparison-tool/tsconfig.json +0 -10
  876. package/skills/sales-call-recapper/CLAUDE.md +0 -19
  877. package/skills/sales-call-recapper/package.json +0 -27
  878. package/skills/sales-call-recapper/src/index.ts +0 -300
  879. package/skills/sales-call-recapper/tsconfig.json +0 -10
  880. package/skills/salescopy/.env.example +0 -2
  881. package/skills/salescopy/CLAUDE.md +0 -23
  882. package/skills/salescopy/LICENSE +0 -192
  883. package/skills/salescopy/README.md +0 -72
  884. package/skills/salescopy/package.json +0 -27
  885. package/skills/salescopy/src/commands/config.ts +0 -115
  886. package/skills/salescopy/src/commands/generate.ts +0 -179
  887. package/skills/salescopy/src/commands/sessions.ts +0 -169
  888. package/skills/salescopy/src/commands/templates.ts +0 -99
  889. package/skills/salescopy/src/index.ts +0 -3
  890. package/skills/salescopy/src/lib/generator.ts +0 -197
  891. package/skills/salescopy/src/lib/storage.ts +0 -191
  892. package/skills/salescopy/src/types/index.ts +0 -74
  893. package/skills/salescopy/src/utils/logger.ts +0 -33
  894. package/skills/salescopy/src/utils/paths.ts +0 -25
  895. package/skills/salescopy/tsconfig.json +0 -23
  896. package/skills/scaffold-project/CLAUDE.md +0 -19
  897. package/skills/scaffold-project/package.json +0 -29
  898. package/skills/scaffold-project/src/ai-detect.ts +0 -136
  899. package/skills/scaffold-project/src/file-generators.ts +0 -292
  900. package/skills/scaffold-project/src/index.ts +0 -240
  901. package/skills/scaffold-project/src/project-config.ts +0 -338
  902. package/skills/scaffold-project/src/templates.ts +0 -173
  903. package/skills/scaffold-project/src/types.ts +0 -58
  904. package/skills/scaffold-project/tsconfig.json +0 -10
  905. package/skills/scholarship-tracker/CLAUDE.md +0 -19
  906. package/skills/scholarship-tracker/package.json +0 -27
  907. package/skills/scholarship-tracker/src/index.ts +0 -298
  908. package/skills/scholarship-tracker/tsconfig.json +0 -10
  909. package/skills/sdk-generator/SKILL.md +0 -45
  910. package/skills/sdk-generator/package.json +0 -11
  911. package/skills/sdk-generator/tsconfig.json +0 -8
  912. package/skills/seating-chart-maker/CLAUDE.md +0 -19
  913. package/skills/seating-chart-maker/package.json +0 -27
  914. package/skills/seating-chart-maker/src/index.ts +0 -312
  915. package/skills/seating-chart-maker/tsconfig.json +0 -10
  916. package/skills/seo-brief-builder/CLAUDE.md +0 -19
  917. package/skills/seo-brief-builder/package.json +0 -27
  918. package/skills/seo-brief-builder/src/index.ts +0 -288
  919. package/skills/seo-brief-builder/tsconfig.json +0 -10
  920. package/skills/short-video-pack/SKILL.md +0 -30
  921. package/skills/short-video-pack/package.json +0 -11
  922. package/skills/slack-assistant/CLAUDE.md +0 -19
  923. package/skills/slack-assistant/package.json +0 -29
  924. package/skills/slack-assistant/src/index.ts +0 -79
  925. package/skills/slack-assistant/tsconfig.json +0 -10
  926. package/skills/sleep-routine-analyzer/CLAUDE.md +0 -19
  927. package/skills/sleep-routine-analyzer/package.json +0 -27
  928. package/skills/sleep-routine-analyzer/src/index.ts +0 -293
  929. package/skills/sleep-routine-analyzer/tsconfig.json +0 -10
  930. package/skills/sms/README.md +0 -33
  931. package/skills/sms/package.json +0 -35
  932. package/skills/sms/src/index.ts +0 -335
  933. package/skills/sms/tsconfig.json +0 -21
  934. package/skills/social-media-kit/CLAUDE.md +0 -19
  935. package/skills/social-media-kit/package.json +0 -27
  936. package/skills/social-media-kit/src/index.ts +0 -281
  937. package/skills/social-media-kit/tsconfig.json +0 -10
  938. package/skills/sponsorship-proposal-lab/CLAUDE.md +0 -19
  939. package/skills/sponsorship-proposal-lab/package.json +0 -27
  940. package/skills/sponsorship-proposal-lab/src/index.ts +0 -300
  941. package/skills/sponsorship-proposal-lab/tsconfig.json +0 -10
  942. package/skills/spreadsheet-cleanroom/CLAUDE.md +0 -19
  943. package/skills/spreadsheet-cleanroom/package.json +0 -27
  944. package/skills/spreadsheet-cleanroom/src/index.ts +0 -331
  945. package/skills/spreadsheet-cleanroom/tsconfig.json +0 -10
  946. package/skills/stress-relief-playbook/CLAUDE.md +0 -19
  947. package/skills/stress-relief-playbook/package.json +0 -27
  948. package/skills/stress-relief-playbook/src/index.ts +0 -298
  949. package/skills/stress-relief-playbook/tsconfig.json +0 -10
  950. package/skills/study-guide-builder/CLAUDE.md +0 -19
  951. package/skills/study-guide-builder/package.json +0 -27
  952. package/skills/study-guide-builder/src/index.ts +0 -298
  953. package/skills/study-guide-builder/tsconfig.json +0 -10
  954. package/skills/subscription-spend-watcher/CLAUDE.md +0 -19
  955. package/skills/subscription-spend-watcher/package.json +0 -27
  956. package/skills/subscription-spend-watcher/src/index.ts +0 -312
  957. package/skills/subscription-spend-watcher/tsconfig.json +0 -10
  958. package/skills/subtitle/.env.example +0 -2
  959. package/skills/subtitle/CLAUDE.md +0 -37
  960. package/skills/subtitle/LICENSE +0 -192
  961. package/skills/subtitle/README.md +0 -63
  962. package/skills/subtitle/package.json +0 -43
  963. package/skills/subtitle/src/commands/config.ts +0 -53
  964. package/skills/subtitle/src/commands/generate.ts +0 -61
  965. package/skills/subtitle/src/index.ts +0 -3
  966. package/skills/subtitle/src/lib/generator.ts +0 -216
  967. package/skills/subtitle/src/lib/storage.ts +0 -62
  968. package/skills/subtitle/src/types/index.ts +0 -68
  969. package/skills/subtitle/src/utils/logger.ts +0 -34
  970. package/skills/subtitle/src/utils/paths.ts +0 -51
  971. package/skills/subtitle/tsconfig.json +0 -21
  972. package/skills/survey-insight-extractor/CLAUDE.md +0 -19
  973. package/skills/survey-insight-extractor/package.json +0 -27
  974. package/skills/survey-insight-extractor/src/index.ts +0 -317
  975. package/skills/survey-insight-extractor/tsconfig.json +0 -10
  976. package/skills/terraform-generator/CLAUDE.md +0 -19
  977. package/skills/terraform-generator/package.json +0 -29
  978. package/skills/terraform-generator/src/index.ts +0 -99
  979. package/skills/terraform-generator/tsconfig.json +0 -10
  980. package/skills/testimonial-graphics/CLAUDE.md +0 -19
  981. package/skills/testimonial-graphics/package.json +0 -27
  982. package/skills/testimonial-graphics/src/index.ts +0 -303
  983. package/skills/testimonial-graphics/tsconfig.json +0 -10
  984. package/skills/timesheet/.env.example +0 -25
  985. package/skills/timesheet/README.md +0 -235
  986. package/skills/timesheet/package.json +0 -47
  987. package/skills/timesheet/scripts/publish.ts +0 -210
  988. package/skills/timesheet/src/commands/employee.ts +0 -96
  989. package/skills/timesheet/src/commands/export.ts +0 -29
  990. package/skills/timesheet/src/commands/generate.ts +0 -102
  991. package/skills/timesheet/src/commands/holiday.ts +0 -74
  992. package/skills/timesheet/src/commands/profile.ts +0 -133
  993. package/skills/timesheet/src/commands/setup.ts +0 -21
  994. package/skills/timesheet/src/commands/vacation.ts +0 -93
  995. package/skills/timesheet/src/index.ts +0 -3
  996. package/skills/timesheet/src/lib/employees.ts +0 -56
  997. package/skills/timesheet/src/lib/export.ts +0 -123
  998. package/skills/timesheet/src/lib/holidays.ts +0 -79
  999. package/skills/timesheet/src/lib/paths.ts +0 -59
  1000. package/skills/timesheet/src/lib/profiles.ts +0 -168
  1001. package/skills/timesheet/src/lib/storage.ts +0 -83
  1002. package/skills/timesheet/src/lib/timesheet.ts +0 -130
  1003. package/skills/timesheet/src/lib/vacations.ts +0 -70
  1004. package/skills/timesheet/src/types/index.ts +0 -96
  1005. package/skills/timesheet/tsconfig.json +0 -29
  1006. package/skills/transcript/LICENSE +0 -192
  1007. package/skills/transcript/README.md +0 -17
  1008. package/skills/transcript/SKILL.md +0 -80
  1009. package/skills/transcript/package.json +0 -11
  1010. package/skills/transcript/tsconfig.json +0 -18
  1011. package/skills/travel-budget-balancer/CLAUDE.md +0 -19
  1012. package/skills/travel-budget-balancer/package.json +0 -27
  1013. package/skills/travel-budget-balancer/src/index.ts +0 -297
  1014. package/skills/travel-budget-balancer/tsconfig.json +0 -10
  1015. package/skills/video/SKILL.md +0 -37
  1016. package/skills/video/package.json +0 -11
  1017. package/skills/video-cut-suggester/CLAUDE.md +0 -19
  1018. package/skills/video-cut-suggester/package.json +0 -27
  1019. package/skills/video-cut-suggester/src/index.ts +0 -304
  1020. package/skills/video-cut-suggester/tsconfig.json +0 -10
  1021. package/skills/video-thumbnail/CLAUDE.md +0 -19
  1022. package/skills/video-thumbnail/package.json +0 -27
  1023. package/skills/video-thumbnail/src/index.ts +0 -356
  1024. package/skills/video-thumbnail/tsconfig.json +0 -10
  1025. package/skills/voiceover-jingle-pack/SKILL.md +0 -28
  1026. package/skills/voiceover-jingle-pack/package.json +0 -11
  1027. package/skills/webcrawling/CLAUDE.md +0 -11
  1028. package/skills/webcrawling/LICENSE +0 -192
  1029. package/skills/webcrawling/README.md +0 -24
  1030. package/skills/webcrawling/package.json +0 -11
  1031. package/skills/webcrawling/tsconfig.json +0 -22
  1032. package/skills/webinar-script-coach/CLAUDE.md +0 -19
  1033. package/skills/webinar-script-coach/package.json +0 -27
  1034. package/skills/webinar-script-coach/src/index.ts +0 -296
  1035. package/skills/webinar-script-coach/tsconfig.json +0 -10
  1036. package/skills/wellness-progress-reporter/CLAUDE.md +0 -19
  1037. package/skills/wellness-progress-reporter/package.json +0 -27
  1038. package/skills/wellness-progress-reporter/src/index.ts +0 -298
  1039. package/skills/wellness-progress-reporter/tsconfig.json +0 -10
  1040. package/skills/workout-cycle-planner/CLAUDE.md +0 -19
  1041. package/skills/workout-cycle-planner/package.json +0 -27
  1042. package/skills/workout-cycle-planner/src/index.ts +0 -299
  1043. package/skills/workout-cycle-planner/tsconfig.json +0 -10
  1044. package/skills/write/.env.example +0 -9
  1045. package/skills/write/LICENSE +0 -192
  1046. package/skills/write/README.md +0 -17
  1047. package/skills/write/SKILL.md +0 -90
  1048. package/skills/write/package.json +0 -32
  1049. package/skills/write/src/agents/image-generator.ts +0 -186
  1050. package/skills/write/src/agents/researcher.ts +0 -61
  1051. package/skills/write/src/agents/writer.ts +0 -99
  1052. package/skills/write/src/index-local.ts +0 -248
  1053. package/skills/write/src/index.ts +0 -4
  1054. package/skills/write/src/orchestrator.ts +0 -171
  1055. package/skills/write/src/types.ts +0 -65
  1056. package/skills/write/tsconfig.json +0 -18
  1057. /package/migrations/{0001_open_skills_self_hosted.sql → postgres/0001_open_skills_self_hosted.sql} +0 -0
  1058. /package/skills/{read-image → api-docs-portal}/tsconfig.json +0 -0
  1059. /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
+ };