# Send marriott to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "marriott",
    "name": "marriott",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/qianjunye/marriott",
    "canonicalUrl": "https://clawhub.ai/qianjunye/marriott",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/marriott",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=marriott",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "setup.sh",
      "launch-chrome.sh",
      "skill-rooms.js",
      "使用指南.md",
      "skill-book.js",
      "skill-search.js"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "marriott",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-02T01:09:03.715Z",
      "expiresAt": "2026-05-09T01:09:03.715Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=marriott",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=marriott",
        "contentDisposition": "attachment; filename=\"marriott-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "marriott"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/marriott"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/marriott",
    "downloadUrl": "https://openagent3.xyz/downloads/marriott",
    "agentUrl": "https://openagent3.xyz/skills/marriott/agent",
    "manifestUrl": "https://openagent3.xyz/skills/marriott/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/marriott/agent.md"
  }
}
```
## Documentation

### 第一步：搜索酒店

node "$HOME/.claude/skills/marriott/skill-search.js" $ARGUMENTS

脚本通过 Nominatim 地理编码 + 直接 URL 跳转搜索，无表单操作。输出 JSON，解析后展示给用户：

#酒店名称价格/晚距目的地描述/地址

询问用户："请输入序号 [1-4] 选择酒店（可附加偏好，如"2，大床房灵活退改"）："

### 第二步：选择酒店，查询可用房型

用户回复序号 N（含可选偏好描述）后，写入选择：

node "$HOME/.claude/skills/marriott/skill-select.js" --hotel N

查询该酒店可用房型：

node "$HOME/.claude/skills/marriott/skill-rooms.js"

输出 JSON 的 rooms 数组结构：

rooms[i] = { compName, name, bedType("大床"/"双床"/"其他"), rates[] }
rates[j] = { rateName, isFlexible, price(每晚), total(总价), btnGlobalIdx }

将所有房型×房价组合展示为扁平列表：

#床型房型房价方案价格/晚总价灵活退改

若用户有偏好（如"大床+灵活退改+最便宜"），自动筛选匹配项并高亮推荐，但仍需用户确认选择序号。

询问："请输入序号确认选择："

### 第三步：预订确认

根据用户选择的序号找到对应条目的 btnGlobalIdx，展示预订摘要并请求最终确认：

即将预订：
  酒店：[酒店名]
  房型：[房型名称]
  房价：[方案名称]  ¥[price]/晚  共 [nights] 晚 = ¥[total]
  入住：[checkIn] → 退房：[checkOut]
  退改：[灵活退改 ✓ / 不可退改]

确认提交预订？[是/否]

### 第四步：执行预订

用户确认后执行：

node "$HOME/.claude/skills/marriott/skill-book.js" --btn <btnGlobalIdx>

登录弹窗处理：若预订过程中 Chrome 弹出登录窗口，提示用户在 Chrome 中手动完成登录，登录完成后告知我，我将继续点击"立即预订"按钮完成预订。

解析输出 JSON：

success: true → 展示确认号和总价，预订完成
success: false → 展示 snippet 内容分析原因；若有登录弹窗问题，可直接检查 Chrome 当前页并点击"立即预订"

### 注意事项

Akamai 拦截（401/Access Denied）：提示用户在 Chrome 中手动刷新该页面，稳定后重试对应步骤
rooms 为空：查看 ~/.claude/skills/marriott/debug-no-rooms.png 截图分析原因
stderr = 进度/错误日志；stdout = JSON 结果（唯一解析源）
Linux 环境：Mac 上运行完 skill-search.js 后，将 cookies.json + selection.json + rooms-results.json 传至 Linux，再运行 skill-book.js（自动使用 headless Chromium）
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: qianjunye
- Version: 1.0.0
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-05-02T01:09:03.715Z
- Expires at: 2026-05-09T01:09:03.715Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/marriott)
- [Send to Agent page](https://openagent3.xyz/skills/marriott/agent)
- [JSON manifest](https://openagent3.xyz/skills/marriott/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/marriott/agent.md)
- [Download page](https://openagent3.xyz/downloads/marriott)