Orgchart Import — Skill
Importa organigrama → modelo normalizado → estructura teams/.
Formato source soportados
| Extension | Parser |
|---|---|
.mermaid |
references/mermaid-parser.md |
.drawio, .xml |
references/drawio-parser.md |
| URL Miro | references/miro-parser.md |
Modelo intermedio
Todos los parsers producen el mismo JSON: references/org-model-schema.md
Pipeline de 7 fases
Fase 1 — Detectar formato y parsear
- Si source termina en
.mermaid→ cargarreferences/mermaid-parser.md, aplicar reglas - Si source termina en
.drawioo.xml→ cargarreferences/drawio-parser.md - Si source es URL con
miro.com→ cargarreferences/miro-parser.md - Si formato no reconocido → error con formatos soportados
Output: modelo JSON normalizado (org-model-schema).
Fase 2 — Construir modelo normalizado
Asegurar que el output del parser cumple el schema:
department.name= valor de--deptdepartment.responsable= extraido del diagrama onullteams[]con name, capacity_total, members[]supervisor_links[]con from/to handles
Fase 3 — Validar datos parseados
| Validacion | Nivel |
|---|---|
| Dept name no vacio | Error |
| Cada equipo tiene >=1 miembro | Error |
| Sin handles duplicados entre equipos | Warn (capacity > 1.0 implica multi-equipo) |
| Al menos 1 lead por equipo | Warn |
| Capacidades entre 0.1 y 1.0 | Warn |
| @handles sin nombres reales | Warn + pedir handle |
Si hay errores → parar con informe. Si solo warns → continuar con avisos.
Fase 4 — Detectar conflictos con teams/ existente
Leer teams/departments.md y teams/{dept}/ si existe.
| Modo | Dept existe | Equipo existe | Miembro existe |
|---|---|---|---|
create |
Error | Error | Error |
merge |
OK, actualizar | OK, agregar nuevos miembros | Skip |
overwrite |
OK, reemplazar | OK, reemplazar | OK, reemplazar |
Default: merge. overwrite requiere flag explicito + confirmacion.
Fase 5 — Presentar propuesta al PM
Mostrar tabla:
Departamento: {dept_name} | Responsable: {resp} | Modo: {mode}
| Equipo | Miembros | Leads | Cap. | Estado |
|---|---|---|---|---|
| squad1 | 3 | @alice | 3.0 | Nuevo |
| squad2 | 2 | @bob | 2.0 | Merge (+1 miembro) |
Ficheros a crear/modificar:
+ teams/{dept}/dept.md
+ teams/{dept}/squad1/team.md
+ teams/{dept}/squad1/deps.md
~ teams/{dept}/squad2/team.md (merge)
+ teams/members/@charlie.md
Si --dry-run → parar aqui con banner informativo.
Fase 6 — Escribir ficheros (tras confirmacion)
- departments.md — agregar/actualizar fila en tabla
- dept.md — crear
teams/{dept}/dept.md:# {dept_name} - **Mision**: [completar] - **Responsable**: {responsable} - **Equipos**: {lista equipos} - **KPIs**: [completar] - team.md por equipo — crear
teams/{dept}/{team}/team.md:name: "{team_name}" department: "{dept_name}" lead: - "@handle" members: - handle: "@handle" role: {role} capacity: {cap} projects: [] capacity_total: {total} velocity_avg: 0 sprint_cadence: 2w - deps.md por equipo — crear vacio:
# Dependencias de {team_name} - member profiles — para cada miembro nuevo sin fichero existente:
crear
teams/members/{handle}.mddesdeteams/members/template.mdcon handle y role pre-rellenados
Fase 7 — Banner de resumen
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ /orgchart-import — Completado
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📁 Departamento: {dept} ({N} equipos, {M} miembros)
📄 Ficheros creados: {count}
📄 Ficheros modificados: {count}
⚡ /compact — Ejecuta para liberar contexto
💡 Siguiente: /team-orchestrator validate --dept {dept}
PII Safety
- Solo @handles en ficheros tracked por git
- Si diagrama contiene nombres reales sin @: warn + pedir handle al PM
teams/members/esta gitignored: puede contener datos reales- NUNCA escribir nombres reales en dept.md, team.md, departments.md