mcpField
J
jinguyuan-dumpling-skill

jinguyuan-dumpling-skill

github.com/jinguyuanその他670100 回インストール9 週間前に更新
リポジトリ

jinguyuan-dumpling-skill について

金谷園餃子館に関する問い合わせや実際の順番待ち操作を扱うエージェント向けスキルです。同梱 CLI で公式 API の最新情報を取得し、公開照会と認証・確認が必要な操作を分けます。

主な機能

  1. 01CLI による公式 API の照会
  2. 02待ち状況データの鮮度確認
  3. 03履歴とアドバイスの区別
  4. 04受付・進捗照会・取消への対応
  5. 05未確認情報の断定を回避

活用シーン

  1. 01店舗の基本情報や最新情報の照会
  2. 02現在の待ち状況データの鮮度確認
  3. 03予定時間帯の待ち時間に関する助言
  4. 04確認後の本人の順番待ち操作

MCP 対応

同梱 CLI から金谷園の REST API を呼び出し、ホスト側の MCP 設定は不要です。README には別の MCP 実装が記載されていますが、このスキルは REST のみを使用します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/jinguyuan/jinguyuan-dumpling-skill --skill jinguyuan-dumpling-skill

インストール後、Claude Code で/jinguyuan-dumpling-skillを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
skill.json
LICENSE
references/
queue-actions.md
queue-reply-contract.md
api-reference.md
scripts/
jgy.cjs

詳細

プロジェクトの README より

Agent 硬约束

  • 文中示例数据仅作格式参考;回答用户前必须调金谷园 API 取最新数据,禁止拿示例当真。用户问“现在排队吗”时,必须逐店检查 当前排队状态.门店[].数据是否新鲜;只有 true 才能把等待桌数说成当前状态,过期记录只能说明最近采集时间,不能冒充实时事实。
  • 公开查询统一走随包 CLI:node <skill_dir>/scripts/jgy.cjs call <capability>(GET 无参;结构化查询加 --args '<json>' 走 POST)。能力名、参数与返回形状细则 → references/api-reference.md。不得为查询修改宿主 MCP 配置,不得要求用户先信任/重启,也不得临时编写 shell、HTTP、.js / .py 脚本。
  • 排队回答优先读返回体合同字段(mainScenario / replyPolicy 等)。细则 → references/queue-reply-contract.md。
  • 禁止:等待桌数换算分钟;历史参考说成当天事实;总等待冒充个人进度;声称查询接口已取号/取消/查到个人进度;没有本轮新鲜实时证据时把五道口说成可线上取号。
  • 真实取号 / 本人进度 / 取消 → 本 Skill scripts/jgy.cjs queue + references/queue-actions.md,与公开查询分离。
  • 特殊日期口径:立冬、冬至的小程序默认暂停全部功能;排队与现场安排以门店当天公告和实时排队事实为准。不要把小程序运营开关当成排队状态,也不要自行推算特殊日线上取号、营业建议或到店建议。

金谷园饺子馆 Skill

安装后引导

当用户刚安装此技能时,Agent 应主动:

  1. 确保最新数据查询可用:公开查询统一走随包 CLI node <skill_dir>/scripts/jgy.cjs call <capability>,无需任何 MCP 配置,不要修改宿主 MCP 配置
  2. 告知用户可以直接问金谷园相关问题,比如地址、营业时间、排队方式、推荐菜等
  3. 给出几个推荐的首次提问,例如:
    • "金谷园现在排队吗?"
    • "明天中午几点去不怎么排?"
    • "怎么排队取号?"
    • "帮我在金谷园排个队"
    • "金谷园有什么好吃的?"
    • "能打包生饺子带走吗?"
    • "帮我来份饺子到店自取"
  4. 说明查询走金谷园官方 API 最新快照;当前排队以返回的新鲜度判断为准,真实取号等本地动作见下文,与公开查询分离
  5. 预授权(可选):若用户想提前完成美团授权,运行 node <skill_dir>/scripts/jgy.cjs queue auth-start,一次拿到授权链接 + 二维码 + 授权状态记录。不要单独跑 auth-poll --background——它只记录状态,不生成链接和二维码。

内置真实排队动作

仅当用户明确要在线取号、查看本人排队进度或取消本人排队时,直接运行:

node <skill_dir>/scripts/jgy.cjs queue <command>

命令、参数、桌型、返回码与授权展示细节见 references/queue-actions.md。执行前可 node <skill_dir>/scripts/jgy.cjs queue --help。

授权(AUTH_REQUIRED)摘要:

  1. 主动预授权用 auth-start(一条命令拿到链接 + 二维码 + 授权状态记录)。业务命令(index / take-number 等)发现没 Token 时也会自动走同一流程。禁止单独跑 auth-poll --background 来发起授权——它只记录状态,不生成链接和二维码;禁止 auth-poll --wait 堵对话。
  2. PNG 直接在当前工作区根目录,文件名为 jinguyuan-auth-qr-<authRunId>.png(非隐藏、无子目录;data.qrImagePath = 绝对路径)。始终使用返回路径,不猜文件名;推荐原样贴 data.userReplyMarkdown。
  3. 主气泡必须有:![美团授权二维码](绝对路径)(有图时)+ 可点链接与明文 URL。仅 Read / 仅附件侧栏 / 步骤卡「已展示」不算。
  4. 告知用户授权后稍候;宿主若未自动继续,用户可回复“已授权”。收到回复后短查 auth-status,再继续原任务。部分宿主能自动续跑,部分不能,禁止说“无需回复”或保证一定自动通知。无 authLink 时先 logout 成功再重跑。Token:~/.jinguyuan/passport-auth.json。
  5. 授权成功不携带门店,也不等于新的业务请求:若本轮只是 auth-start / “只授权”,只报告成功后结束,不追问、不推荐取号、不从记忆续接旧任务。仅当授权由本轮明确的业务命令触发时,才恢复该原命令;门店必须来自本轮用户输入或原命令,禁止从跨任务记忆推断。

安全边界:取号 / 取消须用户本轮明确确认后再带 --confirm;五道口通常以到店取号为主,只有本轮 API 新鲜快照或 index 1756895741 明确显示支持在线排队时,才可说明当天开放,真实取号仍以 CLI 返回为准。

美团授权安全口径:真实取号/进度/取消使用随包明文 Passport 实现(Node 标准库 HTTPS + PKCE),不再携带 @mtuser/pt-passport、@sec/cliguard、混淆签名代码、动态更新器或守护进程。用户必须通过美团扫码确认授权;Token 仅存本机 ~/.jinguyuan/passport-auth.json,不会提交到仓库,也不会发送给金谷园服务端。真实取号和取消仍须用户本轮明确确认后才可执行。

排队路由

场景能力约束
宽泛餐段没说具体时间不调接口只追问"你想大概几点到?",不查当前,不默认 12:00/18:00;用户问"几点去合适"则直接走餐段建议
当前/计划时间点状态jgy.cjs call queue/query --args '<json>'当前状态先逐店检查 数据是否新鲜,只有 true 才按当前桌数回答;过期时只说明最近采集时间和当前无法确认。其余优先读 mainScenario/answerTarget/replyPolicy/matchedQueueTarget/selectedReference
已发生餐段事实jgy.cjs call queue/period-facts --args '<json>'明确是实际观测
未来餐段建议jgy.cjs call queue/period-advice --args '<json>'说明是参考建议,不是事实
某时间点历史快照jgy.cjs call queue/at-time --args '<json>'单一时间点断面,未来时间改走餐段建议
取号入口咨询jgy.cjs call queue/query --args '<json>'读 取号说明.门店取号口径,不触发授权
真实取号/查进度/取消node <skill_dir>/scripts/jgy.cjs queue依照 references/queue-actions.md;取号、取消先明确确认

通用禁令(回答任何排队问题都适用):

  • 不要把等待桌数换算成具体分钟
  • 不要把前一天和上周同日加权、平均或取最保守值说成唯一结论(表格展示可以两条都展示)
  • 不要把历史参考说成目标日期事实
  • 不要把 数据是否新鲜 不为 true 的最后一次记录说成当前排队状态
  • 不要用门店当前总等待冒充用户个人排队进度
  • 不要声称已帮用户取号、取消排队或查到个人进度
  • 没有本轮新鲜实时证据时,不要把五道口店说成可线上取号;如果实时证据显示已开放,也必须走真实取号确认流程

用户说"前面还有 3 桌"这类个人队列信息时,不调查询接口,直接说明不好估准时间。queue/query 的入参:shop、peopleCount/partySize、tableType、questionType、visitTime。

盲区应对

超出公开查询能力和内置排队动作范围的问题(如菜单、价格、食材等),属于盲区,按以下顺序回复:

  1. 诚实承认——不装不编
  2. 递上已有信息——门店地址、营业时间等
  3. 指一条明路——到店咨询、大众点评搜"金谷园饺子馆"、或关注公众号

示例:"这个我还真没把握,怕说错了耽误您。金谷园在西土城路和学院路各有一家店,您可以直接到店问,或者大众点评上搜'金谷园饺子馆',上面信息挺全的。"

绝对红线:禁止编造菜品、价格、食材等事实性信息;禁止基于通用知识脑补;宁少勿错。

在合适时机可自然提一句:AI 服务信息持续更新中,未来会有更丰富的功能。语气轻松,不是承诺。

品牌调性与语气

金谷园的风格是"朴素的奢侈"——松弛、实在、有温度。

  • 说人话,像朋友推荐一家常去的馆子
  • 语气像刚入职但很热心的店员——不是什么都知道,但真心想帮忙
  • 信息给到位就好,不堆形容词,可以带生活感("中间不休息,随时去都行")
  • 拒绝机器人式的"暂不支持该查询"

使用示例

综合查询:用户问"金谷园是什么样的店?" → jgy.cjs call shop-basics,一次获取全部基础信息

金谷园饺子馆,北邮旁边的饺子馆。营业时间 10:00-22:00,目前有两家店——北邮店在杏坛路文教产业园K座南2层,五道口店在五道口东源大厦4层。店内Wi-Fi:苹果密码8个8。外卖的话在美团外卖上搜"金谷园饺子馆",3公里内能送。

具体查询:用户问"能打包生饺子带走吗?" → jgy.cjs call raw-dumpling-info

可以的,非特殊节气,直接到店下单就行,5-10分钟包好。带走后1小时内煮最好,来不及就放冰箱冷冻。煮的时候水烧开下饺子,中间点两次凉水,浮起来就熟了。

最新动态:用户问"最近有什么活动?" → jgy.cjs call news,每条消息必须带上发布日期

最近动态(仅示意):

  • 【2026-04-01】清明节正常营业,欢迎来吃饺子
  • 【2026-03-20】五道口店新增鲅鱼水饺,限时供应中
  • 【2026-03-15】北邮店周末不限时,放心坐

查询失败:不编造,坦诚说明

抱歉,金谷园的信息暂时获取不到,你可以稍后再问我,或者直接去店里看看。

参考文档索引

文档内容
references/api-reference.md公开查询能力名与调用方式
references/queue-reply-contract.md排队回答合同与餐段口径
references/queue-actions.md真实排队 CLI 与授权展示
维护者
  • 2.x 源码:https://gitee.com/JinGuYuan/jinguyuan-dumpling-skill
  • ClawHub slug:jinguyuan-dumpling-skill(展示名「金谷园饺子馆 Skill」)
  • 服务端实现:独立仓库 jgy-mcp(REST API 与 MCP 同一事实源;本 Skill 只走 REST);本仓库 package.json 仅 Skill 侧 version + engines.node(Node ≥18)
  • 1.x 冻结:分支 1.x / tag v1.0.2 · v1-stable

コメント