关于 pp-dominos
pp-dominos 是通过 dominos-pp-cli 查看菜单、为美国订单定价和下单并追踪配送的技能,面向自动化 Domino's 订单的 Agent 和高级用户。它支持保存订单模板、比较优惠,并预览加拿大结账准备情况。
主要功能
- 01浏览菜单并管理订单购物车
- 02验证、计算价格并提交美国订单
- 03保存并重放订单模板
- 04比较门店价格和适用优惠
- 05追踪配送阶段与等待时间
- 06预览加拿大结账准备情况
适用场景
- 01使用模板重复提交已保存订单
- 02比较不同附近门店的同一购物车价格
- 03查找价格最低的适用优惠组合
- 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 已安装。**如果尚未安装,请先安装:
- 通过 Printing Press 安装程序安装。默认情况下,二进制文件会安装到 macOS/Linux 上的
$HOME/.local/bin,以及 Windows 上的%LOCALAPPDATA%\Programs\PrintingPress\bin:npx -y @mvanhorn/printing-press-library install dominos --cli-only - 验证:
dominos-pp-cli --version - 确保报告的安装目录位于将调用此技能的 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 | 需要身份验证 |
| 5 | API 错误(上游问题) |
| 7 | 受速率限制(等待后重试) |
| 10 | 配置错误 |
参数解析
解析 $ARGUMENTS:
- 为空、
help或--help→ 显示dominos-pp-cli --help输出 - 以
install开头 → 以mcp结尾 → 安装 MCP;否则 → 参见上文的先决条件 - 其他情况 → 直接使用(作为 CLI 命令执行,并附带
--agent)
MCP 服务安装
- 安装 MCP 服务:
go install github.com/mvanhorn/printing-press-library/library/food-and-dining/dominos/cmd/dominos-pp-mcp@latest - 在 Claude Code 中注册:
claude mcp add dominos-pp-mcp -- dominos-pp-mcp - 验证:
claude mcp list
直接使用
- 检查是否已安装:
which dominos-pp-cli如果未找到,请提供安装选项(参见本技能开头的先决条件)。 - 根据用户查询,从上文的独特功能和命令参考中选择最合适的命令。
- 使用
--agent标志执行:dominos-pp-cli <command> [subcommand] [args] --agent - 如有歧义,可深入查看子命令帮助:
dominos-pp-cli <command> --help。