claude/skills/bitwarden/SKILL.md
Access secrets and credentials from Bitwarden vault. Search items, get passwords, API keys, SSH keys, and secure notes.
npx skillsauth add tbroadley/dotfiles bitwardenInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill provides access to the Bitwarden vault via the bw CLI.
Install the CLI:
brew install bitwarden-cli
Login and unlock:
bw login # One-time login with email + master password
bw unlock # Returns a BW_SESSION token
Session token must be set as environment variable:
export BW_SESSION="..."
This is configured in ~/.zshrc.local.
Use this skill when the user:
All commands require the session token. Use --session "$(printenv BW_SESSION)" or rely on the exported env var.
bw list items --search "search term" --session "$(printenv BW_SESSION)" | \
python3 -c "import sys,json; items=json.load(sys.stdin); [print(f'{i[\"name\"]} (id={i[\"id\"]})') for i in items]"
bw get item "ITEM_ID" --session "$(printenv BW_SESSION)" | \
python3 -c "
import sys, json
item = json.load(sys.stdin)
print('Name:', item['name'])
if 'login' in item:
print('Username:', item['login'].get('username', 'N/A'))
print('Password:', item['login'].get('password', 'N/A'))
if 'fields' in item:
for f in item['fields']:
print(f'Field {f[\"name\"]}:', f.get('value', 'N/A'))
if 'notes' in item and item['notes']:
print('Notes:', item['notes'])
"
bw get password "ITEM_ID" --session "$(printenv BW_SESSION)"
bw get username "ITEM_ID" --session "$(printenv BW_SESSION)"
bw get item "ITEM_ID" --session "$(printenv BW_SESSION)" | \
python3 -c "import sys,json; item=json.load(sys.stdin); print(next(f['value'] for f in item.get('fields',[]) if f['name']=='FIELD_NAME'))"
bw get notes "ITEM_ID" --session "$(printenv BW_SESSION)"
bw list items --folderid "FOLDER_ID" --session "$(printenv BW_SESSION)" | \
python3 -c "import sys,json; [print(f'{i[\"name\"]} (id={i[\"id\"]})') for i in json.load(sys.stdin)]"
bw list folders --session "$(printenv BW_SESSION)" | \
python3 -c "import sys,json; [print(f'{f[\"name\"]} (id={f[\"id\"]})') for f in json.load(sys.stdin)]"
bw get item "ITEM_ID" --session "$(printenv BW_SESSION)" | \
python3 -c "import sys,json; item=json.load(sys.stdin); [print(f'{a[\"fileName\"]} (id={a[\"id\"]})') for a in item.get('attachments',[])]"
bw get attachment "ATTACHMENT_ID" --itemid "ITEM_ID" --output /tmp/attachment --session "$(printenv BW_SESSION)"
Bitwarden items have a type field:
1 - Login (username/password)2 - Secure Note3 - Card4 - Identity# 1. Search for the item
bw list items --search "spacelift" --session "$(printenv BW_SESSION)" | \
python3 -c "import sys,json; [print(f'{i[\"name\"]} (id={i[\"id\"]})') for i in json.load(sys.stdin)]"
# 2. Get the full item by ID
bw get item "ITEM_UUID" --session "$(printenv BW_SESSION)" | python3 -c "
import sys, json
item = json.load(sys.stdin)
print('Name:', item['name'])
if 'login' in item:
print('Username:', item['login'].get('username', 'N/A'))
print('Password:', item['login'].get('password', 'N/A'))
if 'fields' in item:
for f in item['fields']:
print(f'Field {f[\"name\"]}:', f.get('value', 'N/A'))
if 'notes' in item and item['notes']:
print('Notes:', item['notes'])
"
export MY_SECRET="$(bw get password 'ITEM_ID' --session "$(printenv BW_SESSION)")"
"You are not logged in", the session has expiredbw unlock (user must run interactively)bw status --session "$(printenv BW_SESSION)" checks vault statusbw sync --session "$(printenv BW_SESSION)" fetches latest vault data$(printenv BW_SESSION) to ensure the token expands correctlybw CLI outputs JSON by default, use python3 or jq to parsetools
Add words to the Wispr Flow dictionary. Use when the user wants to add a word, phrase, or snippet to Wispr Flow for voice dictation.
documentation
Upload images to a GitHub PR description or comment using a shared gist as image hosting. Use when the user wants to add plots, screenshots, or other images to a PR.
testing
Manage tasks, projects, and productivity in Todoist. View tasks, add new items, check completed work, and organize projects.
data-ai
Use when working with stacked diffs (branch B based on branch A, which is based on main).