Skip to content
Back to skills

Client Profile Manager

ASecurity

Usar cuando se crean, actualizan o consultan perfiles de cliente en SaviaHub.

  • 50 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 27, 2026
ai-agentsgobashgit

Works with

  • cli

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 28, 2026

npx -y skills add gonzalezpazmonica/savia --skill client-profile-manager --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Client Profile Manager?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Client Profile Manager
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/gonzalezpazmonica-client-profile-manager/badge)](https://www.skillsdirectory.com/skills/gonzalezpazmonica-client-profile-manager)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
layer: peripheral
name: client-profile-manager
description: "Usar cuando se crean, actualizan o consultan perfiles de cliente en SaviaHub."
metadata:
  # --- metadata.savia.* (SE-333) ---
  savia.category: pm-operations
  savia.maturity: beta
  savia.context_cost: medium
  savia.dependencies: savia-hub-sync
  savia.priority: medium
  savia.summary: "Gestion CRUD de perfiles de cliente en SaviaHub. Crear, actualizar, listar y buscar clientes con datos de contacto, proyectos vinculados y notas. Datos en nivel N4 (proyecto)."
  savia.tags: "client, profile, crud, savia-hub"
---

# Skill: Client Profile Manager

> Regla: @docs/rules/domain/client-profile-config.md
> Hub: @docs/rules/domain/savia-hub-config.md

## Prerequisitos

SaviaHub debe existir. Verificar:
```bash
[ -d "$SAVIA_HUB_PATH/.git" ] || echo "ERROR: Run /savia-hub init first"
```
Variable `SAVIA_HUB_PATH` default: `$HOME/.savia-hub`

## Flujo: Crear cliente

1. Recibir nombre del cliente
2. Generar slug: minúsculas, sin acentos, kebab-case
3. Verificar unicidad: `[ ! -d "$SAVIA_HUB_PATH/clients/$SLUG" ]`
4. Crear directorio: `mkdir -p "$SAVIA_HUB_PATH/clients/$SLUG/projects"`
5. Crear `profile.md` con plantilla:
   ```yaml
   ---
   name: "{nombre}"
   slug: "{slug}"
   sector: ""
   since: "{YYYY-MM}"
   status: "active"
   sla_tier: "standard"
   primary_contact: ""
   last_updated: "{YYYY-MM-DD}"
   ---
   ## Descripción
   (Completar con datos del cliente)
   ## Dominio
   (Área de negocio, terminología, conceptos clave)
   ## Stack tecnológico
   (Lenguajes, frameworks, infraestructura)
   ## Metodología
   (Scrum/Kanban/Savia Flow, sprint duration)
   ```
6. Crear `contacts.md` con plantilla:
   ```markdown
   # Contactos — {nombre}
   | Nombre | Rol | Área | Email | Notas |
   |--------|-----|------|-------|-------|
   ```
7. Crear `rules.md` con plantilla:
   ```markdown
   # Reglas — {nombre}
   ## Reglas de negocio
   (Definir reglas del dominio del cliente)
   ## Restricciones técnicas
   (Limitaciones de infraestructura, compatibilidad)
   ## Convenciones de comunicación
   - Idioma:
   - Horario:
   - Canal preferido:
   ```
8. Actualizar `.index.md`: añadir fila con slug, nombre, sector, 0 proyectos, fecha
9. Git commit: `[savia-hub] client: create {slug}`
10. Si remote + no flight-mode → push (delegar a savia-hub-sync skill)

## Flujo: Mostrar cliente

1. Verificar existencia: `[ -d "$SAVIA_HUB_PATH/clients/$SLUG" ]`
2. Leer frontmatter de `profile.md` → extraer campos
3. Contar líneas en `contacts.md` (excluir header) → N contactos
4. Contar reglas en `rules.md` → N reglas
5. Listar subdirectorios en `projects/` → N proyectos
6. Obtener última fecha commit: `git log -1 --format=%ci -- "clients/$SLUG/"`
7. Formatear output con banner 🏢

## Flujo: Editar cliente

1. Verificar existencia del slug
2. Mapear sección al fichero: profile→profile.md, contacts→contacts.md, rules→rules.md
3. Leer fichero actual → mostrar al PM
4. Aplicar ediciones solicitadas
5. Actualizar `last_updated` en profile.md si se modificó cualquier fichero
6. Commit: `[savia-hub] client: update {slug}/{section}`
7. Si remote + no flight-mode → push

## Flujo: Listar clientes

1. Leer `clients/.index.md`
2. Verificar coherencia: comparar con directorios reales en `clients/`
3. Si hay discrepancias → regenerar índice:
   - Recorrer cada `clients/*/profile.md`
   - Extraer name, sector del frontmatter
   - Contar subdirs en projects/
   - Obtener fecha último commit
4. Mostrar tabla formateada con total

## Flujo: Añadir proyecto a cliente

1. Verificar existencia del slug del cliente
2. Generar project-slug: kebab-case
3. Crear `clients/{slug}/projects/{project-slug}/metadata.md`:
   ```yaml
   ---
   name: "{project-name}"
   slug: "{project-slug}"
   status: "active"
   stack: []
   pm_tool: ""
   created: "{YYYY-MM-DD}"
   ---
   ```
4. Actualizar conteo en `.index.md`
5. Commit: `[savia-hub] client: add project {slug}/{project-slug}`

## Errores y recuperación

| Error | Mensaje | Acción |
|-------|---------|--------|
| SaviaHub no existe | `❌ SaviaHub no inicializado` | Sugerir `/savia-hub init` |
| Cliente ya existe | `⚠️ Cliente {slug} ya existe` | Mostrar `/client-show` |
| Slug no encontrado | `❌ Cliente {slug} no encontrado` | Listar similares con fuzzy match |
| Profile sin frontmatter | `⚠️ profile.md sin frontmatter` | Regenerar desde plantilla |

## Seguridad

- NUNCA escribir secrets, tokens o passwords en ficheros de cliente
- SIEMPRE confirmar con PM antes de push al remote
- contacts.md con PII → informar que puede añadirse a `.gitignore`

Files in this skill

  • DOMAIN.md2.1 KB
  • SKILL.md4.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…