Install
openclaw skills install @husamabdel/keycoManage Keyco assets, DUBs (QR/NFC/BLE/Virtual beacons), workflows, lifecycle events, users, and analytics. Use when the user asks about Keyco, asset management, DUB tracking, asset lifecycle, workflow automation, or mentions qrdub.com / keyco.io. Supports reading inventory, checking compliance, running reports, and creating lifecycle events via the Keyco CLI.
openclaw skills install @husamabdel/keycoThis skill uses the Keyco CLI to manage assets (DUBs), workflows, lifecycle events, users, notifications, and analytics through the Keyco platform (api.qrdub.com).
Invoke this skill when the user:
api.qrdub.com, keyco.io, kc_live_*, or the keyco CLIBefore running any command, verify the CLI is installed and configured:
Check if keyco is on PATH: which keyco
Check configuration: keyco status
If either check fails, run the setup script — it handles install + configure in one shot:
bash scripts/setup-keyco.sh
The script will:
@keyco/cli globally via npm if missing (falling back to sudo npm if needed)keyco configure if no valid API key is setAlways offer to run this script before failing — don't ask the user to manually install or configure.
Map their request to one of the Keyco domains:
| Intent | Command family |
|---|---|
| Look up asset / inventory | keyco dub get, keyco dub list, keyco dub search |
| Asset location / tracking | keyco dub location history, keyco dub map-data |
| Lifecycle events | keyco lifecycles create, keyco lifecycles get |
| Workflows | keyco workflows list, keyco workflows get, keyco workflows dubs |
| Users & assignments | keyco user list, keyco user assigned-dubs, keyco user unassigned-dubs |
| Analytics & reports | keyco analytics summary, keyco analytics weekly-digest, keyco analytics stale-assets |
| Groups | keyco groups list, keyco groups dubs |
| Notifications | keyco notifications list, keyco notifications unread-count |
| API keys | keyco api-keys list, keyco api-keys create |
--output json for programmatic parsingAlways append --output json when you need to parse or transform the data. Use --output table only when displaying directly to the user.
keyco configure or create a key with the needed scopekeyco status to verify reachabilityDon't just dump raw JSON — extract the key fields and present them clearly. Offer follow-up actions (e.g., "Want me to check its location history too?").
The following operations have been intentionally removed from the Keyco CLI because they bypass authoritative scan/heartbeat events and break the audit trail:
Never try to work around these restrictions. If the user asks to "set" or "update" a DUB's location or manually complete a workflow, explain that these actions must happen via the physical scan/event flow (QR scan, NFC tap, BLE heartbeat) to preserve audit integrity. Direct them to support@keycomagix.com if they need an override for legitimate reasons.
When presenting asset data to the user:
Asset: <dubname>
UUID: <uuid>
Type: <QR | Pro | Active | Virtual>
Status: <active | inactive>
Group: <group name>
Assigned to: <user email or "Unassigned">
Last seen: <timestamp>
When running analytics, lead with the top-line numbers, then break down by category.
User: "What assets does alice@company.com have?"
→ keyco user list --output json to find her user ID, then
→ keyco user assigned-dubs --user-id <UUID> --output json
→ Summarize: "Alice has N assets assigned: [list]"
User: "Create a maintenance event for DUB ee6f2f42-31b1-4f90-9440-e91fb02ac7c4 due next Friday"
→ Compute the absolute date from "next Friday"
→ keyco lifecycles create --event-type MAINTENANCE --name "Maintenance" --assigned-dub ee6f2f42-31b1-4f90-9440-e91fb02ac7c4 --due-date 2026-04-24
→ Confirm creation to the user with the returned event ID
User: "Show me this week's analytics"
→ keyco analytics weekly-digest --output json
→ Summarize top-line metrics (total assets, active workflows, open lifecycle events, utilization %)
User: "Find any stale assets"
→ keyco analytics stale-assets --output json
→ Report the count and list the first few, offering to create maintenance events or reassign them
User: "Import 50 assets from this CSV"
→ Explain that bulk CSV import goes through POST /api/imports/upload (not yet in CLI) — suggest they use the dashboard at https://dashboard.qrdub.com or loop over keyco lifecycles create / asset endpoints individually
For multi-step tasks, compose commands with standard shell tools:
# Export all DUBs as JSON
keyco dub list --size 1000 --output json > all-dubs.json
# Find assets with no assigned user
keyco user unassigned-dubs --output json | jq '.[] | .uuid'
# Stale asset count for CI
STALE=$(keyco analytics stale-assets --output json | jq '.totalElements')
echo "$STALE stale assets detected"