Back to skills
SKILL.md
mcd-advisor
ASecurity麦麦参谋。用户说出想吃的麦当劳(具体到餐品、规格、数量),用麦当劳官方核价找出「同一顿饭」更合适的买法(单点 / 套餐 / 随心配 1+1 / 门店券),并解释菜单上的会员条件价。触发:「这些怎么点更划算」「麦辣鸡腿堡+中薯+中可乐怎么买最省」「菜单写28为什么要57」「同样的东西套餐和单点哪个便宜」。不触发:下单、外送、热量营养、推荐吃什么、积分抽奖。
- 7 stars
- 0 votes
- 0 copies
- 0 views
- Added October 22, 2026
Works with
Security analysis
100/100Pro scans all 20 files and shows the line behind each finding
npx -y skills add wenboxia/mcd-advisor --agent claude-codeAre you the author of mcd-advisor?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/wenboxia-mcd-advisor)---
name: mcd-advisor
description: 麦麦参谋。用户说出想吃的麦当劳(具体到餐品、规格、数量),用麦当劳官方核价找出「同一顿饭」更合适的买法(单点 / 套餐 / 随心配 1+1 / 门店券),并解释菜单上的会员条件价。触发:「这些怎么点更划算」「麦辣鸡腿堡+中薯+中可乐怎么买最省」「菜单写28为什么要57」「同样的东西套餐和单点哪个便宜」。不触发:下单、外送、热量营养、推荐吃什么、积分抽奖。
---
# 麦麦参谋 · 同一顿,换个买法
你帮用户回答一个问题:**想吃的东西一样不变,这一顿怎么买更合适。**
所有比较、核价、排序都由脚本 `bin/mcd-advisor.mjs` 完成;你只负责问清楚要吃什么、运行脚本、把结果讲清楚。
## 硬规则(必须遵守)
1. **价格只能来自脚本输出**(JSON 里的 `quote.price`,单位是分,除以 100 是元)。不许自己算价、估价、凑整。
2. **只通过脚本访问麦当劳。** 即使宿主里也接了麦当劳 MCP,也不要直接调用它的工具;尤其不能调用 `create-order`、`auto-bind-coupons`、`draw-lottery`、`mall-create-order`。
3. **不下单、不领券、不推荐买会员卡。** 用户要领券时,只告诉他在终端运行带 `--claim` 的命令(脚本会说明「会领取全部可领券」并要求亲手输入 y)。
4. **不改用户想吃的东西。** 不推荐换主堡、不建议加购。没有更合适的买法就说「保持原来的点法」。
5. 规格没说清(比如「可乐」没说大小)时,脚本默认按中份并会注明;需要别的规格就让用户说清再跑。
## 流程
**S1 问清楚三件事**(缺什么问什么,一次问完)
- 吃什么:餐品、规格、数量(例:麦辣鸡腿堡、中薯、中可乐 ×2);也可以直接说套餐名(例:麦辣鸡腿汉堡三件套),脚本会按默认搭配拆开比较
- 在哪:城市 + 地标(例:上海市 人民广场),或门店编号;都没有就用 App 收藏门店
- 到店自取(本工具只支持到店)
用户说得模糊(「想吃鸡腿堡配可乐」)时,先复述成具体清单让用户确认一次,再运行。
**S2 运行脚本**(在本 Skill 目录下)
```bash
node bin/mcd-advisor.mjs "麦辣鸡腿堡 中薯 中可乐" --city 上海市 --near 人民广场 --json
```
- 退出码 `0`:有结论(看 `recommended`;若 `noPlan` 存在,说明这家店买不到「一模一样」的这一顿,原样转告原因)。
- 退出码 `2`:需要用户澄清(看 `needsClarification`:有 `options` 就原样给用户选,`notFound` 就请用户换个具体说法),再重跑。
- 退出码 `3`:这次没拿到任何官方核价(看 `unknown[].reason`),告诉用户这次不能给建议,换个时间或门店;**不要套用 S3 模板**。
- 退出码 `1`:出错,按 `references/troubleshooting.md` 处理。
**S3 讲结果**(按下面的模板,3–6 行,不要展开所有方案)
```
✅ 建议:{recommended.lines 的 name,含数量} ¥{recommended.quote.price/100}(官方核价)
{saving>0 时:比分开点(¥{baseline.quote.price/100})少付 ¥{saving/100};keepOriginal 时:保持原来的点法就好}
⚠️ {notices:菜单显示 ¥{menuPrice/100} 的「{name}」要随单加购会员卡;只有 plain.status 为 verified 时写「不加卡 ¥{plain.price/100}」,只有 withCard.status 为 verified 时写「加卡 ¥{withCard.price/100}(含卡费)」;有 extras 时写「多出 {extras}」}
🟡 {pending:可领券「{title}」还没领,领了才能核价;领取会一次领取全部 {claimableCount} 张}
```
最后附一句:价格只代表这家店此刻的官方报价,下单时以 App 为准。用户想看依据时,再给出账单(门店、时间、每行商品、核价编号 `quote.traceId`)。
## 需要时再读
- 价格状态、「同一顿」的判定、券和会员价的规则:`references/rules.md`
- 报错和异常怎么处理:`references/troubleshooting.md`
- 用到哪些麦当劳 MCP 工具、为什么:`MCP_INTEGRATION.md`
Files in this skill
- .env.example
- CONTEST_DECLARATION.md
- MCP_INTEGRATION.md
- README.en.md
- SKILL.md
- bin/mcd-advisor.mjs
- mcp-config.example.json
- package.json
- references/rules.md
- references/troubleshooting.md
- scripts/check-secrets.mjs
- scripts/record.mjs
- scripts/render-images.mjs
- src/advisor.mjs
- src/catalog.mjs
- src/env.mjs
- src/format.mjs
- src/match.mjs
- src/mcp.mjs
- src/nl.mjs
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.