{"id":67,"date":"2026-05-04T17:12:58","date_gmt":"2026-05-04T09:12:58","guid":{"rendered":"http:\/\/127.0.0.1:13305\/hub\/tool\/impeccable\/"},"modified":"2026-09-23T04:16:35","modified_gmt":"2026-09-22T20:16:35","slug":"impeccable","status":"publish","type":"post","link":"https:\/\/ai.wuaishare.cn\/hub\/67","title":{"rendered":"Impeccable"},"content":{"rendered":"\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"600\" src=\"https:\/\/ai.wuaishare.cn\/hub\/wp-content\/uploads\/sites\/2\/2026\/09\/impeccable-9.webp\" alt=\"Impeccable\" class=\"wp-image-5154\" srcset=\"https:\/\/ai.wuaishare.cn\/hub\/wp-content\/uploads\/sites\/2\/2026\/09\/impeccable-9.webp 1200w, https:\/\/ai.wuaishare.cn\/hub\/wp-content\/uploads\/sites\/2\/2026\/09\/impeccable-10-300x150.webp 300w, https:\/\/ai.wuaishare.cn\/hub\/wp-content\/uploads\/sites\/2\/2026\/09\/impeccable-10-1024x512.webp 1024w, https:\/\/ai.wuaishare.cn\/hub\/wp-content\/uploads\/sites\/2\/2026\/09\/impeccable-10-768x384.webp 768w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/figure>\n\n\n<p class=\"wp-block-paragraph\">Impeccable \u662f\u4e00\u4e2a GitHub \u5f00\u6e90\u9879\u76ee\u3002\u8ba9\u4f60\u7684 AI \u5de5\u5177\u5728\u8bbe\u8ba1\u4e0a\u66f4\u80dc\u4e00\u7b79\u7684\u8bbe\u8ba1\u8bed\u8a00\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e3a\u4ec0\u4e48\u9009\u62e9 Impeccable\uff1f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Anthropic \u7684\u524d\u7aef\u8bbe\u8ba1\u662f Claude \u9996\u4e2a\u5e7f\u6cdb\u4f7f\u7528\u7684\u8bbe\u8ba1\u6280\u80fd\u3002Impeccable \u7531\u6b64\u8d77\u6b65\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6bcf\u4e2a\u6a21\u578b\u90fd\u57fa\u4e8e\u76f8\u540c\u7684 SaaS \u6a21\u677f\u8fdb\u884c\u8bad\u7ec3\u3002\u8df3\u8fc7\u6307\u5f15\u610f\u5473\u7740\u6bcf\u4e2a\u9879\u76ee\u90fd\u4f1a\u51fa\u73b0\u76f8\u540c\u7684\u51e0\u4e2a\u7279\u5f81\uff1a\u6240\u6709\u4e1c\u897f\u90fd\u7528 Inter \u5b57\u4f53\u3001\u7d2b\u5230\u84dd\u7684\u6e10\u53d8\u8272\u3001\u5361\u7247\u5d4c\u5957\u5361\u7247\u3001\u5f69\u8272\u80cc\u666f\u4e0a\u7684\u7070\u8272\u6587\u5b57\u3001\u6bcf\u4e2a\u6807\u9898\u4e0a\u65b9\u90fd\u662f\u5706\u89d2\u65b9\u5f62\u56fe\u6807\u78c1\u8d34\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n    <li>\u4e00\u4e2a\u8bbe\u7f6e\u6d41\u7a0b\u3002\/impeccable init \u5c06\u6301\u4e45\u7684\u4ea7\u54c1\u4e8b\u5b9e\u8bb0\u5f55\u5728 PRODUCT.md \u4e2d\uff0c\u8fd9\u6837\u540e\u7eed\u547d\u4ee4\u5c31\u80fd\u4e86\u89e3\u53d7\u4f17\u3001\u76ee\u7684\u3001\u8fd0\u884c\u73af\u5883\u3001\u7ea6\u675f\u6761\u4ef6\u3001\u98ce\u683c\u548c\u8bc1\u636e\uff0c\u800c\u4e0d\u4f1a\u5c06\u8fd9\u4e9b\u4e8b\u5b9e\u4e0e\u6d45\u5c42\u7684\u89c6\u89c9\u65b9\u5411\u76f8\u6df7\u6dc6\u3002<\/li>\n    <li>24 \u6761\u547d\u4ee4\u3002\u4e0e\u4f60\u7684 AI \u5171\u4eab\u7684\u8bbe\u8ba1\u8bcd\u6c47\u8868\uff1a\u6da6\u8272\u3001\u5ba1\u8ba1\u3001\u6279\u8bc4\u3001\u63d0\u70bc\u3001\u52a8\u6548\u3001\u52a0\u7c97\u3001\u6de1\u5316\u7b49\u3002<\/li>\n    <li>61 \u6761\u786e\u5b9a\u6027\u68c0\u6d4b\u89c4\u5219\u52a0\u4e0a\u4ec5 LLM \u7684\u6279\u8bc4\u68c0\u67e5\u3002CLI \u548c\u6d4f\u89c8\u5668\u6269\u5c55\u5728\u8fd0\u884c\u786e\u5b9a\u6027\u89c4\u5219\u65f6\u65e0\u9700 LLM \u548c API \u5bc6\u94a5\u3002<\/li>\n  <\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u5305\u542b\u5185\u5bb9<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u6280\u80fd\uff1aimpeccable<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u8be5\u6280\u80fd\u901a\u8fc7\u4e00\u6761\u547d\u4ee4\u5b89\u88c5\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/impeccable &lt;command&gt; &lt;target&gt;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\/impeccable init<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">init \u4f1a\u68c0\u67e5\u9879\u76ee\uff0c\u4ec5\u8be2\u95ee\u6301\u4e45\u4ea7\u54c1\u4e8b\u5b9e\u4e2d\u7684\u5b9e\u8d28\u6027\u7f3a\u5931\uff0c\u5e76\u5199\u5165 PRODUCT.md\u3002\u8bbf\u5ba2\u6a21\u5f0f\u548c\u89c6\u89c9\u65b9\u5411\u7a0d\u540e\u4e3a\u6bcf\u4e2a\u754c\u9762\u5355\u72ec\u9009\u62e9\uff1b\u73b0\u6709\u7684\u6216\u65b0\u6784\u5efa\u7684\u89c6\u89c9\u7cfb\u7edf\u5c06\u5355\u72ec\u8bb0\u5f55\u5728 DESIGN.md \u4e2d\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">24 \u4e2a\u547d\u4ee4<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u6240\u6709\u547d\u4ee4\u5747\u901a\u8fc7 \/impeccable \u8bbf\u95ee\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n    <thead><tr><th>\u547d\u4ee4<\/th><th>\u529f\u80fd\u8bf4\u660e<\/th><\/tr><\/thead>\n    <tbody>\n      <tr><td>\/impeccable craft<\/td><td>\u5b8c\u6574\u7684\u5148\u6784\u601d\u540e\u6784\u5efa\u6d41\u7a0b\uff0c\u652f\u6301\u53ef\u89c6\u5316\u8fed\u4ee3<\/td><\/tr>\n      <tr><td>\/impeccable init<\/td><td>\u4e00\u6b21\u6027\u8bbe\u7f6e\uff1a\u6536\u96c6\u6301\u4e45\u7684\u4ea7\u54c1\u4e0a\u4e0b\u6587\uff0c\u7f16\u5199 PRODUCT.md\uff0c\u5728\u9002\u7528\u65f6\u914d\u7f6e\u5b9e\u65f6\u6a21\u5f0f\uff0c\u63a8\u8350\u540e\u7eed\u6b65\u9aa4<\/td><\/tr>\n      <tr><td>\/impeccable document<\/td><td>\u4ece\u73b0\u6709\u9879\u76ee\u4ee3\u7801\u751f\u6210\u6839\u76ee\u5f55 DESIGN.md<\/td><\/tr>\n      <tr><td>\/impeccable extract<\/td><td>\u5c06\u53ef\u590d\u7528\u7ec4\u4ef6\u548c token \u63d0\u53d6\u5230\u8bbe\u8ba1\u7cfb\u7edf\u4e2d<\/td><\/tr>\n      <tr><td>\/impeccable \u9020\u578b<\/td><td>\u5199\u4ee3\u7801\u524d\u5148\u89c4\u5212 UX\/UI<\/td><\/tr>\n      <tr><td>\/impeccable \u8bc4\u8bba<\/td><td>UX \u8bbe\u8ba1\u8bc4\u5ba1\uff1a\u5c42\u6b21\u7ed3\u6784\u3001\u6e05\u6670\u5ea6\u3001\u60c5\u611f\u5171\u9e23<\/td><\/tr>\n      <tr><td>\/impeccable \u5ba1\u8ba1<\/td><td>\u6267\u884c\u6280\u672f\u8d28\u91cf\u68c0\u67e5\uff08a11y\u3001\u6027\u80fd\u3001\u54cd\u5e94\u5f0f\uff09<\/td><\/tr>\n      <tr><td>\/impeccable \u6253\u78e8<\/td><td>\u6700\u7ec8\u68c0\u67e5\uff0c\u8bbe\u8ba1\u7cfb\u7edf\u4e00\u81f4\u6027\uff0c\u4ee5\u53ca\u53d1\u5e03\u5c31\u7eea\u72b6\u6001<\/td><\/tr>\n      <tr><td>\/impeccable \u66f4\u5927\u80c6<\/td><td>\u589e\u5f3a\u5e73\u6de1\u7684\u8bbe\u8ba1<\/td><\/tr>\n      <tr><td>\/impeccable \u66f4\u4f4e\u8c03<\/td><td>\u5f31\u5316\u8fc7\u4e8e\u5927\u80c6\u7684\u8bbe\u8ba1<\/td><\/tr>\n      <tr><td>\/impeccable distill<\/td><td>\u63d0\u70bc\u7cbe\u534e<\/td><\/tr>\n    <\/tbody>\n  <\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f7f\u7528 \/impeccable pin \u521b\u5efa\u72ec\u7acb\u5feb\u6377\u547d\u4ee4\uff08\u4f8b\u5982\uff0cpin audit \u4f1a\u521b\u5efa \/audit\uff09\u3002<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">\u4f7f\u7528\u793a\u4f8b<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>\/impeccable audit blog           # Audit blog hub + post pages\n\/impeccable critique landing     # UX design review\n\/impeccable polish settings      # Final pass before shipping\n\/impeccable harden checkout      # Add error handling + edge cases<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6216\u76f4\u63a5\u4f7f\u7528 \/impeccable \u914d\u5408\u63cf\u8ff0\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/impeccable redo this hero section<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u53cd\u9762\u6a21\u5f0f<\/h3>\n\n\n\n<h2 class=\"wp-block-heading\">\u8fd0\u884c\u793a\u4f8b<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u8bbf\u95ee Neo Mirai \u6848\u4f8b\u7814\u7a76\uff0c\u4e86\u89e3\u771f\u5b9e\u9879\u76ee\u5982\u4f55\u4f7f\u7528 Impeccable \u547d\u4ee4\u8fdb\u884c\u8f6c\u578b\u7684\u524d\u540e\u5bf9\u6bd4\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5b89\u88c5<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u8be5 skill \u672c\u8eab\u65e0\u9700\u8fd0\u884c\u65f6\u73af\u5883\u3002\u6bcf\u4e2a skill \u526f\u672c\u90fd\u9644\u5e26\u4e00\u4e2a\u5c0f\u578b\u542f\u52a8\u5668\uff08scripts\/impeccable\uff0cWindows \u7cfb\u7edf\u4e3a impeccable.cmd\uff09\uff0c\u7528\u4e8e\u8fd0\u884c Impeccable \u5f15\u64ce\u2014\u2014\u4e00\u4e2a\u81ea\u5305\u542b\u7684\u4e8c\u8fdb\u5236\u6587\u4ef6\uff0c\u53ef\u4f4d\u4e8e\u542f\u52a8\u5668\u540c\u76ee\u5f55\u4e0b\uff0c\u6216\u5728\u9996\u6b21\u8fd0\u884c\u65f6\u4e0b\u8f7d\u5230 \/.impeccable\/bin\/ \u76ee\u5f55\u3002\u4ec5\u5f53\u4f7f\u7528 npx impeccable installer \u65f6\u624d\u4f1a\u6d89\u53ca Node\uff0c\u5b83\u53ea\u662f\u8be5\u4e8c\u8fdb\u5236\u6587\u4ef6\u7684\u5305\u88c5\u5c42\uff1b\u624b\u52a8\u5b89\u88c5\u548c Git \u5b89\u88c5\u65b9\u5f0f\u65e0\u9700 Node\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u65b9\u5f0f\u4e00\uff1aCLI \u5b89\u88c5\u7a0b\u5e8f\uff08\u63a8\u8350\uff09<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5728\u9879\u76ee\u6839\u76ee\u5f55\u8fd0\u884c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npx impeccable install<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u6b64\u547d\u4ee4\u663e\u793a\u68c0\u6d4b\u5230\u7684 harness \u6587\u4ef6\u5939\u6216\u5df2\u5b89\u88c5\u7684 CLI\uff08\u4f8b\u5982 \/.claude\u3001\/.codex\u3001\/.grok\u3001\/.hermes\u3001\/.veto \u6216\u9879\u76ee\u672c\u5730\u7684 .cursor\uff09\uff0c\u5141\u8bb8\u60a8\u4fdd\u7559\u68c0\u6d4b\u5230\u7684\u96c6\u5408\u6216\u81ea\u5b9a\u4e49 providers\uff0c\u7136\u540e\u8be2\u95ee\u662f\u5b89\u88c5\u5230\u5f53\u524d\u9879\u76ee\u8fd8\u662f\u5168\u5c40\u3002\u4f7f\u7528 &#8211;providers=claude,codex,cursor,grok,hermes,veto \u548c &#8211;scope=project|global \u53ef\u4ee5\u5728\u811a\u672c\u4e2d\u8df3\u8fc7\u8fd9\u4e9b\u9009\u62e9\u3002\u5728 Claude Code\u3001Cursor\u3001Codex\u3001GitHub Copilot \u548c Grok Build \u4e0a\uff0c\u5b83\u8fd8\u4f1a\u4e3a\u5f53\u524d\u9879\u76ee\u5b89\u88c5 provider-native hook manifest\u3002Veto \u5728 \/.veto\/skills\/ \u4e0b\u63a5\u6536\u6253\u5305\u7684\u6280\u80fd\uff0c\u4e0d\u8fd0\u884c\u539f\u751f Impeccable \u7f16\u8f91 hooks\u3002\u652f\u6301 Cursor\u3001Claude Code\u3001GitHub Copilot\u3001Grok Build \u548c\u5176\u4ed6\u53d7\u652f\u6301\u7684\u5de5\u5177\u3002\u4e4b\u540e\u8bf7\u91cd\u65b0\u52a0\u8f7d\u60a8\u7684 harness\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8981\u5237\u65b0\u73b0\u6709\u5b89\u88c5\uff0c\u8bf7\u8fd0\u884c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npx impeccable update<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Codex \u7528\u6237\u5e94\u5728\u5b89\u88c5\u6216\u66f4\u65b0\u540e\u6253\u5f00 \/hooks\uff0c\u5e76\u5728\u51fa\u73b0\u63d0\u793a\u65f6\u6279\u51c6\u9879\u76ee hook\u3002Codex \u6309 hook \u5b9a\u4e49\u8ddf\u8e2a\u4fe1\u4efb\uff0c\u56e0\u6b64\u66f4\u6539 .codex\/hooks.json \u7684\u66f4\u65b0\u53ef\u80fd\u9700\u8981\u91cd\u65b0\u6279\u51c6\u3002Grok Build \u7528\u6237\u9700\u8981\u5728 .grok\/hooks\/ \u811a\u672c\u8fd0\u884c\u4e4b\u524d\u5efa\u7acb\u9879\u76ee\u6587\u4ef6\u5939\u4fe1\u4efb\uff08\/hooks-trust \u6216\u4f7f\u7528 &#8211;trust \u542f\u52a8\uff09\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6709\u5173\u7279\u5b9a\u4e8e harness \u7684\u4fe1\u4efb\u548c\u9a8c\u8bc1\u6b65\u9aa4\uff0c\u8bf7\u53c2\u9605&#8221;\u5728\u60a8\u7684 harness \u4e2d\u5141\u8bb8\u8be5 hook&#8221;\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u9009\u9879 2\uff1aGit Submodule<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5bf9\u4e8e\u5e0c\u671b\u901a\u8fc7 Git \u4fdd\u6301 Impeccable \u4f9b\u5e94\u5546\u5316\u5e76\u66f4\u65b0\u7684\u56e2\u961f\uff0c\u8bf7\u5c06\u6b64\u4ed3\u5e93\u6dfb\u52a0\u4e3a\u5b50\u6a21\u5757\uff0c\u5e76\u5c06\u7f16\u8bd1\u540e\u7684 provider \u6784\u5efa\u94fe\u63a5\u5230\u60a8\u7684 harness \u6587\u4ef6\u5939\u4e2d\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git submodule add https:\/\/github.com\/pbakaus\/impeccable .impeccable\nnpx impeccable link --source=.impeccable --providers=claude,cursor\ngit add .gitmodules .impeccable .claude .cursor\ngit commit -m &quot;Add Impeccable skills&quot;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f7f\u7528\u60a8\u9879\u76ee\u6240\u9700\u7684 providers\uff0c\u4f8b\u5982 claude\u3001cursor\u3001gemini\u3001codex\u3001github\u3001grok\u3001hermes\u3001opencode\u3001pi\u3001qoder\u3001trae\u3001trae-cn\u3001rovo-dev\u3001vibe \u6216 veto\u3002\u8be5\u547d\u4ee4\u4ece .impeccable\/dist\/universal\/ \u94fe\u63a5\u5355\u4e2a\u6280\u80fd\u6587\u4ef6\u5939\uff0c\u9664\u975e\u60a8\u4f20\u9012 &#8211;force\uff0c\u5426\u5219\u4e0d\u4f1a\u89e6\u78b0\u73b0\u6709\u7684\u771f\u5b9e\u6280\u80fd\u76ee\u5f55\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git submodule update --remote .impeccable\nnpx impeccable link --source=.impeccable --providers=claude,cursor<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u4f7f\u7528\u65b9\u6cd5<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b89\u88c5\u540e\uff0c\u6bcf\u4e2a\u547d\u4ee4\u90fd\u901a\u8fc7\u5355\u4e00\u7684 \/impeccable \u6280\u80fd\u8fd0\u884c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/impeccable audit        # Find issues\n\/impeccable polish       # Final cleanup\n\/impeccable distill      # Remove complexity\n\/impeccable critique     # Full design review<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5355\u72ec\u8f93\u5165 \/impeccable \u4ee5\u67e5\u770b\u5b8c\u6574\u547d\u4ee4\u5217\u8868\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5927\u591a\u6570\u547d\u4ee4\u63a5\u53d7\u4e00\u4e2a\u53ef\u9009\u53c2\u6570\u6765\u805a\u7126\u7279\u5b9a\u533a\u57df\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/impeccable audit the header\n\/impeccable polish the checkout form<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u60a8\u7ecf\u5e38\u4f7f\u7528\u67d0\u4e2a\u547d\u4ee4\uff0c\u8bf7\u4f7f\u7528 \/impeccable pin audit \u5c06\u5176\u56fa\u5b9a\u4e3a\u72ec\u7acb\u5feb\u6377\u65b9\u5f0f \/audit\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6ce8\u610f\uff1aCodex \u5728\u6b64\u5904\u4f7f\u7528 skills\uff0c\u800c\u975e \/prompts: \u547d\u4ee4\u3002\u6253\u5f00 \/skills \u6216\u8f93\u5165 $impeccable\u3002\u4ed3\u5e93\u672c\u5730\u5b89\u88c5\u4f4d\u4e8e .agents\/skills\/\uff1b\u7528\u6237\u7ea7\u5b89\u88c5\u4f4d\u4e8e \/.agents\/skills\/\u3002GitHub Copilot \u4f7f\u7528 .github\/skills\/\u3002\u5982\u679c\u65b0\u5b89\u88c5\u7684 skill \u672a\u51fa\u73b0\uff0c\u8bf7\u91cd\u542f\u5de5\u5177\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5c06 .impeccable \u6392\u9664\u5728 git \u4e4b\u5916<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd0\u884c\u547d\u4ee4\u65f6\uff0cImpeccable \u4f1a\u5c06\u5de5\u4f5c\u6587\u4ef6\u5199\u5165 .impeccable\/ \u4e0b\uff1a\u7528\u4e8e\u6279\u8bc4\u548c\u6da6\u8272\u7684\u622a\u56fe\u3001\u5b9e\u65f6\u6a21\u5f0f\u7684\u4f1a\u8bdd\u548c\u9884\u89c8\u72b6\u6001\u3001\u8fd0\u884c\u65f6\u7f13\u5b58\u4ee5\u53ca\u6309\u5f00\u53d1\u8005\u5212\u5206\u7684\u914d\u7f6e\u3002\u5176\u4e2d\u5927\u90e8\u5206\u4e3a\u4e34\u65f6\u6587\u4ef6\uff0c\u4e0d\u5e94\u88ab\u63d0\u4ea4\uff0c\u800c\u5c11\u6570\u6587\u4ef6\u4f5c\u4e3a\u5171\u4eab\u9879\u76ee\u4ea7\u7269\u5e94\u4fdd\u7559\u5728\u4ed3\u5e93\u4e2d\u3002\u5c06\u4ee5\u4e0b\u4ee3\u7801\u5757\u6dfb\u52a0\u5230\u9879\u76ee\u7684 .gitignore \u4e2d\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># impeccable-ignore-start\n# Ephemeral output, runtime state, and per-dev overrides.\n# The **\/ prefix covers .impeccable at the repo root or in a nested workspace.\n# Shared artifacts stay tracked: config.json, live\/config.json,\n# design.json, surfaces\/*.md, critique\/*.md.\n**\/.impeccable\/config.local.json\n**\/.impeccable\/hook.cache.json\n**\/.impeccable\/hook.pending.json\n**\/.impeccable\/*.png\n**\/.impeccable\/review\/\n**\/.impeccable\/questions\/\n**\/.impeccable\/live\/server.json\n**\/.impeccable\/live\/sessions\/\n**\/.impeccable\/live\/previews\/\n**\/.impeccable\/live\/annotations\/\n**\/.impeccable\/live\/cache\/\n**\/.impeccable\/live\/manual-edit-apply-transaction.json\n**\/.impeccable\/live\/manual-edit-events.jsonl\n**\/.impeccable\/live\/manual-edit-evidence\/\n**\/.impeccable\/live\/pending-manual-edits.json\n**\/.impeccable\/live\/deferred-svelte-component-accepts.json\n**\/.impeccable\/live\/*.png\n# impeccable-ignore-end<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u8be5\u4ee3\u7801\u5757\u7528 # impeccable-ignore-start \/ # impeccable-ignore-end \u6807\u8bb0\u5305\u88f9\uff0c\u4fbf\u4e8e\u540e\u7eed\u8bc6\u522b\u548c\u5237\u65b0\u3002\/ \u524d\u7f00\u4f7f\u6bcf\u4e2a\u6a21\u5f0f\u90fd\u80fd\u5339\u914d\uff0c\u65e0\u8bba\u6d3b\u52a8\u9879\u76ee\u7684 .impeccable\/ \u76ee\u5f55\u4f4d\u4e8e\u4ed3\u5e93\u6839\u76ee\u5f55\u8fd8\u662f\u5d4c\u5957\u5de5\u4f5c\u533a\u8def\u5f84\uff08\u5982 apps\/web\/\uff09\u4e0b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4fdd\u7559\u5bf9\u8fd9\u4e9b\u6587\u4ef6\u7684\u8ffd\u8e2a\uff08\u5b83\u4eec\u662f\u5171\u4eab\u9879\u76ee\u4ea7\u7269\uff0c\u4e0d\u8981\u5c06\u5b83\u4eec\u6dfb\u52a0\u5230 .gitignore\uff09\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n    <li>.impeccable\/config.json\uff08\u7edf\u4e00\u7684\u5171\u4eab\u914d\u7f6e\uff09<\/li>\n    <li>.impeccable\/live\/config.json\uff08\u5b9e\u65f6\u6a21\u5f0f\u7684\u6846\u67b6\u8fde\u63a5\uff09<\/li>\n    <li>.impeccable\/design.json\uff08\u5171\u4eab\u8bbe\u8ba1\u89c4\u8303\uff09<\/li>\n    <li>.impeccable\/surfaces\/.md\uff08\u8def\u7531\u6216\u4ea7\u7269\u7279\u5b9a\u7684\u7b56\u7565\u548c\u65b9\u5411\u5951\u7ea6\uff09<\/li>\n    <li>.impeccable\/critique\/.md\uff08\u8bc4\u5ba1\u62a5\u544a\uff09<\/li>\n  <\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u5728\u6dfb\u52a0\u8be5\u4ee3\u7801\u5757\u4e4b\u524d\u5df2\u63d0\u4ea4\u4e86\u4e34\u65f6\u6587\u4ef6\uff08\u5982\u622a\u56fe\u3001config.local.json\uff09\uff0c.gitignore \u4e0d\u4f1a\u81ea\u52a8\u53d6\u6d88\u8ffd\u8e2a\u3002\u8bf7\u8fd0\u884c git rm &#8211;cached \u4ee5\u505c\u6b62\u8ffd\u8e2a\u8be5\u6587\u4ef6\uff0c\u540c\u65f6\u4fdd\u7559\u672c\u5730\u526f\u672c\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4ee5\u4e0a\u5185\u5bb9\u57fa\u4e8e <a href=\"https:\/\/github.com\/pbakaus\/impeccable\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">GitHub \u4ed3\u5e93 README<\/a> \u89e3\u6790\u751f\u6210\uff0c\u9002\u5408\u5148\u5feb\u901f\u4e86\u89e3\u9879\u76ee\u5b9a\u4f4d\u3001\u5b89\u88c5\u65b9\u5f0f\u3001\u6838\u5fc3\u80fd\u529b\u4e0e\u4f7f\u7528\u8fb9\u754c\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Impeccable \u662f\u4e00\u4e2a GitHub \u5f00\u6e90\u9879\u76ee\u3002\u8ba9\u4f60\u7684 AI \u5de5\u5177\u5728\u8bbe\u8ba1\u4e0a\u66f4\u80dc\u4e00\u7b79\u7684\u8bbe\u8ba1\u8bed\u8a00\u3002<\/p>\n","protected":false},"author":1,"featured_media":5154,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ai_share_source_url":"https:\/\/github.com\/pbakaus\/impeccable","ai_share_source_title":"Impeccable","ai_share_status":"\u5df2\u53d1\u5e03","ai_share_official_url":"https:\/\/impeccable.style","ai_share_author_label":"pbakaus","ai_share_version_label":"skill-v4.3.1","ai_share_install_command":"npx impeccable install","ai_share_primary_category":"\u8bbe\u8ba1\u521b\u610f","ai_share_tool_type":"skill","ai_share_resource_type":"workflow_skill_pack","ai_share_platform_support":"CLI,Chrome,\u6587\u6863","ai_share_collection":"\u8bbe\u8ba1\u4e0e\u54c1\u724c\u7d20\u6750","ai_share_last_verified_at":"2026-05-08","ai_share_provider_observed_at":"2026-09-22T20:00:56.293Z","ai_share_last_commit_at":"2026-09-22T17:49:10Z","ai_share_license":"Apache-2.0","ai_share_language_support":"en","ai_share_target_user":"\u524d\u7aef\u5de5\u7a0b\u5e08,\u8bbe\u8ba1\u5de5\u7a0b\u5e08,\u91cd\u89c6 UI \u8d28\u91cf\u7684 AI \u5f00\u53d1\u8005","ai_share_repo_default_branch":"main","ai_share_pricing_model":"open_source","ai_share_deployment_mode":"self_hosted","ai_share_delivery_mode":null,"ai_share_region_availability":"global","ai_share_source_platform":"GitHub","ai_share_download_url":"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/skill-v4.3.1\/universal.zip","ai_share_release_url":"https:\/\/github.com\/pbakaus\/impeccable\/releases\/tag\/skill-v4.3.1","ai_share_download_assets_json":"[{\"label\":\"universal.zip\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/skill-v4.3.1\/universal.zip\",\"size\":15625571,\"content_type\":\"application\/zip\",\"download_count\":83091,\"source\":\"github-release\",\"download\":true},{\"label\":\"universal.zip.sig.json\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/skill-v4.3.1\/universal.zip.sig.json\",\"size\":348,\"content_type\":\"application\/json\",\"download_count\":70662,\"source\":\"github-release\",\"download\":true}]","ai_share_github_releases_json":"[{\"tagName\":\"skill-v4.3.1\",\"name\":\"Skill 4.3.1\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/tag\/skill-v4.3.1\",\"body\":\"Useful errors instead of silent exits. Blocked cache writes and failed engine downloads now identify the required engine version, cache location, and recovery steps. Automatic first-use downloads and reuse of the cached engine are preserved. Windows setup stops cleanly. Unwritable download locations report an error instead of leaving the launcher waiting for input.\",\"bodyExcerpt\":\"\",\"bodyTruncated\":false,\"publishedAt\":\"2026-09-09T02:24:39Z\",\"prerelease\":false,\"draft\":false,\"assetCount\":2,\"assets\":[{\"label\":\"universal.zip\",\"name\":\"universal.zip\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/skill-v4.3.1\/universal.zip\",\"content_type\":\"application\/zip\",\"size\":15625571,\"download_count\":83091},{\"label\":\"universal.zip.sig.json\",\"name\":\"universal.zip.sig.json\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/skill-v4.3.1\/universal.zip.sig.json\",\"content_type\":\"application\/json\",\"size\":348,\"download_count\":70662}]},{\"tagName\":\"skill-v4.3.0\",\"name\":\"Skill 4.3.0\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/tag\/skill-v4.3.0\",\"body\":\"Artwork that belongs on your page. Impeccable can now generate illustrations and objects with genuinely transparent backgrounds, ready to sit over your own colors and textures. Photos and full-frame artwork keep their backgrounds. GPT Image 2.5 joins the workflow. Flare now powers image generation and reference edits when Impeccable uses your OpenAI key. Your agent's native image tool remains the first choice. More iterations, less waiting. In our 24-image comparison, Flare reduced median generation time from 88 seconds to 18, with approximately 73% lower estimated cost. Cutouts get a closer look. Asset production checks white detai...\",\"bodyExcerpt\":\"\",\"bodyTruncated\":false,\"publishedAt\":\"2026-09-08T23:29:43Z\",\"prerelease\":false,\"draft\":false,\"assetCount\":2,\"assets\":[{\"label\":\"universal.zip\",\"name\":\"universal.zip\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/skill-v4.3.0\/universal.zip\",\"content_type\":\"application\/zip\",\"size\":15619182,\"download_count\":694},{\"label\":\"universal.zip.sig.json\",\"name\":\"universal.zip.sig.json\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/skill-v4.3.0\/universal.zip.sig.json\",\"content_type\":\"application\/json\",\"size\":348,\"download_count\":586}]},{\"tagName\":\"skill-v4.2.3\",\"name\":\"Skill 4.2.3\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/tag\/skill-v4.2.3\",\"body\":\"Design hooks respect each app. In monorepos, post-edit, before-edit, and Stop checks use the target app's DESIGN.md, with repository fallback and no sibling leakage. Thanks to @tylerjryan for the report and proposed approach. Stop findings distinguish existing debt. When a trustworthy edit baseline is available, the Stop pass separates pre-existing findings from new ones; uncertain attribution is stated explicitly. Windows and managed-network fixes. Engine 0.1.4 fixes Windows update prompts and CSP configuration discovery, and trusts certificates installed in the operating system's certificate store. Clearer fallback when the launch...\",\"bodyExcerpt\":\"\",\"bodyTruncated\":false,\"publishedAt\":\"2026-09-08T19:15:53Z\",\"prerelease\":false,\"draft\":false,\"assetCount\":2,\"assets\":[{\"label\":\"universal.zip\",\"name\":\"universal.zip\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/skill-v4.2.3\/universal.zip\",\"content_type\":\"application\/zip\",\"size\":15593610,\"download_count\":1108},{\"label\":\"universal.zip.sig.json\",\"name\":\"universal.zip.sig.json\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/skill-v4.2.3\/universal.zip.sig.json\",\"content_type\":\"application\/json\",\"size\":348,\"download_count\":941}]},{\"tagName\":\"engine-v0.1.5\",\"name\":\"impeccable engine engine-v0.1.5\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/tag\/engine-v0.1.5\",\"body\":\"Prebuilt impeccable engine binaries (engine-v0.1.5). The launcher, the npm shim and impeccable install download these on first run. Docs: https:\/\/impeccable.style\",\"bodyExcerpt\":\"\",\"bodyTruncated\":false,\"publishedAt\":\"2026-09-08T23:17:42Z\",\"prerelease\":false,\"draft\":false,\"assetCount\":10,\"assets\":[{\"label\":\"impeccable-windows-x64.exe\",\"name\":\"impeccable-windows-x64.exe\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/engine-v0.1.5\/impeccable-windows-x64.exe\",\"content_type\":\"application\/octet-stream\",\"size\":14720392,\"download_count\":66182},{\"label\":\"impeccable-linux-x64\",\"name\":\"impeccable-linux-x64\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/engine-v0.1.5\/impeccable-linux-x64\",\"content_type\":\"application\/octet-stream\",\"size\":16089424,\"download_count\":59237},{\"label\":\"impeccable-darwin-arm64\",\"name\":\"impeccable-darwin-arm64\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/engine-v0.1.5\/impeccable-darwin-arm64\",\"content_type\":\"application\/octet-stream\",\"size\":12762240,\"download_count\":49635},{\"label\":\"impeccable-darwin-x64\",\"name\":\"impeccable-darwin-x64\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/engine-v0.1.5\/impeccable-darwin-x64\",\"content_type\":\"application\/octet-stream\",\"size\":14400568,\"download_count\":3682},{\"label\":\"impeccable-linux-arm64\",\"name\":\"impeccable-linux-arm64\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/engine-v0.1.5\/impeccable-linux-arm64\",\"content_type\":\"application\/octet-stream\",\"size\":13356720,\"download_count\":2102},{\"label\":\"impeccable-linux-x64.sha256\",\"name\":\"impeccable-linux-x64.sha256\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/engine-v0.1.5\/impeccable-linux-x64.sha256\",\"content_type\":\"application\/octet-stream\",\"size\":87,\"download_count\":56577},{\"label\":\"impeccable-windows-x64.exe.sha256\",\"name\":\"impeccable-windows-x64.exe.sha256\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/engine-v0.1.5\/impeccable-windows-x64.exe.sha256\",\"content_type\":\"application\/octet-stream\",\"size\":93,\"download_count\":52206},{\"label\":\"impeccable-darwin-arm64.sha256\",\"name\":\"impeccable-darwin-arm64.sha256\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/engine-v0.1.5\/impeccable-darwin-arm64.sha256\",\"content_type\":\"application\/octet-stream\",\"size\":90,\"download_count\":45920},{\"label\":\"impeccable-darwin-x64.sha256\",\"name\":\"impeccable-darwin-x64.sha256\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/engine-v0.1.5\/impeccable-darwin-x64.sha256\",\"content_type\":\"application\/octet-stream\",\"size\":88,\"download_count\":3170},{\"label\":\"impeccable-linux-arm64.sha256\",\"name\":\"impeccable-linux-arm64.sha256\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/engine-v0.1.5\/impeccable-linux-arm64.sha256\",\"content_type\":\"application\/octet-stream\",\"size\":89,\"download_count\":1880}]},{\"tagName\":\"engine-v0.1.4\",\"name\":\"impeccable engine engine-v0.1.4\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/tag\/engine-v0.1.4\",\"body\":\"Prebuilt impeccable engine binaries (engine-v0.1.4). The launcher, the npm shim and impeccable install download these on first run. Docs: https:\/\/impeccable.style\",\"bodyExcerpt\":\"\",\"bodyTruncated\":false,\"publishedAt\":\"2026-09-08T17:02:06Z\",\"prerelease\":false,\"draft\":false,\"assetCount\":10,\"assets\":[{\"label\":\"impeccable-windows-x64.exe\",\"name\":\"impeccable-windows-x64.exe\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/engine-v0.1.4\/impeccable-windows-x64.exe\",\"content_type\":\"application\/octet-stream\",\"size\":14717328,\"download_count\":1120},{\"label\":\"impeccable-darwin-arm64\",\"name\":\"impeccable-darwin-arm64\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/engine-v0.1.4\/impeccable-darwin-arm64\",\"content_type\":\"application\/octet-stream\",\"size\":12762224,\"download_count\":1086},{\"label\":\"impeccable-linux-x64\",\"name\":\"impeccable-linux-x64\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/engine-v0.1.4\/impeccable-linux-x64\",\"content_type\":\"application\/octet-stream\",\"size\":16093520,\"download_count\":897},{\"label\":\"impeccable-darwin-x64\",\"name\":\"impeccable-darwin-x64\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/engine-v0.1.4\/impeccable-darwin-x64\",\"content_type\":\"application\/octet-stream\",\"size\":14396456,\"download_count\":111},{\"label\":\"impeccable-linux-arm64\",\"name\":\"impeccable-linux-arm64\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/engine-v0.1.4\/impeccable-linux-arm64\",\"content_type\":\"application\/octet-stream\",\"size\":13344432,\"download_count\":81},{\"label\":\"impeccable-darwin-arm64.sha256\",\"name\":\"impeccable-darwin-arm64.sha256\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/engine-v0.1.4\/impeccable-darwin-arm64.sha256\",\"content_type\":\"application\/octet-stream\",\"size\":90,\"download_count\":1043},{\"label\":\"impeccable-windows-x64.exe.sha256\",\"name\":\"impeccable-windows-x64.exe.sha256\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/engine-v0.1.4\/impeccable-windows-x64.exe.sha256\",\"content_type\":\"application\/octet-stream\",\"size\":93,\"download_count\":930},{\"label\":\"impeccable-linux-x64.sha256\",\"name\":\"impeccable-linux-x64.sha256\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/engine-v0.1.4\/impeccable-linux-x64.sha256\",\"content_type\":\"application\/octet-stream\",\"size\":87,\"download_count\":846},{\"label\":\"impeccable-darwin-x64.sha256\",\"name\":\"impeccable-darwin-x64.sha256\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/engine-v0.1.4\/impeccable-darwin-x64.sha256\",\"content_type\":\"application\/octet-stream\",\"size\":88,\"download_count\":107},{\"label\":\"impeccable-linux-arm64.sha256\",\"name\":\"impeccable-linux-arm64.sha256\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/engine-v0.1.4\/impeccable-linux-arm64.sha256\",\"content_type\":\"application\/octet-stream\",\"size\":89,\"download_count\":81}]},{\"tagName\":\"cli-v4.1.0\",\"name\":\"CLI 4.1.0\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/tag\/cli-v4.1.0\",\"body\":\"Choose the model and background. generate-image defaults to GPT Image 2.5 Flare and adds --model and --background transparent|opaque|auto for generation and reference edits. Reusable PNG assets. Transparency survives prompt embedding, background choices are recorded alongside the image, and output paths are validated before generation. Commands survive spaces in install paths. Comp-workflow instructions quote launcher paths correctly while preserving prefixes such as npx impeccable.\",\"bodyExcerpt\":\"\",\"bodyTruncated\":false,\"publishedAt\":\"2026-09-08T23:28:55Z\",\"prerelease\":false,\"draft\":false,\"assetCount\":0,\"assets\":[]},{\"tagName\":\"cli-v4.0.5\",\"name\":\"CLI 4.0.5\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/tag\/cli-v4.0.5\",\"body\":\"Windows updates can prompt normally. Interactive confirmations use line input instead of unsupported raw terminal mode, without automatically accepting the update. HTTPS works with managed certificates. Engine requests trust the operating system's certificate store, including organization-installed certificates, while keeping certificate verification enabled. More accurate project checks. Windows CSP discovery recognizes normalized paths; design hooks load per-app monorepo rules and distinguish existing Stop findings where an edit baseline is available.\",\"bodyExcerpt\":\"\",\"bodyTruncated\":false,\"publishedAt\":\"2026-09-08T19:15:23Z\",\"prerelease\":false,\"draft\":false,\"assetCount\":0,\"assets\":[]},{\"tagName\":\"skill-v4.2.2\",\"name\":\"Skill 4.2.2\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/tag\/skill-v4.2.2\",\"body\":\"DeepSeek Harness joins the supported providers. Install the skill into .dsh\/skills, with project and global installation support. Thanks to @sheecegardezi for the contribution. No external fonts in the picker. Decision pages use system fonts and an inline SVG logo, with a light theme and no Google Fonts requests or bundled font files. Setup handles a refused launcher. Guidance now tells the agent to disclose the limitation and use readable references when the host blocks the engine, without claiming checks ran. Claude plugin launcher paths also resolve from the skill directory.\",\"bodyExcerpt\":\"\",\"bodyTruncated\":false,\"publishedAt\":\"2026-09-06T22:44:13Z\",\"prerelease\":false,\"draft\":false,\"assetCount\":2,\"assets\":[{\"label\":\"universal.zip\",\"name\":\"universal.zip\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/skill-v4.2.2\/universal.zip\",\"content_type\":\"application\/zip\",\"size\":15586786,\"download_count\":12034},{\"label\":\"universal.zip.sig.json\",\"name\":\"universal.zip.sig.json\",\"url\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/download\/skill-v4.2.2\/universal.zip.sig.json\",\"content_type\":\"application\/json\",\"size\":348,\"download_count\":10039}]}]","ai_share_github_project_brief_zh_cn_json":"{\"schema\":\"github-project-brief-v1\",\"positioning\":\"\u9488\u5bf9 AI \u7f16\u7a0b\u667a\u80fd\u4f53\u7684\u8bbe\u8ba1\u6307\u5bfc\u5c42\uff0c\u901a\u8fc7\u786e\u5b9a\u6027\u89c4\u5219\u4e0e\u7edf\u4e00\u547d\u4ee4\u96c6\u51cf\u5c11 AI \u751f\u6210\u524d\u7aef\u4e2d\u7684\u8bbe\u8ba1\u540c\u8d28\u5316\u95ee\u9898\u3002\",\"capabilities\":[\"23 \u6761\u8bbe\u8ba1\u547d\u4ee4\u8986\u76d6 audit\u3001critique\u3001polish\u3001craft \u7b49\u8bbe\u8ba1\u8bc4\u5ba1\u3001\u8fed\u4ee3\u4f18\u5316\u4e0e\u53d1\u5e03\u524d\u68c0\u67e5\u6d41\u7a0b\",\"61 \u6761\u786e\u5b9a\u6027\u68c0\u6d4b\u89c4\u5219\uff0cCLI \u548c\u6d4f\u89c8\u5668\u6269\u5c55\u8fd0\u884c\u8fd9\u4e9b\u89c4\u5219\u65f6\u4e0d\u9700\u8981 LLM \u6216 API Key\",\"\u521d\u59cb\u5316\u6d41\u7a0b\u751f\u6210 PRODUCT.md \u4e0e DESIGN.md\uff0c\u4e3a\u540e\u7eed\u547d\u4ee4\u5efa\u7acb\u5171\u4eab\u7684\u4ea7\u54c1\u4e0e\u8bbe\u8ba1\u4e0a\u4e0b\u6587\",\"\u63d0\u4f9b\u5b9e\u65f6\u6d4f\u89c8\u5668\u8fed\u4ee3\u80fd\u529b\uff0c\u53ef\u5728\u53ef\u89c6\u5316\u73af\u5883\u4e2d\u63a2\u7d22\u5143\u7d20\u7ea7\u8bbe\u8ba1\u53d8\u4f53\",\"\u5728\u591a\u79cd AI \u7f16\u7a0b\u5de5\u5177\u4e2d\u901a\u8fc7\u539f\u751f hook \u5bf9 UI \u6587\u4ef6\u7f16\u8f91\u6267\u884c\u8bbe\u8ba1\u68c0\u6d4b\u5e76\u53cd\u9988\u7ed9 Agent \u5de5\u4f5c\u6d41\"],\"useCases\":[\"\u5bf9 AI \u751f\u6210\u7684\u524d\u7aef\u9875\u9762\u8fdb\u884c\u53ef\u8bbf\u95ee\u6027\u3001\u6027\u80fd\u4e0e\u54cd\u5e94\u5f0f\u8bbe\u8ba1\u8d28\u91cf\u5ba1\u8ba1\",\"\u5728\u4ee3\u7801\u6784\u5efa\u524d\u8bc4\u5ba1 UX \u5c42\u7ea7\u3001\u6e05\u6670\u5ea6\u548c\u89c6\u89c9\u8868\u8fbe\",\"\u4ea7\u54c1\u53d1\u5e03\u524d\u68c0\u67e5\u8bbe\u8ba1\u4e00\u81f4\u6027\u4e0e\u8bbe\u8ba1\u7cfb\u7edf\u89c4\u8303\",\"\u5efa\u7acb\u56e2\u961f\u7edf\u4e00\u7684\u8bbe\u8ba1\u8bcd\u6c47\u548c\u53cd\u6a21\u5f0f\u89c4\u5219\uff0c\u51cf\u5c11\u5e38\u89c1\u7684 AI \u98ce\u683c\u540c\u8d28\u5316\"],\"gettingStarted\":\"\u5728\u9879\u76ee\u6839\u76ee\u5f55\u5b89\u88c5 Impeccable\uff0c\u7136\u540e\u5728 AI \u7f16\u7a0b\u5de5\u5177\u4e2d\u8fd0\u884c \/impeccable init\uff0c\u9009\u62e9\u754c\u9762\u7c7b\u578b\u751f\u6210\u4ea7\u54c1\u4e0e\u8bbe\u8ba1\u4e0a\u4e0b\u6587\uff1b\u4e4b\u540e\u6309\u4efb\u52a1\u8c03\u7528 audit\u3001critique\u3001polish \u7b49\u547d\u4ee4\u3002\",\"facts\":{\"installCommand\":\"\",\"documentationUrl\":\"https:\/\/impeccable.style\/docs\/detector\",\"versionLabel\":\"ext-v1.3.3\",\"releaseUrl\":\"https:\/\/github.com\/pbakaus\/impeccable\/releases\/tag\/ext-v1.3.3\",\"lastCommitAt\":\"2026-08-29T00:58:59Z\",\"observedAt\":\"2026-08-18T07:21:00.080Z\",\"repoUrl\":\"https:\/\/github.com\/pbakaus\/impeccable\",\"readmeUrl\":\"https:\/\/github.com\/pbakaus\/impeccable\/blob\/main\/README.md\",\"readmeHash\":\"bac63a3e80316c8ea969bd2870b2e8491dce7b0655808de5092abfd237c3dd27\"}}","ai_share_view_count":4105,"ai_share_bookmark_count":210,"ai_share_first_party_view_count":28,"ai_share_github_stars":69891,"ai_share_github_watchers":191,"ai_share_github_forks":4253,"ai_share_github_open_issues":39,"ai_share_open_source":true,"ai_share_repo_url":"https:\/\/github.com\/pbakaus\/impeccable","ai_share_documentation_url":"https:\/\/impeccable.style\/docs\/detector","creator_id":"github-pbakaus","creator_slug":"pbakaus","creator_name":"pbakaus","creator_type":"person","creator_status":"external","creator_intro":"Creative Technologist \u2615\ufe0f Entrepreneur \u2022 \ud83d\udddd Gate opener \u2022 \ud83d\uddfa Adventurer \u2022 \ud83c\udfac Geek \u2022 Created jQuery UI, Google for Creators, Spotter Studio \u2022 he\/him","creator_github_url":"https:\/\/github.com\/pbakaus","creator_avatar_url":"https:\/\/avatars.githubusercontent.com\/u\/43004?v=4","ai_share_github_readme_path":"README.md","ai_share_github_readme_sha":"2c52ab4374c914513fc1e3ad4857f63e8c56e468","ai_share_github_readme_hash":"264587b0f5bf9a18d724a2221bd2eb369429ad24c13eb078ee903d384ef87b5b","ai_share_github_readme_language":"en","ai_share_github_readme_format":"markdown","ai_share_github_description":"The design language that makes your AI harness better at design.","ai_share_one_sentence_definition":"AI UI \u8bbe\u8ba1\u80fd\u529b\u589e\u5f3a\u6846\u67b6","ai_share_one_sentence_definition_zh_cn":"AI UI \u8bbe\u8ba1\u80fd\u529b\u589e\u5f3a\u6846\u67b6","ai_share_github_project_brief_source_hash":"f6d37060b0a0749011ff013b563438a509f062adc81c29a599829a6ea79f8575","ai_share_github_project_brief_generated_at":"2026-09-03T20:10:41+08:00","ai_share_github_project_brief_provider":"OpenClaw","ai_share_github_project_brief_model":"","ai_share_github_project_brief_status":"reviewed","ai_share_one_sentence_definition_raw_output":"AI UI \u8bbe\u8ba1\u8bed\u8a00\u8d44\u6e90\u5305","ai_share_one_sentence_definition_source_hash":"b626710dc54e89349dfaaa88ab3feb3ea90d72cbfd09cce6c5f2e046354ad889","ai_share_one_sentence_definition_generated_at":"2026-08-29T00:53:48+08:00","ai_share_one_sentence_definition_provider":"OpenClaw","ai_share_one_sentence_definition_model":"MiniMax-M2.7","ai_share_one_sentence_definition_status":"human-reviewed","ai_share_github_readme_url":"https:\/\/github.com\/pbakaus\/impeccable\/blob\/main\/README.md","ai_share_github_readme_raw_url":"https:\/\/raw.githubusercontent.com\/pbakaus\/impeccable\/main\/README.md","ai_share_github_readme_markdown":"# Impeccable\n\nDesign guidance for AI coding agents. 1 skill, 24 commands, live browser iteration, and 61 deterministic detector rules for AI-generated frontend design.\n\n> **Quick start:** From your project root, run `npx impeccable install`, then run `\/impeccable init` inside your AI coding tool. Full docs: [impeccable.style](https:\/\/impeccable.style).\n\n## Why Impeccable?\n\nAnthropic's [frontend-design](https:\/\/github.com\/anthropics\/skills\/tree\/main\/skills\/frontend-design) was the first widely-used design skill for Claude. Impeccable started from there.\n\nEvery model trained on the same SaaS templates. Skip the guidance and you get the same handful of tells on every project: Inter for everything, purple-to-blue gradients, cards nested in cards, gray text on colored backgrounds, the rounded-square icon tile above every heading.\n\nImpeccable adds:\n- **One setup flow.** `\/impeccable init` records durable product truth in `PRODUCT.md`, so later commands know the audience, purpose, operating context, constraints, voice, and evidence without confusing those facts with surface-level visual direction.\n- **24 commands.** A shared design vocabulary with your AI: `polish`, `audit`, `critique`, `distill`, `animate`, `bolder`, `quieter`, and more.\n- **61 deterministic detector rules** plus LLM-only critique checks. The CLI and browser extension run the deterministic rules with no LLM and no API key.\n\n## What's Included\n\n### The Skill: impeccable\n\nThe skill installs as one command:\n\n```bash\n\/impeccable <command> <target>\n```\n\nStart every new project with:\n\n```bash\n\/impeccable init\n```\n\n`init` inspects the project, asks only for material gaps in durable product truth, and writes `PRODUCT.md`. Visitor mode and visual direction are chosen later for each surface; incumbent or newly built visual systems are recorded separately in `DESIGN.md`.\n\n### 24 Commands\n\nAll commands are accessed through `\/impeccable`:\n\n| Command | What it does |\n|---------|--------------|\n| `\/impeccable craft` | Full shape-then-build flow with visual iteration |\n| `\/impeccable init` | One-time setup: gather durable product context, write PRODUCT.md, configure live mode when applicable, recommend next steps |\n| `\/impeccable document` | Generate root DESIGN.md from existing project code |\n| `\/impeccable extract` | Pull reusable components and tokens into the design system |\n| `\/impeccable shape` | Plan UX\/UI before writing code |\n| `\/impeccable critique` | UX design review: hierarchy, clarity, emotional resonance |\n| `\/impeccable audit` | Run technical quality checks (a11y, performance, responsive) |\n| `\/impeccable polish` | Final pass, design system alignment, and shipping readiness |\n| `\/impeccable bolder` | Amplify boring designs |\n| `\/impeccable quieter` | Tone down overly bold designs |\n| `\/impeccable distill` | Strip to essence |\n| `\/impeccable harden` | Error handling, i18n, text overflow, edge cases |\n| `\/impeccable onboard` | First-run flows, empty states, activation paths |\n| `\/impeccable animate` | Add purposeful motion |\n| `\/impeccable colorize` | Introduce strategic color |\n| `\/impeccable typeset` | Fix font choices, hierarchy, sizing |\n| `\/impeccable layout` | Fix layout, spacing, visual rhythm |\n| `\/impeccable delight` | Add moments of joy |\n| `\/impeccable overdrive` | Add technically extraordinary effects |\n| `\/impeccable clarify` | Improve unclear UX copy |\n| `\/impeccable adapt` | Adapt for different devices |\n| `\/impeccable optimize` | Performance improvements |\n| `\/impeccable live` | Visual variant mode: iterate on elements in the browser |\n| `\/impeccable generate` | Generate variants of a named element in the live browser, no manual picking |\n\nUse `\/impeccable pin <command>` to create standalone shortcuts (e.g., `pin audit` creates `\/audit`).\n\n#### Usage Examples\n\n```\n\/impeccable audit blog           # Audit blog hub + post pages\n\/impeccable critique landing     # UX design review\n\/impeccable polish settings      # Final pass before shipping\n\/impeccable harden checkout      # Add error handling + edge cases\n```\n\nOr use `\/impeccable` directly with a description:\n```\n\/impeccable redo this hero section\n```\n\n### Anti-Patterns\n\nThe skill includes explicit guidance on what to avoid:\n\n- Don't use overused fonts (Arial, Inter, system defaults)\n- Don't use gray text on colored backgrounds\n- Don't use pure black\/gray (always tint)\n- Don't wrap everything in cards or nest cards inside cards\n- Don't use bounce\/elastic easing (feels dated)\n\n## See It In Action\n\nVisit [the Neo Mirai case study](https:\/\/impeccable.style\/cases\/neo-mirai) to see a before\/after case study of a real project transformed with Impeccable commands.\n\n## Installation\n\nThe skill needs no runtime of its own. Every skill copy ships a small launcher (`scripts\/impeccable`, plus `impeccable.cmd` for Windows) that runs the Impeccable engine, a self-contained binary that either sits next to the launcher or is downloaded once on first run into `~\/.impeccable\/bin\/`. Node is only involved if you use the `npx impeccable` installer, which is a shim around the same binary; the manual and Git options below work without it.\n\n### Option 1: CLI installer (Recommended)\n\nFrom the root of your project, run:\n\n```bash\nnpx impeccable install\n```\n\nThis shows the harness folders or installed CLIs it detected (for example `~\/.claude`, `~\/.codex`, `~\/.grok`, `~\/.hermes`, `~\/.veto`, or project-local `.cursor`), lets you keep the detected set or customize providers, then asks whether to install into the current project or globally. Use `--providers=claude,codex,cursor,grok,hermes,veto` and `--scope=project|global` to skip those choices in scripts. On Claude Code, Cursor, Codex, GitHub Copilot, and Grok Build, it also installs the provider-native hook manifest for the current project. Veto receives the packaged skill under `~\/.veto\/skills\/` and does not run native Impeccable edit hooks. Works with Cursor, Claude Code, Gemini CLI, Codex CLI, Grok Build, Hermes Agent, Veto, and every other supported tool. Reload your harness afterward.\n\nTo refresh an existing install, run:\n\n```bash\nnpx impeccable update\n```\n\nCodex users should open `\/hooks` after install or update and approve the project hook when prompted. Codex tracks trust by hook definition, so updates that change `.codex\/hooks.json` can require approval again. Grok Build users need project folder trust (`\/hooks-trust` or launch with `--trust`) before `.grok\/hooks\/` scripts run.\n\nSee [Allow the hook in your harness](https:\/\/impeccable.style\/docs\/hooks#allow-the-hook-in-your-harness) for harness-specific trust and verification steps.\n\n### Option 2: Git Submodule\n\nFor teams that want to keep Impeccable vendored and updated through Git, add this repo as a submodule and link the compiled provider build into your harness folders:\n\n```bash\ngit submodule add https:\/\/github.com\/pbakaus\/impeccable .impeccable\nnpx impeccable link --source=.impeccable --providers=claude,cursor\ngit add .gitmodules .impeccable .claude .cursor\ngit commit -m \"Add Impeccable skills\"\n```\n\nUse the providers your project needs, for example `claude`, `cursor`, `gemini`, `codex`, `github`, `grok`, `hermes`, `opencode`, `pi`, `qoder`, `trae`, `trae-cn`, `rovo-dev`, `vibe`, or `veto`. The command links individual skill folders from `.impeccable\/dist\/universal\/` and leaves existing real skill directories untouched unless you pass `--force`.\n\nTo update later:\n\n```bash\ngit submodule update --remote .impeccable\nnpx impeccable link --source=.impeccable --providers=claude,cursor\n```\n\n### Option 3: Plugin install\n\n**GitHub Copilot in VS Code:**\n\nInstall [Impeccable from the Visual Studio Marketplace](https:\/\/marketplace.visualstudio.com\/items?itemName=renaissance-geek.impeccable), or run:\n\n```bash\ncode --install-extension renaissance-geek.impeccable\n```\n\nRequires VS Code 1.109.3+, Copilot Chat access, and a trusted local workspace. Open Chat in Agent mode and try `\/impeccable polish`. This skill-only extension does not install automatic hooks; avoid a duplicate Impeccable skill in the same workspace\/profile. See [VS Code distribution details](docs\/VSCODE-EXTENSION.md).\n\n**Claude Code:**\n```bash\n\/plugin marketplace add pbakaus\/impeccable\n```\n\n> Claude Code only. After adding the marketplace, open `\/plugin` and install Impeccable from the list.\n\n**Grok Build:**\n```bash\ngrok plugin install pbakaus\/impeccable#plugin --trust\n```\n\n> Grok Build only. The `#plugin` suffix installs the slim plugin package (skills, agents, and hooks) instead of the full monorepo. Then run `\/impeccable init` in a Grok session. Project-scoped installs via `npx impeccable install --providers=grok` also work and write `.grok\/skills\/` plus `.grok\/hooks\/impeccable.json`.\n\n### Option 4: Download from Website\n\nVisit [impeccable.style](https:\/\/impeccable.style), download the ZIP for your tool, and extract to your project.\n\n### Option 5: Copy from Repository\n\n**Cursor:**\n```bash\ncp -r dist\/cursor\/.cursor your-project\/\n```\n\n> **Note:** Cursor skills require setup:\n> 1. Switch to Nightly channel in Cursor Settings \u2192 Beta\n> 2. Enable Agent Skills in Cursor Settings \u2192 Rules\n>\n> [Learn more about Cursor skills](https:\/\/cursor.com\/docs\/context\/skills)\n\n**Claude Code:**\n```bash\n# Project-specific\ncp -r dist\/claude-code\/.claude your-project\/\n\n# Or global (applies to all projects)\ncp -r dist\/claude-code\/.claude\/* ~\/.claude\/\n```\n\n**OpenCode:**\n```bash\ncp -r dist\/opencode\/.opencode your-project\/\n```\n\n**DeepSeek Harness:**\n```bash\n# Project-specific\ncp -r dist\/dsh\/.dsh your-project\/\n\n# Or global (applies to all projects)\nmkdir -p \"${DSH_HOME:-$HOME\/.dsh}\/skills\"\ncp -r dist\/dsh\/.dsh\/skills\/* \"${DSH_HOME:-$HOME\/.dsh}\/skills\/\"\n```\n\nThe CLI honors `DSH_HOME` only when it resolves inside your home directory (or to home itself); otherwise it uses `~\/.dsh`. An outside-home manual copy is not managed by `impeccable install\/update`.\n\n**Hermes Agent:**\n```bash\n# Global (applies to all projects; uses the active profile, or ~\/.hermes by default)\ncp -r dist\/hermes\/.hermes\/skills\/* \"${HERMES_HOME:-$HOME\/.hermes}\/skills\/\"\n\n# Or project-specific\ncp -r dist\/hermes\/.hermes your-project\/\n```\n\n> **Note:** Hermes gates project-local skills behind a per-repo trust decision\n> (they are procedure documents, so auto-loading them from any cloned repo is\n> treated as a prompt-injection vector). After a project-scoped install, run\n> `hermes skills trust` once from the project root. Global installs into the\n> active `$HERMES_HOME\/skills\/` (or `~\/.hermes\/skills\/` when unset) load without\n> a trust step. `\/impeccable <command>` then\n> routes through the skill's Commands table; the design hook does not install\n> on Hermes (no hook surface).\n>\n> [Learn more about Hermes skills](https:\/\/hermes-agent.nousresearch.com\/docs\/user-guide\/features\/skills)\n\n**Pi:**\n```bash\ncp -r dist\/pi\/.pi your-project\/\n```\n\n**Gemini CLI:**\n```bash\ncp -r dist\/gemini\/.gemini your-project\/\n```\n\n> **Note:** Gemini CLI skills require setup:\n> 1. Install preview version: `npm i -g @google\/gemini-cli@preview`\n> 2. Run `\/settings` and enable \"Skills\"\n> 3. Run `\/skills list` to verify installation\n>\n> [Learn more about Gemini CLI skills](https:\/\/geminicli.com\/docs\/cli\/skills\/)\n\n**Codex CLI:**\n```bash\n# Project-local\ncp -r dist\/agents\/.agents your-project\/\nmkdir -p your-project\/.codex\ncp dist\/codex\/.codex\/hooks.json your-project\/.codex\/hooks.json\n\n# Or install the skill user-wide. Copy .codex\/hooks.json into each project\n# where you want the design hook to run.\nmkdir -p ~\/.agents\/skills\ncp -r dist\/agents\/.agents\/skills\/* ~\/.agents\/skills\/\n```\n\n> The asset-producer subagent ships nested inside the skill's own `agents\/` folder, which Codex auto-discovers. No separate `.codex\/agents\/` copy is needed. The hook is project-local because Codex discovers hooks from `.codex\/hooks.json` next to trusted project config.\n\n**GitHub Copilot:**\n```bash\ncp -r dist\/github\/.github your-project\/\n```\n\n**Trae:**\n```bash\n# Trae China (domestic version)\ncp -r dist\/trae\/.trae-cn\/skills\/* ~\/.trae-cn\/skills\/\n\n# Trae International\ncp -r dist\/trae\/.trae\/skills\/* ~\/.trae\/skills\/\n```\n\n> **Note:** Trae has two versions with different config directories:\n> - **Trae China**: `~\/.trae-cn\/skills\/`\n> - **Trae International**: `~\/.trae\/skills\/`\n>\n> After copying, restart Trae IDE to activate the skills.\n\n**Rovo Dev:**\n```bash\n# Project-specific\ncp -r dist\/rovo-dev\/.rovodev your-project\/\n\n# Or global (applies to all projects)\ncp -r dist\/rovo-dev\/.rovodev\/skills\/* ~\/.rovodev\/skills\/\n```\n\n**Qoder:**\n```bash\n# Project-specific\ncp -r dist\/qoder\/.qoder your-project\/\n\n# Or global (applies to all projects)\ncp -r dist\/qoder\/.qoder\/skills\/* ~\/.qoder\/skills\/\n```\n\n**Mistral Vibe:**\n```bash\n# Project-specific\ncp -r dist\/vibe\/.vibe your-project\/\n\n# Or global (applies to all projects)\ncp -r dist\/vibe\/.vibe\/skills\/* ~\/.vibe\/skills\/\n```\n\n**Grok Build:**\n```bash\n# Project-specific\ncp -r dist\/grok\/.grok your-project\/\n\n# Or global (applies to all projects)\ncp -r dist\/grok\/.grok\/skills\/* ~\/.grok\/skills\/\n```\n\n> Prefer `npx impeccable install --providers=grok` or `grok plugin install pbakaus\/impeccable#plugin --trust` so the design hook installs too. Project hooks need `\/hooks-trust` (or `--trust`) once per folder.\n\n**Google Antigravity:**\n```bash\n# Project-specific\ncp -r dist\/antigravity\/.agent your-project\/\n\n# Or global (applies to all projects)\nmkdir -p ~\/.gemini\/config\/skills\ncp -r dist\/antigravity\/.agent\/skills\/* ~\/.gemini\/config\/skills\/\n```\n\n## Usage\n\nOnce installed, every command runs through the single `\/impeccable` skill:\n\n```\n\/impeccable audit        # Find issues\n\/impeccable polish       # Final cleanup\n\/impeccable distill      # Remove complexity\n\/impeccable critique     # Full design review\n```\n\nType `\/impeccable` alone to see the full command list.\n\nMost commands accept an optional argument to focus on a specific area:\n\n```\n\/impeccable audit the header\n\/impeccable polish the checkout form\n```\n\nIf you reach for one command often, pin it with `\/impeccable pin audit` to get `\/audit` as a standalone shortcut.\n\n**Note:** Codex uses skills here, not `\/prompts:` commands. Open `\/skills` or type `$impeccable`. Repo-local installs live in `.agents\/skills\/`; user-wide installs live in `~\/.agents\/skills\/`. GitHub Copilot uses `.github\/skills\/`. Restart the tool if a newly installed skill does not appear.\n\n## Keeping `.impeccable` out of git\n\nAs you run commands, Impeccable writes working files under `.impeccable\/`: critique and polish screenshots, live-mode session and preview state, runtime caches, and per-developer config. Most of it is ephemeral and should not be committed, while a few files are shared project artifacts that belong in the repo. Add this block to your project's `.gitignore`:\n\n```gitignore\n# impeccable-ignore-start\n# Ephemeral output, runtime state, and per-dev overrides.\n# The **\/ prefix covers .impeccable at the repo root or in a nested workspace.\n# Shared artifacts stay tracked: config.json, live\/config.json,\n# design.json, surfaces\/*.md, critique\/*.md.\n**\/.impeccable\/config.local.json\n**\/.impeccable\/hook.cache.json\n**\/.impeccable\/hook.pending.json\n**\/.impeccable\/*.png\n**\/.impeccable\/review\/\n**\/.impeccable\/questions\/\n**\/.impeccable\/live\/server.json\n**\/.impeccable\/live\/sessions\/\n**\/.impeccable\/live\/previews\/\n**\/.impeccable\/live\/annotations\/\n**\/.impeccable\/live\/cache\/\n**\/.impeccable\/live\/manual-edit-apply-transaction.json\n**\/.impeccable\/live\/manual-edit-events.jsonl\n**\/.impeccable\/live\/manual-edit-evidence\/\n**\/.impeccable\/live\/pending-manual-edits.json\n**\/.impeccable\/live\/deferred-svelte-component-accepts.json\n**\/.impeccable\/live\/*.png\n# impeccable-ignore-end\n```\n\nThe block is wrapped in `# impeccable-ignore-start` \/ `# impeccable-ignore-end` markers so you can recognize and refresh it later. The `**\/` prefix makes each pattern match whether the active project's `.impeccable\/` directory is at the repository root or under a nested workspace path like `apps\/web\/`.\n\n**Keep these tracked** (they are shared project artifacts, do not add them to `.gitignore`):\n\n- `.impeccable\/config.json` (unified shared config)\n- `.impeccable\/live\/config.json` (live-mode framework wiring)\n- `.impeccable\/design.json` (shared design spec)\n- `.impeccable\/surfaces\/*.md` (route- or artifact-specific strategy and direction contracts)\n- `.impeccable\/critique\/*.md` (review reports)\n\nIf an ephemeral file (a screenshot, `config.local.json`) was committed before you added the block, `.gitignore` will not untrack it automatically. Run `git rm --cached <path>` to stop tracking it without deleting your local copy.\n\n## Design hook\n\nOn Claude Code, GitHub Copilot, Codex, Cursor, and Grok Build, `npx impeccable install` and `npx impeccable update` install a provider-native hook manifest along with the skill payload. The hook runs the Impeccable design detector on direct UI file edits and surfaces findings back into the agent flow. Claude Code, GitHub Copilot, and Codex surface findings after the edit (and run a deeper pass on Stop where supported). Grok Build scans after the edit to warm Stop, then surfaces on Stop; PostToolUse stdout never reaches the model. Cursor blocks bad proposed writes before they land.\n\nInstalled hook surfaces:\n\n- Claude Code: `.claude\/settings.local.json` (gitignored, machine-local) runs `${CLAUDE_PROJECT_DIR}\/.claude\/skills\/impeccable\/scripts\/impeccable hook`. A hook moved into the shared `settings.json` is honored in place.\n- GitHub Copilot: `.github\/hooks\/impeccable.json` (committed, shared by the Copilot CLI and the cloud agent) runs `.github\/skills\/impeccable\/scripts\/impeccable hook`. The Copilot CLI activates it once the file is on the repository's default branch and the folder is trusted.\n- Cursor: `.cursor\/hooks.json` runs `.cursor\/skills\/impeccable\/scripts\/impeccable hook-before-edit`.\n- Codex: `.codex\/hooks.json` runs `.agents\/skills\/impeccable\/scripts\/impeccable hook`, with a `commandWindows` sibling that calls `impeccable.cmd` for cmd.exe.\n- Grok Build: `.grok\/hooks\/impeccable.json` runs `.grok\/skills\/impeccable\/scripts\/impeccable hook`. Requires `\/hooks-trust` or `--trust`. Findings reach the model on Stop, not after each edit.\n\nEvery command goes through the launcher shipped in the skill's `scripts\/` directory (`impeccable`, or `impeccable.cmd` on Windows), guarded so a missing launcher is a silent no-op. The launcher runs the engine binary that ships next to it, or downloads the pinned version once into `~\/.impeccable\/bin\/`. No Node or other runtime is required for the hook or the skill.\n\nIn Claude Code, installed command hooks run independently of model-tool approval. The first edit or Stop event can therefore download and cache the engine even if the session denies the model's launcher command. Review installed hooks before unattended runs; to disable all Claude Code hooks for a run, pass `--settings '{\"disableAllHooks\": true}'`. See [Claude Code's hook security guidance](https:\/\/code.claude.com\/docs\/en\/hooks#security-considerations).\n\nThe installer preserves unrelated hook entries and settings. If a hook manifest is malformed, install\/update aborts by default; rerun with `--force` to back up the malformed file as `.bak` and replace it.\n\nOn an interactive `install`\/`update`, Impeccable explains the hook and offers to install it (default yes). Your choice is remembered per-developer in the gitignored `.impeccable\/config.local.json`, so you are not asked again; `--no-hooks` skips it for that run without recording anything. Hook lifecycle settings live under the `hook` key of `.impeccable\/config.json`; detector ignores live under `detector`, shared by `\/impeccable hooks` and `npx impeccable detect`.\n\nFor debugging, set `hook.auditLog` in `.impeccable\/config.json` to a path (or the legacy `IMPECCABLE_HOOK_LOG` env var) to write one NDJSON line per hook invocation. Leave it unset for normal use.\n\n## Build path: comp-first or code-first\n\nWhen a new surface gets designed, Impeccable either generates a full-fidelity comp first and builds to match it, or builds straight in code with the ambition written into a development-only direction contract in the surface brief and checked at the finish. Comp-first composes bolder and takes longer; code-first is leaner and faster. `\/impeccable init` asks once and records the answer as `buildPath` in `.impeccable\/config.json`:\n\n```json\n{ \"buildPath\": \"comp\" }\n```\n\nThe values are `comp` and `code`, and nothing else is read. Set it in the gitignored `.impeccable\/config.local.json` to override the team's committed value on one machine, which is what you want when your harness has no image generation. In a monorepo, commit it once at the repo root and any workspace that wants something else sets its own. The choice appears at all only where image generation is available, since without it there is nothing to comp.\n\nYou do not have to re-run `init` to set it on a project that predates the setting, and you do not have to edit the file by hand either. Whatever is recorded is a default rather than a lock: every decision page carries a footer toggle, and flipping it binds that session only. Flip it on a project that has recorded nothing and Impeccable asks once, after the round, whether to keep it, then writes your answer. That is the whole migration path for an existing project: use the toggle when the default is wrong, and answer the question that follows.\n\nCodex requires one platform step that Impeccable cannot safely skip: open `\/hooks` after install or update and approve the project hook. There is no Codex marketplace\/plugin install flow for this hook.\n\nFull hook docs: [impeccable.style\/docs\/hooks](https:\/\/impeccable.style\/docs\/hooks).\n\nThe Stop pass suppresses confirmed pre-existing findings when a verified before-edit baseline is available (currently Claude Edit\/Write results for text scans). Other findings are marked new or attribution unknown; unknown is not evidence that your session caused the problem. Explicit `detect` scans remain unchanged.\n\nManual copy commands are fallback\/debug instructions. The normal path is:\n\n```bash\nnpx impeccable install\nnpx impeccable update\n```\n\n## Live mode and production sites\n\nLive mode edits a local checkout through a development server or local static HTML. Injecting its localhost HTTP helper into a deployed production site, including an HTTPS site, is not supported. Do not disable browser security or weaken production CSP to make it work.\n\nUse live mode only in projects you trust to run locally. Applying copy edits automatically runs `package.json`'s optional `scripts[\"impeccable:manual-edit-validate\"]` command in a shell, with your user permissions; review that script before using live mode in an unfamiliar checkout.\n\nFor production inspection, use `npx impeccable detect https:\/\/example.com` or the browser extension. These inspect the rendered page; they do not provide live variant editing or write changes back to your source.\n\n## CLI\n\nImpeccable includes a standalone CLI for detecting anti-patterns without an AI harness. `npx impeccable` is a small shim that runs the same engine binary the skill uses (installed as a platform-specific optional dependency, or fetched once into `~\/.impeccable\/bin\/`); Node is needed only for `npx` itself, and you can also download the binary directly and put it on your PATH.\n\n```bash\nnpx impeccable detect src\/                   # scan a directory\nnpx impeccable detect index.html             # scan an HTML file\nnpx impeccable detect https:\/\/example.com    # scan a URL (uses an installed Chrome, Chromium, or Edge)\nnpx impeccable detect --json .               # CI-friendly JSON output\nnpx impeccable detect --no-config src\/       # raw scan, ignoring project config\/context\nnpx impeccable ignores list                  # show detector ignores\nnpx impeccable ignores add-file \"src\/legacy\/**\"\nnpx impeccable ignores add-value overused-font Inter --reason \"Brand font\"\n```\n\nThe detector catches 61 deterministic issues across AI slop (side-tab borders, purple gradients, bounce easing, dark glows) and general design quality (line length, cramped padding, small touch targets, skipped headings, and more).\n\nHuman-readable findings are diagnostics written to stderr, so redirect them with `2> findings.txt`. Use `--json` for machine-readable results on stdout. Exit `0` means the scan completed without primary findings, exit `2` means it completed with primary findings, and exit `1` means at least one requested target could not be scanned; operational failure takes precedence for a partial multi-target scan. URL scans inspect the rendered DOM, computed layout, and accessible linked stylesheets; browser security still prevents reading cross-origin CSS without CORS. A clean detector run is evidence, not proof of visual or accessibility quality: it does not replace inspecting the rendered experience across relevant viewports.\n\nBy default, `detect` respects the same `.impeccable\/config.json` and `.impeccable\/config.local.json` detector config as the design hook: `detector.ignoreRules`, `detector.ignoreFiles`, `detector.ignoreValues`, and `detector.designSystem.enabled`. Hook lifecycle settings such as `hook.enabled` only affect automatic hook execution.\n\nFor a waiver that should travel with one file instead of the repo config, add an inline comment in the file: `<!-- impeccable-disable overused-font: exported brand doc -->`. The marker works in any comment syntax, scopes to the whole file (or one line with `impeccable-disable-line` \/ `impeccable-disable-next-line`), and is bypassed by `--no-inline-ignores` or `--no-config`.\n\nFull detector docs: [impeccable.style\/docs\/detector](https:\/\/impeccable.style\/docs\/detector).\n\n## Supported Tools\n\n- [Cursor](https:\/\/cursor.com)\n- [Claude Code](https:\/\/claude.ai\/code)\n- [GitHub Copilot](https:\/\/github.com\/features\/copilot)\n- [DeepSeek Harness](https:\/\/github.com\/deepseek-ai\/deepseek-harness)\n- [Gemini CLI](https:\/\/github.com\/google-gemini\/gemini-cli)\n- [Codex CLI](https:\/\/github.com\/openai\/codex)\n- [Grok Build](https:\/\/x.ai\/cli)\n- [Hermes Agent](https:\/\/hermes-agent.nousresearch.com)\n- [OpenCode](https:\/\/opencode.ai)\n- [Pi](https:\/\/pi.dev)\n- [Kiro](https:\/\/kiro.dev)\n- [Trae](https:\/\/trae.ai)\n- [Rovo Dev](https:\/\/www.atlassian.com\/software\/rovo)\n- [Qoder](https:\/\/qoder.com)\n- [Mistral Vibe](https:\/\/docs.mistral.ai\/vibe\/code\/overview)\n- [Veto](https:\/\/github.com\/oleg-koval\/veto)\n- [Google Antigravity](https:\/\/antigravity.google)\n\n## Community & Ecosystem\n\nJoin the community and ecosystem conversations:\n\n- GitHub Discussions: file bugs, request features, and help newcomers.\n- [Impeccable on npm](https:\/\/www.npmjs.com\/package\/impeccable): grab the CLI, follow releases, and star the package.\n- Follow @pbakaus on Twitter for release notes, sample lint reports, and video highlights of new rules.\n\n## Contributing\n\nSee [DEVELOP.md](docs\/DEVELOP.md) for contributor guidelines and build instructions.\n\n## License\n\nApache 2.0. See [LICENSE](LICENSE).\n\n---\n\nCreated by [Paul Bakaus](https:\/\/www.paulbakaus.com)","ai_share_github_readme_zh_cn_markdown":"# Impeccable\n\nAI \u7f16\u7801\u4ee3\u7406\u7684\u8bbe\u8ba1\u6307\u5357\u30021 \u4e2a\u6280\u80fd\u300123 \u6761\u547d\u4ee4\u3001\u5b9e\u65f6\u6d4f\u89c8\u5668\u8fed\u4ee3\uff0c\u4ee5\u53ca 61 \u6761\u786e\u5b9a\u6027\u68c0\u6d4b\u89c4\u5219\uff0c\u7528\u4e8e AI \u751f\u6210\u7684\u524d\u7aef\u8bbe\u8ba1\u3002\n\n> **\u5feb\u901f\u5f00\u59cb\uff1a** \u5728\u9879\u76ee\u6839\u76ee\u5f55\u8fd0\u884c `npx impeccable install`\uff0c\u7136\u540e\u5728 AI \u7f16\u7801\u5de5\u5177\u4e2d\u8fd0\u884c `\/impeccable init`\u3002\u5b8c\u6574\u6587\u6863\uff1a[impeccable.style](https:\/\/impeccable.style)\u3002\n\n## \u4e3a\u4ec0\u4e48\u9009\u62e9 Impeccable\uff1f\n\nAnthropic \u7684 [frontend-design](https:\/\/github.com\/anthropics\/skills\/tree\/main\/skills\/frontend-design) \u662f\u9996\u4e2a\u5e7f\u6cdb\u4f7f\u7528\u7684 Claude \u8bbe\u8ba1\u6280\u80fd\u3002Impeccable \u7531\u6b64\u53d1\u5c55\u800c\u6765\u3002\n\n\u6bcf\u4e2a\u6a21\u578b\u90fd\u57fa\u4e8e\u76f8\u540c\u7684 SaaS \u6a21\u677f\u8fdb\u884c\u8bad\u7ec3\u3002\u5982\u679c\u8df3\u8fc7\u8bbe\u8ba1\u6307\u5bfc\uff0c\u6bcf\u4e2a\u9879\u76ee\u90fd\u4f1a\u51fa\u73b0\u76f8\u540c\u7684\u4e00\u4e9b\u7279\u5f81\uff1a\u5168\u7528 Inter \u5b57\u4f53\u3001\u7d2b\u5230\u84dd\u7684\u6e10\u53d8\u3001\u5361\u7247\u5d4c\u5957\u5361\u7247\u3001\u5f69\u8272\u80cc\u666f\u4e0a\u7684\u7070\u8272\u6587\u5b57\u3001\u6bcf\u4e2a\u6807\u9898\u4e0a\u65b9\u90fd\u6709\u7684\u5706\u89d2\u65b9\u5f62\u56fe\u6807\u74e6\u7247\u3002\n\nImpeccable \u63d0\u4f9b\uff1a\n\n- **\u4e00\u6b21\u8bbe\u7f6e\u6d41\u7a0b\u3002** `\/impeccable init` \u5c06\u6301\u4e45\u7684\u4ea7\u54c1\u4e8b\u5b9e\u8bb0\u5f55\u5728 `PRODUCT.md` \u4e2d\uff0c\u4f7f\u540e\u7eed\u547d\u4ee4\u80fd\u591f\u4e86\u89e3\u53d7\u4f17\u3001\u76ee\u7684\u3001\u8fd0\u884c\u73af\u5883\u3001\u7ea6\u675f\u6761\u4ef6\u3001\u58f0\u97f3\u98ce\u683c\u548c\u8bc1\u636e\uff0c\u800c\u4e0d\u4f1a\u5c06\u8fd9\u4e9b\u4e8b\u5b9e\u4e0e\u8868\u9762\u89c6\u89c9\u65b9\u5411\u6df7\u6dc6\u3002\n- **23 \u6761\u547d\u4ee4\u3002** \u4e0e AI \u5171\u4eab\u7684\u8bbe\u8ba1\u8bcd\u6c47\uff1a`polish`\u3001`audit`\u3001`critique`\u3001`distill`\u3001`animate`\u3001`bolder`\u3001`quieter` \u7b49\u3002\n- **61 \u6761\u786e\u5b9a\u6027\u68c0\u6d4b\u89c4\u5219** \u52a0\u4e0a\u4ec5\u9650 LLM \u7684\u8bc4\u8bba\u68c0\u67e5\u3002CLI \u548c\u6d4f\u89c8\u5668\u6269\u5c55\u65e0\u9700 LLM \u548c API \u5bc6\u94a5\u5373\u53ef\u8fd0\u884c\u786e\u5b9a\u6027\u89c4\u5219\u3002\n\n## \u5305\u542b\u5185\u5bb9\n\n### \u6280\u80fd\uff1aimpeccable\n\n\u8be5\u6280\u80fd\u5b89\u88c5\u4e3a\u4e00\u6761\u547d\u4ee4\uff1a\n\n```bash\n\/impeccable <command> <target>\n```\n\n\u6bcf\u4e2a\u65b0\u9879\u76ee\u90fd\u4ece\u8fd9\u91cc\u5f00\u59cb\uff1a\n\n```bash\n\/impeccable init\n```\n\n`init` \u68c0\u67e5\u9879\u76ee\uff0c\u4ec5\u5c31\u6301\u4e45\u6027\u4ea7\u54c1\u4e8b\u5b9e\u7684\u5b9e\u8d28\u6027\u7f3a\u53e3\u63d0\u95ee\uff0c\u5e76\u64b0\u5199 `PRODUCT.md`\u3002\u8bbf\u5ba2\u6a21\u5f0f\u548c\u89c6\u89c9\u65b9\u5411\u7a0d\u540e\u4e3a\u6bcf\u4e2a\u754c\u9762\u5355\u72ec\u9009\u62e9\uff1b\u73b0\u6709\u6216\u65b0\u5efa\u7684\u89c6\u89c9\u7cfb\u7edf\u5355\u72ec\u8bb0\u5f55\u5728 `DESIGN.md` \u4e2d\u3002\n\n### 23 \u6761\u547d\u4ee4\n\n\u6240\u6709\u547d\u4ee4\u901a\u8fc7 `\/impeccable` \u8bbf\u95ee\uff1a\n\n| \u547d\u4ee4 | \u529f\u80fd |\n|---------|--------------|\n| `\/impeccable craft` | \u5e26\u89c6\u89c9\u8fed\u4ee3\u7684\u5b8c\u6574\u5148\u5f62\u540e\u5efa\u6d41\u7a0b |\n| `\/impeccable init` | \u4e00\u6b21\u6027\u8bbe\u7f6e\uff1a\u6536\u96c6\u6301\u4e45\u6027\u4ea7\u54c1\u4e0a\u4e0b\u6587\uff0c\u7f16\u5199 PRODUCT.md\uff0c\u914d\u7f6e\u5b9e\u65f6\u6a21\u5f0f\uff08\u5982\u9002\u7528\uff09\uff0c\u63a8\u8350\u540e\u7eed\u6b65\u9aa4 |\n| `\/impeccable document` | \u4ece\u73b0\u6709\u9879\u76ee\u4ee3\u7801\u751f\u6210\u6839\u7ea7 DESIGN.md |\n| `\/impeccable extract` | \u5c06\u53ef\u590d\u7528\u7ec4\u4ef6\u548c\u4ee4\u724c\u63d0\u53d6\u5230\u8bbe\u8ba1\u7cfb\u7edf |\n| `\/impeccable shape` | \u7f16\u5199\u4ee3\u7801\u524d\u89c4\u5212 UX\/UI |\n| `\/impeccable critique` | UX \u8bbe\u8ba1\u8bc4\u5ba1\uff1a\u5c42\u7ea7\u3001\u6e05\u6670\u5ea6\u3001\u60c5\u611f\u5171\u9e23 |\n| `\/impeccable audit` | \u8fd0\u884c\u6280\u672f\u8d28\u91cf\u68c0\u67e5\uff08\u65e0\u969c\u788d\u3001\u6027\u80fd\u3001\u54cd\u5e94\u5f0f\uff09 |\n| `\/impeccable polish` | \u6700\u7ec8\u68c0\u67e5\u3001\u8bbe\u8ba1\u7cfb\u7edf\u5bf9\u9f50\u4e0e\u53d1\u5e03\u5c31\u7eea |\n| `\/impeccable bolder` | \u653e\u5927\u5e73\u6de1\u7684\u8bbe\u8ba1 |\n| `\/impeccable quieter` | \u67d4\u548c\u8fc7\u4e8e\u5927\u80c6\u7684\u8bbe\u8ba1 |\n| `\/impeccable distill` | \u5265\u79bb\u81f3\u672c\u8d28 |\n| `\/impeccable harden` | \u9519\u8bef\u5904\u7406\u3001i18n\u3001\u6587\u672c\u6ea2\u51fa\u3001\u8fb9\u754c\u60c5\u51b5 |\n| `\/impeccable onboard` | \u9996\u6b21\u8fd0\u884c\u6d41\u7a0b\u3001\u7a7a\u72b6\u6001\u3001\u6fc0\u6d3b\u8def\u5f84 |\n| `\/impeccable animate` | \u6dfb\u52a0\u6709\u610f\u4e49\u7684\u52a8\u6548 |\n| `\/impeccable colorize` | \u5f15\u5165\u6218\u7565\u6027\u8272\u5f69 |\n| `\/impeccable typeset` | \u4fee\u590d\u5b57\u4f53\u9009\u62e9\u3001\u5c42\u7ea7\u3001\u5c3a\u5bf8 |\n| `\/impeccable layout` | \u4fee\u590d\u5e03\u5c40\u3001\u95f4\u8ddd\u3001\u89c6\u89c9\u8282\u594f |\n| `\/impeccable delight` | \u6dfb\u52a0\u4ee4\u4eba\u6109\u60a6\u7684\u65f6\u523b |\n| `\/impeccable overdrive` | \u6dfb\u52a0\u6280\u672f\u6027\u975e\u51e1\u6548\u679c |\n| `\/impeccable clarify` | \u6539\u8fdb\u4e0d\u6e05\u6670\u7684 UX \u6587\u6848 |\n| `\/impeccable adapt` | \u9488\u5bf9\u4e0d\u540c\u8bbe\u5907\u8fdb\u884c\u8c03\u6574 |\n| `\/impeccable optimize` | \u6027\u80fd\u6539\u8fdb |\n| `\/impeccable live` | \u89c6\u89c9\u53d8\u4f53\u6a21\u5f0f\uff1a\u5728\u6d4f\u89c8\u5668\u4e2d\u8fed\u4ee3\u5143\u7d20 |\n\n\u4f7f\u7528 `\/impeccable pin <command>` \u521b\u5efa\u72ec\u7acb\u5feb\u6377\u65b9\u5f0f\uff08\u4f8b\u5982\uff0c`pin audit` \u521b\u5efa `\/audit`\uff09\u3002\n\n#### \u4f7f\u7528\u793a\u4f8b\n\n```\n\/impeccable audit blog           # Audit blog hub + post pages\n\/impeccable critique landing     # UX design review\n\/impeccable polish settings      # Final pass before shipping\n\/impeccable harden checkout      # Add error handling + edge cases\n```\n\n\u6216\u76f4\u63a5\u4f7f\u7528 `\/impeccable` \u914d\u5408\u63cf\u8ff0\uff1a\n```\n\/impeccable redo this hero section\n```\n\n### \u53cd\u6a21\u5f0f\n\n\u8be5\u6280\u80fd\u5305\u542b\u4e86\u660e\u786e\u7684\u6307\u5bfc\uff0c\u544a\u8bc9\u60a8\u5e94\u8be5\u907f\u514d\u4ec0\u4e48\uff1a\n\n- \u4e0d\u8981\u4f7f\u7528\u8fc7\u5ea6\u4f7f\u7528\u7684\u5b57\u4f53\uff08Arial\u3001Inter\u3001\u7cfb\u7edf\u9ed8\u8ba4\u5b57\u4f53\uff09\n- \u4e0d\u8981\u5728\u5f69\u8272\u80cc\u666f\u4e0a\u4f7f\u7528\u7070\u8272\u6587\u5b57\n- \u4e0d\u8981\u4f7f\u7528\u7eaf\u9ed1\/\u7070\u8272\uff08\u4e00\u5b9a\u8981\u6dfb\u52a0\u8272\u8c03\uff09\n- \u4e0d\u8981\u628a\u6240\u6709\u4e1c\u897f\u90fd\u5305\u88c5\u5728\u5361\u7247\u4e2d\uff0c\u4e5f\u4e0d\u8981\u628a\u5361\u7247\u5d4c\u5957\u5728\u5361\u7247\u91cc\n- \u4e0d\u8981\u4f7f\u7528\u5f39\u8df3\/\u5f39\u6027\u7f13\u52a8\uff08\u8ba9\u4eba\u611f\u89c9\u8fc7\u65f6\uff09\n\n## \u5b9e\u9645\u6848\u4f8b\n\n\u8bbf\u95ee [Neo Mirai \u6848\u4f8b\u7814\u7a76](https:\/\/impeccable.style\/cases\/neo-mirai)\uff0c\u67e5\u770b\u4e00\u4e2a\u4f7f\u7528 Impeccable \u547d\u4ee4\u6539\u9020\u7684\u771f\u5b9e\u9879\u76ee\u7684\u524d\u540e\u5bf9\u6bd4\u6848\u4f8b\u7814\u7a76\u3002\n\n## \u5b89\u88c5\n\n\u8be5\u6280\u80fd\u672c\u8eab\u4e0d\u9700\u8981\u8fd0\u884c\u65f6\u3002\u6bcf\u4e2a\u6280\u80fd\u526f\u672c\u90fd\u4f1a\u9644\u5e26\u4e00\u4e2a\u5c0f\u578b\u7684\u542f\u52a8\u5668\uff08`scripts\/impeccable`\uff0cWindows \u7248\u4e3a `impeccable.cmd`\uff09\uff0c\u7528\u4e8e\u8fd0\u884c Impeccable \u5f15\u64ce\u2014\u2014\u4e00\u4e2a\u81ea\u5305\u542b\u7684\u4e8c\u8fdb\u5236\u6587\u4ef6\uff0c\u5b83\u4f4d\u4e8e\u542f\u52a8\u5668\u65c1\u8fb9\uff0c\u6216\u5728\u9996\u6b21\u8fd0\u884c\u65f6\u4e00\u6b21\u6027\u4e0b\u8f7d\u5230 `~\/.impeccable\/bin\/`\u3002\u53ea\u6709\u5728\u4f7f\u7528 `npx impeccable` \u5b89\u88c5\u5668\u65f6\u624d\u4f1a\u6d89\u53ca Node\uff0c\u5b83\u662f\u540c\u4e00\u4e8c\u8fdb\u5236\u6587\u4ef6\u7684\u5305\u88c5\u5c42\uff1b\u4e0b\u9762\u7684\u624b\u52a8\u5b89\u88c5\u548c Git \u9009\u9879\u65e0\u9700\u5b83\u3002\n\n### \u9009\u9879 1\uff1aCLI \u5b89\u88c5\u5668\uff08\u63a8\u8350\uff09\n\n\u5728\u9879\u76ee\u7684\u6839\u76ee\u5f55\u8fd0\u884c\uff1a\n\n```bash\nnpx impeccable install\n```\n\n\u8be5\u547d\u4ee4\u4f1a\u663e\u793a\u68c0\u6d4b\u5230\u7684 harness \u6587\u4ef6\u5939\u6216\u5df2\u5b89\u88c5\u7684 CLI\uff08\u4f8b\u5982 `~\/.claude`\u3001`~\/.codex`\u3001`~\/.grok`\u3001`~\/.hermes`\u3001`~\/.veto` \u6216\u9879\u76ee\u672c\u5730\u7684 `.cursor`\uff09\uff0c\u8ba9\u4f60\u4fdd\u7559\u68c0\u6d4b\u5230\u7684\u96c6\u5408\u6216\u81ea\u5b9a\u4e49 providers\uff0c\u7136\u540e\u8be2\u95ee\u662f\u5b89\u88c5\u5230\u5f53\u524d\u9879\u76ee\u8fd8\u662f\u5168\u5c40\u3002\u4f7f\u7528 `--providers=claude,codex,cursor,grok,hermes,veto` \u548c `--scope=project|global` \u53ef\u4ee5\u5728\u811a\u672c\u4e2d\u8df3\u8fc7\u8fd9\u4e9b\u9009\u62e9\u3002\u5728 Claude Code\u3001Cursor\u3001Codex\u3001GitHub Copilot \u548c Grok Build \u4e0a\uff0c\u5b83\u8fd8\u4f1a\u4e3a\u5f53\u524d\u9879\u76ee\u5b89\u88c5 provider-native hook \u6e05\u5355\u3002Veto \u4f1a\u5728 `~\/.veto\/skills\/` \u4e0b\u63a5\u6536\u6253\u5305\u7684 skill\uff0c\u4e14\u4e0d\u8fd0\u884c\u539f\u751f Impeccable \u7f16\u8f91\u94a9\u5b50\u3002\u652f\u6301 Cursor\u3001Claude Code\u3001Gemini CLI\u3001Codex CLI\u3001Grok Build\u3001Hermes Agent\u3001Veto \u4ee5\u53ca\u6240\u6709\u5176\u4ed6\u53d7\u652f\u6301\u7684\u5de5\u5177\u3002\u4e4b\u540e\u8bf7\u91cd\u65b0\u52a0\u8f7d harness\u3002\n\n\u5982\u9700\u5237\u65b0\u73b0\u6709\u5b89\u88c5\uff0c\u8bf7\u8fd0\u884c\uff1a\n\n```bash\nnpx impeccable update\n```\n\nCodex \u7528\u6237\u5e94\u5728\u5b89\u88c5\u6216\u66f4\u65b0\u540e\u6253\u5f00 `\/hooks`\uff0c\u5e76\u5728\u51fa\u73b0\u63d0\u793a\u65f6\u6279\u51c6\u9879\u76ee\u94a9\u5b50\u3002Codex \u901a\u8fc7\u94a9\u5b50\u5b9a\u4e49\u8ffd\u8e2a\u4fe1\u4efb\uff0c\u56e0\u6b64\u66f4\u6539 `.codex\/hooks.json` \u7684\u66f4\u65b0\u53ef\u80fd\u9700\u8981\u91cd\u65b0\u6279\u51c6\u3002Grok Build \u7528\u6237\u9700\u8981\u5728 `.grok\/hooks\/` \u811a\u672c\u8fd0\u884c\u4e4b\u524d\u6388\u4e88\u9879\u76ee\u6587\u4ef6\u5939\u4fe1\u4efb\uff08`\/hooks-trust` \u6216\u4f7f\u7528 `--trust` \u542f\u52a8\uff09\u3002\n\n\u6709\u5173\u7279\u5b9a harness \u7684\u4fe1\u4efb\u548c\u9a8c\u8bc1\u6b65\u9aa4\uff0c\u8bf7\u53c2\u9605[\u5728\u60a8\u7684 harness \u4e2d\u5141\u8bb8\u94a9\u5b50](https:\/\/impeccable.style\/docs\/hooks#allow-the-hook-in-your-harness)\u3002\n\n### \u9009\u9879 2\uff1aGit \u5b50\u6a21\u5757\n\n\u5bf9\u4e8e\u5e0c\u671b\u901a\u8fc7 Git \u4fdd\u6301 Impeccable \u4f9b\u5e94\u5546\u5316\u5e76\u66f4\u65b0\u7684\u56e2\u961f\uff0c\u53ef\u5c06\u6b64\u4ed3\u5e93\u6dfb\u52a0\u4e3a\u5b50\u6a21\u5757\uff0c\u5e76\u5c06\u7f16\u8bd1\u540e\u7684 provider build \u94fe\u63a5\u5230\u60a8\u7684 harness \u6587\u4ef6\u5939\u4e2d\uff1a\n\n```bash\ngit submodule add https:\/\/github.com\/pbakaus\/impeccable .impeccable\nnpx impeccable link --source=.impeccable --providers=claude,cursor\ngit add .gitmodules .impeccable .claude .cursor\ngit commit -m \"Add Impeccable skills\"\n```\n\n\u4f7f\u7528\u60a8\u9879\u76ee\u6240\u9700\u7684\u63d0\u4f9b\u5546\uff0c\u4f8b\u5982 `claude`\u3001`cursor`\u3001`gemini`\u3001`codex`\u3001`github`\u3001`grok`\u3001`hermes`\u3001`opencode`\u3001`pi`\u3001`qoder`\u3001`trae`\u3001`trae-cn`\u3001`rovo-dev`\u3001`vibe` \u6216 `veto`\u3002\u8be5\u547d\u4ee4\u4ece `.impeccable\/dist\/universal\/` \u94fe\u63a5\u5355\u4e2a\u6280\u80fd\u6587\u4ef6\u5939\uff0c\u5e76\u4fdd\u7559\u73b0\u6709\u7684\u771f\u5b9e\u6280\u80fd\u76ee\u5f55\u4e0d\u53d8\uff0c\u9664\u975e\u60a8\u4f20\u5165 `--force`\u3002\n\n```bash\ngit submodule update --remote .impeccable\nnpx impeccable link --source=.impeccable --providers=claude,cursor\n```\n\n### \u9009\u9879 3\uff1a\u63d2\u4ef6\u5b89\u88c5\n\n**VS Code \u4e2d\u7684 GitHub Copilot\uff1a**\n\n\u4ece Visual Studio Marketplace \u5b89\u88c5 [Impeccable](https:\/\/marketplace.visualstudio.com\/items?itemName=renaissance-geek.impeccable)\uff0c\u6216\u8fd0\u884c\uff1a\n\n```bash\ncode --install-extension renaissance-geek.impeccable\n```\n\n\u9700\u8981 VS Code 1.109.3+\u3001Copilot Chat \u8bbf\u95ee\u6743\u9650\u4ee5\u53ca\u53d7\u4fe1\u4efb\u7684\u672c\u5730\u5de5\u4f5c\u533a\u3002\u5728 Agent \u6a21\u5f0f\u4e0b\u6253\u5f00 Chat \u5e76\u5c1d\u8bd5 `\/impeccable polish`\u3002\u6b64\u7eaf\u6280\u80fd\u6269\u5c55\u4e0d\u4f1a\u5b89\u88c5\u81ea\u52a8\u94a9\u5b50\uff1b\u907f\u514d\u5728\u540c\u4e00\u5de5\u4f5c\u533a\/\u914d\u7f6e\u6587\u4ef6\u4e2d\u91cd\u590d\u5b89\u88c5 Impeccable \u6280\u80fd\u3002\u53c2\u9605 [VS Code \u5206\u53d1\u8be6\u60c5](docs\/VSCODE-EXTENSION.md)\u3002\n```bash\n\/plugin marketplace add pbakaus\/impeccable\n```\n\n> \u4ec5\u9650 Claude Code\u3002\u6dfb\u52a0\u5e02\u573a\u540e\uff0c\u6253\u5f00 `\/plugin` \u5e76\u4ece\u5217\u8868\u4e2d\u5b89\u88c5 Impeccable\u3002\n\n**Grok Build:**\n```bash\ngrok plugin install pbakaus\/impeccable#plugin --trust\n```\n\n> \u4ec5\u9650 Grok Build\u3002`#plugin` \u540e\u7f00\u5b89\u88c5\u7cbe\u7b80\u63d2\u4ef6\u5305\uff08skills\u3001agents \u548c hooks\uff09\uff0c\u800c\u975e\u5b8c\u6574 monorepo\u3002\u7136\u540e\u5728 Grok \u4f1a\u8bdd\u4e2d\u8fd0\u884c `\/impeccable init`\u3002\u901a\u8fc7 `npx impeccable install --providers=grok` \u7684\u9879\u76ee\u7ea7\u5b89\u88c5\u4e5f\u53ef\u7528\uff0c\u5e76\u5199\u5165 `.grok\/skills\/` \u52a0 `.grok\/hooks\/impeccable.json`\u3002\n\n### \u9009\u9879 4\uff1a\u4ece\u7f51\u7ad9\u4e0b\u8f7d\n\n\u8bbf\u95ee [impeccable.style](https:\/\/impeccable.style)\uff0c\u4e0b\u8f7d\u60a8\u5de5\u5177\u7684 ZIP \u6587\u4ef6\uff0c\u7136\u540e\u89e3\u538b\u5230\u60a8\u7684\u9879\u76ee\u4e2d\u3002\n\n### \u9009\u9879 5\uff1a\u4ece\u4ed3\u5e93\u590d\u5236\n\n**Cursor\uff1a**\n```bash\ncp -r dist\/cursor\/.cursor your-project\/\n```\n\n> **\u6ce8\u610f\uff1a** Cursor \u6280\u80fd\u9700\u8981\u8bbe\u7f6e\uff1a\n> 1. \u5728 Cursor \u8bbe\u7f6e \u2192 Beta \u4e2d\u5207\u6362\u5230 Nightly \u9891\u9053\n> 2. \u5728 Cursor \u8bbe\u7f6e \u2192 \u89c4\u5219\u4e2d\u542f\u7528 Agent Skills\n>\n> [\u4e86\u89e3\u66f4\u591a\u5173\u4e8e Cursor \u6280\u80fd\u7684\u4fe1\u606f](https:\/\/cursor.com\/docs\/context\/skills)\n\n**Claude Code\uff1a**\n```bash\n# Project-specific\ncp -r dist\/claude-code\/.claude your-project\/\n\n# Or global (applies to all projects)\ncp -r dist\/claude-code\/.claude\/* ~\/.claude\/\n```\n\n**OpenCode:**\n```bash\ncp -r dist\/opencode\/.opencode your-project\/\n```\n\n**DeepSeek Harness\uff1a**\n```bash\n# Project-specific\ncp -r dist\/dsh\/.dsh your-project\/\n\n# Or global (applies to all projects)\nmkdir -p \"${DSH_HOME:-$HOME\/.dsh}\/skills\"\ncp -r dist\/dsh\/.dsh\/skills\/* \"${DSH_HOME:-$HOME\/.dsh}\/skills\/\"\n```\n\nCLI \u4ec5\u5f53 `DSH_HOME` \u89e3\u6790\u5230\u60a8\u7684\u4e3b\u76ee\u5f55\u5185\uff08\u6216\u89e3\u6790\u5230\u4e3b\u76ee\u5f55\u672c\u8eab\uff09\u65f6\u624d\u4f1a\u9075\u5b88\u5b83\uff1b\u5426\u5219\u5b83\u4f7f\u7528 `~\/.dsh`\u3002\u4e3b\u76ee\u5f55\u5916\u7684\u624b\u52a8\u526f\u672c\u4e0d\u53d7 `impeccable install\/update` \u7ba1\u7406\u3002\n\n**Hermes Agent:**\n```bash\n# Global (applies to all projects; uses the active profile, or ~\/.hermes by default)\ncp -r dist\/hermes\/.hermes\/skills\/* \"${HERMES_HOME:-$HOME\/.hermes}\/skills\/\"\n\n# Or project-specific\ncp -r dist\/hermes\/.hermes your-project\/\n```\n\n> **\u6ce8\u610f\uff1a** Hermes \u5c06\u9879\u76ee\u672c\u5730\u7684\u6280\u80fd\u7f6e\u4e8e\u6309\u4ed3\u5e93\u7684\u4fe1\u4efb\u51b3\u7b56\u95e8\u63a7\u4e4b\u540e\uff08\u5b83\u4eec\u662f\u8fc7\u7a0b\u6587\u6863\uff0c\u56e0\u6b64\u4ece\u4efb\u4f55\u514b\u9686\u4ed3\u5e93\u81ea\u52a8\u52a0\u8f7d\u5b83\u4eec\u88ab\u89c6\u4e3a\u63d0\u793a\u6ce8\u5165\u5411\u91cf\uff09\u3002\u5728\u9879\u76ee\u8303\u56f4\u7684\u5b89\u88c5\u5b8c\u6210\u540e\uff0c\u4ece\u9879\u76ee\u6839\u76ee\u5f55\u8fd0\u884c\u4e00\u6b21 `hermes skills trust`\u3002\u5168\u5c40\u5b89\u88c5\u5230\u5f53\u524d\u6d3b\u8dc3\u7684 `$HERMES_HOME\/skills\/`\uff08\u6216\u672a\u8bbe\u7f6e\u65f6\u7684 `~\/.hermes\/skills\/`\uff09\u65e0\u9700\u4fe1\u4efb\u6b65\u9aa4\u5373\u53ef\u52a0\u8f7d\u3002`\/impeccable <command>` \u7136\u540e\u901a\u8fc7\u8be5\u6280\u80fd\u7684 Commands \u8868\u8fdb\u884c\u8def\u7531\uff1b\u8bbe\u8ba1\u94a9\u5b50\u4e0d\u4f1a\u5b89\u88c5\u5728 Hermes \u4e0a\uff08\u6ca1\u6709\u94a9\u5b50\u8868\u9762\uff09\u3002\n>\n> [\u8be6\u7ec6\u4e86\u89e3 Hermes \u6280\u80fd](https:\/\/hermes-agent.nousresearch.com\/docs\/user-guide\/features\/skills)\n\n**Pi\uff1a**\n```bash\ncp -r dist\/pi\/.pi your-project\/\n```\n\n**Gemini CLI\uff1a**\n```bash\ncp -r dist\/gemini\/.gemini your-project\/\n```\n\n> **\u6ce8\u610f\uff1a** Gemini CLI \u6280\u80fd\u9700\u8981\u8bbe\u7f6e\uff1a\n> 1. \u5b89\u88c5\u9884\u89c8\u7248\u672c\uff1a`npm i -g @google\/gemini-cli@preview`\n> 2. \u8fd0\u884c `\/settings` \u5e76\u542f\u7528\"\u6280\u80fd\"\n> 3. \u8fd0\u884c `\/skills list` \u4ee5\u9a8c\u8bc1\u5b89\u88c5\n>\n> [\u4e86\u89e3\u66f4\u591a\u5173\u4e8e Gemini CLI \u6280\u80fd\u7684\u4fe1\u606f](https:\/\/geminicli.com\/docs\/cli\/skills\/)\n\n**Codex CLI\uff1a**\n```bash\n# Project-local\ncp -r dist\/agents\/.agents your-project\/\nmkdir -p your-project\/.codex\ncp dist\/codex\/.codex\/hooks.json your-project\/.codex\/hooks.json\n\n# Or install the skill user-wide. Copy .codex\/hooks.json into each project\n# where you want the design hook to run.\nmkdir -p ~\/.agents\/skills\ncp -r dist\/agents\/.agents\/skills\/* ~\/.agents\/skills\/\n```\n\n> asset-producer \u5b50\u4ee3\u7406\u5d4c\u5957\u5728\u6280\u80fd\u81ea\u8eab\u7684 `agents\/` \u6587\u4ef6\u5939\u4e2d\uff0cCodex \u4f1a\u81ea\u52a8\u53d1\u73b0\u5b83\u3002\u65e0\u9700\u5355\u72ec\u7684 `.codex\/agents\/` \u526f\u672c\u3002\u56e0\u4e3a Codex \u4ece\u53d7\u4fe1\u4efb\u9879\u76ee\u914d\u7f6e\u65c1\u8fb9\u7684 `.codex\/hooks.json` \u53d1\u73b0\u94a9\u5b50\uff0c\u6240\u4ee5\u94a9\u5b50\u662f\u9879\u76ee\u672c\u5730\u7684\u3002\n\n**GitHub Copilot\uff1a**\n```bash\ncp -r dist\/github\/.github your-project\/\n```\n\n**Trae:**\n```bash\n# Trae China (domestic version)\ncp -r dist\/trae\/.trae-cn\/skills\/* ~\/.trae-cn\/skills\/\n\n# Trae International\ncp -r dist\/trae\/.trae\/skills\/* ~\/.trae\/skills\/\n```\n\n> **\u6ce8\u610f\uff1a** Trae \u6709\u4e24\u4e2a\u7248\u672c\uff0c\u914d\u7f6e\u6587\u4ef6\u76ee\u5f55\u4e0d\u540c\uff1a\n> - **Trae China**\uff1a`~\/.trae-cn\/skills\/`\n> - **Trae International**\uff1a`~\/.trae\/skills\/`\n>\n> \u590d\u5236\u540e\uff0c\u91cd\u542f Trae IDE \u4ee5\u6fc0\u6d3b\u6280\u80fd\u3002\n\n**Rovo Dev\uff1a**\n```bash\n# Project-specific\ncp -r dist\/rovo-dev\/.rovodev your-project\/\n\n# Or global (applies to all projects)\ncp -r dist\/rovo-dev\/.rovodev\/skills\/* ~\/.rovodev\/skills\/\n```\n\n**Qoder\uff1a**\n```bash\n# Project-specific\ncp -r dist\/qoder\/.qoder your-project\/\n\n# Or global (applies to all projects)\ncp -r dist\/qoder\/.qoder\/skills\/* ~\/.qoder\/skills\/\n```\n\n**Mistral Vibe:**\n```bash\n# Project-specific\ncp -r dist\/vibe\/.vibe your-project\/\n\n# Or global (applies to all projects)\ncp -r dist\/vibe\/.vibe\/skills\/* ~\/.vibe\/skills\/\n```\n\n**Grok \u6784\u5efa\uff1a**\n```bash\n# Project-specific\ncp -r dist\/grok\/.grok your-project\/\n\n# Or global (applies to all projects)\ncp -r dist\/grok\/.grok\/skills\/* ~\/.grok\/skills\/\n```\n\n> \u5efa\u8bae\u4f7f\u7528 `npx impeccable install --providers=grok` \u6216 `grok plugin install pbakaus\/impeccable#plugin --trust`\uff0c\u4ee5\u4fbf\u8bbe\u8ba1\u94a9\u5b50\u4e5f\u80fd\u5b89\u88c5\u3002\u9879\u76ee\u94a9\u5b50\u6bcf\u4e2a\u6587\u4ef6\u5939\u9700\u8981 `\/hooks-trust`\uff08\u6216 `--trust`\uff09\u4e00\u6b21\u3002\n\n**Google Antigravity:**\n```bash\n# Project-specific\ncp -r dist\/antigravity\/.agent your-project\/\n\n# Or global (applies to all projects)\nmkdir -p ~\/.gemini\/config\/skills\ncp -r dist\/antigravity\/.agent\/skills\/* ~\/.gemini\/config\/skills\/\n```\n\n## \u4f7f\u7528\u8bf4\u660e\n\n\u5b89\u88c5\u540e\uff0c\u6bcf\u4e2a\u547d\u4ee4\u90fd\u901a\u8fc7\u5355\u4e00 `\/impeccable` \u6280\u80fd\u8fd0\u884c\uff1a\n\n```\n\/impeccable audit        # Find issues\n\/impeccable polish       # Final cleanup\n\/impeccable distill      # Remove complexity\n\/impeccable critique     # Full design review\n```\n\n\u8f93\u5165 ``\/impeccable`` \u53ef\u5355\u72ec\u67e5\u770b\u5b8c\u6574\u547d\u4ee4\u5217\u8868\u3002\n\n\u5927\u591a\u6570\u547d\u4ee4\u63a5\u53d7\u4e00\u4e2a\u53ef\u9009\u53c2\u6570\uff0c\u7528\u4e8e\u805a\u7126\u7279\u5b9a\u533a\u57df\uff1a\n\n```\n\/impeccable audit the header\n\/impeccable polish the checkout form\n```\n\n\u5982\u679c\u67d0\u4e2a\u547d\u4ee4\u7ecf\u5e38\u4f7f\u7528\uff0c\u53ef\u4ee5\u7528 `\/impeccable pin audit` \u5c06\u5176\u56fa\u5b9a\uff0c\u4ece\u800c\u83b7\u5f97 `\/audit` \u4f5c\u4e3a\u72ec\u7acb\u5feb\u6377\u65b9\u5f0f\u3002\n\n**\u6ce8\u610f\uff1a** Codex \u5728\u6b64\u5904\u4f7f\u7528 skills\uff0c\u800c\u975e `\/prompts:` \u547d\u4ee4\u3002\u6253\u5f00 `\/skills` \u6216\u8f93\u5165 `$impeccable`\u3002\u4ed3\u5e93\u672c\u5730\u5b89\u88c5\u4f4d\u4e8e `.agents\/skills\/`\uff1b\u7528\u6237\u7ea7\u5b89\u88c5\u4f4d\u4e8e `~\/.agents\/skills\/`\u3002GitHub Copilot \u4f7f\u7528 `.github\/skills\/`\u3002\u5982\u679c\u65b0\u5b89\u88c5\u7684 skill \u6ca1\u6709\u51fa\u73b0\uff0c\u8bf7\u91cd\u542f\u8be5\u5de5\u5177\u3002\n\n## \u5c06 `.impeccable` \u6392\u9664\u5728 git \u4e4b\u5916\n\n\u8fd0\u884c\u547d\u4ee4\u65f6\uff0cImpeccable \u4f1a\u5728 `.impeccable\/` \u4e0b\u5199\u5165\u5de5\u4f5c\u6587\u4ef6\uff1a\u622a\u5c4f\u7684\u8bc4\u5ba1\u4e0e\u4f18\u5316\u3001\u5b9e\u65f6\u4f1a\u8bdd\u548c\u9884\u89c8\u72b6\u6001\u3001\u8fd0\u884c\u65f6\u7f13\u5b58\u4ee5\u53ca\u6309\u5f00\u53d1\u8005\u5212\u5206\u7684\u914d\u7f6e\u3002\u5176\u4e2d\u5927\u90e8\u5206\u662f\u4e34\u65f6\u6027\u7684\uff0c\u4e0d\u5e94\u63d0\u4ea4\uff0c\u800c\u5c11\u6570\u6587\u4ef6\u662f\u5171\u4eab\u7684\u9879\u76ee\u4ea7\u7269\uff0c\u5e94\u5f53\u7eb3\u5165\u4ed3\u5e93\u3002\u5c06\u4ee5\u4e0b\u4ee3\u7801\u5757\u6dfb\u52a0\u5230\u9879\u76ee\u7684 `.gitignore` \u4e2d\uff1a\n\n```gitignore\n# impeccable-ignore-start\n# Ephemeral output, runtime state, and per-dev overrides.\n# Unanchored: .impeccable may sit at the repo root or under a nested\n# workspace (apps\/web\/.impeccable\/...); anchored patterns would miss it.\n# Shared artifacts stay tracked: config.json, live\/config.json,\n# design.json, surfaces\/*.md, critique\/*.md.\n.impeccable\/config.local.json\n.impeccable\/hook.cache.json\n.impeccable\/hook.pending.json\n.impeccable\/*.png\n.impeccable\/review\/\n.impeccable\/questions\/\n.impeccable\/live\/server.json\n.impeccable\/live\/sessions\/\n.impeccable\/live\/previews\/\n.impeccable\/live\/annotations\/\n.impeccable\/live\/cache\/\n.impeccable\/live\/manual-edit-apply-transaction.json\n.impeccable\/live\/manual-edit-events.jsonl\n.impeccable\/live\/manual-edit-evidence\/\n.impeccable\/live\/pending-manual-edits.json\n.impeccable\/live\/deferred-svelte-component-accepts.json\n.impeccable\/live\/*.png\n# impeccable-ignore-end\n```\n\n\u8fd9\u4e9b\u5757\u5305\u88c5\u5728 `# impeccable-ignore-start` \/ `# impeccable-ignore-end` \u6807\u8bb0\u4e2d\uff0c\u4ee5\u4fbf\u60a8\u80fd\u591f\u8bc6\u522b\u5e76\u7a0d\u540e\u5237\u65b0\u3002\u6a21\u5f0f\u672a\u951a\u5b9a\u662f\u6709\u610f\u4e3a\u4e4b\uff1a\u5728 monorepo \u4e2d\uff0c\u6d3b\u52a8\u9879\u76ee\uff08\u53ca\u5176 `.impeccable\/` \u76ee\u5f55\uff09\u901a\u5e38\u4f4d\u4e8e\u5d4c\u5957\u7684\u5de5\u4f5c\u533a\u8def\u5f84\u4e0b\uff0c\u5982 `apps\/web\/`\uff0c\u800c\u6839\u76ee\u5f55\u951a\u5b9a\u7684\u6a21\u5f0f\u4f1a\u6f0f\u6389\u5b83\u3002\n\n**\u4fdd\u7559\u8ddf\u8e2a\u4ee5\u4e0b\u6587\u4ef6**\uff08\u5b83\u4eec\u662f\u5171\u4eab\u7684\u9879\u76ee\u4ea7\u7269\uff0c\u4e0d\u8981\u5c06\u5b83\u4eec\u6dfb\u52a0\u5230 `.gitignore`\uff09\uff1a\n\n- `.impeccable\/config.json`\uff08\u7edf\u4e00\u7684\u5171\u4eab\u914d\u7f6e\uff09\n- `.impeccable\/live\/config.json`\uff08\u5b9e\u65f6\u6a21\u5f0f\u6846\u67b6\u8fde\u63a5\uff09\n- `.impeccable\/design.json`\uff08\u5171\u4eab\u8bbe\u8ba1\u89c4\u8303\uff09\n- `.impeccable\/surfaces\/*.md`\uff08\u8def\u7531\u6216\u4ea7\u7269\u7684\u7279\u5b9a\u7b56\u7565\u548c\u65b9\u5411\u5951\u7ea6\uff09\n- `.impeccable\/critique\/*.md`\uff08\u5ba1\u67e5\u62a5\u544a\uff09\n\n\u5982\u679c\u67d0\u4e2a\u4e34\u65f6\u6587\u4ef6\uff08\u5982\u622a\u56fe `config.local.json`\uff09\u5728\u60a8\u6dfb\u52a0\u8be5\u5757\u4e4b\u524d\u5df2\u88ab\u63d0\u4ea4\uff0c`.gitignore` \u4e0d\u4f1a\u81ea\u52a8\u53d6\u6d88\u8ddf\u8e2a\u3002\u8fd0\u884c `git rm --cached <path>` \u53ef\u505c\u6b62\u8ddf\u8e2a\u8be5\u6587\u4ef6\u800c\u4e0d\u5220\u9664\u60a8\u7684\u672c\u5730\u526f\u672c\u3002\n\n## \u8bbe\u8ba1\u94a9\u5b50\n\n\u5728 Claude Code\u3001GitHub Copilot\u3001Codex\u3001Cursor \u548c Grok Build \u4e0a\uff0c`npx impeccable install` \u548c `npx impeccable update` \u4f1a\u968f\u6280\u80fd\u8d1f\u8f7d\u4e00\u8d77\u5b89\u88c5\u4e00\u4e2a\u63d0\u4f9b\u5546\u539f\u751f\u7684\u94a9\u5b50\u6e05\u5355\u3002\u94a9\u5b50\u8fd0\u884c Impeccable \u8bbe\u8ba1\u68c0\u6d4b\u5668\uff0c\u5bf9\u76f4\u63a5\u7684 UI \u6587\u4ef6\u7f16\u8f91\u8fdb\u884c\u68c0\u6d4b\uff0c\u5e76\u5c06\u7ed3\u679c\u53cd\u9988\u5230\u667a\u80fd\u4f53\u6d41\u7a0b\u4e2d\u3002Claude Code\u3001GitHub Copilot \u548c Codex \u5728\u7f16\u8f91\u540e\u5c55\u793a\u7ed3\u679c\uff08\u5e76\u5728\u652f\u6301\u7684\u60c5\u51b5\u4e0b\u5728 Stop \u65f6\u8fd0\u884c\u66f4\u6df1\u5165\u7684\u4f20\u9012\uff09\u3002Grok Build \u5728\u7f16\u8f91\u540e\u626b\u63cf\u4ee5\u9884\u70ed Stop\uff0c\u7136\u540e\u5728 Stop \u65f6\u5c55\u793a\u7ed3\u679c\uff1bPostToolUse stdout \u4e0d\u4f1a\u5230\u8fbe\u6a21\u578b\u3002Cursor \u5728\u4e0d\u826f\u7f16\u8f91\u63d0\u6848\u843d\u5730\u4e4b\u524d\u5c31\u5c06\u5176\u963b\u6b62\u3002\n\n\u5df2\u5b89\u88c5\u94a9\u5b50\u5c55\u793a\uff1a\n\n- Claude Code\uff1a`.claude\/settings.local.json`\uff08gitignored\uff0c\u672c\u673a\u4e13\u7528\uff09\u8fd0\u884c `${CLAUDE_PROJECT_DIR}\/.claude\/skills\/impeccable\/scripts\/impeccable hook`\u3002\u79fb\u5165\u5171\u4eab `settings.json` \u7684\u94a9\u5b50\u4f1a\u88ab\u5c31\u5730\u91c7\u7eb3\u3002\n- GitHub Copilot\uff1a`.github\/hooks\/impeccable.json`\uff08\u5df2\u63d0\u4ea4\uff0c\u7531 Copilot CLI \u548c\u4e91\u667a\u80fd\u4f53\u5171\u4eab\uff09\u8fd0\u884c `.github\/skills\/impeccable\/scripts\/impeccable hook`\u3002Copilot CLI \u5728\u6587\u4ef6\u4f4d\u4e8e\u4ed3\u5e93\u9ed8\u8ba4\u5206\u652f\u4e14\u6587\u4ef6\u5939\u53d7\u4fe1\u4efb\u540e\u6fc0\u6d3b\u5b83\u3002\n- Cursor\uff1a`.cursor\/hooks.json` \u8fd0\u884c `.cursor\/skills\/impeccable\/scripts\/impeccable hook-before-edit`\u3002\n- Codex\uff1a`.codex\/hooks.json` \u8fd0\u884c `.agents\/skills\/impeccable\/scripts\/impeccable hook`\uff0c\u5e26\u6709 `commandWindows` \u540c\u7ea7\u8c03\u7528 `impeccable.cmd`\uff08\u9488\u5bf9 cmd.exe\uff09\u3002\n- Grok Build\uff1a`.grok\/hooks\/impeccable.json` \u8fd0\u884c `.grok\/skills\/impeccable\/scripts\/impeccable hook`\u3002\u9700\u8981 `\/hooks-trust` \u6216 `--trust`\u3002\u7ed3\u679c\u5728 Stop \u65f6\u5230\u8fbe\u6a21\u578b\uff0c\u800c\u975e\u6bcf\u6b21\u7f16\u8f91\u540e\u3002\n\n\u6bcf\u4e2a\u547d\u4ee4\u90fd\u7ecf\u8fc7\u6280\u80fd `scripts\/` \u76ee\u5f55\u4e2d\u9644\u5e26\u7684\u542f\u52a8\u5668\uff08Windows \u4e0a\u4e3a `impeccable` \u6216 `impeccable.cmd`\uff09\uff0c\u8be5\u542f\u52a8\u5668\u53d7\u5230\u4fdd\u62a4\uff0c\u56e0\u6b64\u7f3a\u5c11\u542f\u52a8\u5668\u4f1a\u9759\u9ed8\u65e0\u64cd\u4f5c\u3002\u542f\u52a8\u5668\u8fd0\u884c\u968f\u5176\u4e00\u8d77\u63d0\u4f9b\u7684\u5f15\u64ce\u4e8c\u8fdb\u5236\u6587\u4ef6\uff0c\u6216\u4e00\u6b21\u6027\u4e0b\u8f7d\u56fa\u5b9a\u7248\u672c\u5230 `~\/.impeccable\/bin\/`\u3002\u94a9\u5b50\u6216\u6280\u80fd\u4e0d\u9700\u8981 Node \u6216\u5176\u4ed6\u8fd0\u884c\u65f6\u3002\n\n\u5728 Claude Code \u4e2d\uff0c\u5df2\u5b89\u88c5\u7684\u547d\u4ee4\u94a9\u5b50\u72ec\u7acb\u4e8e\u6a21\u578b\u5de5\u5177\u6279\u51c6\u8fd0\u884c\u3002\u56e0\u6b64\uff0c\u5373\u4f7f\u4f1a\u8bdd\u62d2\u7edd\u6a21\u578b\u7684\u542f\u52a8\u5668\u547d\u4ee4\uff0c\u7b2c\u4e00\u6b21\u7f16\u8f91\u6216 Stop \u4e8b\u4ef6\u4e5f\u53ef\u4ee5\u4e0b\u8f7d\u5e76\u7f13\u5b58\u5f15\u64ce\u3002\u5728\u65e0\u4eba\u503c\u5b88\u8fd0\u884c\u524d\u68c0\u67e5\u5df2\u5b89\u88c5\u7684\u94a9\u5b50\uff1b\u8981\u7981\u7528\u67d0\u6b21\u8fd0\u884c\u7684\u6240\u6709 Claude Code \u94a9\u5b50\uff0c\u8bf7\u4f20\u9012 `--settings '{\"disableAllHooks\": true}'`\u3002\u8bf7\u53c2\u9605 [Claude Code \u7684\u94a9\u5b50\u5b89\u5168\u6307\u5357](https:\/\/code.claude.com\/docs\/en\/hooks#security-considerations)\u3002\n\n\u5b89\u88c5\u7a0b\u5e8f\u4fdd\u7559\u65e0\u5173\u7684\u94a9\u5b50\u6761\u76ee\u548c\u8bbe\u7f6e\u3002\u5982\u679c\u94a9\u5b50\u6e05\u5355\u683c\u5f0f\u4e0d\u6b63\u786e\uff0c\u5b89\u88c5\/\u66f4\u65b0\u9ed8\u8ba4\u4f1a\u4e2d\u6b62\uff1b\u4f7f\u7528 `--force` \u91cd\u65b0\u8fd0\u884c\u53ef\u5c06\u683c\u5f0f\u9519\u8bef\u7684\u6587\u4ef6\u5907\u4efd\u4e3a `.bak` \u5e76\u66ff\u6362\u5b83\u3002\n\n\u5728\u4ea4\u4e92\u5f0f `install`\/`update` \u4e0a\uff0cImpeccable \u4f1a\u89e3\u91ca\u8be5\u94a9\u5b50\u5e76\u63d0\u4f9b\u5b89\u88c5\u9009\u9879\uff08\u9ed8\u8ba4\u662f\uff09\u3002\u60a8\u7684\u9009\u62e9\u4f1a\u6309\u5f00\u53d1\u8005\u8bb0\u5f55\u5728 gitignored `.impeccable\/config.local.json` \u4e2d\uff0c\u56e0\u6b64\u4e0d\u4f1a\u518d\u6b21\u8be2\u95ee\uff1b`--no-hooks` \u8df3\u8fc7\u8be5\u8fd0\u884c\u800c\u4e0d\u8bb0\u5f55\u4efb\u4f55\u5185\u5bb9\u3002\u94a9\u5b50\u751f\u547d\u5468\u671f\u8bbe\u7f6e\u4f4d\u4e8e `.impeccable\/config.json` \u7684 `hook` \u952e\u4e0b\uff1b\u68c0\u6d4b\u5668\u7684\u5b9e\u65f6\u8bbe\u7f6e\u5728 `npx impeccable detect` \u548c `\/impeccable hooks` \u5171\u4eab\u7684 `detector` \u4e0b\u3002\n\n\u5bf9\u4e8e\u8c03\u8bd5\uff0c\u8bf7\u5728 `.impeccable\/config.json` \u4e2d\u8bbe\u7f6e `hook.auditLog` \u4e3a\u67d0\u4e2a\u8def\u5f84\uff08\u6216\u9057\u7559\u7684 `IMPECCABLE_HOOK_LOG` \u73af\u5883\u53d8\u91cf\uff09\uff0c\u4ee5\u5199\u5165\u6bcf\u6b21\u94a9\u5b50\u8c03\u7528\u7684\u4e00\u4e2a NDJSON \u884c\u3002\u6b63\u5e38\u4f7f\u7528\u65f6\u4fdd\u6301\u672a\u8bbe\u7f6e\u3002\n\n## \u6784\u5efa\u8def\u5f84\uff1acomp-first \u6216 code-first\n\n\u5f53\u8bbe\u8ba1\u65b0\u754c\u9762\u65f6\uff0cImpeccable \u8981\u4e48\u5148\u751f\u6210\u9ad8\u4fdd\u771f comp \u7136\u540e\u636e\u6b64\u6784\u5efa\uff0c\u8981\u4e48\u76f4\u63a5\u5728\u4ee3\u7801\u4e2d\u6784\u5efa\u5e76\u5c06\u91ce\u5fc3\u5199\u5165\u5f00\u53d1\u4e13\u7528\u65b9\u5411\u5951\u7ea6\uff08\u4f4d\u4e8e\u754c\u9762\u7b80\u62a5\u4e2d\uff09\uff0c\u5728\u7ed3\u675f\u65f6\u8fdb\u884c\u68c0\u67e5\u3002Comp-first \u66f4\u5927\u80c6\u4f46\u8017\u65f6\u66f4\u957f\uff1bcode-first \u66f4\u7cbe\u7b80\u4f46\u66f4\u5feb\u3002`\/impeccable init` \u8be2\u95ee\u4e00\u6b21\u5e76\u5c06\u7b54\u6848\u8bb0\u5f55\u4e3a `buildPath`\uff08\u4f4d\u4e8e `.impeccable\/config.json` \u4e2d\uff09\uff1a\n\n```json\n{ \"buildPath\": \"comp\" }\n```\n\n\u8fd9\u4e9b\u503c\u662f `comp` \u548c `code`\uff0c\u9664\u6b64\u4e4b\u5916\u4e0d\u4f1a\u8bfb\u53d6\u4efb\u4f55\u5185\u5bb9\u3002\u5c06\u5176\u8bbe\u7f6e\u5728 gitignored \u7684 `.impeccable\/config.local.json` \u4e2d\u53ef\u4ee5\u8986\u76d6\u56e2\u961f\u5728\u67d0\u4e00\u53f0\u673a\u5668\u4e0a\u63d0\u4ea4\u7684\u503c\uff0c\u8fd9\u5c31\u662f\u4f60\u7684\u6d4b\u8bd5\u73af\u5883\u6ca1\u6709\u56fe\u50cf\u751f\u6210\u529f\u80fd\u65f6\u6240\u9700\u8981\u7684\u3002\u5728 monorepo \u4e2d\uff0c\u53ea\u9700\u5728\u4ed3\u5e93\u6839\u76ee\u5f55\u63d0\u4ea4\u4e00\u6b21\uff0c\u4efb\u4f55\u60f3\u8981\u4f7f\u7528\u5176\u4ed6\u503c\u7684 workspace \u90fd\u53ef\u4ee5\u8bbe\u7f6e\u81ea\u5df1\u7684\u3002\u8fd9\u4e9b\u9009\u9879\u4ec5\u5728\u6709\u56fe\u50cf\u751f\u6210\u529f\u80fd\u7684\u5730\u65b9\u51fa\u73b0\uff0c\u56e0\u4e3a\u6ca1\u6709\u5b83\u5c31\u6ca1\u6709\u4ec0\u4e48\u9700\u8981\u7ec4\u5408\u7684\u3002\n\n\u4f60\u65e0\u9700\u5728\u4e3a\u65e9\u4e8e\u8be5\u8bbe\u7f6e\u7684\u65e7\u9879\u76ee\u91cd\u65b0\u8fd0\u884c `init` \u6765\u8bbe\u7f6e\u5b83\uff0c\u4e5f\u65e0\u9700\u624b\u52a8\u7f16\u8f91\u6587\u4ef6\u3002\u8bb0\u5f55\u7684\u503c\u53ea\u662f\u4e00\u4e2a\u9ed8\u8ba4\u503c\u800c\u975e\u9501\u5b9a\uff1a\u6bcf\u4e2a\u51b3\u7b56\u9875\u9762\u90fd\u6709\u4e00\u4e2a\u9875\u811a\u5207\u6362\u5f00\u5173\uff0c\u7ffb\u8f6c\u5b83\u53ea\u4f1a\u7ed1\u5b9a\u8be5\u6b21\u4f1a\u8bdd\u3002\u5728\u4e00\u4e2a\u6ca1\u6709\u8bb0\u5f55\u4efb\u4f55\u5185\u5bb9\u7684\u9879\u76ee\u4e0a\u7ffb\u8f6c\u5b83\uff0cImpeccable \u4f1a\u5728\u8f6e\u6b21\u7ed3\u675f\u540e\u8be2\u95ee\u4e00\u6b21\u662f\u5426\u4fdd\u7559\u5b83\uff0c\u7136\u540e\u5199\u5165\u4f60\u7684\u7b54\u6848\u3002\u8fd9\u5c31\u662f\u73b0\u6709\u9879\u76ee\u7684\u5b8c\u6574\u8fc1\u79fb\u8def\u5f84\uff1a\u5f53\u9ed8\u8ba4\u503c\u4e0d\u5bf9\u65f6\u4f7f\u7528\u5207\u6362\u5f00\u5173\uff0c\u7136\u540e\u56de\u7b54\u968f\u4e4b\u800c\u6765\u7684\u95ee\u9898\u3002\n\nCodex \u9700\u8981\u4e00\u4e2a Impeccable \u65e0\u6cd5\u5b89\u5168\u8df3\u8fc7\u5e73\u53f0\u6b65\u9aa4\uff1a\u5b89\u88c5\u6216\u66f4\u65b0\u540e\u6253\u5f00 `\/hooks`\uff0c\u7136\u540e\u6279\u51c6\u9879\u76ee hook\u3002\u6b64 hook \u6ca1\u6709 Codex marketplace\/plugin \u5b89\u88c5\u6d41\u7a0b\u3002\n\n\u5b8c\u6574 hook \u6587\u6863\uff1a[impeccable.style\/docs\/hooks](https:\/\/impeccable.style\/docs\/hooks)\u3002\n\nStop \u901a\u9053\u4f1a\u5728\u6709\u7ecf\u9a8c\u8bc1\u7684\u7f16\u8f91\u524d\u57fa\u51c6\u7ebf\u53ef\u7528\u65f6\uff08\u76ee\u524d\u662f Claude Edit\/Write \u6587\u672c\u626b\u63cf\u7ed3\u679c\uff09\u538b\u5236\u5df2\u786e\u8ba4\u7684\u65e2\u6709\u53d1\u73b0\u3002\u5176\u4ed6\u53d1\u73b0\u4f1a\u6807\u8bb0\u4e3a\u65b0\u53d1\u73b0\u6216\u5f52\u5c5e\u672a\u77e5\uff1b\u672a\u77e5\u5e76\u4e0d\u610f\u5473\u7740\u4f60\u7684\u4f1a\u8bdd\u5bfc\u81f4\u4e86\u95ee\u9898\u3002\u663e\u5f0f\u7684 `detect` \u626b\u63cf\u4fdd\u6301\u4e0d\u53d8\u3002\n\n\u624b\u52a8\u590d\u5236\u547d\u4ee4\u662f\u5907\u7528\/\u8c03\u8bd5\u8bf4\u660e\u3002\u6b63\u5e38\u6d41\u7a0b\u662f\uff1a\n\n```bash\nnpx impeccable install\nnpx impeccable update\n```\n\n## \u5b9e\u65f6\u6a21\u5f0f\u4e0e\u751f\u4ea7\u7ad9\u70b9\n\n\u5b9e\u65f6\u6a21\u5f0f\u901a\u8fc7\u5f00\u53d1\u670d\u52a1\u5668\u6216\u672c\u5730\u9759\u6001 HTML \u7f16\u8f91\u672c\u5730\u4ee3\u7801\u68c0\u51fa\u3002\u5c06\u672c\u5730\u7684 localhost HTTP \u8f85\u52a9\u7a0b\u5e8f\u6ce8\u5165\u5df2\u90e8\u7f72\u7684\u751f\u4ea7\u7ad9\u70b9\uff08\u5305\u62ec HTTPS \u7ad9\u70b9\uff09\u4e0d\u53d7\u652f\u6301\u3002\u8bf7\u52ff\u7981\u7528\u6d4f\u89c8\u5668\u5b89\u5168\u529f\u80fd\u6216\u524a\u5f31\u751f\u4ea7\u73af\u5883\u7684 CSP \u6765\u4f7f\u5176\u5de5\u4f5c\u3002\n\n\u4ec5\u5728\u4f60\u4fe1\u4efb\u7684\u672c\u5730\u9879\u76ee\u4e2d\u4f7f\u7528\u7684\u9879\u76ee\u4e2d\u4f7f\u7528\u5b9e\u65f6\u6a21\u5f0f\u3002\u5e94\u7528\u6587\u6848\u7f16\u8f91\u4f1a\u81ea\u52a8\u5728 shell \u4e2d\u4ee5\u4f60\u7684\u7528\u6237\u6743\u9650\u8fd0\u884c `package.json` \u7684\u53ef\u9009 `scripts[\"impeccable:manual-edit-validate\"]` \u547d\u4ee4\uff1b\u5728\u4e0d\u719f\u6089\u7684\u4ee3\u7801\u68c0\u51fa\u4e2d\u4f7f\u7528\u5b9e\u65f6\u6a21\u5f0f\u524d\uff0c\u8bf7\u5148\u5ba1\u67e5\u8be5\u811a\u672c\u3002\n\n\u5bf9\u4e8e\u751f\u4ea7\u73af\u5883\u68c0\u67e5\uff0c\u8bf7\u4f7f\u7528 `npx impeccable detect https:\/\/example.com` \u6216\u6d4f\u89c8\u5668\u6269\u5c55\u3002\u8fd9\u4e9b\u5de5\u5177\u4f1a\u68c0\u67e5\u5df2\u6e32\u67d3\u7684\u9875\u9762\uff1b\u5b83\u4eec\u4e0d\u63d0\u4f9b\u5b9e\u65f6\u53d8\u4f53\u7f16\u8f91\u6216\u5c06\u81ea\u5df1\u7684\u6e90\u4ee3\u7801\u5199\u56de\u6e90\u6587\u4ef6\u3002\n\n## CLI\n\nImpeccable \u5305\u542b\u4e00\u4e2a\u72ec\u7acb\u7684 CLI\uff0c\u7528\u4e8e\u5728\u4e0d\u4f7f\u7528 AI \u5de5\u5177\u7684\u60c5\u51b5\u4e0b\u68c0\u6d4b\u53cd\u6a21\u5f0f\u3002`npx impeccable` \u662f\u4e00\u4e2a\u5c0f\u578b\u57ab\u7247\uff0c\u7528\u4e8e\u8fd0\u884c\u8be5\u6280\u80fd\u4f7f\u7528\u7684\u76f8\u540c\u5f15\u64ce\u4e8c\u8fdb\u5236\u6587\u4ef6\uff08\u4f5c\u4e3a\u5e73\u53f0\u7279\u5b9a\u7684\u53ef\u9009\u4f9d\u8d56\u9879\u5b89\u88c5\uff0c\u6216\u4e00\u6b21\u6027\u83b7\u53d6\u5230 `~\/.impeccable\/bin\/`\uff09\uff1bNode \u4ec5\u7528\u4e8e `npx` \u672c\u8eab\uff0c\u4f60\u4e5f\u53ef\u4ee5\u76f4\u63a5\u4e0b\u8f7d\u4e8c\u8fdb\u5236\u6587\u4ef6\u5e76\u5c06\u5176\u653e\u5165\u4f60\u7684 PATH \u4e2d\u3002\n\n```bash\nnpx impeccable detect src\/                   # scan a directory\nnpx impeccable detect index.html             # scan an HTML file\nnpx impeccable detect https:\/\/example.com    # scan a URL (uses an installed Chrome, Chromium, or Edge)\nnpx impeccable detect --json .               # CI-friendly JSON output\nnpx impeccable detect --no-config src\/       # raw scan, ignoring project config\/context\nnpx impeccable ignores list                  # show detector ignores\nnpx impeccable ignores add-file \"src\/legacy\/**\"\nnpx impeccable ignores add-value overused-font Inter --reason \"Brand font\"\n```\n\n\u68c0\u6d4b\u5668\u53ef\u53d1\u73b0 AI \u5783\u573e\u5185\u5bb9\uff08\u4fa7\u8fb9\u6807\u7b7e\u8fb9\u6846\u3001\u7d2b\u8272\u6e10\u53d8\u3001\u5f39\u8df3\u7f13\u52a8\u3001\u6df1\u8272\u5149\u6655\uff09\u548c\u901a\u7528\u8bbe\u8ba1\u8d28\u91cf\uff08\u884c\u957f\u5ea6\u3001\u7d27\u51d1\u95f4\u8ddd\u3001\u5c0f\u89e6\u6478\u76ee\u6807\u3001\u9057\u6f0f\u6807\u9898\u7b49\uff09\u4e2d\u7684 61 \u4e2a\u786e\u5b9a\u6027\u95ee\u9898\u548c\u66f4\u591a\u3002\n\n\u4eba\u7c7b\u53ef\u8bfb\u7684\u8bca\u65ad\u7ed3\u679c\u4f1a\u5199\u5165 stderr\uff0c\u56e0\u6b64\u8bf7\u4f7f\u7528 `2> findings.txt` \u8fdb\u884c\u91cd\u5b9a\u5411\u3002`--json` \u7528\u4e8e stdout \u4e0a\u7684\u673a\u5668\u53ef\u8bfb\u7ed3\u679c\u3002\u9000\u51fa\u7801 `0` \u8868\u793a\u626b\u63cf\u5b8c\u6210\u4e14\u65e0\u4e3b\u8981\u53d1\u73b0\uff0c\u9000\u51fa\u7801 `2` \u8868\u793a\u626b\u63cf\u5b8c\u6210\u4e14\u6709\u4e3b\u8981\u53d1\u73b0\uff0c\u9000\u51fa\u7801 `1` \u8868\u793a\u65e0\u6cd5\u626b\u63cf\u81f3\u5c11\u4e00\u4e2a\u8bf7\u6c42\u7684\u76ee\u6807\uff1b\u64cd\u4f5c\u5931\u8d25\u5728\u90e8\u5206\u591a\u76ee\u6807\u626b\u63cf\u4e2d\u4f18\u5148\u3002URL \u626b\u63cf\u68c0\u67e5\u6e32\u67d3\u540e\u7684 DOM\u3001\u8ba1\u7b97\u5e03\u5c40\u548c\u53ef\u8bbf\u95ee\u7684\u94fe\u63a5\u6837\u5f0f\u8868\uff1b\u6d4f\u89c8\u5668\u5b89\u5168\u673a\u5236\u4ecd\u7136\u963b\u6b62\u8bfb\u53d6\u8de8\u57df CSS\uff08\u65e0 CORS\uff09\u3002\u68c0\u6d4b\u5668\u7684\u5e72\u51c0\u8fd0\u884c\u662f\u8bc1\u636e\uff0c\u800c\u975e\u89c6\u89c9\u6216\u53ef\u8bbf\u95ee\u6027\u8d28\u91cf\u7684\u8bc1\u660e\uff1a\u5b83\u4e0d\u80fd\u66ff\u4ee3\u5728\u76f8\u5173\u89c6\u53e3\u4e2d\u68c0\u67e5\u6e32\u67d3\u540e\u7684\u4f53\u9a8c\u3002\n\n\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c`detect` \u9075\u5faa\u4e0e\u8bbe\u8ba1\u94a9\u5b50\u76f8\u540c\u7684 `.impeccable\/config.json` \u548c `.impeccable\/config.local.json` \u68c0\u6d4b\u5668\u914d\u7f6e\uff1a`detector.ignoreRules`\u3001`detector.ignoreFiles`\u3001`detector.ignoreValues` \u548c `detector.designSystem.enabled`\u3002\u94a9\u5b50\u751f\u547d\u5468\u671f\u8bbe\u7f6e\uff08\u5982 `hook.enabled`\uff09\u4ec5\u5f71\u54cd\u81ea\u52a8\u94a9\u5b50\u6267\u884c\u3002\n\n\u5bf9\u4e8e\u5e94\u968f\u5355\u4e2a\u6587\u4ef6\u800c\u975e\u4ed3\u5e93\u914d\u7f6e\u79fb\u52a8\u7684\u8c41\u514d\u89c4\u5219\uff0c\u8bf7\u5728\u6587\u4ef6\u4e2d\u6dfb\u52a0\u5185\u8054\u6ce8\u91ca\uff1a`<!-- impeccable-disable overused-font: exported brand doc -->`\u3002\u8be5\u6807\u8bb0\u53ef\u5728\u4efb\u4f55\u6ce8\u91ca\u8bed\u6cd5\u4e2d\u4f7f\u7528\uff0c\u4f5c\u7528\u4e8e\u6574\u4e2a\u6587\u4ef6\uff08\u6216\u4f7f\u7528 `impeccable-disable-line` \/ `impeccable-disable-next-line` \u4f5c\u7528\u4e8e\u5355\u884c\uff09\uff0c\u5e76\u53ef\u88ab `--no-inline-ignores` \u6216 `--no-config` \u7ed5\u8fc7\u3002\n\n\u5b8c\u6574\u68c0\u6d4b\u5668\u6587\u6863\uff1a[impeccable.style\/docs\/detector](https:\/\/impeccable.style\/docs\/detector)\u3002\n\n## \u652f\u6301\u7684\u5de5\u5177\n\n- [Cursor](https:\/\/cursor.com)\n- [Claude Code](https:\/\/claude.ai\/code)\n- [GitHub Copilot](https:\/\/github.com\/features\/copilot)\n- [DeepSeek Harness](https:\/\/github.com\/deepseek-ai\/deepseek-harness)\n- [Gemini CLI](https:\/\/github.com\/google-gemini\/gemini-cli)\n- [Codex CLI](https:\/\/github.com\/openai\/codex)\n- [Grok Build](https:\/\/x.ai\/cli)\n- [Hermes Agent](https:\/\/hermes-agent.nousresearch.com)\n- [OpenCode](https:\/\/opencode.ai)\n- [Pi](https:\/\/pi.dev)\n- [Kiro](https:\/\/kiro.dev)\n- [Trae](https:\/\/trae.ai)\n- [Rovo Dev](https:\/\/www.atlassian.com\/software\/rovo)\n- [Qoder](https:\/\/qoder.com)\n- [Mistral Vibe](https:\/\/docs.mistral.ai\/vibe\/code\/overview)\n- [Veto](https:\/\/github.com\/oleg-koval\/veto)\n- [Google Antigravity](https:\/\/antigravity.google)\n\n## \u793e\u533a\u4e0e\u751f\u6001\u7cfb\u7edf\n\n\u52a0\u5165\u793e\u533a\u548c\u751f\u6001\u7cfb\u7edf\u8ba8\u8bba\uff1a\n\n- GitHub Discussions\uff1a\u63d0\u4ea4 Bug\u3001\u8bf7\u6c42\u529f\u80fd\uff0c\u5e76\u5e2e\u52a9\u65b0\u624b\u3002\n- [Impeccable on npm](https:\/\/www.npmjs.com\/package\/impeccable)\uff1a\u83b7\u53d6 CLI\u3001\u5173\u6ce8\u53d1\u5e03\u52a8\u6001\uff0c\u5e76\u4e3a\u9879\u76ee\u70b9\u661f\u3002\n- \u5728 Twitter \u4e0a\u5173\u6ce8 @pbakaus\uff0c\u83b7\u53d6\u53d1\u5e03\u8bf4\u660e\u3001\u793a\u4f8b lint \u62a5\u544a\u548c\u65b0\u89c4\u5219\u89c6\u9891\u6f14\u793a\u3002\n\n## \u8d21\u732e\n\n\u53c2\u89c1 [DEVELOP.md](docs\/DEVELOP.md) \u4e86\u89e3\u8d21\u732e\u6307\u5357\u548c\u6784\u5efa\u8bf4\u660e\u3002\n\n## \u8bb8\u53ef\u8bc1\n\nApache 2.0\u3002\u53c2\u89c1 [LICENSE](LICENSE)\u3002\n\n---\n\n\u7531 [Paul Bakaus](https:\/\/www.paulbakaus.com) \u521b\u5efa","ai_share_github_readme_zh_cn_source_hash":"2466dc01a2936d4bc43af80ffe2ee3d953ffff3811c3dab59f0b49ede8972060","ai_share_github_readme_zh_cn_generated_at":"2026-09-10T05:08:29+00:00","ai_share_github_readme_zh_cn_provider":"OpenClaw \/ minimax\/MiniMax-M2.7"},"categories":[2460],"tags":[160,157,1029,158,146,159],"ai_series":[],"ai_topic":[94],"ai_creator":[717],"ai_collection":[409],"ai_resource_type":[105],"ai_tool_tag":[165,162,961,152,164,163],"class_list":["post-67","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-workflow_skill_pack","tag-ui","tag-157","tag-1029","tag-158","tag-146","tag-159","ai_topic-design-creative","ai_creator-pbakaus","ai_collection-409","ai_resource_type-workflow_skill_pack","ai_tool_tag-ui","ai_tool_tag-162","ai_tool_tag-961","ai_tool_tag-152","ai_tool_tag-164","ai_tool_tag-163"],"source_url":"","preserve_modified":false,"lang":"zh-cn","translations":{"zh-cn":67,"en":4144},"pll_sync_post":{},"_links":{"self":[{"href":"https:\/\/ai.wuaishare.cn\/hub\/wp-json\/wp\/v2\/posts\/67","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ai.wuaishare.cn\/hub\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ai.wuaishare.cn\/hub\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ai.wuaishare.cn\/hub\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ai.wuaishare.cn\/hub\/wp-json\/wp\/v2\/comments?post=67"}],"version-history":[{"count":61,"href":"https:\/\/ai.wuaishare.cn\/hub\/wp-json\/wp\/v2\/posts\/67\/revisions"}],"predecessor-version":[{"id":5218,"href":"https:\/\/ai.wuaishare.cn\/hub\/wp-json\/wp\/v2\/posts\/67\/revisions\/5218"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ai.wuaishare.cn\/hub\/wp-json\/wp\/v2\/media\/5154"}],"wp:attachment":[{"href":"https:\/\/ai.wuaishare.cn\/hub\/wp-json\/wp\/v2\/media?parent=67"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ai.wuaishare.cn\/hub\/wp-json\/wp\/v2\/categories?post=67"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ai.wuaishare.cn\/hub\/wp-json\/wp\/v2\/tags?post=67"},{"taxonomy":"ai_series","embeddable":true,"href":"https:\/\/ai.wuaishare.cn\/hub\/wp-json\/wp\/v2\/ai_series?post=67"},{"taxonomy":"ai_topic","embeddable":true,"href":"https:\/\/ai.wuaishare.cn\/hub\/wp-json\/wp\/v2\/ai_topic?post=67"},{"taxonomy":"ai_creator","embeddable":true,"href":"https:\/\/ai.wuaishare.cn\/hub\/wp-json\/wp\/v2\/ai_creator?post=67"},{"taxonomy":"ai_collection","embeddable":true,"href":"https:\/\/ai.wuaishare.cn\/hub\/wp-json\/wp\/v2\/ai_collection?post=67"},{"taxonomy":"ai_resource_type","embeddable":true,"href":"https:\/\/ai.wuaishare.cn\/hub\/wp-json\/wp\/v2\/ai_resource_type?post=67"},{"taxonomy":"ai_tool_tag","embeddable":true,"href":"https:\/\/ai.wuaishare.cn\/hub\/wp-json\/wp\/v2\/ai_tool_tag?post=67"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}