520mianxiangduixiang520/bill-claw/SKILL.md
Drives the BillClaw local bookkeeping CLI against SQLite (db/expenses.db) via scripts/main.py JSON subcommands—add/query transactions, delete and category-merge with preview+confirm, user-defined categories, reports with chart PNGs, CSV export, and a local Flask dashboard. Use when the user tracks 记账/收支/账本, manages 分类, asks for 报表 or charts, wants to open the Web 看板, exports CSV, or mentions BillClaw or running main.py (root shim) / scripts/main.py.
npx skillsauth add openclaw/skills billclawInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
本 Skill 通过本地 Python CLI 操作 SQLite 账本(db/expenses.db),实现记账、分类管理、报表图表与 Web 看板。Agent 负责自然语言理解与二次确认;脚本负责结构化读写与一致性。
parse_text 辅助从片段补全字段)user_categories 表;记账时 category 可直接用自定义名)report_dashboard.png:KPI + 支出/收入环形图 + 每日趋势 + 按月柱图;另有单图 expense_by_category.png、income_by_category.png、daily_trend.png、monthly_bar.png)+ 结构化 highlights(供你生成有温度的中文总结);data.agent_json 中含 primary_chart 指向合图路径scripts/dashboard.html + scripts/static/vendor 内 Chart.js,支持时间筛选、按月柱状图、分页明细与图表交互(缩放/平移等),离线可开页环境变量:BILLCLAW_DB_PATH 可覆盖默认数据库路径。
调用方式:在项目根目录执行 python scripts/main.py <子命令> --json-string '<JSON>' 或 --json 文件.json;亦可使用根目录 python main.py ...(转发到同一入口)。标准输出为一行 JSON:{"ok": bool, "error": str|null, "data": {...}}。
date(YYYY-MM-DD)、type(收入|支出)、category、amount(元)、note。parse 子命令辅助:python scripts/main.py parse --json-string '{"text":"<用户原句或片段>"}'time.date、amount.value、type_hint、category_hint 补全(仍需你判断是否ambiguous)。parse 或你的理解中 ambiguous: true,先问用户确认日期/时刻,再 add。add 的 data 中含 suspicious: true,先向用户确认是否输错,再决定是否重新 add 或取消。python scripts/main.py add --json-string '{"date":"...","type":"支出","category":"正餐","amount":35,"note":"..."}'"parse_text":"昨天午饭38" 与上述字段合并(缺省字段由解析补全)。默认支出分类:正餐、零食饮料、出行、购物、日常开销、娱乐、居住、医疗健康、家人、社交、其他。
默认收入分类:工资、奖金、投资、家人、其他收入。
用户自定义分类可先走 Intent D,之后记账 category 填该名称即可。
python scripts/main.py query --json-string '{...}'
常用字段:
date_from, date_to(含边界,格式建议 YYYY-MM-DD)type:收入 / 支出category:精确匹配category_like:SQL LIKE 子串note_like:备注 LIKEkeyword_in_note:备注或分类中包含关键词limit:默认 500将 data.rows 用简洁表格或列表回复用户。
禁止直接删除。 必须两步:
delete-preview:与 query 相同过滤字段,返回 data.preview_rows 与 data.ids。delete-confirm:{"ids":[...]}python scripts/main.py category-add --json-string '{"name":"恋爱","kind":"支出"}'
kind 只能是 收入 或 支出。
可用 category-list 查看已有用户分类。
merge-preview:用 keyword_in_note、old_category、old_category_like、date_from/date_to、type(默认可筛支出)等缩小范围。preview_rows,用户确认后:merge-confirm:{"ids":[...],"new_category":"恋爱"}python scripts/main.py report --json-string '{"date_from":"2026-03-01","date_to":"2026-03-31","output_dir":"./billclaw_output"}'
data.charts:各 PNG 绝对路径;优先向用户展示 report_dashboard(或 data.agent_json 里的 primary_chart)。兼容旧键名:expense_pie≈支出分类图,trend≈每日趋势。data.highlights:总收支、TOP 支出类、占比等。data.narrative_hints:简短提示句;你应在此基础上用朋友/恋人语气写 1~3 句中文总结(可轻微幽默),避免机械罗列数字。output_dir(见下方「output 目录与定时清理」);多次 report 会累积 PNG,需按需或定期清理。python scripts/main.py serve --json-string '{"host":"127.0.0.1","port":8000}'
(进程会占用终端,需告知用户浏览器访问 http://127.0.0.1:8000。)
页面含:日期范围筛选与快捷预设(全部/本年至今/近三月/近一月)、总收支 KPI、支出与收入分类环形图、每日折线(滚轮缩放/拖拽平移,可重置)、按月收支柱状图、可排序分页交易表(可选仅收入/仅支出)。前端为 scripts/dashboard.html,JS 库在 scripts/static/vendor/(离线可用,见该目录 README.md);中文字体使用系统字体栈。
python scripts/main.py export-csv --json-string '{"path":"./bills.csv","date_from":"2026-01-01"}'
| 子命令 | 作用 |
|--------|------|
| add | 插入一条交易 |
| query | 条件查询 |
| delete-preview / delete-confirm | 删除预览 / 执行删除 |
| merge-preview / merge-confirm | 改类预览 / 执行批量更新 category |
| category-add / category-list | 自定义分类 |
| report | 统计 + 出图 |
| export-csv | 导出 |
| parse | 从文本抽取时间/金额/类型/分类提示 |
| serve | 启动 Flask 看板 |
ok: true,data 为有效负载。ok: false,error 为可读说明。add 在写入成功后仍可能在 data 中带 suspicious(金额超参考阈值),不代表未写入;若你希望「先确认再记」,应在调用 add 前用规则判断或先问用户(推荐流程:先展示将记入的字段与异常提示,确认后再 add)。add。回复简短确认。parse 若带 ambiguous 或 note 提示晚上默认 20:00 → 问用户是否指今晚/哪一天的晚上 → 确认后再 add。add 后若返回 suspicious 同样要口头确认;用户确认无误再保留。category-add,再说明以后可直接说「恋爱」类消费。delete-preview(date_from/date_to 卡昨天 + keyword_in_note 或分类/备注)→ 列出 → 用户说「确认删」→ delete-confirm。report 传本月日期范围 → 发图路径 + 个性化短评。serve,给出本机 URL,并说明需在本机浏览器打开。scripts/main.py、scripts/parser.py、scripts/db.py、scripts/report.py、scripts/web.py、scripts/utils.py、scripts/dashboard.html、scripts/static/vendor/(看板 JS 依赖)若 serve 或 report 报错缺依赖,提示用户执行 pip install -r requirements.txt。
report 将合图与单图 PNG 写入 output_dir。未传时默认为当前工作目录下的 billclaw_output/(与显式传 ./billclaw_output 等价,取决于执行 main.py 时的 cwd)。这些文件仅为报表缓存/附件,不替代 SQLite 账本(db/expenses.db)。output_dir 下过期的 PNG(或按用户指定的保留策略,例如只保留最近 N 天/最近一次生成)。删除前用一两句话说明将删的是报表图片、不涉及账本数据。output_dir 下的 *.png(或整目录内旧文件),具体路径与保留天数由用户自行配置;Agent 不擅自替用户配置系统定时任务,除非用户明确要求协助编写命令或 plist 片段。tools
Use when the user wants to connect to, test, or use the McDonalds service at mcp.mcd.cn, including checking authentication, probing MCP endpoints, listing tools, or calling McDonalds MCP tools through a reusable local CLI.
development
Web scraping platform — Twitter/X data, Vinted marketplace, and general web scraping API
development
SlowMist AI Agent Security Review — comprehensive security framework for skills, repositories, URLs, on-chain addresses, and products (Claude Code version)
data-ai
去除中文文本中的 AI 写作痕迹,使其读起来自然。基于维基百科 AI 写作特征指南,检测 24 种 AI 模式。触发词:humanizer-cn、去除 AI 痕迹、去除 AI 写作痕迹、中文文本人性化。