{
  "schemaVersion": "1.0",
  "item": {
    "slug": "bash",
    "name": "Bash",
    "source": "tencent",
    "type": "skill",
    "category": "金融交易",
    "sourceUrl": "https://clawhub.ai/ivangdavila/bash",
    "canonicalUrl": "https://clawhub.ai/ivangdavila/bash",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/bash",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=bash",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "arrays.md",
      "errors.md",
      "expansion.md",
      "testing.md"
    ],
    "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. 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. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "bash",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-26T01:45:55.482Z",
      "expiresAt": "2026-05-03T01:45:55.482Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=bash",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=bash",
        "contentDisposition": "attachment; filename=\"bash-1.0.2.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "bash"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/bash"
    },
    "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/bash",
    "agentPageUrl": "https://openagent3.xyz/skills/bash/agent",
    "manifestUrl": "https://openagent3.xyz/skills/bash/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/bash/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. 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. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Quick Reference",
        "body": "TopicFileArrays and loopsarrays.mdParameter expansionexpansion.mdError handling patternserrors.mdTesting and conditionalstesting.md"
      },
      {
        "title": "Quoting Traps",
        "body": "Always quote variables—\"$var\" not $var, spaces break unquoted\n\"${arr[@]}\" preserves elements—${arr[*]} joins into single string\nSingle quotes are literal—'$var' doesn't expand\nQuote command substitution—\"$(command)\" not $(command)"
      },
      {
        "title": "Word Splitting and Globbing",
        "body": "Unquoted $var splits on whitespace—file=\"my file.txt\"; cat $file fails\nUnquoted * expands to files—quote or escape if literal: \"*\" or \\*\nset -f disables globbing—or quote everything properly"
      },
      {
        "title": "Test Brackets",
        "body": "[[ ]] preferred over [ ]—no word splitting, supports &&, ||, regex\n[[ $var == pattern* ]]—glob patterns without quotes on right side\n[[ $var =~ regex ]]—regex match, don't quote the regex\n-z is empty, -n is non-empty—[[ -z \"$var\" ]] tests if empty"
      },
      {
        "title": "Subshell Traps",
        "body": "Pipes create subshells—cat file | while read; do ((count++)); done—count lost\nUse while read < file or process substitution—while read; do ...; done < <(command)\n( ) is subshell, { } is same shell—variables in ( ) don't persist"
      },
      {
        "title": "Exit Handling",
        "body": "set -e exits on error—but not in if, ||, && conditions\nset -u errors on undefined vars—catches typos\nset -o pipefail—pipeline fails if any command fails, not just last\ntrap cleanup EXIT—runs on any exit, even errors"
      },
      {
        "title": "Arrays",
        "body": "Declare: arr=(one two three)—or arr=() then arr+=(item)\nLength: ${#arr[@]}—not ${#arr}\nAll elements: \"${arr[@]}\"—always quote\nIndices: ${!arr[@]}—useful for sparse arrays"
      },
      {
        "title": "Parameter Expansion",
        "body": "Default value: ${var:-default}—use default if unset/empty\nAssign default: ${var:=default}—also assigns to var\nError if unset: ${var:?error message}—exits with message\nSubstring: ${var:0:5}—first 5 chars\nRemove prefix: ${var#pattern}—## for greedy"
      },
      {
        "title": "Arithmetic",
        "body": "$(( )) for math—result=$((a + b))\n(( )) for conditions—if (( count > 5 )); then\nNo $ needed inside $(( ))—$((count + 1)) not $(($count + 1))"
      },
      {
        "title": "Common Mistakes",
        "body": "[ $var = \"value\" ] fails if var empty—use [ \"$var\" = \"value\" ] or [[ ]]\nif [ -f $file ] with spaces—always quote: if [[ -f \"$file\" ]]\nlocal in functions—without it, variables are global\nread without -r—backslashes interpreted as escapes\necho portability—use printf for reliable formatting"
      }
    ],
    "body": "Quick Reference\nTopic\tFile\nArrays and loops\tarrays.md\nParameter expansion\texpansion.md\nError handling patterns\terrors.md\nTesting and conditionals\ttesting.md\nQuoting Traps\nAlways quote variables—\"$var\" not $var, spaces break unquoted\n\"${arr[@]}\" preserves elements—${arr[*]} joins into single string\nSingle quotes are literal—'$var' doesn't expand\nQuote command substitution—\"$(command)\" not $(command)\nWord Splitting and Globbing\nUnquoted $var splits on whitespace—file=\"my file.txt\"; cat $file fails\nUnquoted * expands to files—quote or escape if literal: \"*\" or \\*\nset -f disables globbing—or quote everything properly\nTest Brackets\n[[ ]] preferred over [ ]—no word splitting, supports &&, ||, regex\n[[ $var == pattern* ]]—glob patterns without quotes on right side\n[[ $var =~ regex ]]—regex match, don't quote the regex\n-z is empty, -n is non-empty—[[ -z \"$var\" ]] tests if empty\nSubshell Traps\nPipes create subshells—cat file | while read; do ((count++)); done—count lost\nUse while read < file or process substitution—while read; do ...; done < <(command)\n( ) is subshell, { } is same shell—variables in ( ) don't persist\nExit Handling\nset -e exits on error—but not in if, ||, && conditions\nset -u errors on undefined vars—catches typos\nset -o pipefail—pipeline fails if any command fails, not just last\ntrap cleanup EXIT—runs on any exit, even errors\nArrays\nDeclare: arr=(one two three)—or arr=() then arr+=(item)\nLength: ${#arr[@]}—not ${#arr}\nAll elements: \"${arr[@]}\"—always quote\nIndices: ${!arr[@]}—useful for sparse arrays\nParameter Expansion\nDefault value: ${var:-default}—use default if unset/empty\nAssign default: ${var:=default}—also assigns to var\nError if unset: ${var:?error message}—exits with message\nSubstring: ${var:0:5}—first 5 chars\nRemove prefix: ${var#pattern}—## for greedy\nArithmetic\n$(( )) for math—result=$((a + b))\n(( )) for conditions—if (( count > 5 )); then\nNo $ needed inside $(( ))—$((count + 1)) not $(($count + 1))\nCommon Mistakes\n[ $var = \"value\" ] fails if var empty—use [ \"$var\" = \"value\" ] or [[ ]]\nif [ -f $file ] with spaces—always quote: if [[ -f \"$file\" ]]\nlocal in functions—without it, variables are global\nread without -r—backslashes interpreted as escapes\necho portability—use printf for reliable formatting"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ivangdavila/bash",
    "publisherUrl": "https://clawhub.ai/ivangdavila/bash",
    "owner": "ivangdavila",
    "version": "1.0.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/bash",
    "downloadUrl": "https://openagent3.xyz/downloads/bash",
    "agentUrl": "https://openagent3.xyz/skills/bash/agent",
    "manifestUrl": "https://openagent3.xyz/skills/bash/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/bash/agent.md"
  }
}