← 提示词库 Meta/muse-agent/skills/opentable/SKILL.md 原文 md
🌐 中英双语对照

name: "opentable"
title: "OpenTable"
description: "Find restaurants on OpenTable, check availability, and make, change, or cancel reservations. Use for restaurant booking and live reservation data."
icon: "opentable"
metadata: { "includeInPrompt": false }

OpenTable / OpenTable

For a user-facing restaurant search or booking, first read
/opt/hatch/skills/booking/SKILL.md,
/opt/hatch/skills/booking/references/restaurants.md, and
/opt/hatch/skills/booking/references/presentation.md. Those files define the
end-to-end booking, fallback, and presentation rules. Use this file for the
OpenTable CLI contract. Keep reservation choices in plain Markdown. Do not call
create_options or a comparison/list widget during a restaurant booking.

面向用户的餐厅搜索或预订,请先阅读
/opt/hatch/skills/booking/SKILL.md、
/opt/hatch/skills/booking/references/restaurants.md 与
/opt/hatch/skills/booking/references/presentation.md。这些文件定义了端到端的预订、回退与呈现规则。本文件仅规定 OpenTable CLI 的调用契约。预订选项用纯 Markdown 呈现。在餐厅预订过程中不要调用 create_options 或对比/列表组件。

Connecting / 连接

OpenTable needs a one-time in-chat consent before any command returns data. Run
opentable status. For a direct reservation request, if it is not_connected,
recommend connecting OpenTable as the preferred low-friction path and post the
exact returned connect_url. Do not invent one. Explain briefly that this
enables live availability, saved-profile use, and smoother booking. Do not wait
idle for the connection or make it a prerequisite: continue the same request
through the venue's official reservation link, another reputable platform, and
phone.place_call when available. If the user connects after a fallback path
started, follow the duplicate-protection rule in
/opt/hatch/skills/booking/references/restaurants.md before resuming the
OpenTable request. If status is unavailable, skip the connection offer and
use those fallback paths immediately. If the request is specifically to connect
OpenTable rather than reserve a table, post the link immediately and wait for
the user to connect. Disconnect with opentable disconnect. Do not send the
user to Settings.

在任何命令返回数据之前,OpenTable 需要一次聊天内的一次性授权。运行 opentable status。对于直接的预订请求,若状态为 not_connected,应推荐连接 OpenTable 作为首选的低阻力路径,并原样贴出返回的 connect_url。不要编造链接。简要说明连接后可获得实时余位、使用已保存的资料以及更顺畅的预订。不要空等连接完成,也不要把连接作为前置条件:继续通过餐厅官方预订链接、其他可靠平台,以及(在可用时)phone.place_call 完成同一请求。如果在回退路径已开始后用户完成连接,先遵循 /opt/hatch/skills/booking/references/restaurants.md 中的重复预订防护规则,再恢复 OpenTable 请求。若状态为 unavailable,跳过连接推荐,立即使用上述回退路径。如果请求本身就是要连接 OpenTable 而非订位,则立即贴出链接并等待用户连接。断开连接使用 opentable disconnect。不要让用户去 Settings 操作。

Common flows / 常见流程

Find a table / 查找餐位

Use lookup-rid to resolve a named restaurant or discover restaurants by city, cuisine, and price. When the city is known, include --city. If there is no clear match, vary the restaurant name or adjust the filters. For example, try common spacing or punctuation variants, pass only the city name to --city, or drop --country-code. Keep the requested location fixed.

使用 lookup-rid 解析具名餐厅,或按城市、菜系和价格发现餐厅。城市已知时带上 --city。若没有明确匹配,可变换餐厅名称或调整过滤条件。例如尝试常见的空格或标点变体、只向 --city 传入城市名,或去掉 --country-code。请求的位置保持不变。

Then use search-availability to check open tables for the requested time and party size.

然后用 search-availability 查询请求时间与人数下的空位。

Book / 预订

After search-availability, resolve the exact slot from the user's request.
Use authorized stored contact details when available; ask only for the name,
email, or phone fields still required at checkout. Then book with
book-reservation (it locks the slot and books in one step).

search-availability 之后,从用户请求中确定确切的时段。有已授权的存储联系方式时直接使用;只补问结账时仍必需的姓名、邮箱或电话字段。然后用 book-reservation 预订(它一步完成锁定时段并预订)。

After book-reservation returns a confirmation, offer to remind the user 30 minutes before the reservation. If they accept or choose another lead time, use cron.add to create a run-once reminder for their chosen time, resolved from the confirmed reservation time.

book-reservation 返回确认后,可提出在预订前 30 分钟提醒用户。若用户接受或选择了其他提前量,用 cron.add 按其选定时间创建一次性提醒,时间以确认后的预订时间为基准推算。

Modify / 修改

Find the new time with search-availability, resolve the exact requested slot, then update with modify-reservation-with-lock. Needs the reservation's confirmation id.

用 search-availability 找到新时间,确定请求的确切时段,然后用 modify-reservation-with-lock 更新。需要预订的确认号(confirmation id)。

Cancel or look up a reservation / 取消或查询预订

Use cancel-reservation or get-reservation, both by the reservation's confirmation id.

使用 cancel-reservation 或 get-reservation,两者都以预订确认号为依据。

Book an experience / 预订体验项目

Find it with list-experiences, check times with search-availability --include-experiences true, resolve the exact requested experience and slot, then book with book-reservation --experience-json (include the experience id and version).

用 list-experiences 找到体验项目,用 search-availability --include-experiences true 查询时间,确定请求的确切体验与时段,然后用 book-reservation --experience-json 预订(需包含体验的 id 与 version)。

Other commands / 其他命令

The flows above cover the common cases. For anything else (a restaurant's policies, seating and dining-area options, releasing a stuck slot lock), run opentable --help for the full command list and opentable <command> --help for its flags.

上述流程覆盖了常见情形。其他需求(餐厅政策、座位与用餐区选项、释放卡住的时段锁)可运行 opentable --help 查看完整命令列表,运行 opentable <command> --help 查看其参数。

Rules / 规则

Limits / 限制