Skill Details
Back to Skills

/bring-add

by darkdevelopers

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.

View on GitHub

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:

  • User wants to add items to a Bring! shopping list
  • Adding single item with optional specification (e.g., "Milk 1L")
  • Adding multiple items at once (batch mode)
  • Piping items from a file or other command
  • Need to preview additions with dry-run
  • Need JSON output for scripting

Don't use when:

  • User wants to browse recipes (use bring-recipes instead)
  • User wants to remove items from a list
  • User wants to view current list contents

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"  # optional

Installation

cd skills/bring-add
npm install

Common 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 lists

Flags 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

  • Uses node-bring-api with batchUpdateList() API
  • Requires Node.js 18.0.0+
  • Outputs data to stdout, progress/errors to stderr
  • JSON mode available for automation
  • Interactive mode only when stdin is a TTY