{"id":"d99ae080-8033-4987-91e5-5ab9e6f50df2","entityType":"agent","slug":"clawhub-jinguyuan-jinguyuan-dumpling-skill","name":"金谷园饺子馆 Skill","canonicalUrl":"https://www.xpersona.co/agent/clawhub-jinguyuan-jinguyuan-dumpling-skill","canonicalPath":"/agent/clawhub-jinguyuan-jinguyuan-dumpling-skill","generatedAt":"2026-10-10T02:10:34.795Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T05:59:26.211Z","emptyReason":null},"description":"金谷园饺子馆信息查询与在线排队取号。通过金谷园官方 API 查询店铺、排队和菜品信息；内置真实排队动作仅用于在线取号、本人排队进度查询、取消排队。 Skill: 金谷园饺子馆 Skill Owner: jinguyuan Summary: 金谷园饺子馆信息查询与在线排队取号。通过金谷园官方 API 查询店铺、排队和菜品信息；内置真实排队动作仅用于在线取号、本人排队进度查询、取消排队。 Tags: latest:3.2.1 Version history: v3.2.1 | 2026-08-28T17:31:53.275Z | user 修复美团授权会话路径和 authStatus 状态码语义 v3.1.2 | 2026-08-20T15:49:14.681Z | user 同步 queue-status.v2 排队状态契约，明确实时新鲜度与立冬冬至特殊日期口径 v3.1.1 | 2026-08-01T10:24:12.975Z | user 移除 Skill 抽奖能力，仅保留公开查询和排队动作 v3.1.0 | 2026-07-31T00:42:39.322Z | user","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 4.1K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s17dydejc127drzwty5stpct5183k62a:jinguyuan-dumpling-skill","sourceUrl":"https://clawhub.ai/jinguyuan/jinguyuan-dumpling-skill","homepage":"https://clawhub.ai/jinguyuan/skills/jinguyuan-dumpling-skill","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/jinguyuan/jinguyuan-dumpling-skill","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/jinguyuan/skills/jinguyuan-dumpling-skill","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":47,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"金谷园饺子馆信息查询与在线排队取号。通过金谷园官方 API 查询店铺、排队和菜品信息；内置真实排队动作仅用于在线取号、本人排队进度查询、取消排队。 Skill: 金谷园饺子馆 Skill Owner: jinguyuan Summary: 金谷园饺子馆信息查询与在线排队取号。通过金谷园官方 API 查询店铺、排队和菜品"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T05:59:26.211Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T05:59:26.211Z","emptyReason":null},"stars":null,"forks":null,"downloads":4124,"packageName":null,"latestVersion":"3.2.1","tractionLabel":"4.1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T05:59:26.211Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T05:59:26.211Z","lastCrawledAt":"2026-10-09T05:59:26.211Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T05:59:26.211Z","lastVerifiedAt":null,"highlights":[{"version":"3.2.1","createdAt":"2026-08-28T17:31:53.275Z","changelog":"修复美团授权会话路径和 authStatus 状态码语义","fileCount":10,"zipByteSize":67844},{"version":"3.1.2","createdAt":"2026-08-20T15:49:14.681Z","changelog":"同步 queue-status.v2 排队状态契约，明确实时新鲜度与立冬冬至特殊日期口径","fileCount":15,"zipByteSize":123279},{"version":"3.1.1","createdAt":"2026-08-01T10:24:12.975Z","changelog":"移除 Skill 抽奖能力，仅保留公开查询和排队动作","fileCount":15,"zipByteSize":122843},{"version":"3.1.0","createdAt":"2026-07-31T00:42:39.322Z","changelog":"抽奖回归匿名-only：揭卡当场匿名交付兑奖码（一次性发放，无需登录）；下线手机号登录与账号绑定入口","fileCount":15,"zipByteSize":127963},{"version":"3.0.5","createdAt":"2026-07-30T00:28:46.839Z","changelog":"修复抽奖兑奖凭证交付与跨设备查询，补全登录奖品统计、能力白名单和可复现构建","fileCount":15,"zipByteSize":129526},{"version":"3.0.4","createdAt":"2026-07-28T22:51:27.298Z","changelog":"作者与版权主体从「金谷园AI」更正为「金谷园饺子馆」（元数据修正，无功能变更）","fileCount":15,"zipByteSize":128997},{"version":"3.0.3","createdAt":"2026-07-28T15:19:07.041Z","changelog":"补 bind_prize 使用文档与帮助列表；修正实体卡揭晓 CLI 入口路径","fileCount":15,"zipByteSize":129288},{"version":"3.0.2","createdAt":"2026-07-28T08:56:32.266Z","changelog":"修复发布包","fileCount":17,"zipByteSize":129693}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17dydejc127drzwty5stpct5183k62a:jinguyuan-dumpling-skill","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jinguyuan-jinguyuan-dumpling-skill/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jinguyuan-jinguyuan-dumpling-skill/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jinguyuan-jinguyuan-dumpling-skill/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-jinguyuan-jinguyuan-dumpling-skill/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-jinguyuan-jinguyuan-dumpling-skill/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-jinguyuan-jinguyuan-dumpling-skill/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T02:10:34.791Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jinguyuan-jinguyuan-dumpling-skill/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jinguyuan-jinguyuan-dumpling-skill/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jinguyuan-jinguyuan-dumpling-skill/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-jinguyuan-jinguyuan-dumpling-skill/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-09T05:59:26.211Z","emptyReason":null},"readme":"Skill: 金谷园饺子馆 Skill\n\nOwner: jinguyuan\n\nSummary: 金谷园饺子馆信息查询与在线排队取号。通过金谷园官方 API 查询店铺、排队和菜品信息；内置真实排队动作仅用于在线取号、本人排队进度查询、取消排队。\n\nTags: latest:3.2.1\n\nVersion history:\n\nv3.2.1 | 2026-08-28T17:31:53.275Z | user\n\n修复美团授权会话路径和 authStatus 状态码语义\n\nv3.1.2 | 2026-08-20T15:49:14.681Z | user\n\n同步 queue-status.v2 排队状态契约，明确实时新鲜度与立冬冬至特殊日期口径\n\nv3.1.1 | 2026-08-01T10:24:12.975Z | user\n\n移除 Skill 抽奖能力，仅保留公开查询和排队动作\n\nv3.1.0 | 2026-07-31T00:42:39.322Z | user\n\n抽奖回归匿名-only：揭卡当场匿名交付兑奖码（一次性发放，无需登录）；下线手机号登录与账号绑定入口\n\nv3.0.5 | 2026-07-30T00:28:46.839Z | user\n\n修复抽奖兑奖凭证交付与跨设备查询，补全登录奖品统计、能力白名单和可复现构建\n\nv3.0.4 | 2026-07-28T22:51:27.298Z | user\n\n作者与版权主体从「金谷园AI」更正为「金谷园饺子馆」（元数据修正，无功能变更）\n\nv3.0.3 | 2026-07-28T15:19:07.041Z | user\n\n补 bind_prize 使用文档与帮助列表；修正实体卡揭晓 CLI 入口路径\n\nv3.0.2 | 2026-07-28T08:56:32.266Z | user\n\n修复发布包\n\nv3.0.1 | 2026-07-28T08:54:41.380Z | user\n\n修复发布包内容\n\nv2.3.0 | 2026-07-24T08:00:27.103Z | auto\n\njinguyuan-dumpling-skill 2.3.0\n\n- 更新版本号至 2.3.0。\n- 移除多余文件，包括 .gitignore、skill-card.md 及 scripts/vendor/bundled_modules 目录内部分配置文件。\n- 保持核心用法与指引不变，简化代码仓库内容。\n\nv2.2.9 | 2026-07-24T07:15:57.590Z | user\n\n- 增强排队和在线取号相关安全及合规约束，规范五道口店线上取号表述，增加“只有有实时证据才可说明开放线上取号”限制\n- 明确五道口店“通常到店取号为主”，实时证据显示开放时，取号需走真实 CLI 流程\n- 新增内部依赖文件及配置文件，优化本地开发和依赖管理\n- 移除 skill-card.md，清理文档结构\n\nv2.2.8 | 2026-07-24T07:06:38.148Z | user\n\n补充 Skill 安全卡片，并保留五道口线上取号以本轮新鲜实时证据为准的口径。\n\nv2.2.6 | 2026-07-15T07:18:52.286Z | user\n\n当前排队增加快照新鲜度保护，过期数据不再冒充实时状态。\n\nv2.2.5 | 2026-07-13T03:01:25.418Z | user\n\n精简美团授权安全口径，避免引导 Agent 增加不必要的授权选择步骤\n\nv2.2.4 | 2026-07-13T02:50:19.980Z | user\n\n优化 README 中生饺子打包与烹煮能力的用户表述\n\nv2.2.3 | 2026-07-13T02:47:05.107Z | user\n\n优化授权展示兼容性，精简安装与安全说明，补充独立 MCP 接入信息\n\nv2.2.0 | 2026-07-13T01:28:54.752Z | user\n\n2.2.0：内置明文纯 JS MCP 客户端，未配置原生 MCP 也能实时查询；移除美团签名入口的守护进程、动态更新和 http/https 劫持；优化授权二维码、链接与跨宿主续跑。\n\nv2.1.7 | 2026-07-12T17:47:15.406Z | user\n\nfix: wrap QR image path in angle brackets to handle paths with spaces (e.g. 'Application Support/TRAE SOLO CN')\n\nv2.1.6 | 2026-07-12T17:04:45.167Z | auto\n\n- 修正授权二维码文件名为非隐藏文件 jinguyuan-auth-qr.png，避免主流终端无法直接展示\n- 简化或调整 SKILL.md 关于二维码存放路径和展示要求的描述\n- 文档优化：补充 1.x 支持状态与源码分支说明\n- 移除 skill-card.md 文档文件\n\nv2.1.5 | 2026-07-12T16:14:12.717Z | user\n\n2.x 真树：纯 Node queue.js + vendor 运行时；无 install.sh/meituan-queue/tgz。覆盖误标为 2.0.6 的 1.x 包体。\n\nv2.1.2 | 2026-07-12T11:56:07.858Z | user\n\n2.x 真树：纯 Node queue.js + vendor 运行时；无 install.sh/meituan-queue/tgz。覆盖误标为 2.0.6 的 1.x 包体。\n\nv2.1.1 | 2026-07-12T11:53:38.316Z | user\n\n2.x 真树：纯 Node queue.js + vendor 运行时；无 install.sh/meituan-queue/tgz。覆盖误标为 2.0.6 的 1.x 包体。\n\nv2.1.0 | 2026-07-12T11:42:11.590Z | user\n\n2.1.x：授权二维码改工作区扁平 .jinguyuan-auth-qr.png + V1 式主气泡绝对路径内联；MCP 优先接入端点；禁止临时 HTTP 脚本为主路径。\n\nv2.0.8 | 2026-07-12T08:46:08.397Z | user\n\n2.x 真树：纯 Node queue.js + vendor 运行时；无 install.sh/meituan-queue/tgz。覆盖误标为 2.0.6 的 1.x 包体。\n\nv2.0.7 | 2026-07-12T08:43:59.337Z | user\n\n2.x 真树：纯 Node queue.js + vendor 运行时；无 install.sh/meituan-queue/tgz。覆盖误标为 2.0.6 的 1.x 包体。\n\nv2.0.6 | 2026-07-12T07:46:58.401Z | user\n\n将 ClawHub latest 从 2.0.5 收回：内容对齐 Gitee 产品仓 1.0.1（内嵌 meituan-queue，无 Passport vendor 混淆树）。完整 2.x Node 运行时请用 https://gitee.com/JinGuYuan/jinguyuan-dumpling-skill-v2\n\nv1.0.2 | 2026-07-12T07:46:15.991Z | user\n\n将 ClawHub latest 指回 1.x 安装线（与 Gitee 1.0.1 产品仓一致；2.x 独立仓 jinguyuan-dumpling-skill-v2）\n\nv2.0.5 | 2026-07-12T06:13:26.133Z | auto\n\njinguyuan-dumpling-skill 2.0.5\n\n- 文档优化：SKILL.md 精简标题，将“信息查询 Skill”调整为“Skill”。\n- 其他描述性文案微调，无功能和规则变更。\n- 版本号更新至 2.0.5。\n\nv2.0.3 | 2026-07-12T06:09:19.934Z | auto\n\njinguyuan-dumpling-skill v2.0.3\n\n- 更新 SKILL.md 版本号至 2.0.3，无内容变更，仅为元数据同步。\n- package.json、skill.json 版本号同步为 2.0.3，一致化技能元信息。\n- 功能及接口未做任何修改。\n\nv2.0.2 | 2026-07-12T06:08:46.738Z | auto\n\njinguyuan-dumpling-skill 2.0.2\n\n- 更新版本号为 2.0.2。\n- 优化和调整文档内容，无功能新增或接口变化。\n- 维护内部文档一致性及细节描述。\n\nv2.0.1 | 2026-07-12T06:04:51.327Z | auto\n\njinguyuan-dumpling-skill 2.0.1 更新日志\n\n- 文档版本号更新为 2.0.1，反映依赖与功能的微小修订。\n- package.json、skill.json 同步调整版本号，无功能变更。\n- 无新增功能、接口或重大改动，仅维护性版本号升级。\n\nv2.0.0 | 2026-07-12T06:02:54.973Z | user\n\nv2.0.0 重大更新：单 Skill 纯 Node 排队运行时；去掉嵌套 meituan-queue/Python/CDN 自更新；真实取号/取消需 Node 18+ 与 --confirm；查询仍走 MCP 免登录。\n\nv1.0.1 | 2026-07-08T18:03:17.179Z | auto\n\n- 修正版本号为 1.0.1，同步 SKILL.md 和 skill.json 一致性\n- 无新增功能或其他内容变更\n\nv1.0.0 | 2026-07-08T17:45:52.181Z | auto\n\njinguyuan-dumpling-skill v1.0.0\n\n- 首次版本号主升（v1.0.0），标志 Skill 接口稳定、可正式生产使用。\n- 排队建议接口统一为 get_queue_period_advice，原 get_queue_period_reference（旧名）已移除，不再保留。\n- 文档详细调整，强调仅通过 MCP 工具实时查询数据，示例数据仅供格式参考。\n- 进一步明确排队建议与事实区分，补充新版禁令与行为规范说明。\n- 维护者参考部分更新，明确 MCP 版本管理方式及 Skill 独立演进策略。\n\nv0.9.0 | 2026-07-08T17:22:23.352Z | auto\n\nVersion 0.9.0\n\n- 更新版本号至 0.9.0，并同步于各文档字段\n- 仅文档内容变更，无功能和服务逻辑调整\n- 主要为 SKILL.md 内容修订和维护性更新\n- 未引入新特性或 API 变动\n\nv0.8.0 | 2026-07-08T16:25:42.699Z | auto\n\njinguyuan-dumpling-skill 0.8.0\n\n- 新增统一接口 get_shop_basics，用于一次性获取全部基础店铺信息（餐厅简介、门店、营业时间、外卖、Wi-Fi 等）。\n- 文档内工具调用示例由 get_restaurant_info 更新为 get_shop_basics，相关说明同步更新。\n- 明确基础信息合并逻辑，强调 get_shop_basics 优先，完善综合查询示例。\n- 精简部分描述，调整表达，让动线更清晰友好。\n- 移除过时文档 docs/TODO.md。\n\nv0.7.0 | 2026-07-08T05:01:48.020Z | auto\n\njinguyuan-dumpling-skill 0.7.0\n\n- 升级版本号至 0.7.0，反映功能和结构调整。\n- 新增文档文件 docs/TODO.md，便于管理后续开发任务。\n- 更新 SKILL.md 和 skill.json 以适配最新需求或修订。\n- 移除 scripts/release.sh，简化脚本管理。\n\nv0.6.13 | 2026-07-08T04:14:10.297Z | auto\n\n- 版本号升级至 0.6.13\n- 文档中的版本信息同步更新，无其他内容变化\n\nv0.6.12 | 2026-07-08T04:08:16.382Z | auto\n\nVersion 0.6.12\n\n- 精简并合并排队功能路由及说明，排队相关用法表格由长说明改为简明表格\n- 将内嵌美团排队取号 Skill 说明提前，重点突出真实排队操作流程\n- 保留盲区应对、品牌语气、使用示例等核心内容\n- 移除部分重复、次要或平台相关实现细节（如详细触发场景、工具列表、底层协议）\n- 文档结构更清晰，便于维护和查阅\n\nv0.6.11 | 2026-07-08T03:23:06.369Z | auto\n\n**jinguyuan-dumpling-skill v0.6.11**\n\n- 完善文档，SKILL.md 整体升级，细化排队策略与 MCP 协议调用指引，强调结构化回答规范，增补例句与边界场景说明。\n- 更新排队相关描述，新增 `ask_queue_visit_time` 和 `get_queue_period_advice` 等接口说明，明确多轮追问、严禁理由和流程细则。\n- 支持并强调一次性并行查询餐厅基础信息、外卖渠道、Wi-Fi（`get_restaurant_info`＋`get_delivery_info`＋`get_wifi_info`）。\n- 移除 skill-card.md，新增开发脚本 scripts/release.sh。\n- 关键词、触发场景与降级策略略有调整，确保功能列表与官方服务端同步。\n\nv0.6.10 | 2026-07-01T14:53:00.416Z | auto\n\n- 新增对分离餐段事实和策略建议的排队查询支持：明确区分 `get_queue_period_facts`（事实层）与 `get_queue_period_reference`/`get_queue_period_advice`（策略层），并在触发表达和调用流程中加强说明。\n- 在文档「触发场景」「排队查询边界」等多处补充未来/历史排队趋势与实际观测的调用与回答规范，提升排队数据答复准确性。\n- 细化用户问法与工具调用映射，明确实际观测和策略建议的回答口径，防止混淆。\n- 更新部分描述，使行为、查数据流程与最新后端能力对齐，用户体验更清晰。\n\nv0.6.9 | 2026-07-01T11:57:28.320Z | auto\n\njinguyuan-dumpling-skill v0.6.9\n\n- 增强排队查询文档，新增“当前 vs 昨天同一时间”的各桌型排队对比场景说明\n- 明确 `get_queue_info` 返回结构中历史快照比对方法，帮助更好回答历史和当前排队桌型差异相关问题\n- 未涉及代码，仅文档优化和使用指引完善\n\nv0.6.8 | 2026-07-01T02:36:44.072Z | auto\n\n- 增加 `get_queue_period_reference` 工具与说明，支持午市/晚市排队参考及到店时间建议（如“明天中午几点去不怎么排？”）。\n- 优化排队查询场景细分，明确“当前状态/单点时间”“餐段走势/到店建议”“真实动作”处理边界。\n- 安装引导、推荐提问、场景说明同步补充例句（如“明天中午几点去不怎么排？”）。\n- 文档补充“不编等待分钟”要求，增强相关回复规范与盲区策略。\n\nv0.6.7 | 2026-06-30T16:41:57.465Z | auto\n\n- 新增 get_queue_info 工具：支持查询金谷园当前及历史排队状态、取号渠道，区分信息查询与真实排队动作。\n- 优化排队流程说明：仅用户明确请求时才进入美团真实取号流程，平时问排队状态时不触发授权。\n- 安装引导新增“现在排队吗”等新场景，建议用户查询实时排队情况。\n- 文档精简与修正，澄清 MCP 工具与内嵌 Skill 分工，删除冗余 skill-card.md 文件。\n\nv0.6.6 | 2026-05-27T07:15:00.983Z | auto\n\n- 优化关键词，增强对“金谷园推荐菜”“金谷园招牌菜”等查询支持\n- 场景示例及表述更贴合用户实际提问习惯，提升意图识别准确性\n- 更新用户常见问题与推荐菜查询的触发说明\n- 其他文档措辞微调，未涉及功能变更\n\nv0.6.5 | 2026-05-17T17:26:04.283Z | auto\n\n- 更新版本号至 0.6.5\n- 文档无实质内容调整，仅 version 字段由 0.6.4 升级为 0.6.5\n- 其他文件变更未修改核心功能或描述\n\nv0.6.4 | 2026-05-17T17:21:12.821Z | auto\n\n- 更新版本号至 0.6.4。\n- 文档调整：SKILL.md 版本号同步，内容未见其他实际功能更动。\n- 其他文件细节变更不影响用户使用体验。\n\nv0.6.2 | 2026-05-17T17:13:46.750Z | auto\n\n- 更新版本至 0.6.2\n- 文档聚焦于细节文案优化，无功能、接口或核心逻辑变动\n- SKILL.md 字符微调，仅包含编辑和说明上的更新\n\nv0.6.1 | 2026-05-17T16:27:32.213Z | auto\n\n- 文档版本号由 0.6.0 升级为 0.6.1，反映 Skill 版本更新  \n- 移除了 scripts/release.sh，简化项目结构  \n- 其它内容保持不变，仅进行版本号和文件调整\n\nv0.6.0 | 2026-05-17T16:21:24.301Z | auto\n\njinguyuan-dumpling-skill v0.6.0\n\n- 引入美团排队 meituan-queue Skill，增加内嵌版美团取号/查进度/取消排队能力\n- 支持美团账户鉴权能力（meituan-passport-user-auth 作为内嵌引用）\n- 新增版本检测与配置脚本（参考 scripts/version_checker.py, version_config.json）\n- 增加自动化发布脚本（scripts/release.sh）\n- 文档（SKILL.md 等）大量完善，明确调用链路、盲区处理、品牌语气规范\n\nArchive index:\n\nArchive v3.2.1: 10 files, 67844 bytes\n\nFiles: LICENSE (1075b), README.md (3914b), references/api-reference.md (2480b), references/queue-actions.md (8211b), references/queue-reply-contract.md (3511b), scripts/jgy.cjs (220494b), skill-card.md (3191b), skill.json (950b), SKILL.md (11747b), _meta.json (143b)\n\nFile v3.2.1:SKILL.md\n\n---\nname: jinguyuan-dumpling-skill\ndescription: 金谷园饺子馆信息查询与在线排队取号。通过金谷园官方 API 查询店铺、排队和菜品信息；内置真实排队动作仅用于在线取号、本人排队进度查询、取消排队。\nversion: 3.2.1\nalwaysApply: false\nmetadata:\n  openclaw:\n    requires:\n      bins:\n        - node\n    envVars:\n      - name: JGY_BASE_URL\n        required: false\n        description: Optional override for the JinGuYuan public API base URL.\n      - name: JGY_RESOURCE\n        required: false\n        description: Optional override for the JinGuYuan OAuth resource.\nkeywords:\n  - 金谷园\n  - jinguyuan\n  - 金谷园饺子馆\n  - 北邮\n  - 五道口\n  - 排队\n  - 取号\n  - 等位\n  - 排队取号\n  - 取消排队\n  - 金谷园推荐菜\n  - 金谷园招牌菜\n  - 金谷园必点\n  - 金谷园新品\n  - 店长推荐\n---\n\n## Agent 硬约束\n\n- 文中示例数据**仅作格式参考**；回答用户前**必须调金谷园 API 取最新数据**，禁止拿示例当真。用户问“现在排队吗”时，必须逐店检查 `当前排队状态.门店[].数据是否新鲜`；只有 `true` 才能把等待桌数说成当前状态，过期记录只能说明最近采集时间，不能冒充实时事实。\n- **公开查询统一走随包 CLI**：`node <skill_dir>/scripts/jgy.cjs call <capability>`（GET 无参；结构化查询加 `--args '<json>'` 走 POST）。能力名、参数与返回形状细则 → [references/api-reference.md](references/api-reference.md)。不得为查询修改宿主 MCP 配置，不得要求用户先信任/重启，也不得临时编写 shell、HTTP、`.js` / `.py` 脚本。\n- 排队回答优先读返回体合同字段（`mainScenario` / `replyPolicy` 等）。细则 → [references/queue-reply-contract.md](references/queue-reply-contract.md)。\n- **禁止**：等待桌数换算分钟；历史参考说成当天事实；总等待冒充个人进度；声称查询接口已取号/取消/查到个人进度；没有本轮新鲜实时证据时把五道口说成可线上取号。\n- 真实取号 / 本人进度 / 取消 → 本 Skill `scripts/jgy.cjs queue` + [references/queue-actions.md](references/queue-actions.md)，与公开查询分离。\n- **特殊日期口径**：立冬、冬至的小程序默认暂停全部功能；排队与现场安排以门店当天公告和实时排队事实为准。不要把小程序运营开关当成排队状态，也不要自行推算特殊日线上取号、营业建议或到店建议。\n\n# 金谷园饺子馆 Skill\n\n## 安装后引导\n\n当用户刚安装此技能时，Agent 应主动：\n1. **确保最新数据查询可用**：公开查询统一走随包 CLI `node <skill_dir>/scripts/jgy.cjs call <capability>`，无需任何 MCP 配置，不要修改宿主 MCP 配置\n2. 告知用户可以直接问金谷园相关问题，比如地址、营业时间、排队方式、推荐菜等\n3. 给出几个推荐的首次提问，例如：\n   - \"金谷园现在排队吗？\"\n   - \"明天中午几点去不怎么排？\"\n   - \"怎么排队取号？\"\n   - \"帮我在金谷园排个队\"\n   - \"金谷园有什么好吃的？\"\n   - \"能打包生饺子带走吗？\"\n   - \"帮我来份饺子到店自取\"\n4. 说明查询走金谷园官方 API 最新快照；当前排队以返回的新鲜度判断为准，真实取号等本地动作见下文，与公开查询分离\n5. **预授权（可选）**：若用户想提前完成美团授权，运行 `node <skill_dir>/scripts/jgy.cjs queue auth-start`，一次拿到授权链接 + 二维码 + 授权状态记录。不要单独跑 `auth-poll --background`——它只记录状态，不生成链接和二维码。\n\n## 内置真实排队动作\n\n仅当用户明确要在线取号、查看本人排队进度或取消本人排队时，直接运行：\n\n```bash\nnode <skill_dir>/scripts/jgy.cjs queue <command>\n```\n\n命令、参数、桌型、返回码与授权展示细节见 [references/queue-actions.md](references/queue-actions.md)。执行前可 `node <skill_dir>/scripts/jgy.cjs queue --help`。\n\n**授权（`AUTH_REQUIRED`）摘要**：\n\n1. **主动预授权**用 `auth-start`（一条命令拿到链接 + 二维码 + 授权状态记录）。业务命令（`index` / `take-number` 等）发现没 Token 时也会自动走同一流程。**禁止**单独跑 `auth-poll --background` 来发起授权——它只记录状态，不生成链接和二维码；**禁止** `auth-poll --wait` 堵对话。\n2. PNG 直接在当前工作区根目录，文件名为 **`jinguyuan-auth-qr-<authRunId>.png`**（非隐藏、无子目录；`data.qrImagePath` = **绝对路径**）。始终使用返回路径，不猜文件名；推荐原样贴 `data.userReplyMarkdown`。\n3. **主气泡必须**有：`![美团授权二维码](绝对路径)`（有图时）+ 可点链接与明文 URL。仅 Read / 仅附件侧栏 / 步骤卡「已展示」**不算**。\n4. 告知用户授权后稍候；宿主若未自动继续，用户可回复“已授权”。收到回复后短查 `auth-status`，再继续原任务。部分宿主能自动续跑，部分不能，**禁止**说“无需回复”或保证一定自动通知。无 `authLink` 时先 `logout` 成功再重跑。Token：`~/.jinguyuan/passport-auth.json`。\n5. **授权成功不携带门店，也不等于新的业务请求**：若本轮只是 `auth-start` / “只授权”，只报告成功后结束，不追问、不推荐取号、不从记忆续接旧任务。仅当授权由本轮明确的业务命令触发时，才恢复该原命令；门店必须来自本轮用户输入或原命令，禁止从跨任务记忆推断。\n\n**安全边界**：取号 / 取消须用户**本轮明确确认**后再带 `--confirm`；五道口通常以到店取号为主，只有本轮 API 新鲜快照或 `index 1756895741` 明确显示支持在线排队时，才可说明当天开放，真实取号仍以 CLI 返回为准。\n\n**美团授权安全口径**：真实取号/进度/取消使用随包明文 Passport 实现（Node 标准库 HTTPS + PKCE），不再携带 `@mtuser/pt-passport`、`@sec/cliguard`、混淆签名代码、动态更新器或守护进程。用户必须通过美团扫码确认授权；Token 仅存本机 `~/.jinguyuan/passport-auth.json`，不会提交到仓库，也不会发送给金谷园服务端。真实取号和取消仍须用户本轮明确确认后才可执行。\n\n## 排队路由\n\n| 场景 | 能力 | 约束 |\n|------|------|------|\n| 宽泛餐段没说具体时间 | 不调接口 | 只追问\"你想大概几点到？\"，不查当前，不默认 12:00/18:00；用户问\"几点去合适\"则直接走餐段建议 |\n| 当前/计划时间点状态 | `jgy.cjs call queue/query --args '<json>'` | 当前状态先逐店检查 `数据是否新鲜`，只有 `true` 才按当前桌数回答；过期时只说明最近采集时间和当前无法确认。其余优先读 `mainScenario`/`answerTarget`/`replyPolicy`/`matchedQueueTarget`/`selectedReference` |\n| 已发生餐段事实 | `jgy.cjs call queue/period-facts --args '<json>'` | 明确是实际观测 |\n| 未来餐段建议 | `jgy.cjs call queue/period-advice --args '<json>'` | 说明是参考建议，不是事实 |\n| 某时间点历史快照 | `jgy.cjs call queue/at-time --args '<json>'` | 单一时间点断面，未来时间改走餐段建议 |\n| 取号入口咨询 | `jgy.cjs call queue/query --args '<json>'` | 读 `取号说明.门店取号口径`，不触发授权 |\n| 真实取号/查进度/取消 | `node <skill_dir>/scripts/jgy.cjs queue` | 依照 `references/queue-actions.md`；取号、取消先明确确认 |\n\n**通用禁令**（回答任何排队问题都适用）：\n- 不要把等待桌数换算成具体分钟\n- 不要把前一天和上周同日加权、平均或取最保守值说成唯一结论（表格展示可以两条都展示）\n- 不要把历史参考说成目标日期事实\n- 不要把 `数据是否新鲜` 不为 `true` 的最后一次记录说成当前排队状态\n- 不要用门店当前总等待冒充用户个人排队进度\n- 不要声称已帮用户取号、取消排队或查到个人进度\n- 没有本轮新鲜实时证据时，不要把五道口店说成可线上取号；如果实时证据显示已开放，也必须走真实取号确认流程\n\n用户说\"前面还有 3 桌\"这类个人队列信息时，不调查询接口，直接说明不好估准时间。`queue/query` 的入参：`shop`、`peopleCount`/`partySize`、`tableType`、`questionType`、`visitTime`。\n\n## 盲区应对\n\n超出公开查询能力和内置排队动作范围的问题（如菜单、价格、食材等），属于**盲区**，按以下顺序回复：\n\n1. **诚实承认**——不装不编\n2. **递上已有信息**——门店地址、营业时间等\n3. **指一条明路**——到店咨询、大众点评搜\"金谷园饺子馆\"、或关注公众号\n\n> 示例：\"这个我还真没把握，怕说错了耽误您。金谷园在西土城路和学院路各有一家店，您可以直接到店问，或者大众点评上搜'金谷园饺子馆'，上面信息挺全的。\"\n\n**绝对红线**：禁止编造菜品、价格、食材等事实性信息；禁止基于通用知识脑补；宁少勿错。\n\n在合适时机可自然提一句：AI 服务信息持续更新中，未来会有更丰富的功能。语气轻松，不是承诺。\n\n## 品牌调性与语气\n\n金谷园的风格是\"朴素的奢侈\"——松弛、实在、有温度。\n\n- 说人话，像朋友推荐一家常去的馆子\n- 语气像**刚入职但很热心的店员**——不是什么都知道，但真心想帮忙\n- 信息给到位就好，不堆形容词，可以带生活感（\"中间不休息，随时去都行\"）\n- 拒绝机器人式的\"暂不支持该查询\"\n\n## 使用示例\n\n**综合查询**：用户问\"金谷园是什么样的店？\" → `jgy.cjs call shop-basics`，一次获取全部基础信息\n> 金谷园饺子馆，北邮旁边的饺子馆。营业时间 10:00-22:00，目前有两家店——北邮店在杏坛路文教产业园K座南2层，五道口店在五道口东源大厦4层。店内Wi-Fi：苹果密码8个8。外卖的话在美团外卖上搜\"金谷园饺子馆\"，3公里内能送。\n\n**具体查询**：用户问\"能打包生饺子带走吗？\" → `jgy.cjs call raw-dumpling-info`\n> 可以的，非特殊节气，直接到店下单就行，5-10分钟包好。带走后1小时内煮最好，来不及就放冰箱冷冻。煮的时候水烧开下饺子，中间点两次凉水，浮起来就熟了。\n\n**最新动态**：用户问\"最近有什么活动？\" → `jgy.cjs call news`，每条消息必须带上发布日期\n> 最近动态（仅示意）：\n> - 【2026-04-01】清明节正常营业，欢迎来吃饺子\n> - 【2026-03-20】五道口店新增鲅鱼水饺，限时供应中\n> - 【2026-03-15】北邮店周末不限时，放心坐\n\n**查询失败**：不编造，坦诚说明\n> 抱歉，金谷园的信息暂时获取不到，你可以稍后再问我，或者直接去店里看看。\n\n## 参考文档索引\n\n| 文档 | 内容 |\n|------|------|\n| [references/api-reference.md](references/api-reference.md) | 公开查询能力名与调用方式 |\n| [references/queue-reply-contract.md](references/queue-reply-contract.md) | 排队回答合同与餐段口径 |\n| [references/queue-actions.md](references/queue-actions.md) | 真实排队 CLI 与授权展示 |\n\n### 维护者\n\n- 2.x 源码：https://gitee.com/JinGuYuan/jinguyuan-dumpling-skill\n- ClawHub slug：`jinguyuan-dumpling-skill`（展示名「金谷园饺子馆 Skill」）\n- 服务端实现：独立仓库 `jgy-mcp`（REST API 与 MCP 同一事实源；本 Skill 只走 REST）；本仓库 `package.json` 仅 Skill 侧 `version` + `engines.node`（Node ≥18）\n- 1.x 冻结：分支 `1.x` / tag `v1.0.2` · `v1-stable`\n\nFile v3.2.1:README.md\n\n# 金谷园饺子馆 Skill\n\n![Version](https://img.shields.io/github/v/tag/JinGuYuan/jinguyuan-dumpling-skill?label=version&color=blue&sort=semver) ![License](https://img.shields.io/badge/license-MIT-green) ![API](https://img.shields.io/badge/api-REST-orange) ![CLI](https://img.shields.io/badge/cli-jgy.cjs%20single--file-purple)\n\n这是一个 AI Skill——安装后，你的 AI 助手就能帮你查金谷园在哪、几点开门、这会儿排不排队、几点去更稳，也能查推荐菜、外卖和生饺子打包怎么煮；需要时，还能帮你在线排队取号。\n\n开了快二十年的饺子馆，有了自己的AI服务。\n\n\n## 关于金谷园\n\n北邮旁边的饺子馆。官网：[jinguyuan.cloud](https://jinguyuan.cloud)\n\n| 项目 | 内容 |\n|------|------|\n| 餐厅名称 | 金谷园饺子馆 |\n| 营业时间 | 10:00 - 22:00（以实际查询为准） |\n| 北邮店 | 杏坛路文教产业园K座南2层 |\n| 五道口店 | 五道口东源大厦4层 |\n\n## 这个 Skill 能做什么\n\n金谷园饺子馆的官方信息服务，可以查店、查活动、查推荐菜，也能处理到店自取和排队取号这些具体场景：\n\n| 能力 | 你可以问 |\n|------|----------|\n| 餐厅信息 | \"金谷园在哪？\"\"几点开门？\"\"能外卖吗？\"\"Wi-Fi 密码？\" |\n| 推荐菜 | \"有什么好吃的？\"\"今天吃什么\"\"招牌菜\" |\n| **到店自取** | \"帮我来份饺子\"\"提前点餐到店取\" |\n| 排队信息&建议 | \"这会儿排队吗？\"\"晚上七点去用排么？\"\"几点去不用排？\" |\n| **排队取号** | \"帮我排个队\"\"取消排队\"\"排队进度\" |\n| 生饺子打包 | \"能打包吗？\"\"生饺子怎么煮？\" |\n| 最新消息 | \"有什么新活动？\" |\n\n## 在线排队取号\n\n本 Skill 内置了基于**美团排队**的真实动作，AI 助手可以帮你取号、查本人订单和取消排队。美团授权使用随包明文 Passport 实现，用户扫码确认后 Token 仅缓存在本机 `~/.jinguyuan/passport-auth.json`。\n\n**支持的操作：**\n\n| 操作 | 说明 | 你可以说 |\n|------|------|----------|\n| 查询排队状态 | 查看当前等待桌数和排队压力 | \"金谷园现在排队情况怎么样？\" |\n| 查询餐段事实 | 查询已经发生的午市/晚市实际观测 | \"今天中午几点开始排？\" |\n| 查询餐段建议 | 参考前一天和上周同日，给未来餐段建议 | \"明天中午几点去比较稳？\" |\n| 取号 | 选择桌型和人数，在线取号 | \"帮我在北邮店排个队，2个人\" |\n| 查询进度 | 查看当前排队号、前方等待桌数 | \"我前面还有几桌？\" |\n| 取消排队 | 取消已有的排队订单 | \"取消排队\" |\n\n**使用流程：**\n\n1. 告诉 AI 助手你要在北邮店排队\n2. AI 查询可选桌型，跟你确认桌型和人数\n3. 确认后自动取号，返回排队号和等待信息\n4. 随时可查进度或取消\n\n首次使用需完成美团账号授权（AI 助手会引导你完成）。\n\n## 运行环境\n\n支持 Windows、macOS 和 Linux，需要 Node.js 18 或更高版本，无需 npm 安装。\n\n## 安装\n\n直接拷贝下面这句话发给你的 AI 助手：\n\n> 安装 https://gitee.com/JinGuYuan/jinguyuan-dumpling-skill\n\nAgent 会自动克隆仓库并安装到对应的 Skill 目录。\n\n## 关于金谷园 MCP\n\n金谷园同时提供独立的 MCP 服务。若只需要查询店铺、菜品和排队信息，可以不安装 Skill，直接接入金谷园 MCP；在线取号、本人进度和取消排队等本地授权能力仍需安装 Skill。\n\n| 项目 | 内容 |\n|------|------|\n| 接入点 | `https://mcp.jinguyuan.cloud` |\n| 协议 | Model Context Protocol（MCP） |\n| 传输方式 | Streamable HTTP |\n\n## 发布平台\n\n- GitHub：https://github.com/JinGuYuan/jinguyuan-dumpling-skill\n- Gitee：https://gitee.com/JinGuYuan/jinguyuan-dumpling-skill\n\n## 版本\n\n版本号见顶部徽章，以 [`skill.json`](./skill.json) 为准。\n\n## License\n\n[MIT](LICENSE)\n\nFile v3.2.1:_meta.json\n\n{\n  \"ownerId\": \"kn745r98j9wt35s5azfqy8f07h83a5b4\",\n  \"slug\": \"jinguyuan-dumpling-skill\",\n  \"version\": \"3.2.1\",\n  \"publishedAt\": 1787938313275\n}\n\nFile v3.2.1:references/api-reference.md\n\n# 公开查询（金谷园 REST API）\n\n公开查询统一走随包 CLI，底座是金谷园官方 REST API（`https://mcp.jinguyuan.cloud/api/v1`，基址内置在 CLI 里，不接受命令行自定义 URL）。查询不要求登录，不要求用户预先配置、信任或重启任何宿主连接器。\n\n## 调用方式\n\n```text\nnode <skill_dir>/scripts/jgy.cjs call <capability>                 # GET，无参能力\nnode <skill_dir>/scripts/jgy.cjs call <capability> --args '<json>' # POST，结构化查询\n```\n\nstdout 始终只有一个 JSON 对象：\n\n- 成功：`{ \"ok\": true, \"data\": ... }`\n- 失败：`{ \"ok\": false, \"error\": { \"code\": ..., \"message\": ... } }`\n\n读取 `data` 作为业务返回，并继续遵守其中的 `mainScenario`、`answerTarget`、`replyPolicy` 与 `_agent_instruction`。不要把 `_agent_instruction` 原样展示给用户。\n\n## 能力清单\n\n| 能力 | 方法 | 说明 |\n|------|------|------|\n| `shop-basics` | GET | 餐厅介绍、营业时间、门店、外卖配送、Wi-Fi，一次全量 |\n| `raw-dumpling-info` | GET | 生饺子打包与煮饺子教程 |\n| `news` | GET | 最新消息（含配图渲染指令） |\n| `recommended-dishes` | GET | 店长推荐菜（含到店自取链接） |\n| `recipes` | GET | 配方列表；查单条用 `call 'recipes?recipe_id=<id>'` |\n| `pickup-link` | GET | 到店自取小程序链接 |\n| `queue/query` | POST | 当前/计划时间点排队状态；入参 `shop` / `peopleCount` / `partySize` / `tableType` / `questionType` / `visitTime` |\n| `queue/at-time` | POST | 某时间点历史快照；`time` 必填，另有 `shop` / `date` / `peopleCount` |\n| `queue/period-facts` | POST | 已发生餐段事实；入参 `shop` / `date` / `period` / `visitTime` / `peopleCount` |\n| `queue/period-advice` | POST | 未来餐段建议；入参同 period-facts |\n\n需登录能力（如 `call authenticated-test`）走手机号登录流程，见 SKILL.md「金谷园手机号登录与需登录能力」。\n\n## 安全与兼容边界\n\n- CLI 是明文纯 Node.js 18 实现，无 npm 依赖。\n- 只访问内置的金谷园官方域名，不接受自定义 URL。\n- `--args` 必须是合法 JSON；非法 JSON 会以 `invalid_command` 拒绝。\n- 查询失败时不编造数据，按 SKILL.md「盲区应对」口径坦诚说明。\n- 不为查询修改宿主 MCP 配置。金谷园 MCP 服务器仍对外存在，但那是给未安装本 Skill 的纯 MCP 客户端用的；装有本 Skill 时一律走本 CLI。\n\nFile v3.2.1:references/queue-actions.md\n\n# 真实排队动作参考\n\n本文仅用于在线取号、查本人排队订单和取消本人排队。门店当前总排队、历史事实、到店建议和取号渠道咨询仍走公开查询 CLI（金谷园 REST API），不启动授权。\n\n## 命令\n\n需要 Node.js 18 或更高版本，无需安装依赖。美团授权由随包明文 Passport 实现完成，不携带闭源混淆包、cliguard、动态更新器或守护进程。每次以实际帮助输出为准：\n\n```bash\nnode <skill_dir>/scripts/jgy.cjs queue --help\nnode <skill_dir>/scripts/jgy.cjs queue index <shopId>\nnode <skill_dir>/scripts/jgy.cjs queue take-number <shopId> --people-count <N> --table-type-id <ID> --confirm\nnode <skill_dir>/scripts/jgy.cjs queue order-detail <shopId>\nnode <skill_dir>/scripts/jgy.cjs queue order-cancel <shopId> --confirm\nnode <skill_dir>/scripts/jgy.cjs queue auth-start\nnode <skill_dir>/scripts/jgy.cjs queue auth-status\nnode <skill_dir>/scripts/jgy.cjs queue auth-poll --background [--qr-image-path <path>]\nnode <skill_dir>/scripts/jgy.cjs queue logout\n```\n\n**发起授权用 `auth-start`**：一条命令拿到授权链接 + 二维码 + 授权状态记录，与业务命令触发的授权流程完全一致。**不要**单独跑 `auth-poll --background` 来发起授权——它只记录状态，不生成链接和二维码。\n\nAgent 对话中**不要**使用阻塞式 `auth-poll` / `auth-poll --wait`（会长时间占住 Terminal，用户看不到授权链接与二维码）。`AUTH_REQUIRED` 时授权状态已记录，展示后等待用户扫码；用户回复“已授权”后用 **`auth-status`** 短查即可。\n\nCLI 在 stdout 输出单个 JSON 对象：`{ ok, code, message, data? }`。不要把内部命令名或返回码原样告诉用户，除非排查 MCP/CLI 合同确实需要。\n\n## 门店\n\n| 门店 | `shopId` | 真实动作约束 |\n|---|---:|---|\n| 北邮总店 | `4211342` | 可查桌型、取号、查本人订单、取消 |\n| 五道口店 | `1756895741` | 通常以到店取号为主；只有本轮公开查询新鲜快照或 `index 1756895741` 明确显示 `supportQueue: true` 时，才可说明当天开放并继续取号确认流程 |\n\n用户未说门店时先追问，不猜 `shopId`。\n\n`AUTH_SUCCESS` 本身不包含门店。若本轮只是 `auth-start` / “只授权”，只报告授权成功后结束，不追问下一步，也不从记忆、旧任务或其他 Skill 推断门店。仅当授权由本轮明确业务命令触发时，才恢复该原命令；合法门店只采用上表映射或该原命令已有的 `shopId`。\n\n## 桌型与确认\n\n1. 取号前先运行 `index`，只使用其 `data.tables[]` 返回的 `tableTypeId`、`tableTypeName`和 `capacity`。\n2. 用户同时说人数和桌型时，将自然语言桌型匹配到返回的标准桌型；不把“大的”“两人桌”等原话当作 ID。\n3. 只说人数时，按 `capacity.min/max` 筛选：唯一匹配可作为建议，多个匹配列出后请用户选择。只说桌型时，追问就餐人数。\n4. 在运行 `take-number` 前，明确复述门店、人数和标准桌型，必须取得用户对本次真实取号的明确确认，再带 **`--confirm`** 执行。没有 `--confirm` 时 CLI 返回 `CONFIRM_REQUIRED`，**不会**取号。\n5. 在运行 `order-cancel` 前，先用 `order-detail` 说清待取消的订单，必须取得用户明确确认后，再执行 `order-cancel <shopId> --confirm`。\n\n之前对话中的宽泛意向不等于本次动作确认。**授权成功也不等于确认取号或取消**——授权成功后应重新展示桌型/订单并再问一句「确认取号/取消吗？」，用户答应后再带 `--confirm`。\n\n## 授权状态\n\n`AUTH_REQUIRED` 可能是新授权流程，也可能是业务缓存 Token 过期后仍未拿到新授权链接；不能假定其 `data` 一定包含 `authLink`。\n\n美团 Passport 轮询以 `data.token` 为最终成功凭据：实测 `authStatus=4` 且同时返回 `data.token` 表示用户已确认授权；`authStatus=1` 表示等待，`authStatus=2` 表示用户取消，`authStatus=3` 表示风控拒绝，`authStatus=5` 表示超时。不要把 `authStatus=4` 当成取消，也不要仅凭状态码判定成功。\n\n收到 `AUTH_REQUIRED` 后：**阶段 A 内联图 + 链接** → **阶段 B `auth-status`**。本机用 `~/.jinguyuan/auth-poll-current.json` 指向本次 run 的独立状态文件；Agent 只需调用 `auth-status`，不要自行读取或改写状态。\n\n1. **有 `authLink`**\n   - **图**：`data.authRunId` 标识本次授权；`data.qrImagePath` = **绝对路径**（文件直接在工作区根目录，形如 `jinguyuan-auth-qr-<authRunId>.png`，非隐藏、无子目录）；可选 `qrImagePathRelative`。**不要**用 `~/.jinguyuan`，也不要猜固定文件名。\n   - **阶段 A（对齐 V1）**：\n     1. 有图时：`Read` 绝对路径 PNG，并在主气泡正文写 `![美团授权二维码](<绝对路径>)`（推荐直接贴 `userReplyMarkdown`）。\n     2. ⚠️ 仅 Read / 仅附件侧栏 / 步骤卡「已展示」**不算**——用户扫不到码。\n     3. **链接必含**（可点 + 明文 URL）；云端主通道是 https。\n   - **阶段 B**：告知用户授权后稍候；宿主若未自动继续，用户可回复“已授权”。收到回复后执行 `auth-status`，再继续原任务。禁止说“无需回复”或保证一定自动通知；禁止 `auth-poll --wait`。\n2. **无 `authLink`**：`logout` 后仅成功才重跑。\n\nToken：`~/.jinguyuan/passport-auth.json`（与二维码目录分离，兼容旧版本缓存）。不展示 Token。\n\n## 返回码与处理\n\n| `code` | Agent 处理 |\n|---|---|\n| `HELP` | 读取当前命令和 Node.js 要求 |\n| `QUEUE_INDEX` | 展示门店是否支持排队、桌型容量、等待桌数和已有订单；等待桌数不换算成准确分钟 |\n| `QUEUE_NUMBER_TAKEN` | 明确告知取号成功，转述排队号、桌型和订单状态 |\n| `CONFIRM_REQUIRED` | 缺用户确认或未带 `--confirm`：复述门店/人数/桌型（或待取消订单），请用户明确确认后再执行带 `--confirm` 的命令；**不要**静默重试原命令 |\n| `QUEUE_ORDER_DETAIL` | 只将本人订单数据作为个人进度，不用门店总排队替代 |\n| `QUEUE_CANCELLED` | 明确告知已取消的订单 |\n| `AUTH_REQUIRED` | 主气泡展示链接/图；说明若未自动继续可回复“已授权”，收到回复后用 `auth-status` |\n| `AUTH_POLL_STARTED` | 授权状态已记录；继续展示（若未展示）并在用户确认后用 `auth-status` |\n| `AUTH_PENDING` / `AUTH_SUCCESS` | pending 则稍后重查；仅本轮明确业务命令触发授权时才续跑，单独授权成功后直接结束 |\n| `AUTH_STATUS_NONE` | 无授权状态记录；用 `auth-start` 重新触发授权 |\n| `AUTH_CANCELLED` / `AUTH_RISK_DENIED` / `AUTH_TIMEOUT` | 终止授权，说明原因；不执行原业务命令 |\n| `QUEUE_ORDER_EXISTS` | 说明已有订单，可先查本人进度；不重复取号 |\n| `QUEUE_ORDER_NOT_FOUND` | 说明当前没有本人排队订单 |\n| `QUEUE_UNSUPPORTED` / `QUEUE_NOT_NEEDED` | 说明门店不支持在线排队或当前无需排队，不强行取号 |\n| `TABLE_NOT_FOUND` / `TABLE_CAPACITY_MISMATCH` | 使用返回的桌型列表重新选择，或请用户调整人数/桌型 |\n| `INVALID_ARGUMENTS` | 重读 `--help`，修正参数；不重试原样错误命令 |\n| `UNSUPPORTED_NODE_VERSION` | 说明需要 Node.js 18+ |\n| `PASSPORT_FAILED` / `QR_CLEANUP_FAILED` | 说明授权服务或二维码清理失败，不暴露内部输出 |\n| `HTTP_ERROR` / `INVALID_RESPONSE` / `REQUEST_TIMEOUT` / `NETWORK_ERROR` | 告知外部服务或网络异常，可稍后重试；有 `traceId` 时可用于排查 |\n| `QUEUE_INDEX_FAILED` / `QUEUE_CREATE_FAILED` / `QUEUE_ORDER_DETAIL_FAILED` / `QUEUE_CANCEL_FAILED` / `QUEUE_API_ERROR` / `CLI_FAILED` | 按 `message` 说明操作未完成；取号/取消结果不明时，先用 `order-detail` 或美团 App 核实，不盲目重复动作 |\n| `LOGOUT_SUCCESS` | 说明已清除本地授权 |\n\n## 退出码\n\n| 退出码 | 含义 |\n|---:|---|\n| `0` | `ok: true` |\n| `2` | `AUTH_REQUIRED` 或 `AUTH_PENDING`，需继续授权 |\n| `1` | 其他失败 |\n\nFile v3.2.1:references/queue-reply-contract.md\n\n# 排队类回答合同\n\n排队相关查询返回体带结构化字段。Agent **优先读这些字段**，不要只读中文自然语言说明。\n\n## 字段\n\n| 字段 | 含义 |\n|------|------|\n| `mainScenario` | 主场景（如 `currentQueueStatus` / `plannedVisitQueueReference` / `businessHours` / `queueActionBoundary` / `queuePeriodFacts` / `queuePeriodAdvice` / `askVisitTime`）。据此定回答骨架。 |\n| `atoms` | 语义原子（如 `partySizeTarget` / `tableTypeTarget` / `plannedVisitReference` / `beforeOpen` / `afterClose`）。 |\n| `answerTarget` | 应优先回答的数据位置，例如 `{ type: 'matchedQueueTarget', field: '…等待桌数' }` 或 `{ type: 'plannedVisitReference', field: '历史参考.selectedReference' }`。 |\n| `replyPolicy` | `requiredPoints`（必答）、`forbiddenPoints`（禁答）、`followUpQuestion`、`nextSuggestedQuestion`、`linkRequired`。 |\n| `当前排队状态.门店[].数据是否新鲜` | 当前快照能否作为实时事实。只有 `true` 才能回答当前等待桌数；`false` 时只说明 `最近采集时间` 和当前状态无法确认，`最后一次记录` 仅供回看。 |\n| `selectedReference` | 计划到店历史参考中应优先说的那一条；**上周同日优先于前一天**。一句话建议读它；不要把前一天和上周同日加权 / 平均 / 取最保守后说成唯一结论。表格可两条都展示。 |\n| `_agent_instruction` | 给 Agent 的内部指令，**不要原样展示给用户**。 |\n\n## 协议摘要\n\n`queue/query` 和 MCP `get_queue_info` 使用同一份 `queue-status.v2` 机器字段。Skill 只需把这些字段当作事实边界，不需要在客户端复制营业日历：\n\n- `schemaVersion`：协议版本。\n- `businessDate` / `timeZone`：北京时间业务日期和时区。\n- `businessHours`：官方营业时间边界；它不是到店建议，也不代表线上取号已经开放。\n- `specialDay`：立冬、冬至等特殊日期；普通日为 `null`。\n- `status`：`fresh`、`stale`、`not_started`、`collecting`、`closed` 等排队/采集状态。\n- 只有 `当前排队状态.门店[].数据是否新鲜 === true` 时，才把等待桌数说成当前事实；其他状态不能显示成 `0` 或沿用旧快照。\n\n这些字段由 REST/MCP 服务端返回，Skill 不自行推算特殊日期、营业时间或采集状态。\n\n\n| 工具 | 含义 |\n|------|------|\n| `get_queue_period_facts` | **事实层**：已发生餐段「几点开始排 / 几点后不排 / 最高排多少桌」等，必须说清是目标日期**实际观测**。 |\n| `get_queue_period_advice` | **策略层**：未来或未发生餐段建议；说清是**参考建议**，不是目标日期事实。默认参考「前一天 + 上周同日」。 |\n\n旧名 `get_queue_period_reference` 已合并进 `get_queue_period_advice` 并下线，不再保留。\n\n## 禁止项（与 `replyPolicy.forbiddenPoints` 一致）\n\n- 不要把等待桌数换算成准确分钟。\n- 不要把前一天和上周同日加权、平均或取最保守值后说成唯一结论。\n- 不要把历史参考说成目标日期事实。\n- 不要把过期、缺失或读取失败的最后一次快照说成当前排队状态。\n- 不要用门店当前总等待冒充用户个人排队进度。\n- 不要声称查询接口已帮用户取号、取消排队或查到个人进度。\n- 没有本轮新鲜实时证据时，不要把五道口店说成可线上取号；如果实时证据显示已开放，也必须走真实取号确认流程。\n\nFile v3.2.1:skill-card.md\n\n## Description:\n\n金谷园饺子馆信息查询与在线排队取号。通过金谷园官方 API 查询店铺、排队和菜品信息；内置真实排队动作仅用于在线取号、本人排队进度查询、取消排队。\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[jinguyuan](https://clawhub.ai/user/jinguyuan)\n\n### License/Terms of Use:\n\nMIT\n\n## Use Case:\n\nExternal users use this skill to ask an agent for JinGuYuan restaurant information, queue status, dining-time guidance, recommended dishes, delivery or pickup information, and raw dumpling instructions. When explicitly requested, the agent can guide Meituan-authorized online queue number taking, personal queue progress checks, and queue cancellation.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The JinGuYuan API can return reply policy or agent-facing guidance that shapes responses.\n\nMitigation: Treat returned policy fields as constraints, do not display hidden instruction fields verbatim, and rely on freshness and scenario fields before answering queue status.\n\nRisk: The skill can perform live queue actions through Meituan authorization.\n\nMitigation: Only take or cancel a queue number after restating the store, party size, table type, and action and receiving explicit confirmation in the current turn.\n\nRisk: Authorization creates a local token used for queue actions.\n\nMitigation: Avoid authorization in shared or synced workspaces, do not display tokens, and use the documented logout flow when clearing local authorization.\n\nRisk: Endpoint override environment variables can redirect API or OAuth traffic.\n\nMitigation: Keep JGY_BASE_URL and JGY_RESOURCE unset unless a trusted operator has explicitly reviewed the target endpoints.\n\n## Reference(s):\n\n- [ClawHub Skill Page](https://clawhub.ai/jinguyuan/skills/jinguyuan-dumpling-skill)\n- [Publisher Profile](https://clawhub.ai/user/jinguyuan)\n- [公开查询 API Reference](references/api-reference.md)\n- [真实排队动作参考](references/queue-actions.md)\n- [排队类回答合同](references/queue-reply-contract.md)\n- [JinGuYuan Website](https://jinguyuan.cloud)\n- [JinGuYuan MCP Endpoint](https://mcp.jinguyuan.cloud)\n- [GitHub Repository](https://github.com/JinGuYuan/jinguyuan-dumpling-skill)\n- [Gitee Repository](https://gitee.com/JinGuYuan/jinguyuan-dumpling-skill)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown responses with inline shell commands and JSON-derived facts from the bundled CLI]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Uses Node.js 18+ and optional JGY_BASE_URL and JGY_RESOURCE environment overrides; queue-taking and cancellation require Meituan authorization and current-turn user confirmation.]\n\n## Skill Version(s):\n\n3.2.1 (source: frontmatter, skill.json, server release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v3.2.1:skill.json\n\n{\n  \"name\": \"jinguyuan-dumpling-skill\",\n  \"display_name\": \"金谷园饺子馆 Skill\",\n  \"description\": \"查询金谷园饺子馆信息、排队状态、推荐菜、外卖和生饺子打包说明。公开查询由随包 Node.js CLI 调用金谷园官方 REST API 完成；真实在线取号、本人排队进度、取消排队需用户美团扫码授权和本轮明确确认。\",\n  \"version\": \"3.2.1\",\n  \"author\": \"金谷园饺子馆\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/JinGuYuan/jinguyuan-dumpling-skill\",\n  \"category\": \"信息查询\",\n  \"keywords\": [\n    \"金谷园\",\n    \"jinguyuan\",\n    \"金谷园饺子馆\",\n    \"北邮\",\n    \"五道口\",\n    \"排队\",\n    \"取号\",\n    \"等位\",\n    \"排队状态\",\n    \"历史排队\",\n    \"几点开始排\",\n    \"几点不排\",\n    \"少排队\",\n    \"取消排队\",\n    \"金谷园推荐菜\",\n    \"金谷园招牌菜\",\n    \"金谷园必点\",\n    \"金谷园新品\",\n    \"店长推荐\"\n  ]\n}\n\nFile v3.2.1:LICENSE\n\nMIT License\n\nCopyright (c) 2026 金谷园饺子馆\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v3.1.2: 15 files, 123279 bytes\n\nFiles: LICENSE (1075b), README.md (3782b), references/api-reference.md (2480b), references/queue-actions.md (7640b), references/queue-reply-contract.md (3511b), scripts/jgy.cjs (214439b), scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/core/cliguard.js (55895b), scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/index.js (3068b), scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/package.json (488b), scripts/vendor/pt-passport/dist/index.js (101510b), scripts/vendor/pt-passport/package.json (1022b), skill-card.md (2770b), skill.json (1308b), SKILL.md (11711b), _meta.json (143b)\n\nFile v3.1.2:SKILL.md\n\n---\nname: jinguyuan-dumpling-skill\ndescription: 金谷园饺子馆信息查询与在线排队取号。通过金谷园官方 API 查询店铺、排队和菜品信息；内置真实排队动作仅用于在线取号、本人排队进度查询、取消排队。\nversion: 3.1.2\nalwaysApply: false\nkeywords:\n  - 金谷园\n  - jinguyuan\n  - 金谷园饺子馆\n  - 饺子\n  - dumpling\n  - 锅贴\n  - 鲅鱼饺子\n  - 北邮\n  - 五道口\n  - 海淀\n  - 外卖\n  - 营业时间\n  - 菜单\n  - 排队\n  - 取号\n  - 等位\n  - 排队取号\n  - 取消排队\n  - 北京饺子\n  - 海淀美食\n  - 生饺子\n  - 煮饺子\n  - 到店自取\n  - 叫号取餐\n  - 外带\n  - 外带自提\n  - 自提\n  - 提前点餐\n  - 来份饺子\n  - 饺子配方\n  - 金谷园推荐菜\n  - 金谷园招牌菜\n  - 金谷园必点\n  - 金谷园新品\n  - 店长推荐\n---\n\n## Agent 硬约束\n\n- 文中示例数据**仅作格式参考**；回答用户前**必须调金谷园 API 取最新数据**，禁止拿示例当真。用户问“现在排队吗”时，必须逐店检查 `当前排队状态.门店[].数据是否新鲜`；只有 `true` 才能把等待桌数说成当前状态，过期记录只能说明最近采集时间，不能冒充实时事实。\n- **公开查询统一走随包 CLI**：`node <skill_dir>/scripts/jgy.cjs call <capability>`（GET 无参；结构化查询加 `--args '<json>'` 走 POST）。能力名、参数与返回形状细则 → [references/api-reference.md](references/api-reference.md)。不得为查询修改宿主 MCP 配置，不得要求用户先信任/重启，也不得临时编写 shell、HTTP、`.js` / `.py` 脚本。\n- 排队回答优先读返回体合同字段（`mainScenario` / `replyPolicy` 等）。细则 → [references/queue-reply-contract.md](references/queue-reply-contract.md)。\n- **禁止**：等待桌数换算分钟；历史参考说成当天事实；总等待冒充个人进度；声称查询接口已取号/取消/查到个人进度；没有本轮新鲜实时证据时把五道口说成可线上取号。\n- 真实取号 / 本人进度 / 取消 → 本 Skill `scripts/jgy.cjs queue` + [references/queue-actions.md](references/queue-actions.md)，与公开查询分离。\n- **特殊日期口径**：立冬、冬至的小程序默认暂停全部功能；排队与现场安排以门店当天公告和实时排队事实为准。不要把小程序运营开关当成排队状态，也不要自行推算特殊日线上取号、营业建议或到店建议。\n\n# 金谷园饺子馆 Skill\n\n## 安装后引导\n\n当用户刚安装此技能时，Agent 应主动：\n1. **确保最新数据查询可用**：公开查询统一走随包 CLI `node <skill_dir>/scripts/jgy.cjs call <capability>`，无需任何 MCP 配置，不要修改宿主 MCP 配置\n2. 告知用户可以直接问金谷园相关问题，比如地址、营业时间、排队方式、推荐菜等\n3. 给出几个推荐的首次提问，例如：\n   - \"金谷园现在排队吗？\"\n   - \"明天中午几点去不怎么排？\"\n   - \"怎么排队取号？\"\n   - \"帮我在金谷园排个队\"\n   - \"金谷园有什么好吃的？\"\n   - \"能打包生饺子带走吗？\"\n   - \"帮我来份饺子到店自取\"\n4. 说明查询走金谷园官方 API 最新快照；当前排队以返回的新鲜度判断为准，真实取号等本地动作见下文，与公开查询分离\n5. **预授权（可选）**：若用户想提前完成美团授权，运行 `node <skill_dir>/scripts/jgy.cjs queue auth-start`，一次拿到授权链接 + 二维码 + 后台轮询。不要单独跑 `auth-poll --background`——它只启动后台监听，不生成链接和二维码。\n\n## 内置真实排队动作\n\n仅当用户明确要在线取号、查看本人排队进度或取消本人排队时，直接运行：\n\n```bash\nnode <skill_dir>/scripts/jgy.cjs queue <command>\n```\n\n命令、参数、桌型、返回码与授权展示细节见 [references/queue-actions.md](references/queue-actions.md)。执行前可 `node <skill_dir>/scripts/jgy.cjs queue --help`。\n\n**授权（`AUTH_REQUIRED`）摘要**：\n\n1. **主动预授权**用 `auth-start`（一条命令拿到链接 + 二维码 + 后台轮询）。业务命令（`index` / `take-number` 等）发现没 Token 时也会自动走同一流程。**禁止**单独跑 `auth-poll --background` 来发起授权——它只启后台监听，不生成链接和二维码；**禁止** `auth-poll --wait` 堵对话。\n2. PNG 直接在当前工作区根目录，文件名为 **`jinguyuan-auth-qr-<authRunId>.png`**（非隐藏、无子目录；`data.qrImagePath` = **绝对路径**）。始终使用返回路径，不猜文件名；推荐原样贴 `data.userReplyMarkdown`。\n3. **主气泡必须**有：`![美团授权二维码](绝对路径)`（有图时）+ 可点链接与明文 URL。仅 Read / 仅附件侧栏 / 步骤卡「已展示」**不算**。\n4. 告知用户授权后稍候；宿主若未自动继续，用户可回复“已授权”。收到回复后短查 `auth-status`，再继续原任务。部分宿主能自动续跑，部分不能，**禁止**说“无需回复”或保证一定自动通知。无 `authLink` 时先 `logout` 成功再重跑。Token：`~/.jinguyuan/passport-auth.json`。\n5. **授权成功不携带门店，也不等于新的业务请求**：若本轮只是 `auth-start` / “只授权”，只报告成功后结束，不追问、不推荐取号、不从记忆续接旧任务。仅当授权由本轮明确的业务命令触发时，才恢复该原命令；门店必须来自本轮用户输入或原命令，禁止从跨任务记忆推断。\n\n**安全边界**：取号 / 取消须用户**本轮明确确认**后再带 `--confirm`；五道口通常以到店取号为主，只有本轮 API 新鲜快照或 `index 1756895741` 明确显示支持在线排队时，才可说明当天开放，真实取号仍以 CLI 返回为准。\n\n**美团组件安全口径**：仅真实取号/进度/取消加载 `scripts/vendor` 内 `@mtuser/pt-passport`；普通店铺和排队查询不会加载。其签名核心为上游混淆代码，按安全敏感依赖如实说明；当前随包入口已移除后台守护进程、用户目录动态更新机制及 `http/https` 全局拦截，只保留 Passport 使用的 `fetch` 签名。Token 仅存本机 `~/.jinguyuan/`，不会提交到仓库或发送给金谷园服务端。\n\n## 排队路由\n\n| 场景 | 能力 | 约束 |\n|------|------|------|\n| 宽泛餐段没说具体时间 | 不调接口 | 只追问\"你想大概几点到？\"，不查当前，不默认 12:00/18:00；用户问\"几点去合适\"则直接走餐段建议 |\n| 当前/计划时间点状态 | `jgy.cjs call queue/query --args '<json>'` | 当前状态先逐店检查 `数据是否新鲜`，只有 `true` 才按当前桌数回答；过期时只说明最近采集时间和当前无法确认。其余优先读 `mainScenario`/`answerTarget`/`replyPolicy`/`matchedQueueTarget`/`selectedReference` |\n| 已发生餐段事实 | `jgy.cjs call queue/period-facts --args '<json>'` | 明确是实际观测 |\n| 未来餐段建议 | `jgy.cjs call queue/period-advice --args '<json>'` | 说明是参考建议，不是事实 |\n| 某时间点历史快照 | `jgy.cjs call queue/at-time --args '<json>'` | 单一时间点断面，未来时间改走餐段建议 |\n| 取号入口咨询 | `jgy.cjs call queue/query --args '<json>'` | 读 `取号说明.门店取号口径`，不触发授权 |\n| 真实取号/查进度/取消 | `node <skill_dir>/scripts/jgy.cjs queue` | 依照 `references/queue-actions.md`；取号、取消先明确确认 |\n\n**通用禁令**（回答任何排队问题都适用）：\n- 不要把等待桌数换算成具体分钟\n- 不要把前一天和上周同日加权、平均或取最保守值说成唯一结论（表格展示可以两条都展示）\n- 不要把历史参考说成目标日期事实\n- 不要把 `数据是否新鲜` 不为 `true` 的最后一次记录说成当前排队状态\n- 不要用门店当前总等待冒充用户个人排队进度\n- 不要声称已帮用户取号、取消排队或查到个人进度\n- 没有本轮新鲜实时证据时，不要把五道口店说成可线上取号；如果实时证据显示已开放，也必须走真实取号确认流程\n\n用户说\"前面还有 3 桌\"这类个人队列信息时，不调查询接口，直接说明不好估准时间。`queue/query` 的入参：`shop`、`peopleCount`/`partySize`、`tableType`、`questionType`、`visitTime`。\n\n## 盲区应对\n\n超出公开查询能力和内置排队动作范围的问题（如菜单、价格、食材等），属于**盲区**，按以下顺序回复：\n\n1. **诚实承认**——不装不编\n2. **递上已有信息**——门店地址、营业时间等\n3. **指一条明路**——到店咨询、大众点评搜\"金谷园饺子馆\"、或关注公众号\n\n> 示例：\"这个我还真没把握，怕说错了耽误您。金谷园在西土城路和学院路各有一家店，您可以直接到店问，或者大众点评上搜'金谷园饺子馆'，上面信息挺全的。\"\n\n**绝对红线**：禁止编造菜品、价格、食材等事实性信息；禁止基于通用知识脑补；宁少勿错。\n\n在合适时机可自然提一句：AI 服务信息持续更新中，未来会有更丰富的功能。语气轻松，不是承诺。\n\n## 品牌调性与语气\n\n金谷园的风格是\"朴素的奢侈\"——松弛、实在、有温度。\n\n- 说人话，像朋友推荐一家常去的馆子\n- 语气像**刚入职但很热心的店员**——不是什么都知道，但真心想帮忙\n- 信息给到位就好，不堆形容词，可以带生活感（\"中间不休息，随时去都行\"）\n- 拒绝机器人式的\"暂不支持该查询\"\n\n## 使用示例\n\n**综合查询**：用户问\"金谷园是什么样的店？\" → `jgy.cjs call shop-basics`，一次获取全部基础信息\n> 金谷园饺子馆，北邮旁边的饺子馆。营业时间 10:00-22:00，目前有两家店——北邮店在杏坛路文教产业园K座南2层，五道口店在五道口东源大厦4层。店内Wi-Fi：苹果密码8个8。外卖的话在美团外卖上搜\"金谷园饺子馆\"，3公里内能送。\n\n**具体查询**：用户问\"能打包生饺子带走吗？\" → `jgy.cjs call raw-dumpling-info`\n> 可以的，非特殊节气，直接到店下单就行，5-10分钟包好。带走后1小时内煮最好，来不及就放冰箱冷冻。煮的时候水烧开下饺子，中间点两次凉水，浮起来就熟了。\n\n**最新动态**：用户问\"最近有什么活动？\" → `jgy.cjs call news`，每条消息必须带上发布日期\n> 最近动态（仅示意）：\n> - 【2026-04-01】清明节正常营业，欢迎来吃饺子\n> - 【2026-03-20】五道口店新增鲅鱼水饺，限时供应中\n> - 【2026-03-15】北邮店周末不限时，放心坐\n\n**查询失败**：不编造，坦诚说明\n> 抱歉，金谷园的信息暂时获取不到，你可以稍后再问我，或者直接去店里看看。\n\n## 参考文档索引\n\n| 文档 | 内容 |\n|------|------|\n| [references/api-reference.md](references/api-reference.md) | 公开查询能力名与调用方式 |\n| [references/queue-reply-contract.md](references/queue-reply-contract.md) | 排队回答合同与餐段口径 |\n| [references/queue-actions.md](references/queue-actions.md) | 真实排队 CLI 与授权展示 |\n\n### 维护者\n\n- 2.x 源码：https://gitee.com/JinGuYuan/jinguyuan-dumpling-skill\n- ClawHub slug：`jinguyuan-dumpling-skill`（展示名「金谷园饺子馆 Skill」）\n- 服务端实现：独立仓库 `jgy-mcp`（REST API 与 MCP 同一事实源；本 Skill 只走 REST）；本仓库 `package.json` 仅 Skill 侧 `version` + `engines.node`（Node ≥18）\n- 1.x 冻结：分支 `1.x` / tag `v1.0.2` · `v1-stable`\n\nFile v3.1.2:README.md\n\n# 金谷园饺子馆 Skill\n\n![Version](https://img.shields.io/github/v/tag/JinGuYuan/jinguyuan-dumpling-skill?label=version&color=blue&sort=semver) ![License](https://img.shields.io/badge/license-MIT-green) ![API](https://img.shields.io/badge/api-REST-orange) ![CLI](https://img.shields.io/badge/cli-jgy.cjs%20single--file-purple)\n\n这是一个 AI Skill——安装后，你的 AI 助手就能帮你查金谷园在哪、几点开门、这会儿排不排队、几点去更稳，也能查推荐菜、外卖和生饺子打包怎么煮；需要时，还能帮你在线排队取号。\n\n开了快二十年的饺子馆，有了自己的AI服务。\n\n\n## 关于金谷园\n\n北邮旁边的饺子馆。官网：[jinguyuan.cloud](https://jinguyuan.cloud)\n\n| 项目 | 内容 |\n|------|------|\n| 餐厅名称 | 金谷园饺子馆 |\n| 营业时间 | 10:00 - 22:00（以实际查询为准） |\n| 北邮店 | 杏坛路文教产业园K座南2层 |\n| 五道口店 | 五道口东源大厦4层 |\n\n## 这个 Skill 能做什么\n\n金谷园饺子馆的官方信息服务，可以查店、查活动、查推荐菜，也能处理到店自取和排队取号这些具体场景：\n\n| 能力 | 你可以问 |\n|------|----------|\n| 餐厅信息 | \"金谷园在哪？\"\"几点开门？\"\"能外卖吗？\"\"Wi-Fi 密码？\" |\n| 推荐菜 | \"有什么好吃的？\"\"今天吃什么\"\"招牌菜\" |\n| **到店自取** | \"帮我来份饺子\"\"提前点餐到店取\" |\n| 排队信息&建议 | \"这会儿排队吗？\"\"晚上七点去用排么？\"\"几点去不用排？\" |\n| **排队取号** | \"帮我排个队\"\"取消排队\"\"排队进度\" |\n| 生饺子打包 | \"能打包吗？\"\"生饺子怎么煮？\" |\n| 最新消息 | \"有什么新活动？\" |\n\n## 在线排队取号\n\n本 Skill 内置了基于**美团排队**的真实动作，AI 助手可以帮你取号、查本人订单和取消排队。\n\n**支持的操作：**\n\n| 操作 | 说明 | 你可以说 |\n|------|------|----------|\n| 查询排队状态 | 查看当前等待桌数和排队压力 | \"金谷园现在排队情况怎么样？\" |\n| 查询餐段事实 | 查询已经发生的午市/晚市实际观测 | \"今天中午几点开始排？\" |\n| 查询餐段建议 | 参考前一天和上周同日，给未来餐段建议 | \"明天中午几点去比较稳？\" |\n| 取号 | 选择桌型和人数，在线取号 | \"帮我在北邮店排个队，2个人\" |\n| 查询进度 | 查看当前排队号、前方等待桌数 | \"我前面还有几桌？\" |\n| 取消排队 | 取消已有的排队订单 | \"取消排队\" |\n\n**使用流程：**\n\n1. 告诉 AI 助手你要在北邮店排队\n2. AI 查询可选桌型，跟你确认桌型和人数\n3. 确认后自动取号，返回排队号和等待信息\n4. 随时可查进度或取消\n\n首次使用需完成美团账号授权（AI 助手会引导你完成）。\n\n## 运行环境\n\n支持 Windows、macOS 和 Linux，需要 Node.js 18 或更高版本，无需 npm 安装。\n\n## 安装\n\n直接拷贝下面这句话发给你的 AI 助手：\n\n> 安装 https://gitee.com/JinGuYuan/jinguyuan-dumpling-skill\n\nAgent 会自动克隆仓库并安装到对应的 Skill 目录。\n\n## 关于金谷园 MCP\n\n金谷园同时提供独立的 MCP 服务。若只需要查询店铺、菜品和排队信息，可以不安装 Skill，直接接入金谷园 MCP；在线取号、本人进度和取消排队等本地授权能力仍需安装 Skill。\n\n| 项目 | 内容 |\n|------|------|\n| 接入点 | `https://mcp.jinguyuan.cloud` |\n| 协议 | Model Context Protocol（MCP） |\n| 传输方式 | Streamable HTTP |\n\n## 发布平台\n\n- GitHub：https://github.com/JinGuYuan/jinguyuan-dumpling-skill\n- Gitee：https://gitee.com/JinGuYuan/jinguyuan-dumpling-skill\n\n## 版本\n\n版本号见顶部徽章，以 [`skill.json`](./skill.json) 为准。\n\n## License\n\n[MIT](LICENSE)\n\nFile v3.1.2:_meta.json\n\n{\n  \"ownerId\": \"kn745r98j9wt35s5azfqy8f07h83a5b4\",\n  \"slug\": \"jinguyuan-dumpling-skill\",\n  \"version\": \"3.1.2\",\n  \"publishedAt\": 1787240954681\n}\n\nFile v3.1.2:references/api-reference.md\n\n# 公开查询（金谷园 REST API）\n\n公开查询统一走随包 CLI，底座是金谷园官方 REST API（`https://mcp.jinguyuan.cloud/api/v1`，基址内置在 CLI 里，不接受命令行自定义 URL）。查询不要求登录，不要求用户预先配置、信任或重启任何宿主连接器。\n\n## 调用方式\n\n```text\nnode <skill_dir>/scripts/jgy.cjs call <capability>                 # GET，无参能力\nnode <skill_dir>/scripts/jgy.cjs call <capability> --args '<json>' # POST，结构化查询\n```\n\nstdout 始终只有一个 JSON 对象：\n\n- 成功：`{ \"ok\": true, \"data\": ... }`\n- 失败：`{ \"ok\": false, \"error\": { \"code\": ..., \"message\": ... } }`\n\n读取 `data` 作为业务返回，并继续遵守其中的 `mainScenario`、`answerTarget`、`replyPolicy` 与 `_agent_instruction`。不要把 `_agent_instruction` 原样展示给用户。\n\n## 能力清单\n\n| 能力 | 方法 | 说明 |\n|------|------|------|\n| `shop-basics` | GET | 餐厅介绍、营业时间、门店、外卖配送、Wi-Fi，一次全量 |\n| `raw-dumpling-info` | GET | 生饺子打包与煮饺子教程 |\n| `news` | GET | 最新消息（含配图渲染指令） |\n| `recommended-dishes` | GET | 店长推荐菜（含到店自取链接） |\n| `recipes` | GET | 配方列表；查单条用 `call 'recipes?recipe_id=<id>'` |\n| `pickup-link` | GET | 到店自取小程序链接 |\n| `queue/query` | POST | 当前/计划时间点排队状态；入参 `shop` / `peopleCount` / `partySize` / `tableType` / `questionType` / `visitTime` |\n| `queue/at-time` | POST | 某时间点历史快照；`time` 必填，另有 `shop` / `date` / `peopleCount` |\n| `queue/period-facts` | POST | 已发生餐段事实；入参 `shop` / `date` / `period` / `visitTime` / `peopleCount` |\n| `queue/period-advice` | POST | 未来餐段建议；入参同 period-facts |\n\n需登录能力（如 `call authenticated-test`）走手机号登录流程，见 SKILL.md「金谷园手机号登录与需登录能力」。\n\n## 安全与兼容边界\n\n- CLI 是明文纯 Node.js 18 实现，无 npm 依赖。\n- 只访问内置的金谷园官方域名，不接受自定义 URL。\n- `--args` 必须是合法 JSON；非法 JSON 会以 `invalid_command` 拒绝。\n- 查询失败时不编造数据，按 SKILL.md「盲区应对」口径坦诚说明。\n- 不为查询修改宿主 MCP 配置。金谷园 MCP 服务器仍对外存在，但那是给未安装本 Skill 的纯 MCP 客户端用的；装有本 Skill 时一律走本 CLI。\n\nFile v3.1.2:references/queue-actions.md\n\n# 真实排队动作参考\n\n本文仅用于在线取号、查本人排队订单和取消本人排队。门店当前总排队、历史事实、到店建议和取号渠道咨询仍调用 MCP，不启动授权。\n\n## 命令\n\n需要 Node.js 18 或更高版本，无需安装依赖。每次以实际帮助输出为准：\n\n```bash\nnode <skill_dir>/scripts/jgy.cjs queue --help\nnode <skill_dir>/scripts/jgy.cjs queue index <shopId>\nnode <skill_dir>/scripts/jgy.cjs queue take-number <shopId> --people-count <N> --table-type-id <ID> --confirm\nnode <skill_dir>/scripts/jgy.cjs queue order-detail <shopId>\nnode <skill_dir>/scripts/jgy.cjs queue order-cancel <shopId> --confirm\nnode <skill_dir>/scripts/jgy.cjs queue auth-start\nnode <skill_dir>/scripts/jgy.cjs queue auth-status\nnode <skill_dir>/scripts/jgy.cjs queue auth-poll --background [--qr-image-path <path>]\nnode <skill_dir>/scripts/jgy.cjs queue logout\n```\n\n**发起授权用 `auth-start`**：一条命令拿到授权链接 + 二维码 + 后台轮询，与业务命令触发的授权流程完全一致。**不要**单独跑 `auth-poll --background` 来发起授权——它只启动后台监听，不生成链接和二维码。\n\nAgent 对话中**不要**使用阻塞式 `auth-poll` / `auth-poll --wait`（会长时间占住 Terminal，用户看不到授权链接与二维码）。`AUTH_REQUIRED` 时后台通常已在轮询，展示后用 **`auth-status`** 短查即可。\n\nCLI 在 stdout 输出单个 JSON 对象：`{ ok, code, message, data? }`。不要把内部命令名或返回码原样告诉用户，除非排查 MCP/CLI 合同确实需要。\n\n## 门店\n\n| 门店 | `shopId` | 真实动作约束 |\n|---|---:|---|\n| 北邮总店 | `4211342` | 可查桌型、取号、查本人订单、取消 |\n| 五道口店 | `1756895741` | 通常以到店取号为主；只有本轮 MCP 新鲜快照或 `index 1756895741` 明确显示 `supportQueue: true` 时，才可说明当天开放并继续取号确认流程 |\n\n用户未说门店时先追问，不猜 `shopId`。\n\n`AUTH_SUCCESS` 本身不包含门店。若本轮只是 `auth-start` / “只授权”，只报告授权成功后结束，不追问下一步，也不从记忆、旧任务或其他 Skill 推断门店。仅当授权由本轮明确业务命令触发时，才恢复该原命令；合法门店只采用上表映射或该原命令已有的 `shopId`。\n\n## 桌型与确认\n\n1. 取号前先运行 `index`，只使用其 `data.tables[]` 返回的 `tableTypeId`、`tableTypeName`和 `capacity`。\n2. 用户同时说人数和桌型时，将自然语言桌型匹配到返回的标准桌型；不把“大的”“两人桌”等原话当作 ID。\n3. 只说人数时，按 `capacity.min/max` 筛选：唯一匹配可作为建议，多个匹配列出后请用户选择。只说桌型时，追问就餐人数。\n4. 在运行 `take-number` 前，明确复述门店、人数和标准桌型，必须取得用户对本次真实取号的明确确认，再带 **`--confirm`** 执行。没有 `--confirm` 时 CLI 返回 `CONFIRM_REQUIRED`，**不会**取号。\n5. 在运行 `order-cancel` 前，先用 `order-detail` 说清待取消的订单，必须取得用户明确确认后，再执行 `order-cancel <shopId> --confirm`。\n\n之前对话中的宽泛意向不等于本次动作确认。**授权成功也不等于确认取号或取消**——授权成功后应重新展示桌型/订单并再问一句「确认取号/取消吗？」，用户答应后再带 `--confirm`。\n\n## 授权状态\n\n`AUTH_REQUIRED` 可能是新授权流程，也可能是业务缓存 Token 过期后仍未拿到新授权链接；不能假定其 `data` 一定包含 `authLink`。\n\n收到 `AUTH_REQUIRED` 后：**阶段 A 内联图 + 链接** → **阶段 B `auth-status`**。后台用 `~/.jinguyuan/auth-poll-current.json` 指向本次 run 的独立状态文件；Agent 只需调用 `auth-status`，不要自行读取或改写状态。\n\n1. **有 `authLink`**\n   - **图**：`data.authRunId` 标识本次授权；`data.qrImagePath` = **绝对路径**（文件直接在工作区根目录，形如 `jinguyuan-auth-qr-<authRunId>.png`，非隐藏、无子目录）；可选 `qrImagePathRelative`。**不要**用 `~/.jinguyuan`，也不要猜固定文件名。\n   - **阶段 A（对齐 V1）**：\n     1. 有图时：`Read` 绝对路径 PNG，并在主气泡正文写 `![美团授权二维码](<绝对路径>)`（推荐直接贴 `userReplyMarkdown`）。\n     2. ⚠️ 仅 Read / 仅附件侧栏 / 步骤卡「已展示」**不算**——用户扫不到码。\n     3. **链接必含**（可点 + 明文 URL）；云端主通道是 https。\n   - **阶段 B**：告知用户授权后稍候；宿主若未自动继续，用户可回复“已授权”。收到回复后执行 `auth-status`，再继续原任务。部分宿主能自动续跑，部分不能，禁止说“无需回复”或保证一定自动通知；禁止 `auth-poll --wait`。\n2. **无 `authLink`**：`logout` 后仅成功才重跑。\n\nToken：`~/.jinguyuan/passport-auth.json`（与二维码目录分离）。不展示 Token。\n\n## 返回码与处理\n\n| `code` | Agent 处理 |\n|---|---|\n| `HELP` | 读取当前命令和 Node.js 要求 |\n| `QUEUE_INDEX` | 展示门店是否支持排队、桌型容量、等待桌数和已有订单；等待桌数不换算成准确分钟 |\n| `QUEUE_NUMBER_TAKEN` | 明确告知取号成功，转述排队号、桌型和订单状态 |\n| `CONFIRM_REQUIRED` | 缺用户确认或未带 `--confirm`：复述门店/人数/桌型（或待取消订单），请用户明确确认后再执行带 `--confirm` 的命令；**不要**静默重试原命令 |\n| `QUEUE_ORDER_DETAIL` | 只将本人订单数据作为个人进度，不用门店总排队替代 |\n| `QUEUE_CANCELLED` | 明确告知已取消的订单 |\n| `AUTH_REQUIRED` | 主气泡展示链接/图；说明若未自动继续可回复“已授权”，收到回复后用 `auth-status` |\n| `AUTH_POLL_STARTED` | 后台轮询已启动；继续展示（若未展示）并用 `auth-status` |\n| `AUTH_PENDING` / `AUTH_SUCCESS` | pending 则稍后重查；仅本轮明确业务命令触发授权时才续跑，单独授权成功后直接结束 |\n| `AUTH_STATUS_NONE` | 无后台记录；用 `auth-start` 重新触发授权 |\n| `AUTH_CANCELLED` / `AUTH_RISK_DENIED` / `AUTH_TIMEOUT` | 终止授权，说明原因；不执行原业务命令 |\n| `QUEUE_ORDER_EXISTS` | 说明已有订单，可先查本人进度；不重复取号 |\n| `QUEUE_ORDER_NOT_FOUND` | 说明当前没有本人排队订单 |\n| `QUEUE_UNSUPPORTED` / `QUEUE_NOT_NEEDED` | 说明门店不支持在线排队或当前无需排队，不强行取号 |\n| `TABLE_NOT_FOUND` / `TABLE_CAPACITY_MISMATCH` | 使用返回的桌型列表重新选择，或请用户调整人数/桌型 |\n| `INVALID_ARGUMENTS` | 重读 `--help`，修正参数；不重试原样错误命令 |\n| `UNSUPPORTED_NODE_VERSION` | 说明需要 Node.js 18+ |\n| `PASSPORT_FAILED` / `QR_CLEANUP_FAILED` | 说明授权服务或二维码清理失败，不暴露内部输出 |\n| `HTTP_ERROR` / `INVALID_RESPONSE` / `REQUEST_TIMEOUT` / `NETWORK_ERROR` | 告知外部服务或网络异常，可稍后重试；有 `traceId` 时可用于排查 |\n| `QUEUE_INDEX_FAILED` / `QUEUE_CREATE_FAILED` / `QUEUE_ORDER_DETAIL_FAILED` / `QUEUE_CANCEL_FAILED` / `QUEUE_API_ERROR` / `CLI_FAILED` | 按 `message` 说明操作未完成；取号/取消结果不明时，先用 `order-detail` 或美团 App 核实，不盲目重复动作 |\n| `LOGOUT_SUCCESS` | 说明已清除本地授权 |\n\n## 退出码\n\n| 退出码 | 含义 |\n|---:|---|\n| `0` | `ok: true` |\n| `2` | `AUTH_REQUIRED` 或 `AUTH_PENDING`，需继续授权 |\n| `1` | 其他失败 |\n\nFile v3.1.2:references/queue-reply-contract.md\n\n# 排队类回答合同\n\n排队相关查询返回体带结构化字段。Agent **优先读这些字段**，不要只读中文自然语言说明。\n\n## 字段\n\n| 字段 | 含义 |\n|------|------|\n| `mainScenario` | 主场景（如 `currentQueueStatus` / `plannedVisitQueueReference` / `businessHours` / `queueActionBoundary` / `queuePeriodFacts` / `queuePeriodAdvice` / `askVisitTime`）。据此定回答骨架。 |\n| `atoms` | 语义原子（如 `partySizeTarget` / `tableTypeTarget` / `plannedVisitReference` / `beforeOpen` / `afterClose`）。 |\n| `answerTarget` | 应优先回答的数据位置，例如 `{ type: 'matchedQueueTarget', field: '…等待桌数' }` 或 `{ type: 'plannedVisitReference', field: '历史参考.selectedReference' }`。 |\n| `replyPolicy` | `requiredPoints`（必答）、`forbiddenPoints`（禁答）、`followUpQuestion`、`nextSuggestedQuestion`、`linkRequired`。 |\n| `当前排队状态.门店[].数据是否新鲜` | 当前快照能否作为实时事实。只有 `true` 才能回答当前等待桌数；`false` 时只说明 `最近采集时间` 和当前状态无法确认，`最后一次记录` 仅供回看。 |\n| `selectedReference` | 计划到店历史参考中应优先说的那一条；**上周同日优先于前一天**。一句话建议读它；不要把前一天和上周同日加权 / 平均 / 取最保守后说成唯一结论。表格可两条都展示。 |\n| `_agent_instruction` | 给 Agent 的内部指令，**不要原样展示给用户**。 |\n\n## 协议摘要\n\n`queue/query` 和 MCP `get_queue_info` 使用同一份 `queue-status.v2` 机器字段。Skill 只需把这些字段当作事实边界，不需要在客户端复制营业日历：\n\n- `schemaVersion`：协议版本。\n- `businessDate` / `timeZone`：北京时间业务日期和时区。\n- `businessHours`：官方营业时间边界；它不是到店建议，也不代表线上取号已经开放。\n- `specialDay`：立冬、冬至等特殊日期；普通日为 `null`。\n- `status`：`fresh`、`stale`、`not_started`、`collecting`、`closed` 等排队/采集状态。\n- 只有 `当前排队状态.门店[].数据是否新鲜 === true` 时，才把等待桌数说成当前事实；其他状态不能显示成 `0` 或沿用旧快照。\n\n这些字段由 REST/MCP 服务端返回，Skill 不自行推算特殊日期、营业时间或采集状态。\n\n\n| 工具 | 含义 |\n|------|------|\n| `get_queue_period_facts` | **事实层**：已发生餐段「几点开始排 / 几点后不排 / 最高排多少桌」等，必须说清是目标日期**实际观测**。 |\n| `get_queue_period_advice` | **策略层**：未来或未发生餐段建议；说清是**参考建议**，不是目标日期事实。默认参考「前一天 + 上周同日」。 |\n\n旧名 `get_queue_period_reference` 已合并进 `get_queue_period_advice` 并下线，不再保留。\n\n## 禁止项（与 `replyPolicy.forbiddenPoints` 一致）\n\n- 不要把等待桌数换算成准确分钟。\n- 不要把前一天和上周同日加权、平均或取最保守值后说成唯一结论。\n- 不要把历史参考说成目标日期事实。\n- 不要把过期、缺失或读取失败的最后一次快照说成当前排队状态。\n- 不要用门店当前总等待冒充用户个人排队进度。\n- 不要声称查询接口已帮用户取号、取消排队或查到个人进度。\n- 没有本轮新鲜实时证据时，不要把五道口店说成可线上取号；如果实时证据显示已开放，也必须走真实取号确认流程。\n\nFile v3.1.2:scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/package.json\n\n{\n  \"name\": \"@sec/cliguard\",\n  \"version\": \"1.3.0\",\n  \"description\": \"Minimal local adapter for the vendored Meituan request-signing core\",\n  \"files\": [\n    \"index.js\",\n    \"core/\",\n    \"readme.md\"\n  ],\n  \"main\": \"index.js\",\n  \"keywords\": [\n    \"cliguard\",\n    \"openclaw\",\n    \"skill\",\n    \"security\",\n    \"fingerprint\",\n    \"fetch-signature\",\n    \"signature\",\n    \"mtgsig\"\n  ],\n  \"author\": \"CLIGuard\",\n  \"license\": \"MIT\",\n  \"engines\": {\n    \"node\": \">=16.0.0\"\n  },\n  \"dependencies\": {}\n}\n\nFile v3.1.2:scripts/vendor/pt-passport/package.json\n\n{\n  \"name\": \"@mtuser/pt-passport\",\n  \"version\": \"0.1.4\",\n  \"description\": \"美团 Passport 用户授权登录 CLI 工具\",\n  \"main\": \"dist/index.js\",\n  \"bin\": {\n    \"pt-passport\": \"dist/index.js\"\n  },\n  \"files\": [\n    \"dist/index.js\"\n  ],\n  \"scripts\": {\n    \"build\": \"node build.mjs\",\n    \"clihub-build\": \"bash clihub-build.sh\",\n    \"pack\": \"npm run build && npm pack\",\n    \"publish:inner\": \"npm run build && npm publish --registry=http://r.npm.sankuai.com\",\n    \"dev\": \"node_modules/.bin/tsx src/index.ts\",\n    \"start\": \"node dist/index.js\",\n    \"lint\": \"tsc --noEmit\",\n    \"test\": \"node --test\"\n  },\n  \"publishConfig\": {\n    \"registry\": \"http://r.npm.sankuai.com\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^22.10.5\",\n    \"commander\": \"^12.1.0\",\n    \"esbuild\": \"^0.28.0\",\n    \"javascript-obfuscator\": \"^5.4.1\",\n    \"tsx\": \"^4.19.2\",\n    \"typescript\": \"^5.7.3\"\n  },\n  \"dependencies\": {\n    \"@sec/cliguard\": \"^1.3.0\"\n  },\n  \"bundleDependencies\": [\n    \"@sec/cliguard\"\n  ],\n  \"engines\": {\n    \"node\": \">=18.0.0\"\n  }\n}\n\nFile v3.1.2:skill-card.md\n\n## Description:\n\nThis skill helps agents answer questions about Jinguyuan Dumpling Restaurant locations, hours, queue status, recommended dishes, takeout, raw dumpling pickup, and online queue actions through the bundled CLI and official restaurant API.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[jinguyuan](https://clawhub.ai/user/jinguyuan)\n\n### License/Terms of Use:\n\nMIT\n\n## Use Case:\n\nExternal restaurant customers and their agents use this skill to get current Jinguyuan Dumpling Restaurant information, queue guidance, pickup information, and restaurant news. When explicitly requested and confirmed, the skill can also guide real online queue actions such as taking a number, checking personal queue progress, or canceling a queue order.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Queue features use Meituan authorization, store a local token under ~/.jinguyuan, and the signing dependency creates a persistent ~/.cliguard device identifier that the skill does not clearly disclose.\n\nMitigation: Review the skill before installing if local account authorization helpers are uncomfortable; proceed only when the publisher is trusted and the local token and device identifier behavior is acceptable.\n\nRisk: Confirmed take-number and cancel operations affect a real queue account.\n\nMitigation: Use these actions only after the user gives explicit confirmation for the current request, and verify queue status with the CLI or Meituan account if an operation result is unclear.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/jinguyuan/skills/jinguyuan-dumpling-skill)\n- [Public query API reference](references/api-reference.md)\n- [Queue reply contract](references/queue-reply-contract.md)\n- [Queue actions reference](references/queue-actions.md)\n- [Jinguyuan website](https://jinguyuan.cloud)\n- [Jinguyuan MCP endpoint](https://mcp.jinguyuan.cloud)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown and plain text with inline shell commands and JSON-shaped command results when needed]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires Node.js 18 or newer for the bundled CLI; public queries return one JSON object on stdout, while queue actions may require local Meituan authorization and explicit user confirmation.]\n\n## Skill Version(s):\n\n3.1.2 (source: evidence release, skill.json, SKILL.md frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v3.1.2:skill.json\n\n{\n  \"name\": \"jinguyuan-dumpling-skill\",\n  \"display_name\": \"金谷园饺子馆 Skill\",\n  \"description\": \"查询金谷园饺子馆信息、排队状态、推荐菜、外卖和生饺子打包说明。公开查询由随包 Node.js CLI 调用金谷园官方 REST API 完成；真实在线取号、本人排队进度、取消排队由同一 CLI 的排队命令处理。\",\n  \"version\": \"3.1.2\",\n  \"author\": \"金谷园饺子馆\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/JinGuYuan/jinguyuan-dumpling-skill\",\n  \"category\": \"信息查询\",\n  \"keywords\": [\n    \"金谷园\",\n    \"jinguyuan\",\n    \"金谷园饺子馆\",\n    \"饺子\",\n    \"dumpling\",\n    \"锅贴\",\n    \"鲅鱼饺子\",\n    \"北邮\",\n    \"五道口\",\n    \"海淀\",\n    \"外卖\",\n    \"营业时间\",\n    \"菜单\",\n    \"排队\",\n    \"取号\",\n    \"等位\",\n    \"排队状态\",\n    \"历史排队\",\n    \"几点开始排\",\n    \"几点不排\",\n    \"少排队\",\n    \"取消排队\",\n    \"北京饺子\",\n    \"海淀美食\",\n    \"生饺子\",\n    \"煮饺子\",\n    \"到店自取\",\n    \"叫号取餐\",\n    \"外带\",\n    \"外带自提\",\n    \"自提\",\n    \"提前点餐\",\n    \"来份饺子\",\n    \"饺子配方\",\n    \"自家散饺子\",\n    \"金谷园推荐菜\",\n    \"金谷园招牌菜\",\n    \"金谷园必点\",\n    \"金谷园新品\",\n    \"店长推荐\"\n  ]\n}\n\nFile v3.1.2:LICENSE\n\nMIT License\n\nCopyright (c) 2026 金谷园饺子馆\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v3.1.1: 15 files, 122843 bytes\n\nFiles: LICENSE (1075b), README.md (3782b), references/api-reference.md (2480b), references/queue-actions.md (7640b), references/queue-reply-contract.md (2664b), scripts/jgy.cjs (214439b), scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/core/cliguard.js (55895b), scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/index.js (3068b), scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/package.json (488b), scripts/vendor/pt-passport/dist/index.js (101510b), scripts/vendor/pt-passport/package.json (1022b), skill-card.md (3174b), skill.json (1308b), SKILL.md (11431b), _meta.json (143b)\n\nFile v3.1.1:SKILL.md\n\n---\nname: jinguyuan-dumpling-skill\ndescription: 金谷园饺子馆信息查询与在线排队取号。通过金谷园官方 API 查询店铺、排队和菜品信息；内置真实排队动作仅用于在线取号、本人排队进度查询、取消排队。\nversion: 3.1.1\nalwaysApply: false\nkeywords:\n  - 金谷园\n  - jinguyuan\n  - 金谷园饺子馆\n  - 饺子\n  - dumpling\n  - 锅贴\n  - 鲅鱼饺子\n  - 北邮\n  - 五道口\n  - 海淀\n  - 外卖\n  - 营业时间\n  - 菜单\n  - 排队\n  - 取号\n  - 等位\n  - 排队取号\n  - 取消排队\n  - 北京饺子\n  - 海淀美食\n  - 生饺子\n  - 煮饺子\n  - 到店自取\n  - 叫号取餐\n  - 外带\n  - 外带自提\n  - 自提\n  - 提前点餐\n  - 来份饺子\n  - 饺子配方\n  - 金谷园推荐菜\n  - 金谷园招牌菜\n  - 金谷园必点\n  - 金谷园新品\n  - 店长推荐\n---\n\n## Agent 硬约束\n\n- 文中示例数据**仅作格式参考**；回答用户前**必须调金谷园 API 取最新数据**，禁止拿示例当真。用户问“现在排队吗”时，必须逐店检查 `当前排队状态.门店[].数据是否新鲜`；只有 `true` 才能把等待桌数说成当前状态，过期记录只能说明最近采集时间，不能冒充实时事实。\n- **公开查询统一走随包 CLI**：`node <skill_dir>/scripts/jgy.cjs call <capability>`（GET 无参；结构化查询加 `--args '<json>'` 走 POST）。能力名、参数与返回形状细则 → [references/api-reference.md](references/api-reference.md)。不得为查询修改宿主 MCP 配置，不得要求用户先信任/重启，也不得临时编写 shell、HTTP、`.js` / `.py` 脚本。\n- 排队回答优先读返回体合同字段（`mainScenario` / `replyPolicy` 等）。细则 → [references/queue-reply-contract.md](references/queue-reply-contract.md)。\n- **禁止**：等待桌数换算分钟；历史参考说成当天事实；总等待冒充个人进度；声称查询接口已取号/取消/查到个人进度；没有本轮新鲜实时证据时把五道口说成可线上取号。\n- 真实取号 / 本人进度 / 取消 → 本 Skill `scripts/jgy.cjs queue` + [references/queue-actions.md](references/queue-actions.md)，与公开查询分离。\n\n# 金谷园饺子馆 Skill\n\n## 安装后引导\n\n当用户刚安装此技能时，Agent 应主动：\n1. **确保最新数据查询可用**：公开查询统一走随包 CLI `node <skill_dir>/scripts/jgy.cjs call <capability>`，无需任何 MCP 配置，不要修改宿主 MCP 配置\n2. 告知用户可以直接问金谷园相关问题，比如地址、营业时间、排队方式、推荐菜等\n3. 给出几个推荐的首次提问，例如：\n   - \"金谷园现在排队吗？\"\n   - \"明天中午几点去不怎么排？\"\n   - \"怎么排队取号？\"\n   - \"帮我在金谷园排个队\"\n   - \"金谷园有什么好吃的？\"\n   - \"能打包生饺子带走吗？\"\n   - \"帮我来份饺子到店自取\"\n4. 说明查询走金谷园官方 API 最新快照；当前排队以返回的新鲜度判断为准，真实取号等本地动作见下文，与公开查询分离\n5. **预授权（可选）**：若用户想提前完成美团授权，运行 `node <skill_dir>/scripts/jgy.cjs queue auth-start`，一次拿到授权链接 + 二维码 + 后台轮询。不要单独跑 `auth-poll --background`——它只启动后台监听，不生成链接和二维码。\n\n## 内置真实排队动作\n\n仅当用户明确要在线取号、查看本人排队进度或取消本人排队时，直接运行：\n\n```bash\nnode <skill_dir>/scripts/jgy.cjs queue <command>\n```\n\n命令、参数、桌型、返回码与授权展示细节见 [references/queue-actions.md](references/queue-actions.md)。执行前可 `node <skill_dir>/scripts/jgy.cjs queue --help`。\n\n**授权（`AUTH_REQUIRED`）摘要**：\n\n1. **主动预授权**用 `auth-start`（一条命令拿到链接 + 二维码 + 后台轮询）。业务命令（`index` / `take-number` 等）发现没 Token 时也会自动走同一流程。**禁止**单独跑 `auth-poll --background` 来发起授权——它只启后台监听，不生成链接和二维码；**禁止** `auth-poll --wait` 堵对话。\n2. PNG 直接在当前工作区根目录，文件名为 **`jinguyuan-auth-qr-<authRunId>.png`**（非隐藏、无子目录；`data.qrImagePath` = **绝对路径**）。始终使用返回路径，不猜文件名；推荐原样贴 `data.userReplyMarkdown`。\n3. **主气泡必须**有：`![美团授权二维码](绝对路径)`（有图时）+ 可点链接与明文 URL。仅 Read / 仅附件侧栏 / 步骤卡「已展示」**不算**。\n4. 告知用户授权后稍候；宿主若未自动继续，用户可回复“已授权”。收到回复后短查 `auth-status`，再继续原任务。部分宿主能自动续跑，部分不能，**禁止**说“无需回复”或保证一定自动通知。无 `authLink` 时先 `logout` 成功再重跑。Token：`~/.jinguyuan/passport-auth.json`。\n5. **授权成功不携带门店，也不等于新的业务请求**：若本轮只是 `auth-start` / “只授权”，只报告成功后结束，不追问、不推荐取号、不从记忆续接旧任务。仅当授权由本轮明确的业务命令触发时，才恢复该原命令；门店必须来自本轮用户输入或原命令，禁止从跨任务记忆推断。\n\n**安全边界**：取号 / 取消须用户**本轮明确确认**后再带 `--confirm`；五道口通常以到店取号为主，只有本轮 API 新鲜快照或 `index 1756895741` 明确显示支持在线排队时，才可说明当天开放，真实取号仍以 CLI 返回为准。\n\n**美团组件安全口径**：仅真实取号/进度/取消加载 `scripts/vendor` 内 `@mtuser/pt-passport`；普通店铺和排队查询不会加载。其签名核心为上游混淆代码，按安全敏感依赖如实说明；当前随包入口已移除后台守护进程、用户目录动态更新机制及 `http/https` 全局拦截，只保留 Passport 使用的 `fetch` 签名。Token 仅存本机 `~/.jinguyuan/`，不会提交到仓库或发送给金谷园服务端。\n\n## 排队路由\n\n| 场景 | 能力 | 约束 |\n|------|------|------|\n| 宽泛餐段没说具体时间 | 不调接口 | 只追问\"你想大概几点到？\"，不查当前，不默认 12:00/18:00；用户问\"几点去合适\"则直接走餐段建议 |\n| 当前/计划时间点状态 | `jgy.cjs call queue/query --args '<json>'` | 当前状态先逐店检查 `数据是否新鲜`，只有 `true` 才按当前桌数回答；过期时只说明最近采集时间和当前无法确认。其余优先读 `mainScenario`/`answerTarget`/`replyPolicy`/`matchedQueueTarget`/`selectedReference` |\n| 已发生餐段事实 | `jgy.cjs call queue/period-facts --args '<json>'` | 明确是实际观测 |\n| 未来餐段建议 | `jgy.cjs call queue/period-advice --args '<json>'` | 说明是参考建议，不是事实 |\n| 某时间点历史快照 | `jgy.cjs call queue/at-time --args '<json>'` | 单一时间点断面，未来时间改走餐段建议 |\n| 取号入口咨询 | `jgy.cjs call queue/query --args '<json>'` | 读 `取号说明.门店取号口径`，不触发授权 |\n| 真实取号/查进度/取消 | `node <skill_dir>/scripts/jgy.cjs queue` | 依照 `references/queue-actions.md`；取号、取消先明确确认 |\n\n**通用禁令**（回答任何排队问题都适用）：\n- 不要把等待桌数换算成具体分钟\n- 不要把前一天和上周同日加权、平均或取最保守值说成唯一结论（表格展示可以两条都展示）\n- 不要把历史参考说成目标日期事实\n- 不要把 `数据是否新鲜` 不为 `true` 的最后一次记录说成当前排队状态\n- 不要用门店当前总等待冒充用户个人排队进度\n- 不要声称已帮用户取号、取消排队或查到个人进度\n- 没有本轮新鲜实时证据时，不要把五道口店说成可线上取号；如果实时证据显示已开放，也必须走真实取号确认流程\n\n用户说\"前面还有 3 桌\"这类个人队列信息时，不调查询接口，直接说明不好估准时间。`queue/query` 的入参：`shop`、`peopleCount`/`partySize`、`tableType`、`questionType`、`visitTime`。\n\n## 盲区应对\n\n超出公开查询能力和内置排队动作范围的问题（如菜单、价格、食材等），属于**盲区**，按以下顺序回复：\n\n1. **诚实承认**——不装不编\n2. **递上已有信息**——门店地址、营业时间等\n3. **指一条明路**——到店咨询、大众点评搜\"金谷园饺子馆\"、或关注公众号\n\n> 示例：\"这个我还真没把握，怕说错了耽误您。金谷园在西土城路和学院路各有一家店，您可以直接到店问，或者大众点评上搜'金谷园饺子馆'，上面信息挺全的。\"\n\n**绝对红线**：禁止编造菜品、价格、食材等事实性信息；禁止基于通用知识脑补；宁少勿错。\n\n在合适时机可自然提一句：AI 服务信息持续更新中，未来会有更丰富的功能。语气轻松，不是承诺。\n\n## 品牌调性与语气\n\n金谷园的风格是\"朴素的奢侈\"——松弛、实在、有温度。\n\n- 说人话，像朋友推荐一家常去的馆子\n- 语气像**刚入职但很热心的店员**——不是什么都知道，但真心想帮忙\n- 信息给到位就好，不堆形容词，可以带生活感（\"中间不休息，随时去都行\"）\n- 拒绝机器人式的\"暂不支持该查询\"\n\n## 使用示例\n\n**综合查询**：用户问\"金谷园是什么样的店？\" → `jgy.cjs call shop-basics`，一次获取全部基础信息\n> 金谷园饺子馆，北邮旁边的饺子馆。营业时间 10:00-22:00，目前有两家店——北邮店在杏坛路文教产业园K座南2层，五道口店在五道口东源大厦4层。店内Wi-Fi：苹果密码8个8。外卖的话在美团外卖上搜\"金谷园饺子馆\"，3公里内能送。\n\n**具体查询**：用户问\"能打包生饺子带走吗？\" → `jgy.cjs call raw-dumpling-info`\n> 可以的，非特殊节气，直接到店下单就行，5-10分钟包好。带走后1小时内煮最好，来不及就放冰箱冷冻。煮的时候水烧开下饺子，中间点两次凉水，浮起来就熟了。\n\n**最新动态**：用户问\"最近有什么活动？\" → `jgy.cjs call news`，每条消息必须带上发布日期\n> 最近动态（仅示意）：\n> - 【2026-04-01】清明节正常营业，欢迎来吃饺子\n> - 【2026-03-20】五道口店新增鲅鱼水饺，限时供应中\n> - 【2026-03-15】北邮店周末不限时，放心坐\n\n**查询失败**：不编造，坦诚说明\n> 抱歉，金谷园的信息暂时获取不到，你可以稍后再问我，或者直接去店里看看。\n\n## 参考文档索引\n\n| 文档 | 内容 |\n|------|------|\n| [references/api-reference.md](references/api-reference.md) | 公开查询能力名与调用方式 |\n| [references/queue-reply-contract.md](references/queue-reply-contract.md) | 排队回答合同与餐段口径 |\n| [references/queue-actions.md](references/queue-actions.md) | 真实排队 CLI 与授权展示 |\n\n### 维护者\n\n- 2.x 源码：https://gitee.com/JinGuYuan/jinguyuan-dumpling-skill\n- ClawHub slug：`jinguyuan-dumpling-skill`（展示名「金谷园饺子馆 Skill」）\n- 服务端实现：独立仓库 `jgy-mcp`（REST API 与 MCP 同一事实源；本 Skill 只走 REST）；本仓库 `package.json` 仅 Skill 侧 `version` + `engines.node`（Node ≥18）\n- 1.x 冻结：分支 `1.x` / tag `v1.0.2` · `v1-stable`\n\nFile v3.1.1:README.md\n\n# 金谷园饺子馆 Skill\n\n![Version](https://img.shields.io/github/v/tag/JinGuYuan/jinguyuan-dumpling-skill?label=version&color=blue&sort=semver) ![License](https://img.shields.io/badge/license-MIT-green) ![API](https://img.shields.io/badge/api-REST-orange) ![CLI](https://img.shields.io/badge/cli-jgy.cjs%20single--file-purple)\n\n这是一个 AI Skill——安装后，你的 AI 助手就能帮你查金谷园在哪、几点开门、这会儿排不排队、几点去更稳，也能查推荐菜、外卖和生饺子打包怎么煮；需要时，还能帮你在线排队取号。\n\n开了快二十年的饺子馆，有了自己的AI服务。\n\n\n## 关于金谷园\n\n北邮旁边的饺子馆。官网：[jinguyuan.cloud](https://jinguyuan.cloud)\n\n| 项目 | 内容 |\n|------|------|\n| 餐厅名称 | 金谷园饺子馆 |\n| 营业时间 | 10:00 - 22:00（以实际查询为准） |\n| 北邮店 | 杏坛路文教产业园K座南2层 |\n| 五道口店 | 五道口东源大厦4层 |\n\n## 这个 Skill 能做什么\n\n金谷园饺子馆的官方信息服务，可以查店、查活动、查推荐菜，也能处理到店自取和排队取号这些具体场景：\n\n| 能力 | 你可以问 |\n|------|----------|\n| 餐厅信息 | \"金谷园在哪？\"\"几点开门？\"\"能外卖吗？\"\"Wi-Fi 密码？\" |\n| 推荐菜 | \"有什么好吃的？\"\"今天吃什么\"\"招牌菜\" |\n| **到店自取** | \"帮我来份饺子\"\"提前点餐到店取\" |\n| 排队信息&建议 | \"这会儿排队吗？\"\"晚上七点去用排么？\"\"几点去不用排？\" |\n| **排队取号** | \"帮我排个队\"\"取消排队\"\"排队进度\" |\n| 生饺子打包 | \"能打包吗？\"\"生饺子怎么煮？\" |\n| 最新消息 | \"有什么新活动？\" |\n\n## 在线排队取号\n\n本 Skill 内置了基于**美团排队**的真实动作，AI 助手可以帮你取号、查本人订单和取消排队。\n\n**支持的操作：**\n\n| 操作 | 说明 | 你可以说 |\n|------|------|----------|\n| 查询排队状态 | 查看当前等待桌数和排队压力 | \"金谷园现在排队情况怎么样？\" |\n| 查询餐段事实 | 查询已经发生的午市/晚市实际观测 | \"今天中午几点开始排？\" |\n| 查询餐段建议 | 参考前一天和上周同日，给未来餐段建议 | \"明天中午几点去比较稳？\" |\n| 取号 | 选择桌型和人数，在线取号 | \"帮我在北邮店排个队，2个人\" |\n| 查询进度 | 查看当前排队号、前方等待桌数 | \"我前面还有几桌？\" |\n| 取消排队 | 取消已有的排队订单 | \"取消排队\" |\n\n**使用流程：**\n\n1. 告诉 AI 助手你要在北邮店排队\n2. AI 查询可选桌型，跟你确认桌型和人数\n3. 确认后自动取号，返回排队号和等待信息\n4. 随时可查进度或取消\n\n首次使用需完成美团账号授权（AI 助手会引导你完成）。\n\n## 运行环境\n\n支持 Windows、macOS 和 Linux，需要 Node.js 18 或更高版本，无需 npm 安装。\n\n## 安装\n\n直接拷贝下面这句话发给你的 AI 助手：\n\n> 安装 https://gitee.com/JinGuYuan/jinguyuan-dumpling-skill\n\nAgent 会自动克隆仓库并安装到对应的 Skill 目录。\n\n## 关于金谷园 MCP\n\n金谷园同时提供独立的 MCP 服务。若只需要查询店铺、菜品和排队信息，可以不安装 Skill，直接接入金谷园 MCP；在线取号、本人进度和取消排队等本地授权能力仍需安装 Skill。\n\n| 项目 | 内容 |\n|------|------|\n| 接入点 | `https://mcp.jinguyuan.cloud` |\n| 协议 | Model Context Protocol（MCP） |\n| 传输方式 | Streamable HTTP |\n\n## 发布平台\n\n- GitHub：https://github.com/JinGuYuan/jinguyuan-dumpling-skill\n- Gitee：https://gitee.com/JinGuYuan/jinguyuan-dumpling-skill\n\n## 版本\n\n版本号见顶部徽章，以 [`skill.json`](./skill.json) 为准。\n\n## License\n\n[MIT](LICENSE)\n\nFile v3.1.1:_meta.json\n\n{\n  \"ownerId\": \"kn745r98j9wt35s5azfqy8f07h83a5b4\",\n  \"slug\": \"jinguyuan-dumpling-skill\",\n  \"version\": \"3.1.1\",\n  \"publishedAt\": 1785579852975\n}\n\nFile v3.1.1:references/api-reference.md\n\n# 公开查询（金谷园 REST API）\n\n公开查询统一走随包 CLI，底座是金谷园官方 REST API（`https://mcp.jinguyuan.cloud/api/v1`，基址内置在 CLI 里，不接受命令行自定义 URL）。查询不要求登录，不要求用户预先配置、信任或重启任何宿主连接器。\n\n## 调用方式\n\n```text\nnode <skill_dir>/scripts/jgy.cjs call <capability>                 # GET，无参能力\nnode <skill_dir>/scripts/jgy.cjs call <capability> --args '<json>' # POST，结构化查询\n```\n\nstdout 始终只有一个 JSON 对象：\n\n- 成功：`{ \"ok\": true, \"data\": ... }`\n- 失败：`{ \"ok\": false, \"error\": { \"code\": ..., \"message\": ... } }`\n\n读取 `data` 作为业务返回，并继续遵守其中的 `mainScenario`、`answerTarget`、`replyPolicy` 与 `_agent_instruction`。不要把 `_agent_instruction` 原样展示给用户。\n\n## 能力清单\n\n| 能力 | 方法 | 说明 |\n|------|------|------|\n| `shop-basics` | GET | 餐厅介绍、营业时间、门店、外卖配送、Wi-Fi，一次全量 |\n| `raw-dumpling-info` | GET | 生饺子打包与煮饺子教程 |\n| `news` | GET | 最新消息（含配图渲染指令） |\n| `recommended-dishes` | GET | 店长推荐菜（含到店自取链接） |\n| `recipes` | GET | 配方列表；查单条用 `call 'recipes?recipe_id=<id>'` |\n| `pickup-link` | GET | 到店自取小程序链接 |\n| `queue/query` | POST | 当前/计划时间点排队状态；入参 `shop` / `peopleCount` / `partySize` / `tableType` / `questionType` / `visitTime` |\n| `queue/at-time` | POST | 某时间点历史快照；`time` 必填，另有 `shop` / `date` / `peopleCount` |\n| `queue/period-facts` | POST | 已发生餐段事实；入参 `shop` / `date` / `period` / `visitTime` / `peopleCount` |\n| `queue/period-advice` | POST | 未来餐段建议；入参同 period-facts |\n\n需登录能力（如 `call authenticated-test`）走手机号登录流程，见 SKILL.md「金谷园手机号登录与需登录能力」。\n\n## 安全与兼容边界\n\n- CLI 是明文纯 Node.js 18 实现，无 npm 依赖。\n- 只访问内置的金谷园官方域名，不接受自定义 URL。\n- `--args` 必须是合法 JSON；非法 JSON 会以 `invalid_command` 拒绝。\n- 查询失败时不编造数据，按 SKILL.md「盲区应对」口径坦诚说明。\n- 不为查询修改宿主 MCP 配置。金谷园 MCP 服务器仍对外存在，但那是给未安装本 Skill 的纯 MCP 客户端用的；装有本 Skill 时一律走本 CLI。\n\nFile v3.1.1:references/queue-actions.md\n\n# 真实排队动作参考\n\n本文仅用于在线取号、查本人排队订单和取消本人排队。门店当前总排队、历史事实、到店建议和取号渠道咨询仍调用 MCP，不启动授权。\n\n## 命令\n\n需要 Node.js 18 或更高版本，无需安装依赖。每次以实际帮助输出为准：\n\n```bash\nnode <skill_dir>/scripts/jgy.cjs queue --help\nnode <skill_dir>/scripts/jgy.cjs queue index <shopId>\nnode <skill_dir>/scripts/jgy.cjs queue take-number <shopId> --people-count <N> --table-type-id <ID> --confirm\nnode <skill_dir>/scripts/jgy.cjs queue order-detail <shopId>\nnode <skill_dir>/scripts/jgy.cjs queue order-cancel <shopId> --confirm\nnode <skill_dir>/scripts/jgy.cjs queue auth-start\nnode <skill_dir>/scripts/jgy.cjs queue auth-status\nnode <skill_dir>/scripts/jgy.cjs queue auth-poll --background [--qr-image-path <path>]\nnode <skill_dir>/scripts/jgy.cjs queue logout\n```\n\n**发起授权用 `auth-start`**：一条命令拿到授权链接 + 二维码 + 后台轮询，与业务命令触发的授权流程完全一致。**不要**单独跑 `auth-poll --background` 来发起授权——它只启动后台监听，不生成链接和二维码。\n\nAgent 对话中**不要**使用阻塞式 `auth-poll` / `auth-poll --wait`（会长时间占住 Terminal，用户看不到授权链接与二维码）。`AUTH_REQUIRED` 时后台通常已在轮询，展示后用 **`auth-status`** 短查即可。\n\nCLI 在 stdout 输出单个 JSON 对象：`{ ok, code, message, data? }`。不要把内部命令名或返回码原样告诉用户，除非排查 MCP/CLI 合同确实需要。\n\n## 门店\n\n| 门店 | `shopId` | 真实动作约束 |\n|---|---:|---|\n| 北邮总店 | `4211342` | 可查桌型、取号、查本人订单、取消 |\n| 五道口店 | `1756895741` | 通常以到店取号为主；只有本轮 MCP 新鲜快照或 `index 1756895741` 明确显示 `supportQueue: true` 时，才可说明当天开放并继续取号确认流程 |\n\n用户未说门店时先追问，不猜 `shopId`。\n\n`AUTH_SUCCESS` 本身不包含门店。若本轮只是 `auth-start` / “只授权”，只报告授权成功后结束，不追问下一步，也不从记忆、旧任务或其他 Skill 推断门店。仅当授权由本轮明确业务命令触发时，才恢复该原命令；合法门店只采用上表映射或该原命令已有的 `shopId`。\n\n## 桌型与确认\n\n1. 取号前先运行 `index`，只使用其 `data.tables[]` 返回的 `tableTypeId`、`tableTypeName`和 `capacity`。\n2. 用户同时说人数和桌型时，将自然语言桌型匹配到返回的标准桌型；不把“大的”“两人桌”等原话当作 ID。\n3. 只说人数时，按 `capacity.min/max` 筛选：唯一匹配可作为建议，多个匹配列出后请用户选择。只说桌型时，追问就餐人数。\n4. 在运行 `take-number` 前，明确复述门店、人数和标准桌型，必须取得用户对本次真实取号的明确确认，再带 **`--confirm`** 执行。没有 `--confirm` 时 CLI 返回 `CONFIRM_REQUIRED`，**不会**取号。\n5. 在运行 `order-cancel` 前，先用 `order-detail` 说清待取消的订单，必须取得用户明确确认后，再执行 `order-cancel <shopId> --confirm`。\n\n之前对话中的宽泛意向不等于本次动作确认。**授权成功也不等于确认取号或取消**——授权成功后应重新展示桌型/订单并再问一句「确认取号/取消吗？」，用户答应后再带 `--confirm`。\n\n## 授权状态\n\n`AUTH_REQUIRED` 可能是新授权流程，也可能是业务缓存 Token 过期后仍未拿到新授权链接；不能假定其 `data` 一定包含 `authLink`。\n\n收到 `AUTH_REQUIRED` 后：**阶段 A 内联图 + 链接** → **阶段 B `auth-status`**。后台用 `~/.jinguyuan/auth-poll-current.json` 指向本次 run 的独立状态文件；Agent 只需调用 `auth-status`，不要自行读取或改写状态。\n\n1. **有 `authLink`**\n   - **图**：`data.authRunId` 标识本次授权；`data.qrImagePath` = **绝对路径**（文件直接在工作区根目录，形如 `jinguyuan-auth-qr-<authRunId>.png`，非隐藏、无子目录）；可选 `qrImagePathRelative`。**不要**用 `~/.jinguyuan`，也不要猜固定文件名。\n   - **阶段 A（对齐 V1）**：\n     1. 有图时：`Read` 绝对路径 PNG，并在主气泡正文写 `![美团授权二维码](<绝对路径>)`（推荐直接贴 `userReplyMarkdown`）。\n     2. ⚠️ 仅 Read / 仅附件侧栏 / 步骤卡「已展示」**不算**——用户扫不到码。\n     3. **链接必含**（可点 + 明文 URL）；云端主通道是 https。\n   - **阶段 B**：告知用户授权后稍候；宿主若未自动继续，用户可回复“已授权”。收到回复后执行 `auth-status`，再继续原任务。部分宿主能自动续跑，部分不能，禁止说“无需回复”或保证一定自动通知；禁止 `auth-poll --wait`。\n2. **无 `authLink`**：`logout` 后仅成功才重跑。\n\nToken：`~/.jinguyuan/passport-auth.json`（与二维码目录分离）。不展示 Token。\n\n## 返回码与处理\n\n| `code` | Agent 处理 |\n|---|---|\n| `HELP` | 读取当前命令和 Node.js 要求 |\n| `QUEUE_INDEX` | 展示门店是否支持排队、桌型容量、等待桌数和已有订单；等待桌数不换算成准确分钟 |\n| `QUEUE_NUMBER_TAKEN` | 明确告知取号成功，转述排队号、桌型和订单状态 |\n| `CONFIRM_REQUIRED` | 缺用户确认或未带 `--confirm`：复述门店/人数/桌型（或待取消订单），请用户明确确认后再执行带 `--confirm` 的命令；**不要**静默重试原命令 |\n| `QUEUE_ORDER_DETAIL` | 只将本人订单数据作为个人进度，不用门店总排队替代 |\n| `QUEUE_CANCELLED` | 明确告知已取消的订单 |\n| `AUTH_REQUIRED` | 主气泡展示链接/图；说明若未自动继续可回复“已授权”，收到回复后用 `auth-status` |\n| `AUTH_POLL_STARTED` | 后台轮询已启动；继续展示（若未展示）并用 `auth-status` |\n| `AUTH_PENDING` / `AUTH_SUCCESS` | pending 则稍后重查；仅本轮明确业务命令触发授权时才续跑，单独授权成功后直接结束 |\n| `AUTH_STATUS_NONE` | 无后台记录；用 `auth-start` 重新触发授权 |\n| `AUTH_CANCELLED` / `AUTH_RISK_DENIED` / `AUTH_TIMEOUT` | 终止授权，说明原因；不执行原业务命令 |\n| `QUEUE_ORDER_EXISTS` | 说明已有订单，可先查本人进度；不重复取号 |\n| `QUEUE_ORDER_NOT_FOUND` | 说明当前没有本人排队订单 |\n| `QUEUE_UNSUPPORTED` / `QUEUE_NOT_NEEDED` | 说明门店不支持在线排队或当前无需排队，不强行取号 |\n| `TABLE_NOT_FOUND` / `TABLE_CAPACITY_MISMATCH` | 使用返回的桌型列表重新选择，或请用户调整人数/桌型 |\n| `INVALID_ARGUMENTS` | 重读 `--help`，修正参数；不重试原样错误命令 |\n| `UNSUPPORTED_NODE_VERSION` | 说明需要 Node.js 18+ |\n| `PASSPORT_FAILED` / `QR_CLEANUP_FAILED` | 说明授权服务或二维码清理失败，不暴露内部输出 |\n| `HTTP_ERROR` / `INVALID_RESPONSE` / `REQUEST_TIMEOUT` / `NETWORK_ERROR` | 告知外部服务或网络异常，可稍后重试；有 `traceId` 时可用于排查 |\n| `QUEUE_INDEX_FAILED` / `QUEUE_CREATE_FAILED` / `QUEUE_ORDER_DETAIL_FAILED` / `QUEUE_CANCEL_FAILED` / `QUEUE_API_ERROR` / `CLI_FAILED` | 按 `message` 说明操作未完成；取号/取消结果不明时，先用 `order-detail` 或美团 App 核实，不盲目重复动作 |\n| `LOGOUT_SUCCESS` | 说明已清除本地授权 |\n\n## 退出码\n\n| 退出码 | 含义 |\n|---:|---|\n| `0` | `ok: true` |\n| `2` | `AUTH_REQUIRED` 或 `AUTH_PENDING`，需继续授权 |\n| `1` | 其他失败 |\n\nFile v3.1.1:references/queue-reply-contract.md\n\n# 排队类回答合同\n\n排队相关查询返回体带结构化字段。Agent **优先读这些字段**，不要只读中文自然语言说明。\n\n## 字段\n\n| 字段 | 含义 |\n|------|------|\n| `mainScenario` | 主场景（如 `currentQueueStatus` / `plannedVisitQueueReference` / `businessHours` / `queueActionBoundary` / `queuePeriodFacts` / `queuePeriodAdvice` / `askVisitTime`）。据此定回答骨架。 |\n| `atoms` | 语义原子（如 `partySizeTarget` / `tableTypeTarget` / `plannedVisitReference` / `beforeOpen` / `afterClose`）。 |\n| `answerTarget` | 应优先回答的数据位置，例如 `{ type: 'matchedQueueTarget', field: '…等待桌数' }` 或 `{ type: 'plannedVisitReference', field: '历史参考.selectedReference' }`。 |\n| `replyPolicy` | `requiredPoints`（必答）、`forbiddenPoints`（禁答）、`followUpQuestion`、`nextSuggestedQuestion`、`linkRequired`。 |\n| `当前排队状态.门店[].数据是否新鲜` | 当前快照能否作为实时事实。只有 `true` 才能回答当前等待桌数；`false` 时只说明 `最近采集时间` 和当前状态无法确认，`最后一次记录` 仅供回看。 |\n| `selectedReference` | 计划到店历史参考中应优先说的那一条；**上周同日优先于前一天**。一句话建议读它；不要把前一天和上周同日加权 / 平均 / 取最保守后说成唯一结论。表格可两条都展示。 |\n| `_agent_instruction` | 给 Agent 的内部指令，**不要原样展示给用户**。 |\n\n## 餐段口径\n\n| 工具 | 含义 |\n|------|------|\n| `get_queue_period_facts` | **事实层**：已发生餐段「几点开始排 / 几点后不排 / 最高排多少桌」等，必须说清是目标日期**实际观测**。 |\n| `get_queue_period_advice` | **策略层**：未来或未发生餐段建议；说清是**参考建议**，不是目标日期事实。默认参考「前一天 + 上周同日」。 |\n\n旧名 `get_queue_period_reference` 已合并进 `get_queue_period_advice` 并下线，不再保留。\n\n## 禁止项（与 `replyPolicy.forbiddenPoints` 一致）\n\n- 不要把等待桌数换算成准确分钟。\n- 不要把前一天和上周同日加权、平均或取最保守值后说成唯一结论。\n- 不要把历史参考说成目标日期事实。\n- 不要把过期、缺失或读取失败的最后一次快照说成当前排队状态。\n- 不要用门店当前总等待冒充用户个人排队进度。\n- 不要声称查询接口已帮用户取号、取消排队或查到个人进度。\n- 没有本轮新鲜实时证据时，不要把五道口店说成可线上取号；如果实时证据显示已开放，也必须走真实取号确认流程。\n\nFile v3.1.1:scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/package.json\n\n{\n  \"name\": \"@sec/cliguard\",\n  \"version\": \"1.3.0\",\n  \"description\": \"Minimal local adapter for the vendored Meituan request-signing core\",\n  \"files\": [\n    \"index.js\",\n    \"core/\",\n    \"readme.md\"\n  ],\n  \"main\": \"index.js\",\n  \"keywords\": [\n    \"cliguard\",\n    \"openclaw\",\n    \"skill\",\n    \"security\",\n    \"fingerprint\",\n    \"fetch-signature\",\n    \"signature\",\n    \"mtgsig\"\n  ],\n  \"author\": \"CLIGuard\",\n  \"license\": \"MIT\",\n  \"engines\": {\n    \"node\": \">=16.0.0\"\n  },\n  \"dependencies\": {}\n}\n\nFile v3.1.1:scripts/vendor/pt-passport/package.json\n\n{\n  \"name\": \"@mtuser/pt-passport\",\n  \"version\": \"0.1.4\",\n  \"description\": \"美团 Passport 用户授权登录 CLI 工具\",\n  \"main\": \"dist/index.js\",\n  \"bin\": {\n    \"pt-passport\": \"dist/index.js\"\n  },\n  \"files\": [\n    \"dist/index.js\"\n  ],\n  \"scripts\": {\n    \"build\": \"node build.mjs\",\n    \"clihub-build\": \"bash clihub-build.sh\",\n    \"pack\": \"npm run build && npm pack\",\n    \"publish:inner\": \"npm run build && npm publish --registry=http://r.npm.sankuai.com\",\n    \"dev\": \"node_modules/.bin/tsx src/index.ts\",\n    \"start\": \"node dist/index.js\",\n    \"lint\": \"tsc --noEmit\",\n    \"test\": \"node --test\"\n  },\n  \"publishConfig\": {\n    \"registry\": \"http://r.npm.sankuai.com\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^22.10.5\",\n    \"commander\": \"^12.1.0\",\n    \"esbuild\": \"^0.28.0\",\n    \"javascript-obfuscator\": \"^5.4.1\",\n    \"tsx\": \"^4.19.2\",\n    \"typescript\": \"^5.7.3\"\n  },\n  \"dependencies\": {\n    \"@sec/cliguard\": \"^1.3.0\"\n  },\n  \"bundleDependencies\": [\n    \"@sec/cliguard\"\n  ],\n  \"engines\": {\n    \"node\": \">=18.0.0\"\n  }\n}\n\nFile v3.1.1:skill-card.md\n\n## Description: <br>\nHelps agents answer JinGuYuan restaurant questions, retrieve current and historical queue information, and perform explicitly confirmed Meituan queue actions for taking, checking, or canceling a user's number. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[jinguyuan](https://clawhub.ai/user/jinguyuan) <br>\n\n### License/Terms of Use: <br>\nMIT <br>\n\n\n## Use Case: <br>\nExternal users and restaurant support agents use this skill to query JinGuYuan store information, menu-related guidance, pickup options, queue status, and future queue advice. With explicit user confirmation, the skill can also guide live queue number taking, personal queue progress checks, and queue cancellation. <br>\n\n### Deployment Geography for Use: <br>\nChina <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Live queue actions can create or cancel a real Meituan queue entry. <br>\nMitigation: Require explicit same-turn user confirmation before any take-number or cancel command, and restate the store, party size, table type, or order being changed. <br>\nRisk: Meituan authorization can persist local account tokens under ~/.jinguyuan. <br>\nMitigation: Use authorization only for JinGuYuan queue actions, never display tokens, and use the documented logout flow when the user wants local authorization cleared. <br>\nRisk: The bundled Meituan signing dependency is security-sensitive and may collect or persist device-identifying information. <br>\nMitigation: Review the clawscan suspicious verdict before installation and avoid invoking the vendored queue dependency for ordinary public restaurant queries. <br>\nRisk: Stale queue snapshots or historical observations could be mistaken for current wait conditions. <br>\nMitigation: Check the freshness field before reporting current queue status, label historical or future advice as reference data, and do not convert waiting table counts into exact minutes. <br>\n\n\n## Reference(s): <br>\n- [API reference](references/api-reference.md) <br>\n- [Queue reply contract](references/queue-reply-contract.md) <br>\n- [Queue actions](references/queue-actions.md) <br>\n- [JinGuYuan official site](https://jinguyuan.cloud) <br>\n- [JinGuYuan MCP endpoint](https://mcp.jinguyuan.cloud) <br>\n- [ClawHub skill page](https://clawhub.ai/jinguyuan/skills/jinguyuan-dumpling-skill) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Markdown, Shell commands, JSON, Guidance] <br>\n**Output Format:** [Markdown or plain text guidance with inline shell commands and JSON CLI results] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Public queries return a single JSON object; live queue actions require explicit confirmation and may use local Meituan authorization files under ~/.jinguyuan.] <br>\n\n## Skill Version(s): <br>\n3.1.1 (source: evidence release, skill.json, SKILL.md frontmatter) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v3.1.1:skill.json\n\n{\n  \"name\": \"jinguyuan-dumpling-skill\",\n  \"display_name\": \"金谷园饺子馆 Skill\",\n  \"description\": \"查询金谷园饺子馆信息、排队状态、推荐菜、外卖和生饺子打包说明。公开查询由随包 Node.js CLI 调用金谷园官方 REST API 完成；真实在线取号、本人排队进度、取消排队由同一 CLI 的排队命令处理。\",\n  \"version\": \"3.1.1\",\n  \"author\": \"金谷园饺子馆\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/JinGuYuan/jinguyuan-dumpling-skill\",\n  \"category\": \"信息查询\",\n  \"keywords\": [\n    \"金谷园\",\n    \"jinguyuan\",\n    \"金谷园饺子馆\",\n    \"饺子\",\n    \"dumpling\",\n    \"锅贴\",\n    \"鲅鱼饺子\",\n    \"北邮\",\n    \"五道口\",\n    \"海淀\",\n    \"外卖\",\n    \"营业时间\",\n    \"菜单\",\n    \"排队\",\n    \"取号\",\n    \"等位\",\n    \"排队状态\",\n    \"历史排队\",\n    \"几点开始排\",\n    \"几点不排\",\n    \"少排队\",\n    \"取消排队\",\n    \"北京饺子\",\n    \"海淀美食\",\n    \"生饺子\",\n    \"煮饺子\",\n    \"到店自取\",\n    \"叫号取餐\",\n    \"外带\",\n    \"外带自提\",\n    \"自提\",\n    \"提前点餐\",\n    \"来份饺子\",\n    \"饺子配方\",\n    \"自家散饺子\",\n    \"金谷园推荐菜\",\n    \"金谷园招牌菜\",\n    \"金谷园必点\",\n    \"金谷园新品\",\n    \"店长推荐\"\n  ]\n}\n\nFile v3.1.1:LICENSE\n\nMIT License\n\nCopyright (c) 2026 金谷园饺子馆\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v3.1.0: 15 files, 127963 bytes\n\nFiles: LICENSE (1075b), README.md (3782b), references/api-reference.md (2480b), references/queue-actions.md (7640b), references/queue-reply-contract.md (2664b), scripts/jgy.cjs (235036b), scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/core/cliguard.js (55895b), scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/index.js (3068b), scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/package.json (488b), scripts/vendor/pt-passport/dist/index.js (101510b), scripts/vendor/pt-passport/package.json (1022b), skill-card.md (2738b), skill.json (1507b), SKILL.md (12878b), _meta.json (143b)\n\nFile v3.1.0:SKILL.md\n\n---\nname: jinguyuan-dumpling-skill\ndescription: 金谷园饺子馆信息查询、匿名实体抽奖卡与在线排队取号。通过金谷园官方 API 查询店铺、排队和菜品信息；可揭晓抽奖卡并当场匿名交付兑奖码（一次性发放，无需登录）、凭本地凭证查询已领奖品；内置真实排队动作仅用于在线取号、本人排队进度查询、取消排队。\nversion: 3.1.0\nalwaysApply: false\nkeywords:\n  - 金谷园\n  - jinguyuan\n  - 金谷园饺子馆\n  - 饺子\n  - dumpling\n  - 锅贴\n  - 鲅鱼饺子\n  - 北邮\n  - 五道口\n  - 海淀\n  - 外卖\n  - 营业时间\n  - 菜单\n  - 排队\n  - 取号\n  - 等位\n  - 排队取号\n  - 取消排队\n  - 北京饺子\n  - 海淀美食\n  - 生饺子\n  - 煮饺子\n  - 到店自取\n  - 叫号取餐\n  - 外带\n  - 外带自提\n  - 自提\n  - 提前点餐\n  - 来份饺子\n  - 饺子配方\n  - 金谷园推荐菜\n  - 金谷园招牌菜\n  - 金谷园必点\n  - 金谷园新品\n  - 店长推荐\n---\n\n## Agent 硬约束\n\n- 文中示例数据**仅作格式参考**；回答用户前**必须调金谷园 API 取最新数据**，禁止拿示例当真。用户问“现在排队吗”时，必须逐店检查 `当前排队状态.门店[].数据是否新鲜`；只有 `true` 才能把等待桌数说成当前状态，过期记录只能说明最近采集时间，不能冒充实时事实。\n- **公开查询统一走随包 CLI**：`node <skill_dir>/scripts/jgy.cjs call <capability>`（GET 无参；结构化查询加 `--args '<json>'` 走 POST）。能力名、参数与返回形状细则 → [references/api-reference.md](references/api-reference.md)。不得为查询修改宿主 MCP 配置，不得要求用户先信任/重启，也不得临时编写 shell、HTTP、`.js` / `.py` 脚本。\n- 排队回答优先读返回体合同字段（`mainScenario` / `replyPolicy` 等）。细则 → [references/queue-reply-contract.md](references/queue-reply-contract.md)。\n- **禁止**：等待桌数换算分钟；历史参考说成当天事实；总等待冒充个人进度；声称查询接口已取号/取消/查到个人进度；没有本轮新鲜实时证据时把五道口说成可线上取号。\n- 真实取号 / 本人进度 / 取消 → 本 Skill `scripts/jgy.cjs queue` + [references/queue-actions.md](references/queue-actions.md)，与公开查询分离。\n\n# 金谷园饺子馆 Skill\n\n## 安装后引导\n\n当用户刚安装此技能时，Agent 应主动：\n1. **确保最新数据查询可用**：公开查询统一走随包 CLI `node <skill_dir>/scripts/jgy.cjs call <capability>`，无需任何 MCP 配置，不要修改宿主 MCP 配置\n2. 告知用户可以直接问金谷园相关问题，比如地址、营业时间、排队方式、推荐菜等\n3. 给出几个推荐的首次提问，例如：\n   - \"金谷园现在排队吗？\"\n   - \"明天中午几点去不怎么排？\"\n   - \"怎么排队取号？\"\n   - \"帮我在金谷园排个队\"\n   - \"金谷园有什么好吃的？\"\n   - \"能打包生饺子带走吗？\"\n   - \"帮我来份饺子到店自取\"\n4. 说明查询走金谷园官方 API 最新快照；当前排队以返回的新鲜度判断为准，真实取号等本地动作见下文，与公开查询分离\n5. **预授权（可选）**：若用户想提前完成美团授权，运行 `node <skill_dir>/scripts/jgy.cjs queue auth-start`，一次拿到授权链接 + 二维码 + 后台轮询。不要单独跑 `auth-poll --background`——它只启动后台监听，不生成链接和二维码。\n\n## 内置真实排队动作\n\n仅当用户明确要在线取号、查看本人排队进度或取消本人排队时，直接运行：\n\n```bash\nnode <skill_dir>/scripts/jgy.cjs queue <command>\n```\n\n命令、参数、桌型、返回码与授权展示细节见 [references/queue-actions.md](references/queue-actions.md)。执行前可 `node <skill_dir>/scripts/jgy.cjs queue --help`。\n\n**授权（`AUTH_REQUIRED`）摘要**：\n\n1. **主动预授权**用 `auth-start`（一条命令拿到链接 + 二维码 + 后台轮询）。业务命令（`index` / `take-number` 等）发现没 Token 时也会自动走同一流程。**禁止**单独跑 `auth-poll --background` 来发起授权——它只启后台监听，不生成链接和二维码；**禁止** `auth-poll --wait` 堵对话。\n2. PNG 直接在当前工作区根目录，文件名为 **`jinguyuan-auth-qr-<authRunId>.png`**（非隐藏、无子目录；`data.qrImagePath` = **绝对路径**）。始终使用返回路径，不猜文件名；推荐原样贴 `data.userReplyMarkdown`。\n3. **主气泡必须**有：`![美团授权二维码](绝对路径)`（有图时）+ 可点链接与明文 URL。仅 Read / 仅附件侧栏 / 步骤卡「已展示」**不算**。\n4. 告知用户授权后稍候；宿主若未自动继续，用户可回复“已授权”。收到回复后短查 `auth-status`，再继续原任务。部分宿主能自动续跑，部分不能，**禁止**说“无需回复”或保证一定自动通知。无 `authLink` 时先 `logout` 成功再重跑。Token：`~/.jinguyuan/passport-auth.json`。\n5. **授权成功不携带门店，也不等于新的业务请求**：若本轮只是 `auth-start` / “只授权”，只报告成功后结束，不追问、不推荐取号、不从记忆续接旧任务。仅当授权由本轮明确的业务命令触发时，才恢复该原命令；门店必须来自本轮用户输入或原命令，禁止从跨任务记忆推断。\n\n**安全边界**：取号 / 取消须用户**本轮明确确认**后再带 `--confirm`；五道口通常以到店取号为主，只有本轮 API 新鲜快照或 `index 1756895741` 明确显示支持在线排队时，才可说明当天开放，真实取号仍以 CLI 返回为准。\n\n**美团组件安全口径**：仅真实取号/进度/取消加载 `scripts/vendor` 内 `@mtuser/pt-passport`；普通店铺和排队查询不会加载。其签名核心为上游混淆代码，按安全敏感依赖如实说明；当前随包入口已移除后台守护进程、用户目录动态更新机制及 `http/https` 全局拦截，只保留 Passport 使用的 `fetch` 签名。Token 仅存本机 `~/.jinguyuan/`，不会提交到仓库或发送给金谷园服务端。\n\n## 金谷园抽奖与奖品（匿名，无需登录）\n\n金谷园实体抽奖卡为**匿名一次性发放**：揭卡当场直接交付兑奖凭证，无需手机号登录或账号绑定。奖品凭本地领取凭证（ClaimToken，存于 `~/.jinguyuan/`）查询找回，换设备不通用。\n\n> 手机号登录/账号绑定能力已在当前版本下线（服务端以开关保留待未来会员场景复用）；本 Skill 不再提供 `auth-start` / `auth-complete` / `bind_prize` 等命令，也不引导用户登录或索取短信验证码。与美团授权（jgy.cjs queue）完全无关。\n\n## 排队路由\n\n| 场景 | 能力 | 约束 |\n|------|------|------|\n| 宽泛餐段没说具体时间 | 不调接口 | 只追问\"你想大概几点到？\"，不查当前，不默认 12:00/18:00；用户问\"几点去合适\"则直接走餐段建议 |\n| 当前/计划时间点状态 | `jgy.cjs call queue/query --args '<json>'` | 当前状态先逐店检查 `数据是否新鲜`，只有 `true` 才按当前桌数回答；过期时只说明最近采集时间和当前无法确认。其余优先读 `mainScenario`/`answerTarget`/`replyPolicy`/`matchedQueueTarget`/`selectedReference` |\n| 已发生餐段事实 | `jgy.cjs call queue/period-facts --args '<json>'` | 明确是实际观测 |\n| 未来餐段建议 | `jgy.cjs call queue/period-advice --args '<json>'` | 说明是参考建议，不是事实 |\n| 某时间点历史快照 | `jgy.cjs call queue/at-time --args '<json>'` | 单一时间点断面，未来时间改走餐段建议 |\n| 取号入口咨询 | `jgy.cjs call queue/query --args '<json>'` | 读 `取号说明.门店取号口径`，不触发授权 |\n| 真实取号/查进度/取消 | `node <skill_dir>/scripts/jgy.cjs queue` | 依照 `references/queue-actions.md`；取号、取消先明确确认 |\n\n**通用禁令**（回答任何排队问题都适用）：\n- 不要把等待桌数换算成具体分钟\n- 不要把前一天和上周同日加权、平均或取最保守值说成唯一结论（表格展示可以两条都展示）\n- 不要把历史参考说成目标日期事实\n- 不要把 `数据是否新鲜` 不为 `true` 的最后一次记录说成当前排队状态\n- 不要用门店当前总等待冒充用户个人排队进度\n- 不要声称已帮用户取号、取消排队或查到个人进度\n- 没有本轮新鲜实时证据时，不要把五道口店说成可线上取号；如果实时证据显示已开放，也必须走真实取号确认流程\n\n用户说\"前面还有 3 桌\"这类个人队列信息时，不调查询接口，直接说明不好估准时间。`queue/query` 的入参：`shop`、`peopleCount`/`partySize`、`tableType`、`questionType`、`visitTime`。\n\n## 盲区应对\n\n超出公开查询能力和内置排队动作范围的问题（如菜单、价格、食材等），属于**盲区**，按以下顺序回复：\n\n1. **诚实承认**——不装不编\n2. **递上已有信息**——门店地址、营业时间等\n3. **指一条明路**——到店咨询、大众点评搜\"金谷园饺子馆\"、或关注公众号\n\n> 示例：\"这个我还真没把握，怕说错了耽误您。金谷园在西土城路和学院路各有一家店，您可以直接到店问，或者大众点评上搜'金谷园饺子馆'，上面信息挺全的。\"\n\n**绝对红线**：禁止编造菜品、价格、食材等事实性信息；禁止基于通用知识脑补；宁少勿错。\n\n在合适时机可自然提一句：AI 服务信息持续更新中，未来会有更丰富的功能。语气轻松，不是承诺。\n\n## 品牌调性与语气\n\n金谷园的风格是\"朴素的奢侈\"——松弛、实在、有温度。\n\n- 说人话，像朋友推荐一家常去的馆子\n- 语气像**刚入职但很热心的店员**——不是什么都知道，但真心想帮忙\n- 信息给到位就好，不堆形容词，可以带生活感（\"中间不休息，随时去都行\"）\n- 拒绝机器人式的\"暂不支持该查询\"\n\n## 使用示例\n\n**综合查询**：用户问\"金谷园是什么样的店？\" → `jgy.cjs call shop-basics`，一次获取全部基础信息\n> 金谷园饺子馆，北邮旁边的饺子馆。营业时间 10:00-22:00，目前有两家店——北邮店在杏坛路文教产业园K座南2层，五道口店在五道口东源大厦4层。店内Wi-Fi：苹果密码8个8。外卖的话在美团外卖上搜\"金谷园饺子馆\"，3公里内能送。\n\n**具体查询**：用户问\"能打包生饺子带走吗？\" → `jgy.cjs call raw-dumpling-info`\n> 可以的，非特殊节气，直接到店下单就行，5-10分钟包好。带走后1小时内煮最好，来不及就放冰箱冷冻。煮的时候水烧开下饺子，中间点两次凉水，浮起来就熟了。\n\n**最新动态**：用户问\"最近有什么活动？\" → `jgy.cjs call news`，每条消息必须带上发布日期\n> 最近动态（仅示意）：\n> - 【2026-04-01】清明节正常营业，欢迎来吃饺子\n> - 【2026-03-20】五道口店新增鲅鱼水饺，限时供应中\n> - 【2026-03-15】北邮店周末不限时，放心坐\n\n**查询失败**：不编造，坦诚说明\n> 抱歉，金谷园的信息暂时获取不到，你可以稍后再问我，或者直接去店里看看。\n\n## 参考文档索引\n\n| 文档 | 内容 |\n|------|------|\n| [references/api-reference.md](references/api-reference.md) | 公开查询能力名与调用方式 |\n| [references/queue-reply-contract.md](references/queue-reply-contract.md) | 排队回答合同与餐段口径 |\n| [references/queue-actions.md](references/queue-actions.md) | 真实排队 CLI 与授权展示 |\n\n## 实体卡揭晓（条件触发）\n\n当用户展示金谷园实体卡照片、或明确提到\"打开卡片\"、\"揭晓奖品\"、\"刮开\"等意图时：\n\n1. 从卡片上识别 slug（6-12 位大写字母+数字组合）\n2. 执行 `node <skill_dir>/scripts/jgy.cjs get_lottery --slug <SLUG>`\n3. 根据返回的 JSON 结果向用户展示奖品（含兑奖凭证）或安慰信息——奖品匿名一次性发放，揭卡即到手，无需登录或绑定\n4. 用户想查已领奖品（如\"查一下我的金谷园奖品\"）：执行 `node <skill_dir>/scripts/jgy.cjs list_my_prizes`（凭本地领取凭证找回，换设备不通用）\n\n注意：只有明确看到 slug 时才触发，不要猜测。\n\n### 维护者\n\n- 2.x 源码：https://gitee.com/JinGuYuan/jinguyuan-dumpling-skill\n- ClawHub slug：`jinguyuan-dumpling-skill`（展示名「金谷园饺子馆 Skill」）\n- 服务端实现：独立仓库 `jgy-mcp`（REST API 与 MCP 同一事实源；本 Skill 只走 REST）；本仓库 `package.json` 仅 Skill 侧 `version` + `engines.node`（Node ≥18）\n- 1.x 冻结：分支 `1.x` / tag `v1.0.2` · `v1-stable`\n\nFile v3.1.0:README.md\n\n# 金谷园饺子馆 Skill\n\n![Version](https://img.shields.io/github/v/tag/JinGuYuan/jinguyuan-dumpling-skill?label=version&color=blue&sort=semver) ![License](https://img.shields.io/badge/license-MIT-green) ![API](https://img.shields.io/badge/api-REST-orange) ![CLI](https://img.shields.io/badge/cli-jgy.cjs%20single--file-purple)\n\n这是一个 AI Skill——安装后，你的 AI 助手就能帮你查金谷园在哪、几点开门、这会儿排不排队、几点去更稳，也能查推荐菜、外卖和生饺子打包怎么煮；需要时，还能帮你在线排队取号。\n\n开了快二十年的饺子馆，有了自己的AI服务。\n\n\n## 关于金谷园\n\n北邮旁边的饺子馆。官网：[jinguyuan.cloud](https://jinguyuan.cloud)\n\n| 项目 | 内容 |\n|------|------|\n| 餐厅名称 | 金谷园饺子馆 |\n| 营业时间 | 10:00 - 22:00（以实际查询为准） |\n| 北邮店 | 杏坛路文教产业园K座南2层 |\n| 五道口店 | 五道口东源大厦4层 |\n\n## 这个 Skill 能做什么\n\n金谷园饺子馆的官方信息服务，可以查店、查活动、查推荐菜，也能处理到店自取和排队取号这些具体场景：\n\n| 能力 | 你可以问 |\n|------|----------|\n| 餐厅信息 | \"金谷园在哪？\"\"几点开门？\"\"能外卖吗？\"\"Wi-Fi 密码？\" |\n| 推荐菜 | \"有什么好吃的？\"\"今天吃什么\"\"招牌菜\" |\n| **到店自取** | \"帮我来份饺子\"\"提前点餐到店取\" |\n| 排队信息&建议 | \"这会儿排队吗？\"\"晚上七点去用排么？\"\"几点去不用排？\" |\n| **排队取号** | \"帮我排个队\"\"取消排队\"\"排队进度\" |\n| 生饺子打包 | \"能打包吗？\"\"生饺子怎么煮？\" |\n| 最新消息 | \"有什么新活动？\" |\n\n## 在线排队取号\n\n本 Skill 内置了基于**美团排队**的真实动作，AI 助手可以帮你取号、查本人订单和取消排队。\n\n**支持的操作：**\n\n| 操作 | 说明 | 你可以说 |\n|------|------|----------|\n| 查询排队状态 | 查看当前等待桌数和排队压力 | \"金谷园现在排队情况怎么样？\" |\n| 查询餐段事实 | 查询已经发生的午市/晚市实际观测 | \"今天中午几点开始排？\" |\n| 查询餐段建议 | 参考前一天和上周同日，给未来餐段建议 | \"明天中午几点去比较稳？\" |\n| 取号 | 选择桌型和人数，在线取号 | \"帮我在北邮店排个队，2个人\" |\n| 查询进度 | 查看当前排队号、前方等待桌数 | \"我前面还有几桌？\" |\n| 取消排队 | 取消已有的排队订单 | \"取消排队\" |\n\n**使用流程：**\n\n1. 告诉 AI 助手你要在北邮店排队\n2. AI 查询可选桌型，跟你确认桌型和人数\n3. 确认后自动取号，返回排队号和等待信息\n4. 随时可查进度或取消\n\n首次使用需完成美团账号授权（AI 助手会引导你完成）。\n\n## 运行环境\n\n支持 Windows、macOS 和 Linux，需要 Node.js 18 或更高版本，无需 npm 安装。\n\n## 安装\n\n直接拷贝下面这句话发给你的 AI 助手：\n\n> 安装 https://gitee.com/JinGuYuan/jinguyuan-dumpling-skill\n\nAgent 会自动克隆仓库并安装到对应的 Skill 目录。\n\n## 关于金谷园 MCP\n\n金谷园同时提供独立的 MCP 服务。若只需要查询店铺、菜品和排队信息，可以不安装 Skill，直接接入金谷园 MCP；在线取号、本人进度和取消排队等本地授权能力仍需安装 Skill。\n\n| 项目 | 内容 |\n|------|------|\n| 接入点 | `https://mcp.jinguyuan.cloud` |\n| 协议 | Model Context Protocol（MCP） |\n| 传输方式 | Streamable HTTP |\n\n## 发布平台\n\n- GitHub：https://github.com/JinGuYuan/jinguyuan-dumpling-skill\n- Gitee：https://gitee.com/JinGuYuan/jinguyuan-dumpling-skill\n\n## 版本\n\n版本号见顶部徽章，以 [`skill.json`](./skill.json) 为准。\n\n## License\n\n[MIT](LICENSE)\n\nFile v3.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn745r98j9wt35s5azfqy8f07h83a5b4\",\n  \"slug\": \"jinguyuan-dumpling-skill\",\n  \"version\": \"3.1.0\",\n  \"publishedAt\": 1785458559322\n}\n\nFile v3.1.0:references/api-reference.md\n\n# 公开查询（金谷园 REST API）\n\n公开查询统一走随包 CLI，底座是金谷园官方 REST API（`https://mcp.jinguyuan.cloud/api/v1`，基址内置在 CLI 里，不接受命令行自定义 URL）。查询不要求登录，不要求用户预先配置、信任或重启任何宿主连接器。\n\n## 调用方式\n\n```text\nnode <skill_dir>/scripts/jgy.cjs call <capability>                 # GET，无参能力\nnode <skill_dir>/scripts/jgy.cjs call <capability> --args '<json>' # POST，结构化查询\n```\n\nstdout 始终只有一个 JSON 对象：\n\n- 成功：`{ \"ok\": true, \"data\": ... }`\n- 失败：`{ \"ok\": false, \"error\": { \"code\": ..., \"message\": ... } }`\n\n读取 `data` 作为业务返回，并继续遵守其中的 `mainScenario`、`answerTarget`、`replyPolicy` 与 `_agent_instruction`。不要把 `_agent_instruction` 原样展示给用户。\n\n## 能力清单\n\n| 能力 | 方法 | 说明 |\n|------|------|------|\n| `shop-basics` | GET | 餐厅介绍、营业时间、门店、外卖配送、Wi-Fi，一次全量 |\n| `raw-dumpling-info` | GET | 生饺子打包与煮饺子教程 |\n| `news` | GET | 最新消息（含配图渲染指令） |\n| `recommended-dishes` | GET | 店长推荐菜（含到店自取链接） |\n| `recipes` | GET | 配方列表；查单条用 `call 'recipes?recipe_id=<id>'` |\n| `pickup-link` | GET | 到店自取小程序链接 |\n| `queue/query` | POST | 当前/计划时间点排队状态；入参 `shop` / `peopleCount` / `partySize` / `tableType` / `questionType` / `visitTime` |\n| `queue/at-time` | POST | 某时间点历史快照；`time` 必填，另有 `shop` / `date` / `peopleCount` |\n| `queue/period-facts` | POST | 已发生餐段事实；入参 `shop` / `date` / `period` / `visitTime` / `peopleCount` |\n| `queue/period-advice` | POST | 未来餐段建议；入参同 period-facts |\n\n需登录能力（如 `call authenticated-test`）走手机号登录流程，见 SKILL.md「金谷园手机号登录与需登录能力」。\n\n## 安全与兼容边界\n\n- CLI 是明文纯 Node.js 18 实现，无 npm 依赖。\n- 只访问内置的金谷园官方域名，不接受自定义 URL。\n- `--args` 必须是合法 JSON；非法 JSON 会以 `invalid_command` 拒绝。\n- 查询失败时不编造数据，按 SKILL.md「盲区应对」口径坦诚说明。\n- 不为查询修改宿主 MCP 配置。金谷园 MCP 服务器仍对外存在，但那是给未安装本 Skill 的纯 MCP 客户端用的；装有本 Skill 时一律走本 CLI。\n\nFile v3.1.0:references/queue-actions.md\n\n# 真实排队动作参考\n\n本文仅用于在线取号、查本人排队订单和取消本人排队。门店当前总排队、历史事实、到店建议和取号渠道咨询仍调用 MCP，不启动授权。\n\n## 命令\n\n需要 Node.js 18 或更高版本，无需安装依赖。每次以实际帮助输出为准：\n\n```bash\nnode <skill_dir>/scripts/jgy.cjs queue --help\nnode <skill_dir>/scripts/jgy.cjs queue index <shopId>\nnode <skill_dir>/scripts/jgy.cjs queue take-number <shopId> --people-count <N> --table-type-id <ID> --confirm\nnode <skill_dir>/scripts/jgy.cjs queue order-detail <shopId>\nnode <skill_dir>/scripts/jgy.cjs queue order-cancel <shopId> --confirm\nnode <skill_dir>/scripts/jgy.cjs queue auth-start\nnode <skill_dir>/scripts/jgy.cjs queue auth-status\nnode <skill_dir>/scripts/jgy.cjs queue auth-poll --background [--qr-image-path <path>]\nnode <skill_dir>/scripts/jgy.cjs queue logout\n```\n\n**发起授权用 `auth-start`**：一条命令拿到授权链接 + 二维码 + 后台轮询，与业务命令触发的授权流程完全一致。**不要**单独跑 `auth-poll --background` 来发起授权——它只启动后台监听，不生成链接和二维码。\n\nAgent 对话中**不要**使用阻塞式 `auth-poll` / `auth-poll --wait`（会长时间占住 Terminal，用户看不到授权链接与二维码）。`AUTH_REQUIRED` 时后台通常已在轮询，展示后用 **`auth-status`** 短查即可。\n\nCLI 在 stdout 输出单个 JSON 对象：`{ ok, code, message, data? }`。不要把内部命令名或返回码原样告诉用户，除非排查 MCP/CLI 合同确实需要。\n\n## 门店\n\n| 门店 | `shopId` | 真实动作约束 |\n|---|---:|---|\n| 北邮总店 | `4211342` | 可查桌型、取号、查本人订单、取消 |\n| 五道口店 | `1756895741` | 通常以到店取号为主；只有本轮 MCP 新鲜快照或 `index 1756895741` 明确显示 `supportQueue: true` 时，才可说明当天开放并继续取号确认流程 |\n\n用户未说门店时先追问，不猜 `shopId`。\n\n`AUTH_SUCCESS` 本身不包含门店。若本轮只是 `auth-start` / “只授权”，只报告授权成功后结束，不追问下一步，也不从记忆、旧任务或其他 Skill 推断门店。仅当授权由本轮明确业务命令触发时，才恢复该原命令；合法门店只采用上表映射或该原命令已有的 `shopId`。\n\n## 桌型与确认\n\n1. 取号前先运行 `index`，只使用其 `data.tables[]` 返回的 `tableTypeId`、`tableTypeName`和 `capacity`。\n2. 用户同时说人数和桌型时，将自然语言桌型匹配到返回的标准桌型；不把“大的”“两人桌”等原话当作 ID。\n3. 只说人数时，按 `capacity.min/max` 筛选：唯一匹配可作为建议，多个匹配列出后请用户选择。只说桌型时，追问就餐人数。\n4. 在运行 `take-number` 前，明确复述门店、人数和标准桌型，必须取得用户对本次真实取号的明确确认，再带 **`--confirm`** 执行。没有 `--confirm` 时 CLI 返回 `CONFIRM_REQUIRED`，**不会**取号。\n5. 在运行 `order-cancel` 前，先用 `order-detail` 说清待取消的订单，必须取得用户明确确认后，再执行 `order-cancel <shopId> --confirm`。\n\n之前对话中的宽泛意向不等于本次动作确认。**授权成功也不等于确认取号或取消**——授权成功后应重新展示桌型/订单并再问一句「确认取号/取消吗？」，用户答应后再带 `--confirm`。\n\n## 授权状态\n\n`AUTH_REQUIRED` 可能是新授权流程，也可能是业务缓存 Token 过期后仍未拿到新授权链接；不能假定其 `data` 一定包含 `authLink`。\n\n收到 `AUTH_REQUIRED` 后：**阶段 A 内联图 + 链接** → **阶段 B `auth-status`**。后台用 `~/.jinguyuan/auth-poll-current.json` 指向本次 run 的独立状态文件；Agent 只需调用 `auth-status`，不要自行读取或改写状态。\n\n1. **有 `authLink`**\n   - **图**：`data.authRunId` 标识本次授权；`data.qrImagePath` = **绝对路径**（文件直接在工作区根目录，形如 `jinguyuan-auth-qr-<authRunId>.png`，非隐藏、无子目录）；可选 `qrImagePathRelative`。**不要**用 `~/.jinguyuan`，也不要猜固定文件名。\n   - **阶段 A（对齐 V1）**：\n     1. 有图时：`Read` 绝对路径 PNG，并在主气泡正文写 `![美团授权二维码](<绝对路径>)`（推荐直接贴 `userReplyMarkdown`）。\n     2. ⚠️ 仅 Read / 仅附件侧栏 / 步骤卡「已展示」**不算**——用户扫不到码。\n     3. **链接必含**（可点 + 明文 URL）；云端主通道是 https。\n   - **阶段 B**：告知用户授权后稍候；宿主若未自动继续，用户可回复“已授权”。收到回复后执行 `auth-status`，再继续原任务。部分宿主能自动续跑，部分不能，禁止说“无需回复”或保证一定自动通知；禁止 `auth-poll --wait`。\n2. **无 `authLink`**：`logout` 后仅成功才重跑。\n\nToken：`~/.jinguyuan/passport-auth.json`（与二维码目录分离）。不展示 Token。\n\n## 返回码与处理\n\n| `code` | Agent 处理 |\n|---|---|\n| `HELP` | 读取当前命令和 Node.js 要求 |\n| `QUEUE_INDEX` | 展示门店是否支持排队、桌型容量、等待桌数和已有订单；等待桌数不换算成准确分钟 |\n| `QUEUE_NUMBER_TAKEN` | 明确告知取号成功，转述排队号、桌型和订单状态 |\n| `CONFIRM_REQUIRED` | 缺用户确认或未带 `--confirm`：复述门店/人数/桌型（或待取消订单），请用户明确确认后再执行带 `--confirm` 的命令；**不要**静默重试原命令 |\n| `QUEUE_ORDER_DETAIL` | 只将本人订单数据作为个人进度，不用门店总排队替代 |\n| `QUEUE_CANCELLED` | 明确告知已取消的订单 |\n| `AUTH_REQUIRED` | 主气泡展示链接/图；说明若未自动继续可回复“已授权”，收到回复后用 `auth-status` |\n| `AUTH_POLL_STARTED` | 后台轮询已启动；继续展示（若未展示）并用 `auth-status` |\n| `AUTH_PENDING` / `AUTH_SUCCESS` | pending 则稍后重查；仅本轮明确业务命令触发授权时才续跑，单独授权成功后直接结束 |\n| `AUTH_STATUS_NONE` | 无后台记录；用 `auth-start` 重新触发授权 |\n| `AUTH_CANCELLED` / `AUTH_RISK_DENIED` / `AUTH_TIMEOUT` | 终止授权，说明原因；不执行原业务命令 |\n| `QUEUE_ORDER_EXISTS` | 说明已有订单，可先查本人进度；不重复取号 |\n| `QUEUE_ORDER_NOT_FOUND` | 说明当前没有本人排队订单 |\n| `QUEUE_UNSUPPORTED` / `QUEUE_NOT_NEEDED` | 说明门店不支持在线排队或当前无需排队，不强行取号 |\n| `TABLE_NOT_FOUND` / `TABLE_CAPACITY_MISMATCH` | 使用返回的桌型列表重新选择，或请用户调整人数/桌型 |\n| `INVALID_ARGUMENTS` | 重读 `--help`，修正参数；不重试原样错误命令 |\n| `UNSUPPORTED_NODE_VERSION` | 说明需要 Node.js 18+ |\n| `PASSPORT_FAILED` / `QR_CLEANUP_FAILED` | 说明授权服务或二维码清理失败，不暴露内部输出 |\n| `HTTP_ERROR` / `INVALID_RESPONSE` / `REQUEST_TIMEOUT` / `NETWORK_ERROR` | 告知外部服务或网络异常，可稍后重试；有 `traceId` 时可用于排查 |\n| `QUEUE_INDEX_FAILED` / `QUEUE_CREATE_FAILED` / `QUEUE_ORDER_DETAIL_FAILED` / `QUEUE_CANCEL_FAILED` / `QUEUE_API_ERROR` / `CLI_FAILED` | 按 `message` 说明操作未完成；取号/取消结果不明时，先用 `order-detail` 或美团 App 核实，不盲目重复动作 |\n| `LOGOUT_SUCCESS` | 说明已清除本地授权 |\n\n## 退出码\n\n| 退出码 | 含义 |\n|---:|---|\n| `0` | `ok: true` |\n| `2` | `AUTH_REQUIRED` 或 `AUTH_PENDING`，需继续授权 |\n| `1` | 其他失败 |\n\nFile v3.1.0:references/queue-reply-contract.md\n\n# 排队类回答合同\n\n排队相关查询返回体带结构化字段。Agent **优先读这些字段**，不要只读中文自然语言说明。\n\n## 字段\n\n| 字段 | 含义 |\n|------|------|\n| `mainScenario` | 主场景（如 `currentQueueStatus` / `plannedVisitQueueReference` / `businessHours` / `queueActionBoundary` / `queuePeriodFacts` / `queuePeriodAdvice` / `askVisitTime`）。据此定回答骨架。 |\n| `atoms` | 语义原子（如 `partySizeTarget` / `tableTypeTarget` / `plannedVisitReference` / `beforeOpen` / `afterClose`）。 |\n| `answerTarget` | 应优先回答的数据位置，例如 `{ type: 'matchedQueueTarget', field: '…等待桌数' }` 或 `{ type: 'plannedVisitReference', field: '历史参考.selectedReference' }`。 |\n| `replyPolicy` | `requiredPoints`（必答）、`forbiddenPoints`（禁答）、`followUpQuestion`、`nextSuggestedQuestion`、`linkRequired`。 |\n| `当前排队状态.门店[].数据是否新鲜` | 当前快照能否作为实时事实。只有 `true` 才能回答当前等待桌数；`false` 时只说明 `最近采集时间` 和当前状态无法确认，`最后一次记录` 仅供回看。 |\n| `selectedReference` | 计划到店历史参考中应优先说的那一条；**上周同日优先于前一天**。一句话建议读它；不要把前一天和上周同日加权 / 平均 / 取最保守后说成唯一结论。表格可两条都展示。 |\n| `_agent_instruction` | 给 Agent 的内部指令，**不要原样展示给用户**。 |\n\n## 餐段口径\n\n| 工具 | 含义 |\n|------|------|\n| `get_queue_period_facts` | **事实层**：已发生餐段「几点开始排 / 几点后不排 / 最高排多少桌」等，必须说清是目标日期**实际观测**。 |\n| `get_queue_period_advice` | **策略层**：未来或未发生餐段建议；说清是**参考建议**，不是目标日期事实。默认参考「前一天 + 上周同日」。 |\n\n旧名 `get_queue_period_reference` 已合并进 `get_queue_period_advice` 并下线，不再保留。\n\n## 禁止项（与 `replyPolicy.forbiddenPoints` 一致）\n\n- 不要把等待桌数换算成准确分钟。\n- 不要把前一天和上周同日加权、平均或取最保守值后说成唯一结论。\n- 不要把历史参考说成目标日期事实。\n- 不要把过期、缺失或读取失败的最后一次快照说成当前排队状态。\n- 不要用门店当前总等待冒充用户个人排队进度。\n- 不要声称查询接口已帮用户取号、取消排队或查到个人进度。\n- 没有本轮新鲜实时证据时，不要把五道口店说成可线上取号；如果实时证据显示已开放，也必须走真实取号确认流程。\n\nFile v3.1.0:scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/package.json\n\n{\n  \"name\": \"@sec/cliguard\",\n  \"version\": \"1.3.0\",\n  \"description\": \"Minimal local adapter for the vendored Meituan request-signing core\",\n  \"files\": [\n    \"index.js\",\n    \"core/\",\n    \"readme.md\"\n  ],\n  \"main\": \"index.js\",\n  \"keywords\": [\n    \"cliguard\",\n    \"openclaw\",\n    \"skill\",\n    \"security\",\n    \"fingerprint\",\n    \"fetch-signature\",\n    \"signature\",\n    \"mtgsig\"\n  ],\n  \"author\": \"CLIGuard\",\n  \"license\": \"MIT\",\n  \"engines\": {\n    \"node\": \">=16.0.0\"\n  },\n  \"dependencies\": {}\n}\n\nFile v3.1.0:scripts/vendor/pt-passport/package.json\n\n{\n  \"name\": \"@mtuser/pt-passport\",\n  \"version\": \"0.1.4\",\n  \"description\": \"美团 Passport 用户授权登录 CLI 工具\",\n  \"main\": \"dist/index.js\",\n  \"bin\": {\n    \"pt-passport\": \"dist/index.js\"\n  },\n  \"files\": [\n    \"dist/index.js\"\n  ],\n  \"scripts\": {\n    \"build\": \"node build.mjs\",\n    \"clihub-build\": \"bash clihub-build.sh\",\n    \"pack\": \"npm run build && npm pack\",\n    \"publish:inner\": \"npm run build && npm publish --registry=http://r.npm.sankuai.com\",\n    \"dev\": \"node_modules/.bin/tsx src/index.ts\",\n    \"start\": \"node dist/index.js\",\n    \"lint\": \"tsc --noEmit\",\n    \"test\": \"node --test\"\n  },\n  \"publishConfig\": {\n    \"registry\": \"http://r.npm.sankuai.com\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^22.10.5\",\n    \"commander\": \"^12.1.0\",\n    \"esbuild\": \"^0.28.0\",\n    \"javascript-obfuscator\": \"^5.4.1\",\n    \"tsx\": \"^4.19.2\",\n    \"typescript\": \"^5.7.3\"\n  },\n  \"dependencies\": {\n    \"@sec/cliguard\": \"^1.3.0\"\n  },\n  \"bundleDependencies\": [\n    \"@sec/cliguard\"\n  ],\n  \"engines\": {\n    \"node\": \">=18.0.0\"\n  }\n}\n\nFile v3.1.0:skill-card.md\n\n## Description: <br>\n金谷园饺子馆信息查询、匿名实体抽奖卡与在线排队取号。通过金谷园官方 API 查询店铺、排队和菜品信息；可揭晓抽奖卡并当场匿名交付兑奖码（一次性发放，无需登录）、凭本地凭证查询已领奖品；内置真实排队动作仅用于在线取号、本人排队进度查询、取消排队。 <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[jinguyuan](https://clawhub.ai/user/jinguyuan) <br>\n\n### License/Terms of Use: <br>\nMIT <br>\n\n\n## Use Case: <br>\nExternal users and agents use this skill to answer questions about 金谷园饺子馆, check queue status, retrieve anonymous prize-card results, and manage online queue numbers with explicit user confirmation. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Online queue actions can use account-linked Meituan authorization and store local auth, claim, QR, or polling state. <br>\nMitigation: Use queue actions only after explicit user confirmation, review the local persistence behavior before deployment, and clear local authorization when it is no longer needed. <br>\nRisk: The bundled Meituan signing dependency is reported by the security evidence as including under-disclosed device fingerprinting. <br>\nMitigation: Install or enable online queueing only in environments where that account-linked behavior is acceptable; otherwise restrict use to public restaurant queries. <br>\n\n\n## Reference(s): <br>\n- [Public Query API Reference](references/api-reference.md) <br>\n- [Queue Actions Reference](references/queue-actions.md) <br>\n- [Queue Reply Contract](references/queue-reply-contract.md) <br>\n- [金谷园饺子馆 Skill on ClawHub](https://clawhub.ai/jinguyuan/skills/jinguyuan-dumpling-skill) <br>\n- [金谷园官网](https://jinguyuan.cloud) <br>\n- [金谷园 MCP Endpoint](https://mcp.jinguyuan.cloud) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, JSON, guidance] <br>\n**Output Format:** [Markdown responses with inline shell commands and JSON CLI results] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Public restaurant queries use official API snapshots; online queue actions require explicit user confirmation and local authorization.] <br>\n\n## Skill Version(s): <br>\n3.1.0 (source: SKILL.md frontmatter, skill.json, server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v3.1.0:skill.json\n\n{\n  \"name\": \"jinguyuan-dumpling-skill\",\n  \"display_name\": \"金谷园饺子馆 Skill\",\n  \"description\": \"查询金谷园饺子馆信息、排队状态与实体抽奖卡；揭晓抽奖卡后当场匿名交付完整兑奖凭证（一次性发放，无需登录或绑定），并凭本地领取凭证查询已领奖品。公开查询由随包 Node.js CLI 调用金谷园官方 REST API 完成；真实在线取号、本人排队进度、取消排队由同一 CLI 的排队命令处理。\",\n  \"version\": \"3.1.0\",\n  \"author\": \"金谷园饺子馆\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/JinGuYuan/jinguyuan-dumpling-skill\",\n  \"category\": \"信息查询\",\n  \"keywords\": [\n    \"金谷园\",\n    \"jinguyuan\",\n    \"金谷园饺子馆\",\n    \"饺子\",\n    \"dumpling\",\n    \"锅贴\",\n    \"鲅鱼饺子\",\n    \"北邮\",\n    \"五道口\",\n    \"海淀\",\n    \"外卖\",\n    \"营业时间\",\n    \"菜单\",\n    \"排队\",\n    \"取号\",\n    \"等位\",\n    \"排队状态\",\n    \"历史排队\",\n    \"几点开始排\",\n    \"几点不排\",\n    \"少排队\",\n    \"取消排队\",\n    \"北京饺子\",\n    \"海淀美食\",\n    \"生饺子\",\n    \"煮饺子\",\n    \"到店自取\",\n    \"叫号取餐\",\n    \"外带\",\n    \"外带自提\",\n    \"自提\",\n    \"提前点餐\",\n    \"来份饺子\",\n    \"饺子配方\",\n    \"自家散饺子\",\n    \"金谷园推荐菜\",\n    \"金谷园招牌菜\",\n    \"金谷园必点\",\n    \"金谷园新品\",\n    \"店长推荐\",\n    \"抽奖\",\n    \"中奖\",\n    \"兑奖\",\n    \"兑奖码\",\n    \"匿名领奖\"\n  ]\n}\n\nFile v3.1.0:LICENSE\n\nMIT License\n\nCopyright (c) 2026 金谷园饺子馆\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v3.0.5: 15 files, 129526 bytes\n\nFiles: LICENSE (1075b), README.md (3782b), references/api-reference.md (2480b), references/queue-actions.md (7640b), references/queue-reply-contract.md (2664b), scripts/jgy.cjs (238784b), scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/core/cliguard.js (55895b), scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/index.js (3068b), scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/package.json (488b), scripts/vendor/pt-passport/dist/index.js (101510b), scripts/vendor/pt-passport/package.json (1022b), skill-card.md (2971b), skill.json (1480b), SKILL.md (14238b), _meta.json (143b)\n\nFile v3.0.5:SKILL.md\n\n---\nname: jinguyuan-dumpling-skill\ndescription: 金谷园饺子馆信息查询、手机号登录、实体抽奖卡与在线排队取号。通过金谷园官方 API 查询店铺、排队和菜品信息；可揭晓抽奖卡、交付兑奖码、绑定账号并跨设备查询奖品；内置真实排队动作仅用于在线取号、本人排队进度查询、取消排队。\nversion: 3.0.5\nalwaysApply: false\nkeywords:\n  - 金谷园\n  - jinguyuan\n  - 金谷园饺子馆\n  - 饺子\n  - dumpling\n  - 锅贴\n  - 鲅鱼饺子\n  - 北邮\n  - 五道口\n  - 海淀\n  - 外卖\n  - 营业时间\n  - 菜单\n  - 排队\n  - 取号\n  - 等位\n  - 排队取号\n  - 取消排队\n  - 北京饺子\n  - 海淀美食\n  - 生饺子\n  - 煮饺子\n  - 到店自取\n  - 叫号取餐\n  - 外带\n  - 外带自提\n  - 自提\n  - 提前点餐\n  - 来份饺子\n  - 饺子配方\n  - 金谷园推荐菜\n  - 金谷园招牌菜\n  - 金谷园必点\n  - 金谷园新品\n  - 店长推荐\n---\n\n## Agent 硬约束\n\n- 文中示例数据**仅作格式参考**；回答用户前**必须调金谷园 API 取最新数据**，禁止拿示例当真。用户问“现在排队吗”时，必须逐店检查 `当前排队状态.门店[].数据是否新鲜`；只有 `true` 才能把等待桌数说成当前状态，过期记录只能说明最近采集时间，不能冒充实时事实。\n- **公开查询统一走随包 CLI**：`node <skill_dir>/scripts/jgy.cjs call <capability>`（GET 无参；结构化查询加 `--args '<json>'` 走 POST）。能力名、参数与返回形状细则 → [references/api-reference.md](references/api-reference.md)。不得为查询修改宿主 MCP 配置，不得要求用户先信任/重启，也不得临时编写 shell、HTTP、`.js` / `.py` 脚本。\n- 排队回答优先读返回体合同字段（`mainScenario` / `replyPolicy` 等）。细则 → [references/queue-reply-contract.md](references/queue-reply-contract.md)。\n- **禁止**：等待桌数换算分钟；历史参考说成当天事实；总等待冒充个人进度；声称查询接口已取号/取消/查到个人进度；没有本轮新鲜实时证据时把五道口说成可线上取号。\n- 真实取号 / 本人进度 / 取消 → 本 Skill `scripts/jgy.cjs queue` + [references/queue-actions.md](references/queue-actions.md)，与公开查询分离。\n\n# 金谷园饺子馆 Skill\n\n## 安装后引导\n\n当用户刚安装此技能时，Agent 应主动：\n1. **确保最新数据查询可用**：公开查询统一走随包 CLI `node <skill_dir>/scripts/jgy.cjs call <capability>`，无需任何 MCP 配置，不要修改宿主 MCP 配置\n2. 告知用户可以直接问金谷园相关问题，比如地址、营业时间、排队方式、推荐菜等\n3. 给出几个推荐的首次提问，例如：\n   - \"金谷园现在排队吗？\"\n   - \"明天中午几点去不怎么排？\"\n   - \"怎么排队取号？\"\n   - \"帮我在金谷园排个队\"\n   - \"金谷园有什么好吃的？\"\n   - \"能打包生饺子带走吗？\"\n   - \"帮我来份饺子到店自取\"\n4. 说明查询走金谷园官方 API 最新快照；当前排队以返回的新鲜度判断为准，真实取号等本地动作见下文，与公开查询分离\n5. **预授权（可选）**：若用户想提前完成美团授权，运行 `node <skill_dir>/scripts/jgy.cjs queue auth-start`，一次拿到授权链接 + 二维码 + 后台轮询。不要单独跑 `auth-poll --background`——它只启动后台监听，不生成链接和二维码。\n\n## 内置真实排队动作\n\n仅当用户明确要在线取号、查看本人排队进度或取消本人排队时，直接运行：\n\n```bash\nnode <skill_dir>/scripts/jgy.cjs queue <command>\n```\n\n命令、参数、桌型、返回码与授权展示细节见 [references/queue-actions.md](references/queue-actions.md)。执行前可 `node <skill_dir>/scripts/jgy.cjs queue --help`。\n\n**授权（`AUTH_REQUIRED`）摘要**：\n\n1. **主动预授权**用 `auth-start`（一条命令拿到链接 + 二维码 + 后台轮询）。业务命令（`index` / `take-number` 等）发现没 Token 时也会自动走同一流程。**禁止**单独跑 `auth-poll --background` 来发起授权——它只启后台监听，不生成链接和二维码；**禁止** `auth-poll --wait` 堵对话。\n2. PNG 直接在当前工作区根目录，文件名为 **`jinguyuan-auth-qr-<authRunId>.png`**（非隐藏、无子目录；`data.qrImagePath` = **绝对路径**）。始终使用返回路径，不猜文件名；推荐原样贴 `data.userReplyMarkdown`。\n3. **主气泡必须**有：`![美团授权二维码](绝对路径)`（有图时）+ 可点链接与明文 URL。仅 Read / 仅附件侧栏 / 步骤卡「已展示」**不算**。\n4. 告知用户授权后稍候；宿主若未自动继续，用户可回复“已授权”。收到回复后短查 `auth-status`，再继续原任务。部分宿主能自动续跑，部分不能，**禁止**说“无需回复”或保证一定自动通知。无 `authLink` 时先 `logout` 成功再重跑。Token：`~/.jinguyuan/passport-auth.json`。\n5. **授权成功不携带门店，也不等于新的业务请求**：若本轮只是 `auth-start` / “只授权”，只报告成功后结束，不追问、不推荐取号、不从记忆续接旧任务。仅当授权由本轮明确的业务命令触发时，才恢复该原命令；门店必须来自本轮用户输入或原命令，禁止从跨任务记忆推断。\n\n**安全边界**：取号 / 取消须用户**本轮明确确认**后再带 `--confirm`；五道口通常以到店取号为主，只有本轮 API 新鲜快照或 `index 1756895741` 明确显示支持在线排队时，才可说明当天开放，真实取号仍以 CLI 返回为准。\n\n**美团组件安全口径**：仅真实取号/进度/取消加载 `scripts/vendor` 内 `@mtuser/pt-passport`；普通店铺和排队查询不会加载。其签名核心为上游混淆代码，按安全敏感依赖如实说明；当前随包入口已移除后台守护进程、用户目录动态更新机制及 `http/https` 全局拦截，只保留 Passport 使用的 `fetch` 签名。Token 仅存本机 `~/.jinguyuan/`，不会提交到仓库或发送给金谷园服务端。\n\n## 金谷园手机号登录与需登录能力（内测）\n\n仅当用户明确要求登录金谷园、验证金谷园身份，或调用需登录能力（如登录测试消息）时使用。服务端未开启时会返回错误，如实诚告知用户该能力尚未上线。与美团授权（jgy.cjs queue）完全无关，两套凭证互不影响。\n\n命令入口：`node <skill_dir>/scripts/jgy.cjs <command>`\n\n1. **新会话先查状态**：`jgy.cjs auth-status`。本地凭证自动恢复登录态，`authenticated=true` 时无需重新短信，直接调用业务。\n2. **登录流程**（auth-status 未登录时）：向用户说明需手机号验证 → 问手机号 → `jgy.cjs auth-start --phone \"<手机号>\"` → 告知脱敏号码已发送验证码 → 请用户只提供本次验证码 → 用安全标准输入完成：`printf '%s' \"<验证码>\" | node <skill_dir>/scripts/jgy.cjs auth-complete --login-id <login_id> --stdin` → 成功后继续原任务。\n3. **需登录测试能力**：`jgy.cjs call authenticated-test`；公开查询可用 `jgy.cjs call <capability>`（带结构化参数时加 `--args '<json>'`）。\n4. **登出**：`jgy.cjs logout`（撤销服务端授权并清本地凭证）。\n5. **换账号**：用户要求用另一个手机号登录时，必须先 `jgy.cjs logout` 成功再走登录流程；禁止在已登录状态下直接给新号发码（本地单账号凭证，覆盖前不撤销会在服务端留下悬挂授权）。\n\n**硬红线**：验证码只能走标准输入，绝不作为命令行参数（`--code` 会被拒绝），不写进回复正文；不展示任何 token；不复述完整手机号（只用脱敏号）；登录失败遵守服务端冷却时间，不自动重试超过一次；`/clear`、新会话不影响本地登录态。\n\n## 排队路由\n\n| 场景 | 能力 | 约束 |\n|------|------|------|\n| 宽泛餐段没说具体时间 | 不调接口 | 只追问\"你想大概几点到？\"，不查当前，不默认 12:00/18:00；用户问\"几点去合适\"则直接走餐段建议 |\n| 当前/计划时间点状态 | `jgy.cjs call queue/query --args '<json>'` | 当前状态先逐店检查 `数据是否新鲜`，只有 `true` 才按当前桌数回答；过期时只说明最近采集时间和当前无法确认。其余优先读 `mainScenario`/`answerTarget`/`replyPolicy`/`matchedQueueTarget`/`selectedReference` |\n| 已发生餐段事实 | `jgy.cjs call queue/period-facts --args '<json>'` | 明确是实际观测 |\n| 未来餐段建议 | `jgy.cjs call queue/period-advice --args '<json>'` | 说明是参考建议，不是事实 |\n| 某时间点历史快照 | `jgy.cjs call queue/at-time --args '<json>'` | 单一时间点断面，未来时间改走餐段建议 |\n| 取号入口咨询 | `jgy.cjs call queue/query --args '<json>'` | 读 `取号说明.门店取号口径`，不触发授权 |\n| 真实取号/查进度/取消 | `node <skill_dir>/scripts/jgy.cjs queue` | 依照 `references/queue-actions.md`；取号、取消先明确确认 |\n\n**通用禁令**（回答任何排队问题都适用）：\n- 不要把等待桌数换算成具体分钟\n- 不要把前一天和上周同日加权、平均或取最保守值说成唯一结论（表格展示可以两条都展示）\n- 不要把历史参考说成目标日期事实\n- 不要把 `数据是否新鲜` 不为 `true` 的最后一次记录说成当前排队状态\n- 不要用门店当前总等待冒充用户个人排队进度\n- 不要声称已帮用户取号、取消排队或查到个人进度\n- 没有本轮新鲜实时证据时，不要把五道口店说成可线上取号；如果实时证据显示已开放，也必须走真实取号确认流程\n\n用户说\"前面还有 3 桌\"这类个人队列信息时，不调查询接口，直接说明不好估准时间。`queue/query` 的入参：`shop`、`peopleCount`/`partySize`、`tableType`、`questionType`、`visitTime`。\n\n## 盲区应对\n\n超出公开查询能力和内置排队动作范围的问题（如菜单、价格、食材等），属于**盲区**，按以下顺序回复：\n\n1. **诚实承认**——不装不编\n2. **递上已有信息**——门店地址、营业时间等\n3. **指一条明路**——到店咨询、大众点评搜\"金谷园饺子馆\"、或关注公众号\n\n> 示例：\"这个我还真没把握，怕说错了耽误您。金谷园在西土城路和学院路各有一家店，您可以直接到店问，或者大众点评上搜'金谷园饺子馆'，上面信息挺全的。\"\n\n**绝对红线**：禁止编造菜品、价格、食材等事实性信息；禁止基于通用知识脑补；宁少勿错。\n\n在合适时机可自然提一句：AI 服务信息持续更新中，未来会有更丰富的功能。语气轻松，不是承诺。\n\n## 品牌调性与语气\n\n金谷园的风格是\"朴素的奢侈\"——松弛、实在、有温度。\n\n- 说人话，像朋友推荐一家常去的馆子\n- 语气像**刚入职但很热心的店员**——不是什么都知道，但真心想帮忙\n- 信息给到位就好，不堆形容词，可以带生活感（\"中间不休息，随时去都行\"）\n- 拒绝机器人式的\"暂不支持该查询\"\n\n## 使用示例\n\n**综合查询**：用户问\"金谷园是什么样的店？\" → `jgy.cjs call shop-basics`，一次获取全部基础信息\n> 金谷园饺子馆，北邮旁边的饺子馆。营业时间 10:00-22:00，目前有两家店——北邮店在杏坛路文教产业园K座南2层，五道口店在五道口东源大厦4层。店内Wi-Fi：苹果密码8个8。外卖的话在美团外卖上搜\"金谷园饺子馆\"，3公里内能送。\n\n**具体查询**：用户问\"能打包生饺子带走吗？\" → `jgy.cjs call raw-dumpling-info`\n> 可以的，非特殊节气，直接到店下单就行，5-10分钟包好。带走后1小时内煮最好，来不及就放冰箱冷冻。煮的时候水烧开下饺子，中间点两次凉水，浮起来就熟了。\n\n**最新动态**：用户问\"最近有什么活动？\" → `jgy.cjs call news`，每条消息必须带上发布日期\n> 最近动态（仅示意）：\n> - 【2026-04-01】清明节正常营业，欢迎来吃饺子\n> - 【2026-03-20】五道口店新增鲅鱼水饺，限时供应中\n> - 【2026-03-15】北邮店周末不限时，放心坐\n\n**查询失败**：不编造，坦诚说明\n> 抱歉，金谷园的信息暂时获取不到，你可以稍后再问我，或者直接去店里看看。\n\n## 参考文档索引\n\n| 文档 | 内容 |\n|------|------|\n| [references/api-reference.md](references/api-reference.md) | 公开查询能力名与调用方式 |\n| [references/queue-reply-contract.md](references/queue-reply-contract.md) | 排队回答合同与餐段口径 |\n| [references/queue-actions.md](references/queue-actions.md) | 真实排队 CLI 与授权展示 |\n\n## 实体卡揭晓（条件触发）\n\n当用户展示金谷园实体卡照片、或明确提到\"打开卡片\"、\"揭晓奖品\"、\"刮开\"等意图时：\n\n1. 从卡片上识别 slug（6-12 位大写字母+数字组合）\n2. 执行 `node <skill_dir>/scripts/jgy.cjs get_lottery --slug <SLUG>`\n3. 根据返回的 JSON 结果向用户展示奖品或安慰信息\n4. 如果结果建议登录（next_action 包含 login），询问用户是否登录保存\n5. 用户同意后：按上文登录流程完成手机号验证，再执行 `node <skill_dir>/scripts/jgy.cjs bind_prize --slug <SLUG>` 将奖品绑定到账号，返回 `PRIZE_ISSUED_BOUND` 即绑定成功；之后换设备登录同一手机号也能找回\n6. 用户想查已领奖品（如\"查一下我的金谷园奖品\"）：执行 `node <skill_dir>/scripts/jgy.cjs list_my_prizes`\n\n注意：只有明确看到 slug 时才触发，不要猜测。\n\n### 维护者\n\n- 2.x 源码：https://gitee.com/JinGuYuan/jinguyuan-dumpling-skill\n- ClawHub slug：`jinguyuan-dumpling-skill`（展示名「金谷园饺子馆 Skill」）\n- 服务端实现：独立仓库 `jgy-mcp`（REST API 与 MCP 同一事实源；本 Skill 只走 REST）；本仓库 `package.json` 仅 Skill 侧 `version` + `engines.node`（Node ≥18）\n- 1.x 冻结：分支 `1.x` / tag `v1.0.2` · `v1-stable`\n\nFile v3.0.5:README.md\n\n# 金谷园饺子馆 Skill\n\n![Version](https://img.shields.io/github/v/tag/JinGuYuan/jinguyuan-dumpling-skill?label=version&color=blue&sort=semver) ![License](https://img.shields.io/badge/license-MIT-green) ![API](https://img.shields.io/badge/api-REST-orange) ![CLI](https://img.shields.io/badge/cli-jgy.cjs%20single--file-purple)\n\n这是一个 AI Skill——安装后，你的 AI 助手就能帮你查金谷园在哪、几点开门、这会儿排不排队、几点去更稳，也能查推荐菜、外卖和生饺子打包怎么煮；需要时，还能帮你在线排队取号。\n\n开了快二十年的饺子馆，有了自己的AI服务。\n\n\n## 关于金谷园\n\n北邮旁边的饺子馆。官网：[jinguyuan.cloud](https://jinguyuan.cloud)\n\n| 项目 | 内容 |\n|------|------|\n| 餐厅名称 | 金谷园饺子馆 |\n| 营业时间 | 10:00 - 22:00（以实际查询为准） |\n| 北邮店 | 杏坛路文教产业园K座南2层 |\n| 五道口店 | 五道口东源大厦4层 |\n\n## 这个 Skill 能做什么\n\n金谷园饺子馆的官方信息服务，可以查店、查活动、查推荐菜，也能处理到店自取和排队取号这些具体场景：\n\n| 能力 | 你可以问 |\n|------|----------|\n| 餐厅信息 | \"金谷园在哪？\"\"几点开门？\"\"能外卖吗？\"\"Wi-Fi 密码？\" |\n| 推荐菜 | \"有什么好吃的？\"\"今天吃什么\"\"招牌菜\" |\n| **到店自取** | \"帮我来份饺子\"\"提前点餐到店取\" |\n| 排队信息&建议 | \"这会儿排队吗？\"\"晚上七点去用排么？\"\"几点去不用排？\" |\n| **排队取号** | \"帮我排个队\"\"取消排队\"\"排队进度\" |\n| 生饺子打包 | \"能打包吗？\"\"生饺子怎么煮？\" |\n| 最新消息 | \"有什么新活动？\" |\n\n## 在线排队取号\n\n本 Skill 内置了基于**美团排队**的真实动作，AI 助手可以帮你取号、查本人订单和取消排队。\n\n**支持的操作：**\n\n| 操作 | 说明 | 你可以说 |\n|------|------|----------|\n| 查询排队状态 | 查看当前等待桌数和排队压力 | \"金谷园现在排队情况怎么样？\" |\n| 查询餐段事实 | 查询已经发生的午市/晚市实际观测 | \"今天中午几点开始排？\" |\n| 查询餐段建议 | 参考前一天和上周同日，给未来餐段建议 | \"明天中午几点去比较稳？\" |\n| 取号 | 选择桌型和人数，在线取号 | \"帮我在北邮店排个队，2个人\" |\n| 查询进度 | 查看当前排队号、前方等待桌数 | \"我前面还有几桌？\" |\n| 取消排队 | 取消已有的排队订单 | \"取消排队\" |\n\n**使用流程：**\n\n1. 告诉 AI 助手你要在北邮店排队\n2. AI 查询可选桌型，跟你确认桌型和人数\n3. 确认后自动取号，返回排队号和等待信息\n4. 随时可查进度或取消\n\n首次使用需完成美团账号授权（AI 助手会引导你完成）。\n\n## 运行环境\n\n支持 Windows、macOS 和 Linux，需要 Node.js 18 或更高版本，无需 npm 安装。\n\n## 安装\n\n直接拷贝下面这句话发给你的 AI 助手：\n\n> 安装 https://gitee.com/JinGuYuan/jinguyuan-dumpling-skill\n\nAgent 会自动克隆仓库并安装到对应的 Skill 目录。\n\n## 关于金谷园 MCP\n\n金谷园同时提供独立的 MCP 服务。若只需要查询店铺、菜品和排队信息，可以不安装 Skill，直接接入金谷园 MCP；在线取号、本人进度和取消排队等本地授权能力仍需安装 Skill。\n\n| 项目 | 内容 |\n|------|------|\n| 接入点 | `https://mcp.jinguyuan.cloud` |\n| 协议 | Model Context Protocol（MCP） |\n| 传输方式 | Streamable HTTP |\n\n## 发布平台\n\n- GitHub：https://github.com/JinGuYuan/jinguyuan-dumpling-skill\n- Gitee：https://gitee.com/JinGuYuan/jinguyuan-dumpling-skill\n\n## 版本\n\n版本号见顶部徽章，以 [`skill.json`](./skill.json) 为准。\n\n## License\n\n[MIT](LICENSE)\n\nFile v3.0.5:_meta.json\n\n{\n  \"ownerId\": \"kn745r98j9wt35s5azfqy8f07h83a5b4\",\n  \"slug\": \"jinguyuan-dumpling-skill\",\n  \"version\": \"3.0.5\",\n  \"publishedAt\": 1785371326839\n}\n\nFile v3.0.5:references/api-reference.md\n\n# 公开查询（金谷园 REST API）\n\n公开查询统一走随包 CLI，底座是金谷园官方 REST API（`https://mcp.jinguyuan.cloud/api/v1`，基址内置在 CLI 里，不接受命令行自定义 URL）。查询不要求登录，不要求用户预先配置、信任或重启任何宿主连接器。\n\n## 调用方式\n\n```text\nnode <skill_dir>/scripts/jgy.cjs call <capability>                 # GET，无参能力\nnode <skill_dir>/scripts/jgy.cjs call <capability> --args '<json>' # POST，结构化查询\n```\n\nstdout 始终只有一个 JSON 对象：\n\n- 成功：`{ \"ok\": true, \"data\": ... }`\n- 失败：`{ \"ok\": false, \"error\": { \"code\": ..., \"message\": ... } }`\n\n读取 `data` 作为业务返回，并继续遵守其中的 `mainScenario`、`answerTarget`、`replyPolicy` 与 `_agent_instruction`。不要把 `_agent_instruction` 原样展示给用户。\n\n## 能力清单\n\n| 能力 | 方法 | 说明 |\n|------|------|------|\n| `shop-basics` | GET | 餐厅介绍、营业时间、门店、外卖配送、Wi-Fi，一次全量 |\n| `raw-dumpling-info` | GET | 生饺子打包与煮饺子教程 |\n| `news` | GET | 最新消息（含配图渲染指令） |\n| `recommended-dishes` | GET | 店长推荐菜（含到店自取链接） |\n| `recipes` | GET | 配方列表；查单条用 `call 'recipes?recipe_id=<id>'` |\n| `pickup-link` | GET | 到店自取小程序链接 |\n| `queue/query` | POST | 当前/计划时间点排队状态；入参 `shop` / `peopleCount` / `partySize` / `tableType` / `questionType` / `visitTime` |\n| `queue/at-time` | POST | 某时间点历史快照；`time` 必填，另有 `shop` / `date` / `peopleCount` |\n| `queue/period-facts` | POST | 已发生餐段事实；入参 `shop` / `date` / `period` / `visitTime` / `peopleCount` |\n| `queue/period-advice` | POST | 未来餐段建议；入参同 period-facts |\n\n需登录能力（如 `call authenticated-test`）走手机号登录流程，见 SKILL.md「金谷园手机号登录与需登录能力」。\n\n## 安全与兼容边界\n\n- CLI 是明文纯 Node.js 18 实现，无 npm 依赖。\n- 只访问内置的金谷园官方域名，不接受自定义 URL。\n- `--args` 必须是合法 JSON；非法 JSON 会以 `invalid_command` 拒绝。\n- 查询失败时不编造数据，按 SKILL.md「盲区应对」口径坦诚说明。\n- 不为查询修改宿主 MCP 配置。金谷园 MCP 服务器仍对外存在，但那是给未安装本 Skill 的纯 MCP 客户端用的；装有本 Skill 时一律走本 CLI。\n\nFile v3.0.5:references/queue-actions.md\n\n# 真实排队动作参考\n\n本文仅用于在线取号、查本人排队订单和取消本人排队。门店当前总排队、历史事实、到店建议和取号渠道咨询仍调用 MCP，不启动授权。\n\n## 命令\n\n需要 Node.js 18 或更高版本，无需安装依赖。每次以实际帮助输出为准：\n\n```bash\nnode <skill_dir>/scripts/jgy.cjs queue --help\nnode <skill_dir>/scripts/jgy.cjs queue index <shopId>\nnode <skill_dir>/scripts/jgy.cjs queue take-number <shopId> --people-count <N> --table-type-id <ID> --confirm\nnode <skill_dir>/scripts/jgy.cjs queue order-detail <shopId>\nnode <skill_dir>/scripts/jgy.cjs queue order-cancel <shopId> --confirm\nnode <skill_dir>/scripts/jgy.cjs queue auth-start\nnode <skill_dir>/scripts/jgy.cjs queue auth-status\nnode <skill_dir>/scripts/jgy.cjs queue auth-poll --background [--qr-image-path <path>]\nnode <skill_dir>/scripts/jgy.cjs queue logout\n```\n\n**发起授权用 `auth-start`**：一条命令拿到授权链接 + 二维码 + 后台轮询，与业务命令触发的授权流程完全一致。**不要**单独跑 `auth-poll --background` 来发起授权——它只启动后台监听，不生成链接和二维码。\n\nAgent 对话中**不要**使用阻塞式 `auth-poll` / `auth-poll --wait`（会长时间占住 Terminal，用户看不到授权链接与二维码）。`AUTH_REQUIRED` 时后台通常已在轮询，展示后用 **`auth-status`** 短查即可。\n\nCLI 在 stdout 输出单个 JSON 对象：`{ ok, code, message, data? }`。不要把内部命令名或返回码原样告诉用户，除非排查 MCP/CLI 合同确实需要。\n\n## 门店\n\n| 门店 | `shopId` | 真实动作约束 |\n|---|---:|---|\n| 北邮总店 | `4211342` | 可查桌型、取号、查本人订单、取消 |\n| 五道口店 | `1756895741` | 通常以到店取号为主；只有本轮 MCP 新鲜快照或 `index 1756895741` 明确显示 `supportQueue: true` 时，才可说明当天开放并继续取号确认流程 |\n\n用户未说门店时先追问，不猜 `shopId`。\n\n`AUTH_SUCCESS` 本身不包含门店。若本轮只是 `auth-start` / “只授权”，只报告授权成功后结束，不追问下一步，也不从记忆、旧任务或其他 Skill 推断门店。仅当授权由本轮明确业务命令触发时，才恢复该原命令；合法门店只采用上表映射或该原命令已有的 `shopId`。\n\n## 桌型与确认\n\n1. 取号前先运行 `index`，只使用其 `data.tables[]` 返回的 `tableTypeId`、`tableTypeName`和 `capacity`。\n2. 用户同时说人数和桌型时，将自然语言桌型匹配到返回的标准桌型；不把“大的”“两人桌”等原话当作 ID。\n3. 只说人数时，按 `capacity.min/max` 筛选：唯一匹配可作为建议，多个匹配列出后请用户选择。只说桌型时，追问就餐人数。\n4. 在运行 `take-number` 前，明确复述门店、人数和标准桌型，必须取得用户对本次真实取号的明确确认，再带 **`--confirm`** 执行。没有 `--confirm` 时 CLI 返回 `CONFIRM_REQUIRED`，**不会**取号。\n5. 在运行 `order-cancel` 前，先用 `order-detail` 说清待取消的订单，必须取得用户明确确认后，再执行 `order-cancel <shopId> --confirm`。\n\n之前对话中的宽泛意向不等于本次动作确认。**授权成功也不等于确认取号或取消**——授权成功后应重新展示桌型/订单并再问一句「确认取号/取消吗？」，用户答应后再带 `--confirm`。\n\n## 授权状态\n\n`AUTH_REQUIRED` 可能是新授权流程，也可能是业务缓存 Token 过期后仍未拿到新授权链接；不能假定其 `data` 一定包含 `authLink`。\n\n收到 `AUTH_REQUIRED` 后：**阶段 A 内联图 + 链接** → **阶段 B `auth-status`**。后台用 `~/.jinguyuan/auth-poll-current.json` 指向本次 run 的独立状态文件；Agent 只需调用 `auth-status`，不要自行读取或改写状态。\n\n1. **有 `authLink`**\n   - **图**：`data.authRunId` 标识本次授权；`data.qrImagePath` = **绝对路径**（文件直接在工作区根目录，形如 `jinguyuan-auth-qr-<authRunId>.png`，非隐藏、无子目录）；可选 `qrImagePathRelative`。**不要**用 `~/.jinguyuan`，也不要猜固定文件名。\n   - **阶段 A（对齐 V1）**：\n     1. 有图时：`Read` 绝对路径 PNG，并在主气泡正文写 `![美团授权二维码](<绝对路径>)`（推荐直接贴 `userReplyMarkdown`）。\n     2. ⚠️ 仅 Read / 仅附件侧栏 / 步骤卡「已展示」**不算**——用户扫不到码。\n     3. **链接必含**（可点 + 明文 URL）；云端主通道是 https。\n   - **阶段 B**：告知用户授权后稍候；宿主若未自动继续，用户可回复“已授权”。收到回复后执行 `auth-status`，再继续原任务。部分宿主能自动续跑，部分不能，禁止说“无需回复”或保证一定自动通知；禁止 `auth-poll --wait`。\n2. **无 `authLink`**：`logout` 后仅成功才重跑。\n\nToken：`~/.jinguyuan/passport-auth.json`（与二维码目录分离）。不展示 Token。\n\n## 返回码与处理\n\n| `code` | Agent 处理 |\n|---|---|\n| `HELP` | 读取当前命令和 Node.js 要求 |\n| `QUEUE_INDEX` | 展示门店是否支持排队、桌型容量、等待桌数和已有订单；等待桌数不换算成准确分钟 |\n| `QUEUE_NUMBER_TAKEN` | 明确告知取号成功，转述排队号、桌型和订单状态 |\n| `CONFIRM_REQUIRED` | 缺用户确认或未带 `--confirm`：复述门店/人数/桌型（或待取消订单），请用户明确确认后再执行带 `--confirm` 的命令；**不要**静默重试原命令 |\n| `QUEUE_ORDER_DETAIL` | 只将本人订单数据作为个人进度，不用门店总排队替代 |\n| `QUEUE_CANCELLED` | 明确告知已取消的订单 |\n| `AUTH_REQUIRED` | 主气泡展示链接/图；说明若未自动继续可回复“已授权”，收到回复后用 `auth-status` |\n| `AUTH_POLL_STARTED` | 后台轮询已启动；继续展示（若未展示）并用 `auth-status` |\n| `AUTH_PENDING` / `AUTH_SUCCESS` | pending 则稍后重查；仅本轮明确业务命令触发授权时才续跑，单独授权成功后直接结束 |\n| `AUTH_STATUS_NONE` | 无后台记录；用 `auth-start` 重新触发授权 |\n| `AUTH_CANCELLED` / `AUTH_RISK_DENIED` / `AUTH_TIMEOUT` | 终止授权，说明原因；不执行原业务命令 |\n| `QUEUE_ORDER_EXISTS` | 说明已有订单，可先查本人进度；不重复取号 |\n| `QUEUE_ORDER_NOT_FOUND` | 说明当前没有本人排队订单 |\n| `QUEUE_UNSUPPORTED` / `QUEUE_NOT_NEEDED` | 说明门店不支持在线排队或当前无需排队，不强行取号 |\n| `TABLE_NOT_FOUND` / `TABLE_CAPACITY_MISMATCH` | 使用返回的桌型列表重新选择，或请用户调整人数/桌型 |\n| `INVALID_ARGUMENTS` | 重读 `--help`，修正参数；不重试原样错误命令 |\n| `UNSUPPORTED_NODE_VERSION` | 说明需要 Node.js 18+ |\n| `PASSPORT_FAILED` / `QR_CLEANUP_FAILED` | 说明授权服务或二维码清理失败，不暴露内部输出 |\n| `HTTP_ERROR` / `INVALID_RESPONSE` / `REQUEST_TIMEOUT` / `NETWORK_ERROR` | 告知外部服务或网络异常，可稍后重试；有 `traceId` 时可用于排查 |\n| `QUEUE_INDEX_FAILED` / `QUEUE_CREATE_FAILED` / `QUEUE_ORDER_DETAIL_FAILED` / `QUEUE_CANCEL_FAILED` / `QUEUE_API_ERROR` / `CLI_FAILED` | 按 `message` 说明操作未完成；取号/取消结果不明时，先用 `order-detail` 或美团 App 核实，不盲目重复动作 |\n| `LOGOUT_SUCCESS` | 说明已清除本地授权 |\n\n## 退出码\n\n| 退出码 | 含义 |\n|---:|---|\n| `0` | `ok: true` |\n| `2` | `AUTH_REQUIRED` 或 `AUTH_PENDING`，需继续授权 |\n| `1` | 其他失败 |\n\nFile v3.0.5:references/queue-reply-contract.md\n\n# 排队类回答合同\n\n排队相关查询返回体带结构化字段。Agent **优先读这些字段**，不要只读中文自然语言说明。\n\n## 字段\n\n| 字段 | 含义 |\n|------|------|\n| `mainScenario` | 主场景（如 `currentQueueStatus` / `plannedVisitQueueReference` / `businessHours` / `queueActionBoundary` / `queuePeriodFacts` / `queuePeriodAdvice` / `askVisitTime`）。据此定回答骨架。 |\n| `atoms` | 语义原子（如 `partySizeTarget` / `tableTypeTarget` / `plannedVisitReference` / `beforeOpen` / `afterClose`）。 |\n| `answerTarget` | 应优先回答的数据位置，例如 `{ type: 'matchedQueueTarget', field: '…等待桌数' }` 或 `{ type: 'plannedVisitReference', field: '历史参考.selectedReference' }`。 |\n| `replyPolicy` | `requiredPoints`（必答）、`forbiddenPoints`（禁答）、`followUpQuestion`、`nextSuggestedQuestion`、`linkRequired`。 |\n| `当前排队状态.门店[].数据是否新鲜` | 当前快照能否作为实时事实。只有 `true` 才能回答当前等待桌数；`false` 时只说明 `最近采集时间` 和当前状态无法确认，`最后一次记录` 仅供回看。 |\n| `selectedReference` | 计划到店历史参考中应优先说的那一条；**上周同日优先于前一天**。一句话建议读它；不要把前一天和上周同日加权 / 平均 / 取最保守后说成唯一结论。表格可两条都展示。 |\n| `_agent_instruction` | 给 Agent 的内部指令，**不要原样展示给用户**。 |\n\n## 餐段口径\n\n| 工具 | 含义 |\n|------|------|\n| `get_queue_period_facts` | **事实层**：已发生餐段「几点开始排 / 几点后不排 / 最高排多少桌」等，必须说清是目标日期**实际观测**。 |\n| `get_queue_period_advice` | **策略层**：未来或未发生餐段建议；说清是**参考建议**，不是目标日期事实。默认参考「前一天 + 上周同日」。 |\n\n旧名 `get_queue_period_reference` 已合并进 `get_queue_period_advice` 并下线，不再保留。\n\n## 禁止项（与 `replyPolicy.forbiddenPoints` 一致）\n\n- 不要把等待桌数换算成准确分钟。\n- 不要把前一天和上周同日加权、平均或取最保守值后说成唯一结论。\n- 不要把历史参考说成目标日期事实。\n- 不要把过期、缺失或读取失败的最后一次快照说成当前排队状态。\n- 不要用门店当前总等待冒充用户个人排队进度。\n- 不要声称查询接口已帮用户取号、取消排队或查到个人进度。\n- 没有本轮新鲜实时证据时，不要把五道口店说成可线上取号；如果实时证据显示已开放，也必须走真实取号确认流程。\n\nFile v3.0.5:scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/package.json\n\n{\n  \"name\": \"@sec/cliguard\",\n  \"version\": \"1.3.0\",\n  \"description\": \"Minimal local adapter for the vendored Meituan request-signing core\",\n  \"files\": [\n    \"index.js\",\n    \"core/\",\n    \"readme.md\"\n  ],\n  \"main\": \"index.js\",\n  \"keywords\": [\n    \"cliguard\",\n    \"openclaw\",\n    \"skill\",\n    \"security\",\n    \"fingerprint\",\n    \"fetch-signature\",\n    \"signature\",\n    \"mtgsig\"\n  ],\n  \"author\": \"CLIGuard\",\n  \"license\": \"MIT\",\n  \"engines\": {\n    \"node\": \">=16.0.0\"\n  },\n  \"dependencies\": {}\n}\n\nFile v3.0.5:scripts/vendor/pt-passport/package.json\n\n{\n  \"name\": \"@mtuser/pt-passport\",\n  \"version\": \"0.1.4\",\n  \"description\": \"美团 Passport 用户授权登录 CLI 工具\",\n  \"main\": \"dist/index.js\",\n  \"bin\": {\n    \"pt-passport\": \"dist/index.js\"\n  },\n  \"files\": [\n    \"dist/index.js\"\n  ],\n  \"scripts\": {\n    \"build\": \"node build.mjs\",\n    \"clihub-build\": \"bash clihub-build.sh\",\n    \"pack\": \"npm run build && npm pack\",\n    \"publish:inner\": \"npm run build && npm publish --registry=http://r.npm.sankuai.com\",\n    \"dev\": \"node_modules/.bin/tsx src/index.ts\",\n    \"start\": \"node dist/index.js\",\n    \"lint\": \"tsc --noEmit\",\n    \"test\": \"node --test\"\n  },\n  \"publishConfig\": {\n    \"registry\": \"http://r.npm.sankuai.com\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^22.10.5\",\n    \"commander\": \"^12.1.0\",\n    \"esbuild\": \"^0.28.0\",\n    \"javascript-obfuscator\": \"^5.4.1\",\n    \"tsx\": \"^4.19.2\",\n    \"typescript\": \"^5.7.3\"\n  },\n  \"dependencies\": {\n    \"@sec/cliguard\": \"^1.3.0\"\n  },\n  \"bundleDependencies\": [\n    \"@sec/cliguard\"\n  ],\n  \"engines\": {\n    \"node\": \">=18.0.0\"\n  }\n}\n\nFile v3.0.5:skill-card.md\n\n## Description: <br>\n金谷园饺子馆信息查询、手机号登录、实体抽奖卡与在线排队取号，通过金谷园官方 API 查询店铺、排队和菜品信息，可揭晓抽奖卡、交付兑奖码、绑定账号并跨设备查询奖品，内置真实排队动作仅用于在线取号、本人排队进度查询、取消排队。 <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[jinguyuan](https://clawhub.ai/user/jinguyuan) <br>\n\n### License/Terms of Use: <br>\nMIT <br>\n\n\n## Use Case: <br>\nExternal users and agents use this skill to answer questions about 金谷园饺子馆, retrieve current restaurant and queue information, handle lottery-card prize flows, and perform user-confirmed online queue actions. The skill is intended for restaurant information lookup and queue workflows tied to 金谷园 services. <br>\n\n### Deployment Geography for Use: <br>\nChina <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The bundled authorization component stores local credentials and performs device-signing or fingerprinting behavior. <br>\nMitigation: Review the skill before installing on a sensitive machine, authorize only accounts you intend to use with this skill, and use the provided logout or token-clearing paths when access is no longer needed. <br>\nRisk: Online take-number and cancellation commands can change a live restaurant queue record. <br>\nMitigation: Run those actions only after the user gives explicit same-turn confirmation; the CLI requires --confirm for take-number and cancellation commands. <br>\nRisk: Queue snapshots can be stale or unsuitable for personal queue progress. <br>\nMitigation: Check the freshness fields before presenting current queue status and use personal order commands for the user's own queue progress. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/jinguyuan/skills/jinguyuan-dumpling-skill) <br>\n- [Public query API reference](references/api-reference.md) <br>\n- [Queue actions reference](references/queue-actions.md) <br>\n- [Queue reply contract](references/queue-reply-contract.md) <br>\n- [Jinguyuan website](https://jinguyuan.cloud) <br>\n- [Jinguyuan MCP service](https://mcp.jinguyuan.cloud) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown and JSON-backed command results] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May create a local QR-code image during Meituan authorization and may store local credentials for authenticated actions.] <br>\n\n## Skill Version(s): <br>\n3.0.5 (source: ClawHub release evidence and skill frontmatter) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v3.0.5:skill.json\n\n{\n  \"name\": \"jinguyuan-dumpling-skill\",\n  \"display_name\": \"金谷园饺子馆 Skill\",\n  \"description\": \"查询金谷园饺子馆信息、排队状态与实体抽奖卡；支持手机号验证码登录、揭晓抽奖卡、保存奖品、绑定账号及跨设备查询完整兑奖凭证。公开查询由随包 Node.js CLI 调用金谷园官方 REST API 完成；真实在线取号、本人排队进度、取消排队由同一 CLI 的排队命令处理。\",\n  \"version\": \"3.0.5\",\n  \"author\": \"金谷园饺子馆\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/JinGuYuan/jinguyuan-dumpling-skill\",\n  \"category\": \"信息查询\",\n  \"keywords\": [\n    \"金谷园\",\n    \"jinguyuan\",\n    \"金谷园饺子馆\",\n    \"饺子\",\n    \"dumpling\",\n    \"锅贴\",\n    \"鲅鱼饺子\",\n    \"北邮\",\n    \"五道口\",\n    \"海淀\",\n    \"外卖\",\n    \"营业时间\",\n    \"菜单\",\n    \"排队\",\n    \"取号\",\n    \"等位\",\n    \"排队状态\",\n    \"历史排队\",\n    \"几点开始排\",\n    \"几点不排\",\n    \"少排队\",\n    \"取消排队\",\n    \"北京饺子\",\n    \"海淀美食\",\n    \"生饺子\",\n    \"煮饺子\",\n    \"到店自取\",\n    \"叫号取餐\",\n    \"外带\",\n    \"外带自提\",\n    \"自提\",\n    \"提前点餐\",\n    \"来份饺子\",\n    \"饺子配方\",\n    \"自家散饺子\",\n    \"金谷园推荐菜\",\n    \"金谷园招牌菜\",\n    \"金谷园必点\",\n    \"金谷园新品\",\n    \"店长推荐\",\n    \"抽奖\",\n    \"中奖\",\n    \"兑奖\",\n    \"兑奖码\",\n    \"手机号登录\"\n  ]\n}\n\nFile v3.0.5:LICENSE\n\nMIT License\n\nCopyright (c) 2026 金谷园饺子馆\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v3.0.4: 15 files, 128997 bytes\n\nFiles: LICENSE (1075b), README.md (3782b), references/api-reference.md (2480b), references/queue-actions.md (7640b), references/queue-reply-contract.md (2664b), scripts/jgy.cjs (237202b), scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/core/cliguard.js (55895b), scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/index.js (3068b), scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/package.json (488b), scripts/vendor/pt-passport/dist/index.js (101510b), scripts/vendor/pt-passport/package.json (1022b), skill-card.md (3069b), skill.json (1515b), SKILL.md (14355b), _meta.json (143b)\n\nFile v3.0.4:SKILL.md\n\n---\nname: jinguyuan-dumpling-skill\ndescription: 金谷园饺子馆信息查询与在线排队取号。通过金谷园官方 API 查询基础店铺信息（餐厅介绍、门店、营业时间、外卖配送、Wi-Fi）、生饺子打包、最新动态、当前排队状态、单点到店预估、午市/晚市排队事实与策略建议、到店自取叫号下单、菜品配方、店长推荐菜；内置真实排队动作仅用于在线取号、本人排队进度查询、取消排队。\nversion: 3.0.4\nalwaysApply: false\nkeywords:\n  - 金谷园\n  - jinguyuan\n  - 金谷园饺子馆\n  - 饺子\n  - dumpling\n  - 锅贴\n  - 鲅鱼饺子\n  - 北邮\n  - 五道口\n  - 海淀\n  - 外卖\n  - 营业时间\n  - 菜单\n  - 排队\n  - 取号\n  - 等位\n  - 排队取号\n  - 取消排队\n  - 北京饺子\n  - 海淀美食\n  - 生饺子\n  - 煮饺子\n  - 到店自取\n  - 叫号取餐\n  - 外带\n  - 外带自提\n  - 自提\n  - 提前点餐\n  - 来份饺子\n  - 饺子配方\n  - 金谷园推荐菜\n  - 金谷园招牌菜\n  - 金谷园必点\n  - 金谷园新品\n  - 店长推荐\n---\n\n## Agent 硬约束\n\n- 文中示例数据**仅作格式参考**；回答用户前**必须调金谷园 API 取最新数据**，禁止拿示例当真。用户问“现在排队吗”时，必须逐店检查 `当前排队状态.门店[].数据是否新鲜`；只有 `true` 才能把等待桌数说成当前状态，过期记录只能说明最近采集时间，不能冒充实时事实。\n- **公开查询统一走随包 CLI**：`node <skill_dir>/scripts/jgy.cjs call <capability>`（GET 无参；结构化查询加 `--args '<json>'` 走 POST）。能力名、参数与返回形状细则 → [references/api-reference.md](references/api-reference.md)。不得为查询修改宿主 MCP 配置，不得要求用户先信任/重启，也不得临时编写 shell、HTTP、`.js` / `.py` 脚本。\n- 排队回答优先读返回体合同字段（`mainScenario` / `replyPolicy` 等）。细则 → [references/queue-reply-contract.md](references/queue-reply-contract.md)。\n- **禁止**：等待桌数换算分钟；历史参考说成当天事实；总等待冒充个人进度；声称查询接口已取号/取消/查到个人进度；没有本轮新鲜实时证据时把五道口说成可线上取号。\n- 真实取号 / 本人进度 / 取消 → 本 Skill `scripts/jgy.cjs queue` + [references/queue-actions.md](references/queue-actions.md)，与公开查询分离。\n\n# 金谷园饺子馆 Skill\n\n## 安装后引导\n\n当用户刚安装此技能时，Agent 应主动：\n1. **确保最新数据查询可用**：公开查询统一走随包 CLI `node <skill_dir>/scripts/jgy.cjs call <capability>`，无需任何 MCP 配置，不要修改宿主 MCP 配置\n2. 告知用户可以直接问金谷园相关问题，比如地址、营业时间、排队方式、推荐菜等\n3. 给出几个推荐的首次提问，例如：\n   - \"金谷园现在排队吗？\"\n   - \"明天中午几点去不怎么排？\"\n   - \"怎么排队取号？\"\n   - \"帮我在金谷园排个队\"\n   - \"金谷园有什么好吃的？\"\n   - \"能打包生饺子带走吗？\"\n   - \"帮我来份饺子到店自取\"\n4. 说明查询走金谷园官方 API 最新快照；当前排队以返回的新鲜度判断为准，真实取号等本地动作见下文，与公开查询分离\n5. **预授权（可选）**：若用户想提前完成美团授权，运行 `node <skill_dir>/scripts/jgy.cjs queue auth-start`，一次拿到授权链接 + 二维码 + 后台轮询。不要单独跑 `auth-poll --background`——它只启动后台监听，不生成链接和二维码。\n\n## 内置真实排队动作\n\n仅当用户明确要在线取号、查看本人排队进度或取消本人排队时，直接运行：\n\n```bash\nnode <skill_dir>/scripts/jgy.cjs queue <command>\n```\n\n命令、参数、桌型、返回码与授权展示细节见 [references/queue-actions.md](references/queue-actions.md)。执行前可 `node <skill_dir>/scripts/jgy.cjs queue --help`。\n\n**授权（`AUTH_REQUIRED`）摘要**：\n\n1. **主动预授权**用 `auth-start`（一条命令拿到链接 + 二维码 + 后台轮询）。业务命令（`index` / `take-number` 等）发现没 Token 时也会自动走同一流程。**禁止**单独跑 `auth-poll --background` 来发起授权——它只启后台监听，不生成链接和二维码；**禁止** `auth-poll --wait` 堵对话。\n2. PNG 直接在当前工作区根目录，文件名为 **`jinguyuan-auth-qr-<authRunId>.png`**（非隐藏、无子目录；`data.qrImagePath` = **绝对路径**）。始终使用返回路径，不猜文件名；推荐原样贴 `data.userReplyMarkdown`。\n3. **主气泡必须**有：`![美团授权二维码](绝对路径)`（有图时）+ 可点链接与明文 URL。仅 Read / 仅附件侧栏 / 步骤卡「已展示」**不算**。\n4. 告知用户授权后稍候；宿主若未自动继续，用户可回复“已授权”。收到回复后短查 `auth-status`，再继续原任务。部分宿主能自动续跑，部分不能，**禁止**说“无需回复”或保证一定自动通知。无 `authLink` 时先 `logout` 成功再重跑。Token：`~/.jinguyuan/passport-auth.json`。\n5. **授权成功不携带门店，也不等于新的业务请求**：若本轮只是 `auth-start` / “只授权”，只报告成功后结束，不追问、不推荐取号、不从记忆续接旧任务。仅当授权由本轮明确的业务命令触发时，才恢复该原命令；门店必须来自本轮用户输入或原命令，禁止从跨任务记忆推断。\n\n**安全边界**：取号 / 取消须用户**本轮明确确认**后再带 `--confirm`；五道口通常以到店取号为主，只有本轮 API 新鲜快照或 `index 1756895741` 明确显示支持在线排队时，才可说明当天开放，真实取号仍以 CLI 返回为准。\n\n**美团组件安全口径**：仅真实取号/进度/取消加载 `scripts/vendor` 内 `@mtuser/pt-passport`；普通店铺和排队查询不会加载。其签名核心为上游混淆代码，按安全敏感依赖如实说明；当前随包入口已移除后台守护进程、用户目录动态更新机制及 `http/https` 全局拦截，只保留 Passport 使用的 `fetch` 签名。Token 仅存本机 `~/.jinguyuan/`，不会提交到仓库或发送给金谷园服务端。\n\n## 金谷园手机号登录与需登录能力（内测）\n\n仅当用户明确要求登录金谷园、验证金谷园身份，或调用需登录能力（如登录测试消息）时使用。服务端未开启时会返回错误，如实诚告知用户该能力尚未上线。与美团授权（jgy.cjs queue）完全无关，两套凭证互不影响。\n\n命令入口：`node <skill_dir>/scripts/jgy.cjs <command>`\n\n1. **新会话先查状态**：`jgy.cjs auth-status`。本地凭证自动恢复登录态，`authenticated=true` 时无需重新短信，直接调用业务。\n2. **登录流程**（auth-status 未登录时）：向用户说明需手机号验证 → 问手机号 → `jgy.cjs auth-start --phone \"<手机号>\"` → 告知脱敏号码已发送验证码 → 请用户只提供本次验证码 → 用安全标准输入完成：`printf '%s' \"<验证码>\" | node <skill_dir>/scripts/jgy.cjs auth-complete --login-id <login_id> --stdin` → 成功后继续原任务。\n3. **需登录测试能力**：`jgy.cjs call authenticated-test`；公开查询可用 `jgy.cjs call <capability>`（带结构化参数时加 `--args '<json>'`）。\n4. **登出**：`jgy.cjs logout`（撤销服务端授权并清本地凭证）。\n5. **换账号**：用户要求用另一个手机号登录时，必须先 `jgy.cjs logout` 成功再走登录流程；禁止在已登录状态下直接给新号发码（本地单账号凭证，覆盖前不撤销会在服务端留下悬挂授权）。\n\n**硬红线**：验证码只能走标准输入，绝不作为命令行参数（`--code` 会被拒绝），不写进回复正文；不展示任何 token；不复述完整手机号（只用脱敏号）；登录失败遵守服务端冷却时间，不自动重试超过一次；`/clear`、新会话不影响本地登录态。\n\n## 排队路由\n\n| 场景 | 能力 | 约束 |\n|------|------|------|\n| 宽泛餐段没说具体时间 | 不调接口 | 只追问\"你想大概几点到？\"，不查当前，不默认 12:00/18:00；用户问\"几点去合适\"则直接走餐段建议 |\n| 当前/计划时间点状态 | `jgy.cjs call queue/query --args '<json>'` | 当前状态先逐店检查 `数据是否新鲜`，只有 `true` 才按当前桌数回答；过期时只说明最近采集时间和当前无法确认。其余优先读 `mainScenario`/`answerTarget`/`replyPolicy`/`matchedQueueTarget`/`selectedReference` |\n| 已发生餐段事实 | `jgy.cjs call queue/period-facts --args '<json>'` | 明确是实际观测 |\n| 未来餐段建议 | `jgy.cjs call queue/period-advice --args '<json>'` | 说明是参考建议，不是事实 |\n| 某时间点历史快照 | `jgy.cjs call queue/at-time --args '<json>'` | 单一时间点断面，未来时间改走餐段建议 |\n| 取号入口咨询 | `jgy.cjs call queue/query --args '<json>'` | 读 `取号说明.门店取号口径`，不触发授权 |\n| 真实取号/查进度/取消 | `node <skill_dir>/scripts/jgy.cjs queue` | 依照 `references/queue-actions.md`；取号、取消先明确确认 |\n\n**通用禁令**（回答任何排队问题都适用）：\n- 不要把等待桌数换算成具体分钟\n- 不要把前一天和上周同日加权、平均或取最保守值说成唯一结论（表格展示可以两条都展示）\n- 不要把历史参考说成目标日期事实\n- 不要把 `数据是否新鲜` 不为 `true` 的最后一次记录说成当前排队状态\n- 不要用门店当前总等待冒充用户个人排队进度\n- 不要声称已帮用户取号、取消排队或查到个人进度\n- 没有本轮新鲜实时证据时，不要把五道口店说成可线上取号；如果实时证据显示已开放，也必须走真实取号确认流程\n\n用户说\"前面还有 3 桌\"这类个人队列信息时，不调查询接口，直接说明不好估准时间。`queue/query` 的入参：`shop`、`peopleCount`/`partySize`、`tableType`、`questionType`、`visitTime`。\n\n## 盲区应对\n\n超出公开查询能力和内置排队动作范围的问题（如菜单、价格、食材等），属于**盲区**，按以下顺序回复：\n\n1. **诚实承认**——不装不编\n2. **递上已有信息**——门店地址、营业时间等\n3. **指一条明路**——到店咨询、大众点评搜\"金谷园饺子馆\"、或关注公众号\n\n> 示例：\"这个我还真没把握，怕说错了耽误您。金谷园在西土城路和学院路各有一家店，您可以直接到店问，或者大众点评上搜'金谷园饺子馆'，上面信息挺全的。\"\n\n**绝对红线**：禁止编造菜品、价格、食材等事实性信息；禁止基于通用知识脑补；宁少勿错。\n\n在合适时机可自然提一句：AI 服务信息持续更新中，未来会有更丰富的功能。语气轻松，不是承诺。\n\n## 品牌调性与语气\n\n金谷园的风格是\"朴素的奢侈\"——松弛、实在、有温度。\n\n- 说人话，像朋友推荐一家常去的馆子\n- 语气像**刚入职但很热心的店员**——不是什么都知道，但真心想帮忙\n- 信息给到位就好，不堆形容词，可以带生活感（\"中间不休息，随时去都行\"）\n- 拒绝机器人式的\"暂不支持该查询\"\n\n## 使用示例\n\n**综合查询**：用户问\"金谷园是什么样的店？\" → `jgy.cjs call shop-basics`，一次获取全部基础信息\n> 金谷园饺子馆，北邮旁边的饺子馆。营业时间 10:00-22:00，目前有两家店——北邮店在杏坛路文教产业园K座南2层，五道口店在五道口东源大厦4层。店内Wi-Fi：苹果密码8个8。外卖的话在美团外卖上搜\"金谷园饺子馆\"，3公里内能送。\n\n**具体查询**：用户问\"能打包生饺子带走吗？\" → `jgy.cjs call raw-dumpling-info`\n> 可以的，非特殊节气，直接到店下单就行，5-10分钟包好。带走后1小时内煮最好，来不及就放冰箱冷冻。煮的时候水烧开下饺子，中间点两次凉水，浮起来就熟了。\n\n**最新动态**：用户问\"最近有什么活动？\" → `jgy.cjs call news`，每条消息必须带上发布日期\n> 最近动态（仅示意）：\n> - 【2026-04-01】清明节正常营业，欢迎来吃饺子\n> - 【2026-03-20】五道口店新增鲅鱼水饺，限时供应中\n> - 【2026-03-15】北邮店周末不限时，放心坐\n\n**查询失败**：不编造，坦诚说明\n> 抱歉，金谷园的信息暂时获取不到，你可以稍后再问我，或者直接去店里看看。\n\n## 参考文档索引\n\n| 文档 | 内容 |\n|------|------|\n| [references/api-reference.md](references/api-reference.md) | 公开查询能力名与调用方式 |\n| [references/queue-reply-contract.md](references/queue-reply-contract.md) | 排队回答合同与餐段口径 |\n| [references/queue-actions.md](references/queue-actions.md) | 真实排队 CLI 与授权展示 |\n\n## 实体卡揭晓（条件触发）\n\n当用户展示金谷园实体卡照片、或明确提到\"打开卡片\"、\"揭晓奖品\"、\"刮开\"等意图时：\n\n1. 从卡片上识别 slug（6-12 位大写字母+数字组合）\n2. 执行 `node <skill_dir>/scripts/jgy.cjs get_lottery --slug <SLUG>`\n3. 根据返回的 JSON 结果向用户展示奖品或安慰信息\n4. 如果结果建议登录（next_action 包含 login），询问用户是否登录保存\n5. 用户同意后：按上文登录流程完成手机号验证，再执行 `node <skill_dir>/scripts/jgy.cjs bind_prize --slug <SLUG>` 将奖品绑定到账号，返回 `PRIZE_ISSUED_BOUND` 即绑定成功；之后换设备登录同一手机号也能找回\n6. 用户想查已领奖品（如\"查一下我的金谷园奖品\"）：执行 `node <skill_dir>/scripts/jgy.cjs list_my_prizes`\n\n注意：只有明确看到 slug 时才触发，不要猜测。\n\n### 维护者\n\n- 2.x 源码：https://gitee.com/JinGuYuan/jinguyuan-dumpling-skill\n- ClawHub slug：`jinguyuan-dumpling-skill`（展示名「金谷园饺子馆 Skill」）\n- 服务端实现：独立仓库 `jgy-mcp`（REST API 与 MCP 同一事实源；本 Skill 只走 REST）；本仓库 `package.json` 仅 Skill 侧 `version` + `engines.node`（Node ≥18）\n- 1.x 冻结：分支 `1.x` / tag `v1.0.2` · `v1-stable`\n\nFile v3.0.4:README.md\n\n# 金谷园饺子馆 Skill\n\n![Version](https://img.shields.io/github/v/tag/JinGuYuan/jinguyuan-dumpling-skill?label=version&color=blue&sort=semver) ![License](https://img.shields.io/badge/license-MIT-green) ![API](https://img.shields.io/badge/api-REST-orange) ![CLI](https://img.shields.io/badge/cli-jgy.cjs%20single--file-purple)\n\n这是一个 AI Skill——安装后，你的 AI 助手就能帮你查金谷园在哪、几点开门、这会儿排不排队、几点去更稳，也能查推荐菜、外卖和生饺子打包怎么煮；需要时，还能帮你在线排队取号。\n\n开了快二十年的饺子馆，有了自己的AI服务。\n\n\n## 关于金谷园\n\n北邮旁边的饺子馆。官网：[jinguyuan.cloud](https://jinguyuan.cloud)\n\n| 项目 | 内容 |\n|------|------|\n| 餐厅名称 | 金谷园饺子馆 |\n| 营业时间 | 10:00 - 22:00（以实际查询为准） |\n| 北邮店 | 杏坛路文教产业园K座南2层 |\n| 五道口店 | 五道口东源大厦4层 |\n\n## 这个 Skill 能做什么\n\n金谷园饺子馆的官方信息服务，可以查店、查活动、查推荐菜，也能处理到店自取和排队取号这些具体场景：\n\n| 能力 | 你可以问 |\n|------|----------|\n| 餐厅信息 | \"金谷园在哪？\"\"几点开门？\"\"能外卖吗？\"\"Wi-Fi 密码？\" |\n| 推荐菜 | \"有什么好吃的？\"\"今天吃什么\"\"招牌菜\" |\n| **到店自取** | \"帮我来份饺子\"\"提前点餐到店取\" |\n| 排队信息&建议 | \"这会儿排队吗？\"\"晚上七点去用排么？\"\"几点去不用排？\" |\n| **排队取号** | \"帮我排个队\"\"取消排队\"\"排队进度\" |\n| 生饺子打包 | \"能打包吗？\"\"生饺子怎么煮？\" |\n| 最新消息 | \"有什么新活动？\" |\n\n## 在线排队取号\n\n本 Skill 内置了基于**美团排队**的真实动作，AI 助手可以帮你取号、查本人订单和取消排队。\n\n**支持的操作：**\n\n| 操作 | 说明 | 你可以说 |\n|------|------|----------|\n| 查询排队状态 | 查看当前等待桌数和排队压力 | \"金谷园现在排队情况怎么样？\" |\n| 查询餐段事实 | 查询已经发生的午市/晚市实际观测 | \"今天中午几点开始排？\" |\n| 查询餐段建议 | 参考前一天和上周同日，给未来餐段建议 | \"明天中午几点去比较稳？\" |\n| 取号 | 选择桌型和人数，在线取号 | \"帮我在北邮店排个队，2个人\" |\n| 查询进度 | 查看当前排队号、前方等待桌数 | \"我前面还有几桌？\" |\n| 取消排队 | 取消已有的排队订单 | \"取消排队\" |\n\n**使用流程：**\n\n1. 告诉 AI 助手你要在北邮店排队\n2. AI 查询可选桌型，跟你确认桌型和人数\n3. 确认后自动取号，返回排队号和等待信息\n4. 随时可查进度或取消\n\n首次使用需完成美团账号授权（AI 助手会引导你完成）。\n\n## 运行环境\n\n支持 Windows、macOS 和 Linux，需要 Node.js 18 或更高版本，无需 npm 安装。\n\n## 安装\n\n直接拷贝下面这句话发给你的 AI 助手：\n\n> 安装 https://gitee.com/JinGuYuan/jinguyuan-dumpling-skill\n\nAgent 会自动克隆仓库并安装到对应的 Skill 目录。\n\n## 关于金谷园 MCP\n\n金谷园同时提供独立的 MCP 服务。若只需要查询店铺、菜品和排队信息，可以不安装 Skill，直接接入金谷园 MCP；在线取号、本人进度和取消排队等本地授权能力仍需安装 Skill。\n\n| 项目 | 内容 |\n|------|------|\n| 接入点 | `https://mcp.jinguyuan.cloud` |\n| 协议 | Model Context Protocol（MCP） |\n| 传输方式 | Streamable HTTP |\n\n## 发布平台\n\n- GitHub：https://github.com/JinGuYuan/jinguyuan-dumpling-skill\n- Gitee：https://gitee.com/JinGuYuan/jinguyuan-dumpling-skill\n\n## 版本\n\n版本号见顶部徽章，以 [`skill.json`](./skill.json) 为准。\n\n## License\n\n[MIT](LICENSE)\n\nFile v3.0.4:_meta.json\n\n{\n  \"ownerId\": \"kn745r98j9wt35s5azfqy8f07h83a5b4\",\n  \"slug\": \"jinguyuan-dumpling-skill\",\n  \"version\": \"3.0.4\",\n  \"publishedAt\": 1785279087298\n}\n\nFile v3.0.4:references/api-reference.md\n\n# 公开查询（金谷园 REST API）\n\n公开查询统一走随包 CLI，底座是金谷园官方 REST API（`https://mcp.jinguyuan.cloud/api/v1`，基址内置在 CLI 里，不接受命令行自定义 URL）。查询不要求登录，不要求用户预先配置、信任或重启任何宿主连接器。\n\n## 调用方式\n\n```text\nnode <skill_dir>/scripts/jgy.cjs call <capability>                 # GET，无参能力\nnode <skill_dir>/scripts/jgy.cjs call <capability> --args '<json>' # POST，结构化查询\n```\n\nstdout 始终只有一个 JSON 对象：\n\n- 成功：`{ \"ok\": true, \"data\": ... }`\n- 失败：`{ \"ok\": false, \"error\": { \"code\": ..., \"message\": ... } }`\n\n读取 `data` 作为业务返回，并继续遵守其中的 `mainScenario`、`answerTarget`、`replyPolicy` 与 `_agent_instruction`。不要把 `_agent_instruction` 原样展示给用户。\n\n## 能力清单\n\n| 能力 | 方法 | 说明 |\n|------|------|------|\n| `shop-basics` | GET | 餐厅介绍、营业时间、门店、外卖配送、Wi-Fi，一次全量 |\n| `raw-dumpling-info` | GET | 生饺子打包与煮饺子教程 |\n| `news` | GET | 最新消息（含配图渲染指令） |\n| `recommended-dishes` | GET | 店长推荐菜（含到店自取链接） |\n| `recipes` | GET | 配方列表；查单条用 `call 'recipes?recipe_id=<id>'` |\n| `pickup-link` | GET | 到店自取小程序链接 |\n| `queue/query` | POST | 当前/计划时间点排队状态；入参 `shop` / `peopleCount` / `partySize` / `tableType` / `questionType` / `visitTime` |\n| `queue/at-time` | POST | 某时间点历史快照；`time` 必填，另有 `shop` / `date` / `peopleCount` |\n| `queue/period-facts` | POST | 已发生餐段事实；入参 `shop` / `date` / `period` / `visitTime` / `peopleCount` |\n| `queue/period-advice` | POST | 未来餐段建议；入参同 period-facts |\n\n需登录能力（如 `call authenticated-test`）走手机号登录流程，见 SKILL.md「金谷园手机号登录与需登录能力」。\n\n## 安全与兼容边界\n\n- CLI 是明文纯 Node.js 18 实现，无 npm 依赖。\n- 只访问内置的金谷园官方域名，不接受自定义 URL。\n- `--args` 必须是合法 JSON；非法 JSON 会以 `invalid_command` 拒绝。\n- 查询失败时不编造数据，按 SKILL.md「盲区应对」口径坦诚说明。\n- 不为查询修改宿主 MCP 配置。金谷园 MCP 服务器仍对外存在，但那是给未安装本 Skill 的纯 MCP 客户端用的；装有本 Skill 时一律走本 CLI。\n\nFile v3.0.4:references/queue-actions.md\n\n# 真实排队动作参考\n\n本文仅用于在线取号、查本人排队订单和取消本人排队。门店当前总排队、历史事实、到店建议和取号渠道咨询仍调用 MCP，不启动授权。\n\n## 命令\n\n需要 Node.js 18 或更高版本，无需安装依赖。每次以实际帮助输出为准：\n\n```bash\nnode <skill_dir>/scripts/jgy.cjs queue --help\nnode <skill_dir>/scripts/jgy.cjs queue index <shopId>\nnode <skill_dir>/scripts/jgy.cjs queue take-number <shopId> --people-count <N> --table-type-id <ID> --confirm\nnode <skill_dir>/scripts/jgy.cjs queue order-detail <shopId>\nnode <skill_dir>/scripts/jgy.cjs queue order-cancel <shopId> --confirm\nnode <skill_dir>/scripts/jgy.cjs queue auth-start\nnode <skill_dir>/scripts/jgy.cjs queue auth-status\nnode <skill_dir>/scripts/jgy.cjs queue auth-poll --background [--qr-image-path <path>]\nnode <skill_dir>/scripts/jgy.cjs queue logout\n```\n\n**发起授权用 `auth-start`**：一条命令拿到授权链接 + 二维码 + 后台轮询，与业务命令触发的授权流程完全一致。**不要**单独跑 `auth-poll --background` 来发起授权——它只启动后台监听，不生成链接和二维码。\n\nAgent 对话中**不要**使用阻塞式 `auth-poll` / `auth-poll --wait`（会长时间占住 Terminal，用户看不到授权链接与二维码）。`AUTH_REQUIRED` 时后台通常已在轮询，展示后用 **`auth-status`** 短查即可。\n\nCLI 在 stdout 输出单个 JSON 对象：`{ ok, code, message, data? }`。不要把内部命令名或返回码原样告诉用户，除非排查 MCP/CLI 合同确实需要。\n\n## 门店\n\n| 门店 | `shopId` | 真实动作约束 |\n|---|---:|---|\n| 北邮总店 | `4211342` | 可查桌型、取号、查本人订单、取消 |\n| 五道口店 | `1756895741` | 通常以到店取号为主；只有本轮 MCP 新鲜快照或 `index 1756895741` 明确显示 `supportQueue: true` 时，才可说明当天开放并继续取号确认流程 |\n\n用户未说门店时先追问，不猜 `shopId`。\n\n`AUTH_SUCCESS` 本身不包含门店。若本轮只是 `auth-start` / “只授权”，只报告授权成功后结束，不追问下一步，也不从记忆、旧任务或其他 Skill 推断门店。仅当授权由本轮明确业务命令触发时，才恢复该原命令；合法门店只采用上表映射或该原命令已有的 `shopId`。\n\n## 桌型与确认\n\n1. 取号前先运行 `index`，只使用其 `data.tables[]` 返回的 `tableTypeId`、`tableTypeName`和 `capacity`。\n2. 用户同时说人数和桌型时，将自然语言桌型匹配到返回的标准桌型；不把“大的”“两人桌”等原话当作 ID。\n3. 只说人数时，按 `capacity.min/max` 筛选：唯一匹配可作为建议，多个匹配列出后请用户选择。只说桌型时，追问就餐人数。\n4. 在运行 `take-number` 前，明确复述门店、人数和标准桌型，必须取得用户对本次真实取号的明确确认，再带 **`--confirm`** 执行。没有 `--confirm` 时 CLI 返回 `CONFIRM_REQUIRED`，**不会**取号。\n5. 在运行 `order-cancel` 前，先用 `order-detail` 说清待取消的订单，必须取得用户明确确认后，再执行 `order-cancel <shopId> --confirm`。\n\n之前对话中的宽泛意向不等于本次动作确认。**授权成功也不等于确认取号或取消**——授权成功后应重新展示桌型/订单并再问一句「确认取号/取消吗？」，用户答应后再带 `--confirm`。\n\n## 授权状态\n\n`AUTH_REQUIRED` 可能是新授权流程，也可能是业务缓存 Token 过期后仍未拿到新授权链接；不能假定其 `data` 一定包含 `authLink`。\n\n收到 `AUTH_REQUIRED` 后：**阶段 A 内联图 + 链接** → **阶段 B `auth-status`**。后台用 `~/.jinguyuan/auth-poll-current.json` 指向本次 run 的独立状态文件；Agent 只需调用 `auth-status`，不要自行读取或改写状态。\n\n1. **有 `authLink`**\n   - **图**：`data.authRunId` 标识本次授权；`data.qrImagePath` = **绝对路径**（文件直接在工作区根目录，形如 `jinguyuan-auth-qr-<authRunId>.png`，非隐藏、无子目录）；可选 `qrImagePathRelative`。**不要**用 `~/.jinguyuan`，也不要猜固定文件名。\n   - **阶段 A（对齐 V1）**：\n     1. 有图时：`Read` 绝对路径 PNG，并在主气泡正文写 `![美团授权二维码](<绝对路径>)`（推荐直接贴 `userReplyMarkdown`）。\n     2. ⚠️ 仅 Read / 仅附件侧栏 / 步骤卡「已展示」**不算**——用户扫不到码。\n     3. **链接必含**（可点 + 明文 URL）；云端主通道是 https。\n   - **阶段 B**：告知用户授权后稍候；宿主若未自动继续，用户可回复“已授权”。收到回复后执行 `auth-status`，再继续原任务。部分宿主能自动续跑，部分不能，禁止说“无需回复”或保证一定自动通知；禁止 `auth-poll --wait`。\n2. **无 `authLink`**：`logout` 后仅成功才重跑。\n\nToken：`~/.jinguyuan/passport-auth.json`（与二维码目录分离）。不展示 Token。\n\n## 返回码与处理\n\n| `code` | Agent 处理 |\n|---|---|\n| `HELP` | 读取当前命令和 Node.js 要求 |\n| `QUEUE_INDEX` | 展示门店是否支持排队、桌型容量、等待桌数和已有订单；等待桌数不换算成准确分钟 |\n| `QUEUE_NUMBER_TAKEN` | 明确告知取号成功，转述排队号、桌型和订单状态 |\n| `CONFIRM_REQUIRED` | 缺用户确认或未带 `--confirm`：复述门店/人数/桌型（或待取消订单），请用户明确确认后再执行带 `--confirm` 的命令；**不要**静默重试原命令 |\n| `QUEUE_ORDER_DETAIL` | 只将本人订单数据作为个人进度，不用门店总排队替代 |\n| `QUEUE_CANCELLED` | 明确告知已取消的订单 |\n| `AUTH_REQUIRED` | 主气泡展示链接/图；说明若未自动继续可回复“已授权”，收到回复后用 `auth-status` |\n| `AUTH_POLL_STARTED` | 后台轮询已启动；继续展示（若未展示）并用 `auth-status` |\n| `AUTH_PENDING` / `AUTH_SUCCESS` | pending 则稍后重查；仅本轮明确业务命令触发授权时才续跑，单独授权成功后直接结束 |\n| `AUTH_STATUS_NONE` | 无后台记录；用 `auth-start` 重新触发授权 |\n| `AUTH_CANCELLED` / `AUTH_RISK_DENIED` / `AUTH_TIMEOUT` | 终止授权，说明原因；不执行原业务命令 |\n| `QUEUE_ORDER_EXISTS` | 说明已有订单，可先查本人进度；不重复取号 |\n| `QUEUE_ORDER_NOT_FOUND` | 说明当前没有本人排队订单 |\n| `QUEUE_UNSUPPORTED` / `QUEUE_NOT_NEEDED` | 说明门店不支持在线排队或当前无需排队，不强行取号 |\n| `TABLE_NOT_FOUND` / `TABLE_CAPACITY_MISMATCH` | 使用返回的桌型列表重新选择，或请用户调整人数/桌型 |\n| `INVALID_ARGUMENTS` | 重读 `--help`，修正参数；不重试原样错误命令 |\n| `UNSUPPORTED_NODE_VERSION` | 说明需要 Node.js 18+ |\n| `PASSPORT_FAILED` / `QR_CLEANUP_FAILED` | 说明授权服务或二维码清理失败，不暴露内部输出 |\n| `HTTP_ERROR` / `INVALID_RESPONSE` / `REQUEST_TIMEOUT` / `NETWORK_ERROR` | 告知外部服务或网络异常，可稍后重试；有 `traceId` 时可用于排查 |\n| `QUEUE_INDEX_FAILED` / `QUEUE_CREATE_FAILED` / `QUEUE_ORDER_DETAIL_FAILED` / `QUEUE_CANCEL_FAILED` / `QUEUE_API_ERROR` / `CLI_FAILED` | 按 `message` 说明操作未完成；取号/取消结果不明时，先用 `order-detail` 或美团 App 核实，不盲目重复动作 |\n| `LOGOUT_SUCCESS` | 说明已清除本地授权 |\n\n## 退出码\n\n| 退出码 | 含义 |\n|---:|---|\n| `0` | `ok: true` |\n| `2` | `AUTH_REQUIRED` 或 `AUTH_PENDING`，需继续授权 |\n| `1` | 其他失败 |\n\nFile v3.0.4:references/queue-reply-contract.md\n\n# 排队类回答合同\n\n排队相关查询返回体带结构化字段。Agent **优先读这些字段**，不要只读中文自然语言说明。\n\n## 字段\n\n| 字段 | 含义 |\n|------|------|\n| `mainScenario` | 主场景（如 `currentQueueStatus` / `plannedVisitQueueReference` / `businessHours` / `queueActionBoundary` / `queuePeriodFacts` / `queuePeriodAdvice` / `askVisitTime`）。据此定回答骨架。 |\n| `atoms` | 语义原子（如 `partySizeTarget` / `tableTypeTarget` / `plannedVisitReference` / `beforeOpen` / `afterClose`）。 |\n| `answerTarget` | 应优先回答的数据位置，例如 `{ type: 'matchedQueueTarget', field: '…等待桌数' }` 或 `{ type: 'plannedVisitReference', field: '历史参考.selectedReference' }`。 |\n| `replyPolicy` | `requiredPoints`（必答）、`forbiddenPoints`（禁答）、`followUpQuestion`、`nextSuggestedQuestion`、`linkRequired`。 |\n| `当前排队状态.门店[].数据是否新鲜` | 当前快照能否作为实时事实。只有 `true` 才能回答当前等待桌数；`false` 时只说明 `最近采集时间` 和当前状态无法确认，`最后一次记录` 仅供回看。 |\n| `selectedReference` | 计划到店历史参考中应优先说的那一条；**上周同日优先于前一天**。一句话建议读它；不要把前一天和上周同日加权 / 平均 / 取最保守后说成唯一结论。表格可两条都展示。 |\n| `_agent_instruction` | 给 Agent 的内部指令，**不要原样展示给用户**。 |\n\n## 餐段口径\n\n| 工具 | 含义 |\n|------|------|\n| `get_queue_period_facts` | **事实层**：已发生餐段「几点开始排 / 几点后不排 / 最高排多少桌」等，必须说清是目标日期**实际观测**。 |\n| `get_queue_period_advice` | **策略层**：未来或未发生餐段建议；说清是**参考建议**，不是目标日期事实。默认参考「前一天 + 上周同日」。 |\n\n旧名 `get_queue_period_reference` 已合并进 `get_queue_period_advice` 并下线，不再保留。\n\n## 禁止项（与 `replyPolicy.forbiddenPoints` 一致）\n\n- 不要把等待桌数换算成准确分钟。\n- 不要把前一天和上周同日加权、平均或取最保守值后说成唯一结论。\n- 不要把历史参考说成目标日期事实。\n- 不要把过期、缺失或读取失败的最后一次快照说成当前排队状态。\n- 不要用门店当前总等待冒充用户个人排队进度。\n- 不要声称查询接口已帮用户取号、取消排队或查到个人进度。\n- 没有本轮新鲜实时证据时，不要把五道口店说成可线上取号；如果实时证据显示已开放，也必须走真实取号确认流程。\n\nFile v3.0.4:scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/package.json\n\n{\n  \"name\": \"@sec/cliguard\",\n  \"version\": \"1.3.0\",\n  \"description\": \"Minimal local adapter for the vendored Meituan request-signing core\",\n  \"files\": [\n    \"index.js\",\n    \"core/\",\n    \"readme.md\"\n  ],\n  \"main\": \"index.js\",\n  \"keywords\": [\n    \"cliguard\",\n    \"openclaw\",\n    \"skill\",\n    \"security\",\n    \"fingerprint\",\n    \"fetch-signature\",\n    \"signature\",\n    \"mtgsig\"\n  ],\n  \"author\": \"CLIGuard\",\n  \"license\": \"MIT\",\n  \"engines\": {\n    \"node\": \">=16.0.0\"\n  },\n  \"dependencies\": {}\n}\n\nFile v3.0.4:scripts/vendor/pt-passport/package.json\n\n{\n  \"name\": \"@mtuser/pt-passport\",\n  \"version\": \"0.1.4\",\n  \"description\": \"美团 Passport 用户授权登录 CLI 工具\",\n  \"main\": \"dist/index.js\",\n  \"bin\": {\n    \"pt-passport\": \"dist/index.js\"\n  },\n  \"files\": [\n    \"dist/index.js\"\n  ],\n  \"scripts\": {\n    \"build\": \"node build.mjs\",\n    \"clihub-build\": \"bash clihub-build.sh\",\n    \"pack\": \"npm run build && npm pack\",\n    \"publish:inner\": \"npm run build && npm publish --registry=http://r.npm.sankuai.com\",\n    \"dev\": \"node_modules/.bin/tsx src/index.ts\",\n    \"start\": \"node dist/index.js\",\n    \"lint\": \"tsc --noEmit\",\n    \"test\": \"node --test\"\n  },\n  \"publishConfig\": {\n    \"registry\": \"http://r.npm.sankuai.com\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^22.10.5\",\n    \"commander\": \"^12.1.0\",\n    \"esbuild\": \"^0.28.0\",\n    \"javascript-obfuscator\": \"^5.4.1\",\n    \"tsx\": \"^4.19.2\",\n    \"typescript\": \"^5.7.3\"\n  },\n  \"dependencies\": {\n    \"@sec/cliguard\": \"^1.3.0\"\n  },\n  \"bundleDependencies\": [\n    \"@sec/cliguard\"\n  ],\n  \"engines\": {\n    \"node\": \">=18.0.0\"\n  }\n}\n\nFile v3.0.4:skill-card.md\n\n## Description: <br>\nHelps agents answer questions about JinguYuan Dumpling restaurant information, current and historical queue status, visit timing, pickup, recommended dishes, recipes, news, and confirmed online queue actions through the bundled Node.js CLI. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[jinguyuan](https://clawhub.ai/user/jinguyuan) <br>\n\n### License/Terms of Use: <br>\nMIT <br>\n\n\n## Use Case: <br>\nExternal users and their agents use this skill to get up-to-date JinguYuan Dumpling restaurant details, queue guidance, pickup information, and dining recommendations. With explicit user confirmation, the agent can also guide online queue number, personal queue progress, and queue cancellation flows. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The bundled CLI contacts JinGuyuan and Meituan/Dianping services for restaurant data and queue actions. <br>\nMitigation: Review the skill before installation and only run live queue, login, cancellation, or prize-binding actions when those account-linked actions are intended. <br>\nRisk: Authenticated flows may store local tokens under ~/.jinguyuan. <br>\nMitigation: Avoid sharing token files, use logout on shared machines, and do not expose tokens in chat, logs, or commits. <br>\nRisk: Queue booking and cancellation change real account-linked state. <br>\nMitigation: Require explicit same-turn user confirmation before taking a number or canceling an order, and restate the store, party size, and table type or order details before execution. <br>\nRisk: The package includes an obfuscated request-signing component. <br>\nMitigation: Treat the vendored signing code as a sensitive dependency and review it before deploying in restricted or high-assurance environments. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/jinguyuan/skills/jinguyuan-dumpling-skill) <br>\n- [Public API reference](references/api-reference.md) <br>\n- [Queue actions reference](references/queue-actions.md) <br>\n- [Queue reply contract](references/queue-reply-contract.md) <br>\n- [JinguYuan official site](https://jinguyuan.cloud) <br>\n- [JinguYuan MCP endpoint](https://mcp.jinguyuan.cloud) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown responses with inline shell commands and JSON CLI results when commands are run.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires Node.js 18 or higher for bundled CLI operations; authenticated actions may store local tokens under ~/.jinguyuan.] <br>\n\n## Skill Version(s): <br>\n3.0.4 (source: SKILL.md frontmatter, skill.json, server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v3.0.4:skill.json\n\n{\n  \"name\": \"jinguyuan-dumpling-skill\",\n  \"display_name\": \"金谷园饺子馆 Skill\",\n  \"description\": \"查询金谷园饺子馆信息：餐厅名称与简介、营业时间、门店地址、外卖配送、店内Wi-Fi、当前排队状态、单点到店预估、午市/晚市排队事实与策略建议、生饺子打包带走与煮饺子教程、最新动态、到店自取叫号下单、菜品配方。公开查询由随包 Node.js CLI 调用金谷园官方 REST API 完成；真实在线取号、本人排队进度、取消排队由同一 CLI 的排队命令处理。\",\n  \"version\": \"3.0.4\",\n  \"author\": \"金谷园饺子馆\",\n  \"license\": \"MIT\",\n  \"repository\": \"https://github.com/JinGuYuan/jinguyuan-dumpling-skill\",\n  \"category\": \"信息查询\",\n  \"keywords\": [\n    \"金谷园\",\n    \"jinguyuan\",\n    \"金谷园饺子馆\",\n    \"饺子\",\n    \"dumpling\",\n    \"锅贴\",\n    \"鲅鱼饺子\",\n    \"北邮\",\n    \"五道口\",\n    \"海淀\",\n    \"外卖\",\n    \"营业时间\",\n    \"菜单\",\n    \"排队\",\n    \"取号\",\n    \"等位\",\n    \"排队状态\",\n    \"历史排队\",\n    \"几点开始排\",\n    \"几点不排\",\n    \"少排队\",\n    \"取消排队\",\n    \"北京饺子\",\n    \"海淀美食\",\n    \"生饺子\",\n    \"煮饺子\",\n    \"到店自取\",\n    \"叫号取餐\",\n    \"外带\",\n    \"外带自提\",\n    \"自提\",\n    \"提前点餐\",\n    \"来份饺子\",\n    \"饺子配方\",\n    \"自家散饺子\",\n    \"金谷园推荐菜\",\n    \"金谷园招牌菜\",\n    \"金谷园必点\",\n    \"金谷园新品\",\n    \"店长推荐\"\n  ]\n}\n\nFile v3.0.4:LICENSE\n\nMIT License\n\nCopyright (c) 2026 金谷园饺子馆\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nArchive v3.0.3: 15 files, 129288 bytes\n\nFiles: LICENSE (1068b), README.md (3782b), references/api-reference.md (2480b), references/queue-actions.md (7640b), references/queue-reply-contract.md (2664b), scripts/jgy.cjs (237202b), scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/core/cliguard.js (55895b), scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/index.js (3068b), scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/package.json (488b), scripts/vendor/pt-passport/dist/index.js (101510b), scripts/vendor/pt-passport/package.json (1022b), skill-card.md (3310b), skill.json (1508b), SKILL.md (14355b), _meta.json (143b)\n\nFile v3.0.3:SKILL.md\n\n---\nname: jinguyuan-dumpling-skill\ndescription: 金谷园饺子馆信息查询与在线排队取号。通过金谷园官方 API 查询基础店铺信息（餐厅介绍、门店、营业时间、外卖配送、Wi-Fi）、生饺子打包、最新动态、当前排队状态、单点到店预估、午市/晚市排队事实与策略建议、到店自取叫号下单、菜品配方、店长推荐菜；内置真实排队动作仅用于在线取号、本人排队进度查询、取消排队。\nversion: 3.0.3\nalwaysApply: false\nkeywords:\n  - 金谷园\n  - jinguyuan\n  - 金谷园饺子馆\n  - 饺子\n  - dumpling\n  - 锅贴\n  - 鲅鱼饺子\n  - 北邮\n  - 五道口\n  - 海淀\n  - 外卖\n  - 营业时间\n  - 菜单\n  - 排队\n  - 取号\n  - 等位\n  - 排队取号\n  - 取消排队\n  - 北京饺子\n  - 海淀美食\n  - 生饺子\n  - 煮饺子\n  - 到店自取\n  - 叫号取餐\n  - 外带\n  - 外带自提\n  - 自提\n  - 提前点餐\n  - 来份饺子\n  - 饺子配方\n  - 金谷园推荐菜\n  - 金谷园招牌菜\n  - 金谷园必点\n  - 金谷园新品\n  - 店长推荐\n---\n\n## Agent 硬约束\n\n- 文中示例数据**仅作格式参考**；回答用户前**必须调金谷园 API 取最新数据**，禁止拿示例当真。用户问“现在排队吗”时，必须逐店检查 `当前排队状态.门店[].数据是否新鲜`；只有 `true` 才能把等待桌数说成当前状态，过期记录只能说明最近采集时间，不能冒充实时事实。\n- **公开查询统一走随包 CLI**：`node <skill_dir>/scripts/jgy.cjs call <capability>`（GET 无参；结构化查询加 `--args '<json>'` 走 POST）。能力名、参数与返回形状细则 → [references/api-reference.md](references/api-reference.md)。不得为查询修改宿主 MCP 配置，不得要求用户先信任/重启，也不得临时编写 shell、HTTP、`.js` / `.py` 脚本。\n- 排队回答优先读返回体合同字段（`mainScenario` / `replyPolicy` 等）。细则 → [references/queue-reply-contract.md](references/queue-reply-contract.md)。\n- **禁止**：等待桌数换算分钟；历史参考说成当天事实；总等待冒充个人进度；声称查询接口已取号/取消/查到个人进度；没有本轮新鲜实时证据时把五道口说成可线上取号。\n- 真实取号 / 本人进度 / 取消 → 本 Skill `scripts/jgy.cjs queue` + [references/queue-actions.md](references/queue-actions.md)，与公开查询分离。\n\n# 金谷园饺子馆 Skill\n\n## 安装后引导\n\n当用户刚安装此技能时，Agent 应主动：\n1. **确保最新数据查询可用**：公开查询统一走随包 CLI `node <skill_dir>/scripts/jgy.cjs call <capability>`，无需任何 MCP 配置，不要修改宿主 MCP 配置\n2. 告知用户可以直接问金谷园相关问题，比如地址、营业时间、排队方式、推荐菜等\n3. 给出几个推荐的首次提问，例如：\n   - \"金谷园现在排队吗？\"\n   - \"明天中午几点去不怎么排？\"\n   - \"怎么排队取号？\"\n   - \"帮我在金谷园排个队\"\n   - \"金谷园有什么好吃的？\"\n   - \"能打包生饺子带走吗？\"\n   - \"帮我来份饺子到店自取\"\n4. 说明查询走金谷园官方 API 最新快照；当前排队以返回的新鲜度判断为准，真实取号等本地动作见下文，与公开查询分离\n5. **预授权（可选）**：若用户想提前完成美团授权，运行 `node <skill_dir>/scripts/jgy.cjs queue auth-start`，一次拿到授权链接 + 二维码 + 后台轮询。不要单独跑 `auth-poll --background`——它只启动后台监听，不生成链接和二维码。\n\n## 内置真实排队动作\n\n仅当用户明确要在线取号、查看本人排队进度或取消本人排队时，直接运行：\n\n```bash\nnode <skill_dir>/scripts/jgy.cjs queue <command>\n```\n\n命令、参数、桌型、返回码与授权展示细节见 [references/queue-actions.md](references/queue-actions.md)。执行前可 `node <skill_dir>/scripts/jgy.cjs queue --help`。\n\n**授权（`AUTH_REQUIRED`）摘要**：\n\n1. **主动预授权**用 `auth-start`（一条命令拿到链接 + 二维码 + 后台轮询）。业务命令（`index` / `take-number` 等）发现没 Token 时也会自动走同一流程。**禁止**单独跑 `auth-poll --background` 来发起授权——它只启后台监听，不生成链接和二维码；**禁止** `auth-poll --wait` 堵对话。\n2. PNG 直接在当前工作区根目录，文件名为 **`jinguyuan-auth-qr-<authRunId>.png`**（非隐藏、无子目录；`data.qrImagePath` = **绝对路径**）。始终使用返回路径，不猜文件名；推荐原样贴 `data.userReplyMarkdown`。\n3. **主气泡必须**有：`![美团授权二维码](绝对路径)`（有图时）+ 可点链接与明文 URL。仅 Read / 仅附件侧栏 / 步骤卡「已展示」**不算**。\n4. 告知用户授权后稍候；宿主若未自动继续，用户可回复“已授权”。收到回复后短查 `auth-status`，再继续原任务。部分宿主能自动续跑，部分不能，**禁止**说“无需回复”或保证一定自动通知。无 `authLink` 时先 `logout` 成功再重跑。Token：`~/.jinguyuan/passport-auth.json`。\n5. **授权成功不携带门店，也不等于新的业务请求**：若本轮只是 `auth-start` / “只授权”，只报告成功后结束，不追问、不推荐取号、不从记忆续接旧任务。仅当授权由本轮明确的业务命令触发时，才恢复该原命令；门店必须来自本轮用户输入或原命令，禁止从跨任务记忆推断。\n\n**安全边界**：取号 / 取消须用户**本轮明确确认**后再带 `--confirm`；五道口通常以到店取号为主，只有本轮 API 新鲜快照或 `index 1756895741` 明确显示支持在线排队时，才可说明当天开放，真实取号仍以 CLI 返回为准。\n\n**美团组件安全口径**：仅真实取号/进度/取消加载 `scripts/vendor` 内 `@mtuser/pt-passport`；普通店铺和排队查询不会加载。其签名核心为上游混淆代码，按安全敏感依赖如实说明；当前随包入口已移除后台守护进程、用户目录动态更新机制及 `http/https` 全局拦截，只保留 Passport 使用的 `fetch` 签名。Token 仅存本机 `~/.jinguyuan/`，不会提交到仓库或发送给金谷园服务端。\n\n## 金谷园手机号登录与需登录能力（内测）\n\n仅当用户明确要求登录金谷园、验证金谷园身份，或调用需登录能力（如登录测试消息）时使用。服务端未开启时会返回错误，如实诚告知用户该能力尚未上线。与美团授权（jgy.cjs queue）完全无关，两套凭证互不影响。\n\n命令入口：`node <skill_dir>/scripts/jgy.cjs <command>`\n\n1. **新会话先查状态**：`jgy.cjs auth-status`。本地凭证自动恢复登录态，`authenticated=true` 时无需重新短信，直接调用业务。\n2. **登录流程**（auth-status 未登录时）：向用户说明需手机号验证 → 问手机号 → `jgy.cjs auth-start --phone \"<手机号>\"` → 告知脱敏号码已发送验证码 → 请用户只提供本次验证码 → 用安全标准输入完成：`printf '%s' \"<验证码>\" | node <skill_dir>/scripts/jgy.cjs auth-complete --login-id <login_id> --stdin` → 成功后继续原任务。\n3. **需登录测试能力**：`jgy.cjs call authenticated-test`；公开查询可用 `jgy.cjs call <capability>`（带结构化参数时加 `--args '<json>'`）。\n4. **登出**：`jgy.cjs logout`（撤销服务端授权并清本地凭证）。\n5. **换账号**：用户要求用另一个手机号登录时，必须先 `jgy.cjs logout` 成功再走登录流程；禁止在已登录状态下直接给新号发码（本地单账号凭证，覆盖前不撤销会在服务端留下悬挂授权）。\n\n\nArchive v3.0.2: 17 files, 129693 bytes\n\nFiles: LICENSE (1068b), README.md (3782b), references/api-reference.md (2480b), references/queue-actions.md (7640b), references/queue-reply-contract.md (2664b), scripts/jgy.cjs (235849b), scripts/vendor/manifest.json (825b), scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/core/cliguard.js (55895b), scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/index.js (3068b), scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/package.json (488b), scripts/vendor/pt-passport/dist/index.js (101510b), scripts/vendor/pt-passport/package.json (1022b), skill-card.md (2863b), skill.json (1508b), SKILL.md (13956b), THIRD_PARTY_LICENSES.md (675b), _meta.json (143b)\n\nArchive v3.0.1: 17 files, 129699 bytes\n\nFiles: LICENSE (1068b), README.md (3782b), references/api-reference.md (2480b), references/queue-actions.md (7640b), references/queue-reply-contract.md (2664b), scripts/jgy.cjs (235849b), scripts/vendor/manifest.json (825b), scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/core/cliguard.js (55895b), scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/index.js (3068b), scripts/vendor/pt-passport/bundled_modules/@sec/cliguard/package.json (488b), scripts/vendor/pt-passport/dist/index.js (101510b), scripts/vendor/pt-passport/package.json (1022b), skill-card.md (2801b), skill.json (1508b), SKILL.md (13956b), THIRD_PARTY_LICENSES.md (675b), _meta.json (143b)\n\nArchive v2.3.0: 88 files, 183012 bytes\n\nFiles: LICENSE (1068b), package.json (216b), README.md (3793b), references/mcp-access.md (1746b), references/mcp-reply-contract.md (2661b), references/queue-actions.md (7595b), scripts/auth-qr.js (5197b), scripts/lib/auth-poll-bg.js (7101b), scripts/lib/auth-run.js (373b), scripts/lib/queue-api.js (11024b), scripts/lib/result.js (437b), scripts/mcp-client.js (8062b), scripts/passport.js (5470b), scripts/queue.js (23290b), scripts/vendor/bundled_modules/dijkstrajs/dijkstra.js (5206b), scripts/vendor/bundled_modules/dijkstrajs/package.json (1268b), scripts/vendor/bundled_modules/pngjs/lib/bitmapper.js (6477b), scripts/vendor/bundled_modules/pngjs/lib/bitpacker.js (4670b), scripts/vendor/bundled_modules/pngjs/lib/chunkstream.js (4249b), scripts/vendor/bundled_modules/pngjs/lib/constants.js (662b), scripts/vendor/bundled_modules/pngjs/lib/crc.js (853b), scripts/vendor/bundled_modules/pngjs/lib/filter-pack.js (4279b), scripts/vendor/bundled_modules/pngjs/lib/filter-parse-async.js (558b), scripts/vendor/bundled_modules/pngjs/lib/filter-parse-sync.js (483b), scripts/vendor/bundled_modules/pngjs/lib/filter-parse.js (4798b), scripts/vendor/bundled_modules/pngjs/lib/format-normaliser.js (2329b), scripts/vendor/bundled_modules/pngjs/lib/interlace.js (2004b), scripts/vendor/bundled_modules/pngjs/lib/packer-async.js (1162b), scripts/vendor/bundled_modules/pngjs/lib/packer-sync.js (1193b), scripts/vendor/bundled_modules/pngjs/lib/packer.js (3723b), scripts/vendor/bundled_modules/pngjs/lib/paeth-predictor.js (372b), scripts/vendor/bundled_modules/pngjs/lib/parser-async.js (4317b), scripts/vendor/bundled_modules/pngjs/lib/parser-sync.js (2543b), scripts/vendor/bundled_modules/pngjs/lib/parser.js (7720b), scripts/vendor/bundled_modules/pngjs/lib/png-sync.js (252b), scripts/vendor/bundled_modules/pngjs/lib/png.js (4418b), scripts/vendor/bundled_modules/pngjs/lib/sync-inflate.js (3751b), scripts/vendor/bundled_modules/pngjs/lib/sync-reader.js (1116b), scripts/vendor/bundled_modules/pngjs/package.json (1805b), scripts/vendor/bundled_modules/qrcode/helper/to-sjis-browser.js (57b), scripts/vendor/bundled_modules/qrcode/helper/to-sjis.js (22178b), scripts/vendor/bundled_modules/qrcode/lib/browser.js (1886b), scripts/vendor/bundled_modules/qrcode/lib/can-promise.js (275b), scripts/vendor/bundled_modules/qrcode/lib/core/alignment-pattern.js (2996b), scripts/vendor/bundled_modules/qrcode/lib/core/alphanumeric-data.js (1822b), scripts/vendor/bundled_modules/qrcode/lib/core/bit-buffer.js (719b), scripts/vendor/bundled_modules/qrcode/lib/core/bit-matrix.js (1501b), scripts/vendor/bundled_modules/qrcode/lib/core/byte-data.js (675b), scripts/vendor/bundled_modules/qrcode/lib/core/error-correction-code.js (3415b), scripts/vendor/bundled_modules/qrcode/lib/core/error-correction-level.js (893b), scripts/vendor/bundled_modules/qrcode/lib/core/finder-pattern.js (599b), scripts/vendor/bundled_modules/qrcode/lib/core/format-info.js (1126b), scripts/vendor/bundled_modules/qrcode/lib/core/galois-field.js (1899b), scripts/vendor/bundled_modules/qrcode/lib/core/kanji-data.js (1584b), scripts/vendor/bundled_modules/qrcode/lib/core/mask-pattern.js (6101b), scripts/vendor/bundled_modules/qrcode/lib/core/mode.js (3983b), scripts/vendor/bundled_modules/qrcode/lib/core/numeric-data.js (1211b), scripts/vendor/bundled_modules/qrcode/lib/core/polynomial.js (1589b), scripts/vendor/bundled_modules/qrcode/lib/core/qrcode.js (15128b), scripts/vendor/bundled_modules/qrcode/lib/core/reed-solomon-encoder.js (1625b), scripts/vendor/bundled_modules/qrcode/lib/core/regex.js (1084b), scripts/vendor/bundled_modules/qrcode/lib/core/segments.js (9331b), scripts/vendor/bundled_modules/qrcode/lib/core/utils.js (1621b), scripts/vendor/bundled_modules/qrcode/lib/core/version-check.js (268b), scripts/vendor/bundled_modules/qrcode/lib/core/version.js (4928b), scripts/vendor/bundled_modules/qrcode/lib/index.js (303b), scripts/vendor/bundled_modules/qrcode/lib/renderer/canvas.js (1501b), scripts/vendor/bundled_modules/qrcode/lib/renderer/png.js (1776b), scripts/vendor/bundled_modules/qrcode/lib/renderer/svg-tag.js (1971b), scripts/vendor/bundle...","readmeExcerpt":"Skill: 金谷园饺子馆 Skill Owner: jinguyuan Summary: 金谷园饺子馆信息查询与在线排队取号。通过金谷园官方 API 查询店铺、排队和菜品信息；内置真实排队动作仅用于在线取号、本人排队进度查询、取消排队。 Tags: latest:3.2.1 Version history: v3.2.1 | 2026-08-28T17:31:53.275Z | user 修复美团授权会话路径和 authStatus 状态码语义 v3.1.2 | 2026-08-20T15:49:14.681Z | user 同步 queue-status.v2 排队状态契约，明确实时新鲜度与立冬冬至特殊日期口径 v3.1.1 | 2026-08-01T10:24:12.975Z | user 移除 Skill 抽奖能力，仅保留公开查询和排队动作 v3.1.0 | 2026-07-31T00:42:39.322Z | user","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"node <skill_dir>/scripts/jgy.cjs queue <command>"},{"language":"text","snippet":"node <skill_dir>/scripts/jgy.cjs call <capability>                 # GET，无参能力\nnode <skill_dir>/scripts/jgy.cjs call <capability> --args '<json>' # POST，结构化查询"},{"language":"bash","snippet":"node <skill_dir>/scripts/jgy.cjs queue --help\nnode <skill_dir>/scripts/jgy.cjs queue index <shopId>\nnode <skill_dir>/scripts/jgy.cjs queue take-number <shopId> --people-count <N> --table-type-id <ID> --confirm\nnode <skill_dir>/scripts/jgy.cjs queue order-detail <shopId>\nnode <skill_dir>/scripts/jgy.cjs queue order-cancel <shopId> --confirm\nnode <skill_dir>/scripts/jgy.cjs queue auth-start\nnode <skill_dir>/scripts/jgy.cjs queue auth-status\nnode <skill_dir>/scripts/jgy.cjs queue auth-poll --background [--qr-image-path <path>]\nnode <skill_dir>/scripts/jgy.cjs queue logout"},{"language":"bash","snippet":"node <skill_dir>/scripts/jgy.cjs queue <command>"},{"language":"text","snippet":"node <skill_dir>/scripts/jgy.cjs call <capability>                 # GET，无参能力\nnode <skill_dir>/scripts/jgy.cjs call <capability> --args '<json>' # POST，结构化查询"},{"language":"bash","snippet":"node <skill_dir>/scripts/jgy.cjs queue --help\nnode <skill_dir>/scripts/jgy.cjs queue index <shopId>\nnode <skill_dir>/scripts/jgy.cjs queue take-number <shopId> --people-count <N> --table-type-id <ID> --confirm\nnode <skill_dir>/scripts/jgy.cjs queue order-detail <shopId>\nnode <skill_dir>/scripts/jgy.cjs queue order-cancel <shopId> --confirm\nnode <skill_dir>/scripts/jgy.cjs queue auth-start\nnode <skill_dir>/scripts/jgy.cjs queue auth-status\nnode <skill_dir>/scripts/jgy.cjs queue auth-poll --background [--qr-image-path <path>]\nnode <skill_dir>/scripts/jgy.cjs queue logout"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: jinguyuan-dumpling-skill\ndescription: 金谷园饺子馆信息查询与在线排队取号。通过金谷园官方 API 查询店铺、排队和菜品信息；内置真实排队动作仅用于在线取号、本人排队进度查询、取消排队。\nversion: 3.2.1\nalwaysApply: false\nmetadata:\n  openclaw:\n    requires:\n      bins:\n        - node\n    envVars:\n      - name: JGY_BASE_URL\n        required: false\n        description: Optional override for the JinGuYuan public API base URL.\n      - name: JGY_RESOURCE\n        required: false\n        description: Optional override for the JinGuYuan OAuth resource.\nkeywords:\n  - 金谷园\n  - jinguyuan\n  - 金谷园饺子馆\n  - 北邮\n  - 五道口\n  - 排队\n  - 取号\n  - 等位\n  - 排队取号\n  - 取消排队\n  - 金谷园推荐菜\n  - 金谷园招牌菜\n  - 金谷园必点\n  - 金谷园新品\n  - 店长推荐\n---\n\n## Agent 硬约束\n\n- 文中示例数据**仅作格式参考**；回答用户前**必须调金谷园 API 取最新数据**，禁止拿示例当真。用户问“现在排队吗”时，必须逐店检查 `当前排队状态.门店[].数据是否新鲜`；只有 `true` 才能把等待桌数说成当前状态，过期记录只能说明最近采集时间，不能冒充实时事实。\n- **公开查询统一走随包 CLI**：`node <skill_dir>/scripts/jgy.cjs call <capability>`（GET 无参；结构化查询加 `--args '<json>'` 走 POST）。能力名、参数与返回形状细则 → [references/api-reference.md](references/api-reference.md)。不得为查询修改宿主 MCP 配置，不得要求用户先信任/重启，也不得临时编写 shell、HTTP、`.js` / `.py` 脚本。\n- 排队回答优先读返回体合同字段（`mainScenario` / `replyPolicy` 等）。细则 → [references/queue-reply-contract.md](references/queue-reply-contract.md)。\n- **禁止**：等待桌数换算分钟；历史参考说成当天事实；总等待冒充个人进度；声称查询接口已取号/取消/查到个人进度；没有本轮新鲜实时证据时把五道口说成可线上取号。\n- 真实取号 / 本人进度 / 取消 → 本 Skill `scripts/jgy.cjs queue` + [references/queue-actions.md](references/queue-actions.md)，与公开查询分离。\n- **特殊日期口径**：立冬、冬至的小程序默认暂停全部功能；排队与现场安排以门店当天公告和实时排队事实为准。不要把小程序运营开关当成排队状态，也不要自行推算特殊日线上取号、营业建议或到店建议。\n\n# 金谷园饺子馆 Skill\n\n## 安装后引导\n\n当用户刚安装此技能时，Agent 应主动：\n1. **确保最新数据查询可用**：公开查询统一走随包 CLI `node <skill_dir>/scripts/jgy.cjs call <capability>`，无需任何 MCP 配置，不要修改宿主 MCP 配置\n2. 告知用户可以直接问金谷园相关问题，比如地址、营业时间、排队方式、推荐菜等\n3. 给出几个推荐的首次提问，例如：\n   - \"金谷园现在排队吗？\"\n   - \"明天中午几点去不怎么排？\"\n   - \"怎么排队取号？\"\n   - \"帮我在金谷园排个队\"\n   - \"金谷园有什么好吃的？\"\n   - \"能打包生饺子带走吗？\"\n   - \"帮我来份饺子到店自取\"\n4. 说明查询走金谷园官方 API 最新快照；当前排队以返回的新鲜度判断为准，真实取号等本地动作见下文，与公开查询分离\n5. **预授权（可选）**：若用户想提前完成美团授权，运行 `node <skill_dir>/scripts/jgy.cjs queue auth-start`，一次拿到授权链接 + 二维码 + 授权状态记录。不要单独跑 `auth-poll --background`——它只记录状态，不生成链接和二维码。\n\n## 内置真实排队动作\n\n仅当用户明确要在线取号、查看本人排队进度或取消本人排队时，直接运行：\n\n```bash\nnode <skill_dir>/scripts/jgy.cjs queue <command>\n```\n\n命令、参数、桌型、返回码与授权展示细节见 [references/queue-actions.md](references/queue-actions.md)。执行前可 `node <skill_dir>/scripts/jgy.cjs queue --help`。\n\n**授权（`AUTH_REQUIRED`）摘要**：\n\n1. **主动预授权**用 `auth-start`（一条命令拿到链接 + 二维码 + 授权状态记录）。业务命令（`index` / `take-number` 等）发现没 Token 时也会自动走同一流程。**禁止**单独跑 `auth-poll --background` 来发起授权——它只记录状态，不生成链接和二维码；**禁止** `auth-poll --wait` 堵对话。\n2. PNG 直接在当前工作区根目录，文件名为 **`jinguyuan-auth-qr-<authRunId>.png`**（非隐藏、无子目录；`data.qrImagePath` = **绝对路径**）。始终使用返回路径，不猜文件名；推荐原样贴 `data.userReplyMarkdown`。\n3. **主气泡必须**有：`![美团授权二维码](绝对路径)`（有图时）+ 可点链接与明文 URL。仅 Read / 仅附件侧栏 / 步骤卡「已展示」**不算**。\n4. 告知用户授权后稍候；宿主若未自动继续，用户可回复“已授权”。收到回复后短查 `auth-status`，再继续原任务。部分宿主能自动续跑，部分不能，**禁止**说“无需回复”或保证一定自动通知。无 `authLink` 时先 `logout` 成功再重跑。Token：`~/.jinguyuan/passport-auth.json`。\n5. **授权成功不携带门店，也不等于新的业务请求**：若本轮只是 `auth-start` / “只授权”，只报告成功后结束，不追问、不推荐取号、不从记忆续接旧任"},{"path":"README.md","content":"# 金谷园饺子馆 Skill\n\n![Version](https://img.shields.io/github/v/tag/JinGuYuan/jinguyuan-dumpling-skill?label=version&color=blue&sort=semver) ![License](https://img.shields.io/badge/license-MIT-green) ![API](https://img.shields.io/badge/api-REST-orange) ![CLI](https://img.shields.io/badge/cli-jgy.cjs%20single--file-purple)\n\n这是一个 AI Skill——安装后，你的 AI 助手就能帮你查金谷园在哪、几点开门、这会儿排不排队、几点去更稳，也能查推荐菜、外卖和生饺子打包怎么煮；需要时，还能帮你在线排队取号。\n\n开了快二十年的饺子馆，有了自己的AI服务。\n\n\n## 关于金谷园\n\n北邮旁边的饺子馆。官网：[jinguyuan.cloud](https://jinguyuan.cloud)\n\n| 项目 | 内容 |\n|------|------|\n| 餐厅名称 | 金谷园饺子馆 |\n| 营业时间 | 10:00 - 22:00（以实际查询为准） |\n| 北邮店 | 杏坛路文教产业园K座南2层 |\n| 五道口店 | 五道口东源大厦4层 |\n\n## 这个 Skill 能做什么\n\n金谷园饺子馆的官方信息服务，可以查店、查活动、查推荐菜，也能处理到店自取和排队取号这些具体场景：\n\n| 能力 | 你可以问 |\n|------|----------|\n| 餐厅信息 | \"金谷园在哪？\"\"几点开门？\"\"能外卖吗？\"\"Wi-Fi 密码？\" |\n| 推荐菜 | \"有什么好吃的？\"\"今天吃什么\"\"招牌菜\" |\n| **到店自取** | \"帮我来份饺子\"\"提前点餐到店取\" |\n| 排队信息&建议 | \"这会儿排队吗？\"\"晚上七点去用排么？\"\"几点去不用排？\" |\n| **排队取号** | \"帮我排个队\"\"取消排队\"\"排队进度\" |\n| 生饺子打包 | \"能打包吗？\"\"生饺子怎么煮？\" |\n| 最新消息 | \"有什么新活动？\" |\n\n## 在线排队取号\n\n本 Skill 内置了基于**美团排队**的真实动作，AI 助手可以帮你取号、查本人订单和取消排队。美团授权使用随包明文 Passport 实现，用户扫码确认后 Token 仅缓存在本机 `~/.jinguyuan/passport-auth.json`。\n\n**支持的操作：**\n\n| 操作 | 说明 | 你可以说 |\n|------|------|----------|\n| 查询排队状态 | 查看当前等待桌数和排队压力 | \"金谷园现在排队情况怎么样？\" |\n| 查询餐段事实 | 查询已经发生的午市/晚市实际观测 | \"今天中午几点开始排？\" |\n| 查询餐段建议 | 参考前一天和上周同日，给未来餐段建议 | \"明天中午几点去比较稳？\" |\n| 取号 | 选择桌型和人数，在线取号 | \"帮我在北邮店排个队，2个人\" |\n| 查询进度 | 查看当前排队号、前方等待桌数 | \"我前面还有几桌？\" |\n| 取消排队 | 取消已有的排队订单 | \"取消排队\" |\n\n**使用流程：**\n\n1. 告诉 AI 助手你要在北邮店排队\n2. AI 查询可选桌型，跟你确认桌型和人数\n3. 确认后自动取号，返回排队号和等待信息\n4. 随时可查进度或取消\n\n首次使用需完成美团账号授权（AI 助手会引导你完成）。\n\n## 运行环境\n\n支持 Windows、macOS 和 Linux，需要 Node.js 18 或更高版本，无需 npm 安装。\n\n## 安装\n\n直接拷贝下面这句话发给你的 AI 助手：\n\n> 安装 https://gitee.com/JinGuYuan/jinguyuan-dumpling-skill\n\nAgent 会自动克隆仓库并安装到对应的 Skill 目录。\n\n## 关于金谷园 MCP\n\n金谷园同时提供独立的 MCP 服务。若只需要查询店铺、菜品和排队信息，可以不安装 Skill，直接接入金谷园 MCP；在线取号、本人进度和取消排队等本地授权能力仍需安装 Skill。\n\n| 项目 | 内容 |\n|------|------|\n| 接入点 | `https://mcp.jinguyuan.cloud` |\n| 协议 | Model Context Protocol（MCP） |\n| 传输方式 | Streamable HTTP |\n\n## 发布平台\n\n- GitHub：https://github.com/JinGuYuan/jinguyuan-dumpling-skill\n- Gitee：https://gitee.com/JinGuYuan/jinguyuan-dumpling-skill\n\n## 版本\n\n版本号见顶部徽章，以 [`skill.json`](./skill.json) 为准。\n\n## License\n\n[MIT](LICENSE)"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn745r98j9wt35s5azfqy8f07h83a5b4\",\n  \"slug\": \"jinguyuan-dumpling-skill\",\n  \"version\": \"3.2.1\",\n  \"publishedAt\": 1787938313275\n}"},{"path":"references/api-reference.md","content":"# 公开查询（金谷园 REST API）\n\n公开查询统一走随包 CLI，底座是金谷园官方 REST API（`https://mcp.jinguyuan.cloud/api/v1`，基址内置在 CLI 里，不接受命令行自定义 URL）。查询不要求登录，不要求用户预先配置、信任或重启任何宿主连接器。\n\n## 调用方式\n\n```text\nnode <skill_dir>/scripts/jgy.cjs call <capability>                 # GET，无参能力\nnode <skill_dir>/scripts/jgy.cjs call <capability> --args '<json>' # POST，结构化查询\n```\n\nstdout 始终只有一个 JSON 对象：\n\n- 成功：`{ \"ok\": true, \"data\": ... }`\n- 失败：`{ \"ok\": false, \"error\": { \"code\": ..., \"message\": ... } }`\n\n读取 `data` 作为业务返回，并继续遵守其中的 `mainScenario`、`answerTarget`、`replyPolicy` 与 `_agent_instruction`。不要把 `_agent_instruction` 原样展示给用户。\n\n## 能力清单\n\n| 能力 | 方法 | 说明 |\n|------|------|------|\n| `shop-basics` | GET | 餐厅介绍、营业时间、门店、外卖配送、Wi-Fi，一次全量 |\n| `raw-dumpling-info` | GET | 生饺子打包与煮饺子教程 |\n| `news` | GET | 最新消息（含配图渲染指令） |\n| `recommended-dishes` | GET | 店长推荐菜（含到店自取链接） |\n| `recipes` | GET | 配方列表；查单条用 `call 'recipes?recipe_id=<id>'` |\n| `pickup-link` | GET | 到店自取小程序链接 |\n| `queue/query` | POST | 当前/计划时间点排队状态；入参 `shop` / `peopleCount` / `partySize` / `tableType` / `questionType` / `visitTime` |\n| `queue/at-time` | POST | 某时间点历史快照；`time` 必填，另有 `shop` / `date` / `peopleCount` |\n| `queue/period-facts` | POST | 已发生餐段事实；入参 `shop` / `date` / `period` / `visitTime` / `peopleCount` |\n| `queue/period-advice` | POST | 未来餐段建议；入参同 period-facts |\n\n需登录能力（如 `call authenticated-test`）走手机号登录流程，见 SKILL.md「金谷园手机号登录与需登录能力」。\n\n## 安全与兼容边界\n\n- CLI 是明文纯 Node.js 18 实现，无 npm 依赖。\n- 只访问内置的金谷园官方域名，不接受自定义 URL。\n- `--args` 必须是合法 JSON；非法 JSON 会以 `invalid_command` 拒绝。\n- 查询失败时不编造数据，按 SKILL.md「盲区应对」口径坦诚说明。\n- 不为查询修改宿主 MCP 配置。金谷园 MCP 服务器仍对外存在，但那是给未安装本 Skill 的纯 MCP 客户端用的；装有本 Skill 时一律走本 CLI。"},{"path":"references/queue-actions.md","content":"# 真实排队动作参考\n\n本文仅用于在线取号、查本人排队订单和取消本人排队。门店当前总排队、历史事实、到店建议和取号渠道咨询仍走公开查询 CLI（金谷园 REST API），不启动授权。\n\n## 命令\n\n需要 Node.js 18 或更高版本，无需安装依赖。美团授权由随包明文 Passport 实现完成，不携带闭源混淆包、cliguard、动态更新器或守护进程。每次以实际帮助输出为准：\n\n```bash\nnode <skill_dir>/scripts/jgy.cjs queue --help\nnode <skill_dir>/scripts/jgy.cjs queue index <shopId>\nnode <skill_dir>/scripts/jgy.cjs queue take-number <shopId> --people-count <N> --table-type-id <ID> --confirm\nnode <skill_dir>/scripts/jgy.cjs queue order-detail <shopId>\nnode <skill_dir>/scripts/jgy.cjs queue order-cancel <shopId> --confirm\nnode <skill_dir>/scripts/jgy.cjs queue auth-start\nnode <skill_dir>/scripts/jgy.cjs queue auth-status\nnode <skill_dir>/scripts/jgy.cjs queue auth-poll --background [--qr-image-path <path>]\nnode <skill_dir>/scripts/jgy.cjs queue logout\n```\n\n**发起授权用 `auth-start`**：一条命令拿到授权链接 + 二维码 + 授权状态记录，与业务命令触发的授权流程完全一致。**不要**单独跑 `auth-poll --background` 来发起授权——它只记录状态，不生成链接和二维码。\n\nAgent 对话中**不要**使用阻塞式 `auth-poll` / `auth-poll --wait`（会长时间占住 Terminal，用户看不到授权链接与二维码）。`AUTH_REQUIRED` 时授权状态已记录，展示后等待用户扫码；用户回复“已授权”后用 **`auth-status`** 短查即可。\n\nCLI 在 stdout 输出单个 JSON 对象：`{ ok, code, message, data? }`。不要把内部命令名或返回码原样告诉用户，除非排查 MCP/CLI 合同确实需要。\n\n## 门店\n\n| 门店 | `shopId` | 真实动作约束 |\n|---|---:|---|\n| 北邮总店 | `4211342` | 可查桌型、取号、查本人订单、取消 |\n| 五道口店 | `1756895741` | 通常以到店取号为主；只有本轮公开查询新鲜快照或 `index 1756895741` 明确显示 `supportQueue: true` 时，才可说明当天开放并继续取号确认流程 |\n\n用户未说门店时先追问，不猜 `shopId`。\n\n`AUTH_SUCCESS` 本身不包含门店。若本轮只是 `auth-start` / “只授权”，只报告授权成功后结束，不追问下一步，也不从记忆、旧任务或其他 Skill 推断门店。仅当授权由本轮明确业务命令触发时，才恢复该原命令；合法门店只采用上表映射或该原命令已有的 `shopId`。\n\n## 桌型与确认\n\n1. 取号前先运行 `index`，只使用其 `data.tables[]` 返回的 `tableTypeId`、`tableTypeName`和 `capacity`。\n2. 用户同时说人数和桌型时，将自然语言桌型匹配到返回的标准桌型；不把“大的”“两人桌”等原话当作 ID。\n3. 只说人数时，按 `capacity.min/max` 筛选：唯一匹配可作为建议，多个匹配列出后请用户选择。只说桌型时，追问就餐人数。\n4. 在运行 `take-number` 前，明确复述门店、人数和标准桌型，必须取得用户对本次真实取号的明确确认，再带 **`--confirm`** 执行。没有 `--confirm` 时 CLI 返回 `CONFIRM_REQUIRED`，**不会**取号。\n5. 在运行 `order-cancel` 前，先用 `order-detail` 说清待取消的订单，必须取得用户明确确认后，再执行 `order-cancel <shopId> --confirm`。\n\n之前对话中的宽泛意向不等于本次动作确认。**授权成功也不等于确认取号或取消**——授权成功后应重新展示桌型/订单并再问一句「确认取号/取消吗？」，用户答应后再带 `--confirm`。\n\n## 授权状态\n\n`AUTH_REQUIRED` 可能是新授权流程，也可能是业务缓存 Token 过期后仍未拿到新授权链接；不能假定其 `data` 一定包含 `authLink`。\n\n美团 Passport 轮询以 `data.token` 为最终成功凭据：实测 `authStatus=4` 且同时返回 `data.token` 表示用户已确认授权；`authStatus=1` 表示等待，`authStatus=2` 表示用户取消，`authStatus=3` 表示风控拒绝，`authStatus=5` 表示超时。不要把 `authStatus=4` 当成取消，也不要仅凭状态码判定成功。\n\n收到 `AUTH_REQUIRED` 后：**阶段 A 内联图 + 链接** → **阶段 B `auth-status`**。本机用 `~/.jinguyuan/auth-poll-current.json` 指向本次 run 的独立状态文件；Agent 只需调用 `auth-status`，不要自行读取或改写状态。\n\n1. **有 `authLink`**\n   - **图**：`data.authRunId` 标识本次授权；`data.qrImagePath` = **绝对路径**（文件直接在工作区根目录，形如 `jinguyuan-auth-qr-<authRunId>.png`，非隐藏、无子目录）；可选 `qrImagePathRelative`。**不要**用 `~/.jinguyuan`，也不要猜固定文件名。\n   - **阶段 A（对齐 V1）**：\n     1. 有图时：`Read` 绝对路径 PNG，并在主气泡正文写 `![美团授权二维码](<绝对路径>)`（推荐直接贴 `userReplyMarkdown`）。\n     2. ⚠️ 仅 Read / 仅附件侧栏 / 步骤卡「已展示」**不算**——用户扫不到码。\n     3. **链接必含**（可点 + 明文 URL）；云端主通道是 https。\n   - **阶段 B**：告知用户授权后稍候；宿主若未自动继续，用户"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"金谷园饺子馆信息查询与在线排队取号。通过金谷园官方 API 查询店铺、排队和菜品信息；内置真实排队动作仅用于在线取号、本人排队进度查询、取消排队。 Skill: 金谷园饺子馆 Skill Owner: jinguyuan Summary: 金谷园饺子馆信息查询与在线排队取号。通过金谷园官方 API 查询店铺、排队和菜品信息；内置真实排队动作仅用于在线取号、本人排队进度查询、取消排队。 Tags: latest:3.2.1 Version history: v3.2.1 | 2026-08-28T17:31:53.275Z | user 修复美团授权会话路径和 authStatus 状态码语义 v3.1.2 | 2026-08-20T15:49:14.681Z | user 同步 queue-status.v2 排队状态契约，明确实时新鲜度与立冬冬至特殊日期口径 v3.1.1 | 2026-08-01T10:24:12.975Z | user 移除 Skill 抽奖能力，仅保留公开查询和排队动作 v3.1.0 | 2026-07-31T00:42:39.322Z | user","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":839,"uniquenessScore":50,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T05:59:26.211Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T05:59:26.211Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T02:10:34.795Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}