一键导入
quinotospec-entropy-calculator
Calcula métricas formales de entropía (Shannon v2) y proxies de deuda técnica (v1) para el workflow The Tiwaz Rune.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Calcula métricas formales de entropía (Shannon v2) y proxies de deuda técnica (v1) para el workflow The Tiwaz Rune.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Computa el estado del DAG de artefactos basado en el schema YAML — determina que artefactos estan listos, bloqueados o completados
Orquesta mesas redondas multi-agente — maneja turnos, genera debate productivo, monitorea salud de la discusion
Automates updating the changelog — v1 (single-file) or v2 (file-per-entry in changelog/). Auto-detects format.
Compara versiones de propuestas, user stories y tareas mostrando cambios entre fechas o entre estados.
Crea un nuevo branch feature siguiendo la convención de nombrado del sistema QuinotoSpec.
Automatiza el marcado de tareas como completadas, actualizando archivos de seguimiento y moviendo artefactos completados a la carpeta _archived/.
| name | quinotospec-entropy-calculator |
| description | Calcula métricas formales de entropía (Shannon v2) y proxies de deuda técnica (v1) para el workflow The Tiwaz Rune. |
Motor de cálculo para @quinotospec.tiwaz-rune. Proporciona fórmulas, heurísticas por stack y comandos para obtener valores numéricos reproducibles.
Input: SERVICE_PATH (default: .)
| Stack | Comando / Patrón |
|---|---|
| TypeScript/JS | rg "^import .* from" --glob "*.{ts,tsx,js,jsx}" |
| Python | `rg "^(from |
| Go | rg "^import" --glob "*.go" |
| Java | rg "^import " --glob "*.java" |
| Rust | rg "^use " --glob "*.rs" |
Gráfico ASCII del grafo (obligatorio en output):
[domain] ──→ [application] ──→ [infrastructure]
↑ │
└──────────────┘ ⚠️ ciclo detectado
Heurística por función/método (sin herramienta externa):
if, else if, for, while, case, catch, &&, ||, ?)H(f) = log2(CC) (mínimo log2(1) = 0 para funciones sin ramas)Si el stack tiene herramienta de análisis estático, preferirla:
npx eslint --rule 'complexity: [error, 10]' o similarradon cc -a -sgocyclo# Contar líneas por archivo fuente (excluir node_modules, vendor, dist, .git)
find SERVICE_PATH -type f \( -name "*.ts" -o -name "*.py" -o -name "*.go" -o -name "*.java" -o -name "*.rs" \) \
-not -path "*/node_modules/*" -not -path "*/vendor/*" -not -path "*/dist/*" \
-exec wc -l {} + | sort -n
Calcular H_size y H_size_norm. Generar histograma ASCII:
Líneas │ Frecuencia
0-50 │ ████████████ (24)
51-100 │ ██████ (12)
101-300│ ████ (8)
>300 │ ██ (3) ⚠️
git -C SERVICE_PATH log --since="6 months ago" --name-only --pretty=format: \
| sort | uniq -c | sort -rn | head -20
application*.yml, .env*, config/*, settings*.py, etc.H_testing = 1 - (test_files / source_files)
Contar archivos en *test*, *spec*, __tests__/, tests/ vs archivos fuente.
| Señal | Umbral | Score parcial |
|---|---|---|
| Archivos >300 líneas | por archivo | +0.1 c/u (max 1.0) |
| Funciones CC > 10 | por función | +0.05 c/u (max 1.0) |
| Ratio duplicación | >5% LOC | +0.3 |
| Señal | Score |
|---|---|
| Violación de capas (domain → infrastructure invertido) | +0.2 c/u |
| Dependencia circular detectada | +0.4 |
| Fan-out > 10 en un módulo | +0.2 |
Detectar ciclos con DFS sobre el grafo del paso formal.
| Señal | Score |
|---|---|
| Secretos en código fuente (no .env) | +0.5 |
| >3 archivos de config por entorno | +0.2 |
| Keys sin default documentado | +0.1 |
Analizar manifest del stack (package.json, go.mod, requirements.txt, etc.):
* o sin pin → +0.2Revisar contra 06-devops-ci-security.md si existe:
S_testing = 1 - min(ratio_test_source, 1.0)
Capas sin ningún test → +0.2 adicional por capa.
| Señal presente | Reduce score |
|---|---|
| Logging estructurado (JSON/logger con niveles) | -0.2 |
| Métricas/tracing (Prometheus, OpenTelemetry, etc.) | -0.2 |
| Health check endpoint | -0.1 |
| Circuit breaker / retry configurado | -0.1 |
Score base 1.0, restar señales encontradas (mínimo 0).
Todos los S_* deben normalizarse a rango [0, 1] antes de calcular S_proxy.
Cuando el workflow solicita --json, retornar además del reporte Markdown:
{
"service_path": ".",
"formal": {
"h_grafo_norm": 0.72,
"h_complejidad": 3.1,
"h_churn_norm": 0.45,
"h_config_norm": 0.60,
"h_size_norm": 0.82,
"h_testing": 0.35,
"h_total": 0.58
},
"proxy": {
"s_complejidad": 0.45,
"s_acoplamiento": 0.55,
"s_config": 0.20,
"s_dependencias": 0.30,
"s_seguridad": 0.25,
"s_testing": 0.60,
"s_observabilidad": 0.40,
"s_proxy": 0.42
},
"s_final": 0.52,
"classification": "Entropía alta",
"hotspots": [
{ "file": "src/services/order.service.ts", "lines": 847, "impact": "ALTO" }
]
}