@modootoday/pmcp 0.13.0 → 0.14.0

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 (846) hide show
  1. package/.agents/plugins/marketplace.json +1157 -0
  2. package/.claude-plugin/marketplace.json +825 -0
  3. package/.claude-plugin/plugin.json +9 -0
  4. package/.mcp.json +9 -0
  5. package/NOTICE +4 -2
  6. package/README.md +67 -4
  7. package/dist/cli.js +1345 -741
  8. package/dist/{config-CJ43_oBS.d.ts → config-BkSpjUG6.d.ts} +1 -0
  9. package/dist/{embed-BW6AWD1e.d.ts → embed-CVCEz2FH.d.ts} +1 -1
  10. package/dist/http.d.ts +3 -3
  11. package/dist/http.js +216 -112
  12. package/dist/index.d.ts +7 -14
  13. package/dist/index.js +382 -262
  14. package/dist/mailbox/index.d.ts +1 -1
  15. package/dist/mailbox/index.js +18 -2
  16. package/dist/{server-9w4R1caM.d.ts → server-DAcT89iv.d.ts} +5 -5
  17. package/dist/stdio.d.ts +1 -1
  18. package/dist/stdio.js +229 -121
  19. package/dist/tui-worker.js +18 -2
  20. package/docs/catalog.json +5422 -0
  21. package/docs/manual-library-skills.md +74 -0
  22. package/docs/skills.md +46 -0
  23. package/docs/terminal-workspace.md +16 -14
  24. package/gemini-extension.json +11 -0
  25. package/mcp.json +10 -0
  26. package/package.json +26 -5
  27. package/plugin.json +10 -0
  28. package/plugins/agent-base-9/.claude-plugin/plugin.json +9 -0
  29. package/plugins/agent-base-9/LICENSE +93 -0
  30. package/plugins/agent-base-9/NOTICE +51 -0
  31. package/plugins/agent-base-9/gemini-extension.json +1 -0
  32. package/plugins/agent-base-9/plugin.json +10 -0
  33. package/plugins/agent-base-9/skills/agent-base/SKILL.md +118 -0
  34. package/plugins/ajv-formats-3/.claude-plugin/plugin.json +9 -0
  35. package/plugins/ajv-formats-3/LICENSE +93 -0
  36. package/plugins/ajv-formats-3/NOTICE +51 -0
  37. package/plugins/ajv-formats-3/gemini-extension.json +1 -0
  38. package/plugins/ajv-formats-3/plugin.json +10 -0
  39. package/plugins/ajv-formats-3/skills/ajv-formats/SKILL.md +178 -0
  40. package/plugins/allure-js-commons-3/.claude-plugin/plugin.json +9 -0
  41. package/plugins/allure-js-commons-3/LICENSE +93 -0
  42. package/plugins/allure-js-commons-3/NOTICE +51 -0
  43. package/plugins/allure-js-commons-3/gemini-extension.json +1 -0
  44. package/plugins/allure-js-commons-3/plugin.json +10 -0
  45. package/plugins/allure-js-commons-3/skills/allure-js-commons/SKILL.md +173 -0
  46. package/plugins/ansi-escapes-7/.claude-plugin/plugin.json +9 -0
  47. package/plugins/ansi-escapes-7/LICENSE +93 -0
  48. package/plugins/ansi-escapes-7/NOTICE +51 -0
  49. package/plugins/ansi-escapes-7/gemini-extension.json +1 -0
  50. package/plugins/ansi-escapes-7/plugin.json +10 -0
  51. package/plugins/ansi-escapes-7/skills/ansi-escapes/SKILL.md +189 -0
  52. package/plugins/ansi-styles-7/.claude-plugin/plugin.json +9 -0
  53. package/plugins/ansi-styles-7/LICENSE +93 -0
  54. package/plugins/ansi-styles-7/NOTICE +51 -0
  55. package/plugins/ansi-styles-7/gemini-extension.json +1 -0
  56. package/plugins/ansi-styles-7/plugin.json +10 -0
  57. package/plugins/ansi-styles-7/skills/ansi-styles/SKILL.md +161 -0
  58. package/plugins/app-builder-lib-26/.claude-plugin/plugin.json +9 -0
  59. package/plugins/app-builder-lib-26/LICENSE +93 -0
  60. package/plugins/app-builder-lib-26/NOTICE +51 -0
  61. package/plugins/app-builder-lib-26/gemini-extension.json +1 -0
  62. package/plugins/app-builder-lib-26/plugin.json +10 -0
  63. package/plugins/app-builder-lib-26/skills/app-builder-lib/SKILL.md +84 -0
  64. package/plugins/autoprefixer-10/.claude-plugin/plugin.json +9 -0
  65. package/plugins/autoprefixer-10/LICENSE +93 -0
  66. package/plugins/autoprefixer-10/NOTICE +51 -0
  67. package/plugins/autoprefixer-10/gemini-extension.json +1 -0
  68. package/plugins/autoprefixer-10/plugin.json +10 -0
  69. package/plugins/autoprefixer-10/skills/autoprefixer/SKILL.md +141 -0
  70. package/plugins/babel-plugin-transform-typescript-8/.claude-plugin/plugin.json +9 -0
  71. package/plugins/babel-plugin-transform-typescript-8/LICENSE +93 -0
  72. package/plugins/babel-plugin-transform-typescript-8/NOTICE +51 -0
  73. package/plugins/babel-plugin-transform-typescript-8/gemini-extension.json +1 -0
  74. package/plugins/babel-plugin-transform-typescript-8/plugin.json +10 -0
  75. package/plugins/babel-plugin-transform-typescript-8/skills/babel-plugin-transform-typescript/SKILL.md +135 -0
  76. package/plugins/bcryptjs-2/.claude-plugin/plugin.json +9 -0
  77. package/plugins/bcryptjs-2/LICENSE +93 -0
  78. package/plugins/bcryptjs-2/NOTICE +51 -0
  79. package/plugins/bcryptjs-2/gemini-extension.json +1 -0
  80. package/plugins/bcryptjs-2/plugin.json +10 -0
  81. package/plugins/bcryptjs-2/skills/bcryptjs/SKILL.md +78 -0
  82. package/plugins/bullmq-5/.claude-plugin/plugin.json +9 -0
  83. package/plugins/bullmq-5/LICENSE +93 -0
  84. package/plugins/bullmq-5/NOTICE +51 -0
  85. package/plugins/bullmq-5/gemini-extension.json +1 -0
  86. package/plugins/bullmq-5/plugin.json +10 -0
  87. package/plugins/bullmq-5/skills/bullmq/SKILL.md +59 -0
  88. package/plugins/bun-types-1/.claude-plugin/plugin.json +9 -0
  89. package/plugins/bun-types-1/LICENSE +93 -0
  90. package/plugins/bun-types-1/NOTICE +51 -0
  91. package/plugins/bun-types-1/gemini-extension.json +1 -0
  92. package/plugins/bun-types-1/plugin.json +10 -0
  93. package/plugins/bun-types-1/skills/bun-types/SKILL.md +119 -0
  94. package/plugins/chai-6/.claude-plugin/plugin.json +9 -0
  95. package/plugins/chai-6/LICENSE +93 -0
  96. package/plugins/chai-6/NOTICE +51 -0
  97. package/plugins/chai-6/gemini-extension.json +1 -0
  98. package/plugins/chai-6/plugin.json +10 -0
  99. package/plugins/chai-6/skills/chai/SKILL.md +160 -0
  100. package/plugins/chalk-6/.claude-plugin/plugin.json +9 -0
  101. package/plugins/chalk-6/LICENSE +93 -0
  102. package/plugins/chalk-6/NOTICE +51 -0
  103. package/plugins/chalk-6/gemini-extension.json +1 -0
  104. package/plugins/chalk-6/plugin.json +10 -0
  105. package/plugins/chalk-6/skills/chalk/SKILL.md +167 -0
  106. package/plugins/cli-cursor-5/.claude-plugin/plugin.json +9 -0
  107. package/plugins/cli-cursor-5/LICENSE +93 -0
  108. package/plugins/cli-cursor-5/NOTICE +51 -0
  109. package/plugins/cli-cursor-5/gemini-extension.json +1 -0
  110. package/plugins/cli-cursor-5/plugin.json +10 -0
  111. package/plugins/cli-cursor-5/skills/cli-cursor/SKILL.md +117 -0
  112. package/plugins/cli-spinners-3/.claude-plugin/plugin.json +9 -0
  113. package/plugins/cli-spinners-3/LICENSE +93 -0
  114. package/plugins/cli-spinners-3/NOTICE +51 -0
  115. package/plugins/cli-spinners-3/gemini-extension.json +1 -0
  116. package/plugins/cli-spinners-3/plugin.json +10 -0
  117. package/plugins/cli-spinners-3/skills/cli-spinners/SKILL.md +101 -0
  118. package/plugins/clickhouse-client-1/.claude-plugin/plugin.json +9 -0
  119. package/plugins/clickhouse-client-1/LICENSE +93 -0
  120. package/plugins/clickhouse-client-1/NOTICE +51 -0
  121. package/plugins/clickhouse-client-1/gemini-extension.json +1 -0
  122. package/plugins/clickhouse-client-1/plugin.json +10 -0
  123. package/plugins/clickhouse-client-1/skills/clickhouse-client/SKILL.md +54 -0
  124. package/plugins/clickhouse-client-web-1/.claude-plugin/plugin.json +9 -0
  125. package/plugins/clickhouse-client-web-1/LICENSE +93 -0
  126. package/plugins/clickhouse-client-web-1/NOTICE +51 -0
  127. package/plugins/clickhouse-client-web-1/gemini-extension.json +1 -0
  128. package/plugins/clickhouse-client-web-1/plugin.json +10 -0
  129. package/plugins/clickhouse-client-web-1/skills/clickhouse-client-web/SKILL.md +52 -0
  130. package/plugins/cliui-9/.claude-plugin/plugin.json +9 -0
  131. package/plugins/cliui-9/LICENSE +93 -0
  132. package/plugins/cliui-9/NOTICE +51 -0
  133. package/plugins/cliui-9/gemini-extension.json +1 -0
  134. package/plugins/cliui-9/plugin.json +10 -0
  135. package/plugins/cliui-9/skills/cliui/SKILL.md +163 -0
  136. package/plugins/cloudflare-workers-types-4/.claude-plugin/plugin.json +9 -0
  137. package/plugins/cloudflare-workers-types-4/LICENSE +93 -0
  138. package/plugins/cloudflare-workers-types-4/NOTICE +51 -0
  139. package/plugins/cloudflare-workers-types-4/gemini-extension.json +1 -0
  140. package/plugins/cloudflare-workers-types-4/plugin.json +10 -0
  141. package/plugins/cloudflare-workers-types-4/skills/cloudflare-workers-types/SKILL.md +63 -0
  142. package/plugins/commander-15/.claude-plugin/plugin.json +9 -0
  143. package/plugins/commander-15/LICENSE +93 -0
  144. package/plugins/commander-15/NOTICE +51 -0
  145. package/plugins/commander-15/gemini-extension.json +1 -0
  146. package/plugins/commander-15/plugin.json +10 -0
  147. package/plugins/commander-15/skills/commander/SKILL.md +204 -0
  148. package/plugins/content-type-3/.claude-plugin/plugin.json +9 -0
  149. package/plugins/content-type-3/LICENSE +93 -0
  150. package/plugins/content-type-3/NOTICE +51 -0
  151. package/plugins/content-type-3/gemini-extension.json +1 -0
  152. package/plugins/content-type-3/plugin.json +10 -0
  153. package/plugins/content-type-3/skills/content-type/SKILL.md +126 -0
  154. package/plugins/croner-10/.claude-plugin/plugin.json +9 -0
  155. package/plugins/croner-10/LICENSE +93 -0
  156. package/plugins/croner-10/NOTICE +51 -0
  157. package/plugins/croner-10/gemini-extension.json +1 -0
  158. package/plugins/croner-10/plugin.json +10 -0
  159. package/plugins/croner-10/skills/croner/SKILL.md +182 -0
  160. package/plugins/css-tree-3/.claude-plugin/plugin.json +9 -0
  161. package/plugins/css-tree-3/LICENSE +93 -0
  162. package/plugins/css-tree-3/NOTICE +51 -0
  163. package/plugins/css-tree-3/gemini-extension.json +1 -0
  164. package/plugins/css-tree-3/plugin.json +10 -0
  165. package/plugins/css-tree-3/skills/css-tree/SKILL.md +165 -0
  166. package/plugins/data-urls-7/.claude-plugin/plugin.json +9 -0
  167. package/plugins/data-urls-7/LICENSE +93 -0
  168. package/plugins/data-urls-7/NOTICE +51 -0
  169. package/plugins/data-urls-7/gemini-extension.json +1 -0
  170. package/plugins/data-urls-7/plugin.json +10 -0
  171. package/plugins/data-urls-7/skills/data-urls/SKILL.md +136 -0
  172. package/plugins/deep-eql-5/.claude-plugin/plugin.json +9 -0
  173. package/plugins/deep-eql-5/LICENSE +93 -0
  174. package/plugins/deep-eql-5/NOTICE +51 -0
  175. package/plugins/deep-eql-5/gemini-extension.json +1 -0
  176. package/plugins/deep-eql-5/plugin.json +10 -0
  177. package/plugins/deep-eql-5/skills/deep-eql/SKILL.md +130 -0
  178. package/plugins/dexie-4/.claude-plugin/plugin.json +9 -0
  179. package/plugins/dexie-4/LICENSE +93 -0
  180. package/plugins/dexie-4/NOTICE +51 -0
  181. package/plugins/dexie-4/gemini-extension.json +1 -0
  182. package/plugins/dexie-4/plugin.json +10 -0
  183. package/plugins/dexie-4/skills/dexie/SKILL.md +192 -0
  184. package/plugins/emittery-2/.claude-plugin/plugin.json +9 -0
  185. package/plugins/emittery-2/LICENSE +93 -0
  186. package/plugins/emittery-2/NOTICE +51 -0
  187. package/plugins/emittery-2/gemini-extension.json +1 -0
  188. package/plugins/emittery-2/plugin.json +10 -0
  189. package/plugins/emittery-2/skills/emittery/SKILL.md +234 -0
  190. package/plugins/eslint-10/.claude-plugin/plugin.json +9 -0
  191. package/plugins/eslint-10/LICENSE +93 -0
  192. package/plugins/eslint-10/NOTICE +51 -0
  193. package/plugins/eslint-10/gemini-extension.json +1 -0
  194. package/plugins/eslint-10/plugin.json +10 -0
  195. package/plugins/eslint-10/skills/eslint/SKILL.md +77 -0
  196. package/plugins/eslint-9/.claude-plugin/plugin.json +9 -0
  197. package/plugins/eslint-9/LICENSE +93 -0
  198. package/plugins/eslint-9/NOTICE +51 -0
  199. package/plugins/eslint-9/gemini-extension.json +1 -0
  200. package/plugins/eslint-9/plugin.json +10 -0
  201. package/plugins/eslint-9/skills/eslint/SKILL.md +93 -0
  202. package/plugins/eslint-plugin-react-hooks-7/.claude-plugin/plugin.json +9 -0
  203. package/plugins/eslint-plugin-react-hooks-7/LICENSE +93 -0
  204. package/plugins/eslint-plugin-react-hooks-7/NOTICE +51 -0
  205. package/plugins/eslint-plugin-react-hooks-7/gemini-extension.json +1 -0
  206. package/plugins/eslint-plugin-react-hooks-7/plugin.json +10 -0
  207. package/plugins/eslint-plugin-react-hooks-7/skills/eslint-plugin-react-hooks/SKILL.md +173 -0
  208. package/plugins/eslint-plugin-testing-library-7/.claude-plugin/plugin.json +9 -0
  209. package/plugins/eslint-plugin-testing-library-7/LICENSE +93 -0
  210. package/plugins/eslint-plugin-testing-library-7/NOTICE +51 -0
  211. package/plugins/eslint-plugin-testing-library-7/gemini-extension.json +1 -0
  212. package/plugins/eslint-plugin-testing-library-7/plugin.json +10 -0
  213. package/plugins/eslint-plugin-testing-library-7/skills/eslint-plugin-testing-library/SKILL.md +193 -0
  214. package/plugins/expect-type-1/.claude-plugin/plugin.json +9 -0
  215. package/plugins/expect-type-1/LICENSE +93 -0
  216. package/plugins/expect-type-1/NOTICE +51 -0
  217. package/plugins/expect-type-1/gemini-extension.json +1 -0
  218. package/plugins/expect-type-1/plugin.json +10 -0
  219. package/plugins/expect-type-1/skills/expect-type/SKILL.md +165 -0
  220. package/plugins/express-5/.claude-plugin/plugin.json +9 -0
  221. package/plugins/express-5/LICENSE +93 -0
  222. package/plugins/express-5/NOTICE +51 -0
  223. package/plugins/express-5/gemini-extension.json +1 -0
  224. package/plugins/express-5/plugin.json +10 -0
  225. package/plugins/express-5/skills/express/SKILL.md +179 -0
  226. package/plugins/fake-indexeddb-6/.claude-plugin/plugin.json +9 -0
  227. package/plugins/fake-indexeddb-6/LICENSE +93 -0
  228. package/plugins/fake-indexeddb-6/NOTICE +51 -0
  229. package/plugins/fake-indexeddb-6/gemini-extension.json +1 -0
  230. package/plugins/fake-indexeddb-6/plugin.json +10 -0
  231. package/plugins/fake-indexeddb-6/skills/fake-indexeddb/SKILL.md +147 -0
  232. package/plugins/fast-check-4/.claude-plugin/plugin.json +9 -0
  233. package/plugins/fast-check-4/LICENSE +93 -0
  234. package/plugins/fast-check-4/NOTICE +51 -0
  235. package/plugins/fast-check-4/gemini-extension.json +1 -0
  236. package/plugins/fast-check-4/plugin.json +10 -0
  237. package/plugins/fast-check-4/skills/fast-check/SKILL.md +168 -0
  238. package/plugins/figures-6/.claude-plugin/plugin.json +9 -0
  239. package/plugins/figures-6/LICENSE +93 -0
  240. package/plugins/figures-6/NOTICE +51 -0
  241. package/plugins/figures-6/gemini-extension.json +1 -0
  242. package/plugins/figures-6/plugin.json +10 -0
  243. package/plugins/figures-6/skills/figures/SKILL.md +99 -0
  244. package/plugins/firebase-12/.claude-plugin/plugin.json +9 -0
  245. package/plugins/firebase-12/LICENSE +93 -0
  246. package/plugins/firebase-12/NOTICE +51 -0
  247. package/plugins/firebase-12/gemini-extension.json +1 -0
  248. package/plugins/firebase-12/plugin.json +10 -0
  249. package/plugins/firebase-12/skills/firebase/SKILL.md +161 -0
  250. package/plugins/firebase-admin-14/.claude-plugin/plugin.json +9 -0
  251. package/plugins/firebase-admin-14/LICENSE +93 -0
  252. package/plugins/firebase-admin-14/NOTICE +51 -0
  253. package/plugins/firebase-admin-14/gemini-extension.json +1 -0
  254. package/plugins/firebase-admin-14/plugin.json +10 -0
  255. package/plugins/firebase-admin-14/skills/firebase-admin/SKILL.md +155 -0
  256. package/plugins/get-uri-8/.claude-plugin/plugin.json +9 -0
  257. package/plugins/get-uri-8/LICENSE +93 -0
  258. package/plugins/get-uri-8/NOTICE +51 -0
  259. package/plugins/get-uri-8/gemini-extension.json +1 -0
  260. package/plugins/get-uri-8/plugin.json +10 -0
  261. package/plugins/get-uri-8/skills/get-uri/SKILL.md +112 -0
  262. package/plugins/google-uuid-1/.claude-plugin/plugin.json +9 -0
  263. package/plugins/google-uuid-1/LICENSE +93 -0
  264. package/plugins/google-uuid-1/NOTICE +51 -0
  265. package/plugins/google-uuid-1/gemini-extension.json +1 -0
  266. package/plugins/google-uuid-1/plugin.json +10 -0
  267. package/plugins/google-uuid-1/skills/google-uuid/SKILL.md +70 -0
  268. package/plugins/graphql-16/.claude-plugin/plugin.json +9 -0
  269. package/plugins/graphql-16/LICENSE +93 -0
  270. package/plugins/graphql-16/NOTICE +51 -0
  271. package/plugins/graphql-16/gemini-extension.json +1 -0
  272. package/plugins/graphql-16/plugin.json +10 -0
  273. package/plugins/graphql-16/skills/graphql/SKILL.md +56 -0
  274. package/plugins/graphql-17/.claude-plugin/plugin.json +9 -0
  275. package/plugins/graphql-17/LICENSE +93 -0
  276. package/plugins/graphql-17/NOTICE +51 -0
  277. package/plugins/graphql-17/gemini-extension.json +1 -0
  278. package/plugins/graphql-17/plugin.json +10 -0
  279. package/plugins/graphql-17/skills/graphql/SKILL.md +159 -0
  280. package/plugins/graphql-yoga-5/.claude-plugin/plugin.json +9 -0
  281. package/plugins/graphql-yoga-5/LICENSE +93 -0
  282. package/plugins/graphql-yoga-5/NOTICE +51 -0
  283. package/plugins/graphql-yoga-5/gemini-extension.json +1 -0
  284. package/plugins/graphql-yoga-5/plugin.json +10 -0
  285. package/plugins/graphql-yoga-5/skills/graphql-yoga/SKILL.md +68 -0
  286. package/plugins/happy-dom-20/.claude-plugin/plugin.json +9 -0
  287. package/plugins/happy-dom-20/LICENSE +93 -0
  288. package/plugins/happy-dom-20/NOTICE +51 -0
  289. package/plugins/happy-dom-20/gemini-extension.json +1 -0
  290. package/plugins/happy-dom-20/plugin.json +10 -0
  291. package/plugins/happy-dom-20/skills/happy-dom/SKILL.md +172 -0
  292. package/plugins/hono-4/.claude-plugin/plugin.json +9 -0
  293. package/plugins/hono-4/LICENSE +93 -0
  294. package/plugins/hono-4/NOTICE +51 -0
  295. package/plugins/hono-4/gemini-extension.json +1 -0
  296. package/plugins/hono-4/plugin.json +10 -0
  297. package/plugins/hono-4/skills/hono/SKILL.md +203 -0
  298. package/plugins/http-proxy-agent-9/.claude-plugin/plugin.json +9 -0
  299. package/plugins/http-proxy-agent-9/LICENSE +93 -0
  300. package/plugins/http-proxy-agent-9/NOTICE +51 -0
  301. package/plugins/http-proxy-agent-9/gemini-extension.json +1 -0
  302. package/plugins/http-proxy-agent-9/plugin.json +10 -0
  303. package/plugins/http-proxy-agent-9/skills/http-proxy-agent/SKILL.md +142 -0
  304. package/plugins/human-signals-8/.claude-plugin/plugin.json +9 -0
  305. package/plugins/human-signals-8/LICENSE +93 -0
  306. package/plugins/human-signals-8/NOTICE +51 -0
  307. package/plugins/human-signals-8/gemini-extension.json +1 -0
  308. package/plugins/human-signals-8/plugin.json +10 -0
  309. package/plugins/human-signals-8/skills/human-signals/SKILL.md +81 -0
  310. package/plugins/inquirer-14/.claude-plugin/plugin.json +9 -0
  311. package/plugins/inquirer-14/LICENSE +93 -0
  312. package/plugins/inquirer-14/NOTICE +51 -0
  313. package/plugins/inquirer-14/gemini-extension.json +1 -0
  314. package/plugins/inquirer-14/plugin.json +10 -0
  315. package/plugins/inquirer-14/skills/inquirer/SKILL.md +152 -0
  316. package/plugins/ioredis-5/.claude-plugin/plugin.json +9 -0
  317. package/plugins/ioredis-5/LICENSE +93 -0
  318. package/plugins/ioredis-5/NOTICE +51 -0
  319. package/plugins/ioredis-5/gemini-extension.json +1 -0
  320. package/plugins/ioredis-5/plugin.json +10 -0
  321. package/plugins/ioredis-5/skills/ioredis/SKILL.md +63 -0
  322. package/plugins/ioredis-6/.claude-plugin/plugin.json +9 -0
  323. package/plugins/ioredis-6/LICENSE +93 -0
  324. package/plugins/ioredis-6/NOTICE +51 -0
  325. package/plugins/ioredis-6/gemini-extension.json +1 -0
  326. package/plugins/ioredis-6/plugin.json +10 -0
  327. package/plugins/ioredis-6/skills/ioredis/SKILL.md +204 -0
  328. package/plugins/ip-address-10/.claude-plugin/plugin.json +9 -0
  329. package/plugins/ip-address-10/LICENSE +93 -0
  330. package/plugins/ip-address-10/NOTICE +51 -0
  331. package/plugins/ip-address-10/gemini-extension.json +1 -0
  332. package/plugins/ip-address-10/plugin.json +10 -0
  333. package/plugins/ip-address-10/skills/ip-address/SKILL.md +184 -0
  334. package/plugins/jackspeak-4/.claude-plugin/plugin.json +9 -0
  335. package/plugins/jackspeak-4/LICENSE +93 -0
  336. package/plugins/jackspeak-4/NOTICE +51 -0
  337. package/plugins/jackspeak-4/gemini-extension.json +1 -0
  338. package/plugins/jackspeak-4/plugin.json +10 -0
  339. package/plugins/jackspeak-4/skills/jackspeak/SKILL.md +162 -0
  340. package/plugins/jake-12/.claude-plugin/plugin.json +9 -0
  341. package/plugins/jake-12/LICENSE +93 -0
  342. package/plugins/jake-12/NOTICE +51 -0
  343. package/plugins/jake-12/gemini-extension.json +1 -0
  344. package/plugins/jake-12/plugin.json +10 -0
  345. package/plugins/jake-12/skills/jake/SKILL.md +182 -0
  346. package/plugins/jasmine-core-7/.claude-plugin/plugin.json +9 -0
  347. package/plugins/jasmine-core-7/LICENSE +93 -0
  348. package/plugins/jasmine-core-7/NOTICE +51 -0
  349. package/plugins/jasmine-core-7/gemini-extension.json +1 -0
  350. package/plugins/jasmine-core-7/plugin.json +10 -0
  351. package/plugins/jasmine-core-7/skills/jasmine-core/SKILL.md +173 -0
  352. package/plugins/jest-cli-30/.claude-plugin/plugin.json +9 -0
  353. package/plugins/jest-cli-30/LICENSE +93 -0
  354. package/plugins/jest-cli-30/NOTICE +51 -0
  355. package/plugins/jest-cli-30/gemini-extension.json +1 -0
  356. package/plugins/jest-cli-30/plugin.json +10 -0
  357. package/plugins/jest-cli-30/skills/jest-cli/SKILL.md +121 -0
  358. package/plugins/jest-extended-7/.claude-plugin/plugin.json +9 -0
  359. package/plugins/jest-extended-7/LICENSE +93 -0
  360. package/plugins/jest-extended-7/NOTICE +51 -0
  361. package/plugins/jest-extended-7/gemini-extension.json +1 -0
  362. package/plugins/jest-extended-7/plugin.json +10 -0
  363. package/plugins/jest-extended-7/skills/jest-extended/SKILL.md +125 -0
  364. package/plugins/jsdom-30/.claude-plugin/plugin.json +9 -0
  365. package/plugins/jsdom-30/LICENSE +93 -0
  366. package/plugins/jsdom-30/NOTICE +51 -0
  367. package/plugins/jsdom-30/gemini-extension.json +1 -0
  368. package/plugins/jsdom-30/plugin.json +10 -0
  369. package/plugins/jsdom-30/skills/jsdom/SKILL.md +64 -0
  370. package/plugins/level-supports-6/.claude-plugin/plugin.json +9 -0
  371. package/plugins/level-supports-6/LICENSE +93 -0
  372. package/plugins/level-supports-6/NOTICE +51 -0
  373. package/plugins/level-supports-6/gemini-extension.json +1 -0
  374. package/plugins/level-supports-6/plugin.json +10 -0
  375. package/plugins/level-supports-6/skills/level-supports/SKILL.md +178 -0
  376. package/plugins/lowdb-7/.claude-plugin/plugin.json +9 -0
  377. package/plugins/lowdb-7/LICENSE +93 -0
  378. package/plugins/lowdb-7/NOTICE +51 -0
  379. package/plugins/lowdb-7/gemini-extension.json +1 -0
  380. package/plugins/lowdb-7/plugin.json +10 -0
  381. package/plugins/lowdb-7/skills/lowdb/SKILL.md +163 -0
  382. package/plugins/make-fetch-happen-16/.claude-plugin/plugin.json +9 -0
  383. package/plugins/make-fetch-happen-16/LICENSE +93 -0
  384. package/plugins/make-fetch-happen-16/NOTICE +51 -0
  385. package/plugins/make-fetch-happen-16/gemini-extension.json +1 -0
  386. package/plugins/make-fetch-happen-16/plugin.json +10 -0
  387. package/plugins/make-fetch-happen-16/skills/make-fetch-happen/SKILL.md +171 -0
  388. package/plugins/mdx-bundler-10/.claude-plugin/plugin.json +9 -0
  389. package/plugins/mdx-bundler-10/LICENSE +93 -0
  390. package/plugins/mdx-bundler-10/NOTICE +51 -0
  391. package/plugins/mdx-bundler-10/gemini-extension.json +1 -0
  392. package/plugins/mdx-bundler-10/plugin.json +10 -0
  393. package/plugins/mdx-bundler-10/skills/mdx-bundler/SKILL.md +133 -0
  394. package/plugins/mocha-12/.claude-plugin/plugin.json +9 -0
  395. package/plugins/mocha-12/LICENSE +93 -0
  396. package/plugins/mocha-12/NOTICE +51 -0
  397. package/plugins/mocha-12/gemini-extension.json +1 -0
  398. package/plugins/mocha-12/plugin.json +10 -0
  399. package/plugins/mocha-12/skills/mocha/SKILL.md +157 -0
  400. package/plugins/modelcontextprotocol-client-2/.claude-plugin/plugin.json +9 -0
  401. package/plugins/modelcontextprotocol-client-2/LICENSE +93 -0
  402. package/plugins/modelcontextprotocol-client-2/NOTICE +51 -0
  403. package/plugins/modelcontextprotocol-client-2/gemini-extension.json +1 -0
  404. package/plugins/modelcontextprotocol-client-2/plugin.json +10 -0
  405. package/plugins/modelcontextprotocol-client-2/skills/modelcontextprotocol-client/SKILL.md +86 -0
  406. package/plugins/modelcontextprotocol-sdk-1/.claude-plugin/plugin.json +9 -0
  407. package/plugins/modelcontextprotocol-sdk-1/LICENSE +93 -0
  408. package/plugins/modelcontextprotocol-sdk-1/NOTICE +51 -0
  409. package/plugins/modelcontextprotocol-sdk-1/gemini-extension.json +1 -0
  410. package/plugins/modelcontextprotocol-sdk-1/plugin.json +10 -0
  411. package/plugins/modelcontextprotocol-sdk-1/skills/modelcontextprotocol-sdk/SKILL.md +80 -0
  412. package/plugins/modelcontextprotocol-server-2/.claude-plugin/plugin.json +9 -0
  413. package/plugins/modelcontextprotocol-server-2/LICENSE +93 -0
  414. package/plugins/modelcontextprotocol-server-2/NOTICE +51 -0
  415. package/plugins/modelcontextprotocol-server-2/gemini-extension.json +1 -0
  416. package/plugins/modelcontextprotocol-server-2/plugin.json +10 -0
  417. package/plugins/modelcontextprotocol-server-2/skills/modelcontextprotocol-server/SKILL.md +80 -0
  418. package/plugins/msw-2/.claude-plugin/plugin.json +9 -0
  419. package/plugins/msw-2/LICENSE +93 -0
  420. package/plugins/msw-2/NOTICE +51 -0
  421. package/plugins/msw-2/gemini-extension.json +1 -0
  422. package/plugins/msw-2/plugin.json +10 -0
  423. package/plugins/msw-2/skills/msw/SKILL.md +182 -0
  424. package/plugins/negotiator-1/.claude-plugin/plugin.json +9 -0
  425. package/plugins/negotiator-1/LICENSE +93 -0
  426. package/plugins/negotiator-1/NOTICE +51 -0
  427. package/plugins/negotiator-1/gemini-extension.json +1 -0
  428. package/plugins/negotiator-1/plugin.json +10 -0
  429. package/plugins/negotiator-1/skills/negotiator/SKILL.md +180 -0
  430. package/plugins/npm-run-path-6/.claude-plugin/plugin.json +9 -0
  431. package/plugins/npm-run-path-6/LICENSE +93 -0
  432. package/plugins/npm-run-path-6/NOTICE +51 -0
  433. package/plugins/npm-run-path-6/gemini-extension.json +1 -0
  434. package/plugins/npm-run-path-6/plugin.json +10 -0
  435. package/plugins/npm-run-path-6/skills/npm-run-path/SKILL.md +137 -0
  436. package/plugins/nyc-18/.claude-plugin/plugin.json +9 -0
  437. package/plugins/nyc-18/LICENSE +93 -0
  438. package/plugins/nyc-18/NOTICE +51 -0
  439. package/plugins/nyc-18/gemini-extension.json +1 -0
  440. package/plugins/nyc-18/plugin.json +10 -0
  441. package/plugins/nyc-18/skills/nyc/SKILL.md +152 -0
  442. package/plugins/ow-3/.claude-plugin/plugin.json +9 -0
  443. package/plugins/ow-3/LICENSE +93 -0
  444. package/plugins/ow-3/NOTICE +51 -0
  445. package/plugins/ow-3/gemini-extension.json +1 -0
  446. package/plugins/ow-3/plugin.json +10 -0
  447. package/plugins/ow-3/skills/ow/SKILL.md +159 -0
  448. package/plugins/pac-proxy-agent-9/.claude-plugin/plugin.json +9 -0
  449. package/plugins/pac-proxy-agent-9/LICENSE +93 -0
  450. package/plugins/pac-proxy-agent-9/NOTICE +51 -0
  451. package/plugins/pac-proxy-agent-9/gemini-extension.json +1 -0
  452. package/plugins/pac-proxy-agent-9/plugin.json +10 -0
  453. package/plugins/pac-proxy-agent-9/skills/pac-proxy-agent/SKILL.md +111 -0
  454. package/plugins/pgsql-ast-parser-12/.claude-plugin/plugin.json +9 -0
  455. package/plugins/pgsql-ast-parser-12/LICENSE +93 -0
  456. package/plugins/pgsql-ast-parser-12/NOTICE +51 -0
  457. package/plugins/pgsql-ast-parser-12/gemini-extension.json +1 -0
  458. package/plugins/pgsql-ast-parser-12/plugin.json +10 -0
  459. package/plugins/pgsql-ast-parser-12/skills/pgsql-ast-parser/SKILL.md +136 -0
  460. package/plugins/playwright-test-1/.claude-plugin/plugin.json +9 -0
  461. package/plugins/playwright-test-1/LICENSE +93 -0
  462. package/plugins/playwright-test-1/NOTICE +51 -0
  463. package/plugins/playwright-test-1/gemini-extension.json +1 -0
  464. package/plugins/playwright-test-1/plugin.json +10 -0
  465. package/plugins/playwright-test-1/skills/playwright-test/SKILL.md +222 -0
  466. package/plugins/pmcp/.claude-plugin/plugin.json +9 -0
  467. package/plugins/pmcp/.mcp.json +9 -0
  468. package/plugins/pmcp/LICENSE +93 -0
  469. package/plugins/pmcp/NOTICE +51 -0
  470. package/plugins/pmcp/gemini-extension.json +11 -0
  471. package/plugins/pmcp/mcp.json +10 -0
  472. package/plugins/pmcp/plugin.json +10 -0
  473. package/plugins/pmcp/skills/package-skill-catalog/SKILL.md +54 -0
  474. package/plugins/pothos-core-4/.claude-plugin/plugin.json +9 -0
  475. package/plugins/pothos-core-4/LICENSE +93 -0
  476. package/plugins/pothos-core-4/NOTICE +51 -0
  477. package/plugins/pothos-core-4/gemini-extension.json +1 -0
  478. package/plugins/pothos-core-4/plugin.json +10 -0
  479. package/plugins/pothos-core-4/skills/pothos-core/SKILL.md +68 -0
  480. package/plugins/prettier-3/.claude-plugin/plugin.json +9 -0
  481. package/plugins/prettier-3/LICENSE +93 -0
  482. package/plugins/prettier-3/NOTICE +51 -0
  483. package/plugins/prettier-3/gemini-extension.json +1 -0
  484. package/plugins/prettier-3/plugin.json +10 -0
  485. package/plugins/prettier-3/skills/prettier/SKILL.md +69 -0
  486. package/plugins/protobufjs-8/.claude-plugin/plugin.json +9 -0
  487. package/plugins/protobufjs-8/LICENSE +93 -0
  488. package/plugins/protobufjs-8/NOTICE +51 -0
  489. package/plugins/protobufjs-8/gemini-extension.json +1 -0
  490. package/plugins/protobufjs-8/plugin.json +10 -0
  491. package/plugins/protobufjs-8/skills/protobufjs/SKILL.md +128 -0
  492. package/plugins/proxy-agent-8/.claude-plugin/plugin.json +9 -0
  493. package/plugins/proxy-agent-8/LICENSE +93 -0
  494. package/plugins/proxy-agent-8/NOTICE +51 -0
  495. package/plugins/proxy-agent-8/gemini-extension.json +1 -0
  496. package/plugins/proxy-agent-8/plugin.json +10 -0
  497. package/plugins/proxy-agent-8/skills/proxy-agent/SKILL.md +120 -0
  498. package/plugins/pydantic-2/.claude-plugin/plugin.json +9 -0
  499. package/plugins/pydantic-2/LICENSE +93 -0
  500. package/plugins/pydantic-2/NOTICE +51 -0
  501. package/plugins/pydantic-2/gemini-extension.json +1 -0
  502. package/plugins/pydantic-2/plugin.json +10 -0
  503. package/plugins/pydantic-2/skills/pydantic/SKILL.md +74 -0
  504. package/plugins/react-19/.claude-plugin/plugin.json +9 -0
  505. package/plugins/react-19/LICENSE +93 -0
  506. package/plugins/react-19/NOTICE +51 -0
  507. package/plugins/react-19/gemini-extension.json +1 -0
  508. package/plugins/react-19/plugin.json +10 -0
  509. package/plugins/react-19/skills/react/SKILL.md +150 -0
  510. package/plugins/react-dom-19/.claude-plugin/plugin.json +9 -0
  511. package/plugins/react-dom-19/LICENSE +93 -0
  512. package/plugins/react-dom-19/NOTICE +51 -0
  513. package/plugins/react-dom-19/gemini-extension.json +1 -0
  514. package/plugins/react-dom-19/plugin.json +10 -0
  515. package/plugins/react-dom-19/skills/react-dom/SKILL.md +178 -0
  516. package/plugins/react-icons-5/.claude-plugin/plugin.json +9 -0
  517. package/plugins/react-icons-5/LICENSE +93 -0
  518. package/plugins/react-icons-5/NOTICE +51 -0
  519. package/plugins/react-icons-5/gemini-extension.json +1 -0
  520. package/plugins/react-icons-5/plugin.json +10 -0
  521. package/plugins/react-icons-5/skills/react-icons/SKILL.md +194 -0
  522. package/plugins/react-is-19/.claude-plugin/plugin.json +9 -0
  523. package/plugins/react-is-19/LICENSE +93 -0
  524. package/plugins/react-is-19/NOTICE +51 -0
  525. package/plugins/react-is-19/gemini-extension.json +1 -0
  526. package/plugins/react-is-19/plugin.json +10 -0
  527. package/plugins/react-is-19/skills/react-is/SKILL.md +131 -0
  528. package/plugins/react-markdown-10/.claude-plugin/plugin.json +9 -0
  529. package/plugins/react-markdown-10/LICENSE +93 -0
  530. package/plugins/react-markdown-10/NOTICE +51 -0
  531. package/plugins/react-markdown-10/gemini-extension.json +1 -0
  532. package/plugins/react-markdown-10/plugin.json +10 -0
  533. package/plugins/react-markdown-10/skills/react-markdown/SKILL.md +163 -0
  534. package/plugins/react-router-8/.claude-plugin/plugin.json +9 -0
  535. package/plugins/react-router-8/LICENSE +93 -0
  536. package/plugins/react-router-8/NOTICE +51 -0
  537. package/plugins/react-router-8/gemini-extension.json +1 -0
  538. package/plugins/react-router-8/plugin.json +10 -0
  539. package/plugins/react-router-8/skills/react-router/SKILL.md +115 -0
  540. package/plugins/release-it-21/.claude-plugin/plugin.json +9 -0
  541. package/plugins/release-it-21/LICENSE +93 -0
  542. package/plugins/release-it-21/NOTICE +51 -0
  543. package/plugins/release-it-21/gemini-extension.json +1 -0
  544. package/plugins/release-it-21/plugin.json +10 -0
  545. package/plugins/release-it-21/skills/release-it/SKILL.md +202 -0
  546. package/plugins/reselect-5/.claude-plugin/plugin.json +9 -0
  547. package/plugins/reselect-5/LICENSE +93 -0
  548. package/plugins/reselect-5/NOTICE +51 -0
  549. package/plugins/reselect-5/gemini-extension.json +1 -0
  550. package/plugins/reselect-5/plugin.json +10 -0
  551. package/plugins/reselect-5/skills/reselect/SKILL.md +215 -0
  552. package/plugins/responselike-4/.claude-plugin/plugin.json +9 -0
  553. package/plugins/responselike-4/LICENSE +93 -0
  554. package/plugins/responselike-4/NOTICE +51 -0
  555. package/plugins/responselike-4/gemini-extension.json +1 -0
  556. package/plugins/responselike-4/plugin.json +10 -0
  557. package/plugins/responselike-4/skills/responselike/SKILL.md +173 -0
  558. package/plugins/rolldown-1/.claude-plugin/plugin.json +9 -0
  559. package/plugins/rolldown-1/LICENSE +93 -0
  560. package/plugins/rolldown-1/NOTICE +51 -0
  561. package/plugins/rolldown-1/gemini-extension.json +1 -0
  562. package/plugins/rolldown-1/plugin.json +10 -0
  563. package/plugins/rolldown-1/skills/rolldown/SKILL.md +182 -0
  564. package/plugins/semver-7/.claude-plugin/plugin.json +9 -0
  565. package/plugins/semver-7/LICENSE +93 -0
  566. package/plugins/semver-7/NOTICE +51 -0
  567. package/plugins/semver-7/gemini-extension.json +1 -0
  568. package/plugins/semver-7/plugin.json +10 -0
  569. package/plugins/semver-7/skills/semver/SKILL.md +55 -0
  570. package/plugins/serde-json-1/.claude-plugin/plugin.json +9 -0
  571. package/plugins/serde-json-1/LICENSE +93 -0
  572. package/plugins/serde-json-1/NOTICE +51 -0
  573. package/plugins/serde-json-1/gemini-extension.json +1 -0
  574. package/plugins/serde-json-1/plugin.json +10 -0
  575. package/plugins/serde-json-1/skills/serde-json/SKILL.md +68 -0
  576. package/plugins/sinon-22/.claude-plugin/plugin.json +9 -0
  577. package/plugins/sinon-22/LICENSE +93 -0
  578. package/plugins/sinon-22/NOTICE +51 -0
  579. package/plugins/sinon-22/gemini-extension.json +1 -0
  580. package/plugins/sinon-22/plugin.json +10 -0
  581. package/plugins/sinon-22/skills/sinon/SKILL.md +215 -0
  582. package/plugins/slice-ansi-9/.claude-plugin/plugin.json +9 -0
  583. package/plugins/slice-ansi-9/LICENSE +93 -0
  584. package/plugins/slice-ansi-9/NOTICE +51 -0
  585. package/plugins/slice-ansi-9/gemini-extension.json +1 -0
  586. package/plugins/slice-ansi-9/plugin.json +10 -0
  587. package/plugins/slice-ansi-9/skills/slice-ansi/SKILL.md +111 -0
  588. package/plugins/smol-toml-1/.claude-plugin/plugin.json +9 -0
  589. package/plugins/smol-toml-1/LICENSE +93 -0
  590. package/plugins/smol-toml-1/NOTICE +51 -0
  591. package/plugins/smol-toml-1/gemini-extension.json +1 -0
  592. package/plugins/smol-toml-1/plugin.json +10 -0
  593. package/plugins/smol-toml-1/skills/smol-toml/SKILL.md +63 -0
  594. package/plugins/socks-proxy-agent-10/.claude-plugin/plugin.json +9 -0
  595. package/plugins/socks-proxy-agent-10/LICENSE +93 -0
  596. package/plugins/socks-proxy-agent-10/NOTICE +51 -0
  597. package/plugins/socks-proxy-agent-10/gemini-extension.json +1 -0
  598. package/plugins/socks-proxy-agent-10/plugin.json +10 -0
  599. package/plugins/socks-proxy-agent-10/skills/socks-proxy-agent/SKILL.md +172 -0
  600. package/plugins/string-width-8/.claude-plugin/plugin.json +9 -0
  601. package/plugins/string-width-8/LICENSE +93 -0
  602. package/plugins/string-width-8/NOTICE +51 -0
  603. package/plugins/string-width-8/gemini-extension.json +1 -0
  604. package/plugins/string-width-8/plugin.json +10 -0
  605. package/plugins/string-width-8/skills/string-width/SKILL.md +101 -0
  606. package/plugins/superstruct-2/.claude-plugin/plugin.json +9 -0
  607. package/plugins/superstruct-2/LICENSE +93 -0
  608. package/plugins/superstruct-2/NOTICE +51 -0
  609. package/plugins/superstruct-2/gemini-extension.json +1 -0
  610. package/plugins/superstruct-2/plugin.json +10 -0
  611. package/plugins/superstruct-2/skills/superstruct/SKILL.md +170 -0
  612. package/plugins/supports-color-11/.claude-plugin/plugin.json +9 -0
  613. package/plugins/supports-color-11/LICENSE +93 -0
  614. package/plugins/supports-color-11/NOTICE +51 -0
  615. package/plugins/supports-color-11/gemini-extension.json +1 -0
  616. package/plugins/supports-color-11/plugin.json +10 -0
  617. package/plugins/supports-color-11/skills/supports-color/SKILL.md +115 -0
  618. package/plugins/tailwindcss-3/.claude-plugin/plugin.json +9 -0
  619. package/plugins/tailwindcss-3/LICENSE +93 -0
  620. package/plugins/tailwindcss-3/NOTICE +51 -0
  621. package/plugins/tailwindcss-3/gemini-extension.json +1 -0
  622. package/plugins/tailwindcss-3/plugin.json +10 -0
  623. package/plugins/tailwindcss-3/skills/tailwindcss/SKILL.md +72 -0
  624. package/plugins/tailwindcss-4/.claude-plugin/plugin.json +9 -0
  625. package/plugins/tailwindcss-4/LICENSE +93 -0
  626. package/plugins/tailwindcss-4/NOTICE +51 -0
  627. package/plugins/tailwindcss-4/gemini-extension.json +1 -0
  628. package/plugins/tailwindcss-4/plugin.json +10 -0
  629. package/plugins/tailwindcss-4/skills/tailwindcss/SKILL.md +82 -0
  630. package/plugins/tanstack-react-router-1/.claude-plugin/plugin.json +9 -0
  631. package/plugins/tanstack-react-router-1/LICENSE +93 -0
  632. package/plugins/tanstack-react-router-1/NOTICE +51 -0
  633. package/plugins/tanstack-react-router-1/gemini-extension.json +1 -0
  634. package/plugins/tanstack-react-router-1/plugin.json +10 -0
  635. package/plugins/tanstack-react-router-1/skills/tanstack-react-router/SKILL.md +96 -0
  636. package/plugins/tedious-20/.claude-plugin/plugin.json +9 -0
  637. package/plugins/tedious-20/LICENSE +93 -0
  638. package/plugins/tedious-20/NOTICE +51 -0
  639. package/plugins/tedious-20/gemini-extension.json +1 -0
  640. package/plugins/tedious-20/plugin.json +10 -0
  641. package/plugins/tedious-20/skills/tedious/SKILL.md +174 -0
  642. package/plugins/testing-library-react-16/.claude-plugin/plugin.json +9 -0
  643. package/plugins/testing-library-react-16/LICENSE +93 -0
  644. package/plugins/testing-library-react-16/NOTICE +51 -0
  645. package/plugins/testing-library-react-16/gemini-extension.json +1 -0
  646. package/plugins/testing-library-react-16/plugin.json +10 -0
  647. package/plugins/testing-library-react-16/skills/testing-library-react/SKILL.md +92 -0
  648. package/plugins/tinyspy-4/.claude-plugin/plugin.json +9 -0
  649. package/plugins/tinyspy-4/LICENSE +93 -0
  650. package/plugins/tinyspy-4/NOTICE +51 -0
  651. package/plugins/tinyspy-4/gemini-extension.json +1 -0
  652. package/plugins/tinyspy-4/plugin.json +10 -0
  653. package/plugins/tinyspy-4/skills/tinyspy/SKILL.md +158 -0
  654. package/plugins/tldts-7/.claude-plugin/plugin.json +9 -0
  655. package/plugins/tldts-7/LICENSE +93 -0
  656. package/plugins/tldts-7/NOTICE +51 -0
  657. package/plugins/tldts-7/gemini-extension.json +1 -0
  658. package/plugins/tldts-7/plugin.json +10 -0
  659. package/plugins/tldts-7/skills/tldts/SKILL.md +120 -0
  660. package/plugins/ts-morph-28/.claude-plugin/plugin.json +9 -0
  661. package/plugins/ts-morph-28/LICENSE +93 -0
  662. package/plugins/ts-morph-28/NOTICE +51 -0
  663. package/plugins/ts-morph-28/gemini-extension.json +1 -0
  664. package/plugins/ts-morph-28/plugin.json +10 -0
  665. package/plugins/ts-morph-28/skills/ts-morph/SKILL.md +219 -0
  666. package/plugins/tsup-8/.claude-plugin/plugin.json +9 -0
  667. package/plugins/tsup-8/LICENSE +93 -0
  668. package/plugins/tsup-8/NOTICE +51 -0
  669. package/plugins/tsup-8/gemini-extension.json +1 -0
  670. package/plugins/tsup-8/plugin.json +10 -0
  671. package/plugins/tsup-8/skills/tsup/SKILL.md +97 -0
  672. package/plugins/tsx-4/.claude-plugin/plugin.json +9 -0
  673. package/plugins/tsx-4/LICENSE +93 -0
  674. package/plugins/tsx-4/NOTICE +51 -0
  675. package/plugins/tsx-4/gemini-extension.json +1 -0
  676. package/plugins/tsx-4/plugin.json +10 -0
  677. package/plugins/tsx-4/skills/tsx/SKILL.md +159 -0
  678. package/plugins/type-fest-5/.claude-plugin/plugin.json +9 -0
  679. package/plugins/type-fest-5/LICENSE +93 -0
  680. package/plugins/type-fest-5/NOTICE +51 -0
  681. package/plugins/type-fest-5/gemini-extension.json +1 -0
  682. package/plugins/type-fest-5/plugin.json +10 -0
  683. package/plugins/type-fest-5/skills/type-fest/SKILL.md +132 -0
  684. package/plugins/typescript-5/.claude-plugin/plugin.json +9 -0
  685. package/plugins/typescript-5/LICENSE +93 -0
  686. package/plugins/typescript-5/NOTICE +51 -0
  687. package/plugins/typescript-5/gemini-extension.json +1 -0
  688. package/plugins/typescript-5/plugin.json +10 -0
  689. package/plugins/typescript-5/skills/typescript/SKILL.md +107 -0
  690. package/plugins/typescript-eslint-8/.claude-plugin/plugin.json +9 -0
  691. package/plugins/typescript-eslint-8/LICENSE +93 -0
  692. package/plugins/typescript-eslint-8/NOTICE +51 -0
  693. package/plugins/typescript-eslint-8/gemini-extension.json +1 -0
  694. package/plugins/typescript-eslint-8/plugin.json +10 -0
  695. package/plugins/typescript-eslint-8/skills/typescript-eslint/SKILL.md +179 -0
  696. package/plugins/typescript-eslint-eslint-plugin-8/.claude-plugin/plugin.json +9 -0
  697. package/plugins/typescript-eslint-eslint-plugin-8/LICENSE +93 -0
  698. package/plugins/typescript-eslint-eslint-plugin-8/NOTICE +51 -0
  699. package/plugins/typescript-eslint-eslint-plugin-8/gemini-extension.json +1 -0
  700. package/plugins/typescript-eslint-eslint-plugin-8/plugin.json +10 -0
  701. package/plugins/typescript-eslint-eslint-plugin-8/skills/typescript-eslint-eslint-plugin/SKILL.md +158 -0
  702. package/plugins/typescript-eslint-estree-8/.claude-plugin/plugin.json +9 -0
  703. package/plugins/typescript-eslint-estree-8/LICENSE +93 -0
  704. package/plugins/typescript-eslint-estree-8/NOTICE +51 -0
  705. package/plugins/typescript-eslint-estree-8/gemini-extension.json +1 -0
  706. package/plugins/typescript-eslint-estree-8/plugin.json +10 -0
  707. package/plugins/typescript-eslint-estree-8/skills/typescript-eslint-estree/SKILL.md +125 -0
  708. package/plugins/typescript-eslint-parser-8/.claude-plugin/plugin.json +9 -0
  709. package/plugins/typescript-eslint-parser-8/LICENSE +93 -0
  710. package/plugins/typescript-eslint-parser-8/NOTICE +51 -0
  711. package/plugins/typescript-eslint-parser-8/gemini-extension.json +1 -0
  712. package/plugins/typescript-eslint-parser-8/plugin.json +10 -0
  713. package/plugins/typescript-eslint-parser-8/skills/typescript-eslint-parser/SKILL.md +141 -0
  714. package/plugins/typescript-eslint-types-8/.claude-plugin/plugin.json +9 -0
  715. package/plugins/typescript-eslint-types-8/LICENSE +93 -0
  716. package/plugins/typescript-eslint-types-8/NOTICE +51 -0
  717. package/plugins/typescript-eslint-types-8/gemini-extension.json +1 -0
  718. package/plugins/typescript-eslint-types-8/plugin.json +10 -0
  719. package/plugins/typescript-eslint-types-8/skills/typescript-eslint-types/SKILL.md +117 -0
  720. package/plugins/typescript-eslint-utils-8/.claude-plugin/plugin.json +9 -0
  721. package/plugins/typescript-eslint-utils-8/LICENSE +93 -0
  722. package/plugins/typescript-eslint-utils-8/NOTICE +51 -0
  723. package/plugins/typescript-eslint-utils-8/gemini-extension.json +1 -0
  724. package/plugins/typescript-eslint-utils-8/plugin.json +10 -0
  725. package/plugins/typescript-eslint-utils-8/skills/typescript-eslint-utils/SKILL.md +195 -0
  726. package/plugins/typescript-eslint-visitor-keys-8/.claude-plugin/plugin.json +9 -0
  727. package/plugins/typescript-eslint-visitor-keys-8/LICENSE +93 -0
  728. package/plugins/typescript-eslint-visitor-keys-8/NOTICE +51 -0
  729. package/plugins/typescript-eslint-visitor-keys-8/gemini-extension.json +1 -0
  730. package/plugins/typescript-eslint-visitor-keys-8/plugin.json +10 -0
  731. package/plugins/typescript-eslint-visitor-keys-8/skills/typescript-eslint-visitor-keys/SKILL.md +116 -0
  732. package/plugins/valibot-1/.claude-plugin/plugin.json +9 -0
  733. package/plugins/valibot-1/LICENSE +93 -0
  734. package/plugins/valibot-1/NOTICE +51 -0
  735. package/plugins/valibot-1/gemini-extension.json +1 -0
  736. package/plugins/valibot-1/plugin.json +10 -0
  737. package/plugins/valibot-1/skills/valibot/SKILL.md +190 -0
  738. package/plugins/vite-7/.claude-plugin/plugin.json +9 -0
  739. package/plugins/vite-7/LICENSE +93 -0
  740. package/plugins/vite-7/NOTICE +51 -0
  741. package/plugins/vite-7/gemini-extension.json +1 -0
  742. package/plugins/vite-7/plugin.json +10 -0
  743. package/plugins/vite-7/skills/vite/SKILL.md +111 -0
  744. package/plugins/vite-8/.claude-plugin/plugin.json +9 -0
  745. package/plugins/vite-8/LICENSE +93 -0
  746. package/plugins/vite-8/NOTICE +51 -0
  747. package/plugins/vite-8/gemini-extension.json +1 -0
  748. package/plugins/vite-8/plugin.json +10 -0
  749. package/plugins/vite-8/skills/vite/SKILL.md +267 -0
  750. package/plugins/vitejs-plugin-react-5/.claude-plugin/plugin.json +9 -0
  751. package/plugins/vitejs-plugin-react-5/LICENSE +93 -0
  752. package/plugins/vitejs-plugin-react-5/NOTICE +51 -0
  753. package/plugins/vitejs-plugin-react-5/gemini-extension.json +1 -0
  754. package/plugins/vitejs-plugin-react-5/plugin.json +10 -0
  755. package/plugins/vitejs-plugin-react-5/skills/vitejs-plugin-react/SKILL.md +67 -0
  756. package/plugins/vitejs-plugin-react-6/.claude-plugin/plugin.json +9 -0
  757. package/plugins/vitejs-plugin-react-6/LICENSE +93 -0
  758. package/plugins/vitejs-plugin-react-6/NOTICE +51 -0
  759. package/plugins/vitejs-plugin-react-6/gemini-extension.json +1 -0
  760. package/plugins/vitejs-plugin-react-6/plugin.json +10 -0
  761. package/plugins/vitejs-plugin-react-6/skills/vitejs-plugin-react/SKILL.md +232 -0
  762. package/plugins/vitest-4/.claude-plugin/plugin.json +9 -0
  763. package/plugins/vitest-4/LICENSE +93 -0
  764. package/plugins/vitest-4/NOTICE +51 -0
  765. package/plugins/vitest-4/gemini-extension.json +1 -0
  766. package/plugins/vitest-4/plugin.json +10 -0
  767. package/plugins/vitest-4/skills/vitest/SKILL.md +127 -0
  768. package/plugins/vitest-5/.claude-plugin/plugin.json +9 -0
  769. package/plugins/vitest-5/LICENSE +93 -0
  770. package/plugins/vitest-5/NOTICE +51 -0
  771. package/plugins/vitest-5/gemini-extension.json +1 -0
  772. package/plugins/vitest-5/plugin.json +10 -0
  773. package/plugins/vitest-5/skills/vitest/SKILL.md +186 -0
  774. package/plugins/whatwg-mimetype-5/.claude-plugin/plugin.json +9 -0
  775. package/plugins/whatwg-mimetype-5/LICENSE +93 -0
  776. package/plugins/whatwg-mimetype-5/NOTICE +51 -0
  777. package/plugins/whatwg-mimetype-5/gemini-extension.json +1 -0
  778. package/plugins/whatwg-mimetype-5/plugin.json +10 -0
  779. package/plugins/whatwg-mimetype-5/skills/whatwg-mimetype/SKILL.md +150 -0
  780. package/plugins/wrangler-4/.claude-plugin/plugin.json +9 -0
  781. package/plugins/wrangler-4/LICENSE +93 -0
  782. package/plugins/wrangler-4/NOTICE +51 -0
  783. package/plugins/wrangler-4/gemini-extension.json +1 -0
  784. package/plugins/wrangler-4/plugin.json +10 -0
  785. package/plugins/wrangler-4/skills/wrangler/SKILL.md +87 -0
  786. package/plugins/wrap-ansi-10/.claude-plugin/plugin.json +9 -0
  787. package/plugins/wrap-ansi-10/LICENSE +93 -0
  788. package/plugins/wrap-ansi-10/NOTICE +51 -0
  789. package/plugins/wrap-ansi-10/gemini-extension.json +1 -0
  790. package/plugins/wrap-ansi-10/plugin.json +10 -0
  791. package/plugins/wrap-ansi-10/skills/wrap-ansi/SKILL.md +119 -0
  792. package/plugins/yaml-2/.claude-plugin/plugin.json +9 -0
  793. package/plugins/yaml-2/LICENSE +93 -0
  794. package/plugins/yaml-2/NOTICE +51 -0
  795. package/plugins/yaml-2/gemini-extension.json +1 -0
  796. package/plugins/yaml-2/plugin.json +10 -0
  797. package/plugins/yaml-2/skills/yaml/SKILL.md +56 -0
  798. package/plugins/yargs-18/.claude-plugin/plugin.json +9 -0
  799. package/plugins/yargs-18/LICENSE +93 -0
  800. package/plugins/yargs-18/NOTICE +51 -0
  801. package/plugins/yargs-18/gemini-extension.json +1 -0
  802. package/plugins/yargs-18/plugin.json +10 -0
  803. package/plugins/yargs-18/skills/yargs/SKILL.md +175 -0
  804. package/plugins/yargs-parser-22/.claude-plugin/plugin.json +9 -0
  805. package/plugins/yargs-parser-22/LICENSE +93 -0
  806. package/plugins/yargs-parser-22/NOTICE +51 -0
  807. package/plugins/yargs-parser-22/gemini-extension.json +1 -0
  808. package/plugins/yargs-parser-22/plugin.json +10 -0
  809. package/plugins/yargs-parser-22/skills/yargs-parser/SKILL.md +179 -0
  810. package/plugins/yeoman-environment-7/.claude-plugin/plugin.json +9 -0
  811. package/plugins/yeoman-environment-7/LICENSE +93 -0
  812. package/plugins/yeoman-environment-7/NOTICE +51 -0
  813. package/plugins/yeoman-environment-7/gemini-extension.json +1 -0
  814. package/plugins/yeoman-environment-7/plugin.json +10 -0
  815. package/plugins/yeoman-environment-7/skills/yeoman-environment/SKILL.md +136 -0
  816. package/plugins/z-schema-12/.claude-plugin/plugin.json +9 -0
  817. package/plugins/z-schema-12/LICENSE +93 -0
  818. package/plugins/z-schema-12/NOTICE +51 -0
  819. package/plugins/z-schema-12/gemini-extension.json +1 -0
  820. package/plugins/z-schema-12/plugin.json +10 -0
  821. package/plugins/z-schema-12/skills/z-schema/SKILL.md +179 -0
  822. package/plugins/zod-schema-validation-3/.claude-plugin/plugin.json +9 -0
  823. package/plugins/zod-schema-validation-3/LICENSE +93 -0
  824. package/plugins/zod-schema-validation-3/NOTICE +51 -0
  825. package/plugins/zod-schema-validation-3/gemini-extension.json +1 -0
  826. package/plugins/zod-schema-validation-3/plugin.json +10 -0
  827. package/plugins/zod-schema-validation-3/skills/zod-schema-validation/SKILL.md +188 -0
  828. package/plugins/zod-schema-validation-4/.claude-plugin/plugin.json +9 -0
  829. package/plugins/zod-schema-validation-4/LICENSE +93 -0
  830. package/plugins/zod-schema-validation-4/NOTICE +51 -0
  831. package/plugins/zod-schema-validation-4/gemini-extension.json +1 -0
  832. package/plugins/zod-schema-validation-4/plugin.json +10 -0
  833. package/plugins/zod-schema-validation-4/skills/zod-schema-validation/SKILL.md +181 -0
  834. package/plugins/zod-validation-error-5/.claude-plugin/plugin.json +9 -0
  835. package/plugins/zod-validation-error-5/LICENSE +93 -0
  836. package/plugins/zod-validation-error-5/NOTICE +51 -0
  837. package/plugins/zod-validation-error-5/gemini-extension.json +1 -0
  838. package/plugins/zod-validation-error-5/plugin.json +10 -0
  839. package/plugins/zod-validation-error-5/skills/zod-validation-error/SKILL.md +212 -0
  840. package/plugins/zustand-5/.claude-plugin/plugin.json +9 -0
  841. package/plugins/zustand-5/LICENSE +93 -0
  842. package/plugins/zustand-5/NOTICE +51 -0
  843. package/plugins/zustand-5/gemini-extension.json +1 -0
  844. package/plugins/zustand-5/plugin.json +10 -0
  845. package/plugins/zustand-5/skills/zustand/SKILL.md +128 -0
  846. package/skills/package-skill-catalog/SKILL.md +37 -222
package/dist/stdio.js CHANGED
@@ -10,8 +10,8 @@ import { McpServer } from "@modelcontextprotocol/server";
10
10
  import { z } from "zod";
11
11
 
12
12
  // src/catalog.ts
13
- import { existsSync as existsSync2, readFileSync as readFileSync2, readdirSync as readdirSync2 } from "fs";
14
- import { basename as basename2, dirname as dirname2, isAbsolute, join as join2, relative } from "path";
13
+ import { existsSync as existsSync3, readFileSync as readFileSync3, readdirSync as readdirSync2 } from "fs";
14
+ import { basename as basename2, dirname as dirname2, isAbsolute as isAbsolute2, join as join3, relative as relative2 } from "path";
15
15
 
16
16
  // src/frontmatter.ts
17
17
  import { parse } from "yaml";
@@ -133,8 +133,122 @@ function specProblems(front, directory) {
133
133
  }
134
134
 
135
135
  // src/marketplace.ts
136
- import { existsSync, readFileSync, readdirSync } from "fs";
137
- import { basename, dirname, join, resolve } from "path";
136
+ import { existsSync as existsSync2, readFileSync as readFileSync2, readdirSync } from "fs";
137
+ import { basename, dirname, join as join2, resolve as resolve2 } from "path";
138
+
139
+ // src/marketplace/local.ts
140
+ import { existsSync, readFileSync, realpathSync, statSync } from "fs";
141
+ import { isAbsolute, join, relative, resolve, sep } from "path";
142
+ function object(value) {
143
+ return value !== null && typeof value === "object" && !Array.isArray(value);
144
+ }
145
+ function containedPath(root, path) {
146
+ const result = resolve(root, path);
147
+ const lexical = relative(resolve(root), result);
148
+ if (isAbsolute(lexical) || lexical === ".." || lexical.startsWith(`..${sep}`))
149
+ throw new Error("Path leaves the plugin root");
150
+ const physical = relative(realpathSync(root), realpathSync(result));
151
+ if (isAbsolute(physical) || physical === ".." || physical.startsWith(`..${sep}`))
152
+ throw new Error("Path leaves the plugin root through a symlink");
153
+ return result;
154
+ }
155
+ function pluginManifest(directory) {
156
+ for (const path of [
157
+ ".claude-plugin/plugin.json",
158
+ "plugin.json",
159
+ ".codex-plugin/plugin.json",
160
+ ".grok-plugin/plugin.json"
161
+ ]) {
162
+ if (!existsSync(join(directory, path))) continue;
163
+ const value = JSON.parse(
164
+ readFileSync(containedPath(directory, path), "utf8")
165
+ );
166
+ if (!object(value)) throw new Error("Plugin manifest must be an object");
167
+ return value;
168
+ }
169
+ return {};
170
+ }
171
+ function localSource(value) {
172
+ if (typeof value === "string") return value;
173
+ if (object(value) && value.source === "local" && typeof value.path === "string")
174
+ return value.path;
175
+ throw new Error(
176
+ "Only installed local plugin sources can be read; use the native installer for remote sources"
177
+ );
178
+ }
179
+ function readLocalMarketplace(directory, onReject) {
180
+ const filename = [
181
+ ".claude-plugin/marketplace.json",
182
+ ".agents/plugins/marketplace.json",
183
+ ".grok-plugin/marketplace.json"
184
+ ].find((path2) => existsSync(join(directory, path2)));
185
+ if (!filename) {
186
+ onReject?.({
187
+ path: directory,
188
+ reason: "No supported native marketplace.json found"
189
+ });
190
+ return null;
191
+ }
192
+ const path = join(directory, filename);
193
+ let manifest2;
194
+ try {
195
+ manifest2 = JSON.parse(
196
+ readFileSync(containedPath(directory, filename), "utf8")
197
+ );
198
+ } catch {
199
+ onReject?.({
200
+ path,
201
+ reason: "marketplace.json is not valid JSON or is outside its root"
202
+ });
203
+ return null;
204
+ }
205
+ if (!object(manifest2) || !Array.isArray(manifest2.plugins)) {
206
+ onReject?.({ path, reason: "marketplace.json requires a plugins array" });
207
+ return null;
208
+ }
209
+ const name = typeof manifest2.name === "string" ? manifest2.name : "marketplace";
210
+ if (!/^[a-zA-Z0-9][a-zA-Z0-9._-]*$/u.test(name)) {
211
+ onReject?.({ path, reason: "Invalid marketplace name" });
212
+ return null;
213
+ }
214
+ const plugins = [];
215
+ const seen = /* @__PURE__ */ new Set();
216
+ for (const item of manifest2.plugins) {
217
+ try {
218
+ if (!object(item) || typeof item.name !== "string" || !/^[a-zA-Z0-9][a-zA-Z0-9._-]*$/u.test(item.name))
219
+ throw new Error("Invalid plugin name");
220
+ if (seen.has(item.name)) throw new Error("Duplicate plugin name");
221
+ const source = localSource(item.source);
222
+ if (!source.startsWith("./") || source.split(/[\\/]/u).includes(".."))
223
+ throw new Error("Local plugin source must be a contained ./ path");
224
+ const pluginDirectory = containedPath(directory, source);
225
+ if (!statSync(pluginDirectory).isDirectory())
226
+ throw new Error("Plugin source must be a directory");
227
+ const metadata2 = pluginManifest(pluginDirectory);
228
+ if (metadata2.name !== void 0 && metadata2.name !== item.name)
229
+ throw new Error("Plugin manifest name differs from marketplace entry");
230
+ seen.add(item.name);
231
+ plugins.push({
232
+ name: item.name,
233
+ directory: pluginDirectory,
234
+ manifest: metadata2
235
+ });
236
+ } catch (error) {
237
+ onReject?.({
238
+ path,
239
+ reason: error instanceof Error ? error.message : "Invalid plugin source"
240
+ });
241
+ }
242
+ }
243
+ const metadata = object(manifest2.metadata) ? manifest2.metadata : {};
244
+ return {
245
+ name,
246
+ plugins,
247
+ ...typeof metadata.tier === "string" ? { tier: metadata.tier } : {}
248
+ };
249
+ }
250
+
251
+ // src/marketplace.ts
138
252
  function readMetadata(source) {
139
253
  return metadataOf(frontmatterObject(source));
140
254
  }
@@ -147,16 +261,27 @@ var asList = (value) => {
147
261
  if (typeof value === "string") return [value];
148
262
  return Array.isArray(value) ? value : [];
149
263
  };
150
- function readJson(path) {
264
+ function readJson(path, root) {
151
265
  try {
152
- const parsed = JSON.parse(readFileSync(path, "utf8"));
266
+ const parsed = JSON.parse(
267
+ readFileSync2(containedPath(root, path), "utf8")
268
+ );
153
269
  return parsed !== null && typeof parsed === "object" && !Array.isArray(parsed) ? parsed : null;
154
270
  } catch {
155
271
  return null;
156
272
  }
157
273
  }
158
274
  function markdownEntry(context, path, fallbackSlug, shape) {
159
- const source = readFileSync(path, "utf8");
275
+ let source;
276
+ try {
277
+ source = readFileSync2(containedPath(context.pluginDir, path), "utf8");
278
+ } catch {
279
+ context.onReject?.({
280
+ path,
281
+ reason: "Asset is unreadable or outside the plugin root"
282
+ });
283
+ return null;
284
+ }
160
285
  const front = readFrontmatter(source);
161
286
  const description = front["description"] ?? "";
162
287
  if (description === "") {
@@ -188,25 +313,25 @@ function markdownEntry(context, path, fallbackSlug, shape) {
188
313
  };
189
314
  }
190
315
  function skillEntries(context) {
191
- const dir = join(context.pluginDir, "skills");
192
- if (!existsSync(dir)) return [];
316
+ const dir = join2(context.pluginDir, "skills");
317
+ if (!existsSync2(dir)) return [];
193
318
  const found = [];
194
319
  for (const child of readdirSync(dir, { withFileTypes: true })) {
195
320
  if (!child.isDirectory()) continue;
196
- const path = join(dir, child.name, "SKILL.md");
197
- if (!existsSync(path)) continue;
321
+ const path = join2(dir, child.name, "SKILL.md");
322
+ if (!existsSync2(path)) continue;
198
323
  const entry = markdownEntry(context, path, child.name, {});
199
324
  if (entry) found.push(entry);
200
325
  }
201
326
  return found;
202
327
  }
203
328
  function commandEntries(context) {
204
- const dir = join(context.pluginDir, "commands");
205
- if (!existsSync(dir)) return [];
329
+ const dir = join2(context.pluginDir, "commands");
330
+ if (!existsSync2(dir)) return [];
206
331
  const found = [];
207
332
  for (const child of readdirSync(dir, { withFileTypes: true })) {
208
333
  if (!child.isFile() || !child.name.endsWith(".md")) continue;
209
- const path = join(dir, child.name);
334
+ const path = join2(dir, child.name);
210
335
  const entry = markdownEntry(context, path, basename(child.name, ".md"), {
211
336
  root: path
212
337
  });
@@ -215,22 +340,22 @@ function commandEntries(context) {
215
340
  return found;
216
341
  }
217
342
  function agentEntries(context) {
218
- const dir = join(context.pluginDir, "agents");
219
- if (!existsSync(dir)) return [];
343
+ const dir = join2(context.pluginDir, "agents");
344
+ if (!existsSync2(dir)) return [];
220
345
  const found = [];
221
346
  for (const child of readdirSync(dir, { withFileTypes: true })) {
222
347
  let entry = null;
223
348
  if (child.isFile() && child.name.endsWith(".md")) {
224
- const path = join(dir, child.name);
349
+ const path = join2(dir, child.name);
225
350
  entry = markdownEntry(context, path, basename(child.name, ".md"), {
226
351
  kind: "agent",
227
352
  root: path,
228
353
  namespace: "agents"
229
354
  });
230
- } else if (child.isDirectory() && existsSync(join(dir, child.name, "agent.md"))) {
355
+ } else if (child.isDirectory() && existsSync2(join2(dir, child.name, "agent.md"))) {
231
356
  entry = markdownEntry(
232
357
  context,
233
- join(dir, child.name, "agent.md"),
358
+ join2(dir, child.name, "agent.md"),
234
359
  child.name,
235
360
  {
236
361
  kind: "agent",
@@ -244,9 +369,9 @@ function agentEntries(context) {
244
369
  }
245
370
  function hookEntries(context, manifest2) {
246
371
  const declared = typeof manifest2.hooks === "string" ? manifest2.hooks : void 0;
247
- const path = resolve(context.pluginDir, declared ?? "hooks/hooks.json");
248
- if (!existsSync(path)) return [];
249
- const hooks = readJson(path);
372
+ const path = resolve2(context.pluginDir, declared ?? "hooks/hooks.json");
373
+ if (!existsSync2(path)) return [];
374
+ const hooks = readJson(path, context.pluginDir);
250
375
  if (hooks === null) {
251
376
  context.onReject?.({ path, reason: "hooks.json is not a JSON object" });
252
377
  return [];
@@ -272,9 +397,12 @@ function hookEntries(context, manifest2) {
272
397
  ];
273
398
  }
274
399
  function mcpEntries(context) {
275
- const path = join(context.pluginDir, ".mcp.json");
276
- if (!existsSync(path)) return [];
277
- const config = readJson(path);
400
+ const filename = [".mcp.json", "mcp.json", "mcp_config.json"].find(
401
+ (name) => existsSync2(join2(context.pluginDir, name))
402
+ );
403
+ if (!filename) return [];
404
+ const path = join2(context.pluginDir, filename);
405
+ const config = readJson(path, context.pluginDir);
278
406
  const servers = config?.["mcpServers"];
279
407
  if (servers === null || typeof servers !== "object" || Array.isArray(servers)) {
280
408
  context.onReject?.({ path, reason: ".mcp.json has no mcpServers object" });
@@ -293,48 +421,24 @@ function mcpEntries(context) {
293
421
  }));
294
422
  }
295
423
  function readMarketplace(dir, onReject) {
296
- const manifestPath = join(dir, ".claude-plugin", "marketplace.json");
297
- if (!existsSync(manifestPath)) {
298
- onReject?.({
299
- path: dir,
300
- reason: "no .claude-plugin/marketplace.json here"
301
- });
302
- return [];
303
- }
304
- let manifest2;
305
- try {
306
- manifest2 = JSON.parse(
307
- readFileSync(manifestPath, "utf8")
308
- );
309
- } catch {
310
- onReject?.({
311
- path: manifestPath,
312
- reason: "marketplace.json is not valid JSON"
313
- });
314
- return [];
315
- }
316
- const marketplace = manifest2.name ?? "marketplace";
424
+ const marketplace = readLocalMarketplace(dir, onReject);
425
+ if (!marketplace) return [];
317
426
  const found = [];
318
- for (const plugin of manifest2.plugins ?? []) {
319
- if (!plugin.name || !plugin.source) continue;
320
- const pluginDir = resolve(dir, plugin.source);
321
- if (!existsSync(pluginDir)) continue;
322
- const pluginManifest = readJson(
323
- join(pluginDir, ".claude-plugin", "plugin.json")
324
- ) ?? {};
427
+ for (const plugin of marketplace.plugins) {
428
+ const pluginManifest2 = plugin.manifest;
325
429
  const context = {
326
- marketplace,
430
+ marketplace: marketplace.name,
327
431
  plugin: plugin.name,
328
- pluginDir,
329
- pluginDescription: typeof pluginManifest.description === "string" ? pluginManifest.description : void 0,
330
- tier: manifest2.metadata?.tier,
432
+ pluginDir: plugin.directory,
433
+ pluginDescription: typeof pluginManifest2.description === "string" ? pluginManifest2.description : void 0,
434
+ tier: marketplace.tier,
331
435
  onReject
332
436
  };
333
437
  found.push(
334
438
  ...skillEntries(context),
335
439
  ...commandEntries(context),
336
440
  ...agentEntries(context),
337
- ...hookEntries(context, pluginManifest),
441
+ ...hookEntries(context, pluginManifest2),
338
442
  ...mcpEntries(context)
339
443
  );
340
444
  }
@@ -376,29 +480,29 @@ function skillFiles(packageDir) {
376
480
  }
377
481
  for (const entry of entries) {
378
482
  if (entry.isFile()) {
379
- if (entry.name === "SKILL.md") found.push(join2(dir, entry.name));
483
+ if (entry.name === "SKILL.md") found.push(join3(dir, entry.name));
380
484
  continue;
381
485
  }
382
486
  if (!entry.isDirectory()) continue;
383
487
  if (SKIPPED_DIRS.has(entry.name)) continue;
384
488
  if (depth + 1 <= MAX_SKILL_DEPTH)
385
- stack.push([join2(dir, entry.name), depth + 1]);
489
+ stack.push([join3(dir, entry.name), depth + 1]);
386
490
  }
387
491
  }
388
492
  return found.sort();
389
493
  }
390
494
  function packageDirs(root) {
391
- if (!existsSync2(root)) return [];
495
+ if (!existsSync3(root)) return [];
392
496
  const found = [];
393
497
  for (const entry of readdirSync2(root, { withFileTypes: true })) {
394
498
  if (!entry.isDirectory() && !entry.isSymbolicLink()) continue;
395
499
  if (entry.name === ".bin" || entry.name === ".cache") continue;
396
- const path = join2(root, entry.name);
500
+ const path = join3(root, entry.name);
397
501
  if (entry.name.startsWith("@")) {
398
- if (!existsSync2(path)) continue;
502
+ if (!existsSync3(path)) continue;
399
503
  for (const scoped of readdirSync2(path, { withFileTypes: true })) {
400
504
  if (scoped.isDirectory() || scoped.isSymbolicLink()) {
401
- found.push(join2(path, scoped.name));
505
+ found.push(join3(path, scoped.name));
402
506
  }
403
507
  }
404
508
  continue;
@@ -410,7 +514,7 @@ function packageDirs(root) {
410
514
  function readManifest(dir) {
411
515
  try {
412
516
  const parsed = JSON.parse(
413
- readFileSync2(join2(dir, "package.json"), "utf8")
517
+ readFileSync3(join3(dir, "package.json"), "utf8")
414
518
  );
415
519
  return parsed !== null && typeof parsed === "object" ? parsed : null;
416
520
  } catch {
@@ -444,8 +548,8 @@ function globDirs(base, pattern) {
444
548
  }
445
549
  const segment = segments[index];
446
550
  if (!segment.includes("*")) {
447
- const next = join2(dir, segment);
448
- if (existsSync2(next)) walk(next, index + 1);
551
+ const next = join3(dir, segment);
552
+ if (existsSync3(next)) walk(next, index + 1);
449
553
  return;
450
554
  }
451
555
  let entries;
@@ -457,12 +561,12 @@ function globDirs(base, pattern) {
457
561
  const children = entries.filter((e) => e.isDirectory() || e.isSymbolicLink()).filter((e) => !SKIPPED_DIRS.has(e.name));
458
562
  if (segment === "**") {
459
563
  walk(dir, index + 1);
460
- for (const child of children) walk(join2(dir, child.name), index);
564
+ for (const child of children) walk(join3(dir, child.name), index);
461
565
  return;
462
566
  }
463
567
  const matcher = segmentMatcher(segment);
464
568
  for (const child of children) {
465
- if (matcher.test(child.name)) walk(join2(dir, child.name), index + 1);
569
+ if (matcher.test(child.name)) walk(join3(dir, child.name), index + 1);
466
570
  }
467
571
  };
468
572
  walk(base, 0);
@@ -487,7 +591,7 @@ function workspacePackageDirs(root) {
487
591
  }
488
592
  }
489
593
  }
490
- const members = [...included].filter((m) => !excluded.has(m) && existsSync2(join2(m, "package.json"))).sort();
594
+ const members = [...included].filter((m) => !excluded.has(m) && existsSync3(join3(m, "package.json"))).sort();
491
595
  for (const member of members) expand(member);
492
596
  ordered.push(dir);
493
597
  };
@@ -504,9 +608,9 @@ function nameOf(dir, named) {
504
608
  }
505
609
  function expandRootGlob(dir) {
506
610
  if (!dir.includes("*")) return [dir];
507
- const absolute = isAbsolute(dir);
611
+ const absolute = isAbsolute2(dir);
508
612
  const base = absolute ? "/" : ".";
509
- return globDirs(base, dir).filter((d) => existsSync2(join2(d, "package.json"))).sort();
613
+ return globDirs(base, dir).filter((d) => existsSync3(join3(d, "package.json"))).sort();
510
614
  }
511
615
  function readCatalog(options) {
512
616
  const scopes = options.scopes ?? [];
@@ -530,7 +634,7 @@ function readCatalog(options) {
530
634
  seenPaths.add(path);
531
635
  let source;
532
636
  try {
533
- source = readFileSync2(path, "utf8");
637
+ source = readFileSync3(path, "utf8");
534
638
  } catch {
535
639
  continue;
536
640
  }
@@ -574,7 +678,7 @@ function readCatalog(options) {
574
678
  }
575
679
  seen.add(entry.name);
576
680
  if (kindOf(entry) === "skill" && basename2(entry.path) === "SKILL.md") {
577
- const parsed = frontmatterObject(readFileSync2(entry.path, "utf8"));
681
+ const parsed = frontmatterObject(readFileSync3(entry.path, "utf8"));
578
682
  for (const problem of specProblems(
579
683
  parsed,
580
684
  basename2(dirname2(entry.path))
@@ -641,7 +745,7 @@ function registerSkillPrompts(server, tools) {
641
745
  }
642
746
 
643
747
  // src/resources.ts
644
- import { statSync as statSync4 } from "fs";
748
+ import { statSync as statSync5 } from "fs";
645
749
  import {
646
750
  ResourceNotFoundError,
647
751
  ResourceTemplate
@@ -649,8 +753,8 @@ import {
649
753
 
650
754
  // src/files/list.ts
651
755
  import { createHash } from "crypto";
652
- import { readFileSync as readFileSync3, readdirSync as readdirSync3, statSync } from "fs";
653
- import { basename as basename4, join as join3, relative as relative2, sep } from "path";
756
+ import { readFileSync as readFileSync4, readdirSync as readdirSync3, statSync as statSync2 } from "fs";
757
+ import { basename as basename4, join as join4, relative as relative3, sep as sep2 } from "path";
654
758
 
655
759
  // src/files/redact.ts
656
760
  import { basename as basename3 } from "path";
@@ -687,11 +791,11 @@ function servedBytes(path, raw) {
687
791
  var FILE_LIST_LIMIT = 200;
688
792
  var sha256 = (bytes) => createHash("sha256").update(bytes).digest("hex");
689
793
  function describe(path, full) {
690
- const bytes = servedBytes(full, readFileSync3(full));
794
+ const bytes = servedBytes(full, readFileSync4(full));
691
795
  return { path, bytes: bytes.length, sha256: sha256(bytes) };
692
796
  }
693
797
  function listSkillFiles(root, limit = FILE_LIST_LIMIT) {
694
- if (statSync(root).isFile()) {
798
+ if (statSync2(root).isFile()) {
695
799
  return { files: [describe(basename4(root), root)], truncated: false };
696
800
  }
697
801
  const files = [];
@@ -700,14 +804,14 @@ function listSkillFiles(root, limit = FILE_LIST_LIMIT) {
700
804
  const dir = stack.pop();
701
805
  for (const entry of readdirSync3(dir, { withFileTypes: true })) {
702
806
  if (entry.name === "node_modules" || entry.name === ".git") continue;
703
- const full = join3(dir, entry.name);
807
+ const full = join4(dir, entry.name);
704
808
  if (entry.isDirectory()) {
705
809
  stack.push(full);
706
810
  continue;
707
811
  }
708
812
  if (!entry.isFile()) continue;
709
813
  if (files.length >= limit) return { files, truncated: true };
710
- files.push(describe(relative2(root, full).split(sep).join("/"), full));
814
+ files.push(describe(relative3(root, full).split(sep2).join("/"), full));
711
815
  }
712
816
  }
713
817
  files.sort((a, b) => a.path.localeCompare(b.path));
@@ -715,7 +819,7 @@ function listSkillFiles(root, limit = FILE_LIST_LIMIT) {
715
819
  }
716
820
 
717
821
  // src/files/read.ts
718
- import { readFileSync as readFileSync4, statSync as statSync3 } from "fs";
822
+ import { readFileSync as readFileSync5, statSync as statSync4 } from "fs";
719
823
 
720
824
  // src/mime.ts
721
825
  var TYPES = {
@@ -821,31 +925,31 @@ function classify(path, bytes) {
821
925
  }
822
926
 
823
927
  // src/files/resolve.ts
824
- import { realpathSync, statSync as statSync2 } from "fs";
825
- import { dirname as dirname3, isAbsolute as isAbsolute2, relative as relative3, resolve as resolve2, sep as sep2 } from "path";
826
- var ownFile = (entry) => relative3(assetRoot(entry), entry.path).split(sep2).join("/");
928
+ import { realpathSync as realpathSync2, statSync as statSync3 } from "fs";
929
+ import { dirname as dirname3, isAbsolute as isAbsolute3, relative as relative4, resolve as resolve3, sep as sep3 } from "path";
930
+ var ownFile = (entry) => relative4(assetRoot(entry), entry.path).split(sep3).join("/");
827
931
  function resolveSkillFile(entry, wanted = ownFile(entry)) {
828
- if (isAbsolute2(wanted) || wanted.split(/[\\/]/u).includes("..")) {
932
+ if (isAbsolute3(wanted) || wanted.split(/[\\/]/u).includes("..")) {
829
933
  return { ok: false, error: "path_outside_skill", detail: wanted };
830
934
  }
831
- const scope = realpathSync(assetRoot(entry));
832
- const single = statSync2(scope).isFile();
935
+ const scope = realpathSync2(assetRoot(entry));
936
+ const single = statSync3(scope).isFile();
833
937
  const root = single ? dirname3(scope) : scope;
834
938
  let target;
835
939
  try {
836
- target = realpathSync(
837
- single && wanted === "" ? scope : resolve2(root, wanted)
940
+ target = realpathSync2(
941
+ single && wanted === "" ? scope : resolve3(root, wanted)
838
942
  );
839
943
  } catch {
840
944
  return { ok: false, error: "no_such_file", detail: wanted };
841
945
  }
842
- const inside = single ? target === scope : target === root || target.startsWith(root + sep2);
946
+ const inside = single ? target === scope : target === root || target.startsWith(root + sep3);
843
947
  if (!inside)
844
948
  return { ok: false, error: "path_outside_skill", detail: wanted };
845
949
  return {
846
950
  ok: true,
847
951
  target,
848
- path: relative3(root, target).split(sep2).join("/")
952
+ path: relative4(root, target).split(sep3).join("/")
849
953
  };
850
954
  }
851
955
 
@@ -854,7 +958,7 @@ var READ_BUDGET_BYTES = 256 * 1024;
854
958
  function readSkillFile(entry, wanted, budget = READ_BUDGET_BYTES) {
855
959
  const resolved = resolveSkillFile(entry, wanted);
856
960
  if (!resolved.ok) return resolved;
857
- const size = statSync3(resolved.target).size;
961
+ const size = statSync4(resolved.target).size;
858
962
  if (size > budget) {
859
963
  return {
860
964
  ok: false,
@@ -862,7 +966,7 @@ function readSkillFile(entry, wanted, budget = READ_BUDGET_BYTES) {
862
966
  detail: `${size} bytes > ${budget}`
863
967
  };
864
968
  }
865
- const bytes = servedBytes(resolved.target, readFileSync4(resolved.target));
969
+ const bytes = servedBytes(resolved.target, readFileSync5(resolved.target));
866
970
  const { kind: kind2, mimeType } = classify(resolved.path, bytes);
867
971
  return {
868
972
  ok: true,
@@ -902,7 +1006,7 @@ function listing(entries) {
902
1006
  name: entry.name,
903
1007
  description: entry.description,
904
1008
  mimeType: "text/markdown",
905
- size: statSync4(entry.path).size
1009
+ size: statSync5(entry.path).size
906
1010
  }));
907
1011
  }
908
1012
  function complete(value, entries) {
@@ -939,7 +1043,7 @@ function registerSkillResources(server, skills) {
939
1043
  }
940
1044
 
941
1045
  // src/server.ts
942
- import { readFileSync as readFileSync6 } from "fs";
1046
+ import { readFileSync as readFileSync7 } from "fs";
943
1047
 
944
1048
  // src/find.ts
945
1049
  import { createHash as createHash2 } from "crypto";
@@ -1035,11 +1139,11 @@ function rank(matches2, limit) {
1035
1139
  }
1036
1140
 
1037
1141
  // src/files/bundle.ts
1038
- import { readFileSync as readFileSync5, statSync as statSync5 } from "fs";
1039
- import { dirname as dirname4, join as join4 } from "path";
1142
+ import { readFileSync as readFileSync6, statSync as statSync6 } from "fs";
1143
+ import { dirname as dirname4, join as join5 } from "path";
1040
1144
  function bundleSkill(entry) {
1041
1145
  const root = assetRoot(entry);
1042
- const base = statSync5(root).isFile() ? dirname4(root) : root;
1146
+ const base = statSync6(root).isFile() ? dirname4(root) : root;
1043
1147
  const listing2 = listSkillFiles(root);
1044
1148
  return {
1045
1149
  name: entry.name,
@@ -1047,7 +1151,7 @@ function bundleSkill(entry) {
1047
1151
  files: listing2.files.map((file) => ({
1048
1152
  ...file,
1049
1153
  uri: skillFileUri(entry, file.path),
1050
- mimeType: classify(file.path, readFileSync5(join4(base, file.path))).mimeType
1154
+ mimeType: classify(file.path, readFileSync6(join5(base, file.path))).mimeType
1051
1155
  }))
1052
1156
  };
1053
1157
  }
@@ -1251,7 +1355,7 @@ function createSkillTools(options) {
1251
1355
  describe(name) {
1252
1356
  const entry = byName(name);
1253
1357
  if (!entry) return null;
1254
- const source = readFileSync6(entry.path, "utf8");
1358
+ const source = readFileSync7(entry.path, "utf8");
1255
1359
  const listing2 = listSkillFiles(assetRoot(entry));
1256
1360
  return {
1257
1361
  name: entry.name,
@@ -1288,7 +1392,7 @@ function createSkillTools(options) {
1288
1392
  return {
1289
1393
  name: entry.name,
1290
1394
  body: readBody(
1291
- servedBytes(entry.path, readFileSync6(entry.path)).toString("utf8")
1395
+ servedBytes(entry.path, readFileSync7(entry.path)).toString("utf8")
1292
1396
  ),
1293
1397
  files: bundle.files.filter((file) => file.path !== own),
1294
1398
  filesTruncated: bundle.truncated
@@ -1308,17 +1412,17 @@ function createSkillTools(options) {
1308
1412
 
1309
1413
  // src/extension/entry.ts
1310
1414
  import { createHash as createHash3 } from "crypto";
1311
- import { readFileSync as readFileSync7, readdirSync as readdirSync4, statSync as statSync6 } from "fs";
1312
- import { basename as basename5, dirname as dirname5, join as join5, relative as relative4, sep as sep3 } from "path";
1415
+ import { readFileSync as readFileSync8, readdirSync as readdirSync4, statSync as statSync7 } from "fs";
1416
+ import { basename as basename5, dirname as dirname5, join as join6, relative as relative5, sep as sep4 } from "path";
1313
1417
  var MAX_RESOURCES = 512;
1314
1418
  var MAX_SKILL_BYTES = 16 * 1024 * 1024;
1315
1419
  var digests = /* @__PURE__ */ new Map();
1316
1420
  function facts(path) {
1317
- const stat = statSync6(path);
1421
+ const stat = statSync7(path);
1318
1422
  const key = `${stat.mtimeMs}:${stat.size}`;
1319
1423
  const cached = digests.get(path);
1320
1424
  if (cached?.key === key) return cached;
1321
- const bytes = servedBytes(path, readFileSync7(path));
1425
+ const bytes = servedBytes(path, readFileSync8(path));
1322
1426
  const digest = `sha256:${createHash3("sha256").update(bytes).digest("hex")}`;
1323
1427
  const fresh = { key, digest, size: bytes.length };
1324
1428
  digests.set(path, fresh);
@@ -1331,7 +1435,7 @@ function filesUnder(root) {
1331
1435
  const dir = stack.pop();
1332
1436
  for (const entry of readdirSync4(dir, { withFileTypes: true })) {
1333
1437
  if (entry.name === "node_modules" || entry.name === ".git") continue;
1334
- const full = join5(dir, entry.name);
1438
+ const full = join6(dir, entry.name);
1335
1439
  if (entry.isDirectory()) stack.push(full);
1336
1440
  else if (entry.isFile()) found.push(full);
1337
1441
  if (found.length > MAX_RESOURCES) return null;
@@ -1342,7 +1446,7 @@ function filesUnder(root) {
1342
1446
  function extensionEntry(entry) {
1343
1447
  if (kindOf(entry) !== "skill" || basename5(entry.path) !== "SKILL.md")
1344
1448
  return null;
1345
- const frontmatter = frontmatterObject(readFileSync7(entry.path, "utf8"));
1449
+ const frontmatter = frontmatterObject(readFileSync8(entry.path, "utf8"));
1346
1450
  const root = dirname5(entry.path);
1347
1451
  if (specProblems(frontmatter, basename5(root)).length > 0) return null;
1348
1452
  if (frontmatter?.["name"] !== entry.slug) return null;
@@ -1352,7 +1456,7 @@ function extensionEntry(entry) {
1352
1456
  const resources = files.map((path) => {
1353
1457
  const fact = facts(path);
1354
1458
  total += fact.size;
1355
- const file = relative4(root, path).split(sep3).join("/");
1459
+ const file = relative5(root, path).split(sep4).join("/");
1356
1460
  return {
1357
1461
  uri: skillFileUri(entry, file),
1358
1462
  digest: fact.digest,
@@ -1837,7 +1941,7 @@ function registerMailboxTools(server, service) {
1837
1941
 
1838
1942
  // src/mcp.ts
1839
1943
  var SERVER_NAME = "pmcp";
1840
- var SERVER_VERSION = "0.13.0";
1944
+ var SERVER_VERSION = "0.14.0";
1841
1945
  function registerSkillTools(server, tools) {
1842
1946
  registerCatalogTool(server, tools);
1843
1947
  registerFindTool(server, tools);
@@ -1862,22 +1966,22 @@ import { randomUUID } from "crypto";
1862
1966
  import {
1863
1967
  closeSync,
1864
1968
  constants,
1865
- existsSync as existsSync4,
1969
+ existsSync as existsSync5,
1866
1970
  fstatSync,
1867
1971
  mkdirSync,
1868
1972
  openSync,
1869
- readFileSync as readFileSync9,
1973
+ readFileSync as readFileSync10,
1870
1974
  renameSync,
1871
1975
  rmSync,
1872
1976
  writeFileSync
1873
1977
  } from "fs";
1874
1978
  import { homedir } from "os";
1875
- import { dirname as dirname7, join as join7, resolve as resolve4 } from "path";
1979
+ import { dirname as dirname7, join as join8, resolve as resolve5 } from "path";
1876
1980
  import { z as z12 } from "zod";
1877
1981
 
1878
1982
  // src/config.ts
1879
- import { existsSync as existsSync3, readFileSync as readFileSync8 } from "fs";
1880
- import { dirname as dirname6, join as join6, resolve as resolve3 } from "path";
1983
+ import { existsSync as existsSync4, readFileSync as readFileSync9 } from "fs";
1984
+ import { dirname as dirname6, join as join7, resolve as resolve4 } from "path";
1881
1985
  import { parse as parse2 } from "smol-toml";
1882
1986
 
1883
1987
  // src/encoder.ts
@@ -1885,7 +1989,11 @@ import { createHash as createHash4 } from "crypto";
1885
1989
 
1886
1990
  // src/config.ts
1887
1991
  var PATH_KEYS = ["roots", "workspaces", "packages", "marketplaces"];
1888
- var CATALOG_KEYS = /* @__PURE__ */ new Set([...PATH_KEYS, "scopes"]);
1992
+ var CATALOG_KEYS = /* @__PURE__ */ new Set([
1993
+ ...PATH_KEYS,
1994
+ "scopes",
1995
+ "builtin"
1996
+ ]);
1889
1997
 
1890
1998
  // src/mailbox/types.ts
1891
1999
  var MailboxError = class extends Error {
@@ -1942,7 +2050,7 @@ function readPrivateJson(file) {
1942
2050
  "Credential file must belong to the current user"
1943
2051
  );
1944
2052
  }
1945
- return JSON.parse(readFileSync9(descriptor, "utf8"));
2053
+ return JSON.parse(readFileSync10(descriptor, "utf8"));
1946
2054
  } finally {
1947
2055
  closeSync(descriptor);
1948
2056
  }
@@ -1954,7 +2062,7 @@ function readBinding(file) {
1954
2062
  return bindingSchema.parse(readPrivateJson(file));
1955
2063
  }
1956
2064
  function writePrivateJson(file, value) {
1957
- mkdirSync(dirname7(resolve4(file)), { recursive: true, mode: 448 });
2065
+ mkdirSync(dirname7(resolve5(file)), { recursive: true, mode: 448 });
1958
2066
  writeFileSync(file, `${JSON.stringify(value, null, 2)}
1959
2067
  `, {
1960
2068
  flag: "wx",
@@ -1962,7 +2070,7 @@ function writePrivateJson(file, value) {
1962
2070
  });
1963
2071
  }
1964
2072
  function writeBindingFile(file, binding) {
1965
- if (existsSync4(file)) {
2073
+ if (existsSync5(file)) {
1966
2074
  const previous = readBinding(file);
1967
2075
  if (previous.projectId !== binding.projectId || previous.actorId !== binding.actorId) {
1968
2076
  throw new MailboxError(
@@ -1989,7 +2097,7 @@ import {
1989
2097
  chmodSync as chmodSync2,
1990
2098
  copyFileSync,
1991
2099
  constants as constants2,
1992
- existsSync as existsSync5,
2100
+ existsSync as existsSync6,
1993
2101
  unlinkSync
1994
2102
  } from "fs";
1995
2103
 
@@ -2626,7 +2734,7 @@ var MailboxStore = class _MailboxStore {
2626
2734
  "Mailbox storage is closed"
2627
2735
  );
2628
2736
  }
2629
- if (existsSync5(destination)) {
2737
+ if (existsSync6(destination)) {
2630
2738
  throw new MailboxError(
2631
2739
  "destination_exists",
2632
2740
  "Backup destination already exists"