---
name: keepass_to_pass
kind: pipeline
lang: bash
domain: pipelines
version: "1.0.0"
purity: impure
signature: "keepass_to_pass [--prefix
] [--overwrite] [--dry-run]"
description: "Pipeline que exporta todas las entries del KeePassXC database a `pass`. Cada entry queda como multilinea (password en linea 1, metadata user/url/notes en lineas siguientes). Path en pass: /."
tags: [keepass, pass, migration, secret, credential, pipeline, launcher]
uses_functions:
- keepass_dump_bash_infra
- pass_set_bash_infra
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: []
params:
- name: prefix
desc: "prefijo en pass (default: keepass)"
- name: overwrite
desc: "flag para sobreescribir entradas existentes"
- name: dry_run
desc: "flag para no escribir, solo listar"
output: "log de operaciones a stdout (IMPORT/SKIP/DRY/FAIL por entry, summary final)"
tested: false
tests: []
test_file_path: ""
file_path: "bash/functions/pipelines/keepass_to_pass.sh"
---
## Ejemplo
```bash
# Setup primera vez
pass insert meta/keepassxc-master
export KEEPASS_DB="/mnt/d/Tr4Shhh_FOLDER/Sync/PssDtbs/PassDataBase.kdbx"
# Dry run
./fn run keepass_to_pass --dry-run
# Importar todo (skip si existe en pass)
./fn run keepass_to_pass
# Forzar sobreescritura
./fn run keepass_to_pass --overwrite
# Otro prefijo
./fn run keepass_to_pass --prefix import/keepass
```
## Notas
- Despues del import, todo lo que estaba en KeePassXC es accesible para Claude via `pass_get_bash_infra`.
- Espacios en paths se sustituyen por `_` (pass no permite espacios sin escapado).
- Entries sin password se omiten (counter `empty`).
- `~/.password-store` se sincroniza entre PCs via `/full-git-push` y `/full-git-pull` ya existentes.
- Para revertir un import: `pass rm -r keepass/`.