mcpField
P
pp-dominos

pp-dominos

github.com/mvanhorn其他2.1k106 次安装今天更新
代码仓库

关于 pp-dominos

pp-dominos 是通过 dominos-pp-cli 查看菜单、为美国订单定价和下单并追踪配送的技能,面向自动化 Domino's 订单的 Agent 和高级用户。它支持保存订单模板、比较优惠,并预览加拿大结账准备情况。

主要功能

  1. 01浏览菜单并管理订单购物车
  2. 02验证、计算价格并提交美国订单
  3. 03保存并重放订单模板
  4. 04比较门店价格和适用优惠
  5. 05追踪配送阶段与等待时间
  6. 06预览加拿大结账准备情况

适用场景

  1. 01使用模板重复提交已保存订单
  2. 02比较不同附近门店的同一购物车价格
  3. 03查找价格最低的适用优惠组合
  4. 04持续追踪配送直至送达

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mvanhorn/printing-press-library --skill pp-dominos

安装后在 Claude Code 中输入/pp-dominos确认已加载。

详细介绍

Domino's — Printing Press 命令行工具

前提条件:安装 CLI

此技能通过 dominos-pp-cli 二进制文件运行。**调用此技能中的任何命令之前,必须确认 CLI 已安装。**如果尚未安装,请先安装:

  1. 通过 Printing Press 安装程序安装。默认情况下,二进制文件会安装到 macOS/Linux 上的 $HOME/.local/bin,以及 Windows 上的 %LOCALAPPDATA%\Programs\PrintingPress\bin:
    npx -y @mvanhorn/printing-press-library install dominos --cli-only
    
  2. 验证:dominos-pp-cli --version
  3. 确保报告的安装目录位于将调用此技能的 Agent/运行时的 $PATH 中。

如果通过 npx 安装失败(例如没有 Node、处于离线状态等),请改用直接 Go 安装(需要 Go 1.26.6 或更新版本)。此方式会安装到 $GOPATH/bin(默认是 $HOME/go/bin),因此请改为将该目录添加到 $PATH:

go install github.com/mvanhorn/printing-press-library/library/food-and-dining/dominos/cmd/dominos-pp-cli@latest

如果安装后 --version 报告“command not found”,说明运行时无法通过 $PATH 访问二进制文件所在目录。在验证成功之前,请勿继续执行技能命令。

何时使用此 CLI

当 Agent 或高级用户需要在浏览器之外与 Domino's 交互时,请使用此 CLI——创建、定价和下单美国订单,检查加拿大结账准备情况,追踪配送,在不同门店之间比较价格,优化优惠选择,或重放已保存的订单模板。它非常适合自动化:每条命令都支持 --json、--dry-run、--agent、--select 和结构化退出码。默认市场为美国;调用加拿大 Power API 时请使用 --market ca。加拿大支持门店、菜单、账户订单历史、验证、定价、已保存银行卡数量,以及只读的结账准备情况预览。加拿大路径不支持美国 GraphQL 忠诚度/购物车 BFF 和加拿大在线银行卡令牌化。

独特功能

这些功能是其他任何用于此 API 的工具都不具备的。

可累积的本地状态
  • template save — 保存常用订单,包括门店、地址、商品、配料和支付引用,然后用一条命令重放。

    当 Agent 或用户想要用一条命令重复下单,而无需从头重新构建购物车时,适合使用此功能。

    dominos-pp-cli template save friday-night --from-cart && dominos-pp-cli template order friday-night --eta-watch --json
    
  • reorder — 根据今日菜单重放上一笔订单;若菜单已下架某些商品,则使用 FTS 替换商品,确保订单仍能提交。

    当需要重放已保存订单,且必须应对 Domino's 菜单轮换时,适合使用此功能;替换商品可避免出现“此商品已不再供应”的错误。

    dominos-pp-cli reorder --last --substitute-unavailable --dry-run --json
    
  • deals best — 将购物车与所有可用优惠(包括仅限忠诚度会员的优惠)进行比对,并报告价格最低的组合。

    只要用户关注价格,下单前就适合使用此功能;此标志会枚举 2-3 个优惠的组合,而网站不会显示这些组合。

    dominos-pp-cli deals best --agent
    
  • analytics — 汇总已同步的订单历史,统计总支出、商品频次、常用门店和平均订单金额。

    当用户想知道“我这个季度在披萨上花了多少钱”或“我最常点的 3 种商品是什么”时,适合使用此功能。它完全基于本地 SQLite 订单历史。

    dominos-pp-cli analytics --period 90d --group-by item --agent
    
跨来源洞察
  • compare-prices — 为附近每家门店的同一购物车定价,并按含配送费的总价排序。

    当需要权衡附近门店之间的配送时间与价格时,适合使用此功能(配送费和等待时间可能抵消菜单价格上的优惠)。

    dominos-pp-cli compare-prices --street "421 N 63rd St" --city "Seattle WA" --items S_PIZPH,S_LAVA --agent
    
  • stores wait — 获取半径范围内每家门店的 CartEtaMinutes,并按预计到达时间排序——这是其他所有封装工具都会忽略的独特 GraphQL BFF 操作。

    繁忙时段需要准确的等待时间估算,而不是打电话询问门店时,适合使用此功能。

    dominos-pp-cli stores wait --street "421 N 63rd St" --city "Seattle WA" --agent
    
  • deals eligible — 列出当前购物车实际适用的广告优惠,并解释每项不匹配的优惠为何不适用。

    当用户正在寻找优惠券,并且需要了解条件差距,而不只是知道“是否有优惠”时,适合使用此功能。

    dominos-pp-cli deals eligible --agent
    
面向 Agent 的底层工具
  • track — 流式追踪 Domino's 的订单阶段——已下单 → 准备中 → 烘烤中 → 质量检查 → 配送中 → 已送达——直至订单送达。

    当 Agent 或用户想准确了解已下单的订单何时进入下一阶段,又不想让浏览器标签页一直保持打开时,可使用此工具。

    dominos-pp-cli track --phone 2065551234 --watch --interval 30s --agent
    
  • order-quick — 在一条命令中重放模板、验证、计价、下单(使用 --confirm),并持续追踪订单,最终输出 JSON 封装结果。

    当 Agent 或自动化流程需要触发订单并干净地退出,同时获取结构化的 {order_id, eta_min, total, tracker_phone} 输出时,可使用此工具。

    dominos-pp-cli order-quick --template friday-night --confirm --eta-watch --json
    

HTTP 传输

此 CLI 使用与 Chrome 兼容的 HTTP 传输来访问面向浏览器的端点。执行常规 API 调用无需常驻的浏览器进程。

发现信号

此 CLI 根据浏览器观察到的流量上下文生成。

  • 捕获覆盖范围:共 0 条网络记录,其中包含 0 条 API 记录
  • 身份验证信号:bearer_token

命令参考

customer — 客户资料、订单历史和忠诚度(需要 auth login)

checkout — 检查结账准备情况,但不下单

  • dominos-pp-cli customer loyalty — 查看客户的忠诚度积分余额、等级状态和待入账积分。
  • dominos-pp-cli customer orders — 列出客户最近的订单。返回完整的 Order 对象(Address、Products、Amounts、Coupons、Status 等)……

graphql — GraphQL BFF 操作(通过嗅探发现)

  • dominos-pp-cli graphql categories — 获取门店的菜单类别
  • dominos-pp-cli graphql create_cart — 创建新的购物车
  • dominos-pp-cli graphql customer — 获取经过身份验证的客户资料,包括已保存的地址和偏好设置
  • dominos-pp-cli graphql deals_list — 获取门店可用的优惠和优惠券
  • dominos-pp-cli graphql get_cart — 根据 ID 获取购物车及其商品和价格
  • dominos-pp-cli graphql loyalty_deals — 获取会员专享优惠
  • dominos-pp-cli graphql loyalty_points — 获取忠诚度积分余额和状态
  • dominos-pp-cli graphql loyalty_rewards — 按等级获取可用的忠诚度奖励
  • dominos-pp-cli graphql products — 获取某个类别中的商品及自定义选项
  • dominos-pp-cli graphql quick_add_product — 根据商品代码快速将商品加入购物车
  • dominos-pp-cli graphql summary_charges — 获取购物车总额,包括税费和配送费

menu — 浏览门店菜单并搜索商品

  • dominos-pp-cli menu <storeID> — 获取门店完整菜单,包括类别、商品、款式和配料

orders — 创建、验证、计价和下单

  • dominos-pp-cli orders place — 下达配送或自取订单
  • dominos-pp-cli orders price — 获取订单价格,包括税费和手续费
  • dominos-pp-cli orders validate — 下单前验证订单

stores — 查找 Domino's 门店并获取门店信息

  • dominos-pp-cli stores find — 根据街道和城市查找附近的 Domino's 门店
  • dominos-pp-cli stores get — 获取门店详细信息,包括营业时间、服务能力和等待时间

tracking — 追踪进行中的订单

  • dominos-pp-cli tracking — 根据电话号码追踪订单
查找合适的命令

如果你知道自己想做什么,但不知道该用哪个命令,可以直接询问 CLI:

dominos-pp-cli which "<capability in your own words>"

which 会根据自然语言能力查询,从此 CLI 精选的功能索引中找到最匹配的命令。退出代码 0 表示至少找到一个匹配项;退出代码 2 表示没有可信的匹配项——请改用 --help,或使用更具体的查询。

操作示例

完整的真实场景流程:最近的门店 → 菜单 → 购物车 → 优惠
# 1. Find closest store (no auth needed)
dominos-pp-cli stores find --street "709 19th Ave" --city "Seattle WA 98122" --json

# 2. List all coupons available at that store (no auth needed; 58 coupons)
dominos-pp-cli deals list --store-id 7144 --json

# 3. Build a cart (local, no API call)
dominos-pp-cli cart new --store 7144 --service Delivery --address "709 19th Ave, Seattle WA 98122"
dominos-pp-cli cart add 12THIN --qty 1     # Medium 12" Thin Pizza
dominos-pp-cli cart add F_PBITES --qty 1   # Parmesan Bread Bites

# 4. See which coupons auto-apply (real auto-couponing-service call)
dominos-pp-cli deals best --json
dominos-pp-cli deals eligible --json

每个步骤都会调用真实的 Domino's 端点并返回真实数据。优惠查询会正确识别哪些门店优惠券适用于你的特定购物车。

周五晚上的点餐,轻松搞定
dominos-pp-cli order-quick --template friday-night --confirm --eta-watch --json

重放已保存的模板,验证、定价、下单(使用 --confirm),并持续查看订单跟踪信息。输出包含 order_id、eta_min 和 total 的最终 JSON 信封。需要名为 friday-night 的模板——请参阅 template save。不使用 --confirm 时,将返回试运行预览(不会下单)。

已认证的命令(运行 auth login 后)
# Order history
dominos-pp-cli customer orders --limit 5 --json

# Loyalty points balance
dominos-pp-cli customer loyalty --json
加拿大账户历史记录和结账预览
# One-time interactive sign-in; market is persisted with the session.
dominos-pp-cli auth login --market ca

# Direct API calls after login; no browser navigation is required.
dominos-pp-cli customer orders --market ca --limit 5 --json
dominos-pp-cli customer cards --market ca --json
dominos-pp-cli checkout preview --market ca --last --json

checkout preview 会移除先前的支付和订单标识符,验证并重新计算最新订单的价格,只返回已保存的卡片数量和允许列表中的商店功能,并且没有调用 /power/place-order 的代码路径。在实现加拿大支付和服务方式契约之前,orders place --market ca 以及需要确认的快速下单/模板下单都会安全失败;请改用 Domino's Canada 完成交易。

浏览器登录会自动获取客户 ID。使用 DOMINOS_TOKEN、auth login --paste 或 auth login --stdin 时,请明确传入相应的客户 ID:checkout preview <customerID> --market ca --last --json。

客户 ID 是登录时使用的长格式 base64 风格标识符。auth login 完成后,承载令牌会保存在 ~/.config/dominos-pp-cli/config.toml 中,直到 Dominos 令其过期(约 1 小时)。

查找今晚订单最便宜的门店(agent + select,缩减输出)
dominos-pp-cli compare-prices --street "421 N 63rd St" --city "Seattle WA" --items S_PIZPH,S_LAVA --agent --select results[].store_id,results[].total_cents

调查附近的门店,只返回 Agent 需要的比较字段。

寻找最划算的叠加优惠
dominos-pp-cli deals best --agent

针对当前购物车尝试所有可用优惠——包括 2-3 个优惠叠加组合——并报告价格最低的组合及优惠代码。

实时查看配送状态
dominos-pp-cli track --phone 2065551234 --watch --interval 30s --agent

每 30 秒推送一次状态变更(placed → prep → bake → qc → out → delivered),直到订单送达。送达后以状态码 0 退出。

为什么这个优惠没有应用到我的购物车?
dominos-pp-cli deals eligible --agent

列出适用于当前购物车的优惠,并根据各优惠的条件说明是否符合资格。

身份验证设置

大多数命令无需身份验证即可使用:门店定位、浏览菜单、构建购物车、匿名下单和通过电话号码跟踪订单均可正常运行。如需使用忠诚度奖励、会员专属优惠和订单历史记录,请运行 dominos-pp-cli auth login——该命令会启动一个指向 dominos.com 登录页面的 Chrome 窗口,等待你完成常规登录(支持验证码和双重身份验证),然后从 sessionStorage 读取承载令牌,并将其保存到 ~/.config/dominos-pp-cli/config.toml。令牌会一直有效,直到 Domino's 令其过期(约 1 小时)。运行 auth status 进行确认;运行 auth logout 清除令牌。

运行 dominos-pp-cli doctor 验证设置。

Agent 模式

为任意命令添加 --agent。它会展开为:--json --compact --no-input --no-color --yes。

  • 支持管道——JSON 输出到 stdout,错误输出到 stderr

  • 支持筛选——--select 可保留部分字段。带点的路径可深入嵌套结构;数组会逐元素遍历。对于内容冗长的 API,这对控制上下文大小至关重要:

    dominos-pp-cli stores get mock-value --agent --select id,name,status
    
  • 支持预览——--dry-run 显示请求,但不发送

  • 非交互式——绝不提示输入,所有输入都通过标志提供

  • 明确重试——仅当已存在的创建结果也应视为成功时,才使用 --idempotent

Agent 反馈

如果你(或 Agent)发现此 CLI 有不妥之处,请记录下来:

dominos-pp-cli feedback "menu sync skipped nutrition fields for half the items"
dominos-pp-cli feedback --stdin < notes.txt
dominos-pp-cli feedback list --json --limit 10

记录会保存在本地的 ~/.dominos-pp-cli/feedback.jsonl 中。只有在设置了 DOMINOS_FEEDBACK_ENDPOINT,并且传入了 --send 或设置了 DOMINOS_FEEDBACK_AUTO_SEND=true 时,才会将记录 POST 到远程端点。默认情况下,记录仅保存在本地。

写下让你感到意外的地方,而不是提交错误报告。简短、具体、一行即可:这才是会不断累积价值的部分。

输出交付

每条命令都接受 --deliver <sink>。输出会发送到指定的接收端,同时也会(或不再)写入 stdout,这样 Agent 无需手动通过管道传递,就能路由命令结果。支持三种接收端:

接收端效果
stdout默认;仅写入 stdout
file:<path>原子地将输出写入 <path>(临时文件 + 重命名)
webhook:<url>将输出正文 POST 到 URL(使用 application/json;若指定 --compact,则使用 application/x-ndjson)

不支持的 scheme 会被拒绝,并返回一条指出受支持 scheme 的结构化错误。Webhook 失败时会返回非零状态,并在 stderr 中记录 URL 和 HTTP 状态。

命名配置

配置是保存的一组标志值,可在多次调用中重复使用。当定时运行的 Agent 每次都以相同配置调用同一命令时,可使用配置——这是 HeyGen 的 “Beacon” 模式。

dominos-pp-cli profile save briefing --json
dominos-pp-cli --profile briefing stores get mock-value
dominos-pp-cli profile list --json
dominos-pp-cli profile show briefing
dominos-pp-cli profile delete briefing --yes

显式标志始终优先于配置值;配置值优先于默认值。agent-context 会在 available_profiles 下列出所有可用配置,便于具备自省能力的 Agent 在运行时发现它们。

退出代码

代码含义
0成功
2用法错误(参数错误)
3未找到资源
4需要身份验证
5API 错误(上游问题)
7受速率限制(等待后重试)
10配置错误

参数解析

解析 $ARGUMENTS:

  1. 为空、help 或 --help → 显示 dominos-pp-cli --help 输出
  2. 以 install 开头 → 以 mcp 结尾 → 安装 MCP;否则 → 参见上文的先决条件
  3. 其他情况 → 直接使用(作为 CLI 命令执行,并附带 --agent)

MCP 服务安装

  1. 安装 MCP 服务:
    go install github.com/mvanhorn/printing-press-library/library/food-and-dining/dominos/cmd/dominos-pp-mcp@latest
    
  2. 在 Claude Code 中注册:
    claude mcp add dominos-pp-mcp -- dominos-pp-mcp
    
  3. 验证:claude mcp list

直接使用

  1. 检查是否已安装:which dominos-pp-cli 如果未找到,请提供安装选项(参见本技能开头的先决条件)。
  2. 根据用户查询,从上文的独特功能和命令参考中选择最合适的命令。
  3. 使用 --agent 标志执行:
    dominos-pp-cli <command> [subcommand] [args] --agent
    
  4. 如有歧义,可深入查看子命令帮助:dominos-pp-cli <command> --help。

评论

支持 Markdown