{
  "schemaVersion": "1.0",
  "item": {
    "slug": "pass",
    "name": "pass - stores, retrieves, generates, and synchronizes passwords securely",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/bastos/pass",
    "canonicalUrl": "https://clawhub.ai/bastos/pass",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/pass",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=pass",
    "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-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/pass"
    },
    "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/pass",
    "agentPageUrl": "https://openagent3.xyz/skills/pass/agent",
    "manifestUrl": "https://openagent3.xyz/skills/pass/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/pass/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": "pass — The Standard Unix Password Manager",
        "body": "Each password is a GPG-encrypted file under ~/.password-store/. The store is\nplain files in a folder hierarchy; no proprietary formats, no daemon."
      },
      {
        "title": "Linux",
        "body": "DistroCommandArch / Manjaropacman -S passDebian / Ubuntuapt install passFedora / RHELdnf install passopenSUSEzypper in password-store"
      },
      {
        "title": "macOS",
        "body": "brew install pass"
      },
      {
        "title": "2. GPG Key Setup",
        "body": "pass requires a GPG key. Skip this block if you already have one.\n\n# Generate a new key (use RSA 4096 or ed25519)\ngpg --full-generate-key\n\n# List your keys — note the key ID or email\ngpg --list-secret-keys --keyid-format LONG\n\nThe key ID looks like 3AA5C34371567BD2 or you can use the email you registered."
      },
      {
        "title": "3. Initialise the Store",
        "body": "pass init \"your@email.com\"\n# or using the key ID:\npass init 3AA5C34371567BD2\n\nThis creates ~/.password-store/ and a .gpg-id file.\n\nMultiple GPG IDs are supported (for team use):\n\npass init alice@example.com bob@example.com\n\nUse -p to scope a different GPG key to a subfolder (useful for shared stores):\n\npass init -p work/ work@company.com\n\nRunning pass init on an existing store re-encrypts all entries with the new key(s)."
      },
      {
        "title": "4. Data Organisation Convention",
        "body": "Store each entry as a multiline file with this structure:\n\n<password>\nurl: https://example.com\nusername: you@example.com\nnotes: anything extra\n\nFirst line is always the password. pass -c and clipboard tools only\ncopy line 1.\nUse lowercase keys (url:, username:, notes:) for compatibility with\nbrowser extensions and pass-import.\nOrganise with folders that mirror context, not the URL structure:\n\n~/.password-store/\n├── email/\n│   ├── gmail\n│   └── fastmail\n├── dev/\n│   ├── github\n│   └── npm\n└── finance/\n    ├── bank-hsbc\n    └── revolut"
      },
      {
        "title": "List the store",
        "body": "pass                       # full tree\npass email/                # subtree\npass ls email/             # explicit alias"
      },
      {
        "title": "Find entries by name",
        "body": "pass find github           # lists all entries whose path matches \"github\""
      },
      {
        "title": "Read a password",
        "body": "pass email/gmail           # print all lines to stdout\npass -c email/gmail        # copy line 1 to clipboard (clears after 45s)\npass -c2 email/gmail       # copy line 2 (e.g. the username) to clipboard"
      },
      {
        "title": "Search inside decrypted content",
        "body": "pass grep username         # grep across all decrypted entries\npass grep -i \"amazon\"      # case-insensitive; accepts any grep option"
      },
      {
        "title": "Insert an existing password",
        "body": "pass insert email/gmail              # prompted twice for confirmation\npass insert -e email/gmail           # echo password as you type (single prompt)\npass insert -m email/gmail           # multiline (recommended, ends with Ctrl-D)\npass insert -f email/gmail           # overwrite without prompt"
      },
      {
        "title": "Generate a new password",
        "body": "pass generate email/gmail            # 25-char password (default length)\npass generate email/gmail 20        # custom length\npass generate -n email/gmail 20     # no symbols\npass generate -c email/gmail 20     # copy to clipboard instead of printing\npass generate -i email/gmail 20     # replace only line 1, keep rest of file\npass generate -f email/gmail 20     # overwrite without prompt"
      },
      {
        "title": "Edit an entry",
        "body": "pass edit email/gmail      # opens $EDITOR; creates entry if it doesn't exist"
      },
      {
        "title": "Remove an entry",
        "body": "pass rm email/gmail\npass rm -r email/          # remove a folder recursively\npass rm -f email/gmail     # no confirmation prompt"
      },
      {
        "title": "Move / copy",
        "body": "pass mv email/gmail email/gmail-old\npass mv -f email/gmail email/gmail-old   # overwrite without prompt\npass cp email/gmail backup/gmail\npass cp -f email/gmail backup/gmail      # overwrite without prompt"
      },
      {
        "title": "6. Git Sync",
        "body": "Initialise git inside the store:\n\npass git init\npass git remote add origin git@github.com:you/pass-store.git\n\nEvery pass insert, generate, edit, rm automatically creates a git\ncommit. Push and pull manually:\n\npass git push\npass git pull\n\nTo clone the store on another machine:\n\n# Import your GPG key first:\ngpg --import private-key.asc\ngpg --edit-key your@email.com  # then: trust → 5 → quit\n\n# Clone the store:\ngit clone git@github.com:you/pass-store.git ~/.password-store"
      },
      {
        "title": "pass-otp (TOTP / 2FA codes)",
        "body": "# Install\npacman -S pass-otp          # Arch\nbrew install pass-otp       # macOS\n\n# Add a TOTP secret (use the otpauth:// URI from your provider)\npass otp insert totp/github\n# paste: otpauth://totp/GitHub:you@example.com?secret=BASE32SECRET&issuer=GitHub\n\n# Generate a code\npass otp totp/github\n\n# Copy to clipboard\npass otp -c totp/github"
      },
      {
        "title": "pass-import (migrate from another manager)",
        "body": "pip install pass-import    # or: pacman -S pass-import\n\n# Import from Bitwarden (JSON export)\npass import bitwarden bitwarden-export.json\n\n# Import from 1Password (1PUX export)\npass import 1password export.1pux\n\n# List all supported formats\npass import --list"
      },
      {
        "title": "pass-update",
        "body": "# Install\ngit clone https://github.com/roddhjav/pass-update ~/.password-store/.extensions/update.bash\n\n# Update a password interactively\npass update email/gmail"
      },
      {
        "title": "8. Shell Completion",
        "body": "# bash — add to ~/.bashrc\nsource /usr/share/bash-completion/completions/pass\n\n# zsh — add to ~/.zshrc\nautoload -U compinit && compinit\n\n# fish — works out of the box after install"
      },
      {
        "title": "9. Useful Environment Variables",
        "body": "VariablePurposePASSWORD_STORE_DIROverride default ~/.password-storePASSWORD_STORE_KEYDefault GPG key IDPASSWORD_STORE_GITOverride git directoryPASSWORD_STORE_CLIP_TIMESeconds before clipboard clears (default 45)PASSWORD_STORE_ENABLE_EXTENSIONSSet to true to enable user extensionsEDITOREditor used by pass edit"
      },
      {
        "title": "10. Troubleshooting",
        "body": "gpg: decryption failed: No secret key\nYour GPG key is not available. Import it with gpg --import and set trust.\n\ngpg-agent keeps asking for passphrase\nAdd to ~/.gnupg/gpg-agent.conf:\n\ndefault-cache-ttl 3600\nmax-cache-ttl 14400\n\nThen restart: gpgconf --kill gpg-agent\n\nClipboard does not clear on Wayland\nInstall wl-clipboard and set PASSWORD_STORE_CLIP_TOOL=wl-copy or pass -c\nwith wl-clipboard in PATH.\n\npass git shows dirty tree after clone\nRun pass git status; if only .gpg-id is untracked, run pass git add .\nand pass git commit -m \"add gpg-id\"."
      }
    ],
    "body": "pass — The Standard Unix Password Manager\n\nEach password is a GPG-encrypted file under ~/.password-store/. The store is plain files in a folder hierarchy; no proprietary formats, no daemon.\n\n1. Installation\nLinux\nDistro\tCommand\nArch / Manjaro\tpacman -S pass\nDebian / Ubuntu\tapt install pass\nFedora / RHEL\tdnf install pass\nopenSUSE\tzypper in password-store\nmacOS\nbrew install pass\n\n2. GPG Key Setup\n\npass requires a GPG key. Skip this block if you already have one.\n\n# Generate a new key (use RSA 4096 or ed25519)\ngpg --full-generate-key\n\n# List your keys — note the key ID or email\ngpg --list-secret-keys --keyid-format LONG\n\n\nThe key ID looks like 3AA5C34371567BD2 or you can use the email you registered.\n\n3. Initialise the Store\npass init \"your@email.com\"\n# or using the key ID:\npass init 3AA5C34371567BD2\n\n\nThis creates ~/.password-store/ and a .gpg-id file.\n\nMultiple GPG IDs are supported (for team use):\n\npass init alice@example.com bob@example.com\n\n\nUse -p to scope a different GPG key to a subfolder (useful for shared stores):\n\npass init -p work/ work@company.com\n\n\nRunning pass init on an existing store re-encrypts all entries with the new key(s).\n\n4. Data Organisation Convention\n\nStore each entry as a multiline file with this structure:\n\n<password>\nurl: https://example.com\nusername: you@example.com\nnotes: anything extra\n\nFirst line is always the password. pass -c and clipboard tools only copy line 1.\nUse lowercase keys (url:, username:, notes:) for compatibility with browser extensions and pass-import.\nOrganise with folders that mirror context, not the URL structure:\n~/.password-store/\n├── email/\n│   ├── gmail\n│   └── fastmail\n├── dev/\n│   ├── github\n│   └── npm\n└── finance/\n    ├── bank-hsbc\n    └── revolut\n\n5. Daily Usage\nList the store\npass                       # full tree\npass email/                # subtree\npass ls email/             # explicit alias\n\nFind entries by name\npass find github           # lists all entries whose path matches \"github\"\n\nRead a password\npass email/gmail           # print all lines to stdout\npass -c email/gmail        # copy line 1 to clipboard (clears after 45s)\npass -c2 email/gmail       # copy line 2 (e.g. the username) to clipboard\n\nSearch inside decrypted content\npass grep username         # grep across all decrypted entries\npass grep -i \"amazon\"      # case-insensitive; accepts any grep option\n\nInsert an existing password\npass insert email/gmail              # prompted twice for confirmation\npass insert -e email/gmail           # echo password as you type (single prompt)\npass insert -m email/gmail           # multiline (recommended, ends with Ctrl-D)\npass insert -f email/gmail           # overwrite without prompt\n\nGenerate a new password\npass generate email/gmail            # 25-char password (default length)\npass generate email/gmail 20        # custom length\npass generate -n email/gmail 20     # no symbols\npass generate -c email/gmail 20     # copy to clipboard instead of printing\npass generate -i email/gmail 20     # replace only line 1, keep rest of file\npass generate -f email/gmail 20     # overwrite without prompt\n\nEdit an entry\npass edit email/gmail      # opens $EDITOR; creates entry if it doesn't exist\n\nRemove an entry\npass rm email/gmail\npass rm -r email/          # remove a folder recursively\npass rm -f email/gmail     # no confirmation prompt\n\nMove / copy\npass mv email/gmail email/gmail-old\npass mv -f email/gmail email/gmail-old   # overwrite without prompt\npass cp email/gmail backup/gmail\npass cp -f email/gmail backup/gmail      # overwrite without prompt\n\n6. Git Sync\n\nInitialise git inside the store:\n\npass git init\npass git remote add origin git@github.com:you/pass-store.git\n\n\nEvery pass insert, generate, edit, rm automatically creates a git commit. Push and pull manually:\n\npass git push\npass git pull\n\n\nTo clone the store on another machine:\n\n# Import your GPG key first:\ngpg --import private-key.asc\ngpg --edit-key your@email.com  # then: trust → 5 → quit\n\n# Clone the store:\ngit clone git@github.com:you/pass-store.git ~/.password-store\n\n7. Extensions\npass-otp (TOTP / 2FA codes)\n# Install\npacman -S pass-otp          # Arch\nbrew install pass-otp       # macOS\n\n# Add a TOTP secret (use the otpauth:// URI from your provider)\npass otp insert totp/github\n# paste: otpauth://totp/GitHub:you@example.com?secret=BASE32SECRET&issuer=GitHub\n\n# Generate a code\npass otp totp/github\n\n# Copy to clipboard\npass otp -c totp/github\n\npass-import (migrate from another manager)\npip install pass-import    # or: pacman -S pass-import\n\n# Import from Bitwarden (JSON export)\npass import bitwarden bitwarden-export.json\n\n# Import from 1Password (1PUX export)\npass import 1password export.1pux\n\n# List all supported formats\npass import --list\n\npass-update\n# Install\ngit clone https://github.com/roddhjav/pass-update ~/.password-store/.extensions/update.bash\n\n# Update a password interactively\npass update email/gmail\n\n8. Shell Completion\n# bash — add to ~/.bashrc\nsource /usr/share/bash-completion/completions/pass\n\n# zsh — add to ~/.zshrc\nautoload -U compinit && compinit\n\n# fish — works out of the box after install\n\n9. Useful Environment Variables\nVariable\tPurpose\nPASSWORD_STORE_DIR\tOverride default ~/.password-store\nPASSWORD_STORE_KEY\tDefault GPG key ID\nPASSWORD_STORE_GIT\tOverride git directory\nPASSWORD_STORE_CLIP_TIME\tSeconds before clipboard clears (default 45)\nPASSWORD_STORE_ENABLE_EXTENSIONS\tSet to true to enable user extensions\nEDITOR\tEditor used by pass edit\n10. Troubleshooting\n\ngpg: decryption failed: No secret key Your GPG key is not available. Import it with gpg --import and set trust.\n\ngpg-agent keeps asking for passphrase Add to ~/.gnupg/gpg-agent.conf:\n\ndefault-cache-ttl 3600\nmax-cache-ttl 14400\n\n\nThen restart: gpgconf --kill gpg-agent\n\nClipboard does not clear on Wayland Install wl-clipboard and set PASSWORD_STORE_CLIP_TOOL=wl-copy or pass -c with wl-clipboard in PATH.\n\npass git shows dirty tree after clone Run pass git status; if only .gpg-id is untracked, run pass git add . and pass git commit -m \"add gpg-id\"."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/bastos/pass",
    "publisherUrl": "https://clawhub.ai/bastos/pass",
    "owner": "bastos",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/pass",
    "downloadUrl": "https://openagent3.xyz/downloads/pass",
    "agentUrl": "https://openagent3.xyz/skills/pass/agent",
    "manifestUrl": "https://openagent3.xyz/skills/pass/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/pass/agent.md"
  }
}