{
  "schemaVersion": "1.0",
  "item": {
    "slug": "openclaw-bitwarden",
    "name": "Bitwarden",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/JimiHFord/openclaw-bitwarden",
    "canonicalUrl": "https://clawhub.ai/JimiHFord/openclaw-bitwarden",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/openclaw-bitwarden",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=openclaw-bitwarden",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.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",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.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/openclaw-bitwarden"
    },
    "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/openclaw-bitwarden",
    "agentPageUrl": "https://openagent3.xyz/skills/openclaw-bitwarden/agent",
    "manifestUrl": "https://openagent3.xyz/skills/openclaw-bitwarden/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/openclaw-bitwarden/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": "Bitwarden CLI",
        "body": "Manage passwords and secrets via the Bitwarden CLI."
      },
      {
        "title": "References",
        "body": "references/get-started.md (install + login + unlock flow)\nreferences/cli-examples.md (real bw examples)"
      },
      {
        "title": "Workflow",
        "body": "Check CLI present: bw --version.\nCheck login status: bw status (returns JSON with status field).\nIf not logged in: bw login (stores API key, prompts for master password).\nREQUIRED: create a fresh tmux session for all bw commands.\nUnlock vault inside tmux: bw unlock (outputs session key).\nExport session key: export BW_SESSION=\"<key>\".\nVerify access: bw sync then bw list items --search test."
      },
      {
        "title": "REQUIRED tmux session",
        "body": "The Bitwarden CLI requires the BW_SESSION environment variable for authenticated commands. To persist the session across commands, always run bw inside a dedicated tmux session.\n\nExample (see tmux skill for socket conventions):\n\nSOCKET_DIR=\"${CLAWDBOT_TMUX_SOCKET_DIR:-${TMPDIR:-/tmp}/openclaw-tmux-sockets}\"\nmkdir -p \"$SOCKET_DIR\"\nSOCKET=\"$SOCKET_DIR/openclaw-bw.sock\"\nSESSION=\"bw-auth-$(date +%Y%m%d-%H%M%S)\"\n\ntmux -S \"$SOCKET\" new -d -s \"$SESSION\" -n shell\n\n# Unlock and capture session key\ntmux -S \"$SOCKET\" send-keys -t \"$SESSION\":0.0 -- 'export BW_SESSION=$(bw unlock --raw)' Enter\ntmux -S \"$SOCKET\" send-keys -t \"$SESSION\":0.0 -- 'bw sync' Enter\ntmux -S \"$SOCKET\" send-keys -t \"$SESSION\":0.0 -- 'bw list items --search github' Enter\n\n# Capture output\ntmux -S \"$SOCKET\" capture-pane -p -J -t \"$SESSION\":0.0 -S -200\n\n# Cleanup when done\ntmux -S \"$SOCKET\" kill-session -t \"$SESSION\""
      },
      {
        "title": "Common Commands",
        "body": "CommandDescriptionbw statusCheck login/lock status (JSON)bw loginLogin with email/password or API keybw unlockUnlock vault, returns session keybw lockLock vaultbw syncSync vault with serverbw list itemsList all itemsbw list items --search <query>Search itemsbw get item <id-or-name>Get specific item (JSON)bw get password <id-or-name>Get just the passwordbw get username <id-or-name>Get just the usernamebw get totp <id-or-name>Get TOTP codebw generate -ulns --length 32Generate password"
      },
      {
        "title": "Guardrails",
        "body": "Never paste secrets into logs, chat, or code.\nAlways use tmux to maintain BW_SESSION across commands.\nPrefer bw get password over parsing full item JSON when only password needed.\nIf command returns \"Vault is locked\", re-run bw unlock inside tmux.\nDo not run authenticated bw commands outside tmux; the session won't persist.\nLock vault when done: bw lock."
      },
      {
        "title": "Testing with Vaultwarden",
        "body": "This skill includes a Docker Compose setup for local testing with Vaultwarden (self-hosted Bitwarden-compatible server)."
      },
      {
        "title": "Quick Start",
        "body": "# Install mkcert and generate local certs (one-time)\nbrew install mkcert\nmkcert -install\ncd /path/to/openclaw-bitwarden\nmkdir -p certs && cd certs\nmkcert localhost 127.0.0.1 ::1\ncd ..\n\n# Start Vaultwarden + Caddy\ndocker compose up -d\n\n# Configure bw CLI to use local server\nbw config server https://localhost:8443\n\n# Create a test account via web UI at https://localhost:8443\n# Or run the setup script:\n./scripts/setup-test-account.sh\n\n# Test the skill workflow\n./scripts/test-skill-workflow.sh"
      },
      {
        "title": "Test Credentials",
        "body": "Server URL: https://localhost:8443\nAdmin Panel: https://localhost:8443/admin (token: test-admin-token-12345)\nSuggested test account: test@example.com / TestPassword123!"
      },
      {
        "title": "Node.js CA Trust",
        "body": "The bw CLI requires the mkcert CA to be trusted. Export before running bw commands:\n\nexport NODE_EXTRA_CA_CERTS=\"$(mkcert -CAROOT)/rootCA.pem\"\n\nOr add to your shell profile for persistence."
      },
      {
        "title": "Cleanup",
        "body": "docker compose down -v  # Remove container and data"
      }
    ],
    "body": "Bitwarden CLI\n\nManage passwords and secrets via the Bitwarden CLI.\n\nReferences\nreferences/get-started.md (install + login + unlock flow)\nreferences/cli-examples.md (real bw examples)\nWorkflow\nCheck CLI present: bw --version.\nCheck login status: bw status (returns JSON with status field).\nIf not logged in: bw login (stores API key, prompts for master password).\nREQUIRED: create a fresh tmux session for all bw commands.\nUnlock vault inside tmux: bw unlock (outputs session key).\nExport session key: export BW_SESSION=\"<key>\".\nVerify access: bw sync then bw list items --search test.\nREQUIRED tmux session\n\nThe Bitwarden CLI requires the BW_SESSION environment variable for authenticated commands. To persist the session across commands, always run bw inside a dedicated tmux session.\n\nExample (see tmux skill for socket conventions):\n\nSOCKET_DIR=\"${CLAWDBOT_TMUX_SOCKET_DIR:-${TMPDIR:-/tmp}/openclaw-tmux-sockets}\"\nmkdir -p \"$SOCKET_DIR\"\nSOCKET=\"$SOCKET_DIR/openclaw-bw.sock\"\nSESSION=\"bw-auth-$(date +%Y%m%d-%H%M%S)\"\n\ntmux -S \"$SOCKET\" new -d -s \"$SESSION\" -n shell\n\n# Unlock and capture session key\ntmux -S \"$SOCKET\" send-keys -t \"$SESSION\":0.0 -- 'export BW_SESSION=$(bw unlock --raw)' Enter\ntmux -S \"$SOCKET\" send-keys -t \"$SESSION\":0.0 -- 'bw sync' Enter\ntmux -S \"$SOCKET\" send-keys -t \"$SESSION\":0.0 -- 'bw list items --search github' Enter\n\n# Capture output\ntmux -S \"$SOCKET\" capture-pane -p -J -t \"$SESSION\":0.0 -S -200\n\n# Cleanup when done\ntmux -S \"$SOCKET\" kill-session -t \"$SESSION\"\n\nCommon Commands\nCommand\tDescription\nbw status\tCheck login/lock status (JSON)\nbw login\tLogin with email/password or API key\nbw unlock\tUnlock vault, returns session key\nbw lock\tLock vault\nbw sync\tSync vault with server\nbw list items\tList all items\nbw list items --search <query>\tSearch items\nbw get item <id-or-name>\tGet specific item (JSON)\nbw get password <id-or-name>\tGet just the password\nbw get username <id-or-name>\tGet just the username\nbw get totp <id-or-name>\tGet TOTP code\nbw generate -ulns --length 32\tGenerate password\nGuardrails\nNever paste secrets into logs, chat, or code.\nAlways use tmux to maintain BW_SESSION across commands.\nPrefer bw get password over parsing full item JSON when only password needed.\nIf command returns \"Vault is locked\", re-run bw unlock inside tmux.\nDo not run authenticated bw commands outside tmux; the session won't persist.\nLock vault when done: bw lock.\nTesting with Vaultwarden\n\nThis skill includes a Docker Compose setup for local testing with Vaultwarden (self-hosted Bitwarden-compatible server).\n\nQuick Start\n# Install mkcert and generate local certs (one-time)\nbrew install mkcert\nmkcert -install\ncd /path/to/openclaw-bitwarden\nmkdir -p certs && cd certs\nmkcert localhost 127.0.0.1 ::1\ncd ..\n\n# Start Vaultwarden + Caddy\ndocker compose up -d\n\n# Configure bw CLI to use local server\nbw config server https://localhost:8443\n\n# Create a test account via web UI at https://localhost:8443\n# Or run the setup script:\n./scripts/setup-test-account.sh\n\n# Test the skill workflow\n./scripts/test-skill-workflow.sh\n\nTest Credentials\nServer URL: https://localhost:8443\nAdmin Panel: https://localhost:8443/admin (token: test-admin-token-12345)\nSuggested test account: test@example.com / TestPassword123!\nNode.js CA Trust\n\nThe bw CLI requires the mkcert CA to be trusted. Export before running bw commands:\n\nexport NODE_EXTRA_CA_CERTS=\"$(mkcert -CAROOT)/rootCA.pem\"\n\n\nOr add to your shell profile for persistence.\n\nCleanup\ndocker compose down -v  # Remove container and data"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/JimiHFord/openclaw-bitwarden",
    "publisherUrl": "https://clawhub.ai/JimiHFord/openclaw-bitwarden",
    "owner": "JimiHFord",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/openclaw-bitwarden",
    "downloadUrl": "https://openagent3.xyz/downloads/openclaw-bitwarden",
    "agentUrl": "https://openagent3.xyz/skills/openclaw-bitwarden/agent",
    "manifestUrl": "https://openagent3.xyz/skills/openclaw-bitwarden/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/openclaw-bitwarden/agent.md"
  }
}