Bring! Add Items CLI
name: bring-add
by darkdevelopers · published 2026-03-22
$ claw add gh:darkdevelopers/darkdevelopers-bring-add---
name: bring-add
description: Use when user wants to add items to Bring! shopping lists. For adding single items, batch items, or items from stdin/files. Supports dry-run preview and JSON output.
---
# Bring! Add Items CLI
Overview
CLI for adding items to Bring! shopping lists. Supports quick single-item mode, batch mode, stdin/pipe input, and interactive mode.
When to Use
**Use this skill when:**
**Don't use when:**
Quick Reference
| Command | Purpose |
|---------|---------|
| `bring-add "Item" "spec"` | Add single item with specification |
| `bring-add --batch "A, B 1L, C"` | Add multiple comma-separated items |
| `bring-add -` | Read items from stdin |
| `bring-add` | Interactive mode (TTY only) |
| `bring-add lists` | Show available shopping lists |
| `bring-add --dry-run ...` | Preview without modifying |
**Environment variables:**
export BRING_EMAIL="your@email.com"
export BRING_PASSWORD="yourpassword"
export BRING_DEFAULT_LIST="Shopping" # optionalInstallation
cd skills/bring-add
npm installCommon Workflows
**Add a single item:**
node index.js "Tomatoes" "500g"
node index.js "Milk"**Add to specific list:**
node index.js --list "Party" "Chips" "3 bags"**Batch add multiple items:**
node index.js --batch "Tomatoes 500g, Onions, Cheese 200g"**Pipe from file:**
cat shopping-list.txt | node index.js -
echo -e "Milk 1L\nBread\nButter" | node index.js -**Preview before adding:**
node index.js --dry-run --batch "Apples 1kg, Pears"**Get JSON output:**
node index.js --json --batch "Milk, Bread" 2>/dev/null**List available lists:**
node index.js lists
node index.js --json listsFlags Reference
| Flag | Description |
|------|-------------|
| `-l, --list <name>` | Target list (name or UUID) |
| `-b, --batch <items>` | Comma-separated items |
| `-n, --dry-run` | Preview without modifying |
| `-q, --quiet` | Suppress non-error output |
| `-v, --verbose` | Show detailed progress |
| `--json` | Output JSON to stdout |
| `--no-color` | Disable colored output |
| `--no-input` | Never prompt; fail if input required |
Input Format
Items follow the pattern: `ItemName [Specification]`
| Input | Item | Spec |
|-------|------|------|
| `Tomatoes 500g` | Tomatoes | 500g |
| `Oat milk 1L` | Oat milk | 1L |
| `Red onions 3` | Red onions | 3 |
| `Cheese` | Cheese | (empty) |
Rule: Last word becomes specification if it contains a number or unit (g, kg, L, ml, Stück, pck).
Exit Codes
| Code | Meaning |
|------|---------|
| `0` | Success |
| `1` | Generic failure (API error, network) |
| `2` | Invalid usage (bad args, missing input) |
| `3` | Authentication failed |
| `4` | List not found |
| `130` | Interrupted (Ctrl-C) |
Common Mistakes
**Forgetting environment variables:**
Set `BRING_EMAIL` and `BRING_PASSWORD` before running.
**Wrong list name:**
Use `bring-add lists` to see available lists and their exact names.
**Specification parsing:**
The last word is treated as specification only if it looks like a quantity. "Red onions" stays as one item, but "Red onions 3" splits into item "Red onions" with spec "3".
**Interactive mode in scripts:**
Use `--no-input` flag in scripts to fail explicitly rather than hang waiting for input.
Implementation Notes
More tools from the same signal band
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).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...