<?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 KnightLi的博客</title>
        <link>https://www.knightli.com/zh-tw/tags/agent-skill/</link>
        <description>Recent content in Agent Skill on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-tw</language>
        <lastBuildDate>Mon, 06 Apr 2026 10:00:00 +0800</lastBuildDate><atom:link href="https://www.knightli.com/zh-tw/tags/agent-skill/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>使用 AI 維護 Hugo 多語言部落格的 Agent Skill</title>
        <link>https://www.knightli.com/zh-tw/2026/04/06/agent-skill-sync-post-translations-guide/</link>
        <pubDate>Mon, 06 Apr 2026 10:00:00 +0800</pubDate>
        
        <guid>https://www.knightli.com/zh-tw/2026/04/06/agent-skill-sync-post-translations-guide/</guid>
        <description>&lt;p&gt;如果你正在維護 Hugo 多語言部落格，常常會遇到一個高頻痛點：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;中文寫完後，還要同步生成英文與繁體版本&lt;/li&gt;
&lt;li&gt;三個語言檔需要保持結構一致&lt;/li&gt;
&lt;li&gt;front matter 既要翻譯，也要符合 Hugo 格式&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;sync-post-translations&lt;/code&gt; 就是為這個場景設計的 Agent Skill。&lt;/p&gt;
&lt;h2 id=&#34;這個技能解決什麼問題&#34;&gt;這個技能解決什麼問題
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;sync-post-translations&lt;/code&gt; 的定位很清楚：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;以 &lt;code&gt;index.zh-cn.md&lt;/code&gt; 作為來源檔&lt;/li&gt;
&lt;li&gt;在同一目錄生成或更新 &lt;code&gt;index.en.md&lt;/code&gt;、&lt;code&gt;index.zh-tw.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;保持 Markdown 結構一致&lt;/li&gt;
&lt;li&gt;對 front matter 套用明確規則（尤其是 &lt;code&gt;date&lt;/code&gt;、&lt;code&gt;slug&lt;/code&gt;）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;適用觸發詞示例：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;「同步翻譯英文繁體」&lt;/li&gt;
&lt;li&gt;「把這篇文章同步成英文和繁體」&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;技能目錄結構&#34;&gt;技能目錄結構
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.\sync-post-translations\
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├─ SKILL.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└─ agents\
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   └─ openai.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;核心程式碼一skillmd&#34;&gt;核心程式碼一：SKILL.md
&lt;/h2&gt;&lt;p&gt;以下是此技能的核心規則檔：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;35
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;36
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;37
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;name: sync-post-translations
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;description: 将 Hugo 文章从简体中文源文件（&lt;span class=&#34;sb&#34;&gt;`index.zh-cn.md`&lt;/span&gt;）同步翻译为英文（&lt;span class=&#34;sb&#34;&gt;`index.en.md`&lt;/span&gt;）和繁体中文（&lt;span class=&#34;sb&#34;&gt;`index.zh-tw.md`&lt;/span&gt;）。当用户提出“en 繁体”“同步翻译英文繁体”或要求同时生成/更新两种语言版本且需保持 front matter 与 Markdown 结构一致时使用。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# 同步文章翻译
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;使用此技能为同一篇文章生成或更新多语言版本。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 工作流程
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; 在目标文章目录中定位源文件 &lt;span class=&#34;sb&#34;&gt;`index.zh-cn.md`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; 读取完整 front matter 与正文内容。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; 在同目录创建或更新 &lt;span class=&#34;sb&#34;&gt;`index.en.md`&lt;/span&gt; 与 &lt;span class=&#34;sb&#34;&gt;`index.zh-tw.md`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;4.&lt;/span&gt; 确保三语结构对齐后执行 Hugo 构建检查。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 翻译规则
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; 严格保留 &lt;span class=&#34;sb&#34;&gt;`slug`&lt;/span&gt; 原值。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; &lt;span class=&#34;sb&#34;&gt;`date`&lt;/span&gt; 统一规范为 Hugo 常用带时间格式（RFC3339），示例：&lt;span class=&#34;sb&#34;&gt;`2026-04-05T10:00:00+08:00`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; 自然翻译以下 front matter 字段：&lt;span class=&#34;sb&#34;&gt;`title`&lt;/span&gt;、&lt;span class=&#34;sb&#34;&gt;`description`&lt;/span&gt;、&lt;span class=&#34;sb&#34;&gt;`tags`&lt;/span&gt;、&lt;span class=&#34;sb&#34;&gt;`categories`&lt;/span&gt;。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;4.&lt;/span&gt; 保持 Markdown 结构不变：标题层级、列表形态、代码块、链接与命令行示例。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;5.&lt;/span&gt; 技术标识符保持原样：文件名、CLI 参数、模型名、设备名、URL、包名等。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;6.&lt;/span&gt; 若 YAML 的 &lt;span class=&#34;sb&#34;&gt;`title`&lt;/span&gt; 含有 &lt;span class=&#34;sb&#34;&gt;`:`&lt;/span&gt;，必须加引号，避免解析报错。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;7.&lt;/span&gt; 在不改变语义前提下，使用目标语言自然标点与表达习惯（&lt;span class=&#34;sb&#34;&gt;`en`&lt;/span&gt;、&lt;span class=&#34;sb&#34;&gt;`zh-tw`&lt;/span&gt;）。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 输出约定
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; 仅在源文章同目录写入目标文件。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; 汇报变更的文件路径。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; 条件允许时执行 &lt;span class=&#34;sb&#34;&gt;`hugo --source . --destination public`&lt;/span&gt;，并反馈通过/失败；失败时给出关键报错行。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## 质量标准
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;1.&lt;/span&gt; 全文术语前后一致。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;2.&lt;/span&gt; 避免机器直译感，优先可发布文风。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;3.&lt;/span&gt; 章节内容完整，不省略示例、注意点与总结。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;核心程式碼二agentsopenaiyaml&#34;&gt;核心程式碼二：agents/openai.yaml
&lt;/h2&gt;&lt;p&gt;這個檔案定義了技能在 Agent 端的展示與預設提示詞：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;interface&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;display_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;同步文章翻译&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;short_description&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;生成或更新 EN + ZH-TW 翻译稿&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;default_prompt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;使用该技能在同一 Hugo 文章目录中，从 `index.zh-cn.md` 生成或同步 `index.en.md` 与 `index.zh-tw.md`，保留 `date` 与 `slug`，保持 Markdown 结构一致，并执行 Hugo 构建校验。&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;實戰調用示例&#34;&gt;實戰調用示例
&lt;/h2&gt;&lt;h3 id=&#34;1-面向人的自然語言觸發&#34;&gt;1) 面向人的自然語言觸發
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;请把 content/post/2026/04/06/index.zh-cn.md 同步翻译成英文和繁体，
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;要求 date 用 RFC3339，slug 不变，最后跑 hugo 校验。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;2-你應該期待的輸出結果&#34;&gt;2) 你應該期待的輸出結果
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;已更新：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- content/post/2026/04/06/index.en.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- content/post/2026/04/06/index.zh-tw.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;构建校验：
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- hugo --source . --destination public
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 结果：PASS
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;為什麼這些規則很關鍵&#34;&gt;為什麼這些規則很關鍵
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;code&gt;slug&lt;/code&gt; 保持不變，可以穩定 URL 與歷史外鏈。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;date&lt;/code&gt; 統一為 RFC3339（含時區）可避免 Hugo/主題在時間解析上的歧義。&lt;/li&gt;
&lt;li&gt;Markdown 結構不變，可避免翻譯後目錄、程式碼區塊、短代碼渲染錯位。&lt;/li&gt;
&lt;li&gt;技術標識符不翻譯，可顯著降低「命令不可用／檔名不匹配」問題。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;常見坑位與規避&#34;&gt;常見坑位與規避
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;code&gt;title&lt;/code&gt; 裡有 &lt;code&gt;:&lt;/code&gt; 卻沒加引號，YAML 會解析失敗。&lt;/li&gt;
&lt;li&gt;把 &lt;code&gt;--flag&lt;/code&gt;、URL、套件名翻譯了，示例命令會直接失效。&lt;/li&gt;
&lt;li&gt;三語標題層級不一致（例如中文 &lt;code&gt;##&lt;/code&gt; 變成英文 &lt;code&gt;###&lt;/code&gt;），目錄錨點會錯位。&lt;/li&gt;
&lt;li&gt;只翻譯正文不處理 front matter，頁面列表與 SEO 資訊會異常。&lt;/li&gt;
&lt;/ol&gt;
</description>
        </item>
        <item>
        <title>分析 Anthropic 的 Agent Skill docx：功能、程式組成、使用方法與注意事項</title>
        <link>https://www.knightli.com/zh-tw/2026/04/04/analyze-docx-agent-skill/</link>
        <pubDate>Sat, 04 Apr 2026 11:00:00 +0800</pubDate>
        
        <guid>https://www.knightli.com/zh-tw/2026/04/04/analyze-docx-agent-skill/</guid>
        <description>&lt;p&gt;Anthropic 的 &lt;code&gt;skills/docx&lt;/code&gt; 本質上是一套「讓 AI 更穩定處理 Word 文件」的工作規範與腳本工具集。&lt;br&gt;
它不是只告訴模型「去寫一個 &lt;code&gt;.docx&lt;/code&gt;」，而是把 Word 文件處理拆成幾條明確路徑：新建文件、讀取內容、編輯既有文件、處理修訂、加入評論、格式轉換、校驗 OOXML 結構。&lt;/p&gt;
&lt;p&gt;如果只用一句話概括：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;讓 agent 不再把 &lt;code&gt;.docx&lt;/code&gt; 當黑盒，而是把它當成 ZIP + XML + Office 相容性問題來處理。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;這個-skill-解決什麼問題&#34;&gt;這個 skill 解決什麼問題
&lt;/h2&gt;&lt;p&gt;一般模型在處理 Word 文件時，常見問題大致有這幾類：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;只會輸出文字，不會真正產生結構正確的 &lt;code&gt;.docx&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;修改既有文件時，容易破壞 OOXML 結構&lt;/li&gt;
&lt;li&gt;遇到批註、修訂、評論串時，不知道要改哪些 XML&lt;/li&gt;
&lt;li&gt;文件能產生，但在 Word、LibreOffice、Google Docs 間相容性不穩&lt;/li&gt;
&lt;li&gt;不清楚何時該用 &lt;code&gt;pandoc&lt;/code&gt;，何時該直接解包改 XML&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;docx&lt;/code&gt; skill 的價值就在這裡，它把「該怎麼做」先規範好了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;讀內容時，優先用 &lt;code&gt;pandoc&lt;/code&gt; 或解包&lt;/li&gt;
&lt;li&gt;新建 &lt;code&gt;.docx&lt;/code&gt; 時，優先用 &lt;code&gt;docx-js&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;編輯既有 &lt;code&gt;.docx&lt;/code&gt; 時，優先走「解包 -&amp;gt; 修改 XML -&amp;gt; 重新打包 -&amp;gt; 校驗」&lt;/li&gt;
&lt;li&gt;處理接受修訂、評論、schema 校驗等細節時，用配套腳本而不是硬寫&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這套方法很實用，因為 Word 文件問題通常不是「文字對不對」，而是「文件結構是否還能被 Office 正常接受」。&lt;/p&gt;
&lt;h2 id=&#34;目錄與程式組成&#34;&gt;目錄與程式組成
&lt;/h2&gt;&lt;p&gt;這個 skill 大致可以分成四層。&lt;/p&gt;
&lt;h3 id=&#34;1-說明層skillmd&#34;&gt;1. 說明層：&lt;code&gt;SKILL.md&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;SKILL.md&lt;/code&gt; 是入口，主要做兩件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;定義觸發條件&lt;br&gt;
只要需求涉及 Word、&lt;code&gt;.docx&lt;/code&gt;、評論、修訂、目錄、頁碼、模板、格式化文件等內容，就應啟用這個 skill。&lt;/li&gt;
&lt;li&gt;規定工作路徑&lt;br&gt;
明確指定不同任務要走哪條技術路線，而不是每次臨場發揮。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;它同時是使用說明與操作規範。裡面最有價值的是相容性規則，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;docx-js&lt;/code&gt; 預設是 A4，不是 US Letter&lt;/li&gt;
&lt;li&gt;橫向頁面時，寬高參數要按它的內部邏輯傳&lt;/li&gt;
&lt;li&gt;列表不能手工插入 Unicode bullet&lt;/li&gt;
&lt;li&gt;表格寬度要同時設 table 與 cell&lt;/li&gt;
&lt;li&gt;插入圖片時 &lt;code&gt;type&lt;/code&gt; 不能省&lt;/li&gt;
&lt;li&gt;生成後要跑 &lt;code&gt;validate&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這反映出它追求的不只是「能生成」，而是「能穩定開啟、穩定渲染、穩定相容」。&lt;/p&gt;
&lt;h2 id=&#34;2-office-包操作層scriptsoffice&#34;&gt;2. Office 包操作層：&lt;code&gt;scripts/office/*&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;這一層負責把 &lt;code&gt;.docx/.pptx/.xlsx&lt;/code&gt; 當成 Office Open XML 套件來處理。&lt;/p&gt;
&lt;h3 id=&#34;unpackpy&#34;&gt;&lt;code&gt;unpack.py&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;作用是把 Office 文件解包到目錄，並做一些整理：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;解壓 ZIP 包&lt;/li&gt;
&lt;li&gt;對 XML / &lt;code&gt;.rels&lt;/code&gt; 做 pretty print&lt;/li&gt;
&lt;li&gt;對 &lt;code&gt;.docx&lt;/code&gt; 可選執行 &lt;code&gt;merge_runs&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;對 &lt;code&gt;.docx&lt;/code&gt; 可選執行 &lt;code&gt;simplify_redlines&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;將智慧引號轉成 XML 實體，降低後續處理風險&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它不只是「解壓」，而是把內容整理成更適合 agent 與人類繼續編輯的狀態。&lt;/p&gt;
&lt;h3 id=&#34;packpy&#34;&gt;&lt;code&gt;pack.py&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;作用是把修改後目錄重新打包成 &lt;code&gt;.docx/.pptx/.xlsx&lt;/code&gt;。&lt;br&gt;
打包前還會做兩件要事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可選執行校驗與自動修復&lt;/li&gt;
&lt;li&gt;重新壓縮整理 XML，移除無意義空白與註解&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;若提供 &lt;code&gt;--original&lt;/code&gt;，會結合 validator 比對，這點很關鍵。&lt;br&gt;
因為很多 Word 修改不是「能打包回去」就算成功，而是要確認結構與修訂語義都成立。&lt;/p&gt;
&lt;h3 id=&#34;validatepy&#34;&gt;&lt;code&gt;validate.py&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;這是整個 skill 的品質閘門。&lt;br&gt;
它會校驗：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;XML 是否良構&lt;/li&gt;
&lt;li&gt;namespace 是否正確&lt;/li&gt;
&lt;li&gt;各類 ID 是否唯一&lt;/li&gt;
&lt;li&gt;relationship / content type 是否匹配&lt;/li&gt;
&lt;li&gt;是否符合 XSD schema&lt;/li&gt;
&lt;li&gt;空白保留規則是否正確&lt;/li&gt;
&lt;li&gt;插入、刪除、評論標記是否合法&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;對 &lt;code&gt;.docx&lt;/code&gt; 來說，這幾乎是核心能力。&lt;br&gt;
很多「看起來只改一點 XML」的問題，都會在這裡暴露。&lt;/p&gt;
&lt;h3 id=&#34;sofficepy&#34;&gt;&lt;code&gt;soffice.py&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;這是一個很有工程味的輔助工具。&lt;br&gt;
它不是單純呼叫 LibreOffice，而是為受限環境做兼容處理，會設置 &lt;code&gt;SAL_USE_VCLPLUGIN=svp&lt;/code&gt;，必要時還會用 shim 處理 AF_UNIX socket 限制。&lt;/p&gt;
&lt;p&gt;這代表它考慮的不是只有本機手動場景，也包含 agent、CI、沙箱等自動化環境。&lt;/p&gt;
&lt;h2 id=&#34;3-word-專項能力層評論修訂與-redline&#34;&gt;3. Word 專項能力層：評論、修訂與 redline
&lt;/h2&gt;&lt;h3 id=&#34;commentpy&#34;&gt;&lt;code&gt;comment.py&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;這個腳本負責幫 DOCX 加評論。&lt;br&gt;
它做的不只是寫一段 comment XML，因為 Word 評論涉及多個部件協同：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;word/comments.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;commentsExtended.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;commentsIds.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;commentsExtensible.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;document.xml&lt;/code&gt; 中的 comment range marker&lt;/li&gt;
&lt;li&gt;&lt;code&gt;[Content_Types].xml&lt;/code&gt; 與 &lt;code&gt;document.xml.rels&lt;/code&gt; 中的關係宣告&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;腳本已把這些依賴關係處理好。&lt;br&gt;
若是第一次加評論，會自動補模板檔、relationship 與 content types，能大幅降低手工改 OOXML 的出錯率。&lt;/p&gt;
&lt;h3 id=&#34;accept_changespy&#34;&gt;&lt;code&gt;accept_changes.py&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;這個腳本目標很明確：接受所有修訂。&lt;br&gt;
做法不是硬改 XML，而是透過 LibreOffice headless + Basic macro 呼叫 &lt;code&gt;.uno:AcceptAllTrackedChanges&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;這很穩妥，因為「接受修訂」在 Word 語義中不只是刪 &lt;code&gt;&amp;lt;w:ins&amp;gt;&lt;/code&gt; / &lt;code&gt;&amp;lt;w:del&amp;gt;&lt;/code&gt;。&lt;br&gt;
直接改 XML 很容易留下邊角問題；由 Office 引擎處理通常更可靠。&lt;/p&gt;
&lt;h3 id=&#34;validatorsredliningpy&#34;&gt;&lt;code&gt;validators/redlining.py&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;這是我認為很關鍵的一段。&lt;br&gt;
它會把「某作者的修訂」分別從原始文件與修改後文件中剝離，再比較正文文字是否一致，以判斷修訂是否被正確包在 tracked changes 結構裡。&lt;/p&gt;
&lt;p&gt;也就是說，它不只驗 XML 格式，而是在驗「是否按修訂語義編輯」。&lt;/p&gt;
&lt;p&gt;這對 agent 特別重要，因為 AI 常見錯誤是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;直接改正文，沒包進 &lt;code&gt;&amp;lt;w:ins&amp;gt;&lt;/code&gt; / &lt;code&gt;&amp;lt;w:del&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;在別人的插入或刪除結構裡改壞層級&lt;/li&gt;
&lt;li&gt;最終文字改了，但 redline 語義不成立&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這個 validator 就是在擋這類「看似可用、其實語義錯誤」的問題。&lt;/p&gt;
&lt;h2 id=&#34;4-schema-與輔助層schemashelperstemplates&#34;&gt;4. Schema 與輔助層：&lt;code&gt;schemas/&lt;/code&gt;、&lt;code&gt;helpers/&lt;/code&gt;、&lt;code&gt;templates/&lt;/code&gt;
&lt;/h2&gt;&lt;h3 id=&#34;schemas&#34;&gt;&lt;code&gt;schemas/&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;這裡放的是一整套 OOXML / ECMA / Microsoft 擴展相關 XSD。&lt;br&gt;
代表校驗規則盡量基於正式 schema，而不是臨時規則。&lt;/p&gt;
&lt;h3 id=&#34;helpers&#34;&gt;&lt;code&gt;helpers/&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;這裡主要有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;merge_runs.py&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;simplify_redlines.py&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;作用是對解包後的 Word XML 做適度清理，讓結構更穩定、更易編輯與比對。&lt;/p&gt;
&lt;h3 id=&#34;templates&#34;&gt;&lt;code&gt;templates/&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;這裡存放評論功能依賴的 XML 模板，如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;comments.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;commentsExtended.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;commentsIds.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;commentsExtensible.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;people.xml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些模板很重要，因為很多 Word 部件不是「缺了會自動補」，而是必須按 Office 接受的格式預置。&lt;/p&gt;
&lt;h2 id=&#34;典型使用方法&#34;&gt;典型使用方法
&lt;/h2&gt;&lt;p&gt;從 &lt;code&gt;SKILL.md&lt;/code&gt; 的建議看，這個 skill 很適合以下工作流。&lt;/p&gt;
&lt;h2 id=&#34;場景一讀取或分析既有-docx&#34;&gt;場景一：讀取或分析既有 DOCX
&lt;/h2&gt;&lt;p&gt;若目標是抽取內容、閱讀結構、轉 Markdown，優先用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pandoc --track-changes&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;all document.docx -o output.md
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;若要看底層 XML，則用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python scripts/office/unpack.py document.docx unpacked/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;前者適合讀內容，後者適合看結構。&lt;/p&gt;
&lt;h2 id=&#34;場景二新建-docx&#34;&gt;場景二：新建 DOCX
&lt;/h2&gt;&lt;p&gt;這個 skill 建議用 &lt;code&gt;docx-js&lt;/code&gt; 生成，而不是手搓 OOXML：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g docx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;生成後再校驗：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python scripts/office/validate.py doc.docx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;適合報告、memo、letter，以及含標題、目錄、頁腳、分頁、表格的正式文件。&lt;/p&gt;
&lt;h2 id=&#34;場景三編輯既有-docx&#34;&gt;場景三：編輯既有 DOCX
&lt;/h2&gt;&lt;p&gt;這是最核心的流程：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python scripts/office/unpack.py document.docx unpacked/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# 修改 unpacked/ 下的 XML&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python scripts/office/pack.py unpacked/ output.docx --original document.docx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;重點在 &lt;code&gt;--original&lt;/code&gt;。&lt;br&gt;
它讓系統在回包時做 schema 與 redline 層面的驗證，而不是盲目打包。&lt;/p&gt;
&lt;h2 id=&#34;場景四接受所有修訂&#34;&gt;場景四：接受所有修訂
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python scripts/accept_changes.py input.docx output.docx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這一步依賴 LibreOffice，適合把已審閱文件整理成乾淨版。&lt;/p&gt;
&lt;h2 id=&#34;場景五添加評論&#34;&gt;場景五：添加評論
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python comment.py unpacked/ &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Comment text&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python comment.py unpacked/ &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;Reply text&amp;#34;&lt;/span&gt; --parent &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;要注意：腳本會補評論內容與必要部件，但仍需按註解在 &lt;code&gt;document.xml&lt;/code&gt; 補上 comment range marker，才能把評論正確掛到文字範圍。&lt;/p&gt;
&lt;h2 id=&#34;這個-skill-最值得注意的幾個坑&#34;&gt;這個 skill 最值得注意的幾個坑
&lt;/h2&gt;&lt;p&gt;若只快速掃過 &lt;code&gt;SKILL.md&lt;/code&gt;，很容易低估裡面「相容性規則」的價值。以下幾點尤其重要。&lt;/p&gt;
&lt;h3 id=&#34;1-docx-不是純文字檔而是-office-套件&#34;&gt;1. &lt;code&gt;.docx&lt;/code&gt; 不是純文字檔，而是 Office 套件
&lt;/h3&gt;&lt;p&gt;最大的誤區是把它當作「有格式的文字檔」。&lt;br&gt;
實際可能同時涉及正文 XML、relationships、content types、comments / people / ids、schema 約束、修訂語義。&lt;/p&gt;
&lt;p&gt;所以這個 skill 才會強調「解包 - 編輯 - 校驗 - 回包」。&lt;/p&gt;
&lt;h3 id=&#34;2-docx-js-能生成不代表預設值符合你的目標&#34;&gt;2. &lt;code&gt;docx-js&lt;/code&gt; 能生成，不代表預設值符合你的目標
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;SKILL.md&lt;/code&gt; 明確提到多個預設陷阱，例如 A4 預設、橫向頁面寬高邏輯、列表 bullet、表格寬度雙重宣告、Google Docs 百分比寬度相容性等。&lt;/p&gt;
&lt;p&gt;生成工具只是起點，不是最終品質保證。&lt;/p&gt;
&lt;h3 id=&#34;3-評論與修訂都不是單點修改&#34;&gt;3. 評論與修訂都不是單點修改
&lt;/h3&gt;&lt;p&gt;無論 comment 或 tracked changes，都不是改一個 XML 就結束。&lt;br&gt;
需要維護多部件一致性，這正是腳本化的價值。&lt;/p&gt;
&lt;h3 id=&#34;4能開啟不等於改對了&#34;&gt;4.「能開啟」不等於「改對了」
&lt;/h3&gt;&lt;p&gt;文件能被 Word 開啟，不代表結構正確。&lt;br&gt;
很多問題會在再次編輯、審閱模式、批註顯示、Google Docs 開啟、重新接受修訂時才暴露。&lt;/p&gt;
&lt;p&gt;因此 &lt;code&gt;validate.py&lt;/code&gt; 和 &lt;code&gt;pack.py --original&lt;/code&gt; 非常關鍵。&lt;/p&gt;
&lt;h3 id=&#34;5-依賴外部工具時要先備好環境&#34;&gt;5. 依賴外部工具時要先備好環境
&lt;/h3&gt;&lt;p&gt;這個 skill 依賴：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pandoc&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LibreOffice / soffice&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;docx-js&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Python 依賴，如 &lt;code&gt;defusedxml&lt;/code&gt;、&lt;code&gt;lxml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果環境缺工具，即使流程正確也無法完整執行。&lt;/p&gt;
&lt;h2 id=&#34;這個-skill-適合什麼不適合什麼&#34;&gt;這個 skill 適合什麼，不適合什麼
&lt;/h2&gt;&lt;h3 id=&#34;適合&#34;&gt;適合
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;批量生成 Word 報告&lt;/li&gt;
&lt;li&gt;結構化產生正式文件&lt;/li&gt;
&lt;li&gt;自動化修改 &lt;code&gt;.docx&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;保留或處理 tracked changes&lt;/li&gt;
&lt;li&gt;自動加入批註&lt;/li&gt;
&lt;li&gt;把 Word 文件納入腳本或 agent 工作流&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;不太適合&#34;&gt;不太適合
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;只做簡單 PDF 導出&lt;/li&gt;
&lt;li&gt;只要純文字內容，不在意 Word 格式&lt;/li&gt;
&lt;li&gt;完全依賴手動可視化編輯&lt;/li&gt;
&lt;li&gt;期待零依賴、零環境準備完成全部 Word 自動化&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;Anthropic 的 &lt;code&gt;skills/docx&lt;/code&gt; 強項不在「會生成 Word」，而在「知道 Word 為什麼容易出問題，並先把問題拆開處理」。&lt;br&gt;
它把文件生成、底層 XML 編輯、修訂語義、schema 校驗、Office 相容性等原本零散的知識，整理成一條可執行工作流。&lt;/p&gt;
&lt;p&gt;若只是偶爾導出簡單文件，它可能略重；&lt;br&gt;
但只要場景涉及既有 &lt;code&gt;.docx&lt;/code&gt; 修改、評論、修訂、自動化批處理或相容性要求，這套 skill 的價值就很高，因為它補上的正是 AI 最容易忽略、也是 Office 文件最容易翻車的細節。&lt;/p&gt;
&lt;p&gt;簡單總結：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;SKILL.md&lt;/code&gt; 負責定義路徑&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scripts/office/*&lt;/code&gt; 負責解包、回包、校驗與相容性&lt;/li&gt;
&lt;li&gt;&lt;code&gt;comment.py&lt;/code&gt; 與 &lt;code&gt;accept_changes.py&lt;/code&gt; 負責 Word 專項能力&lt;/li&gt;
&lt;li&gt;&lt;code&gt;schemas/&lt;/code&gt; 與 validators 把「看起來能用」提升到「結構上可靠」&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;程式位置：&lt;a class=&#34;link&#34; href=&#34;https://github.com/anthropics/skills/tree/main/skills/docx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/anthropics/skills/tree/main/skills/docx&lt;/a&gt;&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
