- parallel-fix-issues: detecta build tag del proyecto (auto o via BUILD_TAG env/arg), usa $(git rev-parse --show-toplevel) para rutas en vez de /home/ubuntu/agents_and_robots - verify-worktree.sh: acepta BUILD_TAG como env o segundo argumento, auto-detecta con //go:build, ejecuta sin -tags si no hay tag configurado - create-tui: DEVFACTORY_PATH, DEVFACTORY_MODULE y GO_NAMESPACE configurables via env - init-jupyter: resuelve SKILL_DIR dinamicamente siguiendo el symlink de ~/.claude - pass-usage: elimina GPG-ID hardcodeado, instruye leer de ~/.password-store/.gpg-id - settings.json: refresh de formato + effortLevel Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5.2 KiB
name: pass-usage description: Gestiona contraseñas con pass (password-store) y GPG. Inserta, lista, busca, genera y sincroniza secretos con Gitea. argument-hint: [accion] [nombre-secreto] disable-model-invocation: true user-invocable: true allowed-tools: Bash, Read, Write
pass-usage
Gestiona contraseñas usando pass (password-store) con cifrado GPG, sincronizando con Gitea via pass git push.
Sintaxis
/pass-usage # Listar todos los secretos
/pass-usage add servicio/usuario # Agregar nuevo secreto
/pass-usage show servicio/usuario # Ver un secreto
/pass-usage gen servicio/usuario 24 # Generar contraseña aleatoria (24 chars)
/pass-usage find texto # Buscar secretos por nombre
/pass-usage sync # Sincronizar con Gitea (push + pull)
/pass-usage edit servicio/usuario # Editar secreto existente
/pass-usage rm servicio/usuario # Eliminar secreto
/pass-usage help # Mostrar esta ayuda
Precondiciones
Verificar antes de cualquier operación:
# 1. Verificar pass instalado
if ! command -v pass &>/dev/null; then
echo "pass no está instalado."
echo "Ejecuta: sudo apt install pass # Debian/Ubuntu"
echo " o: sudo pacman -S pass # Arch"
echo " o: sudo dnf install pass # Fedora"
exit 1
fi
# 2. Verificar GPG disponible
if ! command -v gpg &>/dev/null; then
echo "gpg no está instalado."
echo "Ejecuta: sudo apt install gnupg"
exit 1
fi
# 3. Verificar store inicializado
if [ ! -d ~/.password-store ]; then
echo "Password store no inicializado."
echo "Primero necesitas una clave GPG. Listar existentes:"
echo " gpg --list-keys"
echo ""
echo "Si no tienes clave GPG, crear una:"
echo " gpg --full-generate-key"
echo ""
echo "Luego inicializar pass con el ID de tu clave:"
echo " pass init <GPG-ID>"
echo ""
echo "Para habilitar sincronización con Gitea:"
echo " pass git init"
echo " pass git remote add origin <URL-REPO-GITEA>"
exit 1
fi
Flujo
Parsear $ARGUMENTS para determinar la acción. Si no hay argumentos, listar secretos.
Determinar acción
| $0 (acción) | Operación |
|---|---|
| (vacío) | Listar todos |
add |
Insertar nuevo secreto |
show |
Mostrar secreto |
gen |
Generar contraseña aleatoria |
find |
Buscar por nombre |
sync |
Push + Pull con Gitea |
edit |
Editar existente |
rm |
Eliminar secreto |
help |
Mostrar ayuda |
Acción: Listar (sin argumentos)
pass
Mostrar el árbol de secretos al usuario.
Acción: add
Nombre del secreto: $1 (requerido).
Preguntar al usuario qué valor quiere guardar. Luego:
# Insertar contraseña (interactivo - el usuario debe ejecutarlo)
echo "Ejecuta en tu terminal:"
echo " pass insert $1"
IMPORTANTE: pass insert es interactivo (pide input por stdin). Indicar al usuario que lo ejecute con ! o darle la opción de insertar de forma no-interactiva:
# Opción no-interactiva (si el usuario proporciona el valor)
echo "VALOR_SECRETO" | pass insert -e $1
Después de insertar, ofrecer sincronizar:
pass git push
Acción: show
pass show $1
Mostrar el contenido descifrado al usuario.
Acción: gen
Nombre: $1, longitud: $2 (default 20).
pass generate $1 ${2:-20}
Esto genera y guarda una contraseña aleatoria. Ofrecer sincronizar después.
Acción: edit
# Interactivo - el usuario debe ejecutarlo
echo "Ejecuta: ! pass edit $1"
Acción: find
pass find $1
Acción: rm
Confirmar con el usuario antes de eliminar.
pass rm $1
pass git push
Acción: sync
pass git pull --rebase && pass git push
Si falla el pull, mostrar el error y sugerir resolución.
Acción: help
Mostrar la tabla de sintaxis de este skill.
Post-operación
Después de cualquier operación que modifique el store (add, gen, edit, rm):
- Mostrar resultado de la operación
- Preguntar si quiere sincronizar con Gitea (
pass git push) - Si el repo de secretos en Gitea (
dataforge/pass-secrets) necesita actualización del README, usar el agente @gitea para actualizarlo
Integración con Gitea
El repo de secretos vive en dataforge/pass-secrets. Para operaciones que requieran actualizar documentación o estructura en remoto, delegar al agente @gitea.
Reglas
- NUNCA mostrar contraseñas en texto plano en el output sin que el usuario lo pida explícitamente (acción
show) - Para
pass insertypass edit, indicar al usuario que ejecute el comando con!ya que son interactivos - Siempre verificar precondiciones antes de operar
- Si
passogpgno están instalados, dar los comandos de instalación para la distro detectada (no ejecutar sudo directamente) - Ofrecer
pass git pushdespués de cada modificación - Para obtener el GPG-ID del usuario actual: leerlo de
~/.password-store/.gpg-id(ese archivo lo creapass init <gpg-id>y contiene el keygrip/ID en uso). Si no existe, listar claves congpg --list-secret-keys --keyid-format=longy pedir al usuario cuál usar