by zhutoumeme
用 git 命令点麦当劳:add 放购物车,rebase 凑最省,push 确认后才下单;card 生成 1024 吃麦贡献图(3D 汉堡天际线 / 年度小票)。基于麦当劳 MCP Server,附 --demo 无 Token 试玩和 Agent Skill。非官方参赛作品。
# Add to your Claude Code skills
git clone https://github.com/zhutoumeme/mcd-gitSee how mcd-git compares with popular alternatives.
mcd-git is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by zhutoumeme. 用 git 命令点麦当劳:add 放购物车,rebase 凑最省,push 确认后才下单;card 生成 1024 吃麦贡献图(3D 汉堡天际线 / 年度小票)。基于麦当劳 MCP Server,附 --demo 无 Token 试玩和 Agent Skill。非官方参赛作品。. It has 73 GitHub stars.
mcd-git's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/zhutoumeme/mcd-git" and add it to your Claude Code skills directory (see the Installation section above). mcd-git ships a SKILL.md manifest, so compatible agents can discover and load it automatically.
mcd-git is primarily written in Python. It is open-source under zhutoumeme on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh mcd-git against similar tools.
No comments yet. Be the first to share your thoughts!
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
mcd-git 把麦当劳中国 MCP Server 包装成 git 风格的命令:add 放进购物车,rebase 凑最省,commit 锁单,push 才真正下单。你通过 git mcd … --json 操作它,读 JSON 结果,再用自然语言告诉用户。
uv tool install git+https://github.com/zhutoumeme/mcd-git
# 没有 uv:
pip install "git+https://github.com/zhutoumeme/mcd-git"
装好后运行 git mcd help 确认(也可以用等价的 mcd-git help)。看命令对照表一律用 git mcd help;不要在 mcd 后面直接跟 --help,那样会被 git 拦截去找 man 手册。单个子命令的帮助用 git mcd <命令> -h。MCD_MCP_TOKEN(所有平台首选),或配置文件(macOS / Linux 用 ~/.config/mcd-mcp/token,Windows 用 %APPDATA%\mcd-mcp\token,也支持 XDG_CONFIG_HOME)。不要让用户把 Token 发进对话,不要读取、打印或改写 Token 文件。命令报「没有找到麦当劳 MCP Token」时,告诉用户去 open.mcd.cn 控制台申请并自己写进上面的位置(命令的报错 hint 会按平台给出具体命令和路径)。--demo 演示全流程(合成数据,不会真的下单),并明确告诉用户这是演示。git mcd … --json 操作。 一律带 --json:输出稳定好解析,而且不会弹出 y/N 交互提示(交互提示是留给真人的,不要替用户回答)。不要直接调用 MCP 的写操作 tool(create-order、cancel-order、auto-bind-coupons、mall-create-order、draw-lottery、party-order-create、delivery-create-address),即使你的环境里配了麦当劳 MCP 连接器。--confirm 运行 git mcd push … --json,把返回的确认摘要(门店、取餐方式、时间、餐具、每样商品、券、应付金额)如实告诉用户,并说明「会生成一笔待支付订单,付款要你自己完成」。只有用户明确说「确认 / 下单 / 可以」之后,才运行 JSON 里 data.next 给出的那条命令(带 --confirm <commit 哈希>)。用户没明确同意、或改了任何条件(时间、取餐方式、餐品),都要重新预览、重新确认;改餐品要先并进这一单,见常用流程「下单前改餐品」。push 返回 error.detail.code == "uncommitted_changes",说明购物车里还有没并进这一单的餐品(列在 error.detail.uncommitted),这次什么都没下单:先问用户这些要不要加进这一单,要就运行 error.detail.amend(commit --amend),不要就运行 error.detail.discard(reset 清空购物车)。error.detail.amend 是 null 时,HEAD 是另一家店(或另一种取餐方式)的单,购物车没法并进去:先问用户是放弃购物车(error.detail.discard),还是撤回那一单(error.detail.withdraw,即 reset --soft HEAD~1:那一单的餐品放回购物车,再按现在的门店重新 commit)。两种情况都不要替用户选,处理完都要重新预览、重新确认。git mcd revert --reason <编号> --json 先预览,用户同意后运行 data.next(带 --confirm <订单号>)。取消原因要让用户选:1 改主意了、2 重复下单、3 点错了/点多了/点少了、4 地址/电话填错了、5 送达时间选错了、-1 其它原因。git mcd pull,不要直接调 auto-bind-coupons。先运行 git mcd pull --json 预览,把 data.summary 如实告诉用户:一共 count 张、每张叫什么(coupons[].name),以及「会一次全部领进你的账户,接口不支持只领其中几张」。用户明确同意后才运行 data.next(带 --confirm <指纹>);用户只想要其中几张、或者没表态,就不要领。预览时 data.status == "up-to-date" 说明现在没有可领的券;执行 data.next 之后返回 up-to-date(带 note)表示服务端这次一张都没发,先 git mcd fetch --json 核对,不要重试。--confirm 报「可领券列表变了」时什么都没领,要重新预览、重新确认。报「不确定券有没有领到」时先 git mcd fetch --json 核对还剩哪些可领,不要重试。不要定时、循环或者批量领券,每次都由用户发起。payH5Url 和付款截止时间交给用户;用户说付好了,再运行一次 git mcd show --json 查取餐码。不要循环查询订单状态。push 报「不确定订单有没有建成」时,先 git mcd log --json 核对最新订单,再和用户商量,绝不直接再 push 一次。rebase 只会在不加东西的前提下省钱,你也不要主动加购。payable、price、subtotal、unitPrice 等)都是整数分,告诉用户时除以 100,写成 ¥33.50。| 步骤 | 命令 | 看 JSON 的哪里 |
|---|---|---|
| 选门店 | git mcd init [--limit N] --json |
data.status == "choose" 时把 data.candidates 给用户选,再 git mcd init --pick <序号> --json;--limit N 只在本地截取前 N 家(接口一次大约只给 5 家,不会多调) |
| 按地标找店 | git mcd init --city 上海 --keyword 人民广场 [--limit N] --json |
同上;--city 和 --keyword 必须一起给(只给其中一个会报错,接口不认);得来速加 --mode drive;麦乐送 --mode delivery(再用 --address <序号> 选地址) |
| 现状 | git mcd status --json |
data.remote、data.index(购物车)、data.coupons、data.pendingPayment |
| 看菜单 | git mcd ls-remote <关键词> --json |
data.meals[]:code、name、type、price(真实可得价);有 offerNote 的是条件优惠(如「¥37.00 需随单购麦金卡」,offerPrice 是条件价),要同时买会员卡才成立,不要当成用户能拿到的价格 |
| 加购 | git mcd add 巨无霸 中薯条 --no-pickle --json |
名字有歧义时 ok == false,候选在 error.detail.candidates,问用户要哪个,或直接用 code |
| 特制 / 换搭 | --no <配料>、--with 少冰、--with 加一份浓缩、--choose 大薯条、-n 2 |
data.warnings 里是没生效的定制 |
| 移出 / 清空 | git mcd restore --staged <餐品> --json、git mcd reset --json |
data.index |
| 省钱 | git mcd rebase --json |
data.before → data.after、data.saved、data.todo;不满意 git mcd reset ORIG_HEAD |
| 看明细 | git mcd diff --json |
data.rows[]:a(原价 / 不用券)、b(应付 / 用券后) |
| 锁单 | git mcd commit -m "午饭" --json |
data.short(commit 哈希)、data.payable |
| 下单前改餐品 | add / restore --staged 改购物车 → git mcd commit --amend --json 并进这一单 → 重新预览 git mcd push … --json |
data.short 会变,之前的预览作废,要重新给用户确认。restore 只动购物车;要去掉已经 commit 的餐品,先 git mcd reset --soft HEAD~1 --json 放回购物车,改完再 git mcd commit -m … --json |
| 下单预览 | git mcd push [--at 12:20] [--locker / --eat-in / --take-out] [--no-tableware] [--remark 备注] --json |
data.status == "confirmation_required"、data.summary、data.next |
| 用户同意后 | 原样运行 data.next 里的命令(已经带好 --confirm <哈希> 和 --json) |
data.status == "pushed"、data.payH5Url、data.expirePayTime |
| 查取餐码 | git mcd show --json |
data.order.statusLabel、pickupCode、lockerCode、delivery |
| 历史 | git mcd log --oneline --json |
data.entries[](最多最近 10 单) |
| 吃麦统计 | git mcd log --stat [-n 10] [--since YYYY-MM-DD] [--until YYYY-MM-DD] --json |
data.summary(orders、cancelled、pending、lines、paid、saved、savedUnknown、slots、top;金额是分,只算吃了的单,已取消和待支付不计入)、data.entries[](counted 表示是否计入)。数据来自本机账本,savedUnknown 是没有优惠明细的单数,省下的钱是下限 |
| 再来一单 | git mcd cherry-pick HEAD --json,再 git mcd commit -m 再来一单 --json,然后按「下单预览」走 |
data.index、data.conflicts(本店买不到的会列出来)。cherry-pick 只放回购物车,不 commit 就 push 会报「购物车还没 commit」。只用于已经 push 过的单:HEAD 还没 push 时它本来就是这一单,cherry-pick HEAD 会被拒绝(error.detail.code == "empty_cherry_pick",购物车不动),直接按「下单预览」走;用户要多点就 add 后 commit --amend |
| 取消 | git mcd revert --reason 3 --json |
预览后用户同意,再运行 data.next |
| 活动和可领券 | git mcd fetch --json |
data.events、data.claimable(只读;要领就按下面「领券」走) |
| 领券预览 | git mcd pull --json |
data.status == "confirmation_required"、data.summary(count、coupons[]、note)、data.next;"up-to-date" 表示没有可领的券 |
| 用户同意领券后 | 原样运行 data.next 里的命令(已经带好 --confirm <指纹> 和 --json) |
data.status == "pulled"、data.successCount、data.failedCount、data.claimed[]、data.failed[](reason);领到之后下单前照常 git mcd rebase 挑最省的券 |
| 吃麦贡献图 | git mcd card -o <路径> --json;--style skyline(默认,麦门天际线,贴 GitHub 主页)/ receipt(年度吃麦小票,发朋友圈)/ grid(平面格子),用户没说就用默认 |
data.style、data.path(写好的 SVG)、data.stats(total、topItem、topSlot、earliest);data.status == "empty" 说明还没有记录,没写文件。不给 -o 时默认文件名按样式区分(mcd-contributions-<样式>.svg,互不覆盖)。只在本机写文件:不要替用户把图提交或上传到 GitHub,也不要设置定时任务;默认不加 --with-savings,用户想看省了多少钱再加 |
--remark 只用于麦乐送;--locker 要门店有取餐柜,没有会报错,把可选的取餐方式告诉用户。--at 写 HH:MM(今天)或 "YYYY-MM-DD HH:MM";预览和确认时要用完全相同的参数。push 返回 data.status == "up-to-date" 说明 HEAD 早就下过单,这次没有新下单,不要告诉用户「已下单」。只有 data.status == "pushed" 才是新下了一单。--qr 默认 full(整格,各终端都扫得出);half 更紧凑,但部分终端(如 macOS Terminal.app)可能扫不出;fancy(麦当劳主题码:金色 + 正中像素麦当劳元素 Logo,6 个图案随机出一个,可用 fancy=名字 指定汉堡/薯条/麦乐鸡/甜筒/派/金拱门)是给人看 / 扫的。Agent 走 --json 时不用特意加。git mcd completion)是给真人在终端里按 TAB 用的,Agent 不需要,照常用 --json。ok 字段:false 时读 error.message 和 error.hints 转告用户,退出码非 0。用户:中午想吃巨无霸,不要酸黄瓜,加中薯条和中可乐,12:20 取餐柜取,不要餐具。
你:git mcd add 巨无霸 中薯条 中可乐 --no-pickle --json
git mcd rebase --json → before 4550,after 3350(凑成套餐 + 一张立减券)
git mcd commit -m 午饭 --json → short: bfc651c
git mcd push --at 12:20 --locker --no-tableware --json
→ status: confirmation_required,summary.payable: 3350
你对用户:门店 演示·代码港店,外带·店外取餐柜,预约 12:20,不要餐具;
巨无霸套餐 [巨无霸 · 中薯条 · 中可乐] 去酸黄瓜,用券后应付 ¥33.50。
确认的话我就下单,生成待支付订单后需要你自己付款。
用户:确认。
你:git mcd push --at 12:20 --locker --no-tableware --confirm bfc651c --json
→ status: pushed,payH5Url、expirePayTime
你对用户:下好了,请在 12:05 前打开支付链接付款;付完告诉我,我帮你查取餐码。
(例子是 --demo 合成数据,门店、价格、哈希都是编的。)
git mcd add 放进购物车,git mcd rebase 自动凑套餐、挑最省的券,git mcd push 才真正下单,终端里直接出支付二维码。基于麦当劳中国 MCP Server(mcp.mcd.cn)。

动图和下面所有截图都是
--demo合成数据:门店、价格、订单号、券都是编的,支付链接指向example.com。
git mcd。git-mcd 在 PATH 里,git 就会把 git mcd … 交给它,任何目录都能用,不碰你代码仓库的 .git。git mcd --json。一段 Agent 对话(demo 数据):
你: 中午想吃巨无霸,不要酸黄瓜,再来中薯条和中可乐。12:20 去店外取餐柜拿,不要餐具,看看怎么最省。
Agent:(git mcd add 巨无霸 中薯条 中可乐 --no-pickle --json → git mcd rebase --json → git mcd diff --json)
三样正好凑成巨无霸套餐,再用一张「示例·巨无霸套餐立减 5 元」:¥45.50 → ¥33.50。
(git mcd commit -m 午饭 --json → git mcd push --at 12:20 --locker --no-tableware --json)
门店 演示·代码港店 · 外带·店外取餐柜 · 预约 12:20 · 不要餐具
巨无霸套餐 [巨无霸 · 中薯条 · 中可乐] 去酸黄瓜,应付 ¥33.50。要下单吗?付款需要你自己完成。
你: 确认。
Agent:(git mcd push --at 12:20 --locker --no-tableware --confirm bfc651c --json)
下好了,请在 12:05 前打开这个链接付款:https://example.com/mcd-git-demo/pay?orderId=1024…
付完跟我说一声,我帮你查取餐码。
和普通 Skill 的区别:确认由代码强制执行。 普通 Skill 只是一段提示词,Agent 手里有 MCP 连接器就能随时直接调 create-order。mcd-git 的 Skill 不需要给 Agent 配 MCP 连接器,Token 只给 mcd-git 用,Agent 手里只有 git mcd 这一套命令:下单必须先出确认摘要,再用 --confirm <commit 哈希> 执行;哈希、参数、重新算出的应付金额,任何一项和预览时对不上,代码都会拒绝。代码保证的是这三件事:一定先出预览,确认时不能换参数,价格会复核。至于 Agent 有没有先把摘要拿给你看、等你点头,代码分辨不出来,这一步靠 SKILL.md 的规则约束 Agent。
把吃麦记录(最多过去一年)画成一张卡片,有三种样式,用 --style 选:
skyline,默认):等距 3D,最多 53 周 × 7 天,每天吃了几次就叠几层汉堡(底面包、肉饼、芝士、生菜、顶面包),超过 4 层只画 4 层、顶上标一个「+」;10-24 那格插一面「0x400」小旗。打开时汉堡按周从左到右落下叠好,只播一次、3 秒内停在完整状态,系统开了「减弱动态效果」就直接显示完成状态。默认深色夜景,浅色模式下换成奶油底。宽版,适合贴在 GitHub 个人主页。receipt):竖版热敏小票,最常点 TOP 5 当商品行,中间一块点阵热力图(红圈是 10-24),下面是时段分布、TOTAL 和一根装饰条形码。适合发朋友圈、小红书。grid):GitHub 风格的 7 行 × 53 周格子,颜色深浅表示那天吃了几单,10-24 那格单独描边。最朴素,放进文档里也不扎眼。真实卡片从你最早一单开始画(最少 12 周,最多 53 周),随使用越来越满:麦当劳接口只给最近 10 单,更早的要靠本机账本慢慢攒;10-24 不在画出来的这几周里时,天际线不插小旗、小票不画红圈(天际线底部那格「10-24 / Happy 0x400 Day」是 1024 特别版的固定标语,一直都在)。上面三张是 demo 一年的合成数据,所以是满的;平面格子固定画 53 周。
终端里先出预览(终端画不出 3D,天际线和格子都用格子预览;小票直接打印文字版),同时在本机写一个 SVG:自包含(不引用外部字体、图片和脚本,重复的图形用 <defs> + <use> 复用),跟着系统切换浅色 / 深色,二三十 KB。同样的数据每次生成的文件都一样。
git mcd --demo card # 先用合成数据看看效果(上面这张就是),写到当前目录的 mcd-contributions-skyline.svg
git mcd card # 用你自己的记录,默认麦门天际线,从你最早一单画起
git mcd card --style receipt # 年度吃麦小票,默认写到 mcd-contributions-receipt.svg
git mcd card --style grid # 平面格子,默认写到 mcd-contributions-grid.svg
git mcd card -o ~/Desktop/mcd.svg # 换个地方写
git mcd card --with-savings # 卡片上多一项「用券省下 ¥X」(默认不出现任何金额)
默认文件名按样式区分(mcd-contributions-skyline.svg / -receipt.svg / -grid.svg),三种样式各写各的、连跑两种不会互相覆盖;用 -o 指定路径时完全听你的。节前(今天还没到 10-24)卡片会把右边界提前延伸到 10-24 那一周,提前标出「即将到来的程序员节」(天际线插旗、小票红圈、格子描边),不用等到当天才看得到。
--with-savings 的数是下限:order-list 不返回优惠明细,只有 push 过或 show 过的单才知道省了多少。天际线和小票上有单缺明细时会写「只算有优惠明细的 N 单,是下限」,终端里也会提示。
贴到 GitHub 个人主页(全程在本机手动完成):
<用户名>/<用户名>,GitHub 会把它的 README 显示在你的个人主页上;git mcd card -o <那个仓库的目录>/mcd-contributions.svg;<img src="mcd-contributions.svg" alt="过去一年吃麦贡献图">;git add、git commit、git push。不要用 GitHub Actions 定时生成。 MCP Token 不能放进 CI(服务规则不允许把凭证托管到第三方平台),也不允许自动化调用。想更新就在本机再跑一次 git mcd 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 | 点餐动作 | 会改动你的账户吗 |
|---|---|---|
init |
选门店和取餐方式(到店 / 得来速 / 麦乐送),相当于设置远端 | 否 |
status |
当前分支(按时段:breakfast / lunch / tea / dinner)、购物车、可用券、待支付订单 | 否 |
ls-remote [关键词] |
看本店菜单:不带关键词按分类分组,超过一屏用分页器;价格是真实可得价,要随单购会员卡才有的优惠价另外注明 | 否 |
add <餐品> |
放进购物车;--no-pickle 去酸黄瓜,--with 少冰,--choose 大薯条 |
否 |
restore --staged <餐品> |
从购物车拿出来 | 否 |
reset |
清空购物车;reset ORIG_HEAD 撤销 rebase;reset --soft HEAD~1 撤回没 push 的 commit |
否 |
diff |
像 unified diff 一样逐行看差价:菜单价 vs 应付,或用券前 vs 用券后 | 否 |
rebase |
单品凑成套餐(squash)、换上最省的一张券(coupon),每个方案都真实算价 | 否 |
commit -m <说明> |
锁定这一单:本地快照 + 核价,哈希由内容决定 | 否 |
push |
真正下单,出支付链接和二维码;支持 --at 12:20 预约、--locker 取餐柜、--no-tableware、--remark、--qr full/half/fancy[=名字] |
✎ 会,先确认 |
log --graph |
吃麦提交历史,按时段画分支图 | 否 |
log --stat |
吃麦统计:每单列出餐品、实付和省下的钱,最后汇总单数、金额、时段分布和最常点;支持 -n、--since、--until |
否 |
show [HEAD] |
订单状态、取餐码、取餐柜、外送进度(只在你运行时查一次) | 否 |
cherry-pick HEAD |
再来一单:把上一单拣回购物车,换了门店也会按新菜单重新对齐 | 否 |
revert |
取消订单,必须选原因 | ✎ 会,先确认 |
fetch |
今日活动、可领的券(只读) | 否 |
pull |
领券:先列出可领券,确认后一次领取全部(接口不支持只领几张) | ✎ 会,先确认 |
card |
1024 吃麦贡献图:终端预览 + 本机 SVG,--style skyline / receipt / grid 选天际线、小票或格子(见上面「1024 特别版」) |
否 |
completion <shell> |
打印命令补全脚本(bash / zsh / fish),见下面「命令补全」 | 否 |
所有命令都支持 --demo(合成数据,不需要 Token)和 --json(给 Agent 和脚本用)。对照表随时看:git mcd help。
装了 uv 的话,一行就能跑:
uvx --from git+https://github.com/zhutoumeme/mcd-git git-mcd --demo status
想多玩几步,就装上它(需要 Python 3.9+):
pip install "git+https://github.com/zhutoumeme/mcd-git" # 或 uv tool install git+https://github.com/zhutoumeme/mcd-git
git mcd --demo status
git mcd --demo add 巨无霸 中薯条 中可乐 --no-pickle
git mcd --demo diff
git mcd --demo rebase
git mcd --demo commit -m "发版前的午饭"
git mcd --demo push --at 12:20 --locker --no-tableware # 终端里会问 y/N
git mcd --demo log --graph
git mcd --demo log --stat # 吃麦统计:每单餐品、实付、省了多少,按时段汇总
git mcd --demo show
git mcd --demo cherry-pick HEAD
git mcd --demo pull # 领券,终端里会问 y/N
git mcd --demo card # 吃麦贡献图(麦门天际线),写到当前目录的 mcd-contributions-skyline.svg
git mcd --demo card --style receipt # 年度吃麦小票,终端里也会打印一张
装完会有两个等价的命令:git-mcd(git 会把 git mcd 分发给它)和 mcd-git。demo 的状态单独放在 ~/.config/mcd-git/demo/,想从头再来就 git mcd --demo init --pick 1。嫌每条都敲 --demo 麻烦,可以先 export MCD_GIT_DEMO=1(首屏动图就是这么录的)。
不带参数列收藏门店;按地标搜要同时给城市和关键词:git mcd init --city 南京 --keyword 新街口(只给其中一个,麦当劳接口都不认)。门店列表按终端宽度显示全名。接口一次大约只给 5 家,--limit 3 只列前 3 家(只在本地截取,不会多调接口);想看别的店就换个更具体的地标。
rebase 只在购物车里的单品正好能凑满套餐(主食、小食、饮料都在)时才 squash,绝不为了便宜往购物车里多塞东西。一单只能用一张券,而且券和账户自带的折扣可能互斥,所以每个方案都会真实调一次 calculate-price,每条命令最多 20 次。不满意就 git mcd reset ORIG_HEAD。
终端里先给确认摘要再问 y/N。Agent、管道或 --json 等非交互环境只出摘要,用户同意后再用 --confirm <commit 哈希> 执行。mcd-git 只生成待支付订单,不会替你付款。二维码扫了直接拉起麦当劳 App 付款(和收银页里的码一样),默认用整格画法(每个模块两个带背景色的空格),各终端都扫得出;--qr half 用半块字符画,高度减半更紧凑,但部分终端(如 macOS Terminal.app)可能扫不出;终端太窄放不下整格时会自动退回半块并提示,拉宽窗口后运行 git mcd show 可以重新出码。想要点花样可以 --qr fancy 画麦当劳主题码(麦门金配色 + 正中像素麦当劳元素 Logo,机器照样识别,终端太窄会自动退回普通码)——fancy 每次从汉堡、薯条、麦乐鸡、甜筒、派、金拱门 6 个图案里随机出一个,想固定某一个就写 --qr fancy=burger(也支持 fries / nuggets / cone / pie / arch)。扫不出来就直接打开下面的支付链接,或到麦当劳 App 订单页付款。
像 git log --stat 一样,每单下面列出餐品行和一行小结(几样、实付、用券省了多少),最后像 diff --stat 一样汇总:几单(其中几单已取消、几单待支付)、几样、实付、省下的钱,再按早餐 / 午饭 / 下午茶 / 晚饭 / 夜宵画分布,列出最常点的前 3 名。已取消的单照常显示但不计入金额,待支付的单单独标出、也不计入。数据来自本机账本,运行时先调一次 order-list 刷新最近 10 单;-n 20 看更多,--since 2026-10-01 --until 2026-10-31 按日期筛(含当天)。order-list 不返回原价和优惠,没 push 或 show 过的单省了多少不知道,汇总里会提示有几单没算进去。不显示热量。
像 git pull 一样 fetch + merge:先列出麦麦省里可领的券,你确认后调一次 auto-bind-coupons 把它们领进账户。这个接口没有参数,只能一次领全部、不能只挑其中几张,所以摘要里会把要领的每一张都列出来。终端里回答 y 就立即领取,领的是那一刻的全部可领券,摘要放了很久的话先回答 N 再重新运行一次。非交互环境只出摘要,用户同意后再用 --confirm <指纹> 执行;确认时会重新拉一次列表,和预览时不一样就拒绝。没有可领的券时输出 Already up to date.。领到之后,下单前跑一次 git mcd rebase 就会自动挑最省的那张。
终端里一周一列:有颜色时一格一个小方块,管道和 NO_COLOR 下用 · ░ ▒ ▓ █ 分档。终端画不出 3D,默认的麦门天际线也用这份格子预览;卡片本身写成 SVG,见上面「1024 特别版」。
--style receipt 在终端里直接打印一张文字小票:
对照表用 git mcd help 看(git mcd -h 和不带参数的 git mcd 也行)。注意别在 mcd 后面直接跟 --help,git 会把它拦截成 git help mcd 去找 man 手册。子命令的帮助照常可用,比如 git mcd push -h。
git mcd completion <shell> 打印补全脚本,子命令、选项、--qr fancy=名字、card --style 这些取值都能按 TAB 补,餐品名也能补。在 shell 配置里加一行:
# zsh:写进 ~/.zshrc
eval "$(mcd-git completion zsh)"
# bash:写进 ~/.b