{"_id":"@carllee1983/prompt-toolkit","_rev":"12-62bc6164c179450fd895cfc89bd04dc8","name":"@carllee1983/prompt-toolkit","dist-tags":{"latest":"1.0.0"},"versions":{"0.1.0":{"name":"@carllee1983/prompt-toolkit","version":"0.1.0","keywords":["mcp","prompt","toolkit","ai","governance"],"author":{"name":"CarlLee1983"},"license":"ISC","_id":"@carllee1983/prompt-toolkit@0.1.0","maintainers":[{"name":"carllee1983","email":"carllee0520@gmail.com"}],"dist":{"shasum":"8fb3d0595762f7c15887614efdcab1f6f80c3d59","tarball":"https://registry.npmjs.org/@carllee1983/prompt-toolkit/-/prompt-toolkit-0.1.0.tgz","fileCount":5,"integrity":"sha512-sUD6hBt1/TU1bKkAgCRPH5eKlfC/ERUZ/PIrsOO5lb8H/4kLQmQYOPvdQqRBK3MeKb9a1VmSV5onmG2WXoNkPg==","signatures":[{"sig":"MEYCIQC3sugwTMFTkKGCcvE/Fy9FXO3en5MdM5dpmtPzNY7F/AIhAPqFA+M7HHdYwVFLLhSnBaJVN85efibfWngibRAt0ZT/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21328},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"ba78592f0e3fd6bab6e1358046b0211b1a12558b","scripts":{"dev":"tsup src/index.ts --dts --watch","lint":"eslint .","test":"vitest","build":"tsup src/index.ts --dts","test:run":"vitest run","test:coverage":"vitest --coverage"},"_npmUser":{"name":"carllee1983","email":"carllee0520@gmail.com"},"_npmVersion":"10.9.2","description":"Prompt repository governance toolkit for MCP","directories":{},"_nodeVersion":"22.17.1","dependencies":{"zod":"^3.23.0","glob":"^10.3.0","js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^1.5.0","typescript":"^5.4.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/prompt-toolkit_0.1.0_1764728795333_0.6120870980543676","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@carllee1983/prompt-toolkit","version":"0.2.0","keywords":["mcp","prompt","toolkit","ai","governance"],"author":{"name":"CarlLee1983"},"license":"ISC","_id":"@carllee1983/prompt-toolkit@0.2.0","maintainers":[{"name":"carllee1983","email":"carllee0520@gmail.com"}],"dist":{"shasum":"693b3e05c3e4094f0a5e880fea0277cb4a278467","tarball":"https://registry.npmjs.org/@carllee1983/prompt-toolkit/-/prompt-toolkit-0.2.0.tgz","fileCount":5,"integrity":"sha512-QCC9cV5ba7BaHNfzDH2MelXBYJL+dft6qXYxNn46dZoyO3k8ED9xSnorLXg0EkSwkR/l0DYXyGy0i9QY+jgNHg==","signatures":[{"sig":"MEQCIBKE/A8JSVXMs7op5Ud4YZJtoiT6SdrvY75MtqmttDH8AiBJWdIOK9Ob893nQxg5e0X2nK9FbUyi5KxMlKGP0RYqHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29041},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"1189da0fb03ad8b1e256ba82b34da26c7cd8a507","scripts":{"dev":"tsup src/index.ts --dts --watch","lint":"eslint .","test":"vitest","build":"tsup src/index.ts --dts","prepare":"husky","lint:fix":"eslint . --fix","test:run":"vitest run","test:coverage":"vitest --coverage"},"_npmUser":{"name":"carllee1983","email":"carllee0520@gmail.com"},"_npmVersion":"10.9.2","description":"Prompt repository governance toolkit for MCP","directories":{},"_nodeVersion":"22.17.1","dependencies":{"zod":"^3.23.0","glob":"^10.3.0","js-yaml":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","husky":"^9.1.7","eslint":"^9.39.1","vitest":"^1.5.0","@eslint/js":"^9.39.1","typescript":"^5.4.0","@types/node":"^20.0.0","typescript-eslint":"^8.48.1","@typescript-eslint/parser":"^8.48.1","@typescript-eslint/eslint-plugin":"^8.48.1"},"_npmOperationalInternal":{"tmp":"tmp/prompt-toolkit_0.2.0_1764730839863_0.4229395591791827","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@carllee1983/prompt-toolkit","version":"0.3.0","keywords":["mcp","prompt","toolkit","ai","governance"],"author":{"name":"CarlLee1983"},"license":"ISC","_id":"@carllee1983/prompt-toolkit@0.3.0","maintainers":[{"name":"carllee1983","email":"carllee0520@gmail.com"}],"bin":{"prompt-toolkit":"dist/cli/index.js","prompt-toolkit-cli":"dist/cli/index.js"},"dist":{"shasum":"0080e3b8dafa405516f253fb0c10fa4269c1dc0d","tarball":"https://registry.npmjs.org/@carllee1983/prompt-toolkit/-/prompt-toolkit-0.3.0.tgz","fileCount":7,"integrity":"sha512-RsAULDPTf43ubAM66hWWvxtwvo5ixrcjouq8UagHwdlo3aifTpnZs/bT3VGvQ7ck6XVjmuGyVDjowyKoStFJOQ==","signatures":[{"sig":"MEQCIEHr8fxb0oVnf1/n6JtNT4VNS1VToBN0Zxn6vXXVvqa+AiBrhhmp3bsGu8xawyMp9SAeb7R19YfC7povktxQDj5ykg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63719},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"bad2c40e7a827e82d47fd6048081ac23d3b075f1","scripts":{"cli":"tsx src/cli/index.ts","dev":"tsup src/index.ts --dts --watch","lint":"eslint .","test":"vitest","build":"tsup src/index.ts --dts && tsup src/cli/index.ts --dts --format cjs --outDir dist/cli","prepare":"husky","lint:fix":"eslint . --fix","test:run":"vitest run","test:coverage":"vitest --coverage"},"_npmUser":{"name":"carllee1983","email":"carllee0520@gmail.com"},"_npmVersion":"10.9.2","description":"Prompt repository governance toolkit for MCP","directories":{},"_nodeVersion":"22.17.1","dependencies":{"ora":"^5.4.1","zod":"^3.23.0","glob":"^10.3.0","chalk":"^4.1.2","js-yaml":"^4.1.0","commander":"^14.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.0.0","husky":"^9.1.7","eslint":"^9.39.1","vitest":"^1.5.0","@eslint/js":"^9.39.1","typescript":"^5.4.0","@types/node":"^20.0.0","typescript-eslint":"^8.48.1","@typescript-eslint/parser":"^8.48.1","@typescript-eslint/eslint-plugin":"^8.48.1"},"_npmOperationalInternal":{"tmp":"tmp/prompt-toolkit_0.3.0_1764732013660_0.1680995388752795","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@carllee1983/prompt-toolkit","version":"0.3.1","keywords":["mcp","prompt","toolkit","ai","governance"],"author":{"name":"CarlLee1983"},"license":"ISC","_id":"@carllee1983/prompt-toolkit@0.3.1","maintainers":[{"name":"carllee1983","email":"carllee0520@gmail.com"}],"bin":{"prompt-toolkit":"dist/cli/index.js","prompt-toolkit-cli":"dist/cli/index.js"},"dist":{"shasum":"728faa45846a87c1e784cf41c735f4021d66c33f","tarball":"https://registry.npmjs.org/@carllee1983/prompt-toolkit/-/prompt-toolkit-0.3.1.tgz","fileCount":7,"integrity":"sha512-Kx2LaPRIRKoxOph7zj+3i3wY4KaPhJSLCo05CUm8PmmmH4gm4AeLCvCx9PesjdnCc+XJT2XItuubORiNBDgjEg==","signatures":[{"sig":"MEUCICUdEgMpfO2kv1XM3uSOuKk+Amhjd71k7Qpn5j2W1F49AiEAyYxTcSz4Zw7Mnyk6z+a2xZevJhIsAbRyi7+saoMnBGc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64048},"main":"dist/index.js","_from":"file:carllee1983-prompt-toolkit-0.3.1.tgz","types":"dist/index.d.ts","scripts":{"cli":"tsx src/cli/index.ts","dev":"tsup src/index.ts --dts --watch","lint":"eslint .","test":"vitest","build":"tsup src/index.ts --dts && tsup src/cli/index.ts --dts --format cjs --outDir dist/cli","lint:fix":"eslint . --fix","test:run":"vitest run","test:coverage":"vitest --coverage"},"_npmUser":{"name":"carllee1983","email":"carllee0520@gmail.com"},"_resolved":"/tmp/63da6762fa3a77e80c09eeb319b15ec7/carllee1983-prompt-toolkit-0.3.1.tgz","_integrity":"sha512-Kx2LaPRIRKoxOph7zj+3i3wY4KaPhJSLCo05CUm8PmmmH4gm4AeLCvCx9PesjdnCc+XJT2XItuubORiNBDgjEg==","_npmVersion":"10.8.2","description":"Prompt repository governance toolkit for MCP","directories":{},"_nodeVersion":"20.19.5","dependencies":{"ora":"^5.4.1","zod":"^3.23.0","glob":"^10.3.0","chalk":"^4.1.2","js-yaml":"^4.1.0","commander":"^14.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.0.0","husky":"^9.1.7","eslint":"^9.39.1","vitest":"^1.5.0","@eslint/js":"^9.39.1","typescript":"^5.4.0","@types/node":"^20.0.0","typescript-eslint":"^8.48.1","@typescript-eslint/parser":"^8.48.1","@typescript-eslint/eslint-plugin":"^8.48.1"},"_npmOperationalInternal":{"tmp":"tmp/prompt-toolkit_0.3.1_1764742505425_0.8457617188013513","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@carllee1983/prompt-toolkit","version":"0.3.2","keywords":["mcp","prompt","toolkit","ai","governance"],"author":{"name":"CarlLee1983"},"license":"ISC","_id":"@carllee1983/prompt-toolkit@0.3.2","maintainers":[{"name":"carllee1983","email":"carllee0520@gmail.com"}],"bin":{"prompt-toolkit":"dist/cli/index.js","prompt-toolkit-cli":"dist/cli/index.js"},"dist":{"shasum":"d4c3872968e3f6e7f772bd3da8773c97831546e6","tarball":"https://registry.npmjs.org/@carllee1983/prompt-toolkit/-/prompt-toolkit-0.3.2.tgz","fileCount":7,"integrity":"sha512-cGU5liFi7UqVqrZbjCB8rwn8EjDMjH5GbKnZZ1i6JVwS5I53r5fhXABFVQiTLzLDkkKin0Bp8giV9PfyG/ymcw==","signatures":[{"sig":"MEQCIFuLckgoV6eMWydRA6BVx3whnU65EaIkw7QU1Y9Qu66ZAiBvUaBMLsaG6s9gRK5RYAOEKKCF57Vqk8B3BCesDij5zg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64048},"main":"dist/index.js","_from":"file:carllee1983-prompt-toolkit-0.3.2.tgz","types":"dist/index.d.ts","scripts":{"cli":"tsx src/cli/index.ts","dev":"tsup src/index.ts --dts --watch","lint":"eslint .","test":"vitest","build":"tsup src/index.ts --dts && tsup src/cli/index.ts --dts --format cjs --outDir dist/cli","lint:fix":"eslint . --fix","test:run":"vitest run","test:coverage":"vitest --coverage"},"_npmUser":{"name":"carllee1983","email":"carllee0520@gmail.com"},"_resolved":"/tmp/26e44d4f4eba0c9fa2279c1791a0f9eb/carllee1983-prompt-toolkit-0.3.2.tgz","_integrity":"sha512-cGU5liFi7UqVqrZbjCB8rwn8EjDMjH5GbKnZZ1i6JVwS5I53r5fhXABFVQiTLzLDkkKin0Bp8giV9PfyG/ymcw==","_npmVersion":"10.8.2","description":"Prompt repository governance toolkit for MCP","directories":{},"_nodeVersion":"20.19.5","dependencies":{"ora":"^5.4.1","zod":"^3.23.0","glob":"^10.3.0","chalk":"^4.1.2","js-yaml":"^4.1.0","commander":"^14.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.0.0","husky":"^9.1.7","eslint":"^9.39.1","vitest":"^1.5.0","@eslint/js":"^9.39.1","typescript":"^5.4.0","@types/node":"^20.0.0","typescript-eslint":"^8.48.1","@typescript-eslint/parser":"^8.48.1","@typescript-eslint/eslint-plugin":"^8.48.1"},"_npmOperationalInternal":{"tmp":"tmp/prompt-toolkit_0.3.2_1764744028132_0.06859439420086133","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@carllee1983/prompt-toolkit","version":"0.3.3","keywords":["mcp","prompt","toolkit","ai","governance"],"author":{"name":"CarlLee1983"},"license":"ISC","_id":"@carllee1983/prompt-toolkit@0.3.3","maintainers":[{"name":"carllee1983","email":"carllee0520@gmail.com"}],"homepage":"https://github.com/CarlLee1983/mcp-prompt-toolkit#readme","bugs":{"url":"https://github.com/CarlLee1983/mcp-prompt-toolkit/issues"},"bin":{"prompt-toolkit":"dist/cli/index.js","prompt-toolkit-cli":"dist/cli/index.js"},"dist":{"shasum":"5a8ca943054f9cefc9a4072965f29b45e7d758f3","tarball":"https://registry.npmjs.org/@carllee1983/prompt-toolkit/-/prompt-toolkit-0.3.3.tgz","fileCount":7,"integrity":"sha512-+U5Bo/T5WHNfDi+Jl4AhEZlGU72JjKrOP66op/NkQyahdYNqdEyZwn1twikksFl+2/SH8ndPGxt88M7vth9XyA==","signatures":[{"sig":"MEUCIGDjGYZR93eNoqzUBZ3gmE6v6k5+X8Ab6LZNzdZhtKy2AiEA5MtAt9AkAsNTzr3FjcDGOaj/fmg/E3iuAYf6OcGjQ1M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64318},"main":"dist/index.js","_from":"file:carllee1983-prompt-toolkit-0.3.3.tgz","types":"dist/index.d.ts","scripts":{"cli":"tsx src/cli/index.ts","dev":"tsup src/index.ts --dts --watch","lint":"eslint .","test":"vitest","build":"tsup src/index.ts --dts && tsup src/cli/index.ts --dts --format cjs --outDir dist/cli","lint:fix":"eslint . --fix","test:run":"vitest run","test:coverage":"vitest --coverage"},"_npmUser":{"name":"carllee1983","email":"carllee0520@gmail.com"},"_resolved":"/tmp/8a8a3149f25323c6a0dc052ca0c6fcfc/carllee1983-prompt-toolkit-0.3.3.tgz","_integrity":"sha512-+U5Bo/T5WHNfDi+Jl4AhEZlGU72JjKrOP66op/NkQyahdYNqdEyZwn1twikksFl+2/SH8ndPGxt88M7vth9XyA==","repository":{"url":"git+https://github.com/CarlLee1983/mcp-prompt-toolkit.git","type":"git"},"_npmVersion":"10.8.2","description":"Prompt repository governance toolkit for MCP","directories":{},"_nodeVersion":"20.19.5","dependencies":{"ora":"^5.4.1","zod":"^3.23.0","glob":"^10.3.0","chalk":"^4.1.2","js-yaml":"^4.1.0","commander":"^14.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.0.0","husky":"^9.1.7","eslint":"^9.39.1","vitest":"^1.5.0","@eslint/js":"^9.39.1","typescript":"^5.4.0","@types/node":"^20.0.0","typescript-eslint":"^8.48.1","@typescript-eslint/parser":"^8.48.1","@typescript-eslint/eslint-plugin":"^8.48.1"},"_npmOperationalInternal":{"tmp":"tmp/prompt-toolkit_0.3.3_1764744895489_0.19191485010575504","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@carllee1983/prompt-toolkit","version":"0.3.4","keywords":["mcp","prompt","toolkit","ai","governance"],"author":{"name":"CarlLee1983"},"license":"ISC","_id":"@carllee1983/prompt-toolkit@0.3.4","maintainers":[{"name":"carllee1983","email":"carllee0520@gmail.com"}],"homepage":"https://github.com/CarlLee1983/mcp-prompt-toolkit#readme","bugs":{"url":"https://github.com/CarlLee1983/mcp-prompt-toolkit/issues"},"bin":{"prompt-toolkit":"dist/cli/index.js","prompt-toolkit-cli":"dist/cli/index.js"},"dist":{"shasum":"bb8057c94ab93985278d521ae432a05d4e845da7","tarball":"https://registry.npmjs.org/@carllee1983/prompt-toolkit/-/prompt-toolkit-0.3.4.tgz","fileCount":7,"integrity":"sha512-ks9CbqHVMeK48xl/vPeNWU0/bdzONLAtlmTLKAfY5S1b5JoK5odmwTTOOazLli7v1gE/ML64VLMk0y8FTEky4w==","signatures":[{"sig":"MEYCIQCumg08NM6O2UXERQLgSB17V7C6U+CV7IQI+tFWbIFkdwIhAKaAvIiTLjvoRKSrK6AswSLxgRkJZt7+F6wDQ8Azzz5a","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64318},"main":"dist/index.js","_from":"file:carllee1983-prompt-toolkit-0.3.4.tgz","types":"dist/index.d.ts","scripts":{"cli":"tsx src/cli/index.ts","dev":"tsup src/index.ts --dts --watch","lint":"eslint .","test":"vitest","build":"tsup src/index.ts --dts && tsup src/cli/index.ts --dts --format cjs --outDir dist/cli","lint:fix":"eslint . --fix","test:run":"vitest run","test:coverage":"vitest --coverage"},"_npmUser":{"name":"carllee1983","email":"carllee0520@gmail.com"},"_resolved":"/tmp/e3318188e184f2facf5dbd29be02c16b/carllee1983-prompt-toolkit-0.3.4.tgz","_integrity":"sha512-ks9CbqHVMeK48xl/vPeNWU0/bdzONLAtlmTLKAfY5S1b5JoK5odmwTTOOazLli7v1gE/ML64VLMk0y8FTEky4w==","repository":{"url":"git+https://github.com/CarlLee1983/mcp-prompt-toolkit.git","type":"git"},"_npmVersion":"10.8.2","description":"Prompt repository governance toolkit for MCP","directories":{},"_nodeVersion":"20.19.5","dependencies":{"ora":"^5.4.1","zod":"^3.23.0","glob":"^10.3.0","chalk":"^4.1.2","js-yaml":"^4.1.0","commander":"^14.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.0.0","husky":"^9.1.7","eslint":"^9.39.1","vitest":"^1.5.0","@eslint/js":"^9.39.1","typescript":"^5.4.0","@types/node":"^20.0.0","typescript-eslint":"^8.48.1","@typescript-eslint/parser":"^8.48.1","@typescript-eslint/eslint-plugin":"^8.48.1"},"_npmOperationalInternal":{"tmp":"tmp/prompt-toolkit_0.3.4_1764747598265_0.2550280897296535","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@carllee1983/prompt-toolkit","version":"0.3.5","keywords":["mcp","prompt","toolkit","ai","governance"],"author":{"name":"CarlLee1983"},"license":"ISC","_id":"@carllee1983/prompt-toolkit@0.3.5","maintainers":[{"name":"carllee1983","email":"carllee0520@gmail.com"}],"homepage":"https://github.com/CarlLee1983/mcp-prompt-toolkit#readme","bugs":{"url":"https://github.com/CarlLee1983/mcp-prompt-toolkit/issues"},"bin":{"prompt-toolkit":"dist/cli/index.js","prompt-toolkit-cli":"dist/cli/index.js"},"dist":{"shasum":"d91060e04980d784de4957681f9105134e3b5349","tarball":"https://registry.npmjs.org/@carllee1983/prompt-toolkit/-/prompt-toolkit-0.3.5.tgz","fileCount":7,"integrity":"sha512-mDB0P9EvMCFn69tFdsg4LaYfuDVF1IxB7YqBTt32ynYTw7CQwYoljFoj96QFpB7zHoUu+Tcw8KA6NhbBb0P9Nw==","signatures":[{"sig":"MEQCIHpSWBIjiP/9C0ULLa4RcbmOhUMYEhog0KKvG7gYgdyqAiAbw7aj4sQ1CPUeCKpcZ3NAcCpKx7OYnAUJ2iC5qF1MXw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64543},"main":"dist/index.js","_from":"file:carllee1983-prompt-toolkit-0.3.5.tgz","types":"dist/index.d.ts","scripts":{"cli":"tsx src/cli/index.ts","dev":"tsup src/index.ts --dts --watch","lint":"eslint .","test":"vitest","build":"tsup src/index.ts --dts && tsup src/cli/index.ts --dts --format cjs --outDir dist/cli","lint:fix":"eslint . --fix","test:run":"vitest run","test:coverage":"vitest --coverage","version:major":"npm version major -m \"chore: bump version to %s\"","version:minor":"npm version minor -m \"chore: bump version to %s\"","version:patch":"npm version patch -m \"chore: bump version to %s\""},"_npmUser":{"name":"carllee1983","email":"carllee0520@gmail.com"},"_resolved":"/tmp/31f091d3673d8f48ac6ad9cfa3afdde4/carllee1983-prompt-toolkit-0.3.5.tgz","_integrity":"sha512-mDB0P9EvMCFn69tFdsg4LaYfuDVF1IxB7YqBTt32ynYTw7CQwYoljFoj96QFpB7zHoUu+Tcw8KA6NhbBb0P9Nw==","repository":{"url":"git+https://github.com/CarlLee1983/mcp-prompt-toolkit.git","type":"git"},"_npmVersion":"10.8.2","description":"Prompt repository governance toolkit for MCP","directories":{},"_nodeVersion":"20.19.5","dependencies":{"ora":"^5.4.1","zod":"^3.23.0","glob":"^10.3.0","chalk":"^4.1.2","js-yaml":"^4.1.0","commander":"^14.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.0.0","husky":"^9.1.7","eslint":"^9.39.1","vitest":"^1.5.0","@eslint/js":"^9.39.1","typescript":"^5.4.0","@types/node":"^20.0.0","typescript-eslint":"^8.48.1","@typescript-eslint/parser":"^8.48.1","@typescript-eslint/eslint-plugin":"^8.48.1"},"_npmOperationalInternal":{"tmp":"tmp/prompt-toolkit_0.3.5_1764747750213_0.3347754849867739","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@carllee1983/prompt-toolkit","version":"0.4.0","keywords":["mcp","prompt","toolkit","ai","governance"],"author":{"name":"CarlLee1983"},"license":"ISC","_id":"@carllee1983/prompt-toolkit@0.4.0","maintainers":[{"name":"carllee1983","email":"carllee0520@gmail.com"}],"homepage":"https://github.com/CarlLee1983/mcp-prompt-toolkit#readme","bugs":{"url":"https://github.com/CarlLee1983/mcp-prompt-toolkit/issues"},"bin":{"prompt-toolkit":"dist/cli/index.js","prompt-toolkit-cli":"dist/cli/index.js"},"dist":{"shasum":"be586800cc2becd38d56851749f8fa0fce80758e","tarball":"https://registry.npmjs.org/@carllee1983/prompt-toolkit/-/prompt-toolkit-0.4.0.tgz","fileCount":7,"integrity":"sha512-zo7lb9dQUlzE1lO/6KHc/FrY7yTstsKjfi9t++xL7y9waF8SUvv9bXEZurjFW39dm1HRnqI9JAoJb4GyEFk7bA==","signatures":[{"sig":"MEUCIQDeYXu4w9WQa+I1XTuvzU9Bm5PhBGtXbpgmC+5ynT+jBAIgaAxtlmpR3zbgeflY1N5ERAr4sT9nfYe6jnJYJi+JOp4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96418},"main":"dist/index.js","_from":"file:carllee1983-prompt-toolkit-0.4.0.tgz","types":"dist/index.d.ts","scripts":{"cli":"tsx src/cli/index.ts","dev":"tsup src/index.ts --dts --watch","lint":"eslint .","test":"vitest","build":"tsup src/index.ts --dts && tsup src/cli/index.ts --dts --format cjs --outDir dist/cli","lint:fix":"eslint . --fix","test:run":"vitest run","test:coverage":"vitest --coverage","version:major":"npm version major -m \"chore: bump version to %s\"","version:minor":"npm version minor -m \"chore: bump version to %s\"","version:patch":"npm version patch -m \"chore: bump version to %s\""},"_npmUser":{"name":"carllee1983","email":"carllee0520@gmail.com"},"_resolved":"/tmp/274e8748ec88f548e3400ed8a7e4ca1d/carllee1983-prompt-toolkit-0.4.0.tgz","_integrity":"sha512-zo7lb9dQUlzE1lO/6KHc/FrY7yTstsKjfi9t++xL7y9waF8SUvv9bXEZurjFW39dm1HRnqI9JAoJb4GyEFk7bA==","repository":{"url":"git+https://github.com/CarlLee1983/mcp-prompt-toolkit.git","type":"git"},"_npmVersion":"10.8.2","description":"Prompt repository governance toolkit for MCP","directories":{},"_nodeVersion":"20.19.5","dependencies":{"ora":"^5.4.1","zod":"^3.23.0","glob":"^10.3.0","chalk":"^4.1.2","js-yaml":"^4.1.0","commander":"^14.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.0.0","husky":"^9.1.7","eslint":"^9.39.1","vitest":"^1.5.0","@eslint/js":"^9.39.1","typescript":"^5.4.0","@types/node":"^20.0.0","typescript-eslint":"^8.48.1","@typescript-eslint/parser":"^8.48.1","@typescript-eslint/eslint-plugin":"^8.48.1"},"_npmOperationalInternal":{"tmp":"tmp/prompt-toolkit_0.4.0_1764750891791_0.911585086784312","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@carllee1983/prompt-toolkit","version":"0.4.1","keywords":["mcp","prompt","toolkit","ai","governance","validation","yaml","schema","cli","typescript","model-context-protocol"],"author":{"name":"CarlLee1983"},"license":"ISC","_id":"@carllee1983/prompt-toolkit@0.4.1","maintainers":[{"name":"carllee1983","email":"carllee0520@gmail.com"}],"homepage":"https://github.com/CarlLee1983/mcp-prompt-toolkit#readme","bugs":{"url":"https://github.com/CarlLee1983/mcp-prompt-toolkit/issues"},"bin":{"prompt-toolkit":"dist/cli/index.js","prompt-toolkit-cli":"dist/cli/index.js"},"dist":{"shasum":"1c030081d2f89921ad51fa8449734a66fe19e1c5","tarball":"https://registry.npmjs.org/@carllee1983/prompt-toolkit/-/prompt-toolkit-0.4.1.tgz","fileCount":8,"integrity":"sha512-0AyIyrUYUPzpJbBgowoFzPcIOrNy4vOLluVG5OaMGUMIwagXuzn7g4Mbqh8OGXBVM0zNyJ59QG4GURMbdvj7qA==","signatures":[{"sig":"MEUCIQCIPo2JYHZFn+HGWqtR5WjreDlrpoZy4wFXii6DI0WxEQIgfKkH41XpbmMQN6I4XfCS5hldE6gkhliS1ZC/cv+T2tc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104969},"main":"dist/index.js","_from":"file:carllee1983-prompt-toolkit-0.4.1.tgz","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"scripts":{"cli":"tsx src/cli/index.ts","dev":"tsup src/index.ts --dts --watch","lint":"eslint .","test":"vitest","build":"tsup src/index.ts --dts && tsup src/cli/index.ts --dts --format cjs --outDir dist/cli","lint:fix":"eslint . --fix","test:run":"vitest run","test:coverage":"vitest --coverage","version:major":"npm version major -m \"chore: bump version to %s\"","version:minor":"npm version minor -m \"chore: bump version to %s\"","version:patch":"npm version patch -m \"chore: bump version to %s\""},"_npmUser":{"name":"carllee1983","email":"carllee0520@gmail.com"},"_resolved":"/tmp/302a139eba14295fd9e7d1c0b6f3c642/carllee1983-prompt-toolkit-0.4.1.tgz","_integrity":"sha512-0AyIyrUYUPzpJbBgowoFzPcIOrNy4vOLluVG5OaMGUMIwagXuzn7g4Mbqh8OGXBVM0zNyJ59QG4GURMbdvj7qA==","repository":{"url":"git+https://github.com/CarlLee1983/mcp-prompt-toolkit.git","type":"git"},"_npmVersion":"10.8.2","description":"Prompt repository governance toolkit for MCP","directories":{},"_nodeVersion":"20.19.6","dependencies":{"ora":"^5.4.1","zod":"^3.23.0","glob":"^10.3.0","chalk":"^4.1.2","js-yaml":"^4.1.0","commander":"^14.0.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.0.0","husky":"^9.1.7","eslint":"^9.39.1","vitest":"^1.5.0","@eslint/js":"^9.39.1","typescript":"^5.4.0","@types/node":"^20.0.0","typescript-eslint":"^8.48.1","@typescript-eslint/parser":"^8.48.1","@typescript-eslint/eslint-plugin":"^8.48.1"},"_npmOperationalInternal":{"tmp":"tmp/prompt-toolkit_0.4.1_1764770313498_0.3787282754929331","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@carllee1983/prompt-toolkit","version":"1.0.0","keywords":["mcp","prompt","toolkit","ai","governance","validation","yaml","schema","cli","typescript","model-context-protocol"],"author":{"name":"CarlLee1983"},"license":"ISC","_id":"@carllee1983/prompt-toolkit@1.0.0","maintainers":[{"name":"carllee1983","email":"carllee0520@gmail.com"}],"homepage":"https://github.com/CarlLee1983/mcp-prompt-toolkit#readme","bugs":{"url":"https://github.com/CarlLee1983/mcp-prompt-toolkit/issues"},"bin":{"prompt-toolkit":"dist/cli/index.js","prompt-toolkit-cli":"dist/cli/index.js"},"dist":{"shasum":"6da82a996f4f73e2a46157d82f0a658b72c06d66","tarball":"https://registry.npmjs.org/@carllee1983/prompt-toolkit/-/prompt-toolkit-1.0.0.tgz","fileCount":8,"integrity":"sha512-H+DVjcCVS0gFNrPC1S6LXI6AW/DZtEsOy8J1NyfZXkGNRUfyX/9vssQuBy4TEHFzG5t8e03O5iU/1d9zfQzT9Q==","signatures":[{"sig":"MEUCIESqp+uUhIJZwHqO3B9J5boLLog0b8cdUezuGovi3JRxAiEAh5Vh5BlvI3Pz1t3EstM1Ohs8xigsBmjJ/Z3E3Y9rZpM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125967},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"26aa3d49f694b8eb419fdbdf34b6d247076ca088","scripts":{"cli":"tsx src/cli/index.ts","dev":"tsup src/index.ts --dts --watch","lint":"eslint .","test":"vitest","build":"tsup src/index.ts --dts && tsup src/cli/index.ts --dts --format cjs --outDir dist/cli","prepare":"husky","lint:fix":"eslint . --fix","test:run":"vitest run","test:coverage":"vitest --coverage","version:major":"npm version major -m \"chore: bump version to %s\"","version:minor":"npm version minor -m \"chore: bump version to %s\"","version:patch":"npm version patch -m \"chore: bump version to %s\""},"_npmUser":{"name":"carllee1983","email":"carllee0520@gmail.com"},"repository":{"url":"git+https://github.com/CarlLee1983/mcp-prompt-toolkit.git","type":"git"},"_npmVersion":"10.8.2","description":"Prompt repository governance toolkit for MCP","directories":{},"_nodeVersion":"18.20.8","dependencies":{"ora":"^9.0.0","zod":"^4.1.13","glob":"^13.0.0","chalk":"^5.6.2","js-yaml":"^4.1.0","commander":"^14.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.0.0","devDependencies":{"tsx":"^4.21.0","tsup":"^8.0.0","husky":"^9.1.7","eslint":"^9.39.1","vitest":"^4.0.15","@eslint/js":"^9.39.1","typescript":"^5.4.0","@types/node":"^24.10.1","typescript-eslint":"^8.48.1","@typescript-eslint/parser":"^8.48.1","@typescript-eslint/eslint-plugin":"^8.48.1"},"_npmOperationalInternal":{"tmp":"tmp/prompt-toolkit_1.0.0_1764774021576_0.1427035296961796","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2025-12-03T02:26:35.237Z","modified":"2026-09-15T02:54:45.569Z","0.1.0":"2025-12-03T02:26:35.538Z","0.2.0":"2025-12-03T03:00:40.331Z","0.3.0":"2025-12-03T03:20:13.850Z","0.3.1":"2025-12-03T06:15:05.615Z","0.3.2":"2025-12-03T06:40:28.314Z","0.3.3":"2025-12-03T06:54:55.674Z","0.3.4":"2025-12-03T07:39:58.477Z","0.3.5":"2025-12-03T07:42:30.412Z","0.4.0":"2025-12-03T08:34:51.980Z","0.4.1":"2025-12-03T13:58:33.686Z","1.0.0":"2025-12-03T15:00:21.779Z"},"bugs":{"url":"https://github.com/CarlLee1983/mcp-prompt-toolkit/issues"},"author":{"name":"CarlLee1983"},"license":"ISC","homepage":"https://github.com/CarlLee1983/mcp-prompt-toolkit#readme","keywords":["mcp","prompt","toolkit","ai","governance","validation","yaml","schema","cli","typescript","model-context-protocol"],"repository":{"url":"git+https://github.com/CarlLee1983/mcp-prompt-toolkit.git","type":"git"},"description":"Prompt repository governance toolkit for MCP","maintainers":[{"email":"yashino538@gmail.com","name":"praxisbound"}],"readme":"# @carllee1983/prompt-toolkit\n\n<div align=\"center\">\n\n**適用於 MCP 的提示倉庫治理工具集**\n\n[![Version](https://img.shields.io/badge/version-1.0.0-blue.svg)](https://github.com/CarlLee1983/prompts-tooling-sdk)\n[![Production Ready](https://img.shields.io/badge/production-ready-success.svg)](https://github.com/CarlLee1983/prompts-tooling-sdk)\n[![License](https://img.shields.io/badge/license-ISC-green.svg)](LICENSE)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.4+-blue.svg)](https://www.typescriptlang.org/)\n[![Node](https://img.shields.io/badge/Node.js-18+-green.svg)](https://nodejs.org/)\n\n</div>\n\n## 📋 簡介\n\n`@carllee1983/prompt-toolkit` 是一套**生產就緒**的 TypeScript 工具集，專為驗證與管理 Model Context Protocol (MCP) 所使用的提示倉庫而設計。它提供對 registry 檔案、提示定義與 partials 目錄的完整驗證，確保提示倉庫的完整性與正確性。\n\n**版本 1.0.0** 標示穩定發布，並提供 API 穩定性保證。從 1.0.0 開始，工具集遵循語義化版本控制，並在主版本內保持向後兼容。\n\n## ✨ 特色\n\n- **Registry 驗證**：驗證 `registry.yaml` 的結構並確保所有引用的檔案存在\n- **提示檔驗證**：依據結構定義檢查單一提示 YAML 檔\n- **Partials 驗證**：驗證 partials 目錄結構與檔案存在性\n- **Partials 使用驗證**：偵測模板中缺少的 partials 與循環相依\n- **倉庫驗證**：一次性檢查所有元件的完整倉庫驗證流程\n- **型別安全**：完整的 TypeScript 型別支援\n- **結構驗證**：基於 Zod 的結構驗證，提供穩健的型別檢查\n- **程式碼品質**：ESLint 設定與自動格式化\n- **Git Hooks**：Pre-commit hook 自動執行 lint 修復\n- **完善測試**：88 個單元測試，涵蓋完整功能\n- **生產就緒**：穩定的 API 與語義化版本控制保證\n- **API 穩定性**：主版本內保持向後兼容\n\n## 🚀 安裝\n\n### 作為依賴套件\n\n```bash\n# 使用 npm\nnpm install @carllee1983/prompt-toolkit\n\n# 使用 pnpm\npnpm add @carllee1983/prompt-toolkit\n\n# 使用 yarn\nyarn add @carllee1983/prompt-toolkit\n```\n\n### 全域安裝（CLI）\n\n```bash\n# 使用 npm\nnpm install -g @carllee1983/prompt-toolkit\n\n# 使用 pnpm\npnpm add -g @carllee1983/prompt-toolkit\n\n# 使用 yarn\nyarn global add @carllee1983/prompt-toolkit\n```\n\n### 使用 npx（無需安裝）\n\n```bash\n# 直接執行命令，無需安裝\nnpx @carllee1983/prompt-toolkit validate repo\n```\n\n## ⚡ 快速開始（5 分鐘）\n\n在 5 分鐘內開始使用 prompt-toolkit！\n\n### 步驟 1：安裝\n\n```bash\nnpm install -g @carllee1983/prompt-toolkit\n```\n\n### 步驟 2：導航到您的倉庫\n\n```bash\ncd /path/to/your/prompt-repository\n```\n\n### 步驟 3：驗證\n\n```bash\nprompt-toolkit validate repo\n```\n\n### 步驟 4：檢查結果\n\n**成功：**\n```\n✅ Repository validation passed!\nSummary: 0 fatal(s), 0 error(s), 0 warning(s), 0 info(s)\n```\n\n**發現錯誤：**\n工具會顯示：\n- 哪些檔案有錯誤\n- 錯誤碼和嚴重程度\n- 修復問題的提示\n- 檔案位置\n\n### 下一步\n\n- 📖 閱讀[使用指南](#-使用方式)了解詳細命令\n- 🔍 探索[錯誤碼](#-錯誤碼與嚴重程度)了解驗證結果\n- 📚 查看[範例](examples/)了解實際使用場景\n- 🤝 了解[與 MCP Prompt Manager 整合](#-與-mcp-prompt-manager-整合)\n\n## 💡 使用案例\n\n### CI/CD 整合\n\n在 CI/CD 流程中驗證提示倉庫，確保部署前的品質：\n\n```yaml\n# .github/workflows/validate-prompts.yml\n- name: Validate prompts\n  run: prompt-toolkit validate repo --exit-code --severity error\n```\n\n查看[CI/CD 整合範例](examples/ci-cd-integration/)了解完整工作流程。\n\n### 本地開發\n\n在開發過程中驗證提示，及早發現錯誤：\n\n```bash\n# 監看模式（如果已實作）\nprompt-toolkit validate repo --watch\n\n# 提交前驗證\nprompt-toolkit validate repo --exit-code\n```\n\n### 團隊協作\n\n確保所有團隊成員遵循相同的提示結構：\n\n```bash\n# 驗證並分享結果\nprompt-toolkit validate repo --format json --output validation-results.json\n```\n\n### 自動化監控\n\n與監控系統整合以追蹤倉庫健康狀態：\n\n```javascript\nimport { validatePromptRepo } from '@carllee1983/prompt-toolkit'\n\nconst result = validatePromptRepo('./prompts')\nif (!result.passed) {\n  // 發送警報到監控系統\n  sendAlert(result.summary)\n}\n```\n\n查看[整合範例](examples/integration/)了解更多場景。\n\n## 📖 使用方式\n\n### CLI 使用方式\n\n此套件包含一個 CLI 工具，可從命令列驗證與管理提示倉庫。\n\n#### 安裝\n\n安裝套件後，CLI 可透過 `prompt-toolkit` 命令使用：\n\n```bash\n# 使用 npx（無需安裝）\nnpx @carllee1983/prompt-toolkit --help\n\n# 或全域安裝\nnpm install -g @carllee1983/prompt-toolkit\nprompt-toolkit --help\n```\n\n#### CLI 命令\n\n**驗證命令：**\n```bash\n# 驗證整個倉庫\nprompt-toolkit validate repo [path]\n\n# 驗證 registry.yaml\nprompt-toolkit validate registry [path] --repo-root <path>\n\n# 驗證單一提示檔\nprompt-toolkit validate file <file-path>\n\n# 驗證 partials 目錄\nprompt-toolkit validate partials [path] --partials-path <path>\n```\n\n**檢查命令：**\n```bash\n# 檢查 partials 使用情況（缺少的 partials 與循環相依）\nprompt-toolkit check partials [path]\n```\n\n**列表命令：**\n```bash\n# 列出所有 prompts\nprompt-toolkit list prompts [path] [--group <name>] [--enabled-only]\n\n# 列出所有 groups\nprompt-toolkit list groups [path] [--enabled-only]\n```\n\n**統計資訊：**\n```bash\n# 顯示倉庫統計資訊\nprompt-toolkit stats [path]\n```\n\n**輸出選項：**\n- `--format <json|text>` - 輸出格式（預設：text）\n- `--output <file>` - 將輸出寫入檔案\n- `--exit-code` - 驗證失敗時以非零退出碼退出\n\n**範例：**\n```bash\n# 以 JSON 格式驗證倉庫\nprompt-toolkit validate repo --format json\n\n# 檢查 partials 並將結果儲存到檔案\nprompt-toolkit check partials --format json --output results.json\n\n# 列出所有啟用的 prompts\nprompt-toolkit list prompts --enabled-only\n\n# 以 JSON 格式顯示統計資訊\nprompt-toolkit stats --format json\n```\n\n### 程式化使用方式\n\n#### API 穩定性\n\n從版本 1.0.0 開始，所有公開 API 都是**穩定**的，並遵循語義化版本控制：\n\n- **1.x.x**：向後兼容 - 無破壞性變更\n- **2.0.0+**：破壞性變更（附遷移指南）\n\n詳見 [API 穩定性文檔](docs/API_STABILITY.md)。\n\n#### 從 0.4.x 遷移\n\n從 0.4.x 升級到 1.0.0 **無需修改程式碼** - API 完全向後兼容。詳見 [遷移指南](docs/MIGRATION_GUIDE.md)。\n\n### 基本範例\n\n```typescript\nimport { validatePromptRepo } from '@carllee1983/prompt-toolkit'\n\n// 驗證整個提示倉庫\nconst result = validatePromptRepo('/path/to/prompt-repo')\n\nif (result.passed) {\n  console.log('Repository validation passed!')\n} else {\n  console.error('Validation errors:', result.errors)\n}\n```\n\n### 驗證 Registry\n\n```typescript\nimport { validateRegistry } from '@carllee1983/prompt-toolkit'\n\nconst result = validateRegistry('/path/to/registry.yaml', '/path/to/repo-root')\n\nif (result.success) {\n  console.log('Registry is valid:', result.data)\n} else {\n  console.error('Registry validation failed:', result.error)\n}\n```\n\n### 驗證提示檔\n\n```typescript\nimport { validatePromptFile } from '@carllee1983/prompt-toolkit'\n\nconst result = validatePromptFile('/path/to/prompt.yaml')\n\nif (result.success) {\n  console.log('Prompt is valid:', result.data)\n} else {\n  console.error('Prompt validation failed:', result.error)\n}\n```\n\n### 驗證 Partials\n\n```typescript\nimport { validatePartials } from '@carllee1983/prompt-toolkit'\n\n// 回傳 partial 檔案路徑的陣列；若 partialPath 未設定則回傳空陣列\nconst partials = validatePartials('/path/to/repo-root', 'partials')\n\nconsole.log('Found partials:', partials)\n```\n\n### 更多範例\n\n查看 [examples 目錄](examples/) 了解：\n- [基本使用範例](examples/basic-usage/) - 簡單驗證場景\n- [進階場景](examples/advanced-scenarios/) - 自訂錯誤處理、錯誤碼檢查\n- [CI/CD 整合](examples/ci-cd-integration/) - GitHub Actions、GitLab CI 工作流程\n- [TypeScript 範例](examples/typescript/) - TypeScript 使用模式\n- [整合範例](examples/integration/) - MCP Prompt Manager、監控系統\n- [實際場景](examples/real-world/) - 批次驗證、CI 流程\n\n## 🔗 與 MCP Prompt Manager 整合\n\n此工具集設計為與 [MCP Prompt Manager](https://github.com/CarlLee1983/mcp-prompt-manager) 無縫整合。\n\n### 工作流程\n\n1. **開發提示**：在倉庫中建立和編輯提示\n2. **本地驗證**：使用此工具集在提交前驗證\n   ```bash\n   prompt-toolkit validate repo\n   ```\n3. **CI/CD 驗證**：在 CI/CD 流程中自動驗證\n4. **部署到 MCP Prompt Manager**：MCP Prompt Manager 載入已驗證的提示\n\n### 最佳實踐\n\n- 在推送到倉庫前驗證提示\n- 使用 CI/CD 自動捕捉驗證錯誤\n- 監控驗證結果以維持倉庫健康\n- 使用嚴重程度過濾以專注於關鍵問題\n\n查看[整合範例](examples/integration/mcp-prompt-manager-integration.js)了解詳細整合程式碼。\n\n## 📚 API 參考\n\n### `validatePromptRepo(repoRoot: string)`\n\n驗證整個提示倉庫，包含 registry、所有提示檔案與 partials。\n\n**參數：**\n- `repoRoot`: 倉庫根目錄路徑\n\n**回傳：**\n```typescript\n{\n  passed: boolean\n  errors: Array<{ file: string; errors: ZodError }>\n}\n```\n\n### `validateRegistry(registryPath: string, repoRoot: string)`\n\n驗證 registry.yaml 的結構，並確保所有引用的群組與提示存在。\n\n**參數：**\n- `registryPath`: registry.yaml 檔案路徑\n- `repoRoot`: 倉庫根目錄路徑\n\n**回傳：**\n```typescript\nZodSafeParseReturnType<RegistryDefinition>\n```\n\n**可能拋出：**\n- 當群組資料夾或提示檔案缺少時拋出 `Error`\n\n### `validatePromptFile(filePath: string)`\n\n依據提示結構驗證單一提示 YAML 檔案。\n\n**參數：**\n- `filePath`: 提示 YAML 檔案路徑\n\n**回傳：**\n```typescript\nZodSafeParseReturnType<PromptDefinition>\n```\n\n### `validatePartials(repoRoot: string, partialPath?: string)`\n\n驗證並回傳指定目錄中的所有 partial 檔案。\n\n**參數：**\n- `repoRoot`: 倉庫根目錄路徑\n- `partialPath`: 選填，partials 目錄路徑（相對於 repoRoot）\n\n**回傳：**\n```typescript\nstring[] // 檔案路徑陣列\n```\n\n**可能拋出：**\n- 若提供 partialPath 且 partials 資料夾不存在時拋出 `Error`\n\n## 📝 結構定義\n\n### Registry 結構\n\n```typescript\ninterface RegistryDefinition {\n  version: number\n  globals?: Record<string, string>\n  partials?: {\n    enabled: boolean\n    path: string\n  }\n  groups: Record<string, RegistryGroup>\n}\n\ninterface RegistryGroup {\n  path: string\n  enabled: boolean\n  prompts: string[]\n}\n```\n\n### 提示結構\n\n```typescript\ninterface PromptDefinition {\n  id: string\n  title: string\n  description: string\n  args: Record<string, PromptArg>\n  template: string\n}\n\ninterface PromptArg {\n  type: 'string' | 'number' | 'boolean' | 'object'\n  description?: string\n  required?: boolean\n  default?: unknown\n}\n```\n\n## 🧪 測試\n\n```bash\n# 執行測試\npnpm test\n\n# 監看模式執行測試\npnpm test\n\n# 單次執行測試\npnpm test:run\n\n# 產生覆蓋率報告（本地開發）\npnpm test:coverage\n\n# 產生覆蓋率報告並檢查門檻（CI 模式）\npnpm test:coverage:ci\n\n# 產生覆蓋率報告並開啟 HTML 報告\npnpm test:coverage:view\n```\n\n### 測試覆蓋率\n\n本專案透過完善的測試覆蓋率維持高程式碼品質，設有以下門檻：\n\n- **語句覆蓋率**：≥ 80%\n- **行覆蓋率**：≥ 75%\n- **函數覆蓋率**：≥ 75%\n- **分支覆蓋率**：≥ 70%\n\n#### 查看覆蓋率報告\n\n1. **本地開發**：執行 `pnpm test:coverage:view` 會產生並自動在瀏覽器中開啟 HTML 覆蓋率報告。\n\n2. **CI/CD**：覆蓋率報告會在 CI 中自動產生並上傳為 artifacts。您可以從 GitHub Actions 工作流程執行中下載：\n   - 前往儲存庫的 Actions 標籤\n   - 選擇一個工作流程執行\n   - 下載 `coverage-reports` artifact\n   - 解壓縮並在瀏覽器中開啟 `coverage/index.html`\n\n3. **覆蓋率門檻**：如果未達到覆蓋率門檻，CI 流程會失敗，確保在合併或發布前維持程式碼品質標準。\n\n## 🛠️ 開發\n\n```bash\n# 安裝相依套件\npnpm install\n\n# 建置專案\npnpm build\n\n# 監看模式建置\npnpm dev\n\n# 執行 linter\npnpm lint\n\n# 自動修復 lint 問題\npnpm lint:fix\n```\n\n## 🔧 程式碼品質\n\n本專案使用 ESLint 確保程式碼品質與一致性：\n\n- **ESLint 設定**：現代扁平配置格式（ESLint 9+）\n- **TypeScript 支援**：完整的 TypeScript linting，使用 `@typescript-eslint`\n- **程式碼風格**：強制不使用分號、單引號等專案規範\n- **Pre-commit Hooks**：使用 Husky 在每次 commit 前自動執行 `lint:fix`\n\n### Pre-commit Hook\n\n專案包含 pre-commit hook，會自動：\n- 在 commit 前對所有檔案執行 ESLint 修復\n- 將修復後的檔案重新加入 staging area\n- 確保 commit 前的程式碼品質\n\n當你執行 `pnpm install` 時會自動設定（透過 `prepare` script）。\n\n## ❓ 常見問題（FAQ）\n\n### 一般問題\n\n**Q: 什麼是提示倉庫？**  \nA: 提示倉庫是一個結構化的提示模板集合，按群組組織，用於 Model Context Protocol (MCP) 系統。\n\n**Q: 我需要全域安裝嗎？**  \nA: 不需要，您可以使用 `npx @carllee1983/prompt-toolkit` 無需安裝，或將其安裝為專案依賴。\n\n**Q: 可以使用 TypeScript 嗎？**  \nA: 可以！套件包含完整的 TypeScript 型別定義。查看[TypeScript 範例](examples/typescript/)了解使用模式。\n\n### 驗證問題\n\n**Q: 如果驗證失敗會發生什麼？**  \nA: CLI 會顯示詳細的錯誤資訊，包括錯誤碼、嚴重程度、檔案位置和提示。使用 `--exit-code` 讓 CI/CD 流程在錯誤時失敗。\n\n**Q: 可以依嚴重程度過濾錯誤嗎？**  \nA: 可以！使用 `--severity` 選項：`prompt-toolkit validate repo --severity warning` 以顯示警告和錯誤。\n\n**Q: 如何驗證多個倉庫？**  \nA: 在腳本中使用程式化 API。查看[批次驗證範例](examples/real-world/batch-validation.js)。\n\n### 錯誤處理\n\n**Q: fatal、error、warning 和 info 有什麼區別？**  \nA: \n- **fatal**：阻止驗證繼續的嚴重錯誤（例如，缺少 registry 檔案）\n- **error**：應該修復的驗證失敗\n- **warning**：需要審查的非關鍵問題\n- **info**：資訊性訊息\n\n**Q: 如何處理特定錯誤碼？**  \nA: 使用 `ERROR_CODE_CONSTANTS` 並依錯誤碼過濾。查看[錯誤碼檢查範例](examples/advanced-scenarios/error-code-checker.js)。\n\n### CI/CD 問題\n\n**Q: 如何整合到 GitHub Actions？**  \nA: 查看[GitHub Actions 範例](examples/ci-cd-integration/github-actions.yml)了解完整工作流程。\n\n**Q: 可以取得 JSON 輸出以便解析嗎？**  \nA: 可以！使用 `--format json` 取得機器可讀的輸出：`prompt-toolkit validate repo --format json`。\n\n**Q: 如何在驗證錯誤時讓 CI 失敗？**  \nA: 使用 `--exit-code` 標誌：`prompt-toolkit validate repo --exit-code`。\n\n### 故障排除\n\n**Q: \"Registry file not found\" 錯誤**  \nA: 確保 `registry.yaml` 存在於倉庫根目錄。檢查您正在驗證的路徑。\n\n**Q: \"Partial not found\" 錯誤**  \nA: 檢查 partial 檔案是否存在於 partials 目錄中，以及模板中的路徑是否正確。\n\n**Q: \"Circular dependency\" 錯誤**  \nA: Partials 在循環中互相引用。檢視您的 partial 相依關係並打破循環。\n\n更多故障排除幫助，請查看[故障排除指南](docs/TROUBLESHOOTING.md)。\n\n## 🔧 故障排除\n\n### 常見問題\n\n#### Registry 檔案未找到\n\n**錯誤**：`REGISTRY_FILE_NOT_FOUND` (fatal)\n\n**解決方案**：\n1. 確保 `registry.yaml` 存在於倉庫根目錄\n2. 檢查路徑：`prompt-toolkit validate repo /正確/路徑`\n3. 驗證檔案權限\n\n#### 無效的 YAML 語法\n\n**錯誤**：`FILE_NOT_YAML` (error)\n\n**解決方案**：\n1. 使用線上 YAML 驗證器驗證 YAML 語法\n2. 檢查縮排問題（YAML 對空格敏感）\n3. 確保沒有使用 tab（使用空格代替）\n\n#### 缺少 Partials\n\n**錯誤**：`PARTIAL_NOT_FOUND` (error)\n\n**解決方案**：\n1. 驗證 partial 檔案存在於 `partials/` 目錄中\n2. 檢查模板中的 partial 路徑（例如，`{{> partial-name}}`）\n3. 確保 `registry.yaml` 中的 partials 目錄路徑正確\n\n#### 循環相依\n\n**錯誤**：`PARTIAL_CIRCULAR_DEPENDENCY` (error)\n\n**解決方案**：\n1. 檢視 partial 相依關係\n2. 透過重構 partials 打破循環引用\n3. 使用錯誤的 `meta.chain` 查看相依循環\n\n#### 結構驗證錯誤\n\n**錯誤**：`PROMPT_SCHEMA_INVALID` 或 `REGISTRY_SCHEMA_INVALID` (error)\n\n**解決方案**：\n1. 檢查[結構定義](#-結構定義)區塊\n2. 確保所有必填欄位都存在\n3. 驗證欄位型別符合結構\n\n### 取得幫助\n\n- 📖 查看[使用指南](#-使用方式)了解詳細使用\n- 🔍 檢視[錯誤碼](#-錯誤碼與嚴重程度)了解錯誤含義\n- 💡 查看[範例](examples/)了解使用模式\n- 🐛 開啟[Issue](https://github.com/CarlLee1983/mcp-prompt-toolkit/issues) 如果您發現錯誤\n- 💬 查看[FAQ](#-常見問題faq)了解常見問題\n\n## 📚 額外文檔\n\n- **[API 穩定性](docs/API_STABILITY.md)**：API 穩定性保證與版本控制策略\n- **[遷移指南](docs/MIGRATION_GUIDE.md)**：從 0.4.x 升級到 1.0.0 的指南\n- **[使用案例](docs/USE_CASES.md)**：實際使用場景與範例\n- **[最佳實踐](docs/BEST_PRACTICES.md)**：推薦的模式與實踐\n- **[快速參考](docs/QUICK_REFERENCE.md)**：命令與 API 快速參考\n- **[故障排除](docs/TROUBLESHOOTING.md)**：常見問題與解決方案\n\n## 📦 專案結構\n\n```\nprompts-tooling-sdk/\n├── src/\n│   ├── index.ts              # 主要進入點\n│   ├── validators/           # 驗證函式\n│   │   ├── validateRepo.ts\n│   │   ├── validateRegistry.ts\n│   │   ├── validatePromptFile.ts\n│   │   ├── validatePartials.ts\n│   │   └── validatePartialsUsage.ts\n│   ├── partials/             # Partials 工具\n│   │   ├── extractPartials.ts\n│   │   ├── resolvePartialPath.ts\n│   │   ├── buildPartialGraph.ts\n│   │   └── detectCircular.ts\n│   ├── schema/               # Zod 結構定義\n│   │   ├── registry.schema.ts\n│   │   └── prompt.schema.ts\n│   ├── types/                # TypeScript 型別定義\n│   │   ├── registry.ts\n│   │   └── prompt.ts\n│   └── utils/                # 工具函式\n│       ├── loadYaml.ts\n│       └── walkDir.ts\n├── test/                     # 測試檔案\n├── .husky/                   # Git hooks (pre-commit)\n├── dist/                     # 建置產物\n├── eslint.config.mjs         # ESLint 設定檔\n└── package.json\n```\n\n## 📄 授權\n\nISC\n\n## 👤 作者\n\nCarlLee1983\n\n## 🤝 貢獻\n\n歡迎任何形式的貢獻！請隨時提交 Pull Request。\n\n## 📝 更新日誌\n\n### [0.3.1] - CI/CD 增強\n\n- 新增 GitHub Actions CI workflow\n- 自動化 lint、test 和 build 檢查\n- 改善開發流程可靠性\n- 確保合併前程式碼品質\n\n### [0.3.0] - CLI 工具發佈\n\n- 新增完整的 CLI 工具，提供命令列介面\n- 實作驗證命令（repo, registry, file, partials）\n- 實作檢查命令（partials 使用情況）\n- 實作列表命令（prompts, groups）\n- 實作統計命令，顯示倉庫統計資訊\n- 支援文字和 JSON 兩種輸出格式\n- 彩色終端機輸出與載入動畫\n- 支援輸出到檔案與退出碼控制\n- 新增 CLI 文件與使用範例\n\n### [0.2.0] - 程式碼品質與 Partials 增強\n\n- 新增 ESLint 設定，支援 TypeScript\n- 新增 Husky pre-commit hooks，自動執行 lint 修復\n- 新增 partials 使用驗證（偵測缺少的 partials 與循環相依）\n- 增強倉庫驗證，包含 partials 使用檢查\n- 改善型別安全，使用明確的錯誤型別\n- 新增 partials 功能的完整單元測試（總計 82 個測試）\n- 新增 CLI 工具，包含 validate、check、list 和 stats 命令\n- 支援文字和 JSON 兩種輸出格式\n- 更新套件名稱為 `@carllee1983/prompt-toolkit`\n\n### [0.1.0] - 初始版本\n\n- prompts-tooling-sdk 初始發佈\n- Registry 驗證功能\n- 提示檔驗證功能\n- Partials 目錄驗證功能\n- 完整的倉庫驗證流程\n- YAML 載入與資料夾掃描工具\n- 完整的單元測試套件（28 個測試案例）\n- TypeScript 專案設定與建置配置\n","readmeFilename":"README.zh-tw.md"}