📈 GH Trending Explorer 🎲 Surprise me

← all repos

zhutoumeme / mcd-git

git clone https://github.com/zhutoumeme/mcd-git.git v0.2.5 · 9d ago

用 git 命令点麦当劳:add 放购物车,rebase 凑最省,push 确认后才下单;card 生成 1024 吃麦贡献图(3D 汉堡天际线 / 年度小票)。基于麦当劳 MCP Server,附 --demo 无 Token 试玩和 Agent Skill。非官方参赛作品。

+0
stars, 24h · #35,341
+~0
stars, 7 days · #35,816
+83
stars, 30 days · #6,296
83
★ total
0
forks · 0 open issues

Star history (as recorded here)

2026-10-20 · 83 ★ 2026-10-22 · 83 ★
LanguagePython
LicenseMIT
Created2026-10-10 (12d ago)
Last push9d ago
Watchers1
OwnerUser

GitHub topics

Links

README excerpt
# mcd-git · 用 git 命令点麦当劳
`mcd-git add` 放进购物车,`mcd-git rebase` 自动凑套餐、挑最省的券,`mcd-git push` 才真正下单,终端里直接出支付二维码;需要 Git 子命令语义时也可使用 `git mcd`。基于麦当劳中国 MCP Server(`mcp.mcd.cn`)。
> 动图和下面所有截图都是 `--demo` 合成数据:门店、价格、订单号、券都是编的,支付链接指向 `example.com`。
## 一套引擎,两个入口
- **开发者**:在终端里优先敲 `mcd-git`,人工操作和命令补全都以它为推荐入口。`git-mcd` 在 PATH 里时,也可以使用 Git 的 `git mcd …` 子命令语义;它不会碰你代码仓库的 `.git`。
- **普通用户**:把 SKILL.md 装进 WorkBuddy / Claude Code / Kiro,用大白话点餐,Agent 在后台跑 `git mcd --json`。
一段 Agent 对话(demo 数据):
 [code] 
**和普通 Skill 的区别:确认由代码强制执行。** 普通 Skill 只是一段提示词,Agent 手里有 MCP 连接器就能随时直接调 `create-order`。mcd-git 的 Skill 不需要给 Agent 配 MCP 连接器,Token 只给 mcd-git 用,Agent 手里只有 `git mcd` 这一套命令:下单必须先出确认摘要,再用 `--confirm ` 执行;哈希、参数、重新算出的应付金额,任何一项和预览时对不上,代码都会拒绝。代码保证的是这三件事:一定先出预览,确认时不能换参数,价格会复核。至于 Agent 有没有先把摘要拿给你看、等你点头,代码分辨不出来,这一步靠 SKILL.md 的规则约束 Agent。
## 1024 特别版:生成你的吃麦贡献图
把吃麦记录(最多过去一年)画成一张卡片,有三种样式,用 `--style` 选:
- **麦门天际线**(`skyline`,默认):等距 3D,最多 53 周 × 7 天,每天吃了几次就叠几层汉堡(底面包、肉饼、芝士、生菜、顶面包),超过 4 层只画 4 层、顶上标一个「+」;10-24 那格插一面「0x400」小旗。打开时汉堡按周从左到右落下叠好,只播一次、3 秒内停在完整状态,系统开了「减弱动态效果」就直接显示完成状态。默认深色夜景,浅色模式下换成奶油底。宽版,适合贴在 GitHub 个人主页。
- **年度吃麦小票**(`receipt`):竖版热敏小票,最常点 TOP 5 当商品行,中间一块点阵热力图(红圈是 10-24),下面是时段分布、TOTAL 和一根装饰条形码。适合发朋友圈、小红书。
- **平面格子**(`grid`):GitHub 风格的 7 行 × 53 周格子,颜色深浅表示那天吃了几单,10-24 那格单独描边。最朴素,放进文档里也不扎眼。
 平面格子(--style grid) 
真实卡片从你最早一单开始画(最少 12 周,最多 53 周),随使用越来越满:麦当劳接口只给最近 10 单,更早的要靠本机账本慢慢攒;10-24 不在画出来的这几周里时,天际线不插小旗、小票不画红圈(天际线底部那格「10-24 / Happy 0x400 Day」是 1024 特别版的固定标语,一直都在)。上面三张是 demo 一年的合成数据,所以是满的;平面格子固定画 53 周。
终端里先出预览(终端画不出 3D,天际线和格子都用格子预览;小票直接打印文字版),同时在本机写一个 SVG:自包含(不引用外部字体、图片和脚本,重复的图形用 ` ` + ` ` 复用),跟着系统切换浅色 / 深色,二三十 KB。同样的数据每次生成的文件都一样。
 [code] 
默认文件名按样式区分(`mcd-contributions-skyline.svg` / `-receipt.svg` / `-grid.svg`),三种样式各写各的、连跑两种不会互相覆盖;用 `-o` 指定路径时完全听你的。节前(今天还没到 10-24)卡片会把右边界提前延伸到 10-24 那一周,提前标出「即将到来的程序员节」(天际线插旗、小票红圈、格子描边),不用等到当天才看得到。
`--with-savings` 的数是下限:`order-list` 不返回优惠明细,只有 push 过或 `show` 过的单才知道省了多少。天际线和小票上有单缺明细时会写「只算有优惠明细的 N 单,是下限」,终端里也会提示。
**贴到 GitHub 个人主页**(全程在本机手动完成):
1. 建一个和用户名同名的仓库 ` / `,GitHub 会把它的 README 显示在你的个人主页上;
2. 在本机运行 `mcd-git card -o /mcd-contributions.svg`;
3. 在那个仓库的 README.md 里加一行 ` `;
4. 自己 `git add`、`git commit`、`git push`。
**不要用 GitHub Actions 定时生成。** MCP Token 不能放进 CI(服务规则不允许把凭证托管到第三方平台),也不允许自动化调用。想更新就在本机再跑一次 `mcd-git card`。
**卡片上有什么**:日期级的格子(或汉堡、点阵)、总单数、最常点(小票是 TOP 5 和次数)、最常时段,以及数据范围(比如「数据:麦当劳最近 10 单 + 本机记录,最早到 2026-10-21」)。没有门店、地址、订单号、手机号、具体下单时刻和总消费;只有加了 `--with-savings` 才显示省下的钱。公开之前自己再看一眼。
**数据从哪来**:`order-list` 只返回最近 10 单,所以刚开始用时格子会比较空。mcd-git 会把看到的订单记进本机账本,用得越久越全;取消的和没付款的单不算。
**本机订单账本**:`~/.config/mcd-git/ledger.json`(demo 用的是另一份 `~/.config/mcd-git/demo/ledger.json`),文件权限 600,只给吃麦贡献图当数据。`log`、`cherry-pick`、`card` 查 `order-list` 时顺手合并最近 10 单,`show` 顺手补上那一单的原价和优惠(同一单按订单号合并,新状态覆盖旧状态),`push` 下单成功时记一笔,并和那个本地 commit 关联起来。每单只存下单时间、状态、餐品名和份数、原价 / 优惠 / 实付、取餐方式;不存订单号原文(只存它的哈希)、门店、手机号、地址、取餐码、支付链接。删掉这个文件就清空了,不影响购物车和订单。
## git 命令 ↔ 点餐动作
| mcd-git / git mcd | 点餐动作 | 会改动你的账户吗 |
|---|---|---|
| `init` | 选门店和取餐方式(到店 / 得来速 / 麦乐送),相当于设置远端 | 否 |
| `status` | 当前分支(按时段:break