<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>技术实践 on Tao</title><link>https://743v45.github.io/di4urp/categories/%E6%8A%80%E6%9C%AF%E5%AE%9E%E8%B7%B5/</link><description>Recent content in 技术实践 on Tao</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><managingEditor>di4urp@gmail.com (taevas)</managingEditor><webMaster>di4urp@gmail.com (taevas)</webMaster><lastBuildDate>Thu, 12 Mar 2026 15:00:00 +0800</lastBuildDate><atom:link href="https://743v45.github.io/di4urp/categories/%E6%8A%80%E6%9C%AF%E5%AE%9E%E8%B7%B5/index.xml" rel="self" type="application/rss+xml"/><item><title>Claude Plugin 进阶：Marketplace 与项目规则实践</title><link>https://743v45.github.io/di4urp/posts/hugo-skill-phase2-marketplace/</link><pubDate>Thu, 12 Mar 2026 15:00:00 +0800</pubDate><author>di4urp@gmail.com (taevas)</author><guid>https://743v45.github.io/di4urp/posts/hugo-skill-phase2-marketplace/</guid><description>&lt;h2 id="背景"&gt;背景&lt;/h2&gt;
&lt;p&gt;在上文&lt;a href="https://743v45.github.io/di4urp/posts/claude-skill-creation/"&gt;从零构建 Claude Skill&lt;/a&gt;中，我们完成了 hugo skill 的基础功能。本文记录二阶段开发：接入 Marketplace 和建立项目规则，以及过程中遇到的问题。&lt;/p&gt;
&lt;h2 id="marketplace-接入"&gt;Marketplace 接入&lt;/h2&gt;
&lt;h3 id="marketplacejson-结构"&gt;marketplace.json 结构&lt;/h3&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;$schema&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;https://anthropic.com/claude-code/marketplace.schema.json&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;name&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;taevas-plugins&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;version&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;0.1.0&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;description&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;Taevas Plugins Marketplace&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;owner&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;name&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;743v45&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;email&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;noreply@743v45.com&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;plugins&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;name&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;hugo&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;source&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;./plugins/hugo&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;category&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;content&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;description&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;Publish content to Hugo blog...&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;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;字段&lt;/th&gt;
&lt;th&gt;作用&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;$schema&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;JSON Schema 验证&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;plugins[].source&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;相对于 marketplace.json 的插件路径&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;plugins[].category&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;分类：content/notifications/development 等&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="插件目录结构规范"&gt;插件目录结构规范&lt;/h3&gt;
&lt;p&gt;从 Skill 升级为 Plugin，需要遵循更严格的目录结构：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;plugins/hugo/
├── .claude-plugin/
│ └── plugin.json # 插件元数据
├── skills/
│ └── hugo/ # 以 skill 名称命名的目录
│ ├── SKILL.md # 核心指令
│ ├── references/ # 参考文档
│ └── scripts/ # 脚本工具
└── README.md
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="遇到的问题"&gt;遇到的问题&lt;/h2&gt;
&lt;h3 id="问题一skill-目录结构重构"&gt;问题一：Skill 目录结构重构&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;现象：&lt;/strong&gt; 最初 skills 目录结构混乱，无法正确加载。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;原因：&lt;/strong&gt; Skills 应该放在以 skill 名称命名的子目录中，而不是直接放在 skills/ 下。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决：&lt;/strong&gt; 重构目录结构&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# 错误 ❌
skills/
├── hugo.md
├── references/
└── scripts/
# 正确 ✓
skills/
└── hugo/
├── SKILL.md
├── references/
└── scripts/
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;对应的 git commits:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;f9be4f6 refactor(hugo): 重构插件目录结构
a6b6426 refactor(hugo): 重构 skill 目录结构
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="问题二pluginjson-描述过于简单"&gt;问题二：plugin.json 描述过于简单&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;现象：&lt;/strong&gt; 插件加载后功能描述不清晰，用户不知道如何使用。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决：&lt;/strong&gt; 扩展 description 字段，详细说明所有使用模式：&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;description&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;Publish content to Hugo blog. Supports: (1) /hugo alone - check installation, (2) /hugo with content - create/update post, (3) /hugo new &amp;lt;content&amp;gt; - force create, (4) /hugo update &amp;lt;content&amp;gt; - force update, (5) /hugo ... -c - preview with hugo server&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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="问题三文章更新模式缺失"&gt;问题三：文章更新模式缺失&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;现象：&lt;/strong&gt; 只能创建新文章，无法更新已有文章。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决：&lt;/strong&gt; 添加三种操作模式&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;模式&lt;/th&gt;
&lt;th&gt;命令&lt;/th&gt;
&lt;th&gt;行为&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CREATE&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/hugo new &amp;lt;content&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;强制创建，存在则报错&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UPDATE&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/hugo update &amp;lt;content&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;强制更新，不存在则报错&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AUTO&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/hugo &amp;lt;content&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;搜索匹配文章，让用户选择&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;实现搜索功能需要扩展 &lt;code&gt;detect_hugo_site.py&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-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;search_posts&lt;/span&gt;(directory: str, keywords: str) &lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt; list:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;#34;&amp;#34;Search posts by title or filename, return sorted by match score.&amp;#34;&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:#75715e"&gt;# 计算匹配分数&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# 标题匹配 +20，文件名匹配 +10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# 分词匹配每个词 +5/+3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="项目规则建立"&gt;项目规则建立&lt;/h2&gt;
&lt;h3 id="commit-规范"&gt;Commit 规范&lt;/h3&gt;
&lt;p&gt;采用 Conventional Commits：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;&amp;lt;type&amp;gt;(&amp;lt;scope&amp;gt;): &amp;lt;description&amp;gt;
类型：feat/fix/refactor/docs/style/test/chore
范围：hugo/sound-hooks 等
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="目录结构规则"&gt;目录结构规则&lt;/h3&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;.claude-plugin/
├── marketplace.json # 市场配置（项目根）
└── plugins/
└── &amp;lt;plugin-name&amp;gt;/
├── .claude-plugin/
│ └── plugin.json # 插件元数据
├── skills/
│ └── &amp;lt;skill-name&amp;gt;/
│ ├── SKILL.md
│ ├── references/
│ └── scripts/
└── README.md
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="文件命名规则"&gt;文件命名规则&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;SKILL.md 大写，作为 skill 入口&lt;/li&gt;
&lt;li&gt;脚本使用 snake_case: &lt;code&gt;detect_hugo_site.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;参考文档使用 kebab-case: &lt;code&gt;front-matter.md&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="总结"&gt;总结&lt;/h2&gt;
&lt;p&gt;二阶段开发的核心工作：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;接入 Marketplace&lt;/strong&gt; - 建立 marketplace.json 和目录规范&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;重构目录结构&lt;/strong&gt; - skills 放入以名称命名的子目录&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;完善功能&lt;/strong&gt; - 添加文章搜索和更新模式&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;建立规则&lt;/strong&gt; - commit 规范、目录结构、命名约定&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="参考资料"&gt;参考资料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.anthropic.com/claude-code"&gt;Claude Code Plugin 文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.conventionalcommits.org/"&gt;Conventional Commits&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>从零构建 Claude Skill：以 Hugo 博客发布为例</title><link>https://743v45.github.io/di4urp/posts/claude-skill-creation/</link><pubDate>Thu, 12 Mar 2026 12:00:00 +0800</pubDate><author>di4urp@gmail.com (taevas)</author><guid>https://743v45.github.io/di4urp/posts/claude-skill-creation/</guid><description>&lt;h2 id="背景"&gt;背景&lt;/h2&gt;
&lt;p&gt;Claude Code 支持 Skill 系统，允许用户创建可复用的能力模块。本文以实际创建的 &lt;code&gt;hugo&lt;/code&gt; skill 为例，详解 Skill 的构建过程。&lt;/p&gt;
&lt;h2 id="什么是-skill"&gt;什么是 Skill&lt;/h2&gt;
&lt;p&gt;Skill 是 Claude Code 的扩展机制，本质是一个包含指令和资源的目录：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;skill-name/
├── SKILL.md # 核心：YAML frontmatter + Markdown 指令
├── scripts/ # 可执行脚本
├── references/ # 参考文档
└── assets/ # 输出资源
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="创建步骤"&gt;创建步骤&lt;/h2&gt;
&lt;h3 id="第一步定义使用场景"&gt;第一步：定义使用场景&lt;/h3&gt;
&lt;p&gt;明确 skill 要解决的问题。以 hugo skill 为例：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;场景&lt;/th&gt;
&lt;th&gt;用户输入&lt;/th&gt;
&lt;th&gt;预期行为&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;检查环境&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/hugo&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;检测 Hugo 安装和站点&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;创建文章&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/hugo 写一篇 Go 教程&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;生成内容并发布&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;指定路径&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/hugo --path ~/myblog&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;使用指定站点&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="第二步规划资源需求"&gt;第二步：规划资源需求&lt;/h3&gt;
&lt;p&gt;分析需要哪些辅助资源：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;hugo/
├── scripts/
│ └── detect_hugo_site.py # 检测 Hugo 站点
├── references/
│ └── front-matter.md # Front matter 格式参考
└── SKILL.md
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;脚本的作用&lt;/strong&gt;：检测站点需要遍历目录、检查配置文件，逻辑复杂，用 Python 脚本更可靠。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;参考文档的作用&lt;/strong&gt;：Front matter 有多种格式（TOML/YAML），放入 reference 按需加载。&lt;/p&gt;
&lt;h3 id="第三步编写-skillmd"&gt;第三步：编写 SKILL.md&lt;/h3&gt;
&lt;h4 id="frontmatter-设计"&gt;Frontmatter 设计&lt;/h4&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-yaml" data-lang="yaml"&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;name&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;hugo&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;description&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;Publish content to Hugo blog. Use when user invokes /hugo command...&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;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;description&lt;/code&gt; 是触发机制的关键：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;必须包含 skill 功能&lt;/li&gt;
&lt;li&gt;必须包含触发条件&lt;/li&gt;
&lt;li&gt;会被 Claude 持续加载在上下文中&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="工作流设计"&gt;工作流设计&lt;/h4&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 style="color:#75715e"&gt;## Workflow
&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:#66d9ef"&gt;1.&lt;/span&gt; &lt;span style="font-weight:bold"&gt;**Check Hugo installation**&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;2.&lt;/span&gt; &lt;span style="font-weight:bold"&gt;**Determine Hugo site path**&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;3.&lt;/span&gt; &lt;span style="font-weight:bold"&gt;**Determine content**&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;4.&lt;/span&gt; &lt;span style="font-weight:bold"&gt;**Determine front matter format**&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;5.&lt;/span&gt; &lt;span style="font-weight:bold"&gt;**Create the post**&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;每一步都有明确的指令，包括命令示例和预期输出。&lt;/p&gt;
&lt;h3 id="第四步实现脚本"&gt;第四步：实现脚本&lt;/h3&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-python" data-lang="python"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# scripts/detect_hugo_site.py&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;def&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;is_hugo_site&lt;/span&gt;(directory: str) &lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt; dict:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# 检查 config.toml / hugo.toml / config.yaml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; config_names &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [&lt;span style="color:#e6db74"&gt;&amp;#34;config&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;hugo&amp;#34;&lt;/span&gt;]
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; config_extensions &lt;span style="color:#f92672"&gt;=&lt;/span&gt; [&lt;span style="color:#e6db74"&gt;&amp;#34;.toml&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;.yaml&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;.yml&amp;#34;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#34;.json&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:#75715e"&gt;# 返回检测结果&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&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;#34;is_hugo_site&amp;#34;&lt;/span&gt;: bool,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;config_file&amp;#34;&lt;/span&gt;: str,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;content_dir&amp;#34;&lt;/span&gt;: str,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;existing_posts&amp;#34;&lt;/span&gt;: list
&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;h3 id="第五步验证和迭代"&gt;第五步：验证和迭代&lt;/h3&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-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 测试脚本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;python3 scripts/detect_hugo_site.py /path/to/hugo/site
&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:#75715e"&gt;# 实际调用&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/hugo 写一篇测试文章
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="设计原则"&gt;设计原则&lt;/h2&gt;
&lt;h3 id="1-渐进式披露"&gt;1. 渐进式披露&lt;/h3&gt;
&lt;p&gt;Skill 采用三层加载机制：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;层级&lt;/th&gt;
&lt;th&gt;内容&lt;/th&gt;
&lt;th&gt;加载时机&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Metadata&lt;/td&gt;
&lt;td&gt;name + description&lt;/td&gt;
&lt;td&gt;始终&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SKILL.md body&lt;/td&gt;
&lt;td&gt;工作流指令&lt;/td&gt;
&lt;td&gt;触发后&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;references/&lt;/td&gt;
&lt;td&gt;详细文档&lt;/td&gt;
&lt;td&gt;按需&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="2-简洁至上"&gt;2. 简洁至上&lt;/h3&gt;
&lt;p&gt;SKILL.md 应控制在 500 行以内，详细内容放入 references。&lt;/p&gt;
&lt;h3 id="3-自由度匹配"&gt;3. 自由度匹配&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;自由度&lt;/th&gt;
&lt;th&gt;适用场景&lt;/th&gt;
&lt;th&gt;hugo skill 示例&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;高&lt;/td&gt;
&lt;td&gt;多种有效方案&lt;/td&gt;
&lt;td&gt;文章内容由 LLM 生成&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;中&lt;/td&gt;
&lt;td&gt;有首选模式&lt;/td&gt;
&lt;td&gt;Front matter 格式检测&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;低&lt;/td&gt;
&lt;td&gt;必须精确执行&lt;/td&gt;
&lt;td&gt;站点检测脚本&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="最终结构"&gt;最终结构&lt;/h2&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;hugo/
├── SKILL.md # 2.8KB，核心指令
├── scripts/
│ └── detect_hugo_site.py # 92 行，站点检测
├── references/
│ └── front-matter.md # Front matter 格式参考
└── LICENSE.txt
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="总结"&gt;总结&lt;/h2&gt;
&lt;p&gt;构建 Skill 的核心是&lt;strong&gt;明确场景 → 规划资源 → 精简指令&lt;/strong&gt;。好的 skill 应该：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在 description 中清晰描述触发条件&lt;/li&gt;
&lt;li&gt;用脚本处理确定性任务&lt;/li&gt;
&lt;li&gt;用 references 存放详细文档&lt;/li&gt;
&lt;li&gt;保持 SKILL.md 精简&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="参考资料"&gt;参考资料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/anthropics/claude-code"&gt;Skill Creator Skill&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gohugo.io/documentation/"&gt;Hugo Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>