首页 › skills-review › 官方xlsx拆解:公式不自己算

官方xlsx拆解:公式不自己算

概述

官方四件套拆到今天,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 的目录结构是这样的:

  1. Requirements for Outputs(交付要求)
  2. Overview(一句话任务定义)
  3. Important Requirements(环境依赖声明)
  4. Reading and analyzing data(读:pandas)
  5. Excel File Workflows(写:公式优先原则 + 三条工作流)
  6. Recalculating formulas(重算)
  7. Formula Verification Checklist(验证清单)
  8. Best Practices(防雷)
  9. Code Style Guidelines(生成代码的风格)

注意前两段的分量:「什么算做完」占了正文开头的最大篇幅,排在所有操作指南之前。 绝大多数社区 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 载入修改)殊途同归,最后都汇入同一个重算步骤——下一节细说。

第六段:recalc.py——把算术外包给 LibreOffice

这是整个技能的引擎,也是它设计哲学的浓缩。先看它解决的问题: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 格式。每一条都对应一类真实事故,这不是文档,是踩坑史的化石层。

第八段:连生成的 Python 代码都要省着写

最后一节的 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. 禁令给理由:每条 CRITICAL 后面跟一句 why("remains dynamic and updateable"),不搞无解释的独断。
  3. 弱项外包:识别模型不擅长的环节(数值计算),整体交给确定性工具(LibreOffice),SKILL.md 只留一行调用。
  4. 验证做成接口:脚本返回结构化 JSON(错误类型 + 精确位置),让修复循环可自动化,而不是一句「请仔细检查」。
  5. 踩坑史化石层:checklist 里每条都对应一类真实事故(列号换算、1-index、除零),禁令清单要从事故里来,不要凭空编写。

什么时候别用它

按人群的推荐排行榜

排名 人群 建议
1 金融/咨询/财务分析者 必装。配色规范和审计要求等于内置了一本建模手册
2 运营/数据分析者 装。「公式优先 + 强制重算」能杜绝交付死表
3 开发者 可选。你本来就会 pandas,装它主要为收编交付规范
4 学生/轻量用户 观望。如果没有 LibreOffice 环境且不做公式表,收益有限

结语

xlsx 是官方四件套的收官之作,也是工程完成度最高的一件:docx 的看家本领是绕开重建直接改 XML,pdf 的看点是按任务分库,而 xlsx 的答案是制度——用验收标准约束产出,用脚本外包计算,用结构化契约闭环纠错。如果你想写自己领域的第一个 Skill,这份文件比 skill-creator 更值得当字帖:它示范了怎么把一个行业的工作纪律,翻译成模型可执行、可验证、可自修的一条流水线。

参考来源

  1. anthropics/skills 官方仓库 — 本文拆解的 xlsx 技能所在仓库,官方四件套与 skill-creator 均在此维护
  2. 本机 example-skills 插件缓存中的 xlsx/SKILL.md 原文 — 文中所有引文(配色规范、公式优先条款、JSON 契约、验证清单)均逐段取自该文件;本地版本与 GitHub 最新版可能存在更新时差
  3. openpyxl 官方文档 — data_only 模式行为、read_only/write_only 模式等底层库语义的权威出处
  4. Claude Code 官方文档:Skills — 技能的安装路径与触发机制的官方说明

[!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 等场景全覆盖。

51学通信知识星球海报-扫码加入