@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,57 @@
1
+ /**
2
+ * Merging the several registries a `skills` install can see into one list.
3
+ *
4
+ * Before this, `--remote` REPLACED the local registry: `skills list --remote` showed the
5
+ * instance's skills and nothing else, so the bundled corpus and anything the operator had
6
+ * written locally vanished from the listing the moment they pointed the CLI at their own
7
+ * server. Since the whole point of publishing is that a machine sees bundled, local, and
8
+ * published skills together, the lists are merged and collisions are resolved by an
9
+ * explicit rule rather than by which list happened to be concatenated last.
10
+ *
11
+ * PRECEDENCE, most local wins:
12
+ *
13
+ * custom > extension > private > private-hosted > remote > upstream > official
14
+ *
15
+ * The rule is "whichever copy this machine would actually use, wins the listing". A skill
16
+ * present in ~/.hasna/skills/installed is the one `skills run` executes, so a listing that
17
+ * described the server's copy instead would be describing something that is not going to
18
+ * run. `remote` beats `official` for the mirror-image reason: an organization that
19
+ * published a skill under a bundled name did so to override the bundled one on their
20
+ * instance, and silently preferring the bundled copy would make publishing an override
21
+ * impossible.
22
+ *
23
+ * Ties inside one source are resolved last-wins, so a caller can order its own inputs.
24
+ */
25
+ import type { SkillMeta, SkillSource } from "./registry-types.js";
26
+ /** Higher wins. Every SkillSource has an entry; adding a source without one is a type error. */
27
+ export declare const SKILL_SOURCE_PRECEDENCE: Record<SkillSource, number>;
28
+ /**
29
+ * An entry with no `source` at all is treated as `official`.
30
+ *
31
+ * Deliberately the *lowest* rank rather than the highest. Untagged entries come from
32
+ * older payloads and hand-built fixtures, and an unknown provenance losing a collision
33
+ * fails towards the bundled corpus - the copy that is known to exist - instead of letting
34
+ * an unlabelled remote entry silently displace a local skill.
35
+ */
36
+ export declare function skillSourceRank(skill: Pick<SkillMeta, "source">): number;
37
+ export interface MergedSkillCollision {
38
+ name: string;
39
+ /** The source that won. */
40
+ winner: SkillSource;
41
+ /** Every source that lost, in the order they were supplied. */
42
+ shadowed: SkillSource[];
43
+ }
44
+ export interface MergeSkillRegistriesResult {
45
+ skills: SkillMeta[];
46
+ collisions: MergedSkillCollision[];
47
+ }
48
+ /**
49
+ * Merge registries by name, keeping the highest-precedence entry for each.
50
+ *
51
+ * Groups are supplied in whatever order the caller likes: the result does not depend on
52
+ * it except for ties within a single source, which resolve last-wins. Output is sorted by
53
+ * name so two callers merging the same inputs print the same list.
54
+ */
55
+ export declare function mergeSkillRegistries(...groups: Array<SkillMeta[] | undefined | null>): MergeSkillRegistriesResult;
56
+ /** The merged list on its own, for callers that do not care which entries collided. */
57
+ export declare function mergeSkillRegistryLists(...groups: Array<SkillMeta[] | undefined | null>): SkillMeta[];
@@ -18,22 +18,9 @@ export interface SkillMeta {
18
18
  * agents. Missing kind defaults to "executable" during migration.
19
19
  */
20
20
  kind?: SkillKind;
21
- pricing?: SkillPricingMetadata;
22
21
  availability?: SkillAvailabilityMetadata;
23
22
  source?: SkillSource;
24
23
  }
25
- export interface SkillPricingMetadata {
26
- tier?: "free" | "premium" | string;
27
- billingUnit?: string;
28
- costCents?: number;
29
- formattedCost: string;
30
- formattedUnitCost?: string;
31
- unitCount?: number;
32
- estimated?: boolean;
33
- quoteDependsOnInput?: boolean;
34
- quoteRequired?: boolean;
35
- description?: string;
36
- }
37
24
  export interface SkillAvailabilityMetadata {
38
25
  status: "available" | "unavailable";
39
26
  code?: string;
@@ -42,5 +29,5 @@ export interface SkillAvailabilityMetadata {
42
29
  }
43
30
  export declare const CATEGORIES: readonly ["Development Tools", "Business & Marketing", "Productivity & Organization", "Project Management", "Content Generation", "Finance & Compliance", "Data & Analysis", "Media Processing", "Design & Branding", "Web & Browser", "Research & Writing", "Science & Academic", "Education & Learning", "Communication", "Health & Wellness", "Travel & Lifestyle", "Event Management"];
44
31
  export type Category = (typeof CATEGORIES)[number];
45
- export declare const BASIC_SKILL_NAMES: readonly ["image", "video", "audio", "music", "transcript", "audio-extract", "read-image", "read-pdf", "pdf-read", "pdf-to-markdown", "doc-read", "pdf-generate", "doc-generate", "read-csv", "read-excel", "excel", "convert"];
32
+ export declare const BASIC_SKILL_NAMES: readonly ["blog-article", "ad-creative-pack", "email-sequence", "seo-content-pack", "social-content-calendar", "pitch-deck", "proposal-pack", "market-research-report"];
46
33
  export type SkillRegistryProfile = "basic" | "all";
@@ -6,11 +6,14 @@ import { BASIC_SKILL_NAMES, CATEGORIES, type Category, type SkillMeta, type Skil
6
6
  export { BASIC_SKILL_NAMES, CATEGORIES, SKILLS };
7
7
  export type { Category, SkillMeta, SkillRegistryProfile };
8
8
  export declare function isBasicSkillName(name: string): boolean;
9
+ export declare function findExtensionSkillPath(name: string): string | null;
9
10
  /**
10
- * Load the full registry: official skills merged with global custom skills
11
- * from ~/.hasna/skills/<name>/ and the legacy ~/.hasna/skills/custom/<name>/ path.
11
+ * Load the full registry: official skills merged with a configured private
12
+ * extension checkout and global custom skills from ~/.hasna/skills/installed/<name>/
13
+ * (plus the legacy ~/.hasna/skills/custom/<name>/ migration safety net).
12
14
  *
13
- * Custom skills with the same name as official skills take precedence.
15
+ * Custom skills take precedence over extensions, which take precedence over
16
+ * official skills. Extension skills are read in place and never copied into installed/.
14
17
  * Results are cached for 5 seconds.
15
18
  */
16
19
  export declare function loadRegistry(cwd?: string): SkillMeta[];
@@ -7,12 +7,26 @@ export declare class RemoteSkillsClient {
7
7
  listSkills(): Promise<any[]>;
8
8
  getSkillMd(slug: string): Promise<string | null>;
9
9
  getSkill(slug: string): Promise<any | null>;
10
- quoteSkill(slug: string, input?: Record<string, unknown>, args?: string[]): Promise<any>;
11
10
  submitRun(slug: string, input?: Record<string, unknown>, args?: string[]): Promise<RemoteSkillRunContract>;
12
11
  getRun(runId: string): Promise<RemoteSkillRunContract | null>;
13
12
  getRunLogs(runId: string): Promise<any[]>;
14
13
  listRuns(limit?: number): Promise<any[]>;
15
14
  getRunArtifacts(runId: string): Promise<any[]>;
16
15
  downloadRunArtifact(runId: string, artifactId: string): Promise<Response>;
16
+ /**
17
+ * Publish a skill to the configured instance.
18
+ *
19
+ * Sent as multipart rather than as JSON with a base64 field. A base64 body would inflate
20
+ * the bundle by a third and would have to pass through the server's JSON reader, whose
21
+ * 1 MB cap exists to keep JSON bodies sane; multipart keeps the tarball on its own path
22
+ * with its own, larger limit.
23
+ *
24
+ * Note the deliberate absence of `request()`: that helper pins
25
+ * `Content-Type: application/json`, and a multipart body whose Content-Type does not
26
+ * carry the generated boundary is unparseable at the other end.
27
+ */
28
+ publishSkill(manifest: Record<string, unknown>, bundle?: Uint8Array): Promise<Response>;
29
+ deleteSkill(slug: string): Promise<Response>;
30
+ downloadSkillBundle(slug: string): Promise<Response>;
17
31
  }
18
32
  export declare function createRemoteSkillsClient(): RemoteSkillsClient | null;
@@ -2,7 +2,7 @@
2
2
  * Remote registry client.
3
3
  *
4
4
  * Local registry behavior remains the default. These helpers are opt-in and
5
- * read from SKILLS_API_URL or config.apiUrl so self-hosted services can expose
5
+ * read from SKILLS_API_URL or config.apiUrl so services can expose
6
6
  * a compatible registry API without hard-coding deployment details upstream.
7
7
  */
8
8
  import { type SkillsConfig } from "./config.js";
@@ -1,4 +1,3 @@
1
- import type { PublicSkillPricing } from "./pricing";
2
1
  export declare const REMOTE_SKILL_RUN_CONTRACT_VERSION: 1;
3
2
  export interface RemoteSkillRunContract {
4
3
  contractVersion: typeof REMOTE_SKILL_RUN_CONTRACT_VERSION;
@@ -8,9 +7,6 @@ export interface RemoteSkillRunContract {
8
7
  status?: string;
9
8
  exitCode?: number;
10
9
  correlationId?: string;
11
- costCents?: number;
12
- cost?: string;
13
- pricing?: PublicSkillPricing;
14
10
  createdAt?: string;
15
11
  startedAt?: string;
16
12
  completedAt?: string;
@@ -19,11 +15,8 @@ export interface RemoteSkillRunContract {
19
15
  outputPreview?: unknown;
20
16
  errorCode?: string;
21
17
  errorMessage?: string;
22
- creditsUsed?: number;
23
18
  error?: string;
24
19
  code?: string;
25
20
  details?: unknown;
26
- balance?: string;
27
- balanceCents?: number;
28
21
  }
29
22
  export declare function normalizeRemoteSkillRunContract(payload: unknown, fallbackSkill?: string): RemoteSkillRunContract;
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Settings that used to select a deployment mode, and the refusal they now produce.
3
+ *
4
+ * Skills once declared a three-way deployment axis as a label: running on this
5
+ * machine, running against a server somebody operates, running against a
6
+ * vendor-operated one. That axis is gone. Two facts replaced it, and both are read
7
+ * from the configuration itself rather than from a declaration about it:
8
+ *
9
+ * - a server keeps its data in SQLite or in PostgreSQL, decided by the database
10
+ * string it is given (see server/database-url.ts);
11
+ * - a client either has an API origin configured or it does not (see
12
+ * lib/api-url.ts).
13
+ *
14
+ * Deleting the label was not sufficient on its own, and this module is the half
15
+ * that was left. A retired setting which is merely *unread* is the worse of the
16
+ * two failures: an operator who exports a storage-mode variable gets a process on
17
+ * the default SQLite database with no indication that the thing they configured
18
+ * was discarded, and silence there is indistinguishable from success. That is how
19
+ * a deployment ends up writing to a file nobody is backing up. So a retired
20
+ * setting is refused, and the refusal names what replaced it.
21
+ *
22
+ * MATCHED BY SHAPE, NOT BY A LIST OF NAMES. The retired axis was spelled several
23
+ * ways at once across the estate - two prefixes, and both `storage` and
24
+ * `deployment` as the middle word - so enumerating the spellings we happen to
25
+ * remember would let the next one through silently, which is the failure being
26
+ * fixed. A suffix match catches every prefix variant, including ones this repo
27
+ * never used itself.
28
+ *
29
+ * Two discriminations keep that shape from doing damage:
30
+ *
31
+ * - The suffixes are narrow. `*_MODE` alone would swallow live, unrelated
32
+ * settings - SKILLS_TEST_MODE gates self-update in the suite, and SQLite's
33
+ * journal mode is a mode - so only the three that named the removed
34
+ * deployment axis appear below. Anything else called mode is a different axis
35
+ * and none of this module's business.
36
+ * - The match is scoped to this application's variables. Sibling Hasna apps are
37
+ * mid-removal on the same axis and their variables are present in the same
38
+ * shell; refusing to start because a *different* app still exports one would
39
+ * turn this fix into an outage. The caller supplies the token that identifies
40
+ * its own namespace.
41
+ */
42
+ /**
43
+ * Configuration-file keys that named the removed deployment axis, and the key
44
+ * that replaces each one.
45
+ *
46
+ * A key is retired whatever its value: the fault is asking for a deployment label
47
+ * at all, not asking for a particular one. Listing values instead would accept
48
+ * `mode: "onprem"` while rejecting `mode: "cloud"`, which teaches the reader that
49
+ * the concept survived and only some spellings of it are wrong.
50
+ */
51
+ export declare const RETIRED_CONFIG_KEYS: Readonly<Record<string, string>>;
52
+ /** Thrown when configuration names a setting the deployment-mode removal deleted. */
53
+ export declare class RetiredSettingError extends Error {
54
+ readonly code = "RETIRED_SETTING";
55
+ /** The retired setting, spelled as the operator wrote it. */
56
+ readonly setting: string;
57
+ constructor(setting: string, message: string);
58
+ }
59
+ /**
60
+ * Whether an environment variable names the removed deployment axis for `app`.
61
+ *
62
+ * @param app token identifying the calling application's variable namespace, so
63
+ * a sibling app's not-yet-removed variable is left alone.
64
+ */
65
+ export declare function isRetiredModeEnvVar(name: string, app: string): boolean;
66
+ /**
67
+ * Every retired deployment-axis variable for `app` that is actually set.
68
+ *
69
+ * An empty string counts as unset. `export FOO="$BAR"` with BAR unset is what
70
+ * collapses to that, and refusing it would fail a deployment over a value nobody
71
+ * chose.
72
+ */
73
+ export declare function findRetiredModeEnvVars(env: Record<string, string | undefined>, app: string): {
74
+ name: string;
75
+ value: string;
76
+ }[];
77
+ /**
78
+ * Refuse if the environment names the removed deployment axis.
79
+ *
80
+ * `replacement` is supplied by the caller rather than hardcoded here so the name
81
+ * stays owned by the module that reads it, and so this module needs no imports
82
+ * and can be called from anywhere without an import cycle.
83
+ *
84
+ * @throws RetiredSettingError naming the retired variables, their replacement,
85
+ * and the fix.
86
+ */
87
+ export declare function assertNoRetiredModeEnvVars(env: Record<string, string | undefined>, options: {
88
+ app: string;
89
+ replacement: string;
90
+ }): void;
91
+ /**
92
+ * Refuse if a configuration object carries a retired deployment-axis key.
93
+ *
94
+ * @param source where the object came from - a file path, or the command that
95
+ * supplied it - so the message points at the thing the operator has to change
96
+ * rather than at "your configuration".
97
+ *
98
+ * @throws RetiredSettingError naming the retired key, its replacement, and the fix.
99
+ */
100
+ export declare function assertNoRetiredConfigKeys(config: Record<string, unknown>, source: string): void;
@@ -57,4 +57,18 @@ export declare function writeRunLogs(context: SkillRunContext, stdout?: string,
57
57
  export declare function appendRunEvent(context: SkillRunContext, event: string, data?: Record<string, unknown>): void;
58
58
  export declare function listSkillRuns(targetDir?: string, limit?: number): SkillRunRecord[];
59
59
  export declare function findSkillRun(runId: string, targetDir?: string): SkillRunRecord | null;
60
+ /**
61
+ * Environment handed to a skill child process so it writes into the project's
62
+ * `.skills` tree instead of its own installation directory.
63
+ *
64
+ * Skills are spawned with `cwd` set to the installed skill package, so every
65
+ * cwd-relative fallback (`process.env.SKILLS_EXPORTS_DIR || "."`,
66
+ * `process.env.SKILLS_OUTPUT_DIR || join(process.cwd(), ".skills")`) resolves
67
+ * inside node_modules unless these are set. The catalog reads three names:
68
+ * SKILLS_OUTPUT_DIR (the `.skills` root, from which skills derive
69
+ * `exports/<skill>` and `logs/<skill>`), plus SKILLS_EXPORTS_DIR and
70
+ * SKILLS_LOGS_DIR (already-resolved directories). SKILLS_EXPORT_DIR is kept
71
+ * for back-compat with anything reading the singular CLI-side name.
72
+ */
73
+ export declare function skillRunEnv(context: SkillRunContext): Record<string, string>;
60
74
  export declare function getRunExportDir(runId: string, skill: string, targetDir?: string): string;
@@ -1,17 +1,5 @@
1
1
  export declare const SKILL_ALIASES: {
2
- readonly transcribe: "transcript";
3
- readonly "speech-to-text": "transcript";
4
- readonly "generate-pdf": "pdf-generate";
5
- readonly "create-pdf": "pdf-generate";
6
- readonly "generate-doc": "doc-generate";
7
- readonly "generate-document": "doc-generate";
8
- readonly "read-document": "doc-read";
9
- readonly "document-read": "doc-read";
10
- readonly "pdf-reader": "read-pdf";
11
- readonly "generate-image": "image";
12
- readonly "image-generator": "image";
13
2
  readonly "create-blog-article": "blog-article";
14
- readonly "skill-diff": "diff-viewer";
15
3
  };
16
4
  export type SkillAlias = keyof typeof SKILL_ALIASES;
17
5
  export declare function normalizeSkillSlug(name: string): string;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Bytes backed by an ArrayBuffer this process owns.
3
+ *
4
+ * Spelled out rather than left as a bare `Uint8Array` because Node's readFileSync and
5
+ * Bun's gzipSync return views over pooled or shared buffers, and passing one of those to
6
+ * `new Response(...)` or letting it outlive the call is how a view ends up describing
7
+ * bytes that belong to something else.
8
+ */
9
+ export type OwnedBytes = Uint8Array<ArrayBuffer>;
10
+ /** Copy any byte view into a buffer of its own. */
11
+ export declare function ownBytes(view: Uint8Array | ArrayBuffer): OwnedBytes;
12
+ export interface SkillBundleEntry {
13
+ path: string;
14
+ bytes: OwnedBytes;
15
+ mode: number;
16
+ }
17
+ export interface PackedSkillBundle {
18
+ /** The gzipped tar. This is what is uploaded and what the digest is taken over. */
19
+ bytes: OwnedBytes;
20
+ /** Lowercase hex sha-256 of `bytes`. The skill's content address. */
21
+ sha256: string;
22
+ fileCount: number;
23
+ /** Total uncompressed size of the packed files, for a size limit that means something. */
24
+ unpackedByteSize: number;
25
+ /** Relative paths included, sorted. Surfaced so `push --dry-run` can show them. */
26
+ paths: string[];
27
+ }
28
+ export interface PackSkillBundleOptions {
29
+ /** Reject before compressing when the sources exceed this. 0 disables the check. */
30
+ maxUnpackedBytes?: number;
31
+ }
32
+ export declare function sha256Hex(bytes: Uint8Array): string;
33
+ /** Collect the files a bundle would contain, in archive order. */
34
+ export declare function collectSkillBundleEntries(dir: string): SkillBundleEntry[];
35
+ export declare function packSkillBundle(dir: string, options?: PackSkillBundleOptions): PackedSkillBundle;
36
+ /** Inverse of packSkillBundle. Used by the round-trip tests and by any future `pull`. */
37
+ export declare function unpackSkillBundle(bundle: Uint8Array): SkillBundleEntry[];
@@ -0,0 +1,66 @@
1
+ import { type ScanSource } from "./vendor-host-url.js";
2
+ export declare const CODE_FILE_PATTERN: RegExp;
3
+ export declare function isCodeFile(file: string): boolean;
4
+ /**
5
+ * Where a URL literal sits. Used only for REPORTING — the pass/fail decision is
6
+ * position-independent on purpose, so a syntactic form nobody enumerated here
7
+ * still cannot hide a URL.
8
+ */
9
+ export type UrlLiteralPosition = "parameter default" | "object property" | "class field" | "variable initializer" | "fallback operand" | "ternary branch" | "call argument" | "return value" | "literal";
10
+ /**
11
+ * A vendor domain written into a string literal, whether or not it forms a URL.
12
+ *
13
+ * The URL-shaped checks are value-dependent: they have to reconstruct what the
14
+ * program will produce, and every reconstruction is a finite set of cases that
15
+ * an attacker can step outside of (`.concat`, `.slice`, `.replace`, a `const`
16
+ * referenced by name, a JSON blob parsed at runtime). This check is
17
+ * value-INDEPENDENT: the vendor's own domain has to appear somewhere in the
18
+ * bytes for the program to reach the vendor, so looking for the domain as a
19
+ * token catches every assembly trick at once.
20
+ *
21
+ * It is a denylist, so it says nothing about a vendor domain nobody has listed —
22
+ * that case is what the URL allowlist is for. The two are deliberately different
23
+ * shapes because they fail in different directions.
24
+ */
25
+ export type CodeFindingKind =
26
+ /** Host resolves to a domain we operate. */
27
+ "vendor-host"
28
+ /** Host resolves to a domain that is not on APPROVED_CODE_HOSTS. */
29
+ | "unapproved-host"
30
+ /** The TLD is supplied by code, so no host can be certified. */
31
+ | "undeterminable-host"
32
+ /** The file could not be parsed, so its contents were never inspected. */
33
+ | "unparsable"
34
+ /** The bytes could not be decoded as text, so they were never inspected. */
35
+ | "undecodable"
36
+ /** A vendor domain appears in a string literal, in any form. */
37
+ | "vendor-domain-token";
38
+ export interface CodeUrlFinding {
39
+ file: string;
40
+ line: number;
41
+ kind: CodeFindingKind;
42
+ /** True only for `kind === "vendor-host"`. */
43
+ vendor: boolean;
44
+ url?: string;
45
+ host?: string;
46
+ domain?: string;
47
+ position?: UrlLiteralPosition;
48
+ detail?: string;
49
+ }
50
+ /**
51
+ * Every absolute URL a source file can statically produce, found by folding
52
+ * string expressions and walking the AST — never by matching a syntactic shape.
53
+ *
54
+ * Failure to read the file is itself reported. A scanner that returns "clean"
55
+ * for a file it could not parse is worse than no scanner, because it converts an
56
+ * unknown into a certification. One stray byte used to do exactly that.
57
+ */
58
+ export declare function findCodeUrlLiterals(file: string, content: string): CodeUrlFinding[];
59
+ /**
60
+ * STRONG check over packed executable code.
61
+ *
62
+ * Every finding is a refusal to certify, not only a bad host: an unreadable or
63
+ * unparsable code file is reported, because silence about a file nobody read is
64
+ * indistinguishable from silence about a clean file.
65
+ */
66
+ export declare function findDisallowedCodeUrls(sources: Iterable<ScanSource>): CodeUrlFinding[];
@@ -0,0 +1,40 @@
1
+ import ts from "typescript";
2
+ import { type Sentinels } from "./vendor-host-url.js";
3
+ type FoldSegment = {
4
+ text: string;
5
+ } | {
6
+ hole: ts.Node;
7
+ };
8
+ export interface Folded {
9
+ segments: FoldSegment[];
10
+ /** Sub-expressions that were not constant, so the walker can still scan them. */
11
+ holes: ts.Node[];
12
+ }
13
+ /**
14
+ * Module-local constant bindings, so `const H = "vendor.invalid"` used by name is
15
+ * resolved rather than treated as an opaque runtime value.
16
+ *
17
+ * Without this, moving the host one `const` away from the URL was enough to turn
18
+ * a hard-coded endpoint into an "undeterminable host", which the annotation
19
+ * carve-outs then waved through. Scope is deliberately shallow — a single
20
+ * assignment to a `const` with a constant initialiser — because anything cleverer
21
+ * would need a type checker, and the guard should be honest about being a
22
+ * syntactic tool.
23
+ */
24
+ type ConstantBindings = Map<string, string | Map<string, string>>;
25
+ export declare function collectConstantBindings(source: ts.SourceFile): ConstantBindings;
26
+ export declare function fold(node: ts.Node, out: Folded, bindings: ConstantBindings): void;
27
+ /** Is this node the outermost part of a string-building expression? */
28
+ export declare function isFoldRoot(node: ts.Node): boolean;
29
+ /**
30
+ * Render a folded expression two ways, because both are values the program can
31
+ * produce and each hides a different attack:
32
+ *
33
+ * - holes as sentinels: keeps `https://s3.${region}.amazonaws.com` readable as
34
+ * the amazonaws.com host it is, and makes `"https://" + host` visible as a
35
+ * scheme with an undeterminable authority;
36
+ * - holes as empty strings: catches a host split by an interpolation that
37
+ * contributes nothing, e.g. `` `https://ski${""}lls.md` ``.
38
+ */
39
+ export declare function renderFolded(folded: Folded, sentinels: Sentinels): string[];
40
+ export {};
@@ -0,0 +1,47 @@
1
+ /**
2
+ * vendor-host-guard.ts — machinery for the R1 boundary checks.
3
+ *
4
+ * R1: unconfigured OSS never produces a URL on a vendor-controlled host.
5
+ *
6
+ * WHAT THIS FILE CHECKS, PRECISELY — read this before trusting its silence.
7
+ *
8
+ * There are two checks with deliberately different strengths, and the
9
+ * difference is the whole design:
10
+ *
11
+ * 1. `findDisallowedCodeUrls` — the STRONG check, over executable code.
12
+ * Every absolute http(s) URL that appears in a *string literal* in a
13
+ * packed `.ts`/`.js`-family file must be on `APPROVED_CODE_HOSTS`.
14
+ * It is an allowlist and it is position-independent: URLs are found by
15
+ * walking the TypeScript AST for string literals, so it does not matter
16
+ * whether the literal sits in a variable initializer, an object property,
17
+ * a function or constructor parameter default, a class field, a ternary
18
+ * branch, a `||`/`??` fallback, or a bare call argument. A host nobody has
19
+ * approved fails — including a vendor domain nobody has thought of yet.
20
+ *
21
+ * An earlier version of this guard matched two hand-written syntactic
22
+ * shapes with regexes. It missed constructor parameter defaults and object
23
+ * properties, which is exactly how the rule gets broken in practice. The
24
+ * AST walk exists because a regex cannot honestly express "a URL literal
25
+ * is reachable as a default, in any position".
26
+ *
27
+ * 2. `findVendorHostReferences` — the WEAK check, over everything else
28
+ * (Markdown, JSON, plain text). It is a denylist keyed on
29
+ * `VENDOR_CONTROLLED_DOMAINS`, so it catches a *known* vendor domain in
30
+ * prose and does NOT catch an unknown one. That limit is real and stated
31
+ * here rather than glossed. It is acceptable only because prose cannot
32
+ * make a request; code can, and code is covered by check 1.
33
+ *
34
+ * Both run over the PACKED FILE LIST rather than `src/`: the `files` negation
35
+ * globs in package.json mean the repository and the published package are
36
+ * different sets of bytes, and only the published set is what a user installs.
37
+ *
38
+ * `typescript` is a devDependency. That is fine: this module is imported only
39
+ * by the test suite and by `scripts/release-guard.ts`, both of which run with
40
+ * devDependencies installed (`prepack` already shells out to `tsc`). Nothing in
41
+ * the published runtime graph imports it.
42
+ */
43
+ export * from "./vendor-host-policy.js";
44
+ export * from "./vendor-host-url.js";
45
+ export * from "./vendor-host-folding.js";
46
+ export * from "./vendor-host-code-scan.js";
47
+ export * from "./vendor-host-package.js";
@@ -0,0 +1,42 @@
1
+ import type { CodeUrlFinding } from "./vendor-host-code-scan.js";
2
+ import type { ScanSource, VendorHostFinding } from "./vendor-host-url.js";
3
+ export interface PackedFs {
4
+ existsSync: (path: string) => boolean;
5
+ statSync: (path: string) => {
6
+ isFile: () => boolean;
7
+ };
8
+ readFileSync: (path: string) => Buffer;
9
+ }
10
+ /**
11
+ * Read every file in the published package as a scan source.
12
+ *
13
+ * Driven by the packer's own file list rather than by walking `src/`: the `files`
14
+ * negation globs mean the repository and the published tarball are different
15
+ * sets of bytes, and the tarball is what a user installs.
16
+ *
17
+ * Bytes that will not decode are recorded as `undecodable` rather than skipped.
18
+ * Skipping is how a single NUL byte makes a whole file invisible to a scanner.
19
+ */
20
+ export declare function readPackedSources(packedFiles: readonly string[], root: string, fs: PackedFs, joinPath: (...parts: string[]) => string): ScanSource[];
21
+ export interface EntryPointCoverage {
22
+ path: string;
23
+ packed: boolean;
24
+ read: boolean;
25
+ certified: boolean;
26
+ }
27
+ /** Every path a consumer can `require`/`import`/execute, from package.json. */
28
+ export declare function declaredEntryPoints(manifest: unknown): string[];
29
+ /**
30
+ * Anti-vacuity, per entry point.
31
+ *
32
+ * A global "we scanned more than N files" is satisfiable by files that have
33
+ * nothing to do with the code under test: on an unbuilt tree the skill corpus
34
+ * alone cleared the old threshold while `bin/`, `dist/` and everything they are
35
+ * built from went unscanned. Coverage has to be asserted against the specific
36
+ * artifacts a consumer runs.
37
+ */
38
+ export declare function checkEntryPointCoverage(manifest: unknown, packedFiles: readonly string[], scanned: ReadonlyMap<string, {
39
+ certified: boolean;
40
+ }>): EntryPointCoverage[];
41
+ export declare function uncoveredEntryPoints(coverage: readonly EntryPointCoverage[]): EntryPointCoverage[];
42
+ export declare function formatFindings(findings: ReadonlyArray<VendorHostFinding | CodeUrlFinding>): string;
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Registrable domains the vendor controls. A URL on one of these fails both
3
+ * checks. Adding a new vendor domain to the codebase without adding it here
4
+ * does NOT make it invisible: check 1 is an allowlist, so an unlisted domain
5
+ * fails as "unapproved" even if nobody has classified it as ours.
6
+ */
7
+ export declare const VENDOR_CONTROLLED_DOMAINS: readonly string[];
8
+ /**
9
+ * POLICY — third-party endpoint defaults vs vendor endpoint defaults.
10
+ *
11
+ * R1 bans defaulting to hosts *we operate*. It does not ban a bring-your-own-key
12
+ * skill from naming the public API of the provider whose key the user supplies:
13
+ * `api.openai.com` in a skill pointed at the user's own OpenAI account is the
14
+ * provider's published address, not a service we run, and there is no other
15
+ * value it could sensibly take. That is legitimate under R2's "third-party
16
+ * provider the user configures directly (BYO key — documented, never proxied)".
17
+ *
18
+ * So the distinction is explicit rather than accidental:
19
+ *
20
+ * - a default endpoint on a host WE operate → forbidden, always;
21
+ * - a default endpoint on an approved third-party host → allowed;
22
+ * - a default endpoint on any other host → forbidden until
23
+ * reviewed and listed here with a reason.
24
+ *
25
+ * Every entry is a registrable domain plus its justification. This list doubles
26
+ * as the inventory of every host the published code is able to name.
27
+ */
28
+ export declare const APPROVED_CODE_HOSTS: readonly {
29
+ domain: string;
30
+ reason: string;
31
+ }[];
32
+ /**
33
+ * Exact URLs that may appear despite being on a vendor domain. Matched on the
34
+ * full URL, never on the domain, so a real endpoint on the same domain still
35
+ * fails. Keep minimal and justified.
36
+ */
37
+ export declare const VENDOR_HOST_URL_EXCEPTIONS: readonly {
38
+ url: string;
39
+ reason: string;
40
+ }[];
41
+ /** Reduce a hostname to its registrable domain (approximate eTLD+1). */
42
+ export declare function registrableDomain(host: string): string;
43
+ export declare function isLoopbackHost(host: string): boolean;
44
+ export declare function isVendorControlledHost(host: string): boolean;
45
+ export declare function isApprovedCodeHost(host: string): boolean;
46
+ /**
47
+ * Packed files allowed to contain a host whose TLD is supplied by `{…}` template
48
+ * syntax (`https://s3.{partitionResult#dnsSuffix}`). These are bundles of the
49
+ * AWS SDK, whose endpoint-rule engine substitutes the DNS suffix per partition.
50
+ *
51
+ * File-scoped on purpose: the carve-out used to be package-wide, which meant any
52
+ * file could park a partial authority next to a runtime value and be exempted.
53
+ * A host completed from a *code* expression is never exempt, in any file.
54
+ */
55
+ export declare const TEMPLATE_HOST_FILES: readonly {
56
+ file: string;
57
+ reason: string;
58
+ }[];
59
+ export declare function allowsTemplateHost(file: string): boolean;
60
+ /**
61
+ * Sites that build a host out of a computed value.
62
+ *
63
+ * Building a host from configuration is exactly what R1 asks for, so these are
64
+ * not defects — but they are also the shape an endpoint default hides in, so
65
+ * each one is acknowledged here rather than exempted by a blanket rule. Matched
66
+ * on file AND exact URL fragment, never on file alone, and never on line number
67
+ * so that rebuilding a bundle does not churn the list. A new dynamic-host site
68
+ * fails until someone reads it and adds it.
69
+ */
70
+ export declare const DYNAMIC_HOST_SITES: readonly {
71
+ file: string;
72
+ path: string;
73
+ expr: string;
74
+ reason: string;
75
+ }[];
76
+ /**
77
+ * Path component of a URL, used as the annotation key. Deliberately not the full
78
+ * URL: a dynamic-host URL renders as a bare scheme, and storing that literal
79
+ * would both read as noise and trip the repo's own insecure-HTTP scanner.
80
+ */
81
+ export declare function urlPath(url: string): string;
82
+ /**
83
+ * Is this specific site annotated?
84
+ *
85
+ * Matched on file AND url path AND a substring of the host-producing EXPRESSION.
86
+ * The expression is what makes the annotation site-scoped: keying on
87
+ * (file, path) alone degenerated to keying on the file, because every
88
+ * computed host with no path renders to the same bare scheme — so one annotated
89
+ * site silently pre-approved every future one in the same file.
90
+ */
91
+ export declare function isAnnotatedDynamicHost(file: string, url: string, expressionText: string): boolean;
92
+ /**
93
+ * The policy module must name the vendor domains it declares. Exclude only this
94
+ * file from the value-independent token check; URL-shaped checks still apply.
95
+ */
96
+ export declare const VENDOR_DOMAIN_DECLARATION_FILE = "src/lib/vendor-host-policy.ts";