🦀 ClawHub
GoList
by @daniel17903
Manage GoList grocery lists via CLI: create, join, switch, share lists, and add or remove items with automatic device and item ID handling.
TERMINAL
clawhub install golist📖 About This Skill
GoList Shared-List Manager (OpenClaw Skill)
Purpose
Enable OpenClaw to manage GoList through a simple, beginner-friendly CLI wrapper around the backend API.GoList is a simplistic app for creating and sharing grocery / shopping lists. This skill is designed to make first-time usage feel fast and approachable: create a list, add items, share with others, and switch between saved lists with minimal setup.
This skill supports:
Hard constraints
1. API base URL is fixed tohttps://go-list.app/api and must never be overridden.
2. OpenClaw must generate its own random device UUID and persist it for reuse.
3. Every request must include the X-Device-Id header.
4. For item writes, OpenClaw must only set:
- name (required),
- deleted (optional, defaults to false),
- quantityOrUnit (optional).
5. OpenClaw must generate all item UUIDs and timestamps in the Python CLI (never require the agent to provide them).
6. Immediately after creating a new list, OpenClaw must always generate a share token and send the share URL to the user without being asked.
7. When talking to the user, OpenClaw must never refer to lists by ID; always use list names (use the stored name↔id mapping internally).
8. For item upserts, if the user does not explicitly provide a quantity/unit, OpenClaw must omit quantityOrUnit.Python CLI tool
Useapps/openclaw/golist_cli.py as the operational API wrapper for this skill.CLI guarantees
https://go-list.app/api.updatedAt timestamps on write operations.X-Device-Id on every request.CLI state and environment
Optional environment:GOLIST_DEVICE_ID (override persisted device id)OPENCLAW_STATE_FILE (custom path for persisted JSON state)GOLIST_SHARE_TOKEN (optional token source for bootstrap --share-token)Persisted state file (default):
~/.openclaw_golist_state.json with:device_id
- active_list_id
- known_lists[] containing id + nameCore flows
1) Create a new list
python3 apps/openclaw/golist_cli.py create-list "Weekend groceries"
python3 apps/openclaw/golist_cli.py share
Creates a list with a generated UUID, stores it in known lists, sets it as active, then immediately creates a share token and returns the share URL to the user.2) Share a list with a user
python3 apps/openclaw/golist_cli.py share
Creates a share token for the active list and returns both token + share URL.3) Join an existing list via share token
python3 apps/openclaw/golist_cli.py join
Redeems the token, fetches the real list name from the API, stores that name+id mapping, and sets it active.4) Switch/access saved lists
python3 apps/openclaw/golist_cli.py lists
python3 apps/openclaw/golist_cli.py use-list "Weekend groceries"
python3 apps/openclaw/golist_cli.py show
5) Item writes (restricted fields)
python3 apps/openclaw/golist_cli.py upsert "milk" [--quantity "2 L"] [--deleted]
python3 apps/openclaw/golist_cli.py delete "milk"
Intent mapping for OpenClaw
create-list "X"create-list, always run share and send the URL/token to the user.sharejoin listsuse-list "X"showupsert "X" [--quantity "..."]delete "X"Safety behavior
create-list or join first.--quantity when the user asked for one.name, deleted, and optional quantityOrUnit.