<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Agent Skill on VvVzzz Blog</title><link>https://godvvvzzz.github.io/tags/agent-skill/</link><description>Recent content in Agent Skill on VvVzzz Blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Wed, 09 Sep 2026 20:30:00 +0800</lastBuildDate><atom:link href="https://godvvvzzz.github.io/tags/agent-skill/index.xml" rel="self" type="application/rss+xml"/><item><title>go-modern-guidelines：教 AI Agent 写现代 Go</title><link>https://godvvvzzz.github.io/p/go-modern-guidelines/</link><pubDate>Wed, 09 Sep 2026 20:30:00 +0800</pubDate><guid>https://godvvvzzz.github.io/p/go-modern-guidelines/</guid><description>&#10; &lt;blockquote&gt;&#10; &lt;p&gt;收录于：&lt;a class="link" href="https://godvvvzzz.github.io/p/awesome-open-source-repos/" &gt;开源仓库收藏夹&lt;/a&gt;&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;仓库&lt;/strong&gt;：&lt;a class="link" href="https://github.com/JetBrains/go-modern-guidelines" target="_blank" rel="noopener"&#10; &gt;github.com/JetBrains/go-modern-guidelines&lt;/a&gt; · &lt;strong&gt;许可&lt;/strong&gt;：Apache-2.0 · &lt;strong&gt;来源&lt;/strong&gt;：JetBrains 官方项目&lt;/p&gt;&#10;&lt;h2 id="它是什么"&gt;&lt;a href="#%e5%ae%83%e6%98%af%e4%bb%80%e4%b9%88" class="header-anchor"&gt;&lt;/a&gt;它是什么&#10;&lt;/h2&gt;&lt;p&gt;给&lt;strong&gt;编码 Agent&lt;/strong&gt; 用的现代 Go 写法指南。装上之后，Agent 会：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;用 &lt;code&gt;max(a, b)&lt;/code&gt; 而不是 if-else 取大&lt;/li&gt;&#10;&lt;li&gt;用 &lt;code&gt;slices.Contains&lt;/code&gt; 而不是手写循环&lt;/li&gt;&#10;&lt;li&gt;用 &lt;code&gt;cmp.Or(a, b, c)&lt;/code&gt; 而不是一串 nil 检查&lt;/li&gt;&#10;&lt;li&gt;知道 &lt;code&gt;new(42)&lt;/code&gt; 取值指针、&lt;code&gt;errors.AsType[T](err)&lt;/code&gt; 类型安全错误匹配（Go 1.26）&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;覆盖 &lt;strong&gt;Go 1.0 → 1.27&lt;/strong&gt; 最有用的特性，包括 Go 官方 &lt;code&gt;modernize&lt;/code&gt; analyzer 的全部目标。完整清单在 &lt;a class="link" href="https://github.com/JetBrains/go-modern-guidelines/blob/main/FEATURES.md" target="_blank" rel="noopener"&#10; &gt;FEATURES.md&lt;/a&gt;。&lt;/p&gt;&#10;&lt;p&gt;Agent 行为约定：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;从 &lt;code&gt;go.mod&lt;/code&gt; &lt;strong&gt;检测项目 Go 版本&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;只用 ≤ 该版本的语言/标准库特性&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;优先现代惯用法&lt;/strong&gt;，而不是老写法&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="动机写得很准"&gt;&lt;a href="#%e5%8a%a8%e6%9c%ba%e5%86%99%e5%be%97%e5%be%88%e5%87%86" class="header-anchor"&gt;&lt;/a&gt;动机写得很准&#10;&lt;/h2&gt;&lt;p&gt;Agent 生成「过时 Go」几乎必然，原因只有两个：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;问题&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;含义&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;训练数据滞后&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;训练截止后加的 API（如 &lt;code&gt;errors.AsType[T]&lt;/code&gt;）模型根本没见过&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;频率偏置&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;见过也不一定用：语料里 &lt;code&gt;for i := 0; i &amp;lt; n; i++&lt;/code&gt; 远多于 &lt;code&gt;for i := range n&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;指南的解法很直接：&lt;strong&gt;给 Agent 一份显式参考&lt;/strong&gt;，而不是指望模型「自己想起来」。&lt;/p&gt;&#10;&lt;p&gt;这也和 Go 团队方向对齐：&lt;code&gt;modernize&lt;/code&gt; 负责把旧代码改新，这份指南负责让&lt;strong&gt;新代码一开始就新&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;h2 id="形态小-cli--多端插件"&gt;&lt;a href="#%e5%bd%a2%e6%80%81%e5%b0%8f-cli--%e5%a4%9a%e7%ab%af%e6%8f%92%e4%bb%b6" class="header-anchor"&gt;&lt;/a&gt;形态：小 CLI + 多端插件&#10;&lt;/h2&gt;&lt;p&gt;不是纯 Markdown 甩给模型——各 market 集成会在首次使用时 &lt;code&gt;go install&lt;/code&gt; 一个小 CLI，装进本地缓存（如 &lt;code&gt;~/.cache/go-modern-guidelines&lt;/code&gt;），&lt;strong&gt;不改动你的项目&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;p&gt;要求：PATH 上有 Go toolchain，目标 &lt;strong&gt;Go 1.25+&lt;/strong&gt;；更旧版本在 &lt;code&gt;GOTOOLCHAIN=auto&lt;/code&gt;（默认）下也能拉兼容 toolchain。&lt;/p&gt;&#10;&lt;p&gt;支持面：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;客户端&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;方式&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Junie&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/extensions marketplace add JetBrains/go-modern-guidelines&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Claude Code&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;/plugin marketplace add&lt;/code&gt; + &lt;code&gt;modern-go-guidelines@goland-claude-marketplace&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Codex&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;codex plugin marketplace add&lt;/code&gt; + &lt;code&gt;goland-codex-marketplace&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cursor&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;cursor-agent plugin marketplace add …&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;其他（OpenCode 等）&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;npx skills add JetBrains/go-modern-guidelines&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Claude Code 装完后 Go 任务会&lt;strong&gt;自动触发&lt;/strong&gt;；也可显式 &lt;code&gt;/modern-go-guidelines:use-modern-go&lt;/code&gt;。&lt;/p&gt;&#10;&lt;h2 id="值得学的两个工程细节"&gt;&lt;a href="#%e5%80%bc%e5%be%97%e5%ad%a6%e7%9a%84%e4%b8%a4%e4%b8%aa%e5%b7%a5%e7%a8%8b%e7%bb%86%e8%8a%82" class="header-anchor"&gt;&lt;/a&gt;值得学的两个工程细节&#10;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;1. 按 &lt;code&gt;go.mod&lt;/code&gt; 探测版本&lt;/strong&gt;&lt;br&gt;&#10;避免 Agent 在 Go 1.21 项目里写出 1.26 才有的 API——这是「知识」和「项目约束」分开的干净做法。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;2. 构建脚本与 Agent 隔离&lt;/strong&gt;&lt;br&gt;&#10;&lt;code&gt;scripts/dev-install.sh&lt;/code&gt; 故意和面向 Agent 的 wrapper 分开：&lt;strong&gt;Agent 永远不能触发本地构建&lt;/strong&gt;。本地调试靠 &lt;code&gt;make dev-install&lt;/code&gt; + &lt;code&gt;GO_MODERN_GUIDELINES_DEV=1&lt;/code&gt;，与 Claude Code / Codex / Cursor 走同一套缓存路径。&lt;/p&gt;&#10;&lt;h2 id="上手claude-code-示例"&gt;&lt;a href="#%e4%b8%8a%e6%89%8bclaude-code-%e7%a4%ba%e4%be%8b" class="header-anchor"&gt;&lt;/a&gt;上手（Claude Code 示例）&#10;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/plugin marketplace add JetBrains/go-modern-guidelines&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/plugin install modern-go-guidelines@goland-claude-marketplace&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;其他客户端安装与更新见 &lt;a class="link" href="https://github.com/JetBrains/go-modern-guidelines#instructions" target="_blank" rel="noopener"&#10; &gt;仓库 README&lt;/a&gt;。&lt;/p&gt;&#10;&lt;h2 id="适合谁"&gt;&lt;a href="#%e9%80%82%e5%90%88%e8%b0%81" class="header-anchor"&gt;&lt;/a&gt;适合谁&#10;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;用 Agent 写 Go，不想再 review「上古写法」&lt;/li&gt;&#10;&lt;li&gt;团队想统一「新项目直接用新惯用法」，而不是事后 &lt;code&gt;modernize&lt;/code&gt; 改&lt;/li&gt;&#10;&lt;li&gt;在做 &lt;strong&gt;language-specific Agent guideline&lt;/strong&gt; 时，可当范本看：动机、版本门控、多端分发、CLI 与 agent 隔离&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="和收藏夹里其他项目的关系"&gt;&lt;a href="#%e5%92%8c%e6%94%b6%e8%97%8f%e5%a4%b9%e9%87%8c%e5%85%b6%e4%bb%96%e9%a1%b9%e7%9b%ae%e7%9a%84%e5%85%b3%e7%b3%bb" class="header-anchor"&gt;&lt;/a&gt;和收藏夹里其他项目的关系&#10;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;同为「给 Agent 的技能/指南」→ &lt;a class="link" href="https://godvvvzzz.github.io/p/pptx-generator/" &gt;pptx-generator&lt;/a&gt;（产物向）vs 本文（语言向）&lt;/li&gt;&#10;&lt;li&gt;跑在各种 Harness 里 → &lt;a class="link" href="https://godvvvzzz.github.io/p/pi/" &gt;Pi&lt;/a&gt;、Claude Code、Codex 等&lt;/li&gt;&#10;&lt;li&gt;指南/技能沉淀与检索 → &lt;a class="link" href="https://godvvvzzz.github.io/p/openviking/" &gt;OpenViking&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;&lt;em&gt;最后更新：2026-09-09。信息基于公开 README 与仓库状态，使用前请以官方文档为准。&lt;/em&gt;&lt;/p&gt;&#10;</description></item><item><title>pptx-generator：给编码 Agent 用的 PPT 生成技能</title><link>https://godvvvzzz.github.io/p/pptx-generator/</link><pubDate>Wed, 09 Sep 2026 20:20:00 +0800</pubDate><guid>https://godvvvzzz.github.io/p/pptx-generator/</guid><description>&#10; &lt;blockquote&gt;&#10; &lt;p&gt;收录于：&lt;a class="link" href="https://godvvvzzz.github.io/p/awesome-open-source-repos/" &gt;开源仓库收藏夹&lt;/a&gt;&lt;/p&gt;&#10;&#10; &lt;/blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;技能路径&lt;/strong&gt;：&lt;a class="link" href="https://github.com/MiniMax-AI/skills/tree/main/skills/pptx-generator" target="_blank" rel="noopener"&#10; &gt;MiniMax-AI/skills · pptx-generator&lt;/a&gt;&lt;br&gt;&#10;&lt;strong&gt;所在仓库&lt;/strong&gt;：&lt;a class="link" href="https://github.com/MiniMax-AI/skills" target="_blank" rel="noopener"&#10; &gt;MiniMax-AI/skills&lt;/a&gt; · &lt;strong&gt;许可&lt;/strong&gt;：MIT&lt;/p&gt;&#10;&lt;h2 id="它是什么"&gt;&lt;a href="#%e5%ae%83%e6%98%af%e4%bb%80%e4%b9%88" class="header-anchor"&gt;&lt;/a&gt;它是什么&#10;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;pptx-generator&lt;/code&gt; 是 MiniMax 官方 skills 集合里的一项 &lt;strong&gt;Agent Skill&lt;/strong&gt;，覆盖 PowerPoint 全流程：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;任务&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;做法&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;读 / 分析现有 PPT&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;python -m markitdown presentation.pptx&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;基于模板编辑&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;XML 工作流（见 &lt;code&gt;references/editing.md&lt;/code&gt;）&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;从零创建&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;PptxGenJS&lt;/strong&gt;，按页面类型生成 slide 模块再编译&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;它不是「让模型随便画几页」，而是一套&lt;strong&gt;有约束的生成规范&lt;/strong&gt;：设计系统、五类页面、主题契约、页码规则、QA 流程都写死在 skill 里。&lt;/p&gt;&#10;&lt;h2 id="为什么值得看"&gt;&lt;a href="#%e4%b8%ba%e4%bb%80%e4%b9%88%e5%80%bc%e5%be%97%e7%9c%8b" class="header-anchor"&gt;&lt;/a&gt;为什么值得看&#10;&lt;/h2&gt;&lt;h3 id="1-五类页面--视觉多样性"&gt;&lt;a href="#1-%e4%ba%94%e7%b1%bb%e9%a1%b5%e9%9d%a2--%e8%a7%86%e8%a7%89%e5%a4%9a%e6%a0%b7%e6%80%a7" class="header-anchor"&gt;&lt;/a&gt;1. 五类页面 + 视觉多样性&#10;&lt;/h3&gt;&lt;p&gt;所有 slide 必须归入五种类型之一：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Cover&lt;/strong&gt; 封面&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;TOC&lt;/strong&gt; 目录&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Section Divider&lt;/strong&gt; 分节页&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Content&lt;/strong&gt; 内容页&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Summary&lt;/strong&gt; 总结页&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;并明确要求：&lt;strong&gt;不要连续多页用同一 layout&lt;/strong&gt;——避免 Agent 生成「十页长得一样」的 PPT。&lt;/p&gt;&#10;&lt;h3 id="2-theme-对象契约强制"&gt;&lt;a href="#2-theme-%e5%af%b9%e8%b1%a1%e5%a5%91%e7%ba%a6%e5%bc%ba%e5%88%b6" class="header-anchor"&gt;&lt;/a&gt;2. Theme 对象契约（强制）&#10;&lt;/h3&gt;&lt;p&gt;编译脚本向每页传入固定五色主题：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Key&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;用途&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;primary&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;最深色，标题&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;secondary&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;深色强调、正文&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;accent&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;中间调强调&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;light&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;浅色强调&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;bg&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;背景&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;&lt;strong&gt;禁止&lt;/strong&gt;自创 &lt;code&gt;background&lt;/code&gt; / &lt;code&gt;text&lt;/code&gt; / &lt;code&gt;muted&lt;/code&gt; 等 key。Agent 被死死绑在统一主题模型上，多页并行生成时才不会各画各的。&lt;/p&gt;&#10;&lt;h3 id="3-一页一文件可并行"&gt;&lt;a href="#3-%e4%b8%80%e9%a1%b5%e4%b8%80%e6%96%87%e4%bb%b6%e5%8f%af%e5%b9%b6%e8%a1%8c" class="header-anchor"&gt;&lt;/a&gt;3. 一页一文件，可并行&#10;&lt;/h3&gt;&lt;p&gt;每页是独立可运行的 JS：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;createSlide&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pres&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;slide&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;pres&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addSlide&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;// ...使用 theme.primary / theme.bg 等&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;slide&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createSlide&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;slideConfig&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#10;&lt;li&gt;函数&lt;strong&gt;必须同步&lt;/strong&gt;（不能 async）&lt;/li&gt;&#10;&lt;li&gt;文件可单独 &lt;code&gt;node slide-01.js&lt;/code&gt; 预览&lt;/li&gt;&#10;&lt;li&gt;有 subagent 时最多 5 页并发生成&lt;/li&gt;&#10;&lt;li&gt;最后 &lt;code&gt;compile.js&lt;/code&gt; 统一写入 &lt;code&gt;output/presentation.pptx&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;这是「结构化输出 + 模块化并行」在文档生成上的干净落地。&lt;/p&gt;&#10;&lt;h3 id="4-设计系统不是空话"&gt;&lt;a href="#4-%e8%ae%be%e8%ae%a1%e7%b3%bb%e7%bb%9f%e4%b8%8d%e6%98%af%e7%a9%ba%e8%af%9d" class="header-anchor"&gt;&lt;/a&gt;4. 设计系统不是空话&#10;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;references/&lt;/code&gt; 里拆得很细：&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;文件&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;内容&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;slide-types.md&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;五类页面 + 额外 layout 模式&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;design-system.md&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;色板、字体、Sharp/Soft/Rounded/Pill 风格配方、排版间距&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;editing.md&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;模板编辑、XML、常见坑&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;pitfalls.md&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;QA 流程、PptxGenJS 陷阱&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;code&gt;pptxgenjs.md&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;完整 API 参考&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;中文固定 &lt;strong&gt;Microsoft YaHei&lt;/strong&gt;，英文默认 Arial；16:9（10&amp;quot; × 5.625&amp;quot;）；页码徽章除封面外必有，且只显示当前页码（不是 &lt;code&gt;3/12&lt;/code&gt;）。&lt;/p&gt;&#10;&lt;h3 id="5-和只会改-markdown-的-skill不同"&gt;&lt;a href="#5-%e5%92%8c%e5%8f%aa%e4%bc%9a%e6%94%b9-markdown-%e7%9a%84-skill%e4%b8%8d%e5%90%8c" class="header-anchor"&gt;&lt;/a&gt;5. 和「只会改 Markdown 的 Skill」不同&#10;&lt;/h3&gt;&lt;p&gt;多数 Agent Skill 只动文本。这个 skill 管的是&lt;strong&gt;二进制办公文档&lt;/strong&gt;：生成、改、读，还带 QA 门槛。属于 productivity 类 skill 里工程化程度较高的样本。&lt;/p&gt;&#10;&lt;h2 id="上手claude-code"&gt;&lt;a href="#%e4%b8%8a%e6%89%8bclaude-code" class="header-anchor"&gt;&lt;/a&gt;上手（Claude Code）&#10;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;claude plugin marketplace add https://github.com/MiniMax-AI/skills&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;claude plugin install minimax-skills&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;依赖：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install &lt;span class="s2"&gt;&amp;#34;markitdown[pptx]&amp;#34;&lt;/span&gt; &lt;span class="c1"&gt;# 读 PPT&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm install -g pptxgenjs &lt;span class="c1"&gt;# 从零创建&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Cursor / Codex / OpenCode 的安装方式见 &lt;a class="link" href="https://github.com/MiniMax-AI/skills#installation" target="_blank" rel="noopener"&#10; &gt;仓库 README&lt;/a&gt;。&lt;/p&gt;&#10;&lt;p&gt;触发词：PPT、PPTX、PowerPoint、presentation、slide、deck。&lt;/p&gt;&#10;&lt;h2 id="同仓库其他技能顺带一提"&gt;&lt;a href="#%e5%90%8c%e4%bb%93%e5%ba%93%e5%85%b6%e4%bb%96%e6%8a%80%e8%83%bd%e9%a1%ba%e5%b8%a6%e4%b8%80%e6%8f%90" class="header-anchor"&gt;&lt;/a&gt;同仓库其他技能（顺带一提）&#10;&lt;/h2&gt;&lt;p&gt;MiniMax skills 里还有同一思路的办公套件：&lt;code&gt;minimax-pdf&lt;/code&gt;、&lt;code&gt;minimax-xlsx&lt;/code&gt;、&lt;code&gt;minimax-docx&lt;/code&gt;，以及前端/全端/移动端/shader 等开发技能。如果你要做「Agent 生成 Office 全家桶」，可以整包接入再按需挑。&lt;/p&gt;&#10;&lt;h2 id="适合谁"&gt;&lt;a href="#%e9%80%82%e5%90%88%e8%b0%81" class="header-anchor"&gt;&lt;/a&gt;适合谁&#10;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;想让 Claude Code / Codex 直接产出&lt;strong&gt;结构稳定、风格统一&lt;/strong&gt;的 PPT，而不是随机排版&lt;/li&gt;&#10;&lt;li&gt;需要「模板编辑 + 从零生成 + 读回分析」三条链路&lt;/li&gt;&#10;&lt;li&gt;在研究 Agent Skill 怎么管二进制产物、怎么做多页并行、怎么定 theme 契约&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="和收藏夹里其他项目的关系"&gt;&lt;a href="#%e5%92%8c%e6%94%b6%e8%97%8f%e5%a4%b9%e9%87%8c%e5%85%b6%e4%bb%96%e9%a1%b9%e7%9b%ae%e7%9a%84%e5%85%b3%e7%b3%bb" class="header-anchor"&gt;&lt;/a&gt;和收藏夹里其他项目的关系&#10;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;Skill 被 Multica 等平台当作可复用剧本 → &lt;a class="link" href="https://godvvvzzz.github.io/p/multica/" &gt;Multica&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;运行这些 Skill 的编码 Agent → &lt;a class="link" href="https://godvvvzzz.github.io/p/pi/" &gt;Pi&lt;/a&gt;、Claude Code 等&lt;/li&gt;&#10;&lt;li&gt;Skill 本体的知识/记忆沉淀 → &lt;a class="link" href="https://godvvvzzz.github.io/p/openviking/" &gt;OpenViking&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;&lt;em&gt;最后更新：2026-09-09。信息基于公开 SKILL.md 与仓库 README，使用前请以官方为准。&lt;/em&gt;&lt;/p&gt;&#10;</description></item><item><title>从 skill-creator 看 Agent Skill 的 7 个设计原则</title><link>https://godvvvzzz.github.io/p/agent-skill-best-practices/</link><pubDate>Tue, 18 Aug 2026 00:00:00 +0800</pubDate><guid>https://godvvvzzz.github.io/p/agent-skill-best-practices/</guid><description>&lt;img src="https://godvvvzzz.github.io/p/agent-skill-best-practices/cover_hu_8912961d71e0dff3.webp" alt="Featured image of post 从 skill-creator 看 Agent Skill 的 7 个设计原则" /&gt;&lt;p&gt;Agent Skill 可以理解为一份给智能体使用的领域工作手册：它不仅告诉模型“做什么”，还提供判断原则、操作步骤、参考资料和可重复执行的脚本。&lt;/p&gt;&#10;&lt;p&gt;一个 Skill 是否好用，通常不取决于篇幅，而取决于三个问题：模型能否在正确的场景发现它、加载后能否迅速找到需要的信息、遇到新情况时能否做出合理判断。&lt;/p&gt;&#10;&lt;p&gt;结合 &lt;code&gt;skill-creator&lt;/code&gt; 的组织方式，我把其中最值得复用的思路整理成七条设计原则。&lt;/p&gt;&#10;&lt;h2 id="用三层结构实现渐进式加载"&gt;&lt;a href="#%e7%94%a8%e4%b8%89%e5%b1%82%e7%bb%93%e6%9e%84%e5%ae%9e%e7%8e%b0%e6%b8%90%e8%bf%9b%e5%bc%8f%e5%8a%a0%e8%bd%bd" class="header-anchor"&gt;&lt;/a&gt;用三层结构实现渐进式加载&#10;&lt;/h2&gt;&lt;p&gt;Skill 不应该把所有背景知识一次性塞进上下文。更合适的结构是按需逐层加载：&lt;/p&gt;&#10;&lt;pre class="mermaid" style="visibility:hidden"&gt;flowchart TD&#10; A["第一层：name + description&lt;br/&gt;用于发现与路由"] --&gt; B["第二层：SKILL.md&lt;br/&gt;核心流程与判断原则"]&#10; B --&gt; C["第三层：references / scripts / assets&lt;br/&gt;只在具体任务需要时加载"]&lt;/pre&gt;&lt;p&gt;第一层要足够短，让系统能在大量 Skill 中快速判断相关性；第二层包含完成任务所需的主流程；第三层承载较长的文档、模板、示例和确定性工具。&lt;/p&gt;&#10;&lt;p&gt;这种分层解决了两个相反的问题：信息太少时模型无法完成工作，信息太多时关键指令又容易被淹没。&lt;/p&gt;&#10;&lt;p&gt;一个实用的目录可以是：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;my-skill/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── SKILL.md&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── references/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── api.md&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── style-guide.md&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── scripts/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── validate.py&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── assets/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── template.md&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;SKILL.md&lt;/code&gt; 负责导航，不必复制所有细节。需要 API 时读 &lt;code&gt;references/api.md&lt;/code&gt;，需要校验时运行 &lt;code&gt;scripts/validate.py&lt;/code&gt;，需要产物骨架时复用 &lt;code&gt;assets/template.md&lt;/code&gt;。&lt;/p&gt;&#10;&lt;h2 id="把-description-当作路由规则"&gt;&lt;a href="#%e6%8a%8a-description-%e5%bd%93%e4%bd%9c%e8%b7%af%e7%94%b1%e8%a7%84%e5%88%99" class="header-anchor"&gt;&lt;/a&gt;把 description 当作路由规则&#10;&lt;/h2&gt;&lt;p&gt;很多 Skill 写得很完整，却经常不触发，问题通常出在 description。&lt;/p&gt;&#10;&lt;p&gt;description 不是给人看的宣传语，而是智能体判断“此刻是否应该加载这个 Skill”的路由规则。它至少要回答：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;这个 Skill 能完成什么任务；&lt;/li&gt;&#10;&lt;li&gt;用户会在什么场景下需要它；&lt;/li&gt;&#10;&lt;li&gt;哪些相近场景不属于它。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;不够有效的写法：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Helps with documents.&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;更清楚的写法：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;&amp;gt;-&lt;/span&gt;&lt;span class="sd"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; Create, edit, redline, and review Word documents.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; Use when the user asks to produce or modify a .docx file,&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; preserve document styles, or inspect tracked changes.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="sd"&gt; Do not use for PDFs or spreadsheets.&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;前者只提供一个模糊主题，后者给出了能力、触发场景和边界。模型不需要猜“documents”究竟指什么。&lt;/p&gt;&#10;&lt;p&gt;与其堆积关键词，不如描述用户真实会提出的请求。关键词覆盖不到表达方式的变化，场景描述更容易表达意图。&lt;/p&gt;&#10;&lt;h2 id="解释-why给模型留下判断空间"&gt;&lt;a href="#%e8%a7%a3%e9%87%8a-why%e7%bb%99%e6%a8%a1%e5%9e%8b%e7%95%99%e4%b8%8b%e5%88%a4%e6%96%ad%e7%a9%ba%e9%97%b4" class="header-anchor"&gt;&lt;/a&gt;解释 Why，给模型留下判断空间&#10;&lt;/h2&gt;&lt;p&gt;Skill 需要约束，但不能只有 &lt;code&gt;MUST&lt;/code&gt; 和 &lt;code&gt;NEVER&lt;/code&gt;。当规则背后没有原因时，模型只能机械匹配；一旦遇到作者没写过的场景，它就不知道应该坚持还是变通。&lt;/p&gt;&#10;&lt;p&gt;例如：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;优先复用现有模板，因为模板已经包含品牌字体、页边距和层级规范。&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;只有当模板无法表达用户明确要求的版式时，才创建新结构。&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这段话同时给出了默认动作、原因和例外条件。模型面对新任务时，仍然可以沿着目标做判断。&lt;/p&gt;&#10;&lt;p&gt;原则不等于宽泛口号。好的原则应包含：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;想保护的目标；&lt;/li&gt;&#10;&lt;li&gt;推荐的默认行为；&lt;/li&gt;&#10;&lt;li&gt;允许偏离的条件；&lt;/li&gt;&#10;&lt;li&gt;偏离后仍需满足的底线。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="同时测试用了-skill和没用-skill"&gt;&lt;a href="#%e5%90%8c%e6%97%b6%e6%b5%8b%e8%af%95%e7%94%a8%e4%ba%86-skill%e5%92%8c%e6%b2%a1%e7%94%a8-skill" class="header-anchor"&gt;&lt;/a&gt;同时测试“用了 Skill”和“没用 Skill”&#10;&lt;/h2&gt;&lt;p&gt;只验证最终答案看起来是否不错，无法证明 Skill 真正带来了价值。更有效的测试是为同一任务保留两组结果：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;with_skill&lt;/code&gt;：加载 Skill 后执行；&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;without_skill&lt;/code&gt;：不加载 Skill，作为基线。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;img alt="Skill 测试与迭代闭环" class="gallery-image" data-flex-basis="294px" data-flex-grow="122" data-title-escaped="同一任务分别运行 with_skill 和 without_skill，并持续比较结果" height="3016" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://godvvvzzz.github.io/p/agent-skill-best-practices/testing-loop_hu_b1d23ac4453884c7.png" srcset="https://godvvvzzz.github.io/p/agent-skill-best-practices/testing-loop_hu_6645a0d11d4e752f.png 800w, https://godvvvzzz.github.io/p/agent-skill-best-practices/testing-loop_hu_8c6ad2ff2b664ff.png 1600w, https://godvvvzzz.github.io/p/agent-skill-best-practices/testing-loop_hu_a3dde75bbc65e04f.png 2400w, https://godvvvzzz.github.io/p/agent-skill-best-practices/testing-loop_hu_b1d23ac4453884c7.png 3696w" title="同一任务分别运行 with_skill 和 without_skill，并持续比较结果" width="3696"&gt;&lt;/p&gt;&#10;&lt;p&gt;比较时可以同时使用两类检查：&lt;/p&gt;&#10;&lt;h3 id="可程序化断言"&gt;&lt;a href="#%e5%8f%af%e7%a8%8b%e5%ba%8f%e5%8c%96%e6%96%ad%e8%a8%80" class="header-anchor"&gt;&lt;/a&gt;可程序化断言&#10;&lt;/h3&gt;&lt;p&gt;适合验证确定性条件，例如：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;目标文件是否生成；&lt;/li&gt;&#10;&lt;li&gt;front matter 是否包含必填字段；&lt;/li&gt;&#10;&lt;li&gt;输出中是否泄露敏感路径；&lt;/li&gt;&#10;&lt;li&gt;指定命令是否退出成功；&lt;/li&gt;&#10;&lt;li&gt;产物能否通过构建或格式校验。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="人工或模型评审"&gt;&lt;a href="#%e4%ba%ba%e5%b7%a5%e6%88%96%e6%a8%a1%e5%9e%8b%e8%af%84%e5%ae%a1" class="header-anchor"&gt;&lt;/a&gt;人工或模型评审&#10;&lt;/h3&gt;&lt;p&gt;适合评估更主观的质量，例如：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;结构是否清楚；&lt;/li&gt;&#10;&lt;li&gt;结论是否有足够证据；&lt;/li&gt;&#10;&lt;li&gt;是否出现无意义的重复；&lt;/li&gt;&#10;&lt;li&gt;风格是否符合目标读者；&lt;/li&gt;&#10;&lt;li&gt;面对异常场景时判断是否合理。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;如果两组结果没有稳定差异，说明 Skill 可能只是增加了上下文，并没有真正改变决策或产物质量。&lt;/p&gt;&#10;&lt;h2 id="防止测试驱动出过拟合规则"&gt;&lt;a href="#%e9%98%b2%e6%ad%a2%e6%b5%8b%e8%af%95%e9%a9%b1%e5%8a%a8%e5%87%ba%e8%bf%87%e6%8b%9f%e5%90%88%e8%a7%84%e5%88%99" class="header-anchor"&gt;&lt;/a&gt;防止测试驱动出过拟合规则&#10;&lt;/h2&gt;&lt;p&gt;测试发现问题后，最直接的反应是再加一条特殊规则。但如果每个失败案例都对应一条补丁，Skill 很快会变成长而脆弱的条件列表。&lt;/p&gt;&#10;&lt;p&gt;&lt;img alt="过拟合规则与泛化原则的区别" class="gallery-image" data-flex-basis="343px" data-flex-grow="143" data-title-escaped="从失败案例中提炼可泛化原则，而不是堆叠特殊规则" height="2584" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://godvvvzzz.github.io/p/agent-skill-best-practices/generalization_hu_47d941200b992c59.png" srcset="https://godvvvzzz.github.io/p/agent-skill-best-practices/generalization_hu_bd75ebc0e875690f.png 800w, https://godvvvzzz.github.io/p/agent-skill-best-practices/generalization_hu_e99355cb26724e0d.png 1600w, https://godvvvzzz.github.io/p/agent-skill-best-practices/generalization_hu_d85668f80f3b89a6.png 2400w, https://godvvvzzz.github.io/p/agent-skill-best-practices/generalization_hu_47d941200b992c59.png 3696w" title="从失败案例中提炼可泛化原则，而不是堆叠特殊规则" width="3696"&gt;&lt;/p&gt;&#10;&lt;p&gt;假设一个图表生成 Skill 在测试中遇到折线重叠。过拟合的修复可能是：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;当图表类型是折线图并且系列数大于 4 时，把线高改成 40px。&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;更具泛化能力的原则是：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;为标签和连线预留与内容密度相匹配的空间；&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;当画布尺寸变化时，优先使用可自适应的间距和最小尺寸。&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;前者只处理已知测试，后者解释了问题的原因，也能覆盖柱状图、流程图和新的画布尺寸。&lt;/p&gt;&#10;&lt;p&gt;每次准备加规则时，可以先问三个问题：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;失败背后的共同原因是什么？&lt;/li&gt;&#10;&lt;li&gt;这个规则能否覆盖尚未见过的相邻场景？&lt;/li&gt;&#10;&lt;li&gt;如果未来删除测试用例，这条规则本身是否仍有价值？&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="把重复且确定的操作交给脚本"&gt;&lt;a href="#%e6%8a%8a%e9%87%8d%e5%a4%8d%e4%b8%94%e7%a1%ae%e5%ae%9a%e7%9a%84%e6%93%8d%e4%bd%9c%e4%ba%a4%e7%bb%99%e8%84%9a%e6%9c%ac" class="header-anchor"&gt;&lt;/a&gt;把重复且确定的操作交给脚本&#10;&lt;/h2&gt;&lt;p&gt;语言模型适合理解意图、做取舍和生成内容，不适合反复手工完成严格、机械的转换。&lt;/p&gt;&#10;&lt;p&gt;适合写成脚本的工作包括：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;检查目录和必填字段；&lt;/li&gt;&#10;&lt;li&gt;批量转换文件格式；&lt;/li&gt;&#10;&lt;li&gt;解析稳定的数据结构；&lt;/li&gt;&#10;&lt;li&gt;运行构建、测试和静态检查；&lt;/li&gt;&#10;&lt;li&gt;对产物执行可重复的安全扫描。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;适合留给模型的工作包括：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;判断用户真正想解决的问题；&lt;/li&gt;&#10;&lt;li&gt;在多个合理方案之间权衡；&lt;/li&gt;&#10;&lt;li&gt;根据上下文调整表达和结构；&lt;/li&gt;&#10;&lt;li&gt;解释失败原因并提出下一步。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;脚本应该小而明确：写清输入、输出、依赖和失败方式。不要把一个新的复杂系统藏进 Skill；否则维护成本只是从提示词转移到了代码。&lt;/p&gt;&#10;&lt;h2 id="按领域拆分参考资料并明确加载条件"&gt;&lt;a href="#%e6%8c%89%e9%a2%86%e5%9f%9f%e6%8b%86%e5%88%86%e5%8f%82%e8%80%83%e8%b5%84%e6%96%99%e5%b9%b6%e6%98%8e%e7%a1%ae%e5%8a%a0%e8%bd%bd%e6%9d%a1%e4%bb%b6" class="header-anchor"&gt;&lt;/a&gt;按领域拆分参考资料，并明确加载条件&#10;&lt;/h2&gt;&lt;p&gt;当参考资料越来越多，简单地把它们全部放进一个大文件，会破坏渐进式加载的意义。&lt;/p&gt;&#10;&lt;p&gt;更好的方式是按领域拆分：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;references/&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── authentication.md&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── content-model.md&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── deployment.md&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── troubleshooting.md&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后在 &lt;code&gt;SKILL.md&lt;/code&gt; 中明确路由：&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 认证、授权或 token 问题：读取 &lt;span class="sb"&gt;`references/authentication.md`&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 数据结构和字段约束：读取 &lt;span class="sb"&gt;`references/content-model.md`&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 发布与回滚：读取 &lt;span class="sb"&gt;`references/deployment.md`&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;-&lt;/span&gt; 常见失败和恢复步骤：读取 &lt;span class="sb"&gt;`references/troubleshooting.md`&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;文件名应该表达内容，加载条件应该可以由任务直接判断。避免让模型为了找到一条信息，先遍历整个 &lt;code&gt;references&lt;/code&gt; 目录。&lt;/p&gt;&#10;&lt;p&gt;七条原则之间不是彼此独立的技巧，而是共同围绕“发现、执行、验证、维护”构成一套设计方法：&lt;/p&gt;&#10;&lt;pre class="mermaid" style="visibility:hidden"&gt;mindmap&#10; root((Agent Skill))&#10; 容易发现&#10; 渐进式加载&#10; description 路由&#10; 能够判断&#10; 解释 Why&#10; 保留例外条件&#10; 可以验证&#10; with skill&#10; without skill&#10; 防止测试过拟合&#10; 稳定执行&#10; 确定操作脚本化&#10; 便于维护&#10; 参考资料按领域拆分&#10; 明确加载条件&lt;/pre&gt;&lt;h2 id="一张表总结"&gt;&lt;a href="#%e4%b8%80%e5%bc%a0%e8%a1%a8%e6%80%bb%e7%bb%93" class="header-anchor"&gt;&lt;/a&gt;一张表总结&#10;&lt;/h2&gt;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;原则&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;解决的问题&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;落地方式&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;渐进式加载&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;上下文过载&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;元数据、主流程、资源分层&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;description 路由&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Skill 漏触发或误触发&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;写能力、场景和边界&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;解释 Why&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;规则无法适应新情况&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;给目标、默认行为和例外&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;对照测试&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;无法判断 Skill 是否有效&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;比较 with / without Skill&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;防止过拟合&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;规则越来越碎&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;从失败案例提炼共同原因&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;脚本化确定性工作&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;重复操作不稳定&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;用小脚本完成校验与转换&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;按领域拆参考资料&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;找不到真正需要的信息&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;拆文件并写清加载条件&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="结语"&gt;&lt;a href="#%e7%bb%93%e8%af%ad" class="header-anchor"&gt;&lt;/a&gt;结语&#10;&lt;/h2&gt;&lt;p&gt;一个可靠的 Skill 不是越长越好，也不是规则越多越好。它更像一套分层的决策支持系统：入口负责发现，正文负责流程和原则，参考资料负责深度，脚本负责确定性。&lt;/p&gt;&#10;&lt;p&gt;写 Skill 时始终围绕三个目标取舍：&lt;strong&gt;容易触发、按需加载、能够泛化。&lt;/strong&gt; 做到这三点，Skill 才能从一次性的提示词，变成可测试、可复用、可维护的能力模块。&lt;/p&gt;&#10;</description></item></channel></rss>