<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>技能创建 on Agent Skills</title><link>https://agent-skills-zh.moranagent.com/skill-creation/</link><description>Recent content in 技能创建 on Agent Skills</description><generator>Hugo</generator><language>zh</language><atom:link href="https://agent-skills-zh.moranagent.com/skill-creation/index.xml" rel="self" type="application/rss+xml"/><item><title>快速入门</title><link>https://agent-skills-zh.moranagent.com/skill-creation/quickstart/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://agent-skills-zh.moranagent.com/skill-creation/quickstart/</guid><description>&lt;h1 id="快速入门"&gt;快速入门&lt;a class="anchor" href="#%e5%bf%ab%e9%80%9f%e5%85%a5%e9%97%a8"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;创建你的第一个智能体技能（Agent Skill），并在 VS Code 中查看其运行效果。&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;在本教程中，你将创建一个技能，使智能体能够使用随机数生成器进行掷骰子。&lt;/p&gt;
&lt;h2 id="前提条件"&gt;前提条件&lt;a class="anchor" href="#%e5%89%8d%e6%8f%90%e6%9d%a1%e4%bb%b6"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;安装了 &lt;a href="https://marketplace.visualstudio.com/items?itemName=GitHub.copilot"&gt;GitHub Copilot&lt;/a&gt; 的 &lt;a href="https://code.visualstudio.com/"&gt;VS Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote class='book-hint note'&gt;
&lt;p&gt;本教程使用 VS Code，但智能体技能（Agent Skills）是一种开放格式。同样的技能可以在任何兼容的智能体中使用，包括 Claude Code 和 OpenAI Codex.&lt;/p&gt;&lt;/blockquote&gt;&lt;h2 id="创建技能"&gt;创建技能&lt;a class="anchor" href="#%e5%88%9b%e5%bb%ba%e6%8a%80%e8%83%bd"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;技能是一个包含 &lt;code&gt;SKILL.md&lt;/code&gt; 文件的文件夹。VS Code 默认在 &lt;code&gt;.agents/skills/&lt;/code&gt; 路径下查找技能。在你的项目中创建 &lt;code&gt;.agents/skills/roll-dice/SKILL.md&lt;/code&gt; 文件：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;文件：&lt;code&gt;.agents/skills/roll-dice/SKILL.md&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;name: roll-dice
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;description: 使用随机数生成器掷骰子。当被要求掷骰子（如 d6、d20 等）、掷出骰子或生成随机掷骰结果时使用。
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;要进行掷骰子，请使用以下命令生成一个从 1 到指定面数的随机数：
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;```bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#66d9ef"&gt;$((&lt;/span&gt;RANDOM &lt;span style="color:#f92672"&gt;%&lt;/span&gt; &amp;lt;sides&amp;gt; &lt;span style="color:#f92672"&gt;+&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;```&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;```powershell
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Get-Random -Minimum &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; -Maximum (&amp;lt;sides&amp;gt; + &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;```&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;将 &lt;span style="color:#e6db74"&gt;`&amp;lt;sides&amp;gt;`&lt;/span&gt; 替换为骰子的面数（例如，标准骰子为 6，二十面骰为 20）。&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;就是这样 —— 一个文件，不到 20 行。以下是各部分的作用：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;name&lt;/code&gt;&lt;/strong&gt; — 技能的短标识符。必须与文件夹名称匹配。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;description&lt;/code&gt;&lt;/strong&gt; — 告诉智能体何时使用此技能。智能体据此决定是否激活该技能。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;正文 (The body)&lt;/strong&gt; — 技能激活时智能体遵循的指令。在这里，智能体被指示使用终端命令生成随机数，并将用户请求中的面数代入其中。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="尝试一下"&gt;尝试一下&lt;a class="anchor" href="#%e5%b0%9d%e8%af%95%e4%b8%80%e4%b8%8b"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;在 VS Code 中打开你的项目。&lt;/li&gt;
&lt;li&gt;打开 Copilot Chat 面板。&lt;/li&gt;
&lt;li&gt;从聊天面板底部的模式下拉菜单中选择 &lt;strong&gt;Agent&lt;/strong&gt; 模式。&lt;/li&gt;
&lt;li&gt;输入 &lt;code&gt;/skills&lt;/code&gt; 以确认 &lt;code&gt;roll-dice&lt;/code&gt; 出现在列表中。如果没出现，请检查文件是否位于项目根目录下的 &lt;code&gt;.agents/skills/roll-dice/SKILL.md&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;提问：&lt;strong&gt;“掷一个 d20 骰子”&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;智能体应该会激活 &lt;code&gt;roll-dice&lt;/code&gt; 技能。它可能会请求运行终端命令的权限 —— 请允许它。它将运行命令并返回一个 1 到 20 之间的随机数。&lt;/p&gt;</description></item><item><title>最佳实践</title><link>https://agent-skills-zh.moranagent.com/skill-creation/best-practices/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://agent-skills-zh.moranagent.com/skill-creation/best-practices/</guid><description>&lt;h1 id="技能创建者的最佳实践"&gt;技能创建者的最佳实践&lt;a class="anchor" href="#%e6%8a%80%e8%83%bd%e5%88%9b%e5%bb%ba%e8%80%85%e7%9a%84%e6%9c%80%e4%bd%b3%e5%ae%9e%e8%b7%b5"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;如何编写范围明确、且针对任务校准良好的技能。&lt;/p&gt;
&lt;h2 id="从真实的专业经验开始"&gt;从真实的专业经验开始&lt;a class="anchor" href="#%e4%bb%8e%e7%9c%9f%e5%ae%9e%e7%9a%84%e4%b8%93%e4%b8%9a%e7%bb%8f%e9%aa%8c%e5%bc%80%e5%a7%8b"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;技能创建中一个常见的陷阱是：在不提供特定领域上下文的情况下，要求 LLM 生成技能 —— 仅仅依赖于 LLM 的通用训练知识。其结果往往是模糊、通用的流程（如“妥善处理错误”、“遵循身份验证的最佳实践”），而不是那些使技能具有真正价值的具体 API 模式、边缘情况和项目约定。&lt;/p&gt;
&lt;p&gt;有效的技能往往根植于真实的专业经验。其关键在于将&lt;strong&gt;特定领域上下文&lt;/strong&gt;馈送到创建过程中。&lt;/p&gt;
&lt;h3 id="从实际任务中提取"&gt;从实际任务中提取&lt;a class="anchor" href="#%e4%bb%8e%e5%ae%9e%e9%99%85%e4%bb%bb%e5%8a%a1%e4%b8%ad%e6%8f%90%e5%8f%96"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;在与 Agent 的对话中完成一个真实任务，并在此过程中提供上下文、更正和偏好。然后，将这种可复用的模式提取成技能。请关注以下几点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;奏效的步骤&lt;/strong&gt; —— 指向成功的行动序列。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;你做出的更正&lt;/strong&gt; —— 你引导 Agent 方法的地方（例如，“使用库 X 而不是 Y”、“检查边缘情况 Z”）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;输入/输出格式&lt;/strong&gt; —— 数据进入和输出时的样子。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;你提供的上下文&lt;/strong&gt; —— Agent 之前不知道的特定于项目的实施、约定或约束。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="从现有项目资产中合成"&gt;从现有项目资产中合成&lt;a class="anchor" href="#%e4%bb%8e%e7%8e%b0%e6%9c%89%e9%a1%b9%e7%9b%ae%e8%b5%84%e4%ba%a7%e4%b8%ad%e5%90%88%e6%88%90"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;当你拥有大量的现有知识时，你可以将其提供给 LLM 并要求它合成为一项技能。通过你团队真实的事故报告和运行手册（Runbooks）合成的数据管道技能，其表现将优于从通用的“数据工程最佳实践”文章中合成的技能，因为它捕获了&lt;strong&gt;你的&lt;/strong&gt; Schema、故障模式和恢复程序。关键在于特定于项目的材料，而非通用参考资料。&lt;/p&gt;
&lt;p&gt;良好的源材料包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;内部文档、运行手册和风格指南。&lt;/li&gt;
&lt;li&gt;API 规范、Schema 和配置文件。&lt;/li&gt;
&lt;li&gt;代码评审建议和问题追踪器（捕获了反复出现的关注点和评审者的预期）。&lt;/li&gt;
&lt;li&gt;版本控制历史，特别是补丁和修复（通过实际发生的更改揭示模式）。&lt;/li&gt;
&lt;li&gt;真实的失败案例及其解决方案。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="通过实际执行进行微调"&gt;通过实际执行进行微调&lt;a class="anchor" href="#%e9%80%9a%e8%bf%87%e5%ae%9e%e9%99%85%e6%89%a7%e8%a1%8c%e8%bf%9b%e8%a1%8c%e5%be%ae%e8%b0%83"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;技能的初稿通常需要进一步细化。针对实际任务运行该技能，然后将结果（包括成功的和失败的）反馈回创建过程。思考：是什么触发了误报？遗漏了什么？哪些部分可以删减？&lt;/p&gt;
&lt;p&gt;即使仅进行一次“执行-修订”循环，也能显著提高质量；对于复杂的领域，通常需要进行多次迭代。&lt;/p&gt;
&lt;blockquote class='book-hint tip'&gt;
&lt;p&gt;阅读 Agent 的执行痕迹（Traces），而不仅仅是最终输出。如果 Agent 在生产力较低的步骤上浪费时间，常见原因包括：指令过于模糊（Agent 在找到可行方法前尝试了多种方法）、指令不适用于当前任务（但 Agent 仍然遵循了它们），或者在没有明确默认值的情况下提供了过多的选项。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;关于结构化的迭代方法（包括测试案例、断言和评分），请参阅&lt;a href="https://agent-skills-zh.moranagent.com/skill-creation/evaluating-skills"&gt;评估技能输出质量&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id="明智地消耗上下文"&gt;明智地消耗上下文&lt;a class="anchor" href="#%e6%98%8e%e6%99%ba%e5%9c%b0%e6%b6%88%e8%80%97%e4%b8%8a%e4%b8%8b%e6%96%87"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;一旦技能被激活，其完整的 &lt;code&gt;SKILL.md&lt;/code&gt; 正文将与对话历史、系统上下文和其他活动技能一起加载到 Agent 的上下文窗口中。你技能中的每一个 Token 都在与该窗口中的其他内容竞争 Agent 的注意力。&lt;/p&gt;</description></item><item><title>优化描述</title><link>https://agent-skills-zh.moranagent.com/skill-creation/optimizing-descriptions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://agent-skills-zh.moranagent.com/skill-creation/optimizing-descriptions/</guid><description>&lt;h1 id="优化-skill-描述"&gt;优化 Skill 描述&lt;a class="anchor" href="#%e4%bc%98%e5%8c%96-skill-%e6%8f%8f%e8%bf%b0"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;如何改进 Skill 的描述，使其在相关提示词下能够可靠地触发。&lt;/p&gt;
&lt;p&gt;Skill 只有在被激活时才能发挥作用。&lt;code&gt;SKILL.md&lt;/code&gt; 的 Frontmatter 中的 &lt;code&gt;description&lt;/code&gt; 字段是智能体决定是否为给定任务加载该 Skill 的主要机制。描述不足会导致 Skill 在该触发时未触发；描述过宽则会导致其在不该触发时触发。&lt;/p&gt;
&lt;p&gt;本指南介绍了如何系统地测试和改进 Skill 的描述，以提高触发准确性。&lt;/p&gt;
&lt;h2 id="skill-触发的工作原理"&gt;Skill 触发的工作原理&lt;a class="anchor" href="#skill-%e8%a7%a6%e5%8f%91%e7%9a%84%e5%b7%a5%e4%bd%9c%e5%8e%9f%e7%90%86"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;智能体使用&lt;a href="https://agent-skills-zh.moranagent.com/what-are-skills#%e6%8a%80%e8%83%bd%e5%a6%82%e4%bd%95%e8%bf%90%e4%bd%9c"&gt;渐进式披露&lt;/a&gt;来管理上下文。在启动时，它们仅加载每个可用 Skill 的 &lt;code&gt;name&lt;/code&gt; 和 &lt;code&gt;description&lt;/code&gt; —— 这足以让它们决定某个 Skill 何时可能相关。当用户的任务与描述匹配时，智能体就会将完整的 &lt;code&gt;SKILL.md&lt;/code&gt; 读取到上下文中并遵循其中的指令。&lt;/p&gt;
&lt;p&gt;这意味着描述承担了触发的全部重任。如果描述没能传达出 Skill 何时有用，智能体就不知道要调用它。&lt;/p&gt;
&lt;p&gt;一个重要的细微差别是：智能体通常只在任务需要的知识或能力超出了它们单独处理的范围时才会咨询 Skill。一个简单的、单步骤的请求（如“读取此 PDF”）可能不会触发 PDF Skill，即使描述完美匹配，因为智能体可以使用基础工具处理它。只有涉及专业知识的任务 —— 不熟悉的 API、特定领域的流转或不常见的格式 —— 才是精心编写的描述能发挥作用的地方。&lt;/p&gt;
&lt;h2 id="编写有效的描述"&gt;编写有效的描述&lt;a class="anchor" href="#%e7%bc%96%e5%86%99%e6%9c%89%e6%95%88%e7%9a%84%e6%8f%8f%e8%bf%b0"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;在测试之前，了解一份好的描述是什么样的会很有帮助。几个原则：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;使用祈使句。&lt;/strong&gt; 将描述框定为给智能体的指令：“当&amp;hellip;时使用此技能”，而不是“此技能可以&amp;hellip;”。智能体在决定是否采取行动，所以告诉它何时采取行动。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;专注于用户意图，而非具体实现。&lt;/strong&gt; 描述用户试图实现的目标，而不是 Skill 的内部机制。智能体会根据用户要求的任务进行匹配。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;宁可稍微“推销”一点。&lt;/strong&gt; 明确列出 Skill 适用的场景，包括用户没有直接点名该领域的情况：“即使他们没有明确提到‘CSV’或‘分析’。”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;保持简练。&lt;/strong&gt; 几句话到一小段通常是合适的 —— 长度足以覆盖 Skill 的范围，又短到不会在智能体面对众多 Skill 时使其上下文膨胀。&lt;a href="https://agent-skills-zh.moranagent.com/specification#description-field"&gt;规范&lt;/a&gt;强制限制为 1024 个字符。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="设计触发评估查询"&gt;设计触发评估查询&lt;a class="anchor" href="#%e8%ae%be%e8%ae%a1%e8%a7%a6%e5%8f%91%e8%af%84%e4%bc%b0%e6%9f%a5%e8%af%a2"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;要测试触发情况，你需要一组评估查询 —— 标记了“应该触发”或“不应该触发”该 Skill 的真实用户提示词。&lt;/p&gt;</description></item><item><title>评估输出质量</title><link>https://agent-skills-zh.moranagent.com/skill-creation/evaluating-skills/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://agent-skills-zh.moranagent.com/skill-creation/evaluating-skills/</guid><description>&lt;h1 id="评估输出质量"&gt;评估输出质量&lt;a class="anchor" href="#%e8%af%84%e4%bc%b0%e8%be%93%e5%87%ba%e8%b4%a8%e9%87%8f"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;如何使用评测驱动（eval-driven）的迭代来测试你的技能是否能产出高质量的输出。&lt;/p&gt;
&lt;p&gt;你编写了一个 Skill，在提示词上试了一下，看起来运行良好。但它是否能可靠地工作——在各种不同的提示词下、在边缘情况下，是否真的比没有 Skill 时表现更好？运行结构化的评估（Evals）可以回答这些问题，并为你提供系统性改进 Skill 的反馈闭环。&lt;/p&gt;
&lt;h2 id="设计测试用例"&gt;设计测试用例&lt;a class="anchor" href="#%e8%ae%be%e8%ae%a1%e6%b5%8b%e8%af%95%e7%94%a8%e4%be%8b"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;一个测试用例包含三个部分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;提示词 (Prompt)&lt;/strong&gt;：真实的普通用户消息——即用户实际会输入的内容。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;预期输出 (Expected output)&lt;/strong&gt;：对成功结果的人类可读描述。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;输入文件&lt;/strong&gt;（可选）：Skill 运行时需要配合使用的文件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;将测试用例存储在 Skill 目录下的 &lt;code&gt;evals/evals.json&lt;/code&gt; 中：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#f92672"&gt;&amp;#34;skill_name&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;csv-analyzer&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	&lt;span style="color:#f92672"&gt;&amp;#34;evals&amp;#34;&lt;/span&gt;: [
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#f92672"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#f92672"&gt;&amp;#34;prompt&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;我有一份 data/sales_2025.csv 的月度销售数据。你能帮我找出收入排名前三的月份并制作一张柱状图吗？&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#f92672"&gt;&amp;#34;expected_output&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;一张显示收入前三月份的柱状图，带有清晰的轴标签和数值说明。&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#f92672"&gt;&amp;#34;files&amp;#34;&lt;/span&gt;: [&lt;span style="color:#e6db74"&gt;&amp;#34;evals/files/sales_2025.csv&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		},
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#f92672"&gt;&amp;#34;id&amp;#34;&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#f92672"&gt;&amp;#34;prompt&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;我的下载文件夹里有一个叫 customers.csv 的文件，有些行缺少邮箱地址——你能清理一下并告诉我漏掉了多少个吗？&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#f92672"&gt;&amp;#34;expected_output&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;清理后的 CSV 文件（已处理缺失邮箱），并附带缺失数量的统计。&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;			&lt;span style="color:#f92672"&gt;&amp;#34;files&amp;#34;&lt;/span&gt;: [&lt;span style="color:#e6db74"&gt;&amp;#34;evals/files/customers.csv&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;		}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;	]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;编写高质量测试提示词的技巧：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;从 2-3 个用例开始&lt;/strong&gt;。在看到第一轮结果之前不要过度投入，以后可以再扩展。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;提示词要多样化&lt;/strong&gt;。使用不同的措辞、详细程度和语气。有些提示词可以比较随意（“嘿，帮我洗下这个 csv”），有些则要精确（“解析 data/input.csv，删除 B 列为空的行，并将结果写入 data/output.csv”）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;覆盖边缘情况&lt;/strong&gt;。至少包含一个测试边界条件的提示词——比如格式错误的输入、不寻常的请求，或者 Skill 指令可能产生歧义的情况。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;使用真实的上下文&lt;/strong&gt;。真实用户会提到文件路径、列名和个人背景。像“处理这个数据”这样模糊的提示词对于测试没有任何帮助。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;现在不用担心如何定义具体的通过/失败标准——只需关注提示词和预期输出。在看到第一轮运行结果后，你再添加详细的检查项（称为断言）。&lt;/p&gt;
&lt;h2 id="运行评估-evals"&gt;运行评估 (Evals)&lt;a class="anchor" href="#%e8%bf%90%e8%a1%8c%e8%af%84%e4%bc%b0-evals"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;核心模式是将每个测试用例运行两次：一次 &lt;strong&gt;使用 Skill&lt;/strong&gt;，一次 &lt;strong&gt;不使用 Skill&lt;/strong&gt;（或使用之前的版本）。这为你提供了一个对比的基准。&lt;/p&gt;</description></item><item><title>使用脚本</title><link>https://agent-skills-zh.moranagent.com/skill-creation/using-scripts/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://agent-skills-zh.moranagent.com/skill-creation/using-scripts/</guid><description>&lt;h1 id="在技能中使用脚本"&gt;在技能中使用脚本&lt;a class="anchor" href="#%e5%9c%a8%e6%8a%80%e8%83%bd%e4%b8%ad%e4%bd%bf%e7%94%a8%e8%84%9a%e6%9c%ac"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;如何在技能中运行命令并捆绑可执行脚本。&lt;/p&gt;
&lt;p&gt;Skill 可以指示 Agent 运行 Shell 命令，并在 &lt;code&gt;scripts/&lt;/code&gt; 目录中包含可重用的脚本。本指南涵盖了一次性命令、带有自身依赖项的自包含脚本，以及如何为 Agent 设计脚本接口。&lt;/p&gt;
&lt;h2 id="一次性命令"&gt;一次性命令&lt;a class="anchor" href="#%e4%b8%80%e6%ac%a1%e6%80%a7%e5%91%bd%e4%bb%a4"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;当现有的软件包已经能满足你的需求时，你可以直接在 &lt;code&gt;SKILL.md&lt;/code&gt; 指令中引用它，而无需 &lt;code&gt;scripts/&lt;/code&gt; 目录。许多生态系统都提供了在运行时自动解析依赖项的工具。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;uvx&lt;/strong&gt;: 随 &lt;a href="https://docs.astral.sh/uv/"&gt;uv&lt;/a&gt; 一起发布。在隔离环境中运行 Python 包，具有强大的缓存功能。
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;uvx ruff@0.8.0 check .
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;uvx black@24.10.0 .&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;pipx&lt;/strong&gt;: 在隔离环境中运行 Python 包。可通过 OS 包管理器安装。
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pipx run &lt;span style="color:#e6db74"&gt;&amp;#39;black==24.10.0&amp;#39;&lt;/span&gt; .
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pipx run &lt;span style="color:#e6db74"&gt;&amp;#39;ruff==0.8.0&amp;#39;&lt;/span&gt; check .&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;npx&lt;/strong&gt;: 运行 npm 包，按需下载。随 npm（及 Node.js）一起发布。
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npx eslint@9 --fix .
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;npx create-vite@6 my-app&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;bunx&lt;/strong&gt;: Bun 版本的 &lt;code&gt;npx&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;deno run&lt;/strong&gt;: 直接从 URL 或标识符运行脚本。需要权限标志（如 &lt;code&gt;--allow-read&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;go run&lt;/strong&gt;: 直接编译并运行 Go 包。内置于 &lt;code&gt;go&lt;/code&gt; 命令中。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;针对 Skill 中一次性命令的建议：&lt;/strong&gt;&lt;/p&gt;</description></item></channel></rss>