skillpack-one 0.1.0-alpha.10

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 (1096) hide show
  1. package/.agents/skills/atom-analyze-market/SKILL.md +8 -0
  2. package/.agents/skills/atom-analyze-market/agents/openai.yaml +7 -0
  3. package/.agents/skills/atom-analyze-market/skill.contract.yaml +27 -0
  4. package/.agents/skills/atom-analyze-tabular-data/SKILL.md +8 -0
  5. package/.agents/skills/atom-analyze-tabular-data/agents/openai.yaml +7 -0
  6. package/.agents/skills/atom-analyze-tabular-data/skill.contract.yaml +26 -0
  7. package/.agents/skills/atom-audit-source-security/SKILL.md +8 -0
  8. package/.agents/skills/atom-audit-source-security/agents/openai.yaml +7 -0
  9. package/.agents/skills/atom-audit-source-security/skill.contract.yaml +27 -0
  10. package/.agents/skills/atom-classify-capability/SKILL.md +8 -0
  11. package/.agents/skills/atom-classify-capability/agents/openai.yaml +7 -0
  12. package/.agents/skills/atom-classify-capability/skill.contract.yaml +26 -0
  13. package/.agents/skills/atom-design-automation-workflow/SKILL.md +8 -0
  14. package/.agents/skills/atom-design-automation-workflow/agents/openai.yaml +7 -0
  15. package/.agents/skills/atom-design-automation-workflow/skill.contract.yaml +26 -0
  16. package/.agents/skills/atom-design-interface-spec/SKILL.md +8 -0
  17. package/.agents/skills/atom-design-interface-spec/agents/openai.yaml +7 -0
  18. package/.agents/skills/atom-design-interface-spec/skill.contract.yaml +26 -0
  19. package/.agents/skills/atom-find-research-sources/SKILL.md +8 -0
  20. package/.agents/skills/atom-find-research-sources/agents/openai.yaml +7 -0
  21. package/.agents/skills/atom-find-research-sources/skill.contract.yaml +26 -0
  22. package/.agents/skills/atom-implement-code-change/SKILL.md +8 -0
  23. package/.agents/skills/atom-implement-code-change/agents/openai.yaml +7 -0
  24. package/.agents/skills/atom-implement-code-change/skill.contract.yaml +26 -0
  25. package/.agents/skills/atom-organize-personal-tasks/SKILL.md +8 -0
  26. package/.agents/skills/atom-organize-personal-tasks/agents/openai.yaml +7 -0
  27. package/.agents/skills/atom-organize-personal-tasks/skill.contract.yaml +26 -0
  28. package/.agents/skills/atom-plan-code-change/SKILL.md +8 -0
  29. package/.agents/skills/atom-plan-code-change/agents/openai.yaml +7 -0
  30. package/.agents/skills/atom-plan-code-change/skill.contract.yaml +26 -0
  31. package/.agents/skills/atom-translate-document/SKILL.md +8 -0
  32. package/.agents/skills/atom-translate-document/agents/openai.yaml +7 -0
  33. package/.agents/skills/atom-translate-document/skill.contract.yaml +26 -0
  34. package/.agents/skills/category-automation-operations/SKILL.md +13 -0
  35. package/.agents/skills/category-automation-operations/agents/openai.yaml +7 -0
  36. package/.agents/skills/category-automation-operations/references/index.en.md +11 -0
  37. package/.agents/skills/category-automation-operations/references/index.md +11 -0
  38. package/.agents/skills/category-automation-operations/references/index.zh-CN.md +11 -0
  39. package/.agents/skills/category-automation-operations/references/index.zh.md +11 -0
  40. package/.agents/skills/category-automation-operations/skill.contract.yaml +26 -0
  41. package/.agents/skills/category-business-growth/SKILL.md +13 -0
  42. package/.agents/skills/category-business-growth/agents/openai.yaml +7 -0
  43. package/.agents/skills/category-business-growth/references/index.en.md +11 -0
  44. package/.agents/skills/category-business-growth/references/index.md +11 -0
  45. package/.agents/skills/category-business-growth/references/index.zh-CN.md +11 -0
  46. package/.agents/skills/category-business-growth/references/index.zh.md +11 -0
  47. package/.agents/skills/category-business-growth/skill.contract.yaml +26 -0
  48. package/.agents/skills/category-data-analytics/SKILL.md +13 -0
  49. package/.agents/skills/category-data-analytics/agents/openai.yaml +7 -0
  50. package/.agents/skills/category-data-analytics/references/index.en.md +11 -0
  51. package/.agents/skills/category-data-analytics/references/index.md +11 -0
  52. package/.agents/skills/category-data-analytics/references/index.zh-CN.md +11 -0
  53. package/.agents/skills/category-data-analytics/references/index.zh.md +11 -0
  54. package/.agents/skills/category-data-analytics/skill.contract.yaml +26 -0
  55. package/.agents/skills/category-design-media/SKILL.md +13 -0
  56. package/.agents/skills/category-design-media/agents/openai.yaml +7 -0
  57. package/.agents/skills/category-design-media/references/index.en.md +11 -0
  58. package/.agents/skills/category-design-media/references/index.md +11 -0
  59. package/.agents/skills/category-design-media/references/index.zh-CN.md +11 -0
  60. package/.agents/skills/category-design-media/references/index.zh.md +11 -0
  61. package/.agents/skills/category-design-media/skill.contract.yaml +26 -0
  62. package/.agents/skills/category-documents-communication/SKILL.md +13 -0
  63. package/.agents/skills/category-documents-communication/agents/openai.yaml +7 -0
  64. package/.agents/skills/category-documents-communication/references/index.en.md +11 -0
  65. package/.agents/skills/category-documents-communication/references/index.md +11 -0
  66. package/.agents/skills/category-documents-communication/references/index.zh-CN.md +11 -0
  67. package/.agents/skills/category-documents-communication/references/index.zh.md +11 -0
  68. package/.agents/skills/category-documents-communication/skill.contract.yaml +26 -0
  69. package/.agents/skills/category-personal-productivity/SKILL.md +13 -0
  70. package/.agents/skills/category-personal-productivity/agents/openai.yaml +7 -0
  71. package/.agents/skills/category-personal-productivity/references/index.en.md +11 -0
  72. package/.agents/skills/category-personal-productivity/references/index.md +11 -0
  73. package/.agents/skills/category-personal-productivity/references/index.zh-CN.md +11 -0
  74. package/.agents/skills/category-personal-productivity/references/index.zh.md +11 -0
  75. package/.agents/skills/category-personal-productivity/skill.contract.yaml +26 -0
  76. package/.agents/skills/category-research-knowledge/SKILL.md +13 -0
  77. package/.agents/skills/category-research-knowledge/agents/openai.yaml +7 -0
  78. package/.agents/skills/category-research-knowledge/references/index.en.md +14 -0
  79. package/.agents/skills/category-research-knowledge/references/index.md +14 -0
  80. package/.agents/skills/category-research-knowledge/references/index.zh-CN.md +14 -0
  81. package/.agents/skills/category-research-knowledge/references/index.zh.md +14 -0
  82. package/.agents/skills/category-research-knowledge/skill.contract.yaml +26 -0
  83. package/.agents/skills/category-security-trust/SKILL.md +13 -0
  84. package/.agents/skills/category-security-trust/agents/openai.yaml +7 -0
  85. package/.agents/skills/category-security-trust/references/index.en.md +11 -0
  86. package/.agents/skills/category-security-trust/references/index.md +11 -0
  87. package/.agents/skills/category-security-trust/references/index.zh-CN.md +11 -0
  88. package/.agents/skills/category-security-trust/references/index.zh.md +11 -0
  89. package/.agents/skills/category-security-trust/skill.contract.yaml +26 -0
  90. package/.agents/skills/category-skill-agent-governance/SKILL.md +13 -0
  91. package/.agents/skills/category-skill-agent-governance/agents/openai.yaml +7 -0
  92. package/.agents/skills/category-skill-agent-governance/references/index.en.md +11 -0
  93. package/.agents/skills/category-skill-agent-governance/references/index.md +11 -0
  94. package/.agents/skills/category-skill-agent-governance/references/index.zh-CN.md +11 -0
  95. package/.agents/skills/category-skill-agent-governance/references/index.zh.md +11 -0
  96. package/.agents/skills/category-skill-agent-governance/skill.contract.yaml +26 -0
  97. package/.agents/skills/category-software-engineering/SKILL.md +14 -0
  98. package/.agents/skills/category-software-engineering/agents/openai.yaml +7 -0
  99. package/.agents/skills/category-software-engineering/references/index.en.md +17 -0
  100. package/.agents/skills/category-software-engineering/references/index.md +17 -0
  101. package/.agents/skills/category-software-engineering/references/index.zh-CN.md +17 -0
  102. package/.agents/skills/category-software-engineering/references/index.zh.md +17 -0
  103. package/.agents/skills/category-software-engineering/skill.contract.yaml +26 -0
  104. package/.agents/skills/meta-skill-governor/SKILL.md +33 -0
  105. package/.agents/skills/meta-skill-governor/agents/openai.yaml +7 -0
  106. package/.agents/skills/meta-skill-governor/references/evolution-policy.en.md +8 -0
  107. package/.agents/skills/meta-skill-governor/references/evolution-policy.zh-CN.md +8 -0
  108. package/.agents/skills/meta-skill-governor/references/knowledge-policy.en.md +9 -0
  109. package/.agents/skills/meta-skill-governor/references/knowledge-policy.zh-CN.md +9 -0
  110. package/.agents/skills/meta-skill-governor/skill.contract.yaml +51 -0
  111. package/.codex-plugin/plugin.json +41 -0
  112. package/.skill-system/knowledge/index.md +8 -0
  113. package/.skill-system/knowledge/patterns/experience-insights-fragment-across-iterations.yaml +21 -0
  114. package/.skill-system/knowledge/patterns/long-horizon-history-obscures-current-state.yaml +21 -0
  115. package/CONTRIBUTING.md +51 -0
  116. package/LICENSE +201 -0
  117. package/README.md +176 -0
  118. package/README.zh-CN.md +176 -0
  119. package/SECURITY.md +24 -0
  120. package/THIRD_PARTY.md +23 -0
  121. package/catalog/decomposition-map.yaml +137 -0
  122. package/catalog/duplicate-clusters.yaml +60 -0
  123. package/catalog/entries/mcp-ac-inference-sh-mcp-b6adcacabe.yaml +31 -0
  124. package/catalog/entries/mcp-ac-tandem-docs-mcp-3bae5d0f2c.yaml +31 -0
  125. package/catalog/entries/mcp-ad-inside-inside-ads-eb6a3fc37c.yaml +31 -0
  126. package/catalog/entries/mcp-ae-propick-propick-43ddac803b.yaml +31 -0
  127. package/catalog/entries/mcp-ag-hood-name-service-31bc511aa8.yaml +31 -0
  128. package/catalog/entries/mcp-agency-goji-goji-7bfac3efd0.yaml +31 -0
  129. package/catalog/entries/mcp-agency-kesey-pretrip-c22b002385.yaml +31 -0
  130. package/catalog/entries/mcp-agency-lona-trading-5dee98bc05.yaml +31 -0
  131. package/catalog/entries/mcp-ai-1325-mcp-0a0c91e00f.yaml +31 -0
  132. package/catalog/entries/mcp-ai-aarna-atars-mcp-5da4791912.yaml +31 -0
  133. package/catalog/entries/mcp-ai-abmeter-abmeter-5207fe8f2e.yaml +31 -0
  134. package/catalog/entries/mcp-ai-actwise-ideation-d02d4f008a.yaml +31 -0
  135. package/catalog/entries/mcp-ai-adadvisor-mcp-server-a53afb4445.yaml +31 -0
  136. package/catalog/entries/mcp-ai-adeu-adeu-1631351397.yaml +28 -0
  137. package/catalog/entries/mcp-ai-adoraads-beauty-4a2ab953db.yaml +30 -0
  138. package/catalog/entries/mcp-ai-adplane-google-ads-e10978363f.yaml +31 -0
  139. package/catalog/entries/mcp-ai-adramp-google-ads-d80252c892.yaml +30 -0
  140. package/catalog/entries/mcp-ai-adside-adside-c8c4e070c3.yaml +31 -0
  141. package/catalog/entries/mcp-ai-advisorsai-service-navigator-63aa4ac793.yaml +30 -0
  142. package/catalog/entries/mcp-ai-advisorsai-store-readiness-45613bf2fa.yaml +31 -0
  143. package/catalog/entries/mcp-ai-adweave-meta-ads-mcp-0101481be2.yaml +31 -0
  144. package/catalog/entries/mcp-ai-aetherwealth-mcp-bb9db238f0.yaml +31 -0
  145. package/catalog/entries/mcp-ai-afmr-discovery-eae2af4a44.yaml +31 -0
  146. package/catalog/entries/mcp-ai-agentberg-agentberg-80d775bed8.yaml +31 -0
  147. package/catalog/entries/mcp-ai-agentdm-agentdm-e6f6c34b94.yaml +31 -0
  148. package/catalog/entries/mcp-ai-agentgates-mcp-c176ad8f95.yaml +31 -0
  149. package/catalog/entries/mcp-ai-agentic-news-mcp-28244bedf9.yaml +31 -0
  150. package/catalog/entries/mcp-ai-agenticaffiliate-affiliate-networks-mcp-8bfc8f7216.yaml +31 -0
  151. package/catalog/entries/mcp-ai-agenticfabricationnetwork-ufp-afacc64871.yaml +31 -0
  152. package/catalog/entries/mcp-ai-agenticshelf-graffeo-f44c7f89f4.yaml +31 -0
  153. package/catalog/entries/mcp-ai-agenticshelf-mcp-870c9513df.yaml +31 -0
  154. package/catalog/entries/mcp-ai-agenticshelf-puroair-82debfb17b.yaml +31 -0
  155. package/catalog/entries/mcp-ai-agenticterminal-directory-76d87e32de.yaml +31 -0
  156. package/catalog/entries/mcp-ai-agentlookups-counterscript-d6a5a3284e.yaml +31 -0
  157. package/catalog/entries/mcp-ai-agentlookups-greenlight-83112b87af.yaml +31 -0
  158. package/catalog/entries/mcp-ai-agentlookups-groundtruth-1b376d783a.yaml +31 -0
  159. package/catalog/entries/mcp-ai-agentlookups-overassessed-5a45cb34e3.yaml +31 -0
  160. package/catalog/entries/mcp-ai-agentlookups-plumbline-77624a96d7.yaml +31 -0
  161. package/catalog/entries/mcp-ai-agentmesh-mesh-75dca33317.yaml +31 -0
  162. package/catalog/entries/mcp-ai-agentplaybooks-agentplaybooks-2fe40cb4a3.yaml +31 -0
  163. package/catalog/entries/mcp-ai-agentrapay-agentra-90edd3fb9e.yaml +31 -0
  164. package/catalog/entries/mcp-ai-agentroam-agentroam-2cbeb20175.yaml +31 -0
  165. package/catalog/entries/mcp-ai-agenttrust-mcp-server-efd541bba9.yaml +31 -0
  166. package/catalog/entries/mcp-ai-agentutility-mcp-agentops-07df8fe089.yaml +31 -0
  167. package/catalog/entries/mcp-ai-agentutility-mcp-bestiary-aa18bb3a43.yaml +31 -0
  168. package/catalog/entries/mcp-ai-agentutility-mcp-browser-workflow-d744626520.yaml +31 -0
  169. package/catalog/entries/mcp-ai-agentutility-mcp-compose-d49e18f1cd.yaml +31 -0
  170. package/catalog/entries/mcp-ai-agentutility-mcp-edge-finance-010337be97.yaml +31 -0
  171. package/catalog/entries/mcp-ai-agentutility-mcp-edge-market-068d58f817.yaml +31 -0
  172. package/catalog/entries/mcp-ai-agentutility-mcp-locale-8045ed4cbd.yaml +31 -0
  173. package/catalog/entries/mcp-ai-agentutility-mcp-matchpoint-45fa97c0f7.yaml +31 -0
  174. package/catalog/entries/mcp-ai-agentutility-mcp-mediakit-b382f5cb85.yaml +31 -0
  175. package/catalog/entries/mcp-ai-agentutility-mcp-model-router-6a0c8b5fa0.yaml +31 -0
  176. package/catalog/entries/mcp-ai-agentutility-mcp-prooflayer-a743b0fd0f.yaml +31 -0
  177. package/catalog/entries/mcp-ai-agentutility-mcp-retail-f0cfe4dc13.yaml +31 -0
  178. package/catalog/entries/mcp-ai-agentutility-mcp-rollforge-7acb7531d6.yaml +31 -0
  179. package/catalog/entries/mcp-ai-agentutility-mcp-statline-877d688f3f.yaml +31 -0
  180. package/catalog/entries/mcp-ai-agentutility-mcp-synthforge-8c0099cc1d.yaml +31 -0
  181. package/catalog/entries/mcp-ai-agentutility-mcp-web-probe-a30080239c.yaml +31 -0
  182. package/catalog/entries/mcp-ai-agentutility-mcp-wordmint-9ee82067b0.yaml +31 -0
  183. package/catalog/entries/mcp-ai-agentxray-mcp-ac6097c8b2.yaml +31 -0
  184. package/catalog/entries/mcp-ai-ai-advisors-mcp-2bcc0caee4.yaml +31 -0
  185. package/catalog/entries/mcp-ai-ai-akari-agent-trust-receipt-bb42b7178e.yaml +30 -0
  186. package/catalog/entries/mcp-ai-ai-akari-one-minute-akari-774f223a5e.yaml +31 -0
  187. package/catalog/entries/mcp-ai-ai-portal-ai-portal-1bc8ab29f4.yaml +31 -0
  188. package/catalog/entries/mcp-ai-aient-mcp-cf749b9ec3.yaml +31 -0
  189. package/catalog/entries/mcp-ai-airshelf-catalog-88b9ace06e.yaml +31 -0
  190. package/catalog/entries/mcp-ai-aislabs-cve-056c9f9ecd.yaml +31 -0
  191. package/catalog/entries/mcp-ai-aislabs-gateway-0a742d578e.yaml +31 -0
  192. package/catalog/entries/mcp-ai-aislabs-recorder-751e651453.yaml +31 -0
  193. package/catalog/entries/mcp-ai-aivonic-mcp-a18409eb0d.yaml +31 -0
  194. package/catalog/entries/mcp-ai-aliengiraffe-spotdb-fd1c3a8a0a.yaml +30 -0
  195. package/catalog/entries/mcp-ai-alphacreek-alphacreek-mcp-906301974f.yaml +31 -0
  196. package/catalog/entries/mcp-ai-alpic-alpix-alpix-bff2c530dc.yaml +31 -0
  197. package/catalog/entries/mcp-ai-alpic-mcp-alpic-mcp-ed099c1a73.yaml +31 -0
  198. package/catalog/entries/mcp-ai-alpic-test-test-mcp-server-1d95a7e5df.yaml +26 -0
  199. package/catalog/entries/mcp-ai-ambix-ambix-b5f2bc32a9.yaml +31 -0
  200. package/catalog/entries/mcp-ai-analyticslegends-sap-analytics-d68f435298.yaml +31 -0
  201. package/catalog/entries/mcp-ai-ankimcp-anki-mcp-server-8c4905a2ec.yaml +31 -0
  202. package/catalog/entries/mcp-ai-ankimcp-anki-mcp-server-addon-afb23fd32d.yaml +31 -0
  203. package/catalog/entries/mcp-ai-anomalyarmor-armor-mcp-6a7a4cc65b.yaml +31 -0
  204. package/catalog/entries/mcp-ai-anzenna-anzenna-c86559579c.yaml +24 -0
  205. package/catalog/entries/mcp-ai-apithreshold-apithreshold-f198c02e7b.yaml +31 -0
  206. package/catalog/entries/mcp-ai-appdeploy-deploy-app-80a789e051.yaml +31 -0
  207. package/catalog/entries/mcp-ai-aqta-seal-e2aff621e4.yaml +31 -0
  208. package/catalog/entries/mcp-ai-arclan-registry-c66a22fedd.yaml +31 -0
  209. package/catalog/entries/mcp-ai-argushq-enforcement-database-b121ee5ed1.yaml +31 -0
  210. package/catalog/entries/mcp-ai-arketo-arketo-6c11b61abb.yaml +31 -0
  211. package/catalog/entries/mcp-ai-arpi-arpi-mcp-8eae56122c.yaml +31 -0
  212. package/catalog/entries/mcp-ai-artidrop-artidrop-674e83cb66.yaml +31 -0
  213. package/catalog/entries/mcp-ai-askline-askline-5d4d9b4647.yaml +30 -0
  214. package/catalog/entries/mcp-ai-askmiles-catalog-798eb615f9.yaml +31 -0
  215. package/catalog/entries/mcp-ai-assetlog-assetlog-fc37c33e93.yaml +31 -0
  216. package/catalog/entries/mcp-ai-astrofabric-mcp-886b459d7a.yaml +31 -0
  217. package/catalog/entries/mcp-ai-atdev-supershopping-162d06451b.yaml +25 -0
  218. package/catalog/entries/mcp-ai-atlaso-mcp-3a3eeebf0d.yaml +31 -0
  219. package/catalog/entries/mcp-ai-atlasverified-atlas-mcp-d2da1d9d5f.yaml +31 -0
  220. package/catalog/entries/mcp-ai-atlier-project-desk-7b04021a08.yaml +30 -0
  221. package/catalog/entries/mcp-ai-augmentev-paseo-81e2a22e42.yaml +31 -0
  222. package/catalog/entries/mcp-ai-augworlds-travel-world-88c002217a.yaml +31 -0
  223. package/catalog/entries/mcp-ai-auralogs-auralogs-9def507616.yaml +31 -0
  224. package/catalog/entries/mcp-ai-auteng-docs-c72dfb5787.yaml +31 -0
  225. package/catalog/entries/mcp-ai-auteng-mcp-f36fddef83.yaml +31 -0
  226. package/catalog/entries/mcp-ai-authoryze-authoryze-21ee2054c1.yaml +31 -0
  227. package/catalog/entries/mcp-ai-autoblocks-contextlayer-mcp-34e47d62ba.yaml +29 -0
  228. package/catalog/entries/mcp-ai-autoblocks-ctxl-f98ae285d7.yaml +29 -0
  229. package/catalog/entries/mcp-ai-autoblocks-ctxl-mcp-0da0c47515.yaml +29 -0
  230. package/catalog/entries/mcp-ai-autonomad-computeback-2fa30dfc41.yaml +31 -0
  231. package/catalog/entries/mcp-ai-autonomad-travel-fd4f8e76db.yaml +31 -0
  232. package/catalog/entries/mcp-ai-autoposting-autoposting-2571b1d7f6.yaml +31 -0
  233. package/catalog/entries/mcp-ai-autorfp-mcp-0c571be5ff.yaml +31 -0
  234. package/catalog/entries/mcp-ai-auxen-auxen-211902ee66.yaml +31 -0
  235. package/catalog/entries/mcp-ai-avasis-quant-research-219257c101.yaml +31 -0
  236. package/catalog/entries/mcp-ai-aviado-health-1ad88f7e27.yaml +31 -0
  237. package/catalog/entries/mcp-ai-awardcast-federal-contracts-2203406f23.yaml +31 -0
  238. package/catalog/entries/mcp-ai-awraiter-telegram-21e9913eb3.yaml +31 -0
  239. package/catalog/entries/mcp-ai-axonagentic-neuroautomata-7b27982df8.yaml +31 -0
  240. package/catalog/entries/mcp-ai-b77-ai-media-studio-7aa9f62440.yaml +30 -0
  241. package/catalog/entries/mcp-ai-b77-apple-search-ads-285b18c417.yaml +30 -0
  242. package/catalog/entries/mcp-ai-b77-chess-results-b56c1f38ce.yaml +30 -0
  243. package/catalog/entries/mcp-ai-b77-feedback-d3db0c4f28.yaml +31 -0
  244. package/catalog/entries/mcp-ai-b77-fibalo-0a70b165b3.yaml +31 -0
  245. package/catalog/entries/mcp-ai-b77-file-storage-1da70125c0.yaml +30 -0
  246. package/catalog/entries/mcp-ai-b77-google-ads-48b7ac9681.yaml +30 -0
  247. package/catalog/entries/mcp-ai-b77-google-news-bb8d81deed.yaml +30 -0
  248. package/catalog/entries/mcp-ai-b77-google-search-console-baae2179a8.yaml +30 -0
  249. package/catalog/entries/mcp-ai-b77-kinnovis-storage-b2dd7cc4de.yaml +30 -0
  250. package/catalog/entries/mcp-ai-b77-knowledge-base-d839be07f4.yaml +30 -0
  251. package/catalog/entries/mcp-ai-b77-nightscout-197ba46f20.yaml +28 -0
  252. package/catalog/entries/mcp-ai-b77-seo-content-factory-91c8041502.yaml +30 -0
  253. package/catalog/entries/mcp-ai-b77-teamwork-6ee8e24f83.yaml +31 -0
  254. package/catalog/entries/mcp-ai-b77-time-f9803006c8.yaml +28 -0
  255. package/catalog/entries/mcp-ai-b77-web-analytics-a43f062fda.yaml +30 -0
  256. package/catalog/entries/mcp-ai-backengine-backengine-mcp-4ca2a1517c.yaml +31 -0
  257. package/catalog/entries/mcp-ai-bankee-inferventis-mcp-72a4d2e3cb.yaml +31 -0
  258. package/catalog/entries/mcp-ai-bareun-bareun-eb1ae606d0.yaml +31 -0
  259. package/catalog/entries/mcp-ai-baselight-baselight-d746920ec9.yaml +31 -0
  260. package/catalog/entries/mcp-ai-basethread-basethread-6eee1c4f16.yaml +31 -0
  261. package/catalog/entries/mcp-ai-bassethound-bassethound-865f9bea9c.yaml +31 -0
  262. package/catalog/entries/mcp-ai-beatbandit-beatbandit-ed4479bf19.yaml +31 -0
  263. package/catalog/entries/mcp-ai-beket-audit-314af0ab54.yaml +30 -0
  264. package/catalog/entries/mcp-ai-benroberts-b4-index-d54db8bc51.yaml +31 -0
  265. package/catalog/entries/mcp-ai-betslipdoctor-mcp-e7026e76d4.yaml +31 -0
  266. package/catalog/entries/mcp-ai-betterpost-server-7b0a39a00b.yaml +31 -0
  267. package/catalog/entries/mcp-ai-bezal-local-commerce-beb84c948c.yaml +31 -0
  268. package/catalog/entries/mcp-ai-bidclub-bidclub-6842f2ee71.yaml +31 -0
  269. package/catalog/entries/mcp-ai-biddeed-biddeed-mcp-7be8a7f9fb.yaml +30 -0
  270. package/catalog/entries/mcp-ai-biel-biel-ai-0211ef62cd.yaml +31 -0
  271. package/catalog/entries/mcp-ai-bitroad-bitroad-710a3c7b6c.yaml +31 -0
  272. package/catalog/entries/mcp-ai-bittlebits-bittlebits-6157ecfeb8.yaml +30 -0
  273. package/catalog/entries/mcp-ai-bizmuse-bizmuse-75f1a4f237.yaml +31 -0
  274. package/catalog/entries/mcp-ai-blast-radius-blast-radius-f3a4a81333.yaml +30 -0
  275. package/catalog/entries/mcp-ai-bloopo-bloopo-3716a26ca3.yaml +31 -0
  276. package/catalog/entries/mcp-ai-blopus-search-c70c643cf9.yaml +31 -0
  277. package/catalog/entries/mcp-ai-bluenexus-universal-mcp-216e83342b.yaml +31 -0
  278. package/catalog/entries/mcp-ai-bodenrichtwert-mcp-c23a1a6334.yaml +31 -0
  279. package/catalog/entries/mcp-ai-bolthub-mcp-5444c0b8c3.yaml +31 -0
  280. package/catalog/entries/mcp-ai-bolthub-registry-f98764ff73.yaml +31 -0
  281. package/catalog/entries/mcp-ai-boolsai-directory-b7e9358f7d.yaml +31 -0
  282. package/catalog/entries/mcp-ai-boolsai-grep-1a53f448ec.yaml +31 -0
  283. package/catalog/entries/mcp-ai-boolsai-scan-772fc95b70.yaml +31 -0
  284. package/catalog/entries/mcp-ai-boolsai-signals-25961908a5.yaml +31 -0
  285. package/catalog/entries/mcp-ai-borealhost-mcp-fca92ed080.yaml +31 -0
  286. package/catalog/entries/mcp-ai-boundaryai-boundaryai-84000bf03e.yaml +31 -0
  287. package/catalog/entries/mcp-ai-bourdon-bourdon-9bace4c1b0.yaml +31 -0
  288. package/catalog/entries/mcp-ai-bowmark-bowmark-630bb0e23e.yaml +31 -0
  289. package/catalog/entries/mcp-ai-brainattic-knowledge-base-b32a0dad0a.yaml +31 -0
  290. package/catalog/entries/mcp-ai-bridgeapp-bridgeapp-fab6f43c5f.yaml +30 -0
  291. package/catalog/entries/mcp-ai-bringyour-bringyour-29452d98e8.yaml +30 -0
  292. package/catalog/entries/mcp-ai-buildwithorbit-orbit-c2daf0d007.yaml +31 -0
  293. package/catalog/entries/mcp-ai-bunzee-bunzee-290d65efec.yaml +31 -0
  294. package/catalog/entries/mcp-ai-buron-buron-1225a2334c.yaml +31 -0
  295. package/catalog/entries/mcp-ai-butlerbrain-mcp-5d58e03a33.yaml +31 -0
  296. package/catalog/entries/mcp-ai-buyersense-buyersense-234013e296.yaml +30 -0
  297. package/catalog/entries/mcp-ai-buywhere-buywhere-mcp-b75038efa4.yaml +31 -0
  298. package/catalog/entries/mcp-ai-buywhere-catalog-api-17fcd43b5f.yaml +30 -0
  299. package/catalog/entries/mcp-ai-byteask-embedded-docs-32de7a43d8.yaml +31 -0
  300. package/catalog/entries/mcp-ai-byteray-byteray-mcp-5fd4e1d3b4.yaml +31 -0
  301. package/catalog/entries/mcp-ai-cabrini-market-data-53fdcb3017.yaml +31 -0
  302. package/catalog/entries/mcp-ai-cactal-cactal-d94ff6bdd2.yaml +31 -0
  303. package/catalog/entries/mcp-ai-calaf-calaf-fd4bd862e1.yaml +31 -0
  304. package/catalog/entries/mcp-ai-calaf-seeds-c5b1e16f43.yaml +31 -0
  305. package/catalog/entries/mcp-ai-calendarmcp-server-f8ab5b3489.yaml +31 -0
  306. package/catalog/entries/mcp-ai-calfeed-calfeed-0c6423bdfd.yaml +31 -0
  307. package/catalog/entries/mcp-ai-callmcp-server-c2cc664837.yaml +31 -0
  308. package/catalog/entries/mcp-ai-canaryusers-canaryusers-702fff39f7.yaml +31 -0
  309. package/catalog/entries/mcp-ai-canivibe-status-bdff671da8.yaml +31 -0
  310. package/catalog/entries/mcp-ai-canvora-canvora-524200dc0d.yaml +31 -0
  311. package/catalog/entries/mcp-ai-caulo-caulo-a5d940cb83.yaml +31 -0
  312. package/catalog/entries/mcp-ai-ccapi-mcp-fdb7488acf.yaml +31 -0
  313. package/catalog/entries/mcp-ai-cdbx-mcp-server-73db0c0bdd.yaml +31 -0
  314. package/catalog/entries/mcp-ai-cerebrium-docs-f7b8d89e48.yaml +31 -0
  315. package/catalog/entries/mcp-ai-certscore-mcp-132e02917f.yaml +31 -0
  316. package/catalog/entries/mcp-ai-certscore-mcp-light-a9017fc871.yaml +31 -0
  317. package/catalog/entries/mcp-ai-chatthing-chat-thing-f1e4eefd3d.yaml +31 -0
  318. package/catalog/entries/mcp-ai-childadhd-library-026efbd0ff.yaml +31 -0
  319. package/catalog/entries/mcp-ai-childanxiety-library-08a2dc2f87.yaml +30 -0
  320. package/catalog/entries/mcp-ai-childpsychiatry-library-f202ddf6ac.yaml +31 -0
  321. package/catalog/entries/mcp-ai-chinamarketing-intelligence-694653c3c9.yaml +31 -0
  322. package/catalog/entries/mcp-ai-chronary-mcp-fb467aad4c.yaml +31 -0
  323. package/catalog/entries/mcp-ai-circulara-plugin-004d5ac458.yaml +31 -0
  324. package/catalog/entries/mcp-ai-cirra-salesforce-mcp-18d52b8696.yaml +29 -0
  325. package/catalog/entries/mcp-ai-citybook-citybook-a8d1e17475.yaml +28 -0
  326. package/catalog/entries/mcp-ai-clarid-compliance-4e75eca3db.yaml +31 -0
  327. package/catalog/entries/mcp-ai-clarid-hmda-f7aabbdd0d.yaml +31 -0
  328. package/catalog/entries/mcp-ai-clarx-mcp-161b5b3353.yaml +31 -0
  329. package/catalog/entries/mcp-ai-clawfetch-mcp-6740eb688b.yaml +31 -0
  330. package/catalog/entries/mcp-ai-clawterminal-markets-75e36c2a5d.yaml +31 -0
  331. package/catalog/entries/mcp-ai-cleanvector-cleanvector-6a4abff345.yaml +31 -0
  332. package/catalog/entries/mcp-ai-clelp-clelp-d342badb89.yaml +31 -0
  333. package/catalog/entries/mcp-ai-clize-clize-aaf88976e5.yaml +31 -0
  334. package/catalog/entries/mcp-ai-clize-domains-699897fd26.yaml +31 -0
  335. package/catalog/entries/mcp-ai-clize-inbox-1916ec4593.yaml +31 -0
  336. package/catalog/entries/mcp-ai-clize-sites-0e268c46f9.yaml +31 -0
  337. package/catalog/entries/mcp-ai-clize-storefront-060b401d5a.yaml +31 -0
  338. package/catalog/entries/mcp-ai-cnaps-studio-ca672869c9.yaml +31 -0
  339. package/catalog/entries/mcp-ai-cobbles-cobbles-1172c28d67.yaml +31 -0
  340. package/catalog/entries/mcp-ai-codenib-codenib-6fbef32c28.yaml +31 -0
  341. package/catalog/entries/mcp-ai-cofoundagent-cofound-df3011d64e.yaml +31 -0
  342. package/catalog/entries/mcp-ai-com-mcp-contabo-9a82c85196.yaml +31 -0
  343. package/catalog/entries/mcp-ai-com-mcp-hapi-mcp-136ca2cac0.yaml +31 -0
  344. package/catalog/entries/mcp-ai-com-mcp-lenny-rachitsky-podcast-35ae908366.yaml +31 -0
  345. package/catalog/entries/mcp-ai-com-mcp-linkedin-a9bc400703.yaml +31 -0
  346. package/catalog/entries/mcp-ai-com-mcp-openai-tools-db0ce12532.yaml +31 -0
  347. package/catalog/entries/mcp-ai-com-mcp-petstore-b78d7f6c89.yaml +31 -0
  348. package/catalog/entries/mcp-ai-com-mcp-registry-f1d343d400.yaml +31 -0
  349. package/catalog/entries/mcp-ai-com-mcp-skills-search-79219da9eb.yaml +31 -0
  350. package/catalog/entries/mcp-ai-com-mcp-strava-180cf00bdb.yaml +31 -0
  351. package/catalog/entries/mcp-ai-compeller-compel-a1e264a179.yaml +30 -0
  352. package/catalog/entries/mcp-ai-complyme-mcp-mcp-58b3074412.yaml +30 -0
  353. package/catalog/entries/mcp-ai-connectmachine-connectmachine-82362374a8.yaml +31 -0
  354. package/catalog/entries/mcp-ai-constellationfinance-constellation-finance-mcp-6fc46c7edd.yaml +31 -0
  355. package/catalog/entries/mcp-ai-contextstudios-mcp-9ed0f7ffab.yaml +31 -0
  356. package/catalog/entries/mcp-ai-contio-meetingos-1ccb97c854.yaml +31 -0
  357. package/catalog/entries/mcp-ai-contractorsnearme-contractors-near-me-ca54453db5.yaml +31 -0
  358. package/catalog/entries/mcp-ai-conveo-conveo-6472ce5a89.yaml +31 -0
  359. package/catalog/entries/mcp-ai-cookiy-cookiy-f8828b0fb6.yaml +31 -0
  360. package/catalog/entries/mcp-ai-corduroy-labs-updates-0c456eae82.yaml +31 -0
  361. package/catalog/entries/mcp-ai-cosmonote-notes-bc375a4ed2.yaml +30 -0
  362. package/catalog/entries/mcp-ai-cralo-mcp-0e5b0d1a39.yaml +31 -0
  363. package/catalog/entries/mcp-ai-craneledger-crane-ledger-d646b9a28f.yaml +31 -0
  364. package/catalog/entries/mcp-ai-crayonz-mcp-c8ae9a9d95.yaml +31 -0
  365. package/catalog/entries/mcp-ai-createprints-createprints-9d22a6277d.yaml +30 -0
  366. package/catalog/entries/mcp-ai-creationloop-creationloop-bde8df0701.yaml +31 -0
  367. package/catalog/entries/mcp-ai-creativescope-creative-intelligence-bbf2764352.yaml +31 -0
  368. package/catalog/entries/mcp-ai-creditpolicy-creditpolicy-dbae3fa16b.yaml +31 -0
  369. package/catalog/entries/mcp-ai-cueapi-mcp-9304c6d8a9.yaml +31 -0
  370. package/catalog/entries/mcp-ai-cueframe-cueframe-a9d2c8e9d7.yaml +31 -0
  371. package/catalog/entries/mcp-ai-customdomain-mcp-fe8191c4a2.yaml +31 -0
  372. package/catalog/entries/mcp-ai-d50-d50-platform-18b3461ccd.yaml +31 -0
  373. package/catalog/entries/mcp-ai-dablock-visibility-index-0aebb7e78b.yaml +31 -0
  374. package/catalog/entries/mcp-ai-dabyte-visibility-index-331da601b3.yaml +31 -0
  375. package/catalog/entries/mcp-ai-dataecho-mcp-622ca8750d.yaml +31 -0
  376. package/catalog/entries/mcp-ai-dataforb2b-dataforb2b-1628d1a91b.yaml +31 -0
  377. package/catalog/entries/mcp-ai-datamerge-mcp-e376bb5915.yaml +31 -0
  378. package/catalog/entries/mcp-ai-dataparrot-data-parrot-d05fa67093.yaml +30 -0
  379. package/catalog/entries/mcp-ai-dealfilter-mcp-f21a69323a.yaml +31 -0
  380. package/catalog/entries/mcp-ai-decimal-registry-112ce7f87c.yaml +31 -0
  381. package/catalog/entries/mcp-ai-decisionlog-mcp-aba2e32541.yaml +31 -0
  382. package/catalog/entries/mcp-ai-deepledger-mcp-aa590d7654.yaml +30 -0
  383. package/catalog/entries/mcp-ai-deinai-creator-skill-c1e1930262.yaml +31 -0
  384. package/catalog/entries/mcp-ai-deinai-creator-skill-v2-d6297b831c.yaml +31 -0
  385. package/catalog/entries/mcp-ai-delega-aws-pricing-calculator-29b014d6d7.yaml +30 -0
  386. package/catalog/entries/mcp-ai-demanddiscovery-mcp-2723f1f9c7.yaml +31 -0
  387. package/catalog/entries/mcp-ai-demomagic-interactive-video-guide-dcbad6c4da.yaml +31 -0
  388. package/catalog/entries/mcp-ai-deployit-product-expert-79d7d90c8a.yaml +31 -0
  389. package/catalog/entries/mcp-ai-deskcrew-agentic-1130b5617b.yaml +31 -0
  390. package/catalog/entries/mcp-ai-diagramzu-mcp-bd000b341e.yaml +31 -0
  391. package/catalog/entries/mcp-ai-diezx-diezx-197d544369.yaml +31 -0
  392. package/catalog/entries/mcp-ai-dimetrics-dimetrics-e36a3e6ba5.yaml +31 -0
  393. package/catalog/entries/skill-addyosmani-agent-skills-api-and-interface-design-65b474ac.yaml +27 -0
  394. package/catalog/entries/skill-addyosmani-agent-skills-browser-testing-with-devtools-dd63dad0.yaml +27 -0
  395. package/catalog/entries/skill-addyosmani-agent-skills-ci-cd-and-automation-29d0cc8a.yaml +27 -0
  396. package/catalog/entries/skill-addyosmani-agent-skills-code-review-and-quality-8d6e0e88.yaml +27 -0
  397. package/catalog/entries/skill-addyosmani-agent-skills-code-simplification-833b3a18.yaml +25 -0
  398. package/catalog/entries/skill-addyosmani-agent-skills-constraint-driven-development-2b4b375e.yaml +26 -0
  399. package/catalog/entries/skill-addyosmani-agent-skills-context-engineering-5edbe017.yaml +25 -0
  400. package/catalog/entries/skill-addyosmani-agent-skills-debugging-and-error-recovery-ae9aa99b.yaml +27 -0
  401. package/catalog/entries/skill-addyosmani-agent-skills-deprecation-and-migration-def7d06a.yaml +26 -0
  402. package/catalog/entries/skill-addyosmani-agent-skills-documentation-and-adrs-ed3b9c00.yaml +26 -0
  403. package/catalog/entries/skill-addyosmani-agent-skills-doubt-driven-development-83118a85.yaml +26 -0
  404. package/catalog/entries/skill-addyosmani-agent-skills-frontend-ui-engineering-f0609dae.yaml +26 -0
  405. package/catalog/entries/skill-addyosmani-agent-skills-git-workflow-and-versioning-d65e8017.yaml +27 -0
  406. package/catalog/entries/skill-addyosmani-agent-skills-idea-refine-eceb122f.yaml +25 -0
  407. package/catalog/entries/skill-addyosmani-agent-skills-incremental-implementation-99c73b0d.yaml +25 -0
  408. package/catalog/entries/skill-addyosmani-agent-skills-interview-me-58c1b225.yaml +25 -0
  409. package/catalog/entries/skill-addyosmani-agent-skills-observability-and-instrumentation-559214ec.yaml +26 -0
  410. package/catalog/entries/skill-addyosmani-agent-skills-performance-optimization-af6981a8.yaml +25 -0
  411. package/catalog/entries/skill-addyosmani-agent-skills-planning-and-task-breakdown-1cb74a63.yaml +27 -0
  412. package/catalog/entries/skill-addyosmani-agent-skills-security-and-hardening-83fd3dea.yaml +26 -0
  413. package/catalog/entries/skill-addyosmani-agent-skills-shipping-and-launch-33c7cc7c.yaml +26 -0
  414. package/catalog/entries/skill-addyosmani-agent-skills-source-driven-development-d38acc33.yaml +26 -0
  415. package/catalog/entries/skill-addyosmani-agent-skills-spec-driven-development-06312522.yaml +26 -0
  416. package/catalog/entries/skill-addyosmani-agent-skills-test-driven-development-c7103f5a.yaml +26 -0
  417. package/catalog/entries/skill-addyosmani-agent-skills-using-agent-skills-175751a3.yaml +26 -0
  418. package/catalog/entries/skill-anthropics-skills-academy-guide-4a0f6b73.yaml +25 -0
  419. package/catalog/entries/skill-anthropics-skills-algorithmic-art-a571c945.yaml +25 -0
  420. package/catalog/entries/skill-anthropics-skills-brand-guidelines-e7b91ca4.yaml +25 -0
  421. package/catalog/entries/skill-anthropics-skills-canvas-design-12d74bd3.yaml +25 -0
  422. package/catalog/entries/skill-anthropics-skills-claude-api-82d3ad6f.yaml +25 -0
  423. package/catalog/entries/skill-anthropics-skills-discernment-nudge-e073654c.yaml +25 -0
  424. package/catalog/entries/skill-anthropics-skills-doc-coauthoring-e7cc23e0.yaml +25 -0
  425. package/catalog/entries/skill-anthropics-skills-docx-6db5d745.yaml +24 -0
  426. package/catalog/entries/skill-anthropics-skills-frontend-design-29ad32fd.yaml +25 -0
  427. package/catalog/entries/skill-anthropics-skills-internal-comms-d39c34fb.yaml +25 -0
  428. package/catalog/entries/skill-anthropics-skills-mcp-builder-d3eb5962.yaml +25 -0
  429. package/catalog/entries/skill-anthropics-skills-pdf-28eceb6b.yaml +24 -0
  430. package/catalog/entries/skill-anthropics-skills-pptx-c294bc82.yaml +24 -0
  431. package/catalog/entries/skill-anthropics-skills-skill-creator-af6ef02d.yaml +25 -0
  432. package/catalog/entries/skill-anthropics-skills-slack-gif-creator-f9e00a0f.yaml +26 -0
  433. package/catalog/entries/skill-anthropics-skills-template-25b4c198.yaml +24 -0
  434. package/catalog/entries/skill-anthropics-skills-theme-factory-517caeb9.yaml +25 -0
  435. package/catalog/entries/skill-anthropics-skills-web-artifacts-builder-e8f27114.yaml +26 -0
  436. package/catalog/entries/skill-anthropics-skills-webapp-testing-395b4804.yaml +25 -0
  437. package/catalog/entries/skill-anthropics-skills-xlsx-657c7b90.yaml +24 -0
  438. package/catalog/entries/skill-cloudflare-skills-agents-sdk-6931a5bf.yaml +25 -0
  439. package/catalog/entries/skill-cloudflare-skills-cloudflare-5759d8b3.yaml +24 -0
  440. package/catalog/entries/skill-cloudflare-skills-cloudflare-email-service-1888d794.yaml +26 -0
  441. package/catalog/entries/skill-cloudflare-skills-cloudflare-one-fde14a48.yaml +25 -0
  442. package/catalog/entries/skill-cloudflare-skills-cloudflare-one-migrations-8d56ee7c.yaml +26 -0
  443. package/catalog/entries/skill-cloudflare-skills-durable-objects-b5bae60f.yaml +25 -0
  444. package/catalog/entries/skill-cloudflare-skills-sandbox-migrate-to-next-72ea7992.yaml +27 -0
  445. package/catalog/entries/skill-cloudflare-skills-sandbox-next-e0a82b91.yaml +25 -0
  446. package/catalog/entries/skill-cloudflare-skills-sandbox-stable-8cb34541.yaml +25 -0
  447. package/catalog/entries/skill-cloudflare-skills-turnstile-spin-256918a6.yaml +25 -0
  448. package/catalog/entries/skill-cloudflare-skills-web-perf-3ec9d676.yaml +25 -0
  449. package/catalog/entries/skill-cloudflare-skills-workers-best-practices-b324cea6.yaml +26 -0
  450. package/catalog/entries/skill-cloudflare-skills-wrangler-aa8ec8c6.yaml +24 -0
  451. package/catalog/entries/skill-getsentry-skills-agents-md-294438b5.yaml +25 -0
  452. package/catalog/entries/skill-getsentry-skills-blog-writing-guide-e65bcce7.yaml +26 -0
  453. package/catalog/entries/skill-getsentry-skills-brand-guidelines-15586a99.yaml +25 -0
  454. package/catalog/entries/skill-getsentry-skills-claude-settings-audit-8678fbac.yaml +26 -0
  455. package/catalog/entries/skill-getsentry-skills-code-review-6d72fca3.yaml +25 -0
  456. package/catalog/entries/skill-getsentry-skills-code-simplifier-87bed2ab.yaml +25 -0
  457. package/catalog/entries/skill-getsentry-skills-commit-a42b87ee.yaml +24 -0
  458. package/catalog/entries/skill-getsentry-skills-create-branch-8382885d.yaml +25 -0
  459. package/catalog/entries/skill-getsentry-skills-django-access-review-9a030f93.yaml +26 -0
  460. package/catalog/entries/skill-getsentry-skills-django-perf-review-50f32244.yaml +26 -0
  461. package/catalog/entries/skill-getsentry-skills-doc-coauthoring-db52e2c5.yaml +25 -0
  462. package/catalog/entries/skill-getsentry-skills-document-api-endpoint-c99d0c76.yaml +26 -0
  463. package/catalog/entries/skill-getsentry-skills-find-bugs-8bb54a98.yaml +25 -0
  464. package/catalog/entries/skill-getsentry-skills-gh-review-requests-e4bfdb8e.yaml +26 -0
  465. package/catalog/entries/skill-getsentry-skills-gha-security-review-3dee4c96.yaml +26 -0
  466. package/catalog/entries/skill-getsentry-skills-iterate-pr-1fbe68e9.yaml +25 -0
  467. package/catalog/entries/skill-getsentry-skills-pr-link-issue-a2a66882.yaml +26 -0
  468. package/catalog/entries/skill-getsentry-skills-pr-writer-1cf9cb0b.yaml +25 -0
  469. package/catalog/entries/skill-getsentry-skills-presentation-creator-14afb03b.yaml +25 -0
  470. package/catalog/entries/skill-getsentry-skills-prompt-optimizer-d6cf95b0.yaml +25 -0
  471. package/catalog/entries/skill-getsentry-skills-security-review-3bf92664.yaml +25 -0
  472. package/catalog/entries/skill-getsentry-skills-skill-scanner-48a15757.yaml +25 -0
  473. package/catalog/entries/skill-getsentry-skills-skill-writer-0781b064.yaml +25 -0
  474. package/catalog/entries/skill-getsentry-skills-sred-project-organizer-76235f12.yaml +26 -0
  475. package/catalog/entries/skill-getsentry-skills-sred-work-summary-083be76c.yaml +26 -0
  476. package/catalog/entries/skill-getsentry-skills-triage-frontend-issues-dd2eade8.yaml +26 -0
  477. package/catalog/entries/skill-getsentry-skills-typing-exclusion-worker-217be976.yaml +26 -0
  478. package/catalog/entries/skill-gohypergiant-agent-skills-accelint-ac-to-playwright-bdb2b494.yaml +27 -0
  479. package/catalog/entries/skill-gohypergiant-agent-skills-accelint-architecture-doc-ec6b44b0.yaml +26 -0
  480. package/catalog/entries/skill-gohypergiant-agent-skills-accelint-archive-synthesis-d914edcb.yaml +26 -0
  481. package/catalog/entries/skill-gohypergiant-agent-skills-accelint-design-foundation-89547031.yaml +26 -0
  482. package/catalog/entries/skill-gohypergiant-agent-skills-accelint-english-manager-42c5f948.yaml +26 -0
  483. package/catalog/entries/skill-gohypergiant-agent-skills-accelint-eval-architect-f877e92f.yaml +26 -0
  484. package/catalog/entries/skill-gohypergiant-agent-skills-accelint-nextjs-best-practices-8ed21008.yaml +27 -0
  485. package/catalog/entries/skill-gohypergiant-agent-skills-accelint-onboard-agent-195bc995.yaml +26 -0
  486. package/catalog/entries/skill-gohypergiant-agent-skills-accelint-onboard-openspec-21a87817.yaml +26 -0
  487. package/catalog/entries/skill-gohypergiant-agent-skills-accelint-persona-review-10afdef2.yaml +26 -0
  488. package/catalog/entries/skill-gohypergiant-agent-skills-accelint-prompt-manager-d393e01f.yaml +26 -0
  489. package/catalog/entries/skill-gohypergiant-agent-skills-accelint-qrspi-apply-95707a25.yaml +26 -0
  490. package/catalog/entries/skill-gohypergiant-agent-skills-accelint-qrspi-archive-57ecc157.yaml +26 -0
  491. package/catalog/entries/skill-gohypergiant-agent-skills-accelint-qrspi-propose-e9434f7b.yaml +26 -0
  492. package/catalog/entries/skill-gohypergiant-agent-skills-accelint-react-best-practices-4305c39e.yaml +27 -0
  493. package/catalog/entries/skill-gohypergiant-agent-skills-accelint-react-testing-db6bb72b.yaml +26 -0
  494. package/catalog/entries/skill-gohypergiant-agent-skills-accelint-readme-writer-8c5ca939.yaml +26 -0
  495. package/catalog/entries/skill-gohypergiant-agent-skills-accelint-security-best-practices-7efbbfd2.yaml +27 -0
  496. package/catalog/entries/skill-gohypergiant-agent-skills-accelint-skill-manager-7a32f482.yaml +26 -0
  497. package/catalog/entries/skill-gohypergiant-agent-skills-accelint-skill-prose-b5577746.yaml +26 -0
  498. package/catalog/entries/skill-gohypergiant-agent-skills-accelint-tanstack-query-best-practices-0d0047d2.yaml +29 -0
  499. package/catalog/entries/skill-gohypergiant-agent-skills-accelint-ts-audit-all-c171bd07.yaml +27 -0
  500. package/catalog/entries/skill-gohypergiant-agent-skills-accelint-ts-best-practices-9420590b.yaml +27 -0
  501. package/catalog/entries/skill-gohypergiant-agent-skills-accelint-ts-documentation-2d27b7d5.yaml +26 -0
  502. package/catalog/entries/skill-gohypergiant-agent-skills-accelint-ts-performance-d2b5639a.yaml +26 -0
  503. package/catalog/entries/skill-gohypergiant-agent-skills-accelint-ts-testing-6274ac07.yaml +26 -0
  504. package/catalog/entries/skill-gohypergiant-agent-skills-constraints-extractor-e1676e8c.yaml +25 -0
  505. package/catalog/entries/skill-gohypergiant-agent-skills-epistemic-mapper-dda4b452.yaml +25 -0
  506. package/catalog/entries/skill-gohypergiant-agent-skills-generate-docs-a046cde5.yaml +25 -0
  507. package/catalog/entries/skill-gohypergiant-agent-skills-jargon-extractor-bdb16b85.yaml +25 -0
  508. package/catalog/entries/skill-gohypergiant-agent-skills-skill-template-103cf996.yaml +25 -0
  509. package/catalog/entries/skill-huggingface-skills-hf-cli-98d6313e.yaml +25 -0
  510. package/catalog/entries/skill-huggingface-skills-hf-cloud-aws-context-discovery-65784bf2.yaml +28 -0
  511. package/catalog/entries/skill-huggingface-skills-hf-cloud-python-env-setup-f1aebda9.yaml +28 -0
  512. package/catalog/entries/skill-huggingface-skills-hf-cloud-sagemaker-deployment-planner-9dee7914.yaml +28 -0
  513. package/catalog/entries/skill-huggingface-skills-hf-cloud-sagemaker-iam-preflight-dc0c97d7.yaml +28 -0
  514. package/catalog/entries/skill-huggingface-skills-hf-cloud-sagemaker-production-defaults-9b7b9d82.yaml +28 -0
  515. package/catalog/entries/skill-huggingface-skills-hf-cloud-serving-image-selection-0cc2c782.yaml +28 -0
  516. package/catalog/entries/skill-huggingface-skills-hf-mcp-41589578.yaml +25 -0
  517. package/catalog/entries/skill-huggingface-skills-hf-mem-0610b283.yaml +25 -0
  518. package/catalog/entries/skill-huggingface-skills-huggingface-best-fdc7282c.yaml +25 -0
  519. package/catalog/entries/skill-huggingface-skills-huggingface-community-evals-973f05c4.yaml +26 -0
  520. package/catalog/entries/skill-huggingface-skills-huggingface-datasets-4ba0f4d6.yaml +25 -0
  521. package/catalog/entries/skill-huggingface-skills-huggingface-gradio-53622b64.yaml +25 -0
  522. package/catalog/entries/skill-huggingface-skills-huggingface-llm-trainer-0a5ac169.yaml +26 -0
  523. package/catalog/entries/skill-huggingface-skills-huggingface-local-models-4ebc737c.yaml +26 -0
  524. package/catalog/entries/skill-huggingface-skills-huggingface-lora-space-builder-f34f1272.yaml +27 -0
  525. package/catalog/entries/skill-huggingface-skills-huggingface-paper-publisher-6b74ec66.yaml +26 -0
  526. package/catalog/entries/skill-huggingface-skills-huggingface-papers-08cc9c02.yaml +25 -0
  527. package/catalog/entries/skill-huggingface-skills-huggingface-spaces-2c1970dd.yaml +25 -0
  528. package/catalog/entries/skill-huggingface-skills-huggingface-tool-builder-6cf60271.yaml +26 -0
  529. package/catalog/entries/skill-huggingface-skills-huggingface-trackio-7e2c47f9.yaml +25 -0
  530. package/catalog/entries/skill-huggingface-skills-huggingface-vision-trainer-0a5a93ae.yaml +26 -0
  531. package/catalog/entries/skill-huggingface-skills-huggingface-zerogpu-5aac00ea.yaml +25 -0
  532. package/catalog/entries/skill-huggingface-skills-train-sentence-transformers-40c8f1df.yaml +26 -0
  533. package/catalog/entries/skill-huggingface-skills-transformers-js-0bf5582b.yaml +25 -0
  534. package/catalog/entries/skill-huggingface-skills-trl-training-3042027e.yaml +25 -0
  535. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-adaptyv-b95263f9.yaml +24 -0
  536. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-aeon-d84f19c5.yaml +24 -0
  537. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-analytical-method-validation-7a1207b7.yaml +27 -0
  538. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-anndata-59be659e.yaml +24 -0
  539. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-arbor-463bc999.yaml +24 -0
  540. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-arboreto-23080519.yaml +24 -0
  541. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-astropy-02105779.yaml +24 -0
  542. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-autoskill-aada94ff.yaml +24 -0
  543. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-benchling-integration-ba42906f.yaml +25 -0
  544. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-bgpt-paper-search-97bc8469.yaml +26 -0
  545. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-bids-1368af54.yaml +24 -0
  546. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-biopython-cd70080b.yaml +24 -0
  547. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-bioservices-daa392bb.yaml +24 -0
  548. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-bulk-rnaseq-76d2f820.yaml +25 -0
  549. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-cellxgene-census-ddaaf88b.yaml +25 -0
  550. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-cirq-99f25eb1.yaml +24 -0
  551. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-citation-management-1a129684.yaml +25 -0
  552. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-clinical-decision-support-ef529deb.yaml +26 -0
  553. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-clinical-reports-7ae47dd8.yaml +25 -0
  554. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-cobrapy-f1e8de42.yaml +24 -0
  555. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-consciousness-council-32753e38.yaml +25 -0
  556. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-dask-5303ff19.yaml +24 -0
  557. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-database-lookup-60d4dd6f.yaml +25 -0
  558. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-datamol-cbe8a75b.yaml +24 -0
  559. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-deepchem-0926d659.yaml +24 -0
  560. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-deepspot-m-2398c18d.yaml +25 -0
  561. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-deeptools-736b300a.yaml +24 -0
  562. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-depmap-e8d86402.yaml +24 -0
  563. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-dhdna-profiler-d1bdae2e.yaml +25 -0
  564. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-diffdock-7c470c15.yaml +24 -0
  565. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-dnanexus-integration-72332faa.yaml +25 -0
  566. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-docx-b28174d4.yaml +24 -0
  567. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-esm-fa929081.yaml +24 -0
  568. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-etetoolkit-2d3c45f5.yaml +24 -0
  569. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-exa-search-5451d730.yaml +25 -0
  570. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-experimental-design-1a7e83e3.yaml +25 -0
  571. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-exploratory-data-analysis-260ae2cf.yaml +26 -0
  572. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-flowio-faefc805.yaml +24 -0
  573. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-fluidsim-7d26cf78.yaml +24 -0
  574. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-generate-image-ae7e8ded.yaml +25 -0
  575. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-geniml-47430703.yaml +24 -0
  576. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-genomic-coordinates-4e29e184.yaml +25 -0
  577. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-genomic-intelligence-11f7b868.yaml +25 -0
  578. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-geomaster-74e36add.yaml +24 -0
  579. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-geopandas-3230d372.yaml +24 -0
  580. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-get-available-resources-708bf039.yaml +26 -0
  581. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-gget-f7e346a4.yaml +24 -0
  582. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-ginkgo-cloud-lab-919eeb82.yaml +26 -0
  583. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-glycoengineering-93c2cc41.yaml +24 -0
  584. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-gtars-6128e9f5.yaml +24 -0
  585. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-histolab-64ddb191.yaml +24 -0
  586. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-hugging-science-183f82ab.yaml +25 -0
  587. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-hypogenic-3e9385fd.yaml +24 -0
  588. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-hypothesis-generation-91e895f1.yaml +25 -0
  589. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-imaging-data-commons-b968a7df.yaml +26 -0
  590. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-infographics-f06f476d.yaml +24 -0
  591. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-iso-standards-readiness-912e27de.yaml +26 -0
  592. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-lab-hardware-cad-a951bd09.yaml +26 -0
  593. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-labarchive-integration-de6f8d0e.yaml +25 -0
  594. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-lamindb-c27306c4.yaml +24 -0
  595. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-latchbio-integration-472a0230.yaml +25 -0
  596. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-latex-posters-04751c6e.yaml +25 -0
  597. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-liteparse-e7752347.yaml +24 -0
  598. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-literature-review-e42aad3b.yaml +25 -0
  599. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-markdown-mermaid-writing-42f07916.yaml +26 -0
  600. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-market-research-reports-f3535d6e.yaml +26 -0
  601. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-markitdown-eacb6de0.yaml +24 -0
  602. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-matchms-8ae9cbbe.yaml +24 -0
  603. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-matlab-ea66713e.yaml +24 -0
  604. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-matplotlib-0d0b6653.yaml +24 -0
  605. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-medchem-322b4234.yaml +24 -0
  606. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-modal-deeb869a.yaml +24 -0
  607. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-molecular-dynamics-26a90447.yaml +25 -0
  608. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-molfeat-375894d7.yaml +24 -0
  609. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-ncats-arax-9c46f0d9.yaml +25 -0
  610. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-networkx-cf17d4d5.yaml +24 -0
  611. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-neurokit2-03cb0fc8.yaml +24 -0
  612. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-neuropixels-analysis-43c58fed.yaml +25 -0
  613. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-nextflow-a2542f37.yaml +24 -0
  614. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-omero-integration-7c7c8de4.yaml +25 -0
  615. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-onekgpd-b7ec4a48.yaml +24 -0
  616. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-ontology-term-resolution-8a4e05ae.yaml +26 -0
  617. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-open-notebook-fe776075.yaml +25 -0
  618. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-openpiv-7961bad2.yaml +24 -0
  619. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-opentrons-integration-526bef4e.yaml +25 -0
  620. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-optimize-for-gpu-c565b219.yaml +26 -0
  621. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-pacsomatic-85b7b541.yaml +24 -0
  622. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-paper-lookup-d4f7292a.yaml +25 -0
  623. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-paperclip-6f0f5388.yaml +24 -0
  624. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-paperzilla-bc84f2ca.yaml +24 -0
  625. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-parallel-web-e0048585.yaml +25 -0
  626. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-pathml-572c7078.yaml +24 -0
  627. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-pathogen-variant-surveillance-ef51e42d.yaml +27 -0
  628. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-pathway-enrichment-a4707c3b.yaml +25 -0
  629. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-pdf-6adce56a.yaml +24 -0
  630. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-peer-review-37cb828c.yaml +25 -0
  631. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-pennylane-cc80be4f.yaml +24 -0
  632. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-phylogenetics-5ddcefe5.yaml +24 -0
  633. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-pi-agent-5daa6906.yaml +25 -0
  634. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-pkpd-modeling-3085de24.yaml +25 -0
  635. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-polars-226d8e8f.yaml +24 -0
  636. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-polars-bio-037c2537.yaml +25 -0
  637. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-pptx-763019b3.yaml +24 -0
  638. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-pptx-posters-73d87f07.yaml +25 -0
  639. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-primekg-d64a0ccc.yaml +24 -0
  640. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-protocolsio-integration-d60c6d8b.yaml +25 -0
  641. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-pufferlib-e1149583.yaml +24 -0
  642. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-pydeseq2-de7202d9.yaml +24 -0
  643. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-pydicom-18fe595e.yaml +24 -0
  644. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-pyhealth-ebd6688c.yaml +24 -0
  645. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-pylabrobot-291865b1.yaml +24 -0
  646. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-pymatgen-105897d6.yaml +24 -0
  647. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-pymc-48109270.yaml +24 -0
  648. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-pymoo-12cb1cff.yaml +24 -0
  649. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-pyopenms-ef85d8ed.yaml +24 -0
  650. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-pysam-6ef29ad9.yaml +24 -0
  651. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-pytdc-58c5dec5.yaml +24 -0
  652. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-pytorch-lightning-d54c032e.yaml +25 -0
  653. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-pyzotero-c733330b.yaml +24 -0
  654. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-qiskit-500e0fa7.yaml +24 -0
  655. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-qutip-7f90847a.yaml +24 -0
  656. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-rdkit-ffeebe23.yaml +24 -0
  657. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-relsa-severity-assessment-3eb04bbf.yaml +26 -0
  658. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-research-grants-49279645.yaml +25 -0
  659. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-research-lookup-64fd7bc4.yaml +25 -0
  660. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-rowan-6726cc47.yaml +24 -0
  661. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-scanpy-e983f13c.yaml +24 -0
  662. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-scholar-evaluation-6c2e2213.yaml +25 -0
  663. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-scientific-brainstorming-a5d41c04.yaml +25 -0
  664. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-scientific-critical-thinking-0bbd89a7.yaml +27 -0
  665. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-scientific-schematics-9af5683a.yaml +25 -0
  666. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-scientific-slides-9bfbddb0.yaml +25 -0
  667. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-scientific-visualization-13e801b2.yaml +25 -0
  668. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-scientific-writing-00a3ee28.yaml +25 -0
  669. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-scikit-bio-ac4ffa84.yaml +25 -0
  670. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-scikit-learn-0b010a52.yaml +25 -0
  671. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-scikit-survival-b912dc51.yaml +25 -0
  672. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-scvelo-2d05307d.yaml +24 -0
  673. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-scvi-tools-461da816.yaml +25 -0
  674. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-seaborn-9f1265e5.yaml +24 -0
  675. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-shap-4d3df611.yaml +24 -0
  676. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-simpy-d2040ac2.yaml +24 -0
  677. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-stable-baselines3-0d80d006.yaml +25 -0
  678. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-statistical-analysis-20f60337.yaml +25 -0
  679. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-statistical-power-49e55c66.yaml +25 -0
  680. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-statsmodels-c5633291.yaml +24 -0
  681. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-sympy-1b10d29d.yaml +24 -0
  682. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-tamarind-4502f8eb.yaml +24 -0
  683. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-tiledbvcf-5d4fd244.yaml +24 -0
  684. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-timesfm-forecasting-20d8d9e4.yaml +25 -0
  685. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-torch-geometric-604f995f.yaml +25 -0
  686. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-torchdrug-f132dade.yaml +24 -0
  687. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-transformers-12b0f8cb.yaml +24 -0
  688. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-treatment-plans-8df1320c.yaml +25 -0
  689. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-umap-learn-99000586.yaml +25 -0
  690. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-uncertainty-and-units-fb4539cb.yaml +26 -0
  691. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-usfiscaldata-c08b64b2.yaml +24 -0
  692. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-vaex-5da1dc74.yaml +24 -0
  693. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-venue-templates-9371dfc1.yaml +25 -0
  694. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-waypoint-bio-e3f56606.yaml +25 -0
  695. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-what-if-oracle-219e0f79.yaml +26 -0
  696. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-xlsx-dabbb4cd.yaml +24 -0
  697. package/catalog/entries/skill-k-dense-ai-claude-scientific-skills-zarr-python-d683ee34.yaml +25 -0
  698. package/catalog/entries/skill-supabase-agent-skills-supabase-dd9dc3ad.yaml +24 -0
  699. package/catalog/entries/skill-supabase-agent-skills-supabase-postgres-best-practices-8e8b8a8d.yaml +27 -0
  700. package/catalog/entries/skill-trailofbits-skills-address-sanitizer-654c1e8e.yaml +24 -0
  701. package/catalog/entries/skill-trailofbits-skills-aflpp-e43e17e8.yaml +23 -0
  702. package/catalog/entries/skill-trailofbits-skills-agentic-actions-auditor-b0bda681.yaml +25 -0
  703. package/catalog/entries/skill-trailofbits-skills-algorand-vulnerability-scanner-5dc54b29.yaml +25 -0
  704. package/catalog/entries/skill-trailofbits-skills-atheris-e7e48d8a.yaml +23 -0
  705. package/catalog/entries/skill-trailofbits-skills-audit-augmentation-7debd264.yaml +24 -0
  706. package/catalog/entries/skill-trailofbits-skills-audit-context-building-0bd4e4ff.yaml +25 -0
  707. package/catalog/entries/skill-trailofbits-skills-audit-prep-assistant-a733cc0e.yaml +25 -0
  708. package/catalog/entries/skill-trailofbits-skills-burpsuite-project-parser-77ed0d6d.yaml +25 -0
  709. package/catalog/entries/skill-trailofbits-skills-c-review-f8056a8f.yaml +24 -0
  710. package/catalog/entries/skill-trailofbits-skills-cairo-vulnerability-scanner-747e222d.yaml +25 -0
  711. package/catalog/entries/skill-trailofbits-skills-cargo-fuzz-abde7e1b.yaml +24 -0
  712. package/catalog/entries/skill-trailofbits-skills-chrome-mcp-troubleshooting-c403d3d1.yaml +25 -0
  713. package/catalog/entries/skill-trailofbits-skills-code-improver-8debe69b.yaml +24 -0
  714. package/catalog/entries/skill-trailofbits-skills-code-maturity-assessor-50a90d33.yaml +25 -0
  715. package/catalog/entries/skill-trailofbits-skills-codeql-36199bdf.yaml +23 -0
  716. package/catalog/entries/skill-trailofbits-skills-constant-time-analysis-7ac49afd.yaml +25 -0
  717. package/catalog/entries/skill-trailofbits-skills-constant-time-testing-4e1379e9.yaml +25 -0
  718. package/catalog/entries/skill-trailofbits-skills-cosmos-vulnerability-scanner-f8cfc554.yaml +25 -0
  719. package/catalog/entries/skill-trailofbits-skills-coverage-analysis-f49a5647.yaml +24 -0
  720. package/catalog/entries/skill-trailofbits-skills-crypto-protocol-diagram-ea2e2169.yaml +25 -0
  721. package/catalog/entries/skill-trailofbits-skills-devcontainer-setup-4e055a8b.yaml +24 -0
  722. package/catalog/entries/skill-trailofbits-skills-diagramming-code-0eff35f1.yaml +24 -0
  723. package/catalog/entries/skill-trailofbits-skills-differential-review-fedc6df2.yaml +24 -0
  724. package/catalog/entries/skill-trailofbits-skills-dimensional-analysis-9bedabe0.yaml +24 -0
  725. package/catalog/entries/skill-trailofbits-skills-dwarf-expert-b5eb0704.yaml +24 -0
  726. package/catalog/entries/skill-trailofbits-skills-entry-point-analyzer-65917269.yaml +25 -0
  727. package/catalog/entries/skill-trailofbits-skills-firebase-apk-scanner-79297e76.yaml +25 -0
  728. package/catalog/entries/skill-trailofbits-skills-fp-check-1122aa00.yaml +24 -0
  729. package/catalog/entries/skill-trailofbits-skills-fuzzing-dictionary-86c00a13.yaml +24 -0
  730. package/catalog/entries/skill-trailofbits-skills-fuzzing-obstacles-cebe7315.yaml +24 -0
  731. package/catalog/entries/skill-trailofbits-skills-genotoxic-cce07fed.yaml +23 -0
  732. package/catalog/entries/skill-trailofbits-skills-gh-cli-308bebf1.yaml +24 -0
  733. package/catalog/entries/skill-trailofbits-skills-github-triage-da170eab.yaml +24 -0
  734. package/catalog/entries/skill-trailofbits-skills-goal-prompt-3e8a3c27.yaml +24 -0
  735. package/catalog/entries/skill-trailofbits-skills-graph-evolution-390a35b6.yaml +24 -0
  736. package/catalog/entries/skill-trailofbits-skills-guidelines-advisor-808c7161.yaml +24 -0
  737. package/catalog/entries/skill-trailofbits-skills-harness-writing-77b7d8b9.yaml +24 -0
  738. package/catalog/entries/skill-trailofbits-skills-interpreting-culture-index-1d0534d9.yaml +25 -0
  739. package/catalog/entries/skill-trailofbits-skills-let-fate-decide-de973dc5.yaml +25 -0
  740. package/catalog/entries/skill-trailofbits-skills-libafl-b8caa933.yaml +23 -0
  741. package/catalog/entries/skill-trailofbits-skills-libfuzzer-807c8d91.yaml +23 -0
  742. package/catalog/entries/skill-trailofbits-skills-mermaid-to-proverif-005278eb.yaml +25 -0
  743. package/catalog/entries/skill-trailofbits-skills-modern-cpp-514d5679.yaml +24 -0
  744. package/catalog/entries/skill-trailofbits-skills-modern-python-a3883808.yaml +24 -0
  745. package/catalog/entries/skill-trailofbits-skills-mutation-testing-e9d155c5.yaml +24 -0
  746. package/catalog/entries/skill-trailofbits-skills-open-sourcing-63ea6c3f.yaml +24 -0
  747. package/catalog/entries/skill-trailofbits-skills-ossfuzz-44fc1edb.yaml +23 -0
  748. package/catalog/entries/skill-trailofbits-skills-pr-improver-5c8523fd.yaml +24 -0
  749. package/catalog/entries/skill-trailofbits-skills-property-based-testing-c240ae97.yaml +25 -0
  750. package/catalog/entries/skill-trailofbits-skills-rust-review-a1ad06ea.yaml +24 -0
  751. package/catalog/entries/skill-trailofbits-skills-ruzzy-dcf339e8.yaml +23 -0
  752. package/catalog/entries/skill-trailofbits-skills-sarif-parsing-c42a5b54.yaml +24 -0
  753. package/catalog/entries/skill-trailofbits-skills-second-opinion-21a125db.yaml +24 -0
  754. package/catalog/entries/skill-trailofbits-skills-secure-workflow-guide-7fc54c5b.yaml +25 -0
  755. package/catalog/entries/skill-trailofbits-skills-semgrep-025ed05b.yaml +23 -0
  756. package/catalog/entries/skill-trailofbits-skills-semgrep-rule-creator-c33d25a3.yaml +25 -0
  757. package/catalog/entries/skill-trailofbits-skills-semgrep-rule-variant-creator-6fdd6ab8.yaml +26 -0
  758. package/catalog/entries/skill-trailofbits-skills-sharp-edges-d1c3e692.yaml +24 -0
  759. package/catalog/entries/skill-trailofbits-skills-skill-improver-5b7b9acd.yaml +24 -0
  760. package/catalog/entries/skill-trailofbits-skills-slicing-code-context-265bd6b0.yaml +25 -0
  761. package/catalog/entries/skill-trailofbits-skills-solana-vulnerability-scanner-03259f74.yaml +25 -0
  762. package/catalog/entries/skill-trailofbits-skills-spec-to-code-compliance-963ce245.yaml +26 -0
  763. package/catalog/entries/skill-trailofbits-skills-substrate-vulnerability-scanner-b1a93cd7.yaml +25 -0
  764. package/catalog/entries/skill-trailofbits-skills-supply-chain-risk-auditor-c1d26037.yaml +26 -0
  765. package/catalog/entries/skill-trailofbits-skills-testing-handbook-generator-d95444bc.yaml +25 -0
  766. package/catalog/entries/skill-trailofbits-skills-token-integration-analyzer-c74ac500.yaml +25 -0
  767. package/catalog/entries/skill-trailofbits-skills-ton-vulnerability-scanner-0b5ef5cf.yaml +25 -0
  768. package/catalog/entries/skill-trailofbits-skills-trailmark-8772cfb8.yaml +23 -0
  769. package/catalog/entries/skill-trailofbits-skills-trailmark-finding-triage-bd004629.yaml +25 -0
  770. package/catalog/entries/skill-trailofbits-skills-trailmark-review-gate-0e5dfd28.yaml +25 -0
  771. package/catalog/entries/skill-trailofbits-skills-trailmark-structural-6ac455a1.yaml +24 -0
  772. package/catalog/entries/skill-trailofbits-skills-trailmark-summary-4c1076e1.yaml +24 -0
  773. package/catalog/entries/skill-trailofbits-skills-trailmark-variant-neighborhood-b58f5659.yaml +25 -0
  774. package/catalog/entries/skill-trailofbits-skills-variant-analysis-7019bfa4.yaml +24 -0
  775. package/catalog/entries/skill-trailofbits-skills-vector-forge-6f49e281.yaml +24 -0
  776. package/catalog/entries/skill-trailofbits-skills-vulnerability-triage-brocards-769576e2.yaml +25 -0
  777. package/catalog/entries/skill-trailofbits-skills-writing-lean-proofs-be68e2a1.yaml +25 -0
  778. package/catalog/entries/skill-trailofbits-skills-wycheproof-96970c98.yaml +23 -0
  779. package/catalog/entries/skill-trailofbits-skills-yara-rule-authoring-a2c24838.yaml +25 -0
  780. package/catalog/entries/skill-trailofbits-skills-zeroize-audit-2c51c8c4.yaml +24 -0
  781. package/catalog/snapshots/manifest.yaml +37 -0
  782. package/catalog/sources.yaml +48 -0
  783. package/dist/scripts/generate-skill-projections.d.ts +9 -0
  784. package/dist/scripts/generate-skill-projections.js +189 -0
  785. package/dist/scripts/generate-skill-projections.js.map +1 -0
  786. package/dist/scripts/prepare-npm-release.d.ts +1 -0
  787. package/dist/scripts/prepare-npm-release.js +30 -0
  788. package/dist/scripts/prepare-npm-release.js.map +1 -0
  789. package/dist/src/catalog/catalog.d.ts +18 -0
  790. package/dist/src/catalog/catalog.js +253 -0
  791. package/dist/src/catalog/catalog.js.map +1 -0
  792. package/dist/src/cli.d.ts +3 -0
  793. package/dist/src/cli.js +512 -0
  794. package/dist/src/cli.js.map +1 -0
  795. package/dist/src/deduplicate.d.ts +17 -0
  796. package/dist/src/deduplicate.js +122 -0
  797. package/dist/src/deduplicate.js.map +1 -0
  798. package/dist/src/eval/effect.d.ts +8 -0
  799. package/dist/src/eval/effect.js +58 -0
  800. package/dist/src/eval/effect.js.map +1 -0
  801. package/dist/src/eval/evaluate.d.ts +6 -0
  802. package/dist/src/eval/evaluate.js +137 -0
  803. package/dist/src/eval/evaluate.js.map +1 -0
  804. package/dist/src/eval/tasks.d.ts +4 -0
  805. package/dist/src/eval/tasks.js +64 -0
  806. package/dist/src/eval/tasks.js.map +1 -0
  807. package/dist/src/harness/codex.d.ts +10 -0
  808. package/dist/src/harness/codex.js +48 -0
  809. package/dist/src/harness/codex.js.map +1 -0
  810. package/dist/src/harness/dsh.d.ts +8 -0
  811. package/dist/src/harness/dsh.js +38 -0
  812. package/dist/src/harness/dsh.js.map +1 -0
  813. package/dist/src/harness/mock.d.ts +12 -0
  814. package/dist/src/harness/mock.js +46 -0
  815. package/dist/src/harness/mock.js.map +1 -0
  816. package/dist/src/harness/pi.d.ts +21 -0
  817. package/dist/src/harness/pi.js +120 -0
  818. package/dist/src/harness/pi.js.map +1 -0
  819. package/dist/src/harness/process.d.ts +7 -0
  820. package/dist/src/harness/process.js +18 -0
  821. package/dist/src/harness/process.js.map +1 -0
  822. package/dist/src/harness/types.d.ts +50 -0
  823. package/dist/src/harness/types.js +2 -0
  824. package/dist/src/harness/types.js.map +1 -0
  825. package/dist/src/packs.d.ts +5 -0
  826. package/dist/src/packs.js +129 -0
  827. package/dist/src/packs.js.map +1 -0
  828. package/dist/src/registry.d.ts +4 -0
  829. package/dist/src/registry.js +33 -0
  830. package/dist/src/registry.js.map +1 -0
  831. package/dist/src/relations.d.ts +3 -0
  832. package/dist/src/relations.js +92 -0
  833. package/dist/src/relations.js.map +1 -0
  834. package/dist/src/release.d.ts +15 -0
  835. package/dist/src/release.js +27 -0
  836. package/dist/src/release.js.map +1 -0
  837. package/dist/src/router.d.ts +9 -0
  838. package/dist/src/router.js +169 -0
  839. package/dist/src/router.js.map +1 -0
  840. package/dist/src/runtime/state.d.ts +12 -0
  841. package/dist/src/runtime/state.js +95 -0
  842. package/dist/src/runtime/state.js.map +1 -0
  843. package/dist/src/security/lifecycle.d.ts +28 -0
  844. package/dist/src/security/lifecycle.js +38 -0
  845. package/dist/src/security/lifecycle.js.map +1 -0
  846. package/dist/src/train/attempts.d.ts +5 -0
  847. package/dist/src/train/attempts.js +51 -0
  848. package/dist/src/train/attempts.js.map +1 -0
  849. package/dist/src/train/governance.d.ts +6 -0
  850. package/dist/src/train/governance.js +172 -0
  851. package/dist/src/train/governance.js.map +1 -0
  852. package/dist/src/train/knowledge.d.ts +11 -0
  853. package/dist/src/train/knowledge.js +128 -0
  854. package/dist/src/train/knowledge.js.map +1 -0
  855. package/dist/src/train/propose.d.ts +19 -0
  856. package/dist/src/train/propose.js +43 -0
  857. package/dist/src/train/propose.js.map +1 -0
  858. package/dist/src/train/revisions.d.ts +7 -0
  859. package/dist/src/train/revisions.js +103 -0
  860. package/dist/src/train/revisions.js.map +1 -0
  861. package/dist/src/train/types.d.ts +97 -0
  862. package/dist/src/train/types.js +2 -0
  863. package/dist/src/train/types.js.map +1 -0
  864. package/dist/src/types.d.ts +251 -0
  865. package/dist/src/types.js +2 -0
  866. package/dist/src/types.js.map +1 -0
  867. package/dist/src/validation.d.ts +8 -0
  868. package/dist/src/validation.js +166 -0
  869. package/dist/src/validation.js.map +1 -0
  870. package/docs/catalog-methodology.md +46 -0
  871. package/docs/evaluation.md +38 -0
  872. package/docs/evolution-knowledge.md +46 -0
  873. package/docs/evolution-policy.md +23 -0
  874. package/docs/harnesses.md +42 -0
  875. package/docs/npm-release.md +88 -0
  876. package/docs/plans/2026-09-02-evidence-driven-control-plane-design.md +52 -0
  877. package/docs/plans/2026-09-02-evidence-driven-control-plane.md +136 -0
  878. package/docs/plans/2026-09-02-research-informed-skillpack-evolution.md +46 -0
  879. package/docs/plans/2026-09-02-self-organizing-skills-design.md +307 -0
  880. package/docs/plans/2026-09-02-self-organizing-skills-design.zh-CN.md +194 -0
  881. package/docs/plans/2026-09-02-self-organizing-skills-implementation.md +136 -0
  882. package/docs/plans/2026-09-02-wikiskill-skill-state-integration.md +28 -0
  883. package/docs/plans/2026-09-03-npm-publishing-design.md +34 -0
  884. package/docs/plans/2026-09-03-npm-publishing.md +69 -0
  885. package/docs/release-policy.md +5 -0
  886. package/docs/research/2026-09-02-agent-skill-literature.md +57 -0
  887. package/docs/research/2026-09-02-retrieval-security-optimization.md +41 -0
  888. package/docs/research/2026-09-02-wikiskill-skill-state.md +67 -0
  889. package/docs/runtime-state.md +31 -0
  890. package/docs/security-lifecycle.md +23 -0
  891. package/docs/zh-CN/catalog-methodology.md +46 -0
  892. package/docs/zh-CN/evaluation.md +38 -0
  893. package/docs/zh-CN/evolution-knowledge.md +46 -0
  894. package/docs/zh-CN/evolution-policy.md +23 -0
  895. package/docs/zh-CN/harnesses.md +40 -0
  896. package/docs/zh-CN/npm-release.md +87 -0
  897. package/docs/zh-CN/release-policy.md +5 -0
  898. package/docs/zh-CN/research/2026-09-02-agent-skill-literature.md +55 -0
  899. package/docs/zh-CN/research/2026-09-02-retrieval-security-optimization.md +33 -0
  900. package/docs/zh-CN/research/2026-09-02-wikiskill-skill-state.md +67 -0
  901. package/docs/zh-CN/runtime-state.md +31 -0
  902. package/docs/zh-CN/security-lifecycle.md +23 -0
  903. package/evals/baselines/harness.yaml +16 -0
  904. package/evals/baselines/routing.yaml +17 -0
  905. package/evals/datasets/routing-adversarial.yaml +14 -0
  906. package/evals/datasets/routing-bootstrap.yaml +20 -0
  907. package/evals/datasets/routing-en-test.yaml +15 -0
  908. package/evals/datasets/routing-hard-distractors.yaml +29 -0
  909. package/evals/datasets/routing-zh-CN-test.yaml +15 -0
  910. package/evals/datasets/task-completion-bootstrap.yaml +20 -0
  911. package/evals/effect-gates.yaml +5 -0
  912. package/evals/gates.yaml +9 -0
  913. package/package.json +87 -0
  914. package/packs/evidence-backed-market-research.yaml +14 -0
  915. package/packs/localized-research-brief.yaml +14 -0
  916. package/packs/safe-skill-evolution.yaml +20 -0
  917. package/packs/software-delivery.yaml +15 -0
  918. package/paper/references.bib +177 -0
  919. package/paper/skillpack-one.md +272 -0
  920. package/paper/skillpack-one.zh-CN.md +79 -0
  921. package/runtime/initial/safe-skill-evolution.state.json +14 -0
  922. package/runtime/schemas/safe-skill-evolution.state.schema.json +51 -0
  923. package/schemas/capability-pack.schema.json +76 -0
  924. package/schemas/catalog-entry.schema.json +65 -0
  925. package/schemas/decomposition-map.schema.json +63 -0
  926. package/schemas/eval-dataset.schema.json +69 -0
  927. package/schemas/eval-run.schema.json +46 -0
  928. package/schemas/evolution-attempt.schema.json +55 -0
  929. package/schemas/evolution-pattern.schema.json +55 -0
  930. package/schemas/evolution-proposal.schema.json +77 -0
  931. package/schemas/lifecycle-security-review.schema.json +46 -0
  932. package/schemas/skill-contract.schema.json +208 -0
  933. package/schemas/skill-effect.schema.json +45 -0
  934. package/schemas/skill-relation-graph.schema.json +40 -0
  935. package/schemas/taxonomy.schema.json +54 -0
  936. package/skill-src/atom-analyze-market/SKILL.md +8 -0
  937. package/skill-src/atom-analyze-market/skill.contract.yaml +27 -0
  938. package/skill-src/atom-analyze-tabular-data/SKILL.md +8 -0
  939. package/skill-src/atom-analyze-tabular-data/skill.contract.yaml +26 -0
  940. package/skill-src/atom-audit-source-security/SKILL.md +8 -0
  941. package/skill-src/atom-audit-source-security/skill.contract.yaml +27 -0
  942. package/skill-src/atom-classify-capability/SKILL.md +8 -0
  943. package/skill-src/atom-classify-capability/skill.contract.yaml +26 -0
  944. package/skill-src/atom-design-automation-workflow/SKILL.md +8 -0
  945. package/skill-src/atom-design-automation-workflow/skill.contract.yaml +26 -0
  946. package/skill-src/atom-design-interface-spec/SKILL.md +8 -0
  947. package/skill-src/atom-design-interface-spec/skill.contract.yaml +26 -0
  948. package/skill-src/atom-find-research-sources/SKILL.md +8 -0
  949. package/skill-src/atom-find-research-sources/skill.contract.yaml +26 -0
  950. package/skill-src/atom-implement-code-change/SKILL.md +8 -0
  951. package/skill-src/atom-implement-code-change/skill.contract.yaml +26 -0
  952. package/skill-src/atom-organize-personal-tasks/SKILL.md +8 -0
  953. package/skill-src/atom-organize-personal-tasks/skill.contract.yaml +26 -0
  954. package/skill-src/atom-plan-code-change/SKILL.md +8 -0
  955. package/skill-src/atom-plan-code-change/skill.contract.yaml +26 -0
  956. package/skill-src/atom-translate-document/SKILL.md +8 -0
  957. package/skill-src/atom-translate-document/skill.contract.yaml +26 -0
  958. package/skill-src/category-automation-operations/SKILL.md +13 -0
  959. package/skill-src/category-automation-operations/skill.contract.yaml +26 -0
  960. package/skill-src/category-business-growth/SKILL.md +13 -0
  961. package/skill-src/category-business-growth/skill.contract.yaml +26 -0
  962. package/skill-src/category-data-analytics/SKILL.md +13 -0
  963. package/skill-src/category-data-analytics/skill.contract.yaml +26 -0
  964. package/skill-src/category-design-media/SKILL.md +13 -0
  965. package/skill-src/category-design-media/skill.contract.yaml +26 -0
  966. package/skill-src/category-documents-communication/SKILL.md +13 -0
  967. package/skill-src/category-documents-communication/skill.contract.yaml +26 -0
  968. package/skill-src/category-personal-productivity/SKILL.md +13 -0
  969. package/skill-src/category-personal-productivity/skill.contract.yaml +26 -0
  970. package/skill-src/category-research-knowledge/SKILL.md +13 -0
  971. package/skill-src/category-research-knowledge/skill.contract.yaml +26 -0
  972. package/skill-src/category-security-trust/SKILL.md +13 -0
  973. package/skill-src/category-security-trust/skill.contract.yaml +26 -0
  974. package/skill-src/category-skill-agent-governance/SKILL.md +13 -0
  975. package/skill-src/category-skill-agent-governance/skill.contract.yaml +26 -0
  976. package/skill-src/category-software-engineering/SKILL.md +14 -0
  977. package/skill-src/category-software-engineering/skill.contract.yaml +26 -0
  978. package/skill-src/meta-skill-governor/SKILL.md +33 -0
  979. package/skill-src/meta-skill-governor/references/evolution-policy.en.md +8 -0
  980. package/skill-src/meta-skill-governor/references/evolution-policy.zh-CN.md +8 -0
  981. package/skill-src/meta-skill-governor/references/knowledge-policy.en.md +9 -0
  982. package/skill-src/meta-skill-governor/references/knowledge-policy.zh-CN.md +9 -0
  983. package/skill-src/meta-skill-governor/skill.contract.yaml +51 -0
  984. package/skills/atom-analyze-market/SKILL.md +8 -0
  985. package/skills/atom-analyze-market/agents/openai.yaml +7 -0
  986. package/skills/atom-analyze-market/skill.contract.yaml +27 -0
  987. package/skills/atom-analyze-tabular-data/SKILL.md +8 -0
  988. package/skills/atom-analyze-tabular-data/agents/openai.yaml +7 -0
  989. package/skills/atom-analyze-tabular-data/skill.contract.yaml +26 -0
  990. package/skills/atom-audit-source-security/SKILL.md +8 -0
  991. package/skills/atom-audit-source-security/agents/openai.yaml +7 -0
  992. package/skills/atom-audit-source-security/skill.contract.yaml +27 -0
  993. package/skills/atom-classify-capability/SKILL.md +8 -0
  994. package/skills/atom-classify-capability/agents/openai.yaml +7 -0
  995. package/skills/atom-classify-capability/skill.contract.yaml +26 -0
  996. package/skills/atom-design-automation-workflow/SKILL.md +8 -0
  997. package/skills/atom-design-automation-workflow/agents/openai.yaml +7 -0
  998. package/skills/atom-design-automation-workflow/skill.contract.yaml +26 -0
  999. package/skills/atom-design-interface-spec/SKILL.md +8 -0
  1000. package/skills/atom-design-interface-spec/agents/openai.yaml +7 -0
  1001. package/skills/atom-design-interface-spec/skill.contract.yaml +26 -0
  1002. package/skills/atom-find-research-sources/SKILL.md +8 -0
  1003. package/skills/atom-find-research-sources/agents/openai.yaml +7 -0
  1004. package/skills/atom-find-research-sources/skill.contract.yaml +26 -0
  1005. package/skills/atom-implement-code-change/SKILL.md +8 -0
  1006. package/skills/atom-implement-code-change/agents/openai.yaml +7 -0
  1007. package/skills/atom-implement-code-change/skill.contract.yaml +26 -0
  1008. package/skills/atom-organize-personal-tasks/SKILL.md +8 -0
  1009. package/skills/atom-organize-personal-tasks/agents/openai.yaml +7 -0
  1010. package/skills/atom-organize-personal-tasks/skill.contract.yaml +26 -0
  1011. package/skills/atom-plan-code-change/SKILL.md +8 -0
  1012. package/skills/atom-plan-code-change/agents/openai.yaml +7 -0
  1013. package/skills/atom-plan-code-change/skill.contract.yaml +26 -0
  1014. package/skills/atom-translate-document/SKILL.md +8 -0
  1015. package/skills/atom-translate-document/agents/openai.yaml +7 -0
  1016. package/skills/atom-translate-document/skill.contract.yaml +26 -0
  1017. package/skills/category-automation-operations/SKILL.md +13 -0
  1018. package/skills/category-automation-operations/agents/openai.yaml +7 -0
  1019. package/skills/category-automation-operations/references/index.en.md +11 -0
  1020. package/skills/category-automation-operations/references/index.md +11 -0
  1021. package/skills/category-automation-operations/references/index.zh-CN.md +11 -0
  1022. package/skills/category-automation-operations/references/index.zh.md +11 -0
  1023. package/skills/category-automation-operations/skill.contract.yaml +26 -0
  1024. package/skills/category-business-growth/SKILL.md +13 -0
  1025. package/skills/category-business-growth/agents/openai.yaml +7 -0
  1026. package/skills/category-business-growth/references/index.en.md +11 -0
  1027. package/skills/category-business-growth/references/index.md +11 -0
  1028. package/skills/category-business-growth/references/index.zh-CN.md +11 -0
  1029. package/skills/category-business-growth/references/index.zh.md +11 -0
  1030. package/skills/category-business-growth/skill.contract.yaml +26 -0
  1031. package/skills/category-data-analytics/SKILL.md +13 -0
  1032. package/skills/category-data-analytics/agents/openai.yaml +7 -0
  1033. package/skills/category-data-analytics/references/index.en.md +11 -0
  1034. package/skills/category-data-analytics/references/index.md +11 -0
  1035. package/skills/category-data-analytics/references/index.zh-CN.md +11 -0
  1036. package/skills/category-data-analytics/references/index.zh.md +11 -0
  1037. package/skills/category-data-analytics/skill.contract.yaml +26 -0
  1038. package/skills/category-design-media/SKILL.md +13 -0
  1039. package/skills/category-design-media/agents/openai.yaml +7 -0
  1040. package/skills/category-design-media/references/index.en.md +11 -0
  1041. package/skills/category-design-media/references/index.md +11 -0
  1042. package/skills/category-design-media/references/index.zh-CN.md +11 -0
  1043. package/skills/category-design-media/references/index.zh.md +11 -0
  1044. package/skills/category-design-media/skill.contract.yaml +26 -0
  1045. package/skills/category-documents-communication/SKILL.md +13 -0
  1046. package/skills/category-documents-communication/agents/openai.yaml +7 -0
  1047. package/skills/category-documents-communication/references/index.en.md +11 -0
  1048. package/skills/category-documents-communication/references/index.md +11 -0
  1049. package/skills/category-documents-communication/references/index.zh-CN.md +11 -0
  1050. package/skills/category-documents-communication/references/index.zh.md +11 -0
  1051. package/skills/category-documents-communication/skill.contract.yaml +26 -0
  1052. package/skills/category-personal-productivity/SKILL.md +13 -0
  1053. package/skills/category-personal-productivity/agents/openai.yaml +7 -0
  1054. package/skills/category-personal-productivity/references/index.en.md +11 -0
  1055. package/skills/category-personal-productivity/references/index.md +11 -0
  1056. package/skills/category-personal-productivity/references/index.zh-CN.md +11 -0
  1057. package/skills/category-personal-productivity/references/index.zh.md +11 -0
  1058. package/skills/category-personal-productivity/skill.contract.yaml +26 -0
  1059. package/skills/category-research-knowledge/SKILL.md +13 -0
  1060. package/skills/category-research-knowledge/agents/openai.yaml +7 -0
  1061. package/skills/category-research-knowledge/references/index.en.md +14 -0
  1062. package/skills/category-research-knowledge/references/index.md +14 -0
  1063. package/skills/category-research-knowledge/references/index.zh-CN.md +14 -0
  1064. package/skills/category-research-knowledge/references/index.zh.md +14 -0
  1065. package/skills/category-research-knowledge/skill.contract.yaml +26 -0
  1066. package/skills/category-security-trust/SKILL.md +13 -0
  1067. package/skills/category-security-trust/agents/openai.yaml +7 -0
  1068. package/skills/category-security-trust/references/index.en.md +11 -0
  1069. package/skills/category-security-trust/references/index.md +11 -0
  1070. package/skills/category-security-trust/references/index.zh-CN.md +11 -0
  1071. package/skills/category-security-trust/references/index.zh.md +11 -0
  1072. package/skills/category-security-trust/skill.contract.yaml +26 -0
  1073. package/skills/category-skill-agent-governance/SKILL.md +13 -0
  1074. package/skills/category-skill-agent-governance/agents/openai.yaml +7 -0
  1075. package/skills/category-skill-agent-governance/references/index.en.md +11 -0
  1076. package/skills/category-skill-agent-governance/references/index.md +11 -0
  1077. package/skills/category-skill-agent-governance/references/index.zh-CN.md +11 -0
  1078. package/skills/category-skill-agent-governance/references/index.zh.md +11 -0
  1079. package/skills/category-skill-agent-governance/skill.contract.yaml +26 -0
  1080. package/skills/category-software-engineering/SKILL.md +14 -0
  1081. package/skills/category-software-engineering/agents/openai.yaml +7 -0
  1082. package/skills/category-software-engineering/references/index.en.md +17 -0
  1083. package/skills/category-software-engineering/references/index.md +17 -0
  1084. package/skills/category-software-engineering/references/index.zh-CN.md +17 -0
  1085. package/skills/category-software-engineering/references/index.zh.md +17 -0
  1086. package/skills/category-software-engineering/skill.contract.yaml +26 -0
  1087. package/skills/meta-skill-governor/SKILL.md +33 -0
  1088. package/skills/meta-skill-governor/agents/openai.yaml +7 -0
  1089. package/skills/meta-skill-governor/references/evolution-policy.en.md +8 -0
  1090. package/skills/meta-skill-governor/references/evolution-policy.zh-CN.md +8 -0
  1091. package/skills/meta-skill-governor/references/knowledge-policy.en.md +9 -0
  1092. package/skills/meta-skill-governor/references/knowledge-policy.zh-CN.md +9 -0
  1093. package/skills/meta-skill-governor/skill.contract.yaml +51 -0
  1094. package/taxonomy/classification-standard.md +44 -0
  1095. package/taxonomy/classification-standard.zh-CN.md +44 -0
  1096. package/taxonomy/taxonomy.yaml +195 -0
@@ -0,0 +1,169 @@
1
+ const WORD_PATTERN = /[\p{L}\p{N}]+/gu;
2
+ const STOP_WORDS = new Set(["a", "an", "and", "are", "as", "at", "be", "for", "from", "in", "is", "it", "of", "on", "or", "that", "the", "this", "to", "what", "with"]);
3
+ function normalize(value) {
4
+ return value.normalize("NFKC").toLocaleLowerCase();
5
+ }
6
+ function tokens(value) {
7
+ const raw = normalize(value).match(WORD_PATTERN) ?? [];
8
+ return new Set(raw
9
+ .filter((token) => !STOP_WORDS.has(token))
10
+ .map((token) => {
11
+ if (/^[a-z0-9]+$/u.test(token) && token.length > 4) {
12
+ if (token.endsWith("ies"))
13
+ return `${token.slice(0, -3)}y`;
14
+ if (token.endsWith("s") && !token.endsWith("ss"))
15
+ return token.slice(0, -1);
16
+ }
17
+ return token;
18
+ }));
19
+ }
20
+ function explicitlyNegated(prompt, phrase) {
21
+ const index = prompt.indexOf(normalize(phrase));
22
+ if (index >= 0) {
23
+ const prefix = prompt.slice(Math.max(0, index - 32), index);
24
+ if (/(?:\bdo\s+not\s+|\bdon't\s+|\bnot\s+|不要|不|仅)(?:\w+\s+){0,3}$/u.test(prefix))
25
+ return true;
26
+ }
27
+ const phraseTokens = [...tokens(phrase)];
28
+ if (phraseTokens.length === 0)
29
+ return false;
30
+ return prompt.split(/[,.!?;,。!?;]/u).some((clause) => {
31
+ if (!/(?:\bdo\s+not\b|\bdon't\b|\bnot\b|不要|不)/u.test(clause))
32
+ return false;
33
+ const clauseTokens = tokens(clause);
34
+ return phraseTokens.every((token) => clauseTokens.has(token));
35
+ });
36
+ }
37
+ function localeChain(locale) {
38
+ const base = locale.split("-")[0] ?? locale;
39
+ return [...new Set([locale, base, "en"])];
40
+ }
41
+ function localizedValues(value, locale) {
42
+ if (!value)
43
+ return [];
44
+ const values = [];
45
+ for (const candidate of localeChain(locale)) {
46
+ const localized = value[candidate];
47
+ if (localized !== undefined && !values.includes(localized))
48
+ values.push(localized);
49
+ }
50
+ return values;
51
+ }
52
+ function phraseMatches(prompt, promptTokens, phrase) {
53
+ const normalizedPhrase = normalize(phrase);
54
+ if (prompt.includes(normalizedPhrase))
55
+ return true;
56
+ const phraseTokens = [...tokens(normalizedPhrase)];
57
+ if (phraseTokens.length === 0)
58
+ return false;
59
+ const overlap = phraseTokens.filter((token) => promptTokens.has(token)).length;
60
+ return overlap / phraseTokens.length >= 0.75;
61
+ }
62
+ function positiveTriggerScore(prompt, promptTokens, phrase) {
63
+ const normalizedPhrase = normalize(phrase);
64
+ if (prompt.includes(normalizedPhrase))
65
+ return 8;
66
+ const phraseTokens = [...tokens(normalizedPhrase)];
67
+ if (phraseTokens.length === 0)
68
+ return 0;
69
+ const overlap = phraseTokens.filter((token) => promptTokens.has(token)).length / phraseTokens.length;
70
+ return overlap >= 0.75 ? 4 * overlap : 0;
71
+ }
72
+ function lexicalScore(promptTokens, values) {
73
+ let score = 0;
74
+ for (const value of values) {
75
+ const valueTokens = [...tokens(value)];
76
+ if (valueTokens.length === 0)
77
+ continue;
78
+ const overlap = valueTokens.filter((token) => promptTokens.has(token)).length;
79
+ score += Math.min(2, overlap / valueTokens.length);
80
+ }
81
+ return score;
82
+ }
83
+ function sortCandidates(candidates) {
84
+ return candidates.sort((left, right) => right.score - left.score || left.id.localeCompare(right.id));
85
+ }
86
+ function scoreCategory(prompt, promptTokens, node, locale) {
87
+ let score = 0;
88
+ const matched = [];
89
+ const penalties = [];
90
+ const keywords = localizedValues(node.keywords, locale).flat();
91
+ for (const keyword of keywords) {
92
+ if (phraseMatches(prompt, promptTokens, keyword) && !explicitlyNegated(prompt, keyword)) {
93
+ score += 3;
94
+ matched.push(`keyword:${keyword}`);
95
+ }
96
+ }
97
+ const labels = localizedValues(node.label, locale);
98
+ score += lexicalScore(promptTokens, [...labels, ...node.includes]);
99
+ for (const exclusion of node.excludes) {
100
+ if (phraseMatches(prompt, promptTokens, exclusion)) {
101
+ score -= 4;
102
+ penalties.push(`exclusion:${exclusion}`);
103
+ }
104
+ }
105
+ return { id: node.id, score: Number(score.toFixed(4)), matched, penalties };
106
+ }
107
+ function scoreContract(prompt, promptTokens, contract, locale, categoryScores) {
108
+ let score = Math.max(0, categoryScores.get(contract.taxonomy.primaryCategory) ?? 0) * 0.2;
109
+ const matched = [];
110
+ const penalties = [];
111
+ for (const triggerList of localizedValues(contract.routing.positiveTriggers, locale)) {
112
+ for (const trigger of triggerList) {
113
+ const triggerScore = positiveTriggerScore(prompt, promptTokens, trigger);
114
+ if (triggerScore > 0 && !explicitlyNegated(prompt, trigger)) {
115
+ score += triggerScore;
116
+ matched.push(`positive:${trigger}`);
117
+ }
118
+ }
119
+ }
120
+ const descriptiveValues = [
121
+ ...localizedValues(contract.name, locale),
122
+ ...localizedValues(contract.summary, locale),
123
+ ...contract.outcomes,
124
+ ...contract.artifacts
125
+ ];
126
+ score += lexicalScore(promptTokens, descriptiveValues);
127
+ for (const triggerList of localizedValues(contract.routing.negativeTriggers, locale)) {
128
+ for (const trigger of triggerList) {
129
+ if (phraseMatches(prompt, promptTokens, trigger) && !explicitlyNegated(prompt, trigger)) {
130
+ score -= 6;
131
+ penalties.push(`negative:${trigger}`);
132
+ }
133
+ }
134
+ }
135
+ return { id: contract.id, score: Number(score.toFixed(4)), matched, penalties };
136
+ }
137
+ export function detectLocale(prompt) {
138
+ return /[\u3400-\u9fff]/u.test(prompt) ? "zh-CN" : "en";
139
+ }
140
+ export function routeRequest(rawPrompt, taxonomy, contracts, options = {}) {
141
+ const prompt = normalize(rawPrompt);
142
+ const promptTokens = tokens(prompt);
143
+ const locale = options.locale ?? detectLocale(rawPrompt);
144
+ const categoryLimit = options.categoryLimit ?? 3;
145
+ const atomLimit = options.atomLimit ?? 5;
146
+ const ambiguityDelta = options.ambiguityDelta ?? 4;
147
+ const allCategories = sortCandidates(taxonomy.nodes.map((node) => scoreCategory(prompt, promptTokens, node, locale)));
148
+ const categoryScores = new Map(allCategories.map((candidate) => [candidate.id, candidate.score]));
149
+ const allAtoms = sortCandidates(contracts
150
+ .filter((contract) => contract.kind === "atom")
151
+ .map((contract) => scoreContract(prompt, promptTokens, contract, locale, categoryScores)));
152
+ const special = sortCandidates(contracts
153
+ .filter((contract) => contract.kind === "meta")
154
+ .map((contract) => scoreContract(prompt, promptTokens, contract, locale, categoryScores)));
155
+ const first = allCategories[0];
156
+ const second = allCategories[1];
157
+ const ambiguous = first === undefined ||
158
+ first.score <= 0 ||
159
+ (second !== undefined && second.score > 0 && first.score - second.score <= ambiguityDelta);
160
+ return {
161
+ prompt: rawPrompt,
162
+ locale,
163
+ categories: allCategories.slice(0, categoryLimit),
164
+ atoms: allAtoms.slice(0, atomLimit),
165
+ special: special.slice(0, atomLimit),
166
+ ambiguous
167
+ };
168
+ }
169
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { CapabilityPack } from "../types.js";
2
+ export type JsonValue = null | boolean | number | string | JsonValue[] | {
3
+ [key: string]: JsonValue;
4
+ };
5
+ export type JsonObject = {
6
+ [key: string]: JsonValue;
7
+ };
8
+ export declare function validatePackState(root: string, pack: CapabilityPack, state: JsonValue): Promise<string[]>;
9
+ export declare function initializePackState(root: string, pack: CapabilityPack): Promise<JsonObject>;
10
+ export declare function applyJsonMergePatch(current: JsonObject, patch: JsonObject): JsonObject;
11
+ export declare function applyValidatedPackStatePatch(root: string, pack: CapabilityPack, current: JsonValue, patch: JsonValue): Promise<JsonObject>;
12
+ export declare function validatePackRuntimeStateProfile(root: string, pack: CapabilityPack): Promise<string[]>;
@@ -0,0 +1,95 @@
1
+ import { createRequire } from "node:module";
2
+ import { readFile } from "node:fs/promises";
3
+ import path from "node:path";
4
+ const require = createRequire(import.meta.url);
5
+ const Ajv2020 = (require("ajv/dist/2020").default ?? require("ajv/dist/2020"));
6
+ const addFormats = (require("ajv-formats").default ?? require("ajv-formats"));
7
+ const FORBIDDEN_KEYS = new Set(["__proto__", "constructor", "prototype"]);
8
+ function isObject(value) {
9
+ return typeof value === "object" && value !== null && !Array.isArray(value);
10
+ }
11
+ function safeRuntimePath(root, relative) {
12
+ const normalized = path.posix.normalize(relative.replaceAll("\\", "/"));
13
+ if (path.posix.isAbsolute(normalized) ||
14
+ normalized === ".." ||
15
+ normalized.startsWith("../") ||
16
+ !normalized.startsWith("runtime/"))
17
+ throw new Error(`Runtime state path must remain under runtime/: ${relative}`);
18
+ return path.join(root, ...normalized.split("/"));
19
+ }
20
+ function formatErrors(errors) {
21
+ return (errors ?? []).map((error) => `${error.instancePath || "/"}: ${error.message ?? error.keyword}`);
22
+ }
23
+ async function profileValidator(root, pack) {
24
+ if (!pack.runtimeState)
25
+ throw new Error(`Capability pack ${pack.id} has no runtime state profile`);
26
+ const schema = JSON.parse(await readFile(safeRuntimePath(root, pack.runtimeState.stateSchema), "utf8"));
27
+ const ajv = new Ajv2020({ allErrors: true, strict: true });
28
+ addFormats(ajv);
29
+ return ajv.compile(schema);
30
+ }
31
+ export async function validatePackState(root, pack, state) {
32
+ const validate = await profileValidator(root, pack);
33
+ return validate(state) ? [] : formatErrors(validate.errors);
34
+ }
35
+ export async function initializePackState(root, pack) {
36
+ if (!pack.runtimeState)
37
+ throw new Error(`Capability pack ${pack.id} has no runtime state profile`);
38
+ const initial = JSON.parse(await readFile(safeRuntimePath(root, pack.runtimeState.initialState), "utf8"));
39
+ if (!isObject(initial))
40
+ throw new Error(`Capability pack ${pack.id} initial state must be a JSON object`);
41
+ const errors = await validatePackState(root, pack, initial);
42
+ if (errors.length > 0)
43
+ throw new Error(`Invalid initial state for ${pack.id}: ${errors.join("; ")}`);
44
+ return structuredClone(initial);
45
+ }
46
+ function assertSafePatch(value, pointer = "") {
47
+ if (!isObject(value))
48
+ return;
49
+ for (const [key, child] of Object.entries(value)) {
50
+ if (FORBIDDEN_KEYS.has(key))
51
+ throw new Error(`Forbidden runtime state patch key: ${pointer}/${key}`);
52
+ assertSafePatch(child, `${pointer}/${key}`);
53
+ }
54
+ }
55
+ export function applyJsonMergePatch(current, patch) {
56
+ assertSafePatch(patch);
57
+ const result = structuredClone(current);
58
+ for (const [key, value] of Object.entries(patch)) {
59
+ if (value === null)
60
+ delete result[key];
61
+ else if (isObject(value)) {
62
+ const existing = result[key];
63
+ result[key] = applyJsonMergePatch(isObject(existing) ? existing : {}, value);
64
+ }
65
+ else
66
+ result[key] = structuredClone(value);
67
+ }
68
+ return result;
69
+ }
70
+ export async function applyValidatedPackStatePatch(root, pack, current, patch) {
71
+ if (!isObject(current))
72
+ throw new Error("Current runtime state must be a JSON object");
73
+ if (!isObject(patch))
74
+ throw new Error("Runtime state patch must be a JSON object");
75
+ const currentErrors = await validatePackState(root, pack, current);
76
+ if (currentErrors.length > 0)
77
+ throw new Error(`Current runtime state is invalid: ${currentErrors.join("; ")}`);
78
+ const candidate = applyJsonMergePatch(current, patch);
79
+ const candidateErrors = await validatePackState(root, pack, candidate);
80
+ if (candidateErrors.length > 0)
81
+ throw new Error(`Runtime state patch rejected: ${candidateErrors.join("; ")}`);
82
+ return candidate;
83
+ }
84
+ export async function validatePackRuntimeStateProfile(root, pack) {
85
+ if (!pack.runtimeState)
86
+ return [];
87
+ try {
88
+ await initializePackState(root, pack);
89
+ return [];
90
+ }
91
+ catch (error) {
92
+ return [`${pack.id}: ${error.message}`];
93
+ }
94
+ }
95
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/runtime/state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export declare const LIFECYCLE_STAGES: readonly ["authoring", "storage", "retrieval", "selection", "execution", "evolution"];
2
+ export type LifecycleStage = typeof LIFECYCLE_STAGES[number];
3
+ export type LifecycleReviewStatus = "pass" | "fail" | "not-applicable";
4
+ export interface LifecycleStageReview {
5
+ stage: LifecycleStage;
6
+ status: LifecycleReviewStatus;
7
+ threats: string[];
8
+ evidence: string[];
9
+ residualRisk: string;
10
+ rationale?: string;
11
+ }
12
+ export interface LifecycleSecurityReview {
13
+ schemaVersion: 1;
14
+ id: string;
15
+ subject: {
16
+ id: string;
17
+ type: "skill" | "mcp-server" | "plugin" | "harness";
18
+ version: string;
19
+ revision?: string;
20
+ };
21
+ reviewedAt: string;
22
+ reviewer: string;
23
+ stages: LifecycleStageReview[];
24
+ }
25
+ export declare function evaluateLifecycleSecurityReview(review: LifecycleSecurityReview): {
26
+ passed: boolean;
27
+ failures: string[];
28
+ };
@@ -0,0 +1,38 @@
1
+ export const LIFECYCLE_STAGES = [
2
+ "authoring",
3
+ "storage",
4
+ "retrieval",
5
+ "selection",
6
+ "execution",
7
+ "evolution"
8
+ ];
9
+ export function evaluateLifecycleSecurityReview(review) {
10
+ const failures = [];
11
+ const counts = new Map();
12
+ for (const item of review.stages)
13
+ counts.set(item.stage, (counts.get(item.stage) ?? 0) + 1);
14
+ for (const stage of LIFECYCLE_STAGES) {
15
+ const count = counts.get(stage) ?? 0;
16
+ if (count === 0)
17
+ failures.push(`missing lifecycle stage: ${stage}`);
18
+ if (count > 1)
19
+ failures.push(`duplicate lifecycle stage: ${stage}`);
20
+ }
21
+ for (const item of review.stages) {
22
+ if (item.status === "fail")
23
+ failures.push(`${item.stage}: review failed`);
24
+ if (item.status === "pass" && item.evidence.length === 0) {
25
+ failures.push(`${item.stage}: passing review requires evidence`);
26
+ }
27
+ if (item.status !== "not-applicable" && item.threats.length === 0) {
28
+ failures.push(`${item.stage}: applicable review requires at least one threat`);
29
+ }
30
+ if (item.status === "not-applicable" && !item.rationale?.trim()) {
31
+ failures.push(`${item.stage}: not-applicable requires a rationale`);
32
+ }
33
+ if (!item.residualRisk.trim())
34
+ failures.push(`${item.stage}: residual risk must be documented`);
35
+ }
36
+ return { passed: failures.length === 0, failures: [...new Set(failures)].sort() };
37
+ }
38
+ //# sourceMappingURL=lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/security/lifecycle.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,WAAW;IACX,SAAS;IACT,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;CACH,CAAC;AA4BX,MAAM,UAAU,+BAA+B,CAC7C,MAA+B;IAE/B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;IACjD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM;QAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAE5F,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,KAAK,KAAK,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,4BAA4B,KAAK,EAAE,CAAC,CAAC;QACpE,IAAI,KAAK,GAAG,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,iBAAiB,CAAC,CAAC;QAC1E,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzD,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,oCAAoC,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,kDAAkD,CAAC,CAAC;QACjF,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,gBAAgB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;YAChE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,uCAAuC,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,oCAAoC,CAAC,CAAC;IAClG,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AACpF,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { EvolutionAttempt } from "./types.js";
2
+ export declare function evaluateEvolutionAttempt(attempt: EvolutionAttempt): {
3
+ accepted: boolean;
4
+ failures: string[];
5
+ };
@@ -0,0 +1,51 @@
1
+ function editShapeFailure(edit, index) {
2
+ const number = index + 1;
3
+ if (!edit.path.startsWith("/"))
4
+ return `edit ${number} path must be an absolute document pointer`;
5
+ if (!edit.rationale.trim())
6
+ return `edit ${number} requires a rationale`;
7
+ if (edit.operation === "add" && (edit.after === undefined || edit.before !== undefined)) {
8
+ return `edit ${number} add requires after and forbids before`;
9
+ }
10
+ if (edit.operation === "delete" && (edit.before === undefined || edit.after !== undefined)) {
11
+ return `edit ${number} delete requires before and forbids after`;
12
+ }
13
+ if (edit.operation === "replace" && (edit.before === undefined || edit.after === undefined)) {
14
+ return `edit ${number} replace requires before and after`;
15
+ }
16
+ return undefined;
17
+ }
18
+ export function evaluateEvolutionAttempt(attempt) {
19
+ const failures = [];
20
+ if (attempt.editBudget < 1)
21
+ failures.push("edit budget must be at least 1");
22
+ if (attempt.edits.length === 0)
23
+ failures.push("an evolution attempt requires at least one edit");
24
+ if (attempt.edits.length > attempt.editBudget) {
25
+ failures.push(`edit count ${attempt.edits.length} exceeds budget ${attempt.editBudget}`);
26
+ }
27
+ attempt.edits.forEach((edit, index) => {
28
+ const failure = editShapeFailure(edit, index);
29
+ if (failure)
30
+ failures.push(failure);
31
+ });
32
+ if (attempt.baseRevision === attempt.candidateRevision) {
33
+ failures.push("candidate revision must differ from base revision");
34
+ }
35
+ if (!(attempt.selection.after > attempt.selection.before)) {
36
+ failures.push("selection score did not strictly improve");
37
+ }
38
+ if (attempt.protectedRegressions.length > 0) {
39
+ failures.push(`protected regressions: ${attempt.protectedRegressions.join(", ")}`);
40
+ }
41
+ const evidenceAccepted = failures.length === 0;
42
+ const declaredAccepted = attempt.decision.status === "accepted";
43
+ if (evidenceAccepted !== declaredAccepted) {
44
+ failures.push(`declared decision ${attempt.decision.status} disagrees with evaluated decision ${evidenceAccepted ? "accepted" : "rejected"}`);
45
+ }
46
+ if (!declaredAccepted && attempt.decision.reasons.length === 0) {
47
+ failures.push("a rejected attempt requires at least one recorded reason");
48
+ }
49
+ return { accepted: evidenceAccepted && declaredAccepted, failures: [...new Set(failures)].sort() };
50
+ }
51
+ //# sourceMappingURL=attempts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attempts.js","sourceRoot":"","sources":["../../../src/train/attempts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { EvalDataset, RoutingEvaluationResult } from "../types.js";
2
+ import type { EvolutionEvaluation, EvolutionProposal } from "./types.js";
3
+ export declare function validateProposal(proposal: EvolutionProposal, datasetSplits: Record<string, EvalDataset["split"]>, knownKnowledgePatterns?: ReadonlySet<string>): string[];
4
+ export declare function protectedRegressionFailures(candidates: RoutingEvaluationResult[], baselines: RoutingEvaluationResult[], allowedRegression: number): string[];
5
+ export declare function recordPromotion(root: string, proposal: EvolutionProposal, evaluation: EvolutionEvaluation, reviewer: string): Promise<string>;
6
+ export declare function recordRollback(root: string, promotionPath: string, reviewer: string): Promise<string>;
@@ -0,0 +1,172 @@
1
+ import { createHash } from "node:crypto";
2
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { stringify } from "yaml";
5
+ import { parse } from "yaml";
6
+ const PERMISSION_ORDER = {
7
+ network: ["none", "read", "write"],
8
+ filesystem: ["none", "read", "workspace-write", "unrestricted-write"],
9
+ shell: ["none", "allowlisted", "unrestricted"],
10
+ secrets: ["none", "named-read"],
11
+ externalCommunication: ["none", "draft", "send"]
12
+ };
13
+ function normalizedRelative(file) {
14
+ const normalized = path.posix.normalize(file.replaceAll("\\", "/"));
15
+ if (path.posix.isAbsolute(normalized) || normalized === ".." || normalized.startsWith("../"))
16
+ return undefined;
17
+ return normalized;
18
+ }
19
+ function permissionExpansions(before, after) {
20
+ const expansions = [];
21
+ for (const key of Object.keys(PERMISSION_ORDER)) {
22
+ const order = PERMISSION_ORDER[key];
23
+ if (order.indexOf(after[key]) > order.indexOf(before[key])) {
24
+ expansions.push(`${key} ${before[key]} -> ${after[key]}`);
25
+ }
26
+ }
27
+ return expansions;
28
+ }
29
+ export function validateProposal(proposal, datasetSplits, knownKnowledgePatterns = new Set()) {
30
+ const errors = [];
31
+ if (proposal.authorship) {
32
+ if (!proposal.authorship.author.trim())
33
+ errors.push("proposal authorship requires an author identity");
34
+ if (proposal.authorship.mode === "human" && proposal.authorship.generator) {
35
+ errors.push("human-authored proposal must not declare a model generator");
36
+ }
37
+ if (proposal.authorship.mode !== "human" && !proposal.authorship.generator?.trim()) {
38
+ errors.push(`${proposal.authorship.mode} proposal requires a generator identity`);
39
+ }
40
+ }
41
+ for (const pattern of proposal.knowledgePatterns ?? []) {
42
+ if (!knownKnowledgePatterns.has(pattern))
43
+ errors.push(`proposal references unknown evolution pattern: ${pattern}`);
44
+ }
45
+ const allowed = new Set(proposal.allowedFiles.map(normalizedRelative).filter((file) => Boolean(file)));
46
+ for (const file of proposal.changedFiles) {
47
+ const normalized = normalizedRelative(file);
48
+ if (!normalized)
49
+ errors.push(`invalid changed file path: ${file}`);
50
+ else if (!allowed.has(normalized))
51
+ errors.push(`changed file is outside the bounded proposal: ${normalized}`);
52
+ if (normalized?.startsWith("skills/") || normalized?.startsWith(".agents/skills/")) {
53
+ errors.push(`generated Skill projection must not be edited directly: ${normalized}`);
54
+ }
55
+ if (normalized === "evals/gates.yaml")
56
+ errors.push("proposal must not change its release gate");
57
+ if (normalized?.startsWith("evals/baselines/"))
58
+ errors.push(`proposal must not change protected evaluation baseline: ${normalized}`);
59
+ const datasetMatch = normalized?.match(/^evals\/datasets\/([^/]+)\.ya?ml$/u);
60
+ if (datasetMatch?.[1]) {
61
+ const datasetId = datasetMatch[1].toLowerCase();
62
+ const split = Object.entries(datasetSplits).find(([id]) => id.toLowerCase() === datasetId)?.[1];
63
+ if (split === "test" || split === "adversarial" || split === "tasks") {
64
+ errors.push(`proposal must not change protected evaluation dataset: ${datasetId}`);
65
+ }
66
+ }
67
+ }
68
+ for (const dataset of proposal.generationDatasets) {
69
+ const split = datasetSplits[dataset];
70
+ if (split === "test" || split === "adversarial" || split === "tasks") {
71
+ errors.push(`generation dataset ${dataset} has protected split ${split}`);
72
+ }
73
+ else if (!split)
74
+ errors.push(`generation dataset has unknown split: ${dataset}`);
75
+ }
76
+ for (const dataset of proposal.generationDatasets) {
77
+ if (proposal.evaluationDatasets.includes(dataset)) {
78
+ errors.push(`dataset cannot be both generation and evaluation evidence: ${dataset}`);
79
+ }
80
+ }
81
+ const expansions = permissionExpansions(proposal.permissionBefore, proposal.permissionAfter);
82
+ const permissionApproval = proposal.approvals.some((approval) => approval.type === "permission-expansion" && approval.approvedBy.trim().length > 0);
83
+ if (!permissionApproval) {
84
+ for (const expansion of expansions) {
85
+ errors.push(`permission expansion requires explicit permission-expansion approval: ${expansion}`);
86
+ }
87
+ }
88
+ if (proposal.targetSkill === "meta-skill-governor" &&
89
+ proposal.changedFiles.some((file) => /(^|\/)(evals\/gates\.yaml|schemas\/evolution-proposal|meta-skill-governor\/references\/evolution-policy)/u.test(file))) {
90
+ errors.push("a meta Skill proposal must not weaken or change its own gate");
91
+ }
92
+ if (proposal.rollbackRevision === proposal.candidateRevision) {
93
+ errors.push("rollback revision must differ from candidate revision");
94
+ }
95
+ return [...new Set(errors)].sort();
96
+ }
97
+ export function protectedRegressionFailures(candidates, baselines, allowedRegression) {
98
+ const baselineByDataset = new Map(baselines.map((baseline) => [baseline.dataset, baseline]));
99
+ const failures = [];
100
+ for (const candidate of candidates.filter((result) => result.protected)) {
101
+ const baseline = baselineByDataset.get(candidate.dataset);
102
+ if (!baseline) {
103
+ failures.push(`${candidate.dataset} has no protected baseline`);
104
+ continue;
105
+ }
106
+ for (const metric of Object.keys(candidate.metrics)) {
107
+ const regression = baseline.metrics[metric] - candidate.metrics[metric];
108
+ if (regression > allowedRegression + Number.EPSILON) {
109
+ failures.push(`${candidate.dataset}/${metric} regressed by ${regression.toFixed(4)}`);
110
+ }
111
+ }
112
+ }
113
+ return failures.sort();
114
+ }
115
+ export async function recordPromotion(root, proposal, evaluation, reviewer) {
116
+ if (!evaluation.passed || evaluation.failures.length > 0) {
117
+ throw new Error("Cannot promote a proposal that failed evaluation");
118
+ }
119
+ if (!reviewer.trim())
120
+ throw new Error("Promotion requires a reviewer identity");
121
+ const reviewerIdentity = reviewer.trim().toLocaleLowerCase();
122
+ if (proposal.authorship?.mode === "human" && proposal.authorship.author.trim().toLocaleLowerCase() === reviewerIdentity) {
123
+ throw new Error("Human-authored proposal requires an independent reviewer");
124
+ }
125
+ if (proposal.authorship?.mode !== "human" &&
126
+ proposal.authorship?.generator?.trim().toLocaleLowerCase() === reviewerIdentity) {
127
+ throw new Error("Model-authored proposal cannot be approved by its generating model");
128
+ }
129
+ const decisionsRoot = path.join(root, ".skill-system", "decisions");
130
+ await mkdir(decisionsRoot, { recursive: true });
131
+ const decisionPath = path.join(decisionsRoot, `${proposal.id}-promotion.yaml`);
132
+ const proposalDigest = createHash("sha256").update(JSON.stringify(proposal)).digest("hex");
133
+ const decision = {
134
+ schemaVersion: 1,
135
+ id: `${proposal.id}-promotion`,
136
+ action: "promote",
137
+ proposal: proposal.id,
138
+ proposalDigest: `sha256:${proposalDigest}`,
139
+ knowledgePatterns: proposal.knowledgePatterns ?? [],
140
+ baseRevision: proposal.baseRevision,
141
+ candidateRevision: proposal.candidateRevision,
142
+ rollbackRevision: proposal.rollbackRevision,
143
+ reviewedBy: reviewer,
144
+ recordedAt: new Date().toISOString(),
145
+ evaluation
146
+ };
147
+ await writeFile(decisionPath, stringify(decision), { encoding: "utf8", flag: "wx" });
148
+ return decisionPath;
149
+ }
150
+ export async function recordRollback(root, promotionPath, reviewer) {
151
+ if (!reviewer.trim())
152
+ throw new Error("Rollback requires a reviewer identity");
153
+ const promotion = parse(await readFile(promotionPath, "utf8"));
154
+ if (promotion.action !== "promote" || !promotion.proposal || !promotion.rollbackRevision) {
155
+ throw new Error("Rollback input is not a valid promotion decision");
156
+ }
157
+ const decisionsRoot = path.join(root, ".skill-system", "decisions");
158
+ await mkdir(decisionsRoot, { recursive: true });
159
+ const rollbackPath = path.join(decisionsRoot, `${promotion.proposal}-rollback.yaml`);
160
+ await writeFile(rollbackPath, stringify({
161
+ schemaVersion: 1,
162
+ id: `${promotion.proposal}-rollback`,
163
+ action: "rollback",
164
+ proposal: promotion.proposal,
165
+ fromRevision: promotion.candidateRevision,
166
+ toRevision: promotion.rollbackRevision,
167
+ reviewedBy: reviewer,
168
+ recordedAt: new Date().toISOString()
169
+ }), { encoding: "utf8", flag: "wx" });
170
+ return rollbackPath;
171
+ }
172
+ //# sourceMappingURL=governance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governance.js","sourceRoot":"","sources":["../../../src/train/governance.ts"],"names":[],"mappings":"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"}