免费

现金跑道

回答几个简单问题,得到一份会自动更新的 Excel:未来 90 天钱够不够,哪一天最紧。

安装

把“现金跑道”技能安装到 ~/.claude/skills/cash-runway。
下载下面每个文件,保存到这个文件夹:
https://skilllift.pages.dev/packs/cash-runway/SKILL.zh.md → SKILL.md
https://skilllift.pages.dev/packs/cash-runway/NOTICE.txt → NOTICE.txt
https://skilllift.pages.dev/packs/cash-runway/references/style.md → references/style.md
https://skilllift.pages.dev/packs/cash-runway/assets/overview.html → assets/overview.html
https://skilllift.pages.dev/packs/cash-runway/assets/sample-en.json → assets/sample-en.json
https://skilllift.pages.dev/packs/cash-runway/assets/sample-zh.json → assets/sample-zh.json
https://skilllift.pages.dev/packs/cash-runway/scripts/make.py → scripts/make.py
https://skilllift.pages.dev/packs/cash-runway/scripts/build_workbook.py → scripts/build_workbook.py
https://skilllift.pages.dev/packs/cash-runway/scripts/labels.py → scripts/labels.py
https://skilllift.pages.dev/packs/cash-runway/scripts/model.py → scripts/model.py
https://skilllift.pages.dev/packs/cash-runway/scripts/formula_eval.py → scripts/formula_eval.py
https://skilllift.pages.dev/packs/cash-runway/scripts/verify.py → scripts/verify.py
https://skilllift.pages.dev/packs/cash-runway/scripts/shot.mjs → scripts/shot.mjs
https://skilllift.pages.dev/packs/cash-runway/scripts/preview.mjs → scripts/preview.mjs
https://skilllift.pages.dev/packs/cash-runway/scripts/check.mjs → scripts/check.mjs
https://skilllift.pages.dev/packs/cash-runway/scripts/test_no_verdict.py → scripts/test_no_verdict.py
然后读一遍 SKILL.md,告诉我它是做什么的,并提醒我开一个新会话。

解压到 ~/.claude/skills

同一个技能,不同的需求

左边是预览。右边由另一个 Agent 按不同需求制作,它只有安装好的技能,没看过预览。

预览
预览
新需求,由另一个 Agent 制作
新需求,由另一个 Agent 制作

这是按虚构需求做的一次测试。系统字体不同时,字形可能略有差异。

把自由职业者或小店老板的几句大白话,变成一份真正能用的 Excel 现金预测,回答“未来 90 天钱够不够,哪一天最紧”。公式实时计算,带底线和最低点的余额图、逐日预测、每周汇总、使用说明,以及最大一笔收款晚到两周的假设情形,另附一张总览图和一段直白的说明。当有人问现金流、现金跑道、“钱够不够用”,或想要一份简单的小生意资金预测时使用。

交付前必须通过

  • 每个金额都来自对方。每个日期都来自对方,或已连同对方的原话列为假设。
  • make.py 没有输出 PROBLEM,退出码为 0,check.mjs 通过。
  • 没有“未计入”的项目。如果确实没办法,已经告诉对方现在还没有答案,以及原因。
  • 答案那句话和图表上看到的一致。
  • 晚到情形那句话说的是正确的那笔钱。
  • 中文版是中文标签;如果用了其他币种,币种正确。
  • 说明里写了公式怎么核对、图表有没有在 Excel 里看过。
  • 全文没有税务、贷款或投资建议。
阅读完整 SKILL.md
---
name: cash-runway
description: 把自由职业者或小店老板的几句大白话,变成一份真正能用的 Excel 现金预测,回答“未来 90 天钱够不够,哪一天最紧”。公式实时计算,带底线和最低点的余额图、逐日预测、每周汇总、使用说明,以及最大一笔收款晚到两周的假设情形,另附一张总览图和一段直白的说明。当有人问现金流、现金跑道、“钱够不够用”,或想要一份简单的小生意资金预测时使用。
version: 1.1.0
---

# 现金跑道

对方只回答简单问题,就能拿到一份以后还能继续用的工作簿。他们看到的内容里不要出现脚本、公式这些词,提到文件时说“Excel 文件”就够了。安装和运行都由你来做。

## 对方只想要结果时

不要让对方安装或运行任何东西。用日常的话分几次问下面的问题,其余步骤你自己完成,最后把文件和说明一起交给对方。如果对方贴来银行流水、发票清单或零散笔记,就从中读出各项,念给对方确认。

## 要问的内容

必须知道。缺任何一项都要继续问,否则答案没有意义:
1. 预测从哪一天开始?通常是今天。
2. 那天账上有多少钱?

接着问,对方可以回答“不知道”:
3. 账上至少要留多少钱?这就是底线。
4. 未来 90 天预计会收到哪些钱?每一笔问清:是什么、多少、哪天、会不会重复。日期一定要问到。
5. 有哪些账单和固定支出?每一笔同样问清,日期一定要问到。
6. 对照这份清单过一遍,以免漏项:房租、工资、自己的收入、供应商货款、贷款还款、已算好的税款、保险、各种订阅。只问可能和对方有关的。
7. 币种和日期习惯,从对方的写法看不出来时再问。中文默认用 ¥ 和中文标签;对方说了别的币种,就用对方说的。

## 规矩

- 绝不编造金额,也不要替对方估算,或者按“一般情况”填一个。
- 日期不能悄悄猜。先问;对方说不上来,就按下面“日期”一节假定一个,并记录下来。
- 漏掉一项的答案比没有答案更糟,因为它看起来比实际安全。只要有一项缺日期、缺金额,或者一次性项目的日期已过,或者 90 天内没有任何账单,工具就会拒绝下结论:标题写“还不能下结论”,图片用红字列出每一项和金额,`make.py` 以退出码 4 结束。不要把它说得委婉,也不要当成结果发出去。问到日期或假定一个,再跑一遍。
- 对方自己给的估算,就按对方的数字填,并在 `assumptions` 里写明(如“每周 ¥12,500 的门店收入是店主的估算”)。
- 对方没提到的类别,写进 `assumptions` 作为问题,不要写金额(如“没有列出贷款还款,如果有请补上”)。
- 没给底线就不填,按零计算,并列为假设。不要建议底线该定多少。
- 对方问税务、贷款或投资建议时,说明这份预测给不了,需要请教专业人士。可以说算术结果,比如“那天比底线少 ¥851”。不要叫对方去借钱、推迟缴税或投资。
- 真实的人和公司只有对方提到时才出现。示例一律虚构,并标明虚构。

## 日期

先问日期。没人答得上来时,用这张表把对方的话变成一个具体日期,“今天”指预测的第一天。把对方的原话写进这一行的 `date_from`,工具就会把每一项作为假设列在总览和说明里,请对方确认。不要让任何一行没有日期。

| 对方说 | `date` | `repeat` |
|---|---|---|
| “每天” | 第一天 | daily |
| “每周” | 第一天 | weekly |
| “每月” | 第一天 | monthly |
| “1 号”“28 号” | 第一天当天或之后最近的那个日子 | 按对方说的 |
| “下周”,收入 | 下周五 | once |
| “下周”,账单 | 下周一 | once |
| “大概 5 周后” | 第一天加 35 天。落在周末时,收入顺延到下周一,账单提前到上周五 | once |
| “下个月”,没说哪天 | 收入:当月最后一天。账单:1 号 | once |

收入往晚放,账单往早放,这样假定的日期不会让答案变好看。

- “每天”一周七天都算。如果有休息日,不要悄悄乘上去:改用每周合计和 `repeat: weekly`,并在 `assumptions` 里写明怎么算的。
- 对方不确定会不会收到的钱(“也许有 ¥800”):不要列进清单,写进 `assumptions`:“可能的 ¥800 没有算入,因为还不确定。”少算收入不会让答案变好看。不确定的账单要留在清单里,并假定一个日期。

## 其他情况

- 信息太少:把对方说的复述一遍,列出还缺什么,不要自己补。
- 没人答得上来:只要有开始日期和余额,就按“日期”一节假定日期,把所有缺口写进 `assumptions`,并说明答案只和清单一样可靠。金额不能假定:缺金额工具就不下结论,要说明需要什么。缺开始日期或余额就停下来说明需要什么,`make.py` 也会拒绝运行。
- 想要 90 天以外的长度:工作簿固定为 90 天。如实说明,并提议从更晚的日期重新做一份,往后多看一段。
- 之后要换币种:需要重新生成,因为金额格式是生成时定下的。
- 收入超过 20 行或支出超过 35 行:请对方合并一些小项。

## 步骤

1. 把回答写进临时文件夹里的 `answers.json`,格式参照 `assets/sample-zh.json` 或 `assets/sample-en.json`:
   `lang`(zh 或 en)、`business`、`start`、`opening`、`floor`、`late_days`(除非对方另有要求,否则为 14)、`currency`、`date_style`(英文用 dmy 或 mdy)、`paper`(a4 或 letter,中文用 a4)、`money_in` 和 `money_out`(每项为 `{name, date, amount, repeat}`)、`assumptions`。repeat 取 once、daily、weekly、fortnightly、monthly 或 quarterly。日期写成 YYYY-MM-DD。日期是你假定的那一行,再加上 `date_from`,写对方的原话。只有示例才设 `fictional: true`。
2. 运行 `python3 scripts/make.py answers.json 输出文件夹`,不到一分钟。缺 XlsxWriter 时脚本会自动装到临时文件夹。总览图片需要 Playwright,脚本会在 `NODE_PATH`、当前文件夹和脚本的上级文件夹里找。找不到时只提示一行:在临时文件夹运行 `npm install playwright`,再把 `NODE_PATH` 设为那里的 `node_modules`。没有它也会生成 `overview.html`,说明里会写明没有图片。退出码 4 表示没有答案:回到“日期”一节去问。
3. 运行 `node scripts/check.mjs 输出文件夹`,修好它报告的所有问题。只要有一行没有日期,或者有未计入的项目却给了结论,它都会失败。`python3 scripts/test_no_verdict.py` 用来证明这些规则,大约两分钟。
4. 亲眼看一遍 `overview.png`,对照对方的数字把两句话读一遍。
5. 把 `cash-runway.xlsx`、`overview.png` 和 `message.txt` 的文字发给对方。说明照原文用,只补充对方问到的内容。除非对方要,不必发 `verification.json`。

## 公式怎么核对

`make.py` 会运行 `scripts/verify.py`,并始终说明用了哪种核对方式:
- 装有 LibreOffice 时,由它重新计算工作簿,再逐个比对数值。
- 没有时,由 `formula_eval.py` 按文件里的公式文字计算,再和独立的逐日计算 `model.py` 比对。第一种情况下也会运行这一步。
- 无论哪种,都会尝试改动 21 种输入(余额、底线、日期、金额、新增行、每天重复的项目、缺项),并再次比对。独立计算发现有算不进去的项目时,工作簿必须拒绝下结论,反之不能拒绝。

说明里会写明实际用的方法。只要没人真的在 Excel 里看过图表,就要直说图表没有在 Excel 里看过。在 LibreOffice 里看过不等于在 Excel 里看过。

不要为了核对文件去打开、用脚本控制或向 Excel、Numbers 以及对方可能正在使用的任何应用发送命令,这可能让对方手头的工作卡死。请使用上面的文件核对方式。如果装有 LibreOffice,可以对副本做无界面转换:`soffice --headless --convert-to pdf`,再查看各页。

## 交付内容

- `cash-runway.xlsx`:总览(一句话答案、晚到情形、图表、数字、假设)、你的数字(蓝色格子)、逐日预测(90 行)、每周汇总(13 行)、使用说明、计算过程。
- `overview.html` 和 `overview.png`:快速查看用。
- `message.txt`:直白的说明。
- `verification.json`:核对记录。

## 交付前检查

- [ ] 每个金额都来自对方。每个日期都来自对方,或已连同对方的原话列为假设。
- [ ] `make.py` 没有输出 PROBLEM,退出码为 0,`check.mjs` 通过。
- [ ] 没有“未计入”的项目。如果确实没办法,已经告诉对方现在还没有答案,以及原因。
- [ ] 答案那句话和图表上看到的一致。
- [ ] 晚到情形那句话说的是正确的那笔钱。
- [ ] 中文版是中文标签;如果用了其他币种,币种正确。
- [ ] 说明里写了公式怎么核对、图表有没有在 Excel 里看过。
- [ ] 全文没有税务、贷款或投资建议。

## 不适用的情况

- 审计报表、纳税申报、给贷款方的预测或估值。
- 超过 90 天的预测,或同时涉及多个账户、多种币种。
- 需要专业顾问判断的决定。这里只用对方的数字做算术,不做其他判断。

## 运行要求

Python 3.9 或更新版本。XlsxWriter(BSD 许可),由脚本装到临时文件夹。`check.mjs` 需要 Node。Playwright 可选,用于生成图片。LibreOffice 可选,用于更强的核对。“当天发生”一列需要 Excel 2019 或更新版本;旧版里这一列留空,所有计算不受影响。外观见 `references/style.md`,不要改样式。

用在这些流程里

相似技能