7913116a8e
- .claude/agents/fn-analizador/SKILL.md - .claude/agents/fn-constructor/SKILL.md - .claude/agents/fn-executor/SKILL.md - .claude/agents/fn-mejorador/SKILL.md - .claude/agents/fn-orquestador/SKILL.md - .claude/agents/fn-recopilador/SKILL.md - .claude/commands/app.md - .claude/commands/compile.md - .claude/commands/cpp-app.md - .claude/commands/create_functions.md - ... Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
49 lines
2.9 KiB
Markdown
49 lines
2.9 KiB
Markdown
# Capability Group: doctor
|
|
|
|
Funciones de diagnostico read-only del registry y sus artefactos. Componen `fn doctor` — el entrypoint unico de auditoria del ecosistema. No modifican nada.
|
|
|
|
## Funciones del grupo
|
|
|
|
| ID | Firma corta | Que hace |
|
|
|---|---|---|
|
|
| `artefact_doctor_go_infra` | `ArtefactDoctor(registryRoot string) ([]ArtefactCheck, error)` | Estado git/venv/app.md/upstream de cada app y analysis |
|
|
| `audit_capability_groups_go_infra` | `AuditCapabilityGroups(root string) ([]CapabilityGroupAudit, error)` | Drift entre INDEX.md, tags en BD y docs en disco |
|
|
| `audit_copied_code_go_infra` | `AuditCopiedCode(registryRoot string) ([]CopiedCodeEntry, error)` | Cuerpos de funcion copiados del registry sin import |
|
|
| `audit_cpp_apps_go_infra` | `AuditCppApps(registryRoot string) ([]CppAppAudit, error)` | Conformidad C++ con cpp/PATTERNS.md |
|
|
| `audit_ml_env_go_infra` | `AuditMlEnv(registryRoot string) (MlEnvReport, error)` | Entorno ML: GPUs, CUDA, venv, paquetes clave |
|
|
| `audit_uses_functions_go_infra` | `AuditUsesFunctions(registryRoot string) ([]UsesFunctionsAudit, error)` | Drift uses_functions declarado vs imports reales |
|
|
| `find_unused_functions_go_infra` | `FindUnusedFunctions(registryRoot string) ([]UnusedFunction, error)` | Funciones del registry sin consumidores |
|
|
| `frontend_doctor_bash_infra` | `frontend_doctor(project_dir: string) -> diagnostics_stdout` | Diagnostico frontend: node_modules, builds, tipos |
|
|
| `pc_locations_drift_go_infra` | `PcLocationsDrift(registryRoot string, pcID string) ([]LocationDrift, error)` | Drift pc_locations BD vs disco local |
|
|
| `services_status_go_infra` | `ServicesStatus(registryRoot string) ([]ServiceStatus, error)` | Apps con tag service + systemctl + puerto |
|
|
| `vault_doctor_go_infra` | `VaultDoctor(repoRoot string) ([]VaultDoctorEntry, error)` | Estado de vaults: symlinks, manifest, integridad |
|
|
|
|
## Ejemplo canonico
|
|
|
|
```go
|
|
// Todas las funciones siguen el mismo patron:
|
|
// reciben registryRoot (raiz del repo) y retornan slice de resultados + error.
|
|
import "fn-registry/functions/infra"
|
|
|
|
audits, err := infra.AuditCapabilityGroups("$HOME/fn_registry")
|
|
if err != nil { log.Fatal(err) }
|
|
for _, a := range audits {
|
|
if !a.OK { fmt.Printf("%s: %v\n", a.Group, a.Issues) }
|
|
}
|
|
|
|
// fn doctor las compone todas via subcomandos:
|
|
// fn doctor artefacts → ArtefactDoctor
|
|
// fn doctor services → ServicesStatus
|
|
// fn doctor sync → PcLocationsDrift
|
|
// fn doctor uses-functions → AuditUsesFunctions
|
|
// fn doctor unused → FindUnusedFunctions
|
|
// fn doctor cpp-apps → AuditCppApps
|
|
// fn doctor capabilities → AuditCapabilityGroups
|
|
```
|
|
|
|
## Fronteras
|
|
|
|
- **Read-only**: ninguna funcion del grupo escribe, modifica estado ni mata procesos.
|
|
- **No incluye**: funciones de reparacion/fix (esas son acciones derivadas descritas en `.claude/rules/fn_doctor.md`).
|
|
- **No incluye**: `e2e_checks` ni `assertion eval` — esos son pasos del bucle reactivo, no diagnostico pasivo.
|