merge: quick/pass-usage-skill — skill para gestión de contraseñas con pass y GPG

This commit is contained in:
2026-03-27 02:35:46 +01:00
+190
View File
@@ -0,0 +1,190 @@
---
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
```bash
/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:
```bash
# 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)
```bash
pass
```
Mostrar el árbol de secretos al usuario.
### Acción: add
Nombre del secreto: `$1` (requerido).
Preguntar al usuario qué valor quiere guardar. Luego:
```bash
# 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:
```bash
# Opción no-interactiva (si el usuario proporciona el valor)
echo "VALOR_SECRETO" | pass insert -e $1
```
Después de insertar, ofrecer sincronizar:
```bash
pass git push
```
### Acción: show
```bash
pass show $1
```
Mostrar el contenido descifrado al usuario.
### Acción: gen
Nombre: `$1`, longitud: `$2` (default 20).
```bash
pass generate $1 ${2:-20}
```
Esto genera y guarda una contraseña aleatoria. Ofrecer sincronizar después.
### Acción: edit
```bash
# Interactivo - el usuario debe ejecutarlo
echo "Ejecuta: ! pass edit $1"
```
### Acción: find
```bash
pass find $1
```
### Acción: rm
**Confirmar con el usuario antes de eliminar.**
```bash
pass rm $1
pass git push
```
### Acción: sync
```bash
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):
1. Mostrar resultado de la operación
2. Preguntar si quiere sincronizar con Gitea (`pass git push`)
3. 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 insert` y `pass edit`, indicar al usuario que ejecute el comando con `!` ya que son interactivos
- Siempre verificar precondiciones antes de operar
- Si `pass` o `gpg` no están instalados, dar los comandos de instalación para la distro detectada (no ejecutar sudo directamente)
- Ofrecer `pass git push` después de cada modificación
- El GPG-ID actual es `91324463`