ワンクリックで
documentation-recovery
Auto-genera documentación faltante analizando código y extrayendo metadatos
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Auto-genera documentación faltante analizando código y extrayendo metadatos
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Análisis comprensivo de stored procedures y schema de SQL Server
Skill para arrancar un proyecto de BBDD desde cero con seguridad-first y fuente de verdad local
Trazar transcripts y debug logs de Copilot Chat para estimar/capturar consumo de tokens y desglosarlo por fase
Skill para extraer lógica de negocio de SPs a C#/.NET, aplicando Strangler Fig, DDD y patrones de anti-corrupción
Skill para tuning de consultas, planes e indices con pruebas de regresion
Skill para analizar tendencias de crecimiento y proyectar necesidades de almacenamiento y recursos
| name | documentation-recovery |
| description | Auto-genera documentación faltante analizando código y extrayendo metadatos |
Crea documentación comprensiva y precisa analizando artefactos de código de SQL Server - la documentación que nadie escribió pero todos necesitan.
Diccionario de Datos:
Documentación de Procedimiento:
Diagramas Entidad-Relación:
Documentación de Linaje de Datos:
Runbooks de Procesos:
Identifica qué documentar:
Recopila significado de negocio:
-- Genera diccionario de datos a partir del schema
SELECT
t.name AS TableName,
c.name AS ColumnName,
ty.name AS DataType,
CAST(c.max_length AS VARCHAR(10)) AS Length,
CASE WHEN c.is_nullable = 1 THEN 'NULL' ELSE 'NOT NULL' END AS Nullable,
ISNULL(dc.definition, 'N/A') AS DefaultValue,
OBJECT_DEFINITION(c.default_object_id) AS ComputedFormula
FROM sys.tables t
JOIN sys.columns c ON t.object_id = c.object_id
JOIN sys.types ty ON c.system_type_id = ty.system_type_id
LEFT JOIN sys.default_constraints dc ON c.default_object_id = dc.object_id
-- Obtiene definición de procedimiento y métricas de complejidad
SELECT
OBJECT_NAME(object_id) AS ProcedureName,
OBJECT_DEFINITION(object_id) AS ProcedureCode,
(SELECT COUNT(*) FROM sys.sql_expression_dependencies
WHERE referencing_id = object_id) AS DependenciesCount
FROM sys.procedures
-- Documenta parámetros de procedimiento
SELECT
OBJECT_NAME(object_id) AS ProcedureName,
name AS ParameterName,
system_type_name(user_type_id) AS DataType,
is_output,
has_default_value
FROM sys.parameters
WHERE OBJECT_OBJECTPROPERTY(object_id, 'IsProcedure') = 1
OBLIGATORIO: Las reglas de negocio se extraen leyendo el cuerpo SQL de los SPs, NO inferiendo por nombre ni por metadata. El proceso es:
# Localizar línea exacta del SP en el schema
Select-String -Path "schema/db.sql" -Pattern "NOMBRE_SP" | Select-Object -First 3 LineNumber, Line
# Extraer cuerpo completo por número de línea
Get-Content "schema/db.sql" -TotalCount ($lineStart + 500) | Select-Object -Skip ($lineStart - 1)
### R[N]: [Nombre descriptivo de la regla]
**SP de origen**: `schema.NombreSP`
**Fecha SP**: [del encabezado del SP]
**Autor SP**: [del encabezado del SP]
**Descripción de negocio**: [En lenguaje de negocio, sin SQL]
**Lógica SQL que la implementa**:
\`\`\`sql
-- Fragmento real del SP
CASE WHEN campo = valor THEN ... END
\`\`\`
**Variables y umbrales clave**:
| Variable | Valor/Tipo | Significado |
|---|---|---|
| @PARAM | INT | ... |
**Estados involucrados**: (si aplica máquina de estados)
| ID | Estado | Condición de transición |
|---|---|---|
| 1 | BORRADOR | ... |
| 5 | FINALIZADO | ... |
**Dependencias**:
- Tablas leídas: T_TABLA_A, T_TABLA_B
- Tablas escritas: T_TABLA_C
- SPs llamados: schema.SP_DEPENDIENTE
**Preguntas abiertas**: (lo que el código no deja claro)
- ¿Por qué el valor mágico 65535 en F_BAJA?
- ¿Qué convocatoria controla el ID_DICCIONARIO_CONFIG = 498?
| Patrón SQL | Tipo de regla |
|---|---|
CASE WHEN estado = N THEN | Máquina de estados / Transición |
IF NOT EXISTS (SELECT...) | Validación de unicidad |
MERGE ... WHEN NOT MATCHED | Upsert con lógica de creación |
DecryptByKey(campo) | Datos sensibles protegidos por ley |
EXEC UP_V_ABRIR_LLAVE | Acceso a datos cifrados (GDPR relevante) |
AVG/SUM/MAX sobre jeraquías | Cálculo agregado de puntuación |
WHILE @Nivel > 0 | Propagación jerárquica de valores |
ID_TIPOEXCESO = N | Casuística de excesos por tipo |
plc.ParticipanteFinalizadoOAbandono(...) | Lógica de elegibilidad encapsulada |
B_EXCESO = 1 AND ID_TIPOEXCESO = N | Clasificación de excesos regulatorios |
@ID_DICCIONARIO_CONFIG = N | Configuración por convocatoria |
IN ('CABANT01A', ...) | Codes de causa de anulación |
Para cada SP Critical/Complex:
-- Mapea cuáles procedimientos modifican cuáles tablas
SELECT
OBJECT_NAME(referencing_id) AS Procedure,
OBJECT_NAME(referenced_id) AS TableModified,
'UPDATE' AS ModificationType
FROM sys.sql_expression_dependencies
WHERE OBJECTPROPERTY(referencing_id, 'IsProcedure') = 1
AND OBJECTPROPERTY(referenced_id, 'IsTable') = 1
Plantilla Markdown: Documentación de Tabla
## [NombreTabla]
**Propósito de Negocio**: [Qué entidad de negocio representa esto]
**Propietario**: [Equipo/Persona responsable]
**Frecuencia de Uso**: [Con qué frecuencia se modifican/acceden datos]
### Columnas
| Columna | Tipo | Nullable | Descripción |
|---------|------|----------|-------------|
| ID | INT | NO | Identificador único |
| Nombre | VARCHAR(100) | NO | Nombre de negocio |
### Relaciones
- Clave Foránea: TablaParent.ID referencia [NombreTabla].ParentID
### Índices
- PK_[NombreTabla]: Clustered en ID
- IX_[NombreTabla]_Name: Non-clustered en Name (INCLUDES ParentID)
### Cambios Recientes
- 2024-01: Agregada columna LastModified
- 2024-02: Migrada a nuevo schema
Plantilla Markdown: Documentación de Procedimiento
## sp_ProcessMonthlyClosing
**Propósito de Negocio**: Ejecuta procesamiento de cierre de fin de mes, reconcilia cuentas, congela datos de mes anterior
**Propietario**: Operaciones Financieras
**Frecuencia de Ejecución**: Último día laborable del mes a las 23:00
### Parámetros
- @BusinessUnitID INT - Requerido - Cuál unidad de negocio cerrar
- @ClosingDate DATETIME - Opcional - Anula fecha de cierre
- @SendNotifications BIT - Default: 1 - Envía notificaciones a equipo GL
### Pasos de Procesamiento
1. Bloquea datos del mes actual
2. Valida que todas las transacciones se hayan ingresado
3. Ejecuta procedimientos de reconciliación
4. Genera reportes de cierre
5. Archiva datos archivados
6. Desbloquea mes anterior
### Manejo de Errores
- Si la reconciliación falla, transacción se revierte y error se registra
- Notificaciones se envían al equipo de Operaciones con detalles de error
### Problemas Conocidos
- Toma 45 minutos completarse en meses pesados
- Debe ejecutarse en modo de usuario único para prevenir bloqueos
- Requiere validación manual de saldos GL
### Incidentes Recientes
- 2024-01-31: Timeout debido a índice faltante en Transactions.AcctDate
- 2024-02-29: Falló debido a cuenta GL no existente en tabla de control