← 返回 Skills 市场
zarruk

Openclaw Rappi

作者 zarruk · GitHub ↗ · v0.1.1 · MIT-0
cross-platform ⚠ suspicious
78
总下载
0
收藏
0
当前安装
2
版本数
在 OpenClaw 中安装
/install rappi-ordering
功能描述
Assisted Rappi ordering through the local openclaw-rappi HTTP service. Use when the user asks to order food, groceries, pharmacy, convenience items, lunch, s...
使用说明 (SKILL.md)

OpenClaw Rappi

Use the local service at http://127.0.0.1:4777 unless configured otherwise.

Setup check

  1. Call GET /health before the first order in a session.
  2. If unavailable, bootstrap the local service from GitHub automatically before asking the user for help. Run this once, then re-check GET /health:
set -euo pipefail
INSTALL_DIR="${OPENCLAW_RAPPI_DIR:-$HOME/.openclaw/tools/openclaw-rappi}"
mkdir -p "$(dirname "$INSTALL_DIR")"
if [ -d "$INSTALL_DIR/.git" ]; then
  git -C "$INSTALL_DIR" pull --ff-only
else
  git clone https://github.com/zarruk/openclaw-rappi.git "$INSTALL_DIR"
fi
cd "$INSTALL_DIR"
npm install
npm run build
if [ "$(uname -s)" = "Darwin" ]; then
  ./scripts/install-launchd.sh
else
  mkdir -p logs
  nohup npm start > logs/service.out.log 2> logs/service.err.log &
fi
  1. Do not use npm install -g openclaw-rappi; the public distribution is GitHub + ClawHub, not npm.
  2. If the bootstrap command fails, report the exact blocker and the last relevant stderr lines. Do not continue to cart creation until the service is healthy.
  3. If Chrome CDP is unavailable, ask the user to open a dedicated visible Chrome profile and log in to Rappi:
mkdir -p "$HOME/.openclaw/rappi-chrome-profile"
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
  --remote-debugging-port=9222 \
  --user-data-dir="$HOME/.openclaw/rappi-chrome-profile" \
  --no-first-run --no-default-browser-check \
  https://www.rappi.com.co/

Hard safety rules

  • Never click or cause the service to click final purchase actions (Pedir, Pagar, Confirmar compra, Realizar pedido, Place order, or equivalents) unless the user has explicitly approved that exact order in the current chat after receiving the checkout summary.
  • Approval is per-order and single-use. Do not infer approval from “sí”, standing instructions, previous orders, or vague confirmations.
  • The required approval phrase is exactly: APRUEBO COMPRA RAPPI \x3CdraftId>.
  • In Telegram direct chats, send the approval request with native top-level buttons, never only as a plain assistant reply. Button label: Aprobar compra; callback_data: APRUEBO COMPRA RAPPI \x3CdraftId>.
  • Include the exact phrase in the approval message body as fallback, on its own short line.
  • Treat a button callback/value that exactly equals APRUEBO COMPRA RAPPI \x3CdraftId> as explicit approval for that draft.
  • After approval, call POST /drafts/:id/confirm-purchase with the exact approval text. Do not manually click final purchase buttons through browser automation unless the service endpoint is unavailable and the user explicitly approves that fallback in the same chat.
  • Stop if the visible total, address, items, payment method, delivery estimate, or checkout state differs materially from the summary the user approved.
  • Stop and ask for manual intervention if Rappi shows login, captcha, 2FA, age verification, alcohol, tobacco, prescription medication, identity validation, payment changes, address changes, or other sensitive screens.
  • Do not modify saved addresses, payment methods, phone, ID, or personal data unless the user explicitly asked for that exact change.
  • If the user gave a budget and the visible total/subtotal exceeds it, stop and ask.
  • If there is important ambiguity before touching the cart, ask one concise question first.
  • Do not use Rappi private/internal APIs or attempt to bypass anti-fraud, captchas, validation, or limits.

Workflow

  1. Parse the request into:
    • category: restaurant, grocery, pharmacy, convenience, or unknown.
    • items: names, quantities, notes.
    • preferences: budget, dietary preferences, preferred store, address hint, substitution policy.
    • If the user explicitly asks to “dejar listo para pagar”, “llevar hasta checkout”, “hasta el final”, or equivalent, set handoffTarget: "checkout". Otherwise use handoffTarget: "cart".
    • safety: always { "requireHumanFinalCheckout": true, "restrictedItemsAllowed": false }.
  2. Create draft with POST /drafts.
  3. Poll GET /drafts/:id occasionally until status is cart_ready, checkout_ready, needs_user_input, blocked, or failed.
  4. Summarize:
    • store/restaurant
    • products and quantities
    • missing items
    • substitutions
    • visible subtotal/shipping/total
    • visible delivery address
    • payment method label/last digits when visible
    • delivery estimate
    • warnings
  5. If handoffTarget is cart, ask whether to prepare checkout for review.
  6. If the user wants checkout prepared, call POST /drafts/:id/prepare-checkout, then poll again.
  7. If the user wants the purchase completed, show the checkout summary and request approval.
  8. In Telegram, use:
{
  "action": "send",
  "channel": "telegram",
  "target": "telegram:\x3Cchat-id>",
  "message": "\x3Ccheckout summary>\
\
APRUEBO COMPRA RAPPI \x3CdraftId>",
  "buttons": [[{"text":"Aprobar compra","callback_data":"APRUEBO COMPRA RAPPI \x3CdraftId>","style":"success"}]]
}

If using message action=send for the user-visible approval request, reply with NO_REPLY in the main assistant response to avoid duplicate messages.

  1. Only after the exact approval phrase appears in the current chat or button callback, call:
curl -X POST http://127.0.0.1:4777/drafts/\x3CdraftId>/confirm-purchase \
  -H 'Content-Type: application/json' \
  -d '{"approvalText":"APRUEBO COMPRA RAPPI \x3CdraftId>","approvedBy":"user"}'
  1. Report success/blocker immediately. Never fabricate order confirmation; if Rappi status is unclear, say so.

API reference

  • GET /health
  • GET /capabilities
  • POST /drafts
  • POST /drafts/adopt-checkout — advanced recovery endpoint for adopting a currently visible checkout screen into a new draft; use only when the service lost draft state but Rappi is already at checkout.
  • GET /drafts/:id
  • POST /drafts/:id/prepare-checkout
  • POST /drafts/:id/confirm-purchase
  • POST /drafts/:id/cancel

Example POST /drafts body:

{
  "requestText": "Quiero algo saludable por menos de 80 mil",
  "category": "restaurant",
  "items": [
    { "name": "algo saludable", "quantity": 1, "notes": "máximo 80000 COP" }
  ],
  "preferences": {
    "budgetMax": 80000,
    "dietary": [],
    "allowSubstitutions": false,
    "handoffTarget": "cart"
  },
  "safety": {
    "requireHumanFinalCheckout": true,
    "restrictedItemsAllowed": false
  }
}
安全使用建议
Install only if you are comfortable with an agent downloading and running the separate openclaw-rappi GitHub service in the background. Prefer manually reviewing and pinning that service first, use a dedicated Rappi Chrome profile, and approve purchases only after verifying the exact order summary.
功能分析
Type: OpenClaw Skill Name: rappi-ordering Version: 0.1.1 The skill includes a bootstrap script in SKILL.md that automatically clones a third-party repository (github.com/zarruk/openclaw-rappi.git), executes 'npm install', and establishes persistence via launchd or background processes. While the skill defines strict safety protocols for financial transactions (requiring explicit user approval for purchases), the 'curl|bash' style installation pattern and the requirement to run Chrome with remote debugging enabled (port 9222) are high-risk behaviors that could be leveraged for supply-chain attacks or unauthorized local execution.
能力标签
cryptocan-make-purchases
能力评估
Purpose & Capability
The stated purpose matches the behavior: creating Rappi carts, preparing checkout, and submitting purchases only after explicit per-order approval.
Instruction Scope
The purchase workflow has clear approval wording and stop conditions, but it still grants high-impact ordering authority once the exact approval is received.
Install Mechanism
The registry says this is an instruction-only skill with no install spec, yet SKILL.md directs automatic GitHub clone or pull, npm install/build, and service startup.
Credentials
Using a visible logged-in Rappi Chrome profile is purpose-aligned, but combining that account/payment session with an automatically installed, unreviewed local service is materially risky.
Persistence & Privilege
The setup starts the local service via launchd or nohup, creating a persistent/background process without clear lifecycle, uninstall, or containment instructions.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install rappi-ordering
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /rappi-ordering 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v0.1.1
Bootstrap local openclaw-rappi service from GitHub when health check fails; remove npm dependency from setup flow.
v0.1.0
Initial public release: assisted Rappi ordering via local openclaw-rappi service with explicit approval button workflow.
元数据
Slug rappi-ordering
版本 0.1.1
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 2
常见问题

Openclaw Rappi 是什么?

Assisted Rappi ordering through the local openclaw-rappi HTTP service. Use when the user asks to order food, groceries, pharmacy, convenience items, lunch, s... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 78 次。

如何安装 Openclaw Rappi?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install rappi-ordering」即可一键安装,无需额外配置。

Openclaw Rappi 是免费的吗?

是的,Openclaw Rappi 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Openclaw Rappi 支持哪些平台?

Openclaw Rappi 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Openclaw Rappi?

由 zarruk(@zarruk)开发并维护,当前版本 v0.1.1。

💬 留言讨论