Skill: darkdevelopers/bring-add (version 1.0.0)

--- 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:** - 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:** ```bash export BRING_EMAIL="[REDACTED_SECRET]" export BRING_PASSWORD="yourpassword" export BRING_DEFAULT_LIST="Shopping" # optional ``` ## Installation ```bash cd skills/bring-add npm install ``` ## Common Workflows **Add a single item:** ```bash node index.js "Tomatoes" "500g" node index.js "Milk" ``` **Add to specific list:** ```bash node index.js --list "Party" "Chips" "3 bags" ``` **Batch add multiple items:** ```bash node index.js --batch "Tomatoes 500g, Onions, Cheese 200g" ``` **Pipe from file:** ```bash cat shopping-list.txt | node index.js - echo -e "Milk 1L\nBread\nButter" | node index.js - ``` **Preview before adding:** ```bash node index.js --dry-run --batch "Apples 1kg, Pears" ``` **Get JSON output:** ```bash node index.js --json --batch "Milk, Bread" 2>/dev/null ``` **List available lists:** ```bash 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


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)