官方四件套拆到今天,docx、pdf、pptx 都上过手术台,唯独 xlsx 一直只存在于横评名单里。本期把它单独开盖。这份 SKILL.md 的特别之处在于:它不是一份「怎么操作Excel」的工具手册,而是一份把投行分析师入职培训、软件工程验收制度和防呆清单压缩在一起的交付规范——先定「什么算做完」,再教「怎么做」,最后排雷。全文最有价值的设计是三处:公式优先的反硬编码条款、把数值计算整体外包给 LibreOffice 的 recalc 闭环、以及一套机器可读的 JSON 错误契约。本文素材取自本机安装的 example-skills 插件缓存中的 SKILL.md 原文,逐段拆到行为设计层面,看完你可以照着写出自己业务领域的同款。
| 维度 | 权重 | 评分 | 依据 |
|---|---|---|---|
| 功能完整度 | 25% | ★★★★☆ | 建、改、析三条工作流全覆盖,附带财务建模规范;透视表编辑、.xls 老格式、在线协作表不在射程 |
| 设计质量 | 25% | ★★★★★ | 验收标准前置、强制重算闭环、JSON 错误契约,三件套设计教科书级 |
| 实战效果 | 20% | ★★★★☆ | 「公式不重算」这个全生态最大的坑被制度化解决;但依赖本机有 LibreOffice |
| 上手难度 | 15% | ★★★★☆ | 装上即用零配置,唯一外部依赖脚本会首次自配 |
| 社区活跃度 | 15% | ★★★★★ | 随 anthropics/skills 官方仓库与 example-skills 插件持续分发更新 |
加权总分:4.4 / 5。 在官方四件套里,这是工程闭环做得最完整的一份。
| 项目 | 内容 |
|---|---|
| 名称 | xlsx |
| 来源 | anthropics/skills 官方仓库,随 example-skills 插件分发 |
| 文件构成 | SKILL.md 正文 + scripts/recalc.py(重算脚本)+ scripts/office/soffice.py(LibreOffice 启动器,由正文显式引用) |
| 外部依赖 | LibreOffice(正文明确「You can assume LibreOffice is installed」) |
| 触发方式 | 用户提到 Excel、xlsx、表格数据分析等任务时由 description 自动匹配;也可显式点名调用 |
关于门牌:正文之前的 YAML 头部(name 与 description)决定触发时机,这套机制本专栏在《门牌背面》已经拆过暗字段的门道,本期不重复,直接进正文。
这份 SKILL.md 的目录结构是这样的:
注意前两段的分量:「什么算做完」占了正文开头的最大篇幅,排在所有操作指南之前。 绝大多数社区 Skill 的写法是「先教怎么做,质量靠模型自觉」,这份文件反着来——先立验收标准,再给施工流程。这是工程里的 Definition of Done 前置:模型每做一步都有一个可对照的「完成定义」,而不是做完再想标尺。
正文第一段第一条就是硬指标:
Every Excel model MUST be delivered with ZERO formula errors (#REF!, #DIV/0!, #VALUE!, #N/A, #NAME?)
五个错误码逐一列出,不给模糊空间。这不是废话——模型生成公式的最大痛点就是引用断链和除零,把「禁止出现这五种符号」写成验收令,等于给后面第6步的自动扫描预埋了检查项。验收标准写得越具体,后面的自动化验证就越可行,这是前后文互相咬合的设计。
第二条更值得抄:
Existing template conventions ALWAYS override these guidelines
改用户已有模板时,不许拿自己的审美覆盖别人的格式。这是全文唯一的「克制条款」:一个会写 Excel 的模型最大的危险不是不会,而是太热情——把用户精心调过的模板强行标准化。一行 ALL CAPS,堵住一类事故。
接下来是最出人意料的一段——金融建模的行业配色规范被原文硬编码了进来:
这套蓝黑绿红不是 Anthropic 发明的,是金融建模培训里的通用行规(华尔街各家建模课教的同一套)。把它写进 SKILL.md 意味着:模型交付的不只是「能算对的表」,而是「金融从业者一眼能审计的表」——蓝的能改、黑的别动、绿的在表内、红的跨文件,颜色本身就是数据血缘图。
配套的数字格式细则同样是行规翻译:年份写成文本「2024」而不是「2,024」;货币用 $#,##0 且表头必须带单位("Revenue ($mm)");零值显示为横线($#,##0;($#,##0);-);百分比默认 0.0%;估值倍数用 0.0x;负数用括号 (123) 不用减号。每一条单看都是小事,合起来是「外行做的表」和「能进会议纪要的表」的分界线。
公式构造规则里有一条罕见的审计要求:所有假设值(增长率、利润率、倍数)必须放在独立的假设单元格,公式用引用不用数字——示例给的是「Use =B5(1+$B) instead of =B51.05」(连锚点符号都没写全,看得出是手工速记式的示范)。更进一步:
Source: Company 10-K, FY2024, Page 45, Revenue Note, [SEC EDGAR URL]
凡硬编码进表的数字,必须在单元格注释或旁边标注来源、日期、页码。这是把投行的「每个数都能溯源」纪律直接搬了进来。对一般用户这条是过度设计,对目标场景(财报建模)这是生命线——这份 SKILL.md 很清楚自己在为谁优化。
正文用了一个独立章节、CRITICAL 级标题、三组反例三组正例来 hammer 同一件事:
Always use Excel formulas instead of calculating values in Python and hardcoding them.
反例三连:在 Python 里算好总和再写进 B10(硬编码 5000)、在 Python 里算增长率写进 C5、在 Python 里求平均写进 D20——全部打叉。正例对应:sheet['B10'] = '=SUM(B2:B9)'。
为什么这件事值得这么大阵仗?因为这正是模型的「本能错误」:模型擅长算数,看到一张表会下意识把答案算出来填进去。但算好填进去的表是死的——源数据一改,答案不会跟着变。写成公式,表才是活的。这一段的设计价值在于它纠正的不是「不会」,而是「太勤快」:把模型最顺手的行为明确列为错误做法,并给出一句说服模型理由("This ensures the spreadsheet remains dynamic and updateable")——给禁令的同时给 rationale,模型遵循率更高,这是提示词工程的经典手法。
Common Workflow 列出六步:选工具(pandas 管数据,openpyxl 管公式格式)→ 建/载入 → 修改 → 保存 → 重算(MANDATORY IF USING FORMULAS) → 验证修错。
第五步的括号注释是全文件最精妙的一处强制:只要用了公式,重算就不是可选项。对应的三条工作流(pandas 分析、openpyxl 新建、load_workload 载入修改)殊途同归,最后都汇入同一个重算步骤——下一节细说。
这是整个技能的引擎,也是它设计哲学的浓缩。先看它解决的问题:openpyxl 写入的公式只是字符串,没有计算结果——Excel 打开前,那些公式的「缓存值」根本不存在。如果直接交付,用户看到的可能是空值或旧值。
这份 SKILL.md 的解法不是让模型心算补值,而是整体外包:
python scripts/recalc.py output.xlsx 30
脚本首次运行自动配置 LibreOffice 宏,然后用无头模式的 LibreOffice 打开文件、重算所有工作表的所有公式、把算出的值回写缓存、再扫描全表的五种错误码,最后吐出一份 JSON:
{
"status": "errors_found",
"total_errors": 2,
"total_formulas": 42,
"error_summary": {
"#REF!": {
"count": 2,
"locations": ["Sheet1!B5", "Sheet1!C10"]
}
}
}
这个 JSON 契约是全文的工程高光:错误不是「人话描述」,而是机器可读的结构化清单,带错误类型、数量、精确到单元格的位置。模型拿到它可以直接进入修复循环——修哪、修什么、修完重跑,全程不需要人肉看屏。对比大量社区 Skill「让它自己检查一下」的含糊写法,差距就在这一步:验证要做成接口,不要做成嘱咐。
正文还交代了一个沙箱细节:LibreOffice 在 Unix socket 受限的环境里起不来,由 scripts/office/soffice.py 专门处理。一个技能文件自带沙箱适配层,官方件和民间件的工程厚度差异在此。
画成图,这条闭环是:
flowchart TD
A["改完的xlsx"] --> B["recalc.py"]
B --> C["首次自配宏"]
C --> D["soffice无头启动"]
D --> E["LibreOffice重算"]
E --> F["回写公式缓存值"]
F --> G["扫全表错误码"]
G --> H["输出JSON报告"]
Best Practices 段埋了两颗必须知道的雷:
第一颗,data_only=True 能读到公式的计算值,但正文给出加粗级警告——用这个模式打开再保存,公式会被值永久覆盖。读值和保公式是同一扇门的两把钥匙,用错一把,文件报废。这是 openpyxl 圈最经典的翻车点,写成显式警告比让模型自己踩一遍便宜得多。
第二颗,大文件用 read_only=True 读、write_only=True 写,流式处理省内存。
Verification Checklist 则是一份审计员口吻的自查单,最有味道的是这两条:「Test 2-3 sample references」——先抽两三个引用验证取值正确,再铺全模型,别一口气写完再验;「column 64 = BL, not BK」——Excel 列号换算是模型的经典翻车点(第64列是 BL 不是 BK),官方直接点名。还有「DataFrame row 5 = Excel row 6」的 1-index 提醒、除零分母检查、跨表引用 Sheet1!A1 格式。每一条都对应一类真实事故,这不是文档,是踩坑史的化石层。
最后一节的 Code Style 常被忽略,但很见功力:
Write minimal, concise Python code without unnecessary comments
模型生成的 Python 代码不许写废话注释、冗余变量和多余 print——因为那段代码也要占用上下文和执行时间。反过来,Excel 文件本身却被要求给复杂公式加注释、给硬编码标来源。同一个文件里,对代码吝啬、对表格慷慨,主次分得很清。
把全文压成一句话:模型只负责写对公式,不负责算对数值。
写公式是模型的强项(模式匹配、结构理解),算数值是模型的弱项(心算不可靠),而 LibreOffice 是免费的确定性计算引擎。这份 SKILL.md 把两者用 recalc 闭环焊在一起,再用 JSON 契约把验证结果喂回给模型修错。对比一下生态里两类失败品:一类让模型「顺便把结果也算好」(返回死表),一类让模型「自己检查有没有错」(检查不可靠)。官方的答案是:各干各的强项,中间用脚本和结构化数据交接。
flowchart TD
A["表格需求进件"] --> B{"干哪类活?"}
B -->|纯数据分析| C["pandas读表"]
B -->|新建文件| D["openpyxl新建"]
B -->|改现有文件| E["openpyxl载入"]
C --> F["写公式不硬编码"]
D --> F
E --> F
F --> G["recalc强制重算"]
G --> H{"JSON有错?"}
H -->|errors_found| I["按错误清单修复"]
I --> G
H -->|success| J["零错交付"]
| 排名 | 人群 | 建议 |
|---|---|---|
| 1 | 金融/咨询/财务分析者 | 必装。配色规范和审计要求等于内置了一本建模手册 |
| 2 | 运营/数据分析者 | 装。「公式优先 + 强制重算」能杜绝交付死表 |
| 3 | 开发者 | 可选。你本来就会 pandas,装它主要为收编交付规范 |
| 4 | 学生/轻量用户 | 观望。如果没有 LibreOffice 环境且不做公式表,收益有限 |
xlsx 是官方四件套的收官之作,也是工程完成度最高的一件:docx 的看家本领是绕开重建直接改 XML,pdf 的看点是按任务分库,而 xlsx 的答案是制度——用验收标准约束产出,用脚本外包计算,用结构化契约闭环纠错。如果你想写自己领域的第一个 Skill,这份文件比 skill-creator 更值得当字帖:它示范了怎么把一个行业的工作纪律,翻译成模型可执行、可验证、可自修的一条流水线。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
