@hasna/skills 0.1.60 → 0.1.62

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