multiAI Summary Pending

android-order

Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).

3,556 stars

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/order/SKILL.md --create-dirs "https://raw.githubusercontent.com/openclaw/skills/main/skills/04551lh/order/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/order/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How android-order Compares

Feature / Agentandroid-orderStandard Approach
Platform SupportmultiLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).

Which AI agents support this skill?

This skill is compatible with multi.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Android Order Skill (点餐)

This skill uses the paired Android device (`OpenClaw SMS Demo` app with order capability) to manage an in-app menu and cart: get menu, add/remove items, view cart, submit order. Inspired by EdgeOSToolService (MEOW PAY); implementation is in-memory on the device (demo, no real POS backend).

## When to use this skill

- User asks to order food/drinks, view menu, add to cart, or submit an order on the paired Android device: use the `order.*` commands below.

## Commands overview

| Command | Description |
|--------|-------------|
| `order.getGoods` | Return menu (id, name, priceCents, price). |
| `order.getSelectedGoods` | Return current cart with quantities and subtotals. |
| `order.addGoods` | Add by `id` or `name` (and optional `quantity`). |
| `order.removeGoods` | Remove by `id` or `name` (and optional `quantity`). |
| `order.clearGoods` | Clear cart. |
| `order.submitOrder` | Submit cart as order; returns summary (demo only). |
| `order.batchAddGoods` | Add multiple items: `list` = `[{"id":"1","quantity":2},...]`. |

## How to call the underlying commands

Invoke via the OpenClaw gateway node invoke API:

- **command**: one of `order.getGoods`, `order.getSelectedGoods`, `order.addGoods`, `order.removeGoods`, `order.clearGoods`, `order.submitOrder`, `order.batchAddGoods`.
- **paramsJSON**: JSON object string, or `null` for no-param commands.

### order.getGoods

- `command`: `"order.getGoods"`
- `paramsJSON`: `null` or `"{}"`
- Success: payload is a JSON array of `{ "id", "name", "priceCents", "price" }`.

### order.getSelectedGoods

- `command`: `"order.getSelectedGoods"`
- `paramsJSON`: `null` or `"{}"`
- Success: payload is a JSON array of cart items with `id`, `name`, `quantity`, `priceCents`, `subtotalCents`.

### order.addGoods

- `command`: `"order.addGoods"`
- `paramsJSON`: provide **id** or **name** (or both); optional **quantity** (default 1).

  ```json
  { "id": "1", "quantity": "2" }
  ```
  or
  ```json
  { "name": "拿铁", "quantity": "1" }
  ```

- Success: payload includes `success: true` and `message` (e.g. "已添加 拿铁 x1").

### order.removeGoods

- `command`: `"order.removeGoods"`
- `paramsJSON`: same shape as addGoods (`id` or `name`, optional `quantity`).

### order.clearGoods

- `command`: `"order.clearGoods"`
- `paramsJSON`: `null` or `"{}"`.

### order.submitOrder

- `command`: `"order.submitOrder"`
- `paramsJSON`: `null` or `"{}"`.
- Success: payload includes `success`, `message`, `totalCents`, `items`. Cart is cleared after submit.
- Error: `CART_EMPTY` if cart is empty.

### order.batchAddGoods

- `command`: `"order.batchAddGoods"`
- `paramsJSON`: `{ "list": "[{\"id\":\"1\",\"quantity\":2},{\"id\":\"2\",\"quantity\":1}]" }`
- Success: payload includes `success` and `message` (e.g. "已批量添加 2 项").

## Error handling

- **GOODS_NOT_FOUND**: No menu item matched the given id or name. Suggest calling `order.getGoods` to see the menu.
- **NOT_IN_CART**: Item not in cart when removing.
- **CART_EMPTY**: Cannot submit when cart is empty.
- **INVALID_REQUEST**: Missing or malformed params (e.g. empty `list` for batchAddGoods).

## Demo menu (default on device)

The in-app menu includes items such as: 拿铁, 美式, 卡布奇诺, 三明治, 沙拉, 蛋糕 (with ids "1"–"6"). Use `order.getGoods` to get the current list and prices.

## Safety notes

- This is a demo flow: submit order does not charge or send to a real POS. Do not expose as real payment.
- Prefer confirming with the user before submitting an order (e.g. read back cart and total).