bring-add

Review·Scanned 2/17/2026

This skill is a CLI that adds items to Bring! shopping lists using the bring-shopping library. It reads BRING_EMAIL and BRING_PASSWORD from the environment, performs network calls (bring.login(), bring.loadLists(), bring.batchUpdateList()), and includes npm install/node index.js usage examples.

from clawhub.ai·v78de50f·71.9 KB·0 installs
Scanned from 1.0.0 at 78de50f · Transparency log ↗
$ vett add clawhub.ai/darkdevelopers/bring-addReview findings below

bring-add

Add items to Bring! shopping lists from the command line.

Installation

cd /path/to/node-bring-api/skills/bring-add
npm install

Quick Start

# Set credentials
export BRING_EMAIL="your@email.com"
export BRING_PASSWORD="yourpassword"
export BRING_DEFAULT_LIST="Shopping"  # optional

# Add a single item
node index.js "Tomatoes" "500g"

Usage

bring-add [global flags] [item] [spec]
bring-add [global flags] <subcommand>

Quick Mode (single item)

node index.js "Tomatoes" "500g"
node index.js "Milk"
node index.js --list "Party" "Chips" "3 bags"

Batch Mode (multiple items)

node index.js --batch "Tomatoes 500g, Onions, Cheese 200g"

Stdin Mode

echo -e "Milk 1L\nBread\nButter" | node index.js -
cat shopping-list.txt | node index.js -

Interactive Mode

node index.js

When stdin is a TTY and no arguments are provided, enters interactive mode:

Adding to list: Shopping

Enter items (empty line to finish):
> Tomatoes 500g
> Onions
> Cheese 200g
>

Added 3 items to "Shopping"

List Shopping Lists

node index.js lists
node index.js -v lists          # show UUIDs
node index.js --json lists      # JSON output

Global Flags

FlagDescription
-h, --helpShow help and exit
-V, --versionPrint version and exit
-l, --list <name>Target list (name or UUID)
-b, --batch <items>Comma-separated items
-n, --dry-runPreview without modifying
-q, --quietSuppress non-error output
-v, --verboseShow detailed progress
--jsonOutput JSON to stdout
--no-colorDisable colors
--no-inputNever prompt; fail if input required

Environment Variables

VariableRequiredDescription
BRING_EMAILYesBring! account email
BRING_PASSWORDYesBring! account password
BRING_DEFAULT_LISTNoDefault list name or UUID
NO_COLORNoDisable colors (any value)
DEBUGNoShow debug output

Precedence: Flags > Environment > Defaults

Input Format

ItemName [Specification]

InputItemSpec
Tomatoes 500gTomatoes500g
Oat milk 1LOat milk1L
Red onions 3Red onions3
CheeseCheese(empty)

Rule: Last word is specification if it contains a number or unit.

Exit Codes

CodeMeaning
0Success
1Generic failure (API error, network)
2Invalid usage (bad args, missing input)
3Authentication failed
4List not found
130Interrupted (Ctrl-C)

I/O Contract

StreamContent
stdoutData: JSON output, dry-run preview
stderrProgress, prompts, errors, warnings

JSON Output

Add Result

{
  "list": {
    "name": "Shopping",
    "uuid": "a5a22d4b-..."
  },
  "added": [
    {"item": "Tomatoes", "spec": "500g"},
    {"item": "Cheese", "spec": ""}
  ],
  "count": 2
}

Dry-Run Result

{
  "list": {"name": "Shopping", "uuid": "..."},
  "wouldAdd": [...],
  "count": 2,
  "dryRun": true
}

Lists Result

{
  "lists": [
    {"name": "Shopping", "uuid": "...", "isDefault": true},
    {"name": "Home", "uuid": "...", "isDefault": false}
  ]
}

Examples

# Quick add
node index.js "Milk" "1L"

# Batch add
node index.js --batch "Bread, Butter, Eggs 6"

# Preview without adding
node index.js --dry-run --batch "Apples 1kg, Pears"

# Add to specific list
node index.js --list "Party" "Chips"

# Pipe from file
cat list.txt | node index.js -

# JSON output for scripting
node index.js --json --batch "Milk, Bread" 2>/dev/null | jq '.count'

# Silent mode
node index.js -q "Milk" && echo "OK"

# List available lists as JSON
node index.js --json lists

# Verbose mode with UUIDs
node index.js -v lists

License

MIT