[{"data":1,"prerenderedAt":3803},["ShallowReactive",2],{"navigation":3,"\u002Fadvanced\u002Fskills":189,"\u002Fadvanced\u002Fskills-surround":3798},[4,35,57,75,101,123,149,171],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":34},"第 1 章：认识 Claude Code","i-lucide-rocket","\u002Fintro","1.intro",[10,14,18,22,26,30],{"title":11,"path":12,"stem":13},"什么是 Claude Code","\u002Fintro\u002Fwhat-is-claude-code","1.intro\u002F1.what-is-claude-code",{"title":15,"path":16,"stem":17},"Claude Code 与 Copilot、Cursor、Windsurf 的本质区别","\u002Fintro\u002Fvs-competitors","1.intro\u002F2.vs-competitors",{"title":19,"path":20,"stem":21},"AI 编程助手生态全景与选型指南","\u002Fintro\u002Fecosystem-guide","1.intro\u002F3.ecosystem-guide",{"title":23,"path":24,"stem":25},"LLM 的概率本质","\u002Fintro\u002Fllm-probability","1.intro\u002F4.llm-probability",{"title":27,"path":28,"stem":29},"从聊天机器人到 Agent","\u002Fintro\u002Ffrom-chatbot-to-agent","1.intro\u002F5.from-chatbot-to-agent",{"title":31,"path":32,"stem":33},"Claude Code 的 Agentic Loop 全拆解","\u002Fintro\u002Fagentic-loop","1.intro\u002F6.agentic-loop",false,{"title":36,"icon":37,"path":38,"stem":39,"children":40,"page":34},"第 2 章：安装与配置","i-lucide-settings","\u002Fsetup","2.setup",[41,45,49,53],{"title":42,"path":43,"stem":44},"系统要求与安装方式","\u002Fsetup\u002Fsystem-requirements","2.setup\u002F1.system-requirements",{"title":46,"path":47,"stem":48},"认证、登录与多账户管理","\u002Fsetup\u002Fauthentication","2.setup\u002F2.authentication",{"title":50,"path":51,"stem":52},"选择你的界面","\u002Fsetup\u002Fchoose-interface","2.setup\u002F3.choose-interface",{"title":54,"path":55,"stem":56},"Coding Plan","\u002Fsetup\u002Fcoding-plan","2.setup\u002F4.coding-plan",{"title":58,"icon":59,"path":60,"stem":61,"children":62,"page":34},"第 3 章：快速上手","i-lucide-hand","\u002Fquickstart","3.quickstart",[63,67,71],{"title":64,"path":65,"stem":66},"启动、交互模式与基本命令","\u002Fquickstart\u002Fstartup","3.quickstart\u002F1.startup",{"title":68,"path":69,"stem":70},"让 Claude 理解你的项目","\u002Fquickstart\u002Fcodebase-understanding","3.quickstart\u002F2.codebase-understanding",{"title":72,"path":73,"stem":74},"第一次代码变更","\u002Fquickstart\u002Ffirst-change","3.quickstart\u002F3.first-change",{"title":76,"icon":77,"path":78,"stem":79,"children":80,"page":34},"第 4 章：核心功能","i-lucide-laptop","\u002Fcore-features","4.core-features",[81,85,89,93,97],{"title":82,"path":83,"stem":84},"代码库全景扫描与模块关系分析","\u002Fcore-features\u002Fcodebase-scan","4.core-features\u002F1.codebase-scan",{"title":86,"path":87,"stem":88},"代码编辑与生成","\u002Fcore-features\u002Fedit-generate","4.core-features\u002F2.edit-generate",{"title":90,"path":91,"stem":92},"测试与调试","\u002Fcore-features\u002Ftest-debug","4.core-features\u002F3.test-debug",{"title":94,"path":95,"stem":96},"Git 工作流","\u002Fcore-features\u002Fgit-workflow","4.core-features\u002F4.git-workflow",{"title":98,"path":99,"stem":100},"工具链执行","\u002Fcore-features\u002Ftoolchain","4.core-features\u002F5.toolchain",{"title":102,"icon":103,"path":104,"stem":105,"children":106,"page":34},"第 5 章：进阶配置","i-lucide-wrench","\u002Fadvanced","5.advanced",[107,111,115,119],{"title":108,"path":109,"stem":110},"CLAUDE.md","\u002Fadvanced\u002Fclaude-md","5.advanced\u002F1.claude-md",{"title":112,"path":113,"stem":114},"Skills","\u002Fadvanced\u002Fskills","5.advanced\u002F2.skills",{"title":116,"path":117,"stem":118},"MCP","\u002Fadvanced\u002Fmcp","5.advanced\u002F3.mcp",{"title":120,"path":121,"stem":122},"Hooks 与 Plan 模式","\u002Fadvanced\u002Fhooks-plan","5.advanced\u002F4.hooks-plan",{"title":124,"icon":125,"path":126,"stem":127,"children":128,"page":34},"第 6 章：实战开发","i-lucide-hammer","\u002Fpractice","6.practice",[129,133,137,141,145],{"title":130,"path":131,"stem":132},"需求分析与架构设计","\u002Fpractice\u002Frequirements-architecture","6.practice\u002F1.requirements-architecture",{"title":134,"path":135,"stem":136},"项目脚手架搭建与技术选型","\u002Fpractice\u002Fscaffolding","6.practice\u002F2.scaffolding",{"title":138,"path":139,"stem":140},"核心功能实现","\u002Fpractice\u002Fcore-features","6.practice\u002F3.core-features",{"title":142,"path":143,"stem":144},"测试覆盖、代码审查与质量调优","\u002Fpractice\u002Ftesting-quality","6.practice\u002F4.testing-quality",{"title":146,"path":147,"stem":148},"部署上线与成果分享","\u002Fpractice\u002Fdeployment","6.practice\u002F5.deployment",{"title":150,"icon":151,"path":152,"stem":153,"children":154,"page":34},"第 7 章：心法层","i-lucide-brain","\u002Fmindset","7.mindset",[155,159,163,167],{"title":156,"path":157,"stem":158},"提示词设计原则","\u002Fmindset\u002Fprompt-design","7.mindset\u002F1.prompt-design",{"title":160,"path":161,"stem":162},"上下文管理策略","\u002Fmindset\u002Fcontext-management","7.mindset\u002F2.context-management",{"title":164,"path":165,"stem":166},"安全与权限控制","\u002Fmindset\u002Fsecurity","7.mindset\u002F3.security",{"title":168,"path":169,"stem":170},"Boris Cherny 的 9 条实战心法与团队推广经验","\u002Fmindset\u002Fboris-cherny-tips","7.mindset\u002F4.boris-cherny-tips",{"title":172,"icon":173,"path":174,"stem":175,"children":176,"page":34},"附录","i-lucide-paperclip","\u002Fappendix","8.appendix",[177,181,185],{"title":178,"path":179,"stem":180},"常用命令速查表","\u002Fappendix\u002Fa.command-cheatsheet","8.appendix\u002Fa.command-cheatsheet",{"title":182,"path":183,"stem":184},"AI 核心术语汇编","\u002Fappendix\u002Fb.ai-terminology","8.appendix\u002Fb.ai-terminology",{"title":186,"path":187,"stem":188},"资源链接与延伸阅读","\u002Fappendix\u002Fc.resources","8.appendix\u002Fc.resources",{"id":190,"title":112,"body":191,"description":3791,"extension":3792,"links":3793,"meta":3794,"navigation":594,"path":113,"seo":3796,"stem":114,"__hash__":3797},"docs\u002F5.advanced\u002F2.skills.md",{"type":192,"value":193,"toc":3744},"minimark",[194,199,204,218,221,225,228,333,336,340,343,377,384,387,391,395,398,408,414,433,437,442,695,699,927,931,934,1003,1006,1083,1097,1101,1108,1233,1240,1284,1286,1290,1294,1297,1318,1322,1325,1390,1396,1400,1403,1671,1674,1685,1688,1692,1701,1712,1720,1727,1733,1737,1740,1745,1765,1770,1781,1784,1963,1967,1974,1990,1993,1995,1999,2003,2006,2075,2082,2087,2149,2154,2174,2178,2184,2189,2215,2220,2240,2245,2270,2275,2289,2293,2392,2394,2398,2402,2407,2414,2504,2509,2512,2518,2524,2627,2633,2637,2640,2669,2673,2684,2704,2707,2732,2745,2747,2751,2755,3027,3031,3155,3158,3258,3261,3275,3281,3283,3287,3291,3371,3375,3380,3383,3403,3408,3413,3421,3424,3438,3441,3458,3463,3466,3487,3492,3495,3574,3579,3582,3597,3601,3606,3612,3617,3620,3625,3636,3641,3644,3646,3650,3740],[195,196,198],"h2",{"id":197},"_1-skills-是什么","1. Skills 是什么",[200,201,203],"h3",{"id":202},"_11-定义","1.1 定义",[205,206,207,208,212,213,217],"p",{},"Skill（技能）是 Claude Code 的扩展机制，它将",[209,210,211],"strong",{},"可重复的工作流","编码为可复用的指令模板。每个 Skill 是一个文件夹，核心文件是 ",[214,215,216],"code",{},"SKILL.md","——一个包含 YAML frontmatter 和 Markdown 指令的文件。当 Claude 检测到任务与 Skill 的描述匹配时，它会自动加载该 Skill 的完整指令，从而按照预设的流程执行任务。",[205,219,220],{},"Anthropic 官方将其比喻为\"自定义入职材料\"（custom onboarding materials）——你写一次，Claude 在每个会话中都知道如何执行特定任务，无需重复解释。",[200,222,224],{"id":223},"_12-与-mcp-的区别","1.2 与 MCP 的区别",[205,226,227],{},"Skills 和 MCP（Model Context Protocol）是 Claude Code 的两套互补扩展机制，但定位截然不同：",[229,230,231,245],"table",{},[232,233,234],"thead",{},[235,236,237,241,243],"tr",{},[238,239,240],"th",{},"维度",[238,242,112],{},[238,244,116],{},[246,247,248,262,281,294,307,320],"tbody",{},[235,249,250,256,259],{},[251,252,253],"td",{},[209,254,255],{},"本质",[251,257,258],{},"指令和流程模板",[251,260,261],{},"外部工具和数据接口",[235,263,264,269,275],{},[251,265,266],{},[209,267,268],{},"作用",[251,270,271,272],{},"教 Claude ",[209,273,274],{},"如何做",[251,276,277,278],{},"给 Claude ",[209,279,280],{},"用什么做",[235,282,283,288,291],{},[251,284,285],{},[209,286,287],{},"内容",[251,289,290],{},"Markdown 指令、脚本、参考文档",[251,292,293],{},"API 端点、数据库连接、文件系统",[235,295,296,301,304],{},[251,297,298],{},[209,299,300],{},"类比",[251,302,303],{},"菜谱（告诉厨师步骤）",[251,305,306],{},"厨具（提供烹饪工具）",[235,308,309,314,317],{},[251,310,311],{},[209,312,313],{},"加载方式",[251,315,316],{},"按需动态加载",[251,318,319],{},"会话开始时连接",[235,321,322,327,330],{},[251,323,324],{},[209,325,326],{},"适用场景",[251,328,329],{},"可重复工作流、编码规范、审查清单",[251,331,332],{},"外部服务集成、数据访问",[205,334,335],{},"两者可以协同工作：MCP 提供工具和数据访问能力，Skills 教 Claude 最佳的使用方法和流程。例如，一个 MCP Server 连接了公司的 JIRA 系统，而 Skill 则定义了\"如何按照团队规范创建和分配任务\"的完整流程。",[200,337,339],{"id":338},"_13-适用场景","1.3 适用场景",[205,341,342],{},"Skills 在以下场景中特别有效：",[344,345,346,353,359,365,371],"ul",{},[347,348,349,352],"li",{},[209,350,351],{},"可重复工作流","：代码审查、部署流程、周报生成、数据清洗",[347,354,355,358],{},[209,356,357],{},"编码规范","：团队代码风格、API 设计约定、错误处理模式",[347,360,361,364],{},[209,362,363],{},"文档生成","：按照品牌指南创建 Word\u002FPPT\u002FPDF、技术文档",[347,366,367,370],{},[209,368,369],{},"领域知识","：特定框架的使用模式、遗留系统的上下文",[347,372,373,376],{},[209,374,375],{},"多步骤流程","：需要按特定顺序执行的复杂任务",[205,378,379,380,383],{},"Skills ",[209,381,382],{},"不适合","一次性任务或简单到 Claude 可以直接完成的任务——过度使用反而会增加不必要的上下文开销。",[385,386],"hr",{},[195,388,390],{"id":389},"_2-skills-文件格式详解","2. Skills 文件格式详解",[200,392,394],{"id":393},"_21-目录结构","2.1 目录结构",[205,396,397],{},"每个 Skill 是一个独立的目录，遵循以下结构：",[399,400,405],"pre",{"className":401,"code":403,"language":404},[402],"language-text","my-skill\u002F\n├── SKILL.md              # 必需：主指令文件\n├── references\u002F           # 可选：参考文档（按需加载）\n│   ├── api-guide.md\n│   └── examples.md\n├── scripts\u002F              # 可选：可执行脚本\n│   └── validate.py\n├── assets\u002F               # 可选：模板、字体、图片\n│   └── template.html\n└── evals\u002F                # 建议：评估测试\n    └── evals.json\n","text",[214,406,403],{"__ignoreMap":407},"",[205,409,410,413],{},[209,411,412],{},"关键规则","：",[344,415,416,419,424],{},[347,417,418],{},"文件夹名使用 kebab-case（短横线连接的小写字母）",[347,420,421,423],{},[214,422,216],{}," 文件名必须严格匹配大小写",[347,425,426,427,430,431],{},"Skill 目录内不要放 ",[214,428,429],{},"README.md","，所有指令集中在 ",[214,432,216],{},[200,434,436],{"id":435},"_22-skillmd-结构","2.2 SKILL.md 结构",[205,438,439,441],{},[214,440,216],{}," 由两部分组成：YAML frontmatter（配置元数据）和 Markdown body（执行指令）。",[399,443,447],{"className":444,"code":445,"language":446,"meta":407,"style":407},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","---\nname: code-review                    # Skill 名称，成为 \u002Fslash-command\ndescription: 按照团队规范审查代码。当用户请求代码审查、PR review、检查代码质量时使用。\nwhen_to_use: 触发短语：review, 审查, 检查代码, code review\ndisable-model-invocation: false      # 是否禁止 Claude 自动调用\nuser-invocable: true                 # 是否对用户可见（\u002F菜单中显示）\nallowed-tools: Read Grep Bash(git *) # 预授权工具\nmodel: sonnet                        # 激活时使用的模型\ncontext: fork                        # 在子代理中运行\nagent: Explore                       # 子代理类型\n---\n\n# 代码审查 Skill\n\n## 审查清单\n\n1. **功能正确性**：代码是否实现了预期功能\n2. **代码风格**：是否符合团队编码规范\n3. **安全性**：是否存在注入、XSS、敏感信息泄露等风险\n4. **性能**：是否存在明显的性能问题\n5. **可测试性**：是否易于测试，测试覆盖率如何\n\n## 输出格式\n\n对每个审查项给出：\n- 状态：通过 \u002F 建议改进 \u002F 必须修复\n- 具体问题描述\n- 改进建议（含代码示例）\n","yaml",[214,448,449,458,477,488,499,514,528,542,556,570,584,589,596,602,607,613,618,624,630,636,642,648,653,659,664,670,679,687],{"__ignoreMap":407},[450,451,454],"span",{"class":452,"line":453},"line",1,[450,455,457],{"class":456},"sBMFI","---\n",[450,459,461,465,469,473],{"class":452,"line":460},2,[450,462,464],{"class":463},"swJcz","name",[450,466,468],{"class":467},"sMK4o",":",[450,470,472],{"class":471},"sfazB"," code-review",[450,474,476],{"class":475},"sHwdD","                    # Skill 名称，成为 \u002Fslash-command\n",[450,478,480,483,485],{"class":452,"line":479},3,[450,481,482],{"class":463},"description",[450,484,468],{"class":467},[450,486,487],{"class":471}," 按照团队规范审查代码。当用户请求代码审查、PR review、检查代码质量时使用。\n",[450,489,491,494,496],{"class":452,"line":490},4,[450,492,493],{"class":463},"when_to_use",[450,495,468],{"class":467},[450,497,498],{"class":471}," 触发短语：review, 审查, 检查代码, code review\n",[450,500,502,505,507,511],{"class":452,"line":501},5,[450,503,504],{"class":463},"disable-model-invocation",[450,506,468],{"class":467},[450,508,510],{"class":509},"sfNiH"," false",[450,512,513],{"class":475},"      # 是否禁止 Claude 自动调用\n",[450,515,517,520,522,525],{"class":452,"line":516},6,[450,518,519],{"class":463},"user-invocable",[450,521,468],{"class":467},[450,523,524],{"class":509}," true",[450,526,527],{"class":475},"                 # 是否对用户可见（\u002F菜单中显示）\n",[450,529,531,534,536,539],{"class":452,"line":530},7,[450,532,533],{"class":463},"allowed-tools",[450,535,468],{"class":467},[450,537,538],{"class":471}," Read Grep Bash(git *)",[450,540,541],{"class":475}," # 预授权工具\n",[450,543,545,548,550,553],{"class":452,"line":544},8,[450,546,547],{"class":463},"model",[450,549,468],{"class":467},[450,551,552],{"class":471}," sonnet",[450,554,555],{"class":475},"                        # 激活时使用的模型\n",[450,557,559,562,564,567],{"class":452,"line":558},9,[450,560,561],{"class":463},"context",[450,563,468],{"class":467},[450,565,566],{"class":471}," fork",[450,568,569],{"class":475},"                        # 在子代理中运行\n",[450,571,573,576,578,581],{"class":452,"line":572},10,[450,574,575],{"class":463},"agent",[450,577,468],{"class":467},[450,579,580],{"class":471}," Explore",[450,582,583],{"class":475},"                       # 子代理类型\n",[450,585,587],{"class":452,"line":586},11,[450,588,457],{"class":456},[450,590,592],{"class":452,"line":591},12,[450,593,595],{"emptyLinePlaceholder":594},true,"\n",[450,597,599],{"class":452,"line":598},13,[450,600,601],{"class":475},"# 代码审查 Skill\n",[450,603,605],{"class":452,"line":604},14,[450,606,595],{"emptyLinePlaceholder":594},[450,608,610],{"class":452,"line":609},15,[450,611,612],{"class":475},"## 审查清单\n",[450,614,616],{"class":452,"line":615},16,[450,617,595],{"emptyLinePlaceholder":594},[450,619,621],{"class":452,"line":620},17,[450,622,623],{"class":471},"1. **功能正确性**：代码是否实现了预期功能\n",[450,625,627],{"class":452,"line":626},18,[450,628,629],{"class":471},"2. **代码风格**：是否符合团队编码规范\n",[450,631,633],{"class":452,"line":632},19,[450,634,635],{"class":471},"3. **安全性**：是否存在注入、XSS、敏感信息泄露等风险\n",[450,637,639],{"class":452,"line":638},20,[450,640,641],{"class":471},"4. **性能**：是否存在明显的性能问题\n",[450,643,645],{"class":452,"line":644},21,[450,646,647],{"class":471},"5. **可测试性**：是否易于测试，测试覆盖率如何\n",[450,649,651],{"class":452,"line":650},22,[450,652,595],{"emptyLinePlaceholder":594},[450,654,656],{"class":452,"line":655},23,[450,657,658],{"class":475},"## 输出格式\n",[450,660,662],{"class":452,"line":661},24,[450,663,595],{"emptyLinePlaceholder":594},[450,665,667],{"class":452,"line":666},25,[450,668,669],{"class":471},"对每个审查项给出：\n",[450,671,673,676],{"class":452,"line":672},26,[450,674,675],{"class":467},"-",[450,677,678],{"class":471}," 状态：通过 \u002F 建议改进 \u002F 必须修复\n",[450,680,682,684],{"class":452,"line":681},27,[450,683,675],{"class":467},[450,685,686],{"class":471}," 具体问题描述\n",[450,688,690,692],{"class":452,"line":689},28,[450,691,675],{"class":467},[450,693,694],{"class":471}," 改进建议（含代码示例）\n",[200,696,698],{"id":697},"_23-yaml-frontmatter-完整字段","2.3 YAML Frontmatter 完整字段",[229,700,701,714],{},[232,702,703],{},[235,704,705,708,711],{},[238,706,707],{},"字段",[238,709,710],{},"必需",[238,712,713],{},"说明",[246,715,716,728,740,751,766,782,797,811,822,840,867,881,896,908],{},[235,717,718,722,725],{},[251,719,720],{},[214,721,464],{},[251,723,724],{},"否",[251,726,727],{},"显示名称，省略则使用目录名。仅限小写字母、数字和连字符，最多 64 字符",[235,729,730,734,737],{},[251,731,732],{},[214,733,482],{},[251,735,736],{},"推荐",[251,738,739],{},"Skill 的功能描述和触发时机。Claude 用它判断是否加载该 Skill",[235,741,742,746,748],{},[251,743,744],{},[214,745,493],{},[251,747,724],{},[251,749,750],{},"补充触发条件，追加到 description 后，共享 1536 字符上限",[235,752,753,758,760],{},[251,754,755],{},[214,756,757],{},"argument-hint",[251,759,724],{},[251,761,762,763],{},"自动补全时显示的参数提示，如 ",[214,764,765],{},"[issue-number]",[235,767,768,773,775],{},[251,769,770],{},[214,771,772],{},"arguments",[251,774,724],{},[251,776,777,778,781],{},"命名位置参数，用于 ",[214,779,780],{},"$name"," 替换",[235,783,784,788,790],{},[251,785,786],{},[214,787,504],{},[251,789,724],{},[251,791,792,793,796],{},"设为 ",[214,794,795],{},"true"," 则仅用户可手动调用（适合部署等副作用操作）",[235,798,799,803,805],{},[251,800,801],{},[214,802,519],{},[251,804,724],{},[251,806,792,807,810],{},[214,808,809],{},"false"," 则对用户隐藏，仅 Claude 自动调用（适合背景知识）",[235,812,813,817,819],{},[251,814,815],{},[214,816,533],{},[251,818,724],{},[251,820,821],{},"Skill 激活时 Claude 可无需确认使用的工具",[235,823,824,828,830],{},[251,825,826],{},[214,827,547],{},[251,829,724],{},[251,831,832,833,836,837],{},"Skill 激活时使用的模型，如 ",[214,834,835],{},"sonnet","、",[214,838,839],{},"opus",[235,841,842,847,849],{},[251,843,844],{},[214,845,846],{},"effort",[251,848,724],{},[251,850,851,852,836,855,836,858,836,861,836,864],{},"努力程度：",[214,853,854],{},"low",[214,856,857],{},"medium",[214,859,860],{},"high",[214,862,863],{},"xhigh",[214,865,866],{},"max",[235,868,869,873,875],{},[251,870,871],{},[214,872,561],{},[251,874,724],{},[251,876,792,877,880],{},[214,878,879],{},"fork"," 则在隔离的子代理上下文中运行",[235,882,883,887,889],{},[251,884,885],{},[214,886,575],{},[251,888,724],{},[251,890,891,892,895],{},"配合 ",[214,893,894],{},"context: fork"," 使用的子代理类型",[235,897,898,903,905],{},[251,899,900],{},[214,901,902],{},"paths",[251,904,724],{},[251,906,907],{},"Glob 模式，限制 Skill 的自动激活范围",[235,909,910,915,917],{},[251,911,912],{},[214,913,914],{},"shell",[251,916,724],{},[251,918,919,920,923,924],{},"内联 shell 命令使用的 shell：",[214,921,922],{},"bash","（默认）或 ",[214,925,926],{},"powershell",[200,928,930],{"id":929},"_24-字符串替换","2.4 字符串替换",[205,932,933],{},"Skill 支持动态值替换：",[229,935,936,945],{},[232,937,938],{},[235,939,940,943],{},[238,941,942],{},"变量",[238,944,713],{},[246,946,947,957,971,983,993],{},[235,948,949,954],{},[251,950,951],{},[214,952,953],{},"$ARGUMENTS",[251,955,956],{},"调用时传入的所有参数",[235,958,959,968],{},[251,960,961,964,965],{},[214,962,963],{},"$ARGUMENTS[N]"," \u002F ",[214,966,967],{},"$N",[251,969,970],{},"按 0 基索引访问第 N 个参数",[235,972,973,977],{},[251,974,975],{},[214,976,780],{},[251,978,979,980,982],{},"frontmatter 中 ",[214,981,772],{}," 声明的命名参数",[235,984,985,990],{},[251,986,987],{},[214,988,989],{},"${CLAUDE_SESSION_ID}",[251,991,992],{},"当前会话 ID",[235,994,995,1000],{},[251,996,997],{},[214,998,999],{},"${CLAUDE_SKILL_DIR}",[251,1001,1002],{},"Skill 文件所在目录",[205,1004,1005],{},"示例：",[399,1007,1009],{"className":444,"code":1008,"language":446,"meta":407,"style":407},"---\nname: fix-issue\ndescription: 修复指定 GitHub Issue\ndisable-model-invocation: true\n---\n\n修复 GitHub Issue #$ARGUMENTS：\n1. 读取 Issue 描述\n2. 理解需求\n3. 实现修复\n4. 编写测试\n5. 创建提交\n",[214,1010,1011,1015,1024,1033,1042,1046,1050,1058,1063,1068,1073,1078],{"__ignoreMap":407},[450,1012,1013],{"class":452,"line":453},[450,1014,457],{"class":456},[450,1016,1017,1019,1021],{"class":452,"line":460},[450,1018,464],{"class":463},[450,1020,468],{"class":467},[450,1022,1023],{"class":471}," fix-issue\n",[450,1025,1026,1028,1030],{"class":452,"line":479},[450,1027,482],{"class":463},[450,1029,468],{"class":467},[450,1031,1032],{"class":471}," 修复指定 GitHub Issue\n",[450,1034,1035,1037,1039],{"class":452,"line":490},[450,1036,504],{"class":463},[450,1038,468],{"class":467},[450,1040,1041],{"class":509}," true\n",[450,1043,1044],{"class":452,"line":501},[450,1045,457],{"class":456},[450,1047,1048],{"class":452,"line":516},[450,1049,595],{"emptyLinePlaceholder":594},[450,1051,1052,1055],{"class":452,"line":530},[450,1053,1054],{"class":471},"修复 GitHub Issue",[450,1056,1057],{"class":475}," #$ARGUMENTS：\n",[450,1059,1060],{"class":452,"line":544},[450,1061,1062],{"class":471},"1. 读取 Issue 描述\n",[450,1064,1065],{"class":452,"line":558},[450,1066,1067],{"class":471},"2. 理解需求\n",[450,1069,1070],{"class":452,"line":572},[450,1071,1072],{"class":471},"3. 实现修复\n",[450,1074,1075],{"class":452,"line":586},[450,1076,1077],{"class":471},"4. 编写测试\n",[450,1079,1080],{"class":452,"line":591},[450,1081,1082],{"class":471},"5. 创建提交\n",[205,1084,1085,1086,1089,1090,1092,1093,1096],{},"调用 ",[214,1087,1088],{},"\u002Ffix-issue 123"," 时，",[214,1091,953],{}," 会被替换为 ",[214,1094,1095],{},"123","。",[200,1098,1100],{"id":1099},"_25-动态上下文注入","2.5 动态上下文注入",[205,1102,1103,1104,1107],{},"使用 ",[214,1105,1106],{},"!`command`"," 语法可以在 Skill 内容发送给 Claude 之前执行 shell 命令，将实时数据注入提示：",[399,1109,1111],{"className":444,"code":1110,"language":446,"meta":407,"style":407},"---\nname: pr-summary\ndescription: 总结当前 Pull Request\ncontext: fork\nagent: Explore\nallowed-tools: Bash(gh *)\n---\n\n## PR 上下文\n- PR diff: !`gh pr diff`\n- PR 评论: !`gh pr view --comments`\n- 变更文件: !`gh pr diff --name-only`\n\n## 任务\n总结这个 Pull Request 的变更内容、潜在风险和测试覆盖缺口。\n",[214,1112,1113,1117,1126,1135,1144,1153,1162,1166,1170,1175,1191,1205,1219,1223,1228],{"__ignoreMap":407},[450,1114,1115],{"class":452,"line":453},[450,1116,457],{"class":456},[450,1118,1119,1121,1123],{"class":452,"line":460},[450,1120,464],{"class":463},[450,1122,468],{"class":467},[450,1124,1125],{"class":471}," pr-summary\n",[450,1127,1128,1130,1132],{"class":452,"line":479},[450,1129,482],{"class":463},[450,1131,468],{"class":467},[450,1133,1134],{"class":471}," 总结当前 Pull Request\n",[450,1136,1137,1139,1141],{"class":452,"line":490},[450,1138,561],{"class":463},[450,1140,468],{"class":467},[450,1142,1143],{"class":471}," fork\n",[450,1145,1146,1148,1150],{"class":452,"line":501},[450,1147,575],{"class":463},[450,1149,468],{"class":467},[450,1151,1152],{"class":471}," Explore\n",[450,1154,1155,1157,1159],{"class":452,"line":516},[450,1156,533],{"class":463},[450,1158,468],{"class":467},[450,1160,1161],{"class":471}," Bash(gh *)\n",[450,1163,1164],{"class":452,"line":530},[450,1165,457],{"class":456},[450,1167,1168],{"class":452,"line":544},[450,1169,595],{"emptyLinePlaceholder":594},[450,1171,1172],{"class":452,"line":558},[450,1173,1174],{"class":475},"## PR 上下文\n",[450,1176,1177,1179,1182,1184,1188],{"class":452,"line":572},[450,1178,675],{"class":467},[450,1180,1181],{"class":463}," PR diff",[450,1183,468],{"class":467},[450,1185,1187],{"class":1186},"sTEyZ"," !`gh ",[450,1189,1190],{"class":471},"pr diff`\n",[450,1192,1193,1195,1198,1200,1202],{"class":452,"line":586},[450,1194,675],{"class":467},[450,1196,1197],{"class":463}," PR 评论",[450,1199,468],{"class":467},[450,1201,1187],{"class":1186},[450,1203,1204],{"class":471},"pr view --comments`\n",[450,1206,1207,1209,1212,1214,1216],{"class":452,"line":591},[450,1208,675],{"class":467},[450,1210,1211],{"class":463}," 变更文件",[450,1213,468],{"class":467},[450,1215,1187],{"class":1186},[450,1217,1218],{"class":471},"pr diff --name-only`\n",[450,1220,1221],{"class":452,"line":598},[450,1222,595],{"emptyLinePlaceholder":594},[450,1224,1225],{"class":452,"line":604},[450,1226,1227],{"class":475},"## 任务\n",[450,1229,1230],{"class":452,"line":609},[450,1231,1232],{"class":471},"总结这个 Pull Request 的变更内容、潜在风险和测试覆盖缺口。\n",[205,1234,1235,1236,1239],{},"多行命令使用 ",[214,1237,1238],{},"```!"," 代码块：",[399,1241,1245],{"className":1242,"code":1243,"language":1244,"meta":407,"style":407},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","## 环境信息\n```!\nnode --version\nnpm --version\ngit status --short\n```\n","markdown",[214,1246,1247,1255,1264,1269,1274,1279],{"__ignoreMap":407},[450,1248,1249,1252],{"class":452,"line":453},[450,1250,1251],{"class":467},"## ",[450,1253,1254],{"class":456},"环境信息\n",[450,1256,1257,1260],{"class":452,"line":460},[450,1258,1259],{"class":471},"```",[450,1261,1263],{"class":1262},"sJsPd","!\n",[450,1265,1266],{"class":452,"line":479},[450,1267,1268],{"class":1262},"node --version\n",[450,1270,1271],{"class":452,"line":490},[450,1272,1273],{"class":1262},"npm --version\n",[450,1275,1276],{"class":452,"line":501},[450,1277,1278],{"class":1262},"git status --short\n",[450,1280,1281],{"class":452,"line":516},[450,1282,1283],{"class":471},"```\n",[385,1285],{},[195,1287,1289],{"id":1288},"_3-创建-skills从零开始的完整流程","3. 创建 Skills：从零开始的完整流程",[200,1291,1293],{"id":1292},"_31-第一步确定工作流","3.1 第一步：确定工作流",[205,1295,1296],{},"在编写 Skill 之前，先问自己三个问题：",[1298,1299,1300,1306,1312],"ol",{},[347,1301,1302,1305],{},[209,1303,1304],{},"这个任务是否重复出现？"," 如果只做一次，不需要 Skill",[347,1307,1308,1311],{},[209,1309,1310],{},"Claude 是否能直接完成？"," 如果任务简单到 Claude 一次就能做对，不需要 Skill",[347,1313,1314,1317],{},[209,1315,1316],{},"是否有特定的团队规范？"," 如果涉及编码标准、审查流程等组织特定知识，非常适合 Skill",[200,1319,1321],{"id":1320},"_32-第二步选择存储位置","3.2 第二步：选择存储位置",[205,1323,1324],{},"Skill 的存储位置决定了其作用域：",[229,1326,1327,1340],{},[232,1328,1329],{},[235,1330,1331,1334,1337],{},[238,1332,1333],{},"位置",[238,1335,1336],{},"路径",[238,1338,1339],{},"适用范围",[246,1341,1342,1353,1366,1379],{},[235,1343,1344,1347,1350],{},[251,1345,1346],{},"企业级",[251,1348,1349],{},"托管设置",[251,1351,1352],{},"组织内所有用户",[235,1354,1355,1358,1363],{},[251,1356,1357],{},"个人级",[251,1359,1360],{},[214,1361,1362],{},"~\u002F.claude\u002Fskills\u002F\u003Cname>\u002FSKILL.md",[251,1364,1365],{},"你的所有项目",[235,1367,1368,1371,1376],{},[251,1369,1370],{},"项目级",[251,1372,1373],{},[214,1374,1375],{},".claude\u002Fskills\u002F\u003Cname>\u002FSKILL.md",[251,1377,1378],{},"当前项目",[235,1380,1381,1384,1387],{},[251,1382,1383],{},"插件级",[251,1385,1386],{},"通过插件市场安装",[251,1388,1389],{},"插件启用处",[205,1391,1392,1395],{},[209,1393,1394],{},"优先级规则","：企业 > 个人 > 项目 > 插件。同名 Skill 时，高优先级覆盖低优先级。",[200,1397,1399],{"id":1398},"_33-第三步编写-skillmd","3.3 第三步：编写 SKILL.md",[205,1401,1402],{},"以下是一个完整的代码审查 Skill 示例：",[399,1404,1406],{"className":444,"code":1405,"language":446,"meta":407,"style":407},"---\nname: code-review\ndescription: 按照团队规范进行代码审查。当用户请求 review、代码审查、检查 PR、分析代码质量时自动激活。\nwhen_to_use: 触发词：review, 审查, PR, code review, 检查代码\n---\n\n# 代码审查指南\n\n## 审查流程\n\n1. **理解变更范围**\n   - 读取变更文件的完整内容\n   - 理解变更的业务背景和目的\n   - 检查相关测试文件是否同步更新\n\n2. **逐文件审查**\n   - 检查功能正确性\n   - 检查代码风格和命名规范\n   - 检查错误处理完整性\n   - 检查安全性问题\n   - 检查性能影响\n\n3. **输出审查报告**\n   - 按严重程度分类问题\n   - 提供具体的改进建议（含代码示例）\n   - 标记必须修复 vs 建议改进\n\n## 审查标准\n\n### 必须修复（Blocker）\n- 安全漏洞（SQL 注入、XSS、敏感信息硬编码）\n- 明显的功能缺陷\n- 破坏现有测试\n- 类型错误（TypeScript 项目）\n\n### 建议改进（Suggestion）\n- 命名不够清晰\n- 缺少注释或文档\n- 可优化的算法复杂度\n- 可提取的重复代码\n\n## 输出格式\n\n",[214,1407,1408,1412,1421,1430,1439,1443,1447,1452,1456,1461,1465,1470,1478,1485,1492,1496,1501,1508,1515,1522,1529,1536,1540,1545,1552,1559,1566,1570,1575,1580,1586,1594,1602,1610,1618,1623,1629,1637,1645,1653,1661,1666],{"__ignoreMap":407},[450,1409,1410],{"class":452,"line":453},[450,1411,457],{"class":456},[450,1413,1414,1416,1418],{"class":452,"line":460},[450,1415,464],{"class":463},[450,1417,468],{"class":467},[450,1419,1420],{"class":471}," code-review\n",[450,1422,1423,1425,1427],{"class":452,"line":479},[450,1424,482],{"class":463},[450,1426,468],{"class":467},[450,1428,1429],{"class":471}," 按照团队规范进行代码审查。当用户请求 review、代码审查、检查 PR、分析代码质量时自动激活。\n",[450,1431,1432,1434,1436],{"class":452,"line":490},[450,1433,493],{"class":463},[450,1435,468],{"class":467},[450,1437,1438],{"class":471}," 触发词：review, 审查, PR, code review, 检查代码\n",[450,1440,1441],{"class":452,"line":501},[450,1442,457],{"class":456},[450,1444,1445],{"class":452,"line":516},[450,1446,595],{"emptyLinePlaceholder":594},[450,1448,1449],{"class":452,"line":530},[450,1450,1451],{"class":475},"# 代码审查指南\n",[450,1453,1454],{"class":452,"line":544},[450,1455,595],{"emptyLinePlaceholder":594},[450,1457,1458],{"class":452,"line":558},[450,1459,1460],{"class":475},"## 审查流程\n",[450,1462,1463],{"class":452,"line":572},[450,1464,595],{"emptyLinePlaceholder":594},[450,1466,1467],{"class":452,"line":586},[450,1468,1469],{"class":471},"1. **理解变更范围**\n",[450,1471,1472,1475],{"class":452,"line":591},[450,1473,1474],{"class":467},"   -",[450,1476,1477],{"class":471}," 读取变更文件的完整内容\n",[450,1479,1480,1482],{"class":452,"line":598},[450,1481,1474],{"class":467},[450,1483,1484],{"class":471}," 理解变更的业务背景和目的\n",[450,1486,1487,1489],{"class":452,"line":604},[450,1488,1474],{"class":467},[450,1490,1491],{"class":471}," 检查相关测试文件是否同步更新\n",[450,1493,1494],{"class":452,"line":609},[450,1495,595],{"emptyLinePlaceholder":594},[450,1497,1498],{"class":452,"line":615},[450,1499,1500],{"class":471},"2. **逐文件审查**\n",[450,1502,1503,1505],{"class":452,"line":620},[450,1504,1474],{"class":467},[450,1506,1507],{"class":471}," 检查功能正确性\n",[450,1509,1510,1512],{"class":452,"line":626},[450,1511,1474],{"class":467},[450,1513,1514],{"class":471}," 检查代码风格和命名规范\n",[450,1516,1517,1519],{"class":452,"line":632},[450,1518,1474],{"class":467},[450,1520,1521],{"class":471}," 检查错误处理完整性\n",[450,1523,1524,1526],{"class":452,"line":638},[450,1525,1474],{"class":467},[450,1527,1528],{"class":471}," 检查安全性问题\n",[450,1530,1531,1533],{"class":452,"line":644},[450,1532,1474],{"class":467},[450,1534,1535],{"class":471}," 检查性能影响\n",[450,1537,1538],{"class":452,"line":650},[450,1539,595],{"emptyLinePlaceholder":594},[450,1541,1542],{"class":452,"line":655},[450,1543,1544],{"class":471},"3. **输出审查报告**\n",[450,1546,1547,1549],{"class":452,"line":661},[450,1548,1474],{"class":467},[450,1550,1551],{"class":471}," 按严重程度分类问题\n",[450,1553,1554,1556],{"class":452,"line":666},[450,1555,1474],{"class":467},[450,1557,1558],{"class":471}," 提供具体的改进建议（含代码示例）\n",[450,1560,1561,1563],{"class":452,"line":672},[450,1562,1474],{"class":467},[450,1564,1565],{"class":471}," 标记必须修复 vs 建议改进\n",[450,1567,1568],{"class":452,"line":681},[450,1569,595],{"emptyLinePlaceholder":594},[450,1571,1572],{"class":452,"line":689},[450,1573,1574],{"class":475},"## 审查标准\n",[450,1576,1578],{"class":452,"line":1577},29,[450,1579,595],{"emptyLinePlaceholder":594},[450,1581,1583],{"class":452,"line":1582},30,[450,1584,1585],{"class":475},"### 必须修复（Blocker）\n",[450,1587,1589,1591],{"class":452,"line":1588},31,[450,1590,675],{"class":467},[450,1592,1593],{"class":471}," 安全漏洞（SQL 注入、XSS、敏感信息硬编码）\n",[450,1595,1597,1599],{"class":452,"line":1596},32,[450,1598,675],{"class":467},[450,1600,1601],{"class":471}," 明显的功能缺陷\n",[450,1603,1605,1607],{"class":452,"line":1604},33,[450,1606,675],{"class":467},[450,1608,1609],{"class":471}," 破坏现有测试\n",[450,1611,1613,1615],{"class":452,"line":1612},34,[450,1614,675],{"class":467},[450,1616,1617],{"class":471}," 类型错误（TypeScript 项目）\n",[450,1619,1621],{"class":452,"line":1620},35,[450,1622,595],{"emptyLinePlaceholder":594},[450,1624,1626],{"class":452,"line":1625},36,[450,1627,1628],{"class":475},"### 建议改进（Suggestion）\n",[450,1630,1632,1634],{"class":452,"line":1631},37,[450,1633,675],{"class":467},[450,1635,1636],{"class":471}," 命名不够清晰\n",[450,1638,1640,1642],{"class":452,"line":1639},38,[450,1641,675],{"class":467},[450,1643,1644],{"class":471}," 缺少注释或文档\n",[450,1646,1648,1650],{"class":452,"line":1647},39,[450,1649,675],{"class":467},[450,1651,1652],{"class":471}," 可优化的算法复杂度\n",[450,1654,1656,1658],{"class":452,"line":1655},40,[450,1657,675],{"class":467},[450,1659,1660],{"class":471}," 可提取的重复代码\n",[450,1662,1664],{"class":452,"line":1663},41,[450,1665,595],{"emptyLinePlaceholder":594},[450,1667,1669],{"class":452,"line":1668},42,[450,1670,658],{"class":475},[195,1672,1673],{"id":1673},"审查摘要",[344,1675,1676,1679,1682],{},[347,1677,1678],{},"文件数：N",[347,1680,1681],{},"问题数：N（Blocker: N, Suggestion: N）",[347,1683,1684],{},"总体评价：通过 \u002F 需修改",[195,1686,1687],{"id":1687},"详细审查",[200,1689,1691],{"id":1690},"文件pathtofilets","文件：path\u002Fto\u002Ffile.ts",[205,1693,1694,1697,1698],{},[209,1695,1696],{},"问题 1"," ",[450,1699,1700],{},"Blocker",[344,1702,1703,1706],{},[347,1704,1705],{},"描述：...",[347,1707,1708,1709],{},"建议：",[214,1710,1711],{},"代码示例",[205,1713,1714,1697,1717],{},[209,1715,1716],{},"问题 2",[450,1718,1719],{},"Suggestion",[344,1721,1722,1724],{},[347,1723,1705],{},[347,1725,1726],{},"建议：...",[399,1728,1731],{"className":1729,"code":1730,"language":404},[402],"\n## 常见陷阱\n\n- 不要只关注风格问题而忽略功能正确性\n- 对于重构类 PR，重点关注是否保持了行为一致性\n- 检查边界条件和错误路径是否被覆盖\n",[214,1732,1730],{"__ignoreMap":407},[200,1734,1736],{"id":1735},"_34-第四步测试与迭代","3.4 第四步：测试与迭代",[205,1738,1739],{},"创建 Skill 后，需要验证两个维度：",[205,1741,1742,413],{},[209,1743,1744],{},"触发测试",[344,1746,1747,1753,1759],{},[347,1748,1749,1750],{},"明显的请求应触发：",[214,1751,1752],{},"\"帮我审查这个 PR\"",[347,1754,1755,1756],{},"同义请求应触发：",[214,1757,1758],{},"\"检查一下这段代码\"",[347,1760,1761,1762],{},"无关请求不应触发：",[214,1763,1764],{},"\"今天天气怎么样\"",[205,1766,1767,413],{},[209,1768,1769],{},"执行测试",[344,1771,1772,1775,1778],{},[347,1773,1774],{},"运行完整工作流，检查输出格式是否正确",[347,1776,1777],{},"验证工具调用顺序是否符合预期",[347,1779,1780],{},"检查边界情况的处理",[205,1782,1783],{},"Skills 2.0 引入了内置的 eval 框架，可以系统地测试 Skill：",[399,1785,1789],{"className":1786,"code":1787,"language":1788,"meta":407,"style":407},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F evals\u002Fevals.json\n{\n  \"evals\": [\n    {\n      \"name\": \"basic-trigger\",\n      \"prompt\": \"帮我 review 这个文件\",\n      \"expected\": \"skill should be invoked\"\n    },\n    {\n      \"name\": \"security-check\",\n      \"prompt\": \"检查这段代码是否有安全问题\",\n      \"expected\": \"reports security issues if present\"\n    }\n  ]\n}\n","json",[214,1790,1791,1796,1801,1818,1823,1845,1865,1884,1889,1893,1912,1931,1948,1953,1958],{"__ignoreMap":407},[450,1792,1793],{"class":452,"line":453},[450,1794,1795],{"class":475},"\u002F\u002F evals\u002Fevals.json\n",[450,1797,1798],{"class":452,"line":460},[450,1799,1800],{"class":467},"{\n",[450,1802,1803,1806,1810,1813,1815],{"class":452,"line":479},[450,1804,1805],{"class":467},"  \"",[450,1807,1809],{"class":1808},"spNyl","evals",[450,1811,1812],{"class":467},"\"",[450,1814,468],{"class":467},[450,1816,1817],{"class":467}," [\n",[450,1819,1820],{"class":452,"line":490},[450,1821,1822],{"class":467},"    {\n",[450,1824,1825,1828,1830,1832,1834,1837,1840,1842],{"class":452,"line":501},[450,1826,1827],{"class":467},"      \"",[450,1829,464],{"class":456},[450,1831,1812],{"class":467},[450,1833,468],{"class":467},[450,1835,1836],{"class":467}," \"",[450,1838,1839],{"class":471},"basic-trigger",[450,1841,1812],{"class":467},[450,1843,1844],{"class":467},",\n",[450,1846,1847,1849,1852,1854,1856,1858,1861,1863],{"class":452,"line":516},[450,1848,1827],{"class":467},[450,1850,1851],{"class":456},"prompt",[450,1853,1812],{"class":467},[450,1855,468],{"class":467},[450,1857,1836],{"class":467},[450,1859,1860],{"class":471},"帮我 review 这个文件",[450,1862,1812],{"class":467},[450,1864,1844],{"class":467},[450,1866,1867,1869,1872,1874,1876,1878,1881],{"class":452,"line":530},[450,1868,1827],{"class":467},[450,1870,1871],{"class":456},"expected",[450,1873,1812],{"class":467},[450,1875,468],{"class":467},[450,1877,1836],{"class":467},[450,1879,1880],{"class":471},"skill should be invoked",[450,1882,1883],{"class":467},"\"\n",[450,1885,1886],{"class":452,"line":544},[450,1887,1888],{"class":467},"    },\n",[450,1890,1891],{"class":452,"line":558},[450,1892,1822],{"class":467},[450,1894,1895,1897,1899,1901,1903,1905,1908,1910],{"class":452,"line":572},[450,1896,1827],{"class":467},[450,1898,464],{"class":456},[450,1900,1812],{"class":467},[450,1902,468],{"class":467},[450,1904,1836],{"class":467},[450,1906,1907],{"class":471},"security-check",[450,1909,1812],{"class":467},[450,1911,1844],{"class":467},[450,1913,1914,1916,1918,1920,1922,1924,1927,1929],{"class":452,"line":586},[450,1915,1827],{"class":467},[450,1917,1851],{"class":456},[450,1919,1812],{"class":467},[450,1921,468],{"class":467},[450,1923,1836],{"class":467},[450,1925,1926],{"class":471},"检查这段代码是否有安全问题",[450,1928,1812],{"class":467},[450,1930,1844],{"class":467},[450,1932,1933,1935,1937,1939,1941,1943,1946],{"class":452,"line":591},[450,1934,1827],{"class":467},[450,1936,1871],{"class":456},[450,1938,1812],{"class":467},[450,1940,468],{"class":467},[450,1942,1836],{"class":467},[450,1944,1945],{"class":471},"reports security issues if present",[450,1947,1883],{"class":467},[450,1949,1950],{"class":452,"line":598},[450,1951,1952],{"class":467},"    }\n",[450,1954,1955],{"class":452,"line":604},[450,1956,1957],{"class":467},"  ]\n",[450,1959,1960],{"class":452,"line":609},[450,1961,1962],{"class":467},"}\n",[200,1964,1966],{"id":1965},"_35-使用-skill-creator-辅助创建","3.5 使用 skill-creator 辅助创建",[205,1968,1969,1970,1973],{},"Anthropic 提供了一个 meta-Skill——",[214,1971,1972],{},"skill-creator","，它可以交互式地帮助你构建 Skill：",[399,1975,1978],{"className":1976,"code":1977,"language":922,"meta":407,"style":407},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# 在 Claude Code 中\n\"使用 skill-creator 帮我创建一个数据库迁移 Skill\"\n",[214,1979,1980,1985],{"__ignoreMap":407},[450,1981,1982],{"class":452,"line":453},[450,1983,1984],{"class":475},"# 在 Claude Code 中\n",[450,1986,1987],{"class":452,"line":460},[450,1988,1989],{"class":456},"\"使用 skill-creator 帮我创建一个数据库迁移 Skill\"\n",[205,1991,1992],{},"它会通过问答引导你定义工作流、触发条件、脚本需求等，然后生成完整的 Skill 目录结构。",[385,1994],{},[195,1996,1998],{"id":1997},"_4-内置-skillsanthropic-预置技能","4. 内置 Skills：Anthropic 预置技能",[200,2000,2002],{"id":2001},"_41-文档处理四件套","4.1 文档处理四件套",[205,2004,2005],{},"Anthropic 官方维护了四个文档处理 Skill，驱动 Claude 的文件创建能力：",[229,2007,2008,2021],{},[232,2009,2010],{},[235,2011,2012,2015,2018],{},[238,2013,2014],{},"Skill",[238,2016,2017],{},"格式",[238,2019,2020],{},"核心能力",[246,2022,2023,2036,2049,2062],{},[235,2024,2025,2030,2033],{},[251,2026,2027],{},[209,2028,2029],{},"xlsx",[251,2031,2032],{},"Excel",[251,2034,2035],{},"创建含公式、图表、格式化的电子表格；数据分析",[235,2037,2038,2043,2046],{},[251,2039,2040],{},[209,2041,2042],{},"pptx",[251,2044,2045],{},"PowerPoint",[251,2047,2048],{},"创建专业演示文稿；支持图表、动画、主题",[235,2050,2051,2056,2059],{},[251,2052,2053],{},[209,2054,2055],{},"docx",[251,2057,2058],{},"Word",[251,2060,2061],{},"创建和编辑文档；表格、页眉页脚、目录",[235,2063,2064,2069,2072],{},[251,2065,2066],{},[209,2067,2068],{},"pdf",[251,2070,2071],{},"PDF",[251,2073,2074],{},"生成 PDF；表单填写；OCR；合并\u002F分割",[205,2076,2077,2078,2081],{},"这些 Skill 是 source-available（非开源）的，但代码公开在 ",[214,2079,2080],{},"github.com\u002Fanthropics\u002Fskills"," 中作为复杂 Skill 的参考实现。",[205,2083,2084,413],{},[209,2085,2086],{},"安装方式",[399,2088,2090],{"className":1976,"code":2089,"language":922,"meta":407,"style":407},"# Claude Code\n\u002Fplugin marketplace add anthropics\u002Fskills\n\u002Fplugin install document-skills@anthropic-agent-skills\n\n# 或通过 skills.sh 安装\nnpx skills add https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fskills --skill xlsx\n",[214,2091,2092,2097,2111,2121,2125,2130],{"__ignoreMap":407},[450,2093,2094],{"class":452,"line":453},[450,2095,2096],{"class":475},"# Claude Code\n",[450,2098,2099,2102,2105,2108],{"class":452,"line":460},[450,2100,2101],{"class":456},"\u002Fplugin",[450,2103,2104],{"class":471}," marketplace",[450,2106,2107],{"class":471}," add",[450,2109,2110],{"class":471}," anthropics\u002Fskills\n",[450,2112,2113,2115,2118],{"class":452,"line":479},[450,2114,2101],{"class":456},[450,2116,2117],{"class":471}," install",[450,2119,2120],{"class":471}," document-skills@anthropic-agent-skills\n",[450,2122,2123],{"class":452,"line":490},[450,2124,595],{"emptyLinePlaceholder":594},[450,2126,2127],{"class":452,"line":501},[450,2128,2129],{"class":475},"# 或通过 skills.sh 安装\n",[450,2131,2132,2135,2138,2140,2143,2146],{"class":452,"line":516},[450,2133,2134],{"class":456},"npx",[450,2136,2137],{"class":471}," skills",[450,2139,2107],{"class":471},[450,2141,2142],{"class":471}," https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fskills",[450,2144,2145],{"class":471}," --skill",[450,2147,2148],{"class":471}," xlsx\n",[205,2150,2151,413],{},[209,2152,2153],{},"使用示例",[399,2155,2157],{"className":1976,"code":2156,"language":922,"meta":407,"style":407},"\"创建一个 Q3 销售数据的 Excel 文件，包含收入趋势图\"\n\"把这份数据转换成 PowerPoint 演示文稿\"\n\"从这个 PDF 中提取表格数据并生成 Excel\"\n",[214,2158,2159,2164,2169],{"__ignoreMap":407},[450,2160,2161],{"class":452,"line":453},[450,2162,2163],{"class":456},"\"创建一个 Q3 销售数据的 Excel 文件，包含收入趋势图\"\n",[450,2165,2166],{"class":452,"line":460},[450,2167,2168],{"class":456},"\"把这份数据转换成 PowerPoint 演示文稿\"\n",[450,2170,2171],{"class":452,"line":479},[450,2172,2173],{"class":456},"\"从这个 PDF 中提取表格数据并生成 Excel\"\n",[200,2175,2177],{"id":2176},"_42-其他官方-skills","4.2 其他官方 Skills",[205,2179,2180,2181,2183],{},"Anthropic 在 ",[214,2182,2080],{}," 开源了 17 个 Skill，分为四大类：",[205,2185,2186,413],{},[209,2187,2188],{},"创意与设计",[344,2190,2191,2197,2203,2209],{},[347,2192,2193,2196],{},[214,2194,2195],{},"algorithmic-art","：p5.js 生成艺术",[347,2198,2199,2202],{},[214,2200,2201],{},"canvas-design","：博物馆级视觉设计",[347,2204,2205,2208],{},[214,2206,2207],{},"slack-gif-creator","：Slack 优化 GIF 动画",[347,2210,2211,2214],{},[214,2212,2213],{},"theme-factory","：10 种专业主题配色",[205,2216,2217,413],{},[209,2218,2219],{},"前端开发",[344,2221,2222,2228,2234],{},[347,2223,2224,2227],{},[214,2225,2226],{},"frontend-design","：生产级前端界面（避免\"AI 感\"设计）",[347,2229,2230,2233],{},[214,2231,2232],{},"web-artifacts-builder","：React + Tailwind 交互组件",[347,2235,2236,2239],{},[214,2237,2238],{},"brand-guidelines","：Anthropic 品牌识别应用",[205,2241,2242,413],{},[209,2243,2244],{},"技术开发",[344,2246,2247,2253,2259,2264],{},[347,2248,2249,2252],{},[214,2250,2251],{},"claude-api","：Claude API\u002FSDK 开发指南",[347,2254,2255,2258],{},[214,2256,2257],{},"mcp-builder","：MCP Server 构建",[347,2260,2261,2263],{},[214,2262,1972],{},"：Skill 创建与测试",[347,2265,2266,2269],{},[214,2267,2268],{},"webapp-testing","：Playwright 网页自动测试",[205,2271,2272,413],{},[209,2273,2274],{},"企业沟通",[344,2276,2277,2283],{},[347,2278,2279,2282],{},[214,2280,2281],{},"doc-coauthoring","：协作式文档撰写",[347,2284,2285,2288],{},[214,2286,2287],{},"internal-comms","：内部沟通模板",[200,2290,2292],{"id":2291},"_43-社区热门-skills","4.3 社区热门 Skills",[229,2294,2295,2310],{},[232,2296,2297],{},[235,2298,2299,2301,2304,2307],{},[238,2300,2014],{},[238,2302,2303],{},"作者",[238,2305,2306],{},"功能",[238,2308,2309],{},"周安装量",[246,2311,2312,2326,2339,2351,2365,2379],{},[235,2313,2314,2317,2320,2323],{},[251,2315,2316],{},"find-skills",[251,2318,2319],{},"Vercel",[251,2321,2322],{},"发现其他 Skill",[251,2324,2325],{},"~787K",[235,2327,2328,2331,2333,2336],{},[251,2329,2330],{},"web-design-guidelines",[251,2332,2319],{},[251,2334,2335],{},"100+ 可访问性\u002FUX 规则审查",[251,2337,2338],{},"~133K",[235,2340,2341,2344,2346,2349],{},[251,2342,2343],{},"react-best-practices",[251,2345,2319],{},[251,2347,2348],{},"57 条 React\u002FNext.js 性能规则",[251,2350,675],{},[235,2352,2353,2356,2359,2362],{},[251,2354,2355],{},"superpowers",[251,2357,2358],{},"obra",[251,2360,2361],{},"多代理开发工作流",[251,2363,2364],{},"~40K",[235,2366,2367,2370,2373,2376],{},[251,2368,2369],{},"remotion-best-practices",[251,2371,2372],{},"Remotion",[251,2374,2375],{},"程序化视频开发",[251,2377,2378],{},"~117K",[235,2380,2381,2384,2387,2390],{},[251,2382,2383],{},"firecrawl",[251,2385,2386],{},"Firecrawl",[251,2388,2389],{},"网页爬取和数据提取",[251,2391,675],{},[385,2393],{},[195,2395,2397],{"id":2396},"_5-共享与分发","5. 共享与分发",[200,2399,2401],{"id":2400},"_51-团队内共享","5.1 团队内共享",[205,2403,2404,413],{},[209,2405,2406],{},"通过 Git 共享（推荐）",[205,2408,2409,2410,2413],{},"将 Skill 放在项目的 ",[214,2411,2412],{},".claude\u002Fskills\u002F"," 目录中，通过 Git 与团队共享：",[399,2415,2417],{"className":1976,"code":2416,"language":922,"meta":407,"style":407},"# 项目结构\nmy-project\u002F\n├── .claude\u002F\n│   └── skills\u002F\n│       ├── code-review\u002F\n│       │   └── SKILL.md\n│       └── deploy\u002F\n│           └── SKILL.md\n├── src\u002F\n└── package.json\n",[214,2418,2419,2424,2429,2437,2448,2458,2470,2480,2489,2496],{"__ignoreMap":407},[450,2420,2421],{"class":452,"line":453},[450,2422,2423],{"class":475},"# 项目结构\n",[450,2425,2426],{"class":452,"line":460},[450,2427,2428],{"class":456},"my-project\u002F\n",[450,2430,2431,2434],{"class":452,"line":479},[450,2432,2433],{"class":456},"├──",[450,2435,2436],{"class":471}," .claude\u002F\n",[450,2438,2439,2442,2445],{"class":452,"line":490},[450,2440,2441],{"class":456},"│",[450,2443,2444],{"class":471},"   └──",[450,2446,2447],{"class":471}," skills\u002F\n",[450,2449,2450,2452,2455],{"class":452,"line":501},[450,2451,2441],{"class":456},[450,2453,2454],{"class":471},"       ├──",[450,2456,2457],{"class":471}," code-review\u002F\n",[450,2459,2460,2462,2465,2467],{"class":452,"line":516},[450,2461,2441],{"class":456},[450,2463,2464],{"class":471},"       │",[450,2466,2444],{"class":471},[450,2468,2469],{"class":471}," SKILL.md\n",[450,2471,2472,2474,2477],{"class":452,"line":530},[450,2473,2441],{"class":456},[450,2475,2476],{"class":471},"       └──",[450,2478,2479],{"class":471}," deploy\u002F\n",[450,2481,2482,2484,2487],{"class":452,"line":544},[450,2483,2441],{"class":456},[450,2485,2486],{"class":471},"           └──",[450,2488,2469],{"class":471},[450,2490,2491,2493],{"class":452,"line":558},[450,2492,2433],{"class":456},[450,2494,2495],{"class":471}," src\u002F\n",[450,2497,2498,2501],{"class":452,"line":572},[450,2499,2500],{"class":456},"└──",[450,2502,2503],{"class":471}," package.json\n",[205,2505,2506,413],{},[209,2507,2508],{},"通过插件市场共享",[205,2510,2511],{},"将 Skill 打包为 Claude Code 插件，发布到插件市场：",[399,2513,2516],{"className":2514,"code":2515,"language":404},[402],"my-plugin\u002F\n├── .claude-plugin\u002F\n│   └── plugin.json       # 插件元数据\n└── skills\u002F\n    ├── code-review\u002F\n    │   └── SKILL.md\n    └── deploy\u002F\n        └── SKILL.md\n",[214,2517,2515],{"__ignoreMap":407},[205,2519,2520,2523],{},[214,2521,2522],{},"plugin.json"," 示例：",[399,2525,2527],{"className":1786,"code":2526,"language":1788,"meta":407,"style":407},"{\n  \"name\": \"my-team-skills\",\n  \"description\": \"我们团队的自定义 Skills 集合\",\n  \"version\": \"1.0.0\",\n  \"author\": { \"name\": \"Team Name\" }\n}\n",[214,2528,2529,2533,2552,2571,2591,2623],{"__ignoreMap":407},[450,2530,2531],{"class":452,"line":453},[450,2532,1800],{"class":467},[450,2534,2535,2537,2539,2541,2543,2545,2548,2550],{"class":452,"line":460},[450,2536,1805],{"class":467},[450,2538,464],{"class":1808},[450,2540,1812],{"class":467},[450,2542,468],{"class":467},[450,2544,1836],{"class":467},[450,2546,2547],{"class":471},"my-team-skills",[450,2549,1812],{"class":467},[450,2551,1844],{"class":467},[450,2553,2554,2556,2558,2560,2562,2564,2567,2569],{"class":452,"line":479},[450,2555,1805],{"class":467},[450,2557,482],{"class":1808},[450,2559,1812],{"class":467},[450,2561,468],{"class":467},[450,2563,1836],{"class":467},[450,2565,2566],{"class":471},"我们团队的自定义 Skills 集合",[450,2568,1812],{"class":467},[450,2570,1844],{"class":467},[450,2572,2573,2575,2578,2580,2582,2584,2587,2589],{"class":452,"line":490},[450,2574,1805],{"class":467},[450,2576,2577],{"class":1808},"version",[450,2579,1812],{"class":467},[450,2581,468],{"class":467},[450,2583,1836],{"class":467},[450,2585,2586],{"class":471},"1.0.0",[450,2588,1812],{"class":467},[450,2590,1844],{"class":467},[450,2592,2593,2595,2598,2600,2602,2605,2607,2609,2611,2613,2615,2618,2620],{"class":452,"line":501},[450,2594,1805],{"class":467},[450,2596,2597],{"class":1808},"author",[450,2599,1812],{"class":467},[450,2601,468],{"class":467},[450,2603,2604],{"class":467}," {",[450,2606,1836],{"class":467},[450,2608,464],{"class":456},[450,2610,1812],{"class":467},[450,2612,468],{"class":467},[450,2614,1836],{"class":467},[450,2616,2617],{"class":471},"Team Name",[450,2619,1812],{"class":467},[450,2621,2622],{"class":467}," }\n",[450,2624,2625],{"class":452,"line":516},[450,2626,1962],{"class":467},[205,2628,2629,2630,1096],{},"安装后，Skill 以命名空间形式调用：",[214,2631,2632],{},"\u002Fmy-team-skills:code-review",[200,2634,2636],{"id":2635},"_52-版本管理","5.2 版本管理",[205,2638,2639],{},"Skill 的版本策略：",[344,2641,2642,2654,2663],{},[347,2643,2644,2647,2648,2650,2651,2653],{},[209,2645,2646],{},"显式版本","：在 ",[214,2649,2522],{}," 中设置 ",[214,2652,2577],{}," 字段，只有版本号更新时用户才会收到更新",[347,2655,2656,2659,2660,2662],{},[209,2657,2658],{},"隐式版本","：省略 ",[214,2661,2577],{}," 字段，Git 提交 SHA 作为版本标识，每次提交都视为新版本",[347,2664,2665,2668],{},[209,2666,2667],{},"Skill 级别版本","：自定义 Skill 可使用时间戳作为版本号",[200,2670,2672],{"id":2671},"_53-社区-skills-生态","5.3 社区 Skills 生态",[205,2674,2675,2676,2683],{},"Skills 遵循 ",[2677,2678,2682],"a",{"href":2679,"rel":2680},"https:\u002F\u002Fagentskills.io",[2681],"nofollow","Agent Skills"," 开放标准，该标准已被 30+ 平台采纳，包括：",[344,2685,2686,2689,2692,2695,2698,2701],{},[347,2687,2688],{},"Claude Code \u002F Claude.ai",[347,2690,2691],{},"GitHub Copilot \u002F VS Code",[347,2693,2694],{},"Cursor",[347,2696,2697],{},"Gemini CLI",[347,2699,2700],{},"OpenAI Codex CLI",[347,2702,2703],{},"Roo Code、Goose、OpenHands 等",[205,2705,2706],{},"社区 Skill 目录：",[344,2708,2709,2717,2725],{},[347,2710,2711,2716],{},[2677,2712,2715],{"href":2713,"rel":2714},"https:\u002F\u002Fskills.sh",[2681],"skills.sh","：Vercel Labs 维护的开放目录",[347,2718,2719,2724],{},[2677,2720,2723],{"href":2721,"rel":2722},"https:\u002F\u002Fskillsdirectory.com",[2681],"skillsdirectory.com","：带安全扫描的目录",[347,2726,2727,2728,2731],{},"GitHub 上的 ",[214,2729,2730],{},"anthropics\u002Fskills","：官方示例和文档 Skill",[205,2733,2734,2737,2738,2740,2741,2744],{},[209,2735,2736],{},"安全提醒","：Skill 可以包含可执行脚本，安装第三方 Skill 前务必审查 ",[214,2739,216],{}," 和 ",[214,2742,2743],{},"scripts\u002F"," 目录的内容。",[385,2746],{},[195,2748,2750],{"id":2749},"_6-实际案例","6. 实际案例",[200,2752,2754],{"id":2753},"_61-代码审查-skill","6.1 代码审查 Skill",[399,2756,2758],{"className":444,"code":2757,"language":446,"meta":407,"style":407},"---\nname: pr-review\ndescription: 审查 Pull Request，检查代码质量、安全性和团队规范符合度。当用户请求 review PR、审查代码变更、检查 pull request 时激活。\ncontext: fork\nagent: Explore\nallowed-tools: Read Grep Bash(git *)\n---\n\n# PR 审查流程\n\n## 前置检查\n1. 获取 PR diff：`git diff main...HEAD`\n2. 获取提交历史：`git log --oneline main..HEAD`\n3. 检查 CI 状态\n\n## 审查维度\n\n### 1. 功能正确性\n- 变更是否实现了 PR 描述中的目标\n- 边界条件是否被处理\n- 是否有回归风险\n\n### 2. 代码质量\n- 是否符合项目编码规范\n- 命名是否清晰、一致\n- 函数长度是否合理（建议 \u003C 50 行）\n- 复杂度是否可控\n\n### 3. 安全性\n- 用户输入是否被正确校验\n- 是否存在 SQL 注入、XSS 风险\n- 敏感信息是否被硬编码\n- 权限检查是否完整\n\n### 4. 测试\n- 新增代码是否有对应测试\n- 测试是否覆盖了正常路径和异常路径\n- 现有测试是否仍然通过\n\n## 输出格式\n\n对每个审查维度给出评分（通过\u002F警告\u002F阻塞），并提供：\n- 具体问题描述\n- 建议的修复方案（含代码示例）\n- 优先级（P0-必须修复 \u002F P1-建议修复 \u002F P2-可选优化）\n",[214,2759,2760,2764,2773,2782,2790,2798,2807,2811,2815,2820,2824,2829,2834,2839,2844,2848,2853,2857,2862,2869,2876,2883,2887,2892,2899,2906,2913,2920,2924,2929,2936,2943,2950,2957,2961,2966,2973,2980,2987,2991,2995,2999,3004,3011,3019],{"__ignoreMap":407},[450,2761,2762],{"class":452,"line":453},[450,2763,457],{"class":456},[450,2765,2766,2768,2770],{"class":452,"line":460},[450,2767,464],{"class":463},[450,2769,468],{"class":467},[450,2771,2772],{"class":471}," pr-review\n",[450,2774,2775,2777,2779],{"class":452,"line":479},[450,2776,482],{"class":463},[450,2778,468],{"class":467},[450,2780,2781],{"class":471}," 审查 Pull Request，检查代码质量、安全性和团队规范符合度。当用户请求 review PR、审查代码变更、检查 pull request 时激活。\n",[450,2783,2784,2786,2788],{"class":452,"line":490},[450,2785,561],{"class":463},[450,2787,468],{"class":467},[450,2789,1143],{"class":471},[450,2791,2792,2794,2796],{"class":452,"line":501},[450,2793,575],{"class":463},[450,2795,468],{"class":467},[450,2797,1152],{"class":471},[450,2799,2800,2802,2804],{"class":452,"line":516},[450,2801,533],{"class":463},[450,2803,468],{"class":467},[450,2805,2806],{"class":471}," Read Grep Bash(git *)\n",[450,2808,2809],{"class":452,"line":530},[450,2810,457],{"class":456},[450,2812,2813],{"class":452,"line":544},[450,2814,595],{"emptyLinePlaceholder":594},[450,2816,2817],{"class":452,"line":558},[450,2818,2819],{"class":475},"# PR 审查流程\n",[450,2821,2822],{"class":452,"line":572},[450,2823,595],{"emptyLinePlaceholder":594},[450,2825,2826],{"class":452,"line":586},[450,2827,2828],{"class":475},"## 前置检查\n",[450,2830,2831],{"class":452,"line":591},[450,2832,2833],{"class":471},"1. 获取 PR diff：`git diff main...HEAD`\n",[450,2835,2836],{"class":452,"line":598},[450,2837,2838],{"class":471},"2. 获取提交历史：`git log --oneline main..HEAD`\n",[450,2840,2841],{"class":452,"line":604},[450,2842,2843],{"class":471},"3. 检查 CI 状态\n",[450,2845,2846],{"class":452,"line":609},[450,2847,595],{"emptyLinePlaceholder":594},[450,2849,2850],{"class":452,"line":615},[450,2851,2852],{"class":475},"## 审查维度\n",[450,2854,2855],{"class":452,"line":620},[450,2856,595],{"emptyLinePlaceholder":594},[450,2858,2859],{"class":452,"line":626},[450,2860,2861],{"class":475},"### 1. 功能正确性\n",[450,2863,2864,2866],{"class":452,"line":632},[450,2865,675],{"class":467},[450,2867,2868],{"class":471}," 变更是否实现了 PR 描述中的目标\n",[450,2870,2871,2873],{"class":452,"line":638},[450,2872,675],{"class":467},[450,2874,2875],{"class":471}," 边界条件是否被处理\n",[450,2877,2878,2880],{"class":452,"line":644},[450,2879,675],{"class":467},[450,2881,2882],{"class":471}," 是否有回归风险\n",[450,2884,2885],{"class":452,"line":650},[450,2886,595],{"emptyLinePlaceholder":594},[450,2888,2889],{"class":452,"line":655},[450,2890,2891],{"class":475},"### 2. 代码质量\n",[450,2893,2894,2896],{"class":452,"line":661},[450,2895,675],{"class":467},[450,2897,2898],{"class":471}," 是否符合项目编码规范\n",[450,2900,2901,2903],{"class":452,"line":666},[450,2902,675],{"class":467},[450,2904,2905],{"class":471}," 命名是否清晰、一致\n",[450,2907,2908,2910],{"class":452,"line":672},[450,2909,675],{"class":467},[450,2911,2912],{"class":471}," 函数长度是否合理（建议 \u003C 50 行）\n",[450,2914,2915,2917],{"class":452,"line":681},[450,2916,675],{"class":467},[450,2918,2919],{"class":471}," 复杂度是否可控\n",[450,2921,2922],{"class":452,"line":689},[450,2923,595],{"emptyLinePlaceholder":594},[450,2925,2926],{"class":452,"line":1577},[450,2927,2928],{"class":475},"### 3. 安全性\n",[450,2930,2931,2933],{"class":452,"line":1582},[450,2932,675],{"class":467},[450,2934,2935],{"class":471}," 用户输入是否被正确校验\n",[450,2937,2938,2940],{"class":452,"line":1588},[450,2939,675],{"class":467},[450,2941,2942],{"class":471}," 是否存在 SQL 注入、XSS 风险\n",[450,2944,2945,2947],{"class":452,"line":1596},[450,2946,675],{"class":467},[450,2948,2949],{"class":471}," 敏感信息是否被硬编码\n",[450,2951,2952,2954],{"class":452,"line":1604},[450,2953,675],{"class":467},[450,2955,2956],{"class":471}," 权限检查是否完整\n",[450,2958,2959],{"class":452,"line":1612},[450,2960,595],{"emptyLinePlaceholder":594},[450,2962,2963],{"class":452,"line":1620},[450,2964,2965],{"class":475},"### 4. 测试\n",[450,2967,2968,2970],{"class":452,"line":1625},[450,2969,675],{"class":467},[450,2971,2972],{"class":471}," 新增代码是否有对应测试\n",[450,2974,2975,2977],{"class":452,"line":1631},[450,2976,675],{"class":467},[450,2978,2979],{"class":471}," 测试是否覆盖了正常路径和异常路径\n",[450,2981,2982,2984],{"class":452,"line":1639},[450,2983,675],{"class":467},[450,2985,2986],{"class":471}," 现有测试是否仍然通过\n",[450,2988,2989],{"class":452,"line":1647},[450,2990,595],{"emptyLinePlaceholder":594},[450,2992,2993],{"class":452,"line":1655},[450,2994,658],{"class":475},[450,2996,2997],{"class":452,"line":1663},[450,2998,595],{"emptyLinePlaceholder":594},[450,3000,3001],{"class":452,"line":1668},[450,3002,3003],{"class":471},"对每个审查维度给出评分（通过\u002F警告\u002F阻塞），并提供：\n",[450,3005,3007,3009],{"class":452,"line":3006},43,[450,3008,675],{"class":467},[450,3010,686],{"class":471},[450,3012,3014,3016],{"class":452,"line":3013},44,[450,3015,675],{"class":467},[450,3017,3018],{"class":471}," 建议的修复方案（含代码示例）\n",[450,3020,3022,3024],{"class":452,"line":3021},45,[450,3023,675],{"class":467},[450,3025,3026],{"class":471}," 优先级（P0-必须修复 \u002F P1-建议修复 \u002F P2-可选优化）\n",[200,3028,3030],{"id":3029},"_62-周报生成-skill","6.2 周报生成 Skill",[399,3032,3034],{"className":444,"code":3033,"language":446,"meta":407,"style":407},"---\nname: weekly-report\ndescription: 从 Git 提交历史生成本周工作周报。当用户请求生成周报、weekly report、本周总结时激活。\ndisable-model-invocation: true\nallowed-tools: Bash(git *)\n---\n\n# 周报生成器\n\n## 数据收集\n\n执行以下命令收集本周工作数据：\n\n```bash\n# 本周提交（按作者分组）\ngit log --since=\"1 week ago\" --author=\"$(git config user.name)\" --pretty=format:\"%h %s\" --no-merges\n\n# 变更文件统计\ngit diff --stat HEAD@\"{1 week ago}\"..HEAD\n\n# 参与的 PR\ngh pr list --search \"updated:>$(date -v-7d +%Y-%m-%d) author:@me\" --state all\n",[214,3035,3036,3040,3049,3058,3066,3075,3079,3083,3088,3092,3097,3101,3106,3110,3117,3122,3127,3131,3136,3141,3145,3150],{"__ignoreMap":407},[450,3037,3038],{"class":452,"line":453},[450,3039,457],{"class":456},[450,3041,3042,3044,3046],{"class":452,"line":460},[450,3043,464],{"class":463},[450,3045,468],{"class":467},[450,3047,3048],{"class":471}," weekly-report\n",[450,3050,3051,3053,3055],{"class":452,"line":479},[450,3052,482],{"class":463},[450,3054,468],{"class":467},[450,3056,3057],{"class":471}," 从 Git 提交历史生成本周工作周报。当用户请求生成周报、weekly report、本周总结时激活。\n",[450,3059,3060,3062,3064],{"class":452,"line":490},[450,3061,504],{"class":463},[450,3063,468],{"class":467},[450,3065,1041],{"class":509},[450,3067,3068,3070,3072],{"class":452,"line":501},[450,3069,533],{"class":463},[450,3071,468],{"class":467},[450,3073,3074],{"class":471}," Bash(git *)\n",[450,3076,3077],{"class":452,"line":516},[450,3078,457],{"class":456},[450,3080,3081],{"class":452,"line":530},[450,3082,595],{"emptyLinePlaceholder":594},[450,3084,3085],{"class":452,"line":544},[450,3086,3087],{"class":475},"# 周报生成器\n",[450,3089,3090],{"class":452,"line":558},[450,3091,595],{"emptyLinePlaceholder":594},[450,3093,3094],{"class":452,"line":572},[450,3095,3096],{"class":475},"## 数据收集\n",[450,3098,3099],{"class":452,"line":586},[450,3100,595],{"emptyLinePlaceholder":594},[450,3102,3103],{"class":452,"line":591},[450,3104,3105],{"class":471},"执行以下命令收集本周工作数据：\n",[450,3107,3108],{"class":452,"line":598},[450,3109,595],{"emptyLinePlaceholder":594},[450,3111,3112,3114],{"class":452,"line":604},[450,3113,1259],{"class":1186},[450,3115,3116],{"class":471},"bash\n",[450,3118,3119],{"class":452,"line":609},[450,3120,3121],{"class":475},"# 本周提交（按作者分组）\n",[450,3123,3124],{"class":452,"line":615},[450,3125,3126],{"class":471},"git log --since=\"1 week ago\" --author=\"$(git config user.name)\" --pretty=format:\"%h %s\" --no-merges\n",[450,3128,3129],{"class":452,"line":620},[450,3130,595],{"emptyLinePlaceholder":594},[450,3132,3133],{"class":452,"line":626},[450,3134,3135],{"class":475},"# 变更文件统计\n",[450,3137,3138],{"class":452,"line":632},[450,3139,3140],{"class":471},"git diff --stat HEAD@\"{1 week ago}\"..HEAD\n",[450,3142,3143],{"class":452,"line":638},[450,3144,595],{"emptyLinePlaceholder":594},[450,3146,3147],{"class":452,"line":644},[450,3148,3149],{"class":475},"# 参与的 PR\n",[450,3151,3152],{"class":452,"line":650},[450,3153,3154],{"class":471},"gh pr list --search \"updated:>$(date -v-7d +%Y-%m-%d) author:@me\" --state all\n",[195,3156,3157],{"id":3157},"报告结构",[399,3159,3161],{"className":1242,"code":3160,"language":1244,"meta":407,"style":407},"# 周报 $(date +%Y-%m-%d)\n\n## 本周完成\n- [项目\u002F模块] 具体工作内容（关联提交 hash）\n\n## 进行中\n- [项目\u002F模块] 当前进度和下一步计划\n\n## 遇到的问题\n- 问题描述及解决方案（如有）\n\n## 下周计划\n- 优先级排序的工作项\n",[214,3162,3163,3171,3175,3182,3198,3202,3209,3222,3226,3233,3240,3244,3251],{"__ignoreMap":407},[450,3164,3165,3168],{"class":452,"line":453},[450,3166,3167],{"class":467},"# ",[450,3169,3170],{"class":456},"周报 $(date +%Y-%m-%d)\n",[450,3172,3173],{"class":452,"line":460},[450,3174,595],{"emptyLinePlaceholder":594},[450,3176,3177,3179],{"class":452,"line":479},[450,3178,1251],{"class":467},[450,3180,3181],{"class":456},"本周完成\n",[450,3183,3184,3186,3189,3192,3195],{"class":452,"line":490},[450,3185,675],{"class":467},[450,3187,3188],{"class":467}," [",[450,3190,3191],{"class":471},"项目\u002F模块",[450,3193,3194],{"class":467},"]",[450,3196,3197],{"class":1186}," 具体工作内容（关联提交 hash）\n",[450,3199,3200],{"class":452,"line":501},[450,3201,595],{"emptyLinePlaceholder":594},[450,3203,3204,3206],{"class":452,"line":516},[450,3205,1251],{"class":467},[450,3207,3208],{"class":456},"进行中\n",[450,3210,3211,3213,3215,3217,3219],{"class":452,"line":530},[450,3212,675],{"class":467},[450,3214,3188],{"class":467},[450,3216,3191],{"class":471},[450,3218,3194],{"class":467},[450,3220,3221],{"class":1186}," 当前进度和下一步计划\n",[450,3223,3224],{"class":452,"line":544},[450,3225,595],{"emptyLinePlaceholder":594},[450,3227,3228,3230],{"class":452,"line":558},[450,3229,1251],{"class":467},[450,3231,3232],{"class":456},"遇到的问题\n",[450,3234,3235,3237],{"class":452,"line":572},[450,3236,675],{"class":467},[450,3238,3239],{"class":1186}," 问题描述及解决方案（如有）\n",[450,3241,3242],{"class":452,"line":586},[450,3243,595],{"emptyLinePlaceholder":594},[450,3245,3246,3248],{"class":452,"line":591},[450,3247,1251],{"class":467},[450,3249,3250],{"class":456},"下周计划\n",[450,3252,3253,3255],{"class":452,"line":598},[450,3254,675],{"class":467},[450,3256,3257],{"class":1186}," 优先级排序的工作项\n",[195,3259,3260],{"id":3260},"生成规则",[1298,3262,3263,3266,3269,3272],{},[347,3264,3265],{},"按项目\u002F模块分组，不要按时间顺序罗列",[347,3267,3268],{},"每个工作项标注关联的 commit hash 或 PR 链接",[347,3270,3271],{},"突出关键成果，省略 trivial 的改动",[347,3273,3274],{},"问题部分要诚实，不要回避遇到的困难",[399,3276,3279],{"className":3277,"code":3278,"language":404},[402],"\n### 6.3 数据处理 Skill\n\n```yaml\n---\nname: data-cleaning\ndescription: 清洗和标准化数据文件（CSV、JSON、Excel）。当用户请求清洗数据、data cleaning、处理脏数据、标准化格式时激活。\nallowed-tools: Read Write Bash(python3 *)\n---\n\n# 数据清洗工作流\n\n## 第一步：数据探查\n\n1. 读取数据文件，分析结构\n2. 生成数据质量报告：\n   - 总行数、列数\n   - 每列的数据类型\n   - 缺失值比例\n   - 重复行数量\n   - 异常值统计\n\n## 第二步：清洗规则\n\n根据数据探查结果，执行以下清洗操作：\n\n1. **处理缺失值**\n   - 数值列：用中位数填充或删除\n   - 类别列：用众数填充或标记为\"未知\"\n   - 时间列：用前后值插值\n\n2. **处理重复值**\n   - 删除完全重复的行\n   - 对业务关键列检查逻辑重复\n\n3. **标准化格式**\n   - 日期格式统一为 ISO 8601\n   - 文本去除首尾空格，统一大小写规则\n   - 数值单位统一\n\n4. **异常值处理**\n   - 使用 IQR 方法识别异常值\n   - 根据业务规则决定删除或修正\n\n## 第三步：输出\n\n1. 生成清洗后的数据文件\n2. 生成清洗报告，记录：\n   - 原始数据状态\n   - 应用的清洗规则\n   - 清洗前后的统计对比\n   - 被修改\u002F删除的数据明细\n",[214,3280,3278],{"__ignoreMap":407},[385,3282],{},[195,3284,3286],{"id":3285},"_7-最佳实践","7. 最佳实践",[200,3288,3290],{"id":3289},"_71-何时使用-skills-vs-直接对话","7.1 何时使用 Skills vs 直接对话",[229,3292,3293,3306],{},[232,3294,3295],{},[235,3296,3297,3300,3303],{},[238,3298,3299],{},"场景",[238,3301,3302],{},"建议方式",[238,3304,3305],{},"理由",[246,3307,3308,3319,3329,3340,3350,3360],{},[235,3309,3310,3313,3316],{},[251,3311,3312],{},"一次性任务",[251,3314,3315],{},"直接对话",[251,3317,3318],{},"无需创建 Skill 的开销",[235,3320,3321,3324,3326],{},[251,3322,3323],{},"简单任务（Claude 一次能做对）",[251,3325,3315],{},[251,3327,3328],{},"避免不必要的上下文加载",[235,3330,3331,3334,3337],{},[251,3332,3333],{},"团队编码规范",[251,3335,3336],{},"CLAUDE.md + Skill",[251,3338,3339],{},"CLAUDE.md 始终加载，Skill 按需加载",[235,3341,3342,3345,3347],{},[251,3343,3344],{},"可重复工作流（>3 次\u002F周）",[251,3346,2014],{},[251,3348,3349],{},"一次编写，持续受益",[235,3351,3352,3355,3357],{},[251,3353,3354],{},"需要特定步骤顺序的流程",[251,3356,2014],{},[251,3358,3359],{},"确保执行一致性",[235,3361,3362,3365,3368],{},[251,3363,3364],{},"多步骤复杂任务",[251,3366,3367],{},"Skill + subagent",[251,3369,3370],{},"隔离上下文，防止漂移",[200,3372,3374],{"id":3373},"_72-skill-设计原则","7.2 Skill 设计原则",[205,3376,3377],{},[209,3378,3379],{},"1. 渐进式披露（Progressive Disclosure）",[205,3381,3382],{},"Skill 采用三级加载机制，设计时应充分利用：",[344,3384,3385,3391,3397],{},[347,3386,3387,3390],{},[209,3388,3389],{},"Level 1 - YAML frontmatter","（始终加载）：只放触发判断所需的最少信息",[347,3392,3393,3396],{},[209,3394,3395],{},"Level 2 - SKILL.md body","（触发时加载）：核心指令，控制在 500 行以内",[347,3398,3399,3402],{},[209,3400,3401],{},"Level 3 - 链接文件","（按需加载）：详细参考、示例、长文档",[205,3404,3405],{},[209,3406,3407],{},"2. description 是触发器，不是摘要",[205,3409,3410,3412],{},[214,3411,482],{}," 字段的唯一目的是让 Claude 判断何时加载该 Skill。它必须包含：",[344,3414,3415,3418],{},[347,3416,3417],{},"明确的功能描述",[347,3419,3420],{},"具体的触发短语和场景",[205,3422,3423],{},"好的 description：",[399,3425,3427],{"className":444,"code":3426,"language":446,"meta":407,"style":407},"description: 分析 Figma 设计文件并生成开发者交接文档。当用户上传 .fig 文件、请求\"design specs\"、\"component documentation\"或\"design-to-code handoff\"时使用。\n",[214,3428,3429],{"__ignoreMap":407},[450,3430,3431,3433,3435],{"class":452,"line":453},[450,3432,482],{"class":463},[450,3434,468],{"class":467},[450,3436,3437],{"class":471}," 分析 Figma 设计文件并生成开发者交接文档。当用户上传 .fig 文件、请求\"design specs\"、\"component documentation\"或\"design-to-code handoff\"时使用。\n",[205,3439,3440],{},"差的 description：",[399,3442,3444],{"className":444,"code":3443,"language":446,"meta":407,"style":407},"description: 帮助处理项目相关任务。  # 太模糊，无触发词\n",[214,3445,3446],{"__ignoreMap":407},[450,3447,3448,3450,3452,3455],{"class":452,"line":453},[450,3449,482],{"class":463},[450,3451,468],{"class":467},[450,3453,3454],{"class":471}," 帮助处理项目相关任务。",[450,3456,3457],{"class":475},"  # 太模糊，无触发词\n",[205,3459,3460],{},[209,3461,3462],{},"3. 聚焦\"推 Claude 出舒适区\"的信息",[205,3464,3465],{},"Claude 已经知道如何写代码。Skill 应该专注于：",[344,3467,3468,3475,3481],{},[347,3469,3470,3471,3474],{},"你团队的",[209,3472,3473],{},"特定规范","（不是通用最佳实践）",[347,3476,3477,3480],{},[209,3478,3479],{},"常见陷阱","和错误模式（gotchas）",[347,3482,3483,3486],{},[209,3484,3485],{},"偏好选择","（如\"我们不用 lodash，用原生方法\"）",[205,3488,3489],{},[209,3490,3491],{},"4. 使用文件系统作为上下文工程",[205,3493,3494],{},"将详细参考、API 签名、模板拆分到单独文件中，Skill 主体保持精简：",[399,3496,3498],{"className":1242,"code":3497,"language":1244,"meta":407,"style":407},"\u003C!-- SKILL.md -->\n## 额外资源\n\n- 完整 API 细节，参见 [reference.md](reference.md)\n- 使用示例，参见 [examples.md](examples.md)\n- 验证脚本，参见 [scripts\u002Fvalidate.py](scripts\u002Fvalidate.py)\n",[214,3499,3500,3505,3512,3516,3538,3556],{"__ignoreMap":407},[450,3501,3502],{"class":452,"line":453},[450,3503,3504],{"class":475},"\u003C!-- SKILL.md -->\n",[450,3506,3507,3509],{"class":452,"line":460},[450,3508,1251],{"class":467},[450,3510,3511],{"class":456},"额外资源\n",[450,3513,3514],{"class":452,"line":479},[450,3515,595],{"emptyLinePlaceholder":594},[450,3517,3518,3520,3523,3526,3529,3532,3535],{"class":452,"line":490},[450,3519,675],{"class":467},[450,3521,3522],{"class":1186}," 完整 API 细节，参见 ",[450,3524,3525],{"class":467},"[",[450,3527,3528],{"class":471},"reference.md",[450,3530,3531],{"class":467},"](",[450,3533,3528],{"class":3534},"sDpXG",[450,3536,3537],{"class":467},")\n",[450,3539,3540,3542,3545,3547,3550,3552,3554],{"class":452,"line":501},[450,3541,675],{"class":467},[450,3543,3544],{"class":1186}," 使用示例，参见 ",[450,3546,3525],{"class":467},[450,3548,3549],{"class":471},"examples.md",[450,3551,3531],{"class":467},[450,3553,3549],{"class":3534},[450,3555,3537],{"class":467},[450,3557,3558,3560,3563,3565,3568,3570,3572],{"class":452,"line":516},[450,3559,675],{"class":467},[450,3561,3562],{"class":1186}," 验证脚本，参见 ",[450,3564,3525],{"class":467},[450,3566,3567],{"class":471},"scripts\u002Fvalidate.py",[450,3569,3531],{"class":467},[450,3571,3567],{"class":3534},[450,3573,3537],{"class":467},[205,3575,3576],{},[209,3577,3578],{},"5. 不要过度约束 Claude",[205,3580,3581],{},"Skill 需要在多种场景下复用，过于具体的指令会破坏边缘情况的处理：",[344,3583,3584,3594],{},[347,3585,3586,3587,3590,3591],{},"给出",[209,3588,3589],{},"意图和约束","，而不是",[209,3592,3593],{},"每一步的精确操作",[347,3595,3596],{},"像给人类同事写文档一样写 Skill",[200,3598,3600],{"id":3599},"_73-常见陷阱","7.3 常见陷阱",[205,3602,3603,413],{},[209,3604,3605],{},"description 预算问题",[205,3607,3608,3609,1096],{},"所有 Skill 的 description 共享约 2% 的上下文窗口（约 16,000 字符）。安装过多 Skill 会导致 description 被截断，Claude 失去触发关键词。建议每个项目保持 5-8 个自动触发 Skill，其余设为 ",[214,3610,3611],{},"disable-model-invocation: true",[205,3613,3614,413],{},[209,3615,3616],{},"YAML 多行 description",[205,3618,3619],{},"某些格式化工具（如 Prettier）会将单行 description 折成多行，Claude Code 的 YAML 解析器无法正确处理，导致 Skill 静默消失。保持 description 在单行内。",[205,3621,3622,413],{},[209,3623,3624],{},"Skill 与 CLAUDE.md 的边界",[344,3626,3627,3630,3633],{},[347,3628,3629],{},"通用知识（框架 API、项目架构）→ 放入 CLAUDE.md",[347,3631,3632],{},"可重复工作流（审查流程、部署步骤）→ 放入 Skill",[347,3634,3635],{},"Vercel 的实验表明：对于通用知识，直接嵌入 CLAUDE.md 的 8KB 压缩文档索引比 Skill 的按需加载效果更好（100% vs 79% 通过率）",[205,3637,3638,413],{},[209,3639,3640],{},"Eval 测试必须真实",[205,3642,3643],{},"测试 prompt 必须是你在实际工作中会说的那种话——包含错别字、缩写、不完整的句子。用 polished 的测试 prompt 会导致 Skill 在实际使用中表现不佳。",[385,3645],{},[195,3647,3649],{"id":3648},"_8-参考来源","8. 参考来源",[344,3651,3652,3659,3665,3672,3679,3686,3693,3700,3708,3716,3724,3732],{},[347,3653,3654],{},[2677,3655,3658],{"href":3656,"rel":3657},"https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fskills",[2681],"Claude Code Skills 官方文档",[347,3660,3661],{},[2677,3662,3664],{"href":2679,"rel":3663},[2681],"Agent Skills 开放标准",[347,3666,3667],{},[2677,3668,3671],{"href":3669,"rel":3670},"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fskills",[2681],"Anthropic Skills GitHub 仓库",[347,3673,3674],{},[2677,3675,3678],{"href":3676,"rel":3677},"https:\u002F\u002Fclaude.com\u002Fblog\u002Fskills",[2681],"Claude Skills 官方博客",[347,3680,3681],{},[2677,3682,3685],{"href":3683,"rel":3684},"https:\u002F\u002Fresources.anthropic.com\u002Fhubfs\u002FThe-Complete-Guide-to-Building-Skill-for-Claude.pdf",[2681],"The Complete Guide to Building Skills for Claude (PDF)",[347,3687,3688],{},[2677,3689,3692],{"href":3690,"rel":3691},"https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fagent-sdk\u002Fskills",[2681],"Claude Code Agent SDK Skills 文档",[347,3694,3695],{},[2677,3696,3699],{"href":3697,"rel":3698},"https:\u002F\u002Fplatform.claude.com\u002Fcookbook\u002Fskills-notebooks-01-skills-introduction",[2681],"Claude Skills Cookbook",[347,3701,3702,3707],{},[2677,3703,3706],{"href":3704,"rel":3705},"https:\u002F\u002Fmikhail.io\u002F2025\u002F10\u002Fclaude-code-skills\u002F",[2681],"Inside Claude Code Skills: Structure, prompts, invocation"," — Mikhail Shilkov",[347,3709,3710,3715],{},[2677,3711,3714],{"href":3712,"rel":3713},"https:\u002F\u002Fperevillega.com\u002Fposts\u002F2026-04-01-claude-code-skills-2-what-changed-what-works-what-to-watch-out-for\u002F",[2681],"What's New in Claude Code Skills 2.0"," — Pere Villega",[347,3717,3718,3723],{},[2677,3719,3722],{"href":3720,"rel":3721},"https:\u002F\u002Fdak-dev.vercel.app\u002Fblog\u002Fclaude-code-skills-agent-skills-standard",[2681],"Claude Code Skills and the Agent Skills Open Standard"," — Dakota Smith",[347,3725,3726,3731],{},[2677,3727,3730],{"href":3728,"rel":3729},"https:\u002F\u002Fwww.firecrawl.dev\u002Fblog\u002Fbest-claude-code-skills",[2681],"Best Claude Code Skills to Try in 2026"," — Firecrawl",[347,3733,3734,3739],{},[2677,3735,3738],{"href":3736,"rel":3737},"https:\u002F\u002Fclaude-world.com\u002Fzh-tw\u002Farticles\u002Fanthropic-official-skills-complete-guide\u002F",[2681],"Anthropic 官方 Skills 完整指南"," — ClaudeWorld",[3741,3742,3743],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sJsPd, html code.shiki .sJsPd{--shiki-light:#90A4AE90;--shiki-default:#EEFFFF90;--shiki-dark:#BABED890}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sDpXG, html code.shiki .sDpXG{--shiki-light:#E53935;--shiki-light-text-decoration:underline;--shiki-default:#F07178;--shiki-default-text-decoration:underline;--shiki-dark:#F07178;--shiki-dark-text-decoration:underline}",{"title":407,"searchDepth":453,"depth":460,"links":3745},[3746,3751,3758,3763,3764,3769,3774,3779,3783,3784,3785,3790],{"id":197,"depth":460,"text":198,"children":3747},[3748,3749,3750],{"id":202,"depth":479,"text":203},{"id":223,"depth":479,"text":224},{"id":338,"depth":479,"text":339},{"id":389,"depth":460,"text":390,"children":3752},[3753,3754,3755,3756,3757],{"id":393,"depth":479,"text":394},{"id":435,"depth":479,"text":436},{"id":697,"depth":479,"text":698},{"id":929,"depth":479,"text":930},{"id":1099,"depth":479,"text":1100},{"id":1288,"depth":460,"text":1289,"children":3759},[3760,3761,3762],{"id":1292,"depth":479,"text":1293},{"id":1320,"depth":479,"text":1321},{"id":1398,"depth":479,"text":1399},{"id":1673,"depth":460,"text":1673},{"id":1687,"depth":460,"text":1687,"children":3765},[3766,3767,3768],{"id":1690,"depth":479,"text":1691},{"id":1735,"depth":479,"text":1736},{"id":1965,"depth":479,"text":1966},{"id":1997,"depth":460,"text":1998,"children":3770},[3771,3772,3773],{"id":2001,"depth":479,"text":2002},{"id":2176,"depth":479,"text":2177},{"id":2291,"depth":479,"text":2292},{"id":2396,"depth":460,"text":2397,"children":3775},[3776,3777,3778],{"id":2400,"depth":479,"text":2401},{"id":2635,"depth":479,"text":2636},{"id":2671,"depth":479,"text":2672},{"id":2749,"depth":460,"text":2750,"children":3780},[3781,3782],{"id":2753,"depth":479,"text":2754},{"id":3029,"depth":479,"text":3030},{"id":3157,"depth":460,"text":3157},{"id":3260,"depth":460,"text":3260},{"id":3285,"depth":460,"text":3286,"children":3786},[3787,3788,3789],{"id":3289,"depth":479,"text":3290},{"id":3373,"depth":479,"text":3374},{"id":3599,"depth":479,"text":3600},{"id":3648,"depth":460,"text":3649},"将重复工作流编码为可复用模板","md",null,{"date":3795},"2026-04-26",{"title":112,"description":3791},"bumqAVc_roSwumbJsrKNsnzzXO3YE59y2OH7smBuCxQ",[3799,3801],{"title":108,"path":109,"stem":110,"description":3800,"children":-1},"项目记忆与团队知识沉淀",{"title":116,"path":117,"stem":118,"description":3802,"children":-1},"通过模型上下文协议连接外部世界",1777395310482]