{
  "schemaVersion": "1.0",
  "item": {
    "slug": "bring-add",
    "name": "Bring Add",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/darkdevelopers/bring-add",
    "canonicalUrl": "https://clawhub.ai/darkdevelopers/bring-add",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/bring-add",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=bring-add",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "index.js",
      "package-lock.json",
      "package.json"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/bring-add"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/bring-add",
    "agentPageUrl": "https://openagent3.xyz/skills/bring-add/agent",
    "manifestUrl": "https://openagent3.xyz/skills/bring-add/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/bring-add/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Overview",
        "body": "CLI for adding items to Bring! shopping lists. Supports quick single-item mode, batch mode, stdin/pipe input, and interactive mode."
      },
      {
        "title": "When to Use",
        "body": "Use this skill when:\n\nUser wants to add items to a Bring! shopping list\nAdding single item with optional specification (e.g., \"Milk 1L\")\nAdding multiple items at once (batch mode)\nPiping items from a file or other command\nNeed to preview additions with dry-run\nNeed JSON output for scripting\n\nDon't use when:\n\nUser wants to browse recipes (use bring-recipes instead)\nUser wants to remove items from a list\nUser wants to view current list contents"
      },
      {
        "title": "Quick Reference",
        "body": "CommandPurposebring-add \"Item\" \"spec\"Add single item with specificationbring-add --batch \"A, B 1L, C\"Add multiple comma-separated itemsbring-add -Read items from stdinbring-addInteractive mode (TTY only)bring-add listsShow available shopping listsbring-add --dry-run ...Preview without modifying\n\nEnvironment variables:\n\nexport BRING_EMAIL=\"your@email.com\"\nexport BRING_PASSWORD=\"yourpassword\"\nexport BRING_DEFAULT_LIST=\"Shopping\"  # optional"
      },
      {
        "title": "Installation",
        "body": "cd skills/bring-add\nnpm install"
      },
      {
        "title": "Common Workflows",
        "body": "Add a single item:\n\nnode index.js \"Tomatoes\" \"500g\"\nnode index.js \"Milk\"\n\nAdd to specific list:\n\nnode index.js --list \"Party\" \"Chips\" \"3 bags\"\n\nBatch add multiple items:\n\nnode index.js --batch \"Tomatoes 500g, Onions, Cheese 200g\"\n\nPipe from file:\n\ncat shopping-list.txt | node index.js -\necho -e \"Milk 1L\\nBread\\nButter\" | node index.js -\n\nPreview before adding:\n\nnode index.js --dry-run --batch \"Apples 1kg, Pears\"\n\nGet JSON output:\n\nnode index.js --json --batch \"Milk, Bread\" 2>/dev/null\n\nList available lists:\n\nnode index.js lists\nnode index.js --json lists"
      },
      {
        "title": "Flags Reference",
        "body": "FlagDescription-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 colored output--no-inputNever prompt; fail if input required"
      },
      {
        "title": "Input Format",
        "body": "Items follow the pattern: ItemName [Specification]\n\nInputItemSpecTomatoes 500gTomatoes500gOat milk 1LOat milk1LRed onions 3Red onions3CheeseCheese(empty)\n\nRule: Last word becomes specification if it contains a number or unit (g, kg, L, ml, Stück, pck)."
      },
      {
        "title": "Exit Codes",
        "body": "CodeMeaning0Success1Generic failure (API error, network)2Invalid usage (bad args, missing input)3Authentication failed4List not found130Interrupted (Ctrl-C)"
      },
      {
        "title": "Common Mistakes",
        "body": "Forgetting environment variables:\nSet BRING_EMAIL and BRING_PASSWORD before running.\n\nWrong list name:\nUse bring-add lists to see available lists and their exact names.\n\nSpecification parsing:\nThe 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\".\n\nInteractive mode in scripts:\nUse --no-input flag in scripts to fail explicitly rather than hang waiting for input."
      },
      {
        "title": "Implementation Notes",
        "body": "Uses node-bring-api with batchUpdateList() API\nRequires Node.js 18.0.0+\nOutputs data to stdout, progress/errors to stderr\nJSON mode available for automation\nInteractive mode only when stdin is a TTY"
      }
    ],
    "body": "Bring! Add Items CLI\nOverview\n\nCLI for adding items to Bring! shopping lists. Supports quick single-item mode, batch mode, stdin/pipe input, and interactive mode.\n\nWhen to Use\n\nUse this skill when:\n\nUser wants to add items to a Bring! shopping list\nAdding single item with optional specification (e.g., \"Milk 1L\")\nAdding multiple items at once (batch mode)\nPiping items from a file or other command\nNeed to preview additions with dry-run\nNeed JSON output for scripting\n\nDon't use when:\n\nUser wants to browse recipes (use bring-recipes instead)\nUser wants to remove items from a list\nUser wants to view current list contents\nQuick Reference\nCommand\tPurpose\nbring-add \"Item\" \"spec\"\tAdd single item with specification\nbring-add --batch \"A, B 1L, C\"\tAdd multiple comma-separated items\nbring-add -\tRead items from stdin\nbring-add\tInteractive mode (TTY only)\nbring-add lists\tShow available shopping lists\nbring-add --dry-run ...\tPreview without modifying\n\nEnvironment variables:\n\nexport BRING_EMAIL=\"your@email.com\"\nexport BRING_PASSWORD=\"yourpassword\"\nexport BRING_DEFAULT_LIST=\"Shopping\"  # optional\n\nInstallation\ncd skills/bring-add\nnpm install\n\nCommon Workflows\n\nAdd a single item:\n\nnode index.js \"Tomatoes\" \"500g\"\nnode index.js \"Milk\"\n\n\nAdd to specific list:\n\nnode index.js --list \"Party\" \"Chips\" \"3 bags\"\n\n\nBatch add multiple items:\n\nnode index.js --batch \"Tomatoes 500g, Onions, Cheese 200g\"\n\n\nPipe from file:\n\ncat shopping-list.txt | node index.js -\necho -e \"Milk 1L\\nBread\\nButter\" | node index.js -\n\n\nPreview before adding:\n\nnode index.js --dry-run --batch \"Apples 1kg, Pears\"\n\n\nGet JSON output:\n\nnode index.js --json --batch \"Milk, Bread\" 2>/dev/null\n\n\nList available lists:\n\nnode index.js lists\nnode index.js --json lists\n\nFlags Reference\nFlag\tDescription\n-l, --list <name>\tTarget list (name or UUID)\n-b, --batch <items>\tComma-separated items\n-n, --dry-run\tPreview without modifying\n-q, --quiet\tSuppress non-error output\n-v, --verbose\tShow detailed progress\n--json\tOutput JSON to stdout\n--no-color\tDisable colored output\n--no-input\tNever prompt; fail if input required\nInput Format\n\nItems follow the pattern: ItemName [Specification]\n\nInput\tItem\tSpec\nTomatoes 500g\tTomatoes\t500g\nOat milk 1L\tOat milk\t1L\nRed onions 3\tRed onions\t3\nCheese\tCheese\t(empty)\n\nRule: Last word becomes specification if it contains a number or unit (g, kg, L, ml, Stück, pck).\n\nExit Codes\nCode\tMeaning\n0\tSuccess\n1\tGeneric failure (API error, network)\n2\tInvalid usage (bad args, missing input)\n3\tAuthentication failed\n4\tList not found\n130\tInterrupted (Ctrl-C)\nCommon Mistakes\n\nForgetting environment variables: Set BRING_EMAIL and BRING_PASSWORD before running.\n\nWrong list name: Use bring-add lists to see available lists and their exact names.\n\nSpecification 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\".\n\nInteractive mode in scripts: Use --no-input flag in scripts to fail explicitly rather than hang waiting for input.\n\nImplementation Notes\nUses node-bring-api with batchUpdateList() API\nRequires Node.js 18.0.0+\nOutputs data to stdout, progress/errors to stderr\nJSON mode available for automation\nInteractive mode only when stdin is a TTY"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/darkdevelopers/bring-add",
    "publisherUrl": "https://clawhub.ai/darkdevelopers/bring-add",
    "owner": "darkdevelopers",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/bring-add",
    "downloadUrl": "https://openagent3.xyz/downloads/bring-add",
    "agentUrl": "https://openagent3.xyz/skills/bring-add/agent",
    "manifestUrl": "https://openagent3.xyz/skills/bring-add/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/bring-add/agent.md"
  }
}