@saulwade/swl-ses 2.6.0 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +209 -197
- package/README.md +647 -600
- package/agentes/accesibilidad-wcag-swl.md +690 -690
- package/agentes/arquitecto-swl.md +267 -267
- package/agentes/auto-evolucion-swl.md +932 -932
- package/agentes/backend-csharp-swl.md +420 -420
- package/agentes/backend-go-swl.md +390 -390
- package/agentes/backend-java-swl.md +281 -281
- package/agentes/backend-rust-swl.md +364 -364
- package/agentes/backend-workers-swl.md +482 -482
- package/agentes/cloud-infra-swl.md +509 -509
- package/agentes/consolidador-swl.md +541 -541
- package/agentes/depurador-swl.md +352 -352
- package/agentes/devops-ci-swl.md +400 -400
- package/agentes/disenador-ui-swl.md +569 -569
- package/agentes/documentador-swl.md +345 -345
- package/agentes/frontend-angular-swl.md +621 -621
- package/agentes/frontend-css-swl.md +716 -716
- package/agentes/frontend-react-swl.md +692 -692
- package/agentes/frontend-swl.md +496 -496
- package/agentes/frontend-tailwind-swl.md +826 -826
- package/agentes/investigador-swl.md +432 -432
- package/agentes/investigador-ux-swl.md +505 -505
- package/agentes/migrador-swl.md +442 -442
- package/agentes/mobile-android-swl.md +511 -511
- package/agentes/mobile-cross-swl.md +541 -541
- package/agentes/mobile-ios-swl.md +502 -502
- package/agentes/mobile-testing-swl.md +302 -302
- package/agentes/nemesis-auditor-swl.md +285 -285
- package/agentes/observabilidad-swl.md +438 -438
- package/agentes/pagos-swl.md +310 -310
- package/agentes/perfilador-usuario-swl.md +321 -321
- package/agentes/planificador-swl.md +399 -399
- package/agentes/producto-prd-swl.md +589 -589
- package/agentes/red-team-swl.md +218 -218
- package/agentes/release-manager-swl.md +590 -590
- package/agentes/rendimiento-swl.md +713 -713
- package/agentes/revisor-angular-swl.md +278 -278
- package/agentes/revisor-csharp-swl.md +264 -264
- package/agentes/revisor-go-swl.md +259 -259
- package/agentes/revisor-java-swl.md +257 -257
- package/agentes/revisor-kotlin-swl.md +273 -273
- package/agentes/revisor-nextjs-swl.md +281 -281
- package/agentes/revisor-php-swl.md +271 -271
- package/agentes/revisor-react-swl.md +278 -278
- package/agentes/revisor-rust-swl.md +346 -346
- package/agentes/revisor-seguridad-swl.md +399 -399
- package/agentes/revisor-swift-swl.md +268 -268
- package/agentes/revisor-typescript-swl.md +346 -346
- package/agentes/tdd-qa-swl.md +393 -393
- package/bin/swl-ses.js +10 -0
- package/comandos/swl/actualizar.md +174 -174
- package/comandos/swl/adoptar-proyecto.md +265 -265
- package/comandos/swl/aprender.md +836 -836
- package/comandos/swl/aprobar-plan.md +146 -146
- package/comandos/swl/auditar-deps.md +134 -134
- package/comandos/swl/autoresearch.md +264 -264
- package/comandos/swl/ayuda.md +224 -224
- package/comandos/swl/brainstorm.md +52 -51
- package/comandos/swl/checkpoint.md +325 -325
- package/comandos/swl/claudemd.md +234 -234
- package/comandos/swl/compactar.md +310 -310
- package/comandos/swl/configurar-ci.md +235 -235
- package/comandos/swl/contexto.md +110 -110
- package/comandos/swl/crear-skill.md +292 -292
- package/comandos/swl/cron.md +194 -194
- package/comandos/swl/deuda-codigo.md +97 -97
- package/comandos/swl/discutir-fase.md +169 -169
- package/comandos/swl/ejecutar-fase.md +233 -233
- package/comandos/swl/evaluar-skill.md +520 -520
- package/comandos/swl/evolucion-continua.md +73 -73
- package/comandos/swl/evolucionar.md +267 -267
- package/comandos/swl/exportar-vault.md +583 -583
- package/comandos/swl/fix.md +118 -118
- package/comandos/swl/gateway.md +158 -158
- package/comandos/swl/inbox.md +116 -116
- package/comandos/swl/instalar.md +220 -220
- package/comandos/swl/instintos.md +86 -86
- package/comandos/swl/mapear-codebase.md +312 -312
- package/comandos/swl/mcp-status.md +176 -175
- package/comandos/swl/modelo.md +100 -100
- package/comandos/swl/nemesis.md +433 -433
- package/comandos/swl/notificaciones.md +299 -299
- package/comandos/swl/nuevo-proyecto.md +251 -251
- package/comandos/swl/planear-fase.md +263 -263
- package/comandos/swl/plugins.md +256 -256
- package/comandos/swl/predecir.md +169 -169
- package/comandos/swl/reflect-skills.md +125 -125
- package/comandos/swl/release.md +450 -450
- package/comandos/swl/revisar-impacto.md +201 -201
- package/comandos/swl/revisar.md +330 -330
- package/comandos/swl/seguridad.md +189 -189
- package/comandos/swl/sesiones.md +200 -200
- package/comandos/swl/skill-search.md +113 -113
- package/comandos/swl/status.md +345 -345
- package/comandos/swl/verificar.md +817 -817
- package/comandos/swl/wiki.md +620 -620
- package/gateway/cron/jobs.example.json +12 -12
- package/gateway/lib/event-channel.js +191 -191
- package/habilidades/agent-deep-links/SKILL.md +148 -148
- package/habilidades/auto-evolucion-protocolo/SKILL.md +294 -294
- package/habilidades/backend-async-postgres-testing/SKILL.md +216 -215
- package/habilidades/backend-error-design/SKILL.md +221 -221
- package/habilidades/backend-production-resilience/SKILL.md +288 -288
- package/habilidades/calidad-anti-patrones-universales/SKILL.md +105 -1
- package/habilidades/calidad-contract-testing/SKILL.md +165 -165
- package/habilidades/calidad-mutation-testing/SKILL.md +25 -1
- package/habilidades/changelog-generator/SKILL.md +174 -174
- package/habilidades/checklist-seguridad/recursos/stride-cobertura.md +60 -60
- package/habilidades/ci-cd-pipelines/SKILL.md +5 -1
- package/habilidades/compactacion-contexto/SKILL.md +2 -1
- package/habilidades/contenedores-docker/SKILL.md +4 -2
- package/habilidades/css-moderno/SKILL.md +7 -1
- package/habilidades/diagrama-arquitectura/assets/template.html +276 -276
- package/habilidades/doubt-driven-review/SKILL.md +207 -207
- package/habilidades/doubt-driven-review/recursos/EXAMPLES.md +130 -130
- package/habilidades/drift-detection/SKILL.md +1 -1
- package/habilidades/ejecutar-task-iterativo/SKILL.md +278 -278
- package/habilidades/estructura-proyecto-claude/recursos/mcp-json-template.json +57 -57
- package/habilidades/extractor-de-aprendizajes/SKILL.md +12 -2
- package/habilidades/feynman-auditor-swl/recursos/preguntas-language-agnostic.md +108 -108
- package/habilidades/git-worktrees-paralelo/SKILL.md +19 -1
- package/habilidades/harness-claude-code/SKILL.md +315 -314
- package/habilidades/instalar-sistema/SKILL.md +227 -227
- package/habilidades/meta-skills-estandar/recursos/convencion-examples.md +93 -93
- package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -469
- package/habilidades/perfil-usuario/SKILL.md +200 -200
- package/habilidades/planear-fase/SKILL.md +358 -358
- package/habilidades/prevencion-sobreingenieria/recursos/EXAMPLES.md +580 -580
- package/habilidades/proceso-ddia-streaming/SKILL.md +231 -231
- package/habilidades/proceso-discovery-machote/SKILL.md +157 -157
- package/habilidades/proceso-dynamic-workflows/SKILL.md +60 -0
- package/habilidades/proceso-dynamic-workflows/recursos/template-adversarial-verify.js +65 -65
- package/habilidades/proceso-dynamic-workflows/recursos/template-triage.js +65 -65
- package/habilidades/proceso-ingenieria-requerimientos/SKILL.md +147 -147
- package/habilidades/proceso-intent-engineering/SKILL.md +269 -269
- package/habilidades/proceso-modular-split/SKILL.md +256 -256
- package/habilidades/release-semver/SKILL.md +2 -2
- package/habilidades/state-inconsistency-auditor-swl/recursos/coupled-state-patterns.md +147 -147
- package/habilidades/swl-claudemd/recursos/contrato-aprender.md +83 -83
- package/habilidades/swl-claudemd/recursos/duplicacion-reglas-globales.md +85 -85
- package/habilidades/swl-claudemd/recursos/plantillas-init.md +94 -94
- package/habilidades/tdd-workflow/SKILL.md +749 -749
- package/habilidades/tdd-workflow/recursos/gherkin-bdd.md +111 -111
- package/hooks/agente-lifecycle.js +1 -1
- package/hooks/audit-trail.js +1 -1
- package/hooks/auto-consolidacion.js +1 -1
- package/hooks/calidad-pre-commit.js +159 -10
- package/hooks/captura-acciones-post.js +1 -1
- package/hooks/captura-acciones-session.js +1 -1
- package/hooks/captura-feedback-usuario.js +1 -1
- package/hooks/ciclo-evolucion-subagente.js +26 -26
- package/hooks/ciclo-evolucion.js +26 -26
- package/hooks/contexto-iteracion.js +1 -1
- package/hooks/degradacion-instintos.js +1 -1
- package/hooks/grafo-contexto.js +1 -1
- package/hooks/guardrail-modelo.js +1 -1
- package/hooks/inbox-aviso.js +1 -1
- package/hooks/inyeccion-contexto.js +1 -1
- package/hooks/lib/agent-matcher.js +1 -1
- package/hooks/lib/agent-routing.js +1 -1
- package/hooks/lib/auto-consolidator.js +335 -335
- package/hooks/lib/captura-acciones.js +1 -1
- package/hooks/lib/ciclo-evolucion.js +47 -47
- package/hooks/lib/deep-links.js +185 -185
- package/hooks/lib/error-classifier.js +308 -308
- package/hooks/lib/etapa-metricas.js +1 -1
- package/hooks/lib/evolution-tracker.js +1 -1
- package/hooks/lib/gateway-notify.js +193 -193
- package/hooks/lib/mcp-health.js +1 -1
- package/hooks/lib/notificacion-formato.js +92 -0
- package/hooks/lib/nudge-tracker.js +1 -1
- package/hooks/lib/otlp-exporter.js +1 -1
- package/hooks/lib/propose-step.js +1 -1
- package/hooks/lib/provenance-tracker.js +191 -191
- package/hooks/lib/raiz-proyecto.js +158 -102
- package/hooks/lib/resource-quota.js +122 -122
- package/hooks/lib/retry-jitter.js +165 -165
- package/hooks/lib/run-log.js +1 -1
- package/hooks/lib/security-net.js +201 -201
- package/hooks/lib/singleton-guard.js +20 -13
- package/hooks/lib/skill-auditor.js +588 -588
- package/hooks/lib/sync-status.js +228 -228
- package/hooks/lib/taint-tracker.js +107 -107
- package/hooks/lib/telegram-cliente.js +11 -3
- package/hooks/lib/text-similarity.js +241 -241
- package/hooks/lib/toon-compressor.js +245 -245
- package/hooks/notificacion-telegram.js +17 -13
- package/hooks/preservar-estado-pre-compact.js +1 -1
- package/hooks/registro-turnos.js +1 -1
- package/hooks/resumen-sesion.js +1 -1
- package/hooks/risk-scoring.js +1 -1
- package/hooks/session-briefing.js +13 -5
- package/hooks/spec-gate.js +1 -1
- package/hooks/sugerir-regenerar-inventario.js +1 -1
- package/hooks/tdd-gate.js +1 -1
- package/hooks/telemetria-agentes.js +1 -1
- package/hooks/telemetria-skill-routing.js +1 -1
- package/hooks/tracking-costos.js +1 -1
- package/hooks/validar-formato-post-subagente.js +1 -1
- package/hooks/validar-intent-spec.js +1 -1
- package/hooks/validar-planning-paths.js +1 -1
- package/instintos/autonomia.yaml +27 -27
- package/instintos/prompt-appendices.yaml +57 -57
- package/llms.txt +29 -29
- package/manifiestos/agent-output-schemas.json +57 -57
- package/manifiestos/canonical-hashes.json +6250 -5257
- package/manifiestos/harness-ir.json +47536 -0
- package/manifiestos/modulos.json +1429 -1428
- package/manifiestos/policy-bundle.json +2065 -0
- package/manifiestos/policy-corpus-w2.json +3926 -0
- package/manifiestos/runtime-adapters-core3.json +208 -0
- package/manifiestos/runtime-conformance.json +139 -0
- package/manifiestos/skills-lock.json +1275 -1275
- package/package.json +94 -94
- package/plantillas/auditor-veto-template.md +105 -105
- package/plantillas/github-workflows/release-please.yml +44 -44
- package/plantillas/github-workflows/swl-ci.yml +107 -107
- package/plantillas/github-workflows/swl-security.yml +51 -51
- package/plugin.json +369 -369
- package/reglas/accesibilidad.md +10 -10
- package/reglas/auditorias-documentales-estructurales.md +7 -7
- package/reglas/cloud-infra.md +8 -8
- package/reglas/consultar-vault-primero.md +195 -195
- package/reglas/git-workflow.md +1 -0
- package/reglas/hooks.md +6 -6
- package/reglas/intent-engineering.md +218 -218
- package/reglas/markitdown.md +8 -8
- package/reglas/monitor-ci.md +12 -0
- package/reglas/patrones.md +6 -6
- package/reglas/testing.md +7 -7
- package/reglas/tests-cleanup.md +224 -224
- package/schemas/agent-message.schema.json +73 -73
- package/schemas/agent-output-implementacion.schema.json +114 -114
- package/schemas/agent-output-planificacion.schema.json +150 -150
- package/schemas/agent-output-review.schema.json +98 -98
- package/schemas/diary-entry.schema.json +112 -112
- package/schemas/gate-state.schema.json +76 -0
- package/schemas/harness-ir.schema.json +369 -0
- package/schemas/hook-profiles.schema.json +54 -54
- package/schemas/hooks-config.schema.json +89 -89
- package/schemas/legacy-gates.schema.json +45 -0
- package/schemas/modulos.schema.json +38 -38
- package/schemas/perfiles.schema.json +36 -36
- package/schemas/plugin.schema.json +77 -77
- package/schemas/policy-bundle.schema.json +140 -0
- package/schemas/policy-enforcement.schema.json +117 -0
- package/schemas/policy-operation.schema.json +261 -0
- package/schemas/runtime-adapter.schema.json +176 -0
- package/schemas/runtime-build-attestation.schema.json +100 -0
- package/schemas/runtime-conformance.schema.json +239 -0
- package/schemas/runtime-diagnostic.schema.json +395 -0
- package/schemas/skill-evals.schema.json +119 -119
- package/schemas/skill-frontmatter.schema.json +245 -245
- package/schemas/w4-certification-request.schema.json +72 -0
- package/schemas/w4-certification-verdict.schema.json +224 -0
- package/schemas/w4-corpus.schema.json +172 -0
- package/schemas/w4-mutation-report.schema.json +116 -0
- package/schemas/w4-replay-result.schema.json +164 -0
- package/schemas/w4-scoring-report.schema.json +89 -0
- package/scripts/audit-tools/audit-history.js +330 -330
- package/scripts/audit-tools/bundle-tracker.js +290 -290
- package/scripts/audit-tools/canary-monitor.js +352 -352
- package/scripts/audit-tools/code-profiler.js +605 -605
- package/scripts/audit-tools/dep-doctor.js +320 -320
- package/scripts/audit-tools/env-validator.js +206 -206
- package/scripts/audit-tools/lib/fs-walk.js +48 -48
- package/scripts/audit-tools/lib/output.js +23 -23
- package/scripts/audit-tools/migration-checker.js +392 -392
- package/scripts/audit-tools/pentest-scanner.js +1436 -1436
- package/scripts/auditar-clases-conocidas.js +134 -134
- package/scripts/bootstrap-instintos.js +88 -14
- package/scripts/canario-hooks.js +166 -166
- package/scripts/cli/aprobar-plan.js +73 -73
- package/scripts/cli/autonomia.js +23 -23
- package/scripts/cli/benchmark-memoria.js +37 -37
- package/scripts/cli/briefing.js +23 -23
- package/scripts/cli/ciclo-autonomo.js +73 -73
- package/scripts/cli/ciclo-evolucion.js +26 -26
- package/scripts/cli/ciclo-fase-b.js +102 -102
- package/scripts/cli/derivar-feature-list.js +25 -25
- package/scripts/cli/detectar-host.js +27 -27
- package/scripts/cli/diary-entry.js +69 -69
- package/scripts/cli/execution-state.js +18 -18
- package/scripts/cli/gateway-notify.js +41 -41
- package/scripts/cli/guardrail-metrics.js +39 -39
- package/scripts/cli/liberar-fase.js +42 -42
- package/scripts/cli/mark-evolved.js +56 -56
- package/scripts/cli/memoria-search.js +69 -69
- package/scripts/cli/metricas-dora.js +26 -26
- package/scripts/cli/near-duplicate.js +55 -55
- package/scripts/cli/notificaciones.js +123 -123
- package/scripts/cli/nudge-accionar.js +39 -39
- package/scripts/cli/propose-step.js +29 -29
- package/scripts/cli/run-eval.js +38 -38
- package/scripts/cli/schedule-parse.js +19 -19
- package/scripts/cli/sugerir-modelo.js +20 -20
- package/scripts/cli/verificar-plan.js +36 -36
- package/scripts/cli/verificar-trazabilidad.js +35 -35
- package/scripts/comandos/install-asistido.js +8 -7
- package/scripts/configurar-branch-protection.js +418 -418
- package/scripts/detectar-aprendizajes-duplicados.js +151 -151
- package/scripts/doctor.js +61 -13
- package/scripts/evidencia-valor.js +101 -101
- package/scripts/field-report.js +16 -16
- package/scripts/generar-checklists-consolidados.js +273 -273
- package/scripts/generar-claims-runtime.js +1342 -0
- package/scripts/generar-harness-ir.js +257 -0
- package/scripts/generar-inventario.js +52 -54
- package/scripts/generar-policy-bundle.js +202 -0
- package/scripts/instalador.js +39 -7
- package/scripts/lib/activar-hooks-proyecto.js +116 -116
- package/scripts/lib/approval-receipts.js +190 -0
- package/scripts/lib/artefactos-python.js +43 -43
- package/scripts/lib/benchmark-metrics.js +160 -160
- package/scripts/lib/budget-enforcer.js +252 -252
- package/scripts/lib/certificacion-loop-state.js +421 -0
- package/scripts/lib/ci-reader.js +193 -193
- package/scripts/lib/ciclo-autonomo/candidatos.js +174 -174
- package/scripts/lib/ciclo-autonomo/config.js +165 -165
- package/scripts/lib/ciclo-autonomo/drenador-feedback.js +174 -174
- package/scripts/lib/ciclo-autonomo/fallback.js +77 -77
- package/scripts/lib/ciclo-autonomo/guard-convivencia.js +139 -139
- package/scripts/lib/ciclo-autonomo/higiene-nudges.js +112 -112
- package/scripts/lib/ciclo-autonomo/index.js +301 -301
- package/scripts/lib/ciclo-autonomo/lock.js +124 -124
- package/scripts/lib/ciclo-autonomo/presupuesto.js +122 -122
- package/scripts/lib/ciclo-autonomo/puente-degradacion.js +240 -240
- package/scripts/lib/ciclo-autonomo/runner-fase-b.js +248 -248
- package/scripts/lib/ciclo-autonomo/writer-instintos.js +190 -190
- package/scripts/lib/ciclo-autonomo/yaml-instintos.js +591 -535
- package/scripts/lib/clasificar-directorio.js +92 -0
- package/scripts/lib/contadores-inventario.js +217 -217
- package/scripts/lib/detectar-host-swl.js +175 -175
- package/scripts/lib/detectar-runtime.js +29 -20
- package/scripts/lib/detectar-stack-detallado.js +307 -307
- package/scripts/lib/detector-autoduplicacion-intra-archivo.js +234 -234
- package/scripts/lib/detector-reglas-duplicadas.js +220 -220
- package/scripts/lib/eval-metrics-store.js +218 -218
- package/scripts/lib/eval-quality.js +171 -171
- package/scripts/lib/eval-schemas.js +144 -144
- package/scripts/lib/eval-self-correct.js +106 -106
- package/scripts/lib/eval-validator.js +185 -185
- package/scripts/lib/evidence-verifier.js +192 -0
- package/scripts/lib/evidencia-release.js +322 -322
- package/scripts/lib/evidencia-valor.js +228 -228
- package/scripts/lib/expandir-targets.js +71 -71
- package/scripts/lib/frontmatter-canonico.js +509 -0
- package/scripts/lib/gate-engine.js +871 -0
- package/scripts/lib/gate-hooks-requires.js +249 -249
- package/scripts/lib/gate-licencias.js +212 -212
- package/scripts/lib/git-config-preflight.js +48 -0
- package/scripts/lib/git-metricas.js +257 -257
- package/scripts/lib/harness-ir.js +778 -0
- package/scripts/lib/harness-source-snapshot.js +309 -0
- package/scripts/lib/integrity-ledger.js +1147 -0
- package/scripts/lib/jaccard-similarity.js +98 -98
- package/scripts/lib/legacy-gate-migration.js +324 -0
- package/scripts/lib/limpiar-basura-global.js +204 -0
- package/scripts/lib/longmemeval-runner.js +125 -125
- package/scripts/lib/metricas-dora.js +204 -204
- package/scripts/lib/notificaciones-telegram.js +1 -0
- package/scripts/lib/npm-version.js +1 -0
- package/scripts/lib/paquetes-conocidos.js +50 -50
- package/scripts/lib/plan-lock.js +61 -13
- package/scripts/lib/policy-broker.js +338 -0
- package/scripts/lib/policy-bundle.js +342 -0
- package/scripts/lib/policy-context-provider.js +310 -0
- package/scripts/lib/policy-contract.js +479 -0
- package/scripts/lib/policy-verifier-utils.js +65 -0
- package/scripts/lib/pr-analyzer.js +399 -399
- package/scripts/lib/principal-verifier.js +178 -0
- package/scripts/lib/prompt-builder.js +264 -264
- package/scripts/lib/resolver-plan-fase.js +37 -37
- package/scripts/lib/rrf-fusion.js +175 -175
- package/scripts/lib/runtime-adapter-contract.js +267 -0
- package/scripts/lib/runtime-artifact-verifier.js +426 -0
- package/scripts/lib/runtime-build-attestation.js +127 -0
- package/scripts/lib/runtime-bundle-installer.js +586 -0
- package/scripts/lib/runtime-compiler.js +327 -0
- package/scripts/lib/runtime-conformance.js +202 -0
- package/scripts/lib/runtime-doctor-core3.js +567 -0
- package/scripts/lib/runtime-doctor-input.js +59 -0
- package/scripts/lib/runtime-operation-adapter.js +267 -0
- package/scripts/lib/schema-version.js +164 -164
- package/scripts/lib/semantic-search.js +252 -252
- package/scripts/lib/signed-envelope.js +545 -0
- package/scripts/lib/single-use-store.js +359 -0
- package/scripts/lib/skills-externas.js +31 -0
- package/scripts/lib/toml-merge.js +204 -204
- package/scripts/lib/transformadores/codex.js +15 -8
- package/scripts/lib/transformadores/gemini.js +79 -5
- package/scripts/lib/w4-attestation-adapter.js +158 -0
- package/scripts/lib/w4-canario.js +337 -0
- package/scripts/lib/w4-claims.js +182 -0
- package/scripts/lib/w4-corpus-generador.js +542 -0
- package/scripts/lib/w4-gate-c5.js +115 -0
- package/scripts/lib/w4-harness-bajo-prueba.js +155 -0
- package/scripts/lib/w4-matriz-combos.js +55 -0
- package/scripts/lib/w4-motor-mutacion.js +1348 -0
- package/scripts/lib/w4-motor-replay.js +735 -0
- package/scripts/lib/w4-pin-origen.js +54 -0
- package/scripts/lib/w4-publicar-request.js +132 -0
- package/scripts/lib/w4-revocacion.js +62 -0
- package/scripts/lib/w4-runtimes-core3.js +38 -0
- package/scripts/lib/w4-scorer-certificacion.js +692 -0
- package/scripts/lib/w4-superficie-candidato.js +49 -0
- package/scripts/lib/w4-veredicto.js +452 -0
- package/scripts/lib/w4-verificar-veredicto.js +302 -0
- package/scripts/limpiar-artefactos-python.js +131 -131
- package/scripts/mcp-server/auth.js +105 -105
- package/scripts/mcp-server/cache.js +106 -106
- package/scripts/migrar-csv-a-array.js +168 -168
- package/scripts/migrar-fase-dominio.js +200 -200
- package/scripts/migrar-gates-legacy.js +108 -0
- package/scripts/publicar-certification-request.js +115 -0
- package/scripts/runtime-doctor.js +107 -0
- package/scripts/tui/componentes/selector-multi.js +189 -189
- package/scripts/tui/componentes/selector-unico.js +158 -158
- package/scripts/tui/ejecutores.js +375 -375
- package/scripts/tui/lib/colores.js +129 -129
- package/scripts/tui/lib/render.js +264 -264
- package/scripts/tui/lib/teclas.js +113 -113
- package/scripts/tui/pantallas/install-wizard.js +408 -403
- package/scripts/tui/pantallas/menu-principal.js +52 -52
- package/scripts/tui/pantallas/progreso.js +274 -274
- package/scripts/tui/pantallas/resumen.js +132 -132
- package/scripts/validar-userland-vacio.js +110 -110
- package/scripts/verificar-aislamiento-swl-eval.js +87 -0
- package/scripts/verificar-empaquetado-downstream.js +375 -0
- package/scripts/verificar-loop-constructor.js +215 -0
- package/scripts/verificar-trazabilidad.js +13 -6
- package/scripts/verificar-veredicto-real.js +84 -0
- package/instintos/.backups/perfil-usuario.yaml.2026-07-10-165128.bak +0 -53
- package/instintos/.backups/proyecto.yaml.2026-07-10-165128.bak +0 -372
|
@@ -1,65 +1,65 @@
|
|
|
1
|
-
// PLANTILLA (no ejecutar verbatim) — Workflow tool de Claude Code.
|
|
2
|
-
// Patrón: classify-and-act + quarantine. Clasifica ítems de un backlog, dedupe contra lo
|
|
3
|
-
// ya trackeado, y rutea: fix automático (bajo riesgo) vs escalar a humano (alto riesgo).
|
|
4
|
-
// Quarantine: el agente que LEE contenido no confiable NO ejecuta acciones de alto privilegio.
|
|
5
|
-
//
|
|
6
|
-
// `args` = lista de ítems del backlog (issues, reportes, etc.). Adapta schemas y umbrales.
|
|
7
|
-
|
|
8
|
-
export const meta = {
|
|
9
|
-
name: 'triage',
|
|
10
|
-
description: 'Clasifica un backlog, dedupe contra lo trackeado y rutea fix-vs-escalar (con quarantine)',
|
|
11
|
-
phases: [{ title: 'Clasificar' }, { title: 'Actuar' }],
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const items = Array.isArray(args) ? args : []
|
|
15
|
-
|
|
16
|
-
const CLASIFICACION = {
|
|
17
|
-
type: 'object', additionalProperties: false,
|
|
18
|
-
properties: {
|
|
19
|
-
categoria: { type: 'string', enum: ['bug', 'feature', 'duplicado', 'ruido'] },
|
|
20
|
-
yaTrackeado: { type: 'boolean' },
|
|
21
|
-
riesgo: { type: 'string', enum: ['bajo', 'alto'] },
|
|
22
|
-
resumen: { type: 'string' },
|
|
23
|
-
},
|
|
24
|
-
required: ['categoria', 'yaTrackeado', 'riesgo', 'resumen'],
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
const ACCION = {
|
|
28
|
-
type: 'object', additionalProperties: false,
|
|
29
|
-
properties: {
|
|
30
|
-
accion: { type: 'string', enum: ['fix-aplicado', 'escalado-humano', 'descartado'] },
|
|
31
|
-
detalle: { type: 'string' },
|
|
32
|
-
},
|
|
33
|
-
required: ['accion', 'detalle'],
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// Stage 1 (quarantine): clasificador LEE el ítem (posible contenido no confiable) pero NO
|
|
37
|
-
// tiene permiso de actuar — solo emite estructura. Stage 2 actúa sobre data ya saneada.
|
|
38
|
-
const triaged = await pipeline(
|
|
39
|
-
items,
|
|
40
|
-
(item) =>
|
|
41
|
-
agent(
|
|
42
|
-
`Clasifica este ítem del backlog. NO ejecutes ninguna acción: solo describe. ` +
|
|
43
|
-
`Marca yaTrackeado=true si ya existe ticket. Ítem: ${JSON.stringify(item)}`,
|
|
44
|
-
{ label: 'clasificar', phase: 'Clasificar', schema: CLASIFICACION }
|
|
45
|
-
),
|
|
46
|
-
(clf, item) => {
|
|
47
|
-
if (!clf || clf.yaTrackeado || clf.categoria === 'ruido' || clf.categoria === 'duplicado') {
|
|
48
|
-
return { accion: 'descartado', detalle: clf?.resumen || 'sin señal' }
|
|
49
|
-
}
|
|
50
|
-
if (clf.riesgo === 'alto') {
|
|
51
|
-
// Alto riesgo: escalar a humano, no auto-actuar.
|
|
52
|
-
return agent(
|
|
53
|
-
`Redacta un escalamiento conciso para humano sobre: ${clf.resumen}`,
|
|
54
|
-
{ label: 'escalar', phase: 'Actuar', schema: ACCION }
|
|
55
|
-
)
|
|
56
|
-
}
|
|
57
|
-
// Bajo riesgo: el agente que ACTÚA es distinto del que leyó contenido no confiable.
|
|
58
|
-
return agent(
|
|
59
|
-
`Aplica el fix de bajo riesgo para: ${clf.resumen}. Devuelve qué hiciste.`,
|
|
60
|
-
{ label: 'fix', phase: 'Actuar', schema: ACCION }
|
|
61
|
-
)
|
|
62
|
-
}
|
|
63
|
-
)
|
|
64
|
-
|
|
65
|
-
return triaged.filter(Boolean)
|
|
1
|
+
// PLANTILLA (no ejecutar verbatim) — Workflow tool de Claude Code.
|
|
2
|
+
// Patrón: classify-and-act + quarantine. Clasifica ítems de un backlog, dedupe contra lo
|
|
3
|
+
// ya trackeado, y rutea: fix automático (bajo riesgo) vs escalar a humano (alto riesgo).
|
|
4
|
+
// Quarantine: el agente que LEE contenido no confiable NO ejecuta acciones de alto privilegio.
|
|
5
|
+
//
|
|
6
|
+
// `args` = lista de ítems del backlog (issues, reportes, etc.). Adapta schemas y umbrales.
|
|
7
|
+
|
|
8
|
+
export const meta = {
|
|
9
|
+
name: 'triage',
|
|
10
|
+
description: 'Clasifica un backlog, dedupe contra lo trackeado y rutea fix-vs-escalar (con quarantine)',
|
|
11
|
+
phases: [{ title: 'Clasificar' }, { title: 'Actuar' }],
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const items = Array.isArray(args) ? args : []
|
|
15
|
+
|
|
16
|
+
const CLASIFICACION = {
|
|
17
|
+
type: 'object', additionalProperties: false,
|
|
18
|
+
properties: {
|
|
19
|
+
categoria: { type: 'string', enum: ['bug', 'feature', 'duplicado', 'ruido'] },
|
|
20
|
+
yaTrackeado: { type: 'boolean' },
|
|
21
|
+
riesgo: { type: 'string', enum: ['bajo', 'alto'] },
|
|
22
|
+
resumen: { type: 'string' },
|
|
23
|
+
},
|
|
24
|
+
required: ['categoria', 'yaTrackeado', 'riesgo', 'resumen'],
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const ACCION = {
|
|
28
|
+
type: 'object', additionalProperties: false,
|
|
29
|
+
properties: {
|
|
30
|
+
accion: { type: 'string', enum: ['fix-aplicado', 'escalado-humano', 'descartado'] },
|
|
31
|
+
detalle: { type: 'string' },
|
|
32
|
+
},
|
|
33
|
+
required: ['accion', 'detalle'],
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Stage 1 (quarantine): clasificador LEE el ítem (posible contenido no confiable) pero NO
|
|
37
|
+
// tiene permiso de actuar — solo emite estructura. Stage 2 actúa sobre data ya saneada.
|
|
38
|
+
const triaged = await pipeline(
|
|
39
|
+
items,
|
|
40
|
+
(item) =>
|
|
41
|
+
agent(
|
|
42
|
+
`Clasifica este ítem del backlog. NO ejecutes ninguna acción: solo describe. ` +
|
|
43
|
+
`Marca yaTrackeado=true si ya existe ticket. Ítem: ${JSON.stringify(item)}`,
|
|
44
|
+
{ label: 'clasificar', phase: 'Clasificar', schema: CLASIFICACION }
|
|
45
|
+
),
|
|
46
|
+
(clf, item) => {
|
|
47
|
+
if (!clf || clf.yaTrackeado || clf.categoria === 'ruido' || clf.categoria === 'duplicado') {
|
|
48
|
+
return { accion: 'descartado', detalle: clf?.resumen || 'sin señal' }
|
|
49
|
+
}
|
|
50
|
+
if (clf.riesgo === 'alto') {
|
|
51
|
+
// Alto riesgo: escalar a humano, no auto-actuar.
|
|
52
|
+
return agent(
|
|
53
|
+
`Redacta un escalamiento conciso para humano sobre: ${clf.resumen}`,
|
|
54
|
+
{ label: 'escalar', phase: 'Actuar', schema: ACCION }
|
|
55
|
+
)
|
|
56
|
+
}
|
|
57
|
+
// Bajo riesgo: el agente que ACTÚA es distinto del que leyó contenido no confiable.
|
|
58
|
+
return agent(
|
|
59
|
+
`Aplica el fix de bajo riesgo para: ${clf.resumen}. Devuelve qué hiciste.`,
|
|
60
|
+
{ label: 'fix', phase: 'Actuar', schema: ACCION }
|
|
61
|
+
)
|
|
62
|
+
}
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
return triaged.filter(Boolean)
|
|
@@ -1,147 +1,147 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: proceso-ingenieria-requerimientos
|
|
3
|
-
description: >
|
|
4
|
-
Checklist de calidad de requerimientos basado en ingeniería de
|
|
5
|
-
requerimientos clásica (investigación académica del autor, 2003; refs
|
|
6
|
-
ZAVE94 y RE'01): las 8 características del buen requerimiento (correcto,
|
|
7
|
-
necesario, conciso, libre de implementación, factible, priorizable, no
|
|
8
|
-
ambiguo, verificable), la heurística "una verificación = un requerimiento",
|
|
9
|
-
la metadata de soporte por REQ (IDUR, padre, fuente, razón, riesgo, estado)
|
|
10
|
-
y la jerarquía de verificación (inspección < demostración < prueba).
|
|
11
|
-
Cargar al congelar REQs en /swl:discutir-fase (Bloque 5), al redactar
|
|
12
|
-
criterios de aceptación en un PRD (producto-prd-swl), o al auditar la
|
|
13
|
-
calidad de un CONTEXTO.md/REQUISITOS.md existente.
|
|
14
|
-
version: "1.0.0"
|
|
15
|
-
herramientasPermitidas: [Read]
|
|
16
|
-
evolvable: true
|
|
17
|
-
exclusiones:
|
|
18
|
-
- "No cargar para descomponer REQs en tareas — eso es planificador-swl con el REQ ya congelado."
|
|
19
|
-
- "No cargar para verificar la CADENA REQ→tarea→commit→test — eso es el gate G4 de /swl:verificar; este skill mejora la calidad del REQ ANTES de que exista la cadena."
|
|
20
|
-
- "No cargar para decisiones de arquitectura — un ADR documenta el CÓMO se decide; este skill vigila que el REQ diga el QUÉ sin contaminarse de cómo."
|
|
21
|
-
---
|
|
22
|
-
# Ingeniería de requerimientos — checklist de calidad por REQ
|
|
23
|
-
|
|
24
|
-
Un requerimiento mal escrito se propaga: el plan lo descompone mal, el test
|
|
25
|
-
lo verifica mal y el gate G4 valida una cadena correcta sobre un contenido
|
|
26
|
-
incorrecto. Este skill se aplica a **cada REQ individual antes de congelarlo**
|
|
27
|
-
(cierre de `discutir-fase`, redacción de PRD), no a la cadena posterior.
|
|
28
|
-
|
|
29
|
-
> La IR "funciona como el puente entre la necesidad que tienen los usuarios
|
|
30
|
-
> del mundo real [...] y las capacidades y oportunidades que brinda la
|
|
31
|
-
> tecnología" (RE'01). El REQ es ese puente: si el puente está torcido, todo
|
|
32
|
-
> lo que cruza llega torcido.
|
|
33
|
-
|
|
34
|
-
## Cuándo cargar
|
|
35
|
-
|
|
36
|
-
- Al cerrar el **Bloque 5** de `discutir-fase` (criterios de aceptación),
|
|
37
|
-
antes de escribir los `REQ-<fase>-NN` al CONTEXTO.md.
|
|
38
|
-
- Al redactar criterios de aceptación e historias en un PRD.
|
|
39
|
-
- Al auditar un CONTEXTO.md o REQUISITOS.md existente (¿por qué esta fase
|
|
40
|
-
divergió? — a menudo el REQ era ambiguo desde el origen).
|
|
41
|
-
|
|
42
|
-
## Las 8 características — checklist con prueba operativa
|
|
43
|
-
|
|
44
|
-
Aplicar a CADA requerimiento. Un REQ que falla una característica se
|
|
45
|
-
reescribe antes de congelar, no después de implementar.
|
|
46
|
-
|
|
47
|
-
| # | Característica | Prueba operativa |
|
|
48
|
-
|---|---|---|
|
|
49
|
-
| 1 | **Correcto** | Solo el usuario (o su sustituto cercano) determina si es correcto — validarlo con él en la entrevista. "Probablemente es lo que querían" = adivinar, no elicitar. |
|
|
50
|
-
| 2 | **Necesario** | Rastrear a una fuente con autoridad (petición del usuario, REQ padre, estándar, regulación). Prueba: *¿si lo elimino, qué necesidad queda sin resolver?* Sin respuesta = *gold plating* — fuera. |
|
|
51
|
-
| 3 | **Conciso** | Dice QUÉ debe hacerse y solo eso. Explicaciones, racional y análisis van en la metadata `Razón`, no en el enunciado. |
|
|
52
|
-
| 4 | **Libre de implementación** | Dice qué, no cómo. Regla de cascada: *"el diseño de un nivel es el requerimiento del nivel inferior"* — la solución elegida (ADR) genera los REQs del siguiente nivel, sin fijar el diseño de ese nivel. Excepción legítima: requerimientos de interface. |
|
|
53
|
-
| 5 | **Factible** | Chequeo de realidad técnica y de costo contra el sistema y su ambiente conocidos. Valores numéricos sospechosos se retan con física/límites del stack (el radar no ve más allá del horizonte). `/swl:predecir --abogado-diablo` es el retador formal. |
|
|
54
|
-
| 6 | **Priorizable** | Prioridad asignada = f(valor al cliente, costo relativo, riesgo técnico). Si todo es igual de importante, no se puede reaccionar a recortes ni imprevistos. |
|
|
55
|
-
| 7 | **No ambiguo** | Todos los lectores llegan a UNA interpretación. Palabras prohibidas en el enunciado: *fácil, simple, rápido, eficiente, varios, mejorado, robusto, flexible, amigable, maximizar, minimizar, soportar*. Cada una se reemplaza por un valor medible o se elimina. |
|
|
56
|
-
| 8 | **Verificable** | Enunciado en términos mensurables con tolerancias ("105 ± 0.5", "p95 < N ms", "0 hallazgos CRÍTICOS"). Un REQ no verificable convierte la aceptación en cuestión de opinión. No consistente/no factible/ambiguo ⇒ no verificable. |
|
|
57
|
-
|
|
58
|
-
## Heurística de concisión: una verificación = un requerimiento
|
|
59
|
-
|
|
60
|
-
¿La alarma visual y la audible son uno o dos REQs? **Se decide por cómo se
|
|
61
|
-
verificará**: si una sola prueba/demostración las verifica juntas, son UN
|
|
62
|
-
requerimiento; si exigen verificaciones separadas, son DOS. Ni párrafos con
|
|
63
|
-
múltiples REQs escondidos, ni multiplicar REQs sin razón — cada REQ se
|
|
64
|
-
administra y verifica, y eso cuesta.
|
|
65
|
-
|
|
66
|
-
## Tipos técnicos (y su relación de verificación)
|
|
67
|
-
|
|
68
|
-
- **Funcional** — cualitativo: qué hace ("detectar blancos"). Se verifica por
|
|
69
|
-
la SUMA de sus requerimientos de desempeño asociados.
|
|
70
|
-
- **Desempeño** — cuantitativo y comprobable individualmente ("detectar 0.1 m²
|
|
71
|
-
a >20 km con Pd ≥ 0.9"). Usualmente varios por cada funcional.
|
|
72
|
-
- **Restricción de diseño** — límites bajo los que debe existir (peso, tamaño,
|
|
73
|
-
ambiente, stack impuesto).
|
|
74
|
-
- **Interface** — cómo interactúa con sistemas externos o entre subsistemas;
|
|
75
|
-
la excepción documentada a "libre de implementación".
|
|
76
|
-
|
|
77
|
-
## Metadata de soporte por REQ
|
|
78
|
-
|
|
79
|
-
El REQ es un objeto de primera clase con metadata, no una línea suelta:
|
|
80
|
-
|
|
81
|
-
| Atributo | En swl-ses | Regla |
|
|
82
|
-
|---|---|---|
|
|
83
|
-
| **IDUR** | `REQ-<fase>-NN` (namespaceado) | Único, jamás reutilizado |
|
|
84
|
-
| **Padre** | `padre: REQ-<fase>-MM` (opcional) | Para REQs derivados de uno de nivel superior — da trazabilidad vertical |
|
|
85
|
-
| **Fuente** | quién/qué lo pidió (usuario en entrevista, PRD §, estándar, regla) | Sin fuente identificable → aplica prueba de "necesario" |
|
|
86
|
-
| **Razón** | 1 línea de racional o puntero (análisis, ADR, supuesto del Bloque 4) | Aquí vive lo que "conciso" echó del enunciado |
|
|
87
|
-
| **Riesgo** | alto/medio/bajo + por qué | Alimenta la priorización del plan |
|
|
88
|
-
| **Estado** | `PENDIENTE → definido → aprobado (gate G1) → verificado (gate G4) → borrado` | Mapa del ciclo PSD/PSR/Definido/Aprobado/Verificado/Borrado clásico; REQs `PENDIENTE` bloquean el cierre de la discusión |
|
|
89
|
-
|
|
90
|
-
## Jerarquía de verificación (al declarar CÓMO se verificará cada REQ)
|
|
91
|
-
|
|
92
|
-
**Inspección** (mirar/medir el artefacto) < **demostración** (observar la
|
|
93
|
-
operación con instrumentación mínima — p. ej. medir MTTR reparando fallas
|
|
94
|
-
inducidas) < **prueba** (instrumentada por completo — la más confiable y la
|
|
95
|
-
más cara) — con **análisis** como soporte barato (modelos validados contra
|
|
96
|
-
pruebas previas). Elegir el método MÁS BARATO que realmente verifique el
|
|
97
|
-
REQ; declarar el método junto al criterio de aceptación.
|
|
98
|
-
|
|
99
|
-
## Dos escalas de priorización (usar una, explícita)
|
|
100
|
-
|
|
101
|
-
- **Alto / Medio / Bajo** — crítico de misión para la próxima liberación /
|
|
102
|
-
necesario eventualmente / mejora si los recursos lo permiten.
|
|
103
|
-
- **Esencial / Condicional / Opcional** — el producto no es aceptable sin él /
|
|
104
|
-
mejora pero el producto es aceptable sin ella / puede o no valer la pena.
|
|
105
|
-
- MoSCoW (del PRD) mapea: Must≈Esencial, Should/Could≈Condicional,
|
|
106
|
-
Won't≈fuera. Declarar QUÉ escala se usa; nunca mezclar dos en el mismo doc.
|
|
107
|
-
|
|
108
|
-
## Por qué la elicitación falla (y qué hace el cuestionario al respecto)
|
|
109
|
-
|
|
110
|
-
Restricciones clásicas que el entrevistador debe asumir como default:
|
|
111
|
-
**conocimiento tácito** (la gente no sabe describir lo que hace — pedir
|
|
112
|
-
ejemplos concretos, no definiciones), **distribución del conocimiento**
|
|
113
|
-
(fuentes múltiples en conflicto — los conflictos se registran como decisiones
|
|
114
|
-
del Bloque 4, no se resuelven en silencio), **observación limitada** y
|
|
115
|
-
**parcialidad** (el resultado afecta al informante). Es la razón por la que
|
|
116
|
-
`discutir-fase` pregunta supuestos explícitos y registra decisiones con
|
|
117
|
-
estado en vez de asumir consenso.
|
|
118
|
-
|
|
119
|
-
## Cuándo NO cargar
|
|
120
|
-
|
|
121
|
-
- REQs ya congelados con plan aprobado (gate G1) — re-litigar el REQ ahí es
|
|
122
|
-
cambio de scope: pasa por re-planificación, no por este checklist.
|
|
123
|
-
- Tareas técnicas triviales sin REQs formales (fix puntual, typo).
|
|
124
|
-
- Verificación post-implementación — eso es `/swl:verificar` (G4).
|
|
125
|
-
|
|
126
|
-
## Gotchas / Errores comunes no obvios
|
|
127
|
-
|
|
128
|
-
- **Checklist aplicado al documento y no al requerimiento**: las 8
|
|
129
|
-
características se evalúan POR REQ individual; un CONTEXTO.md "en general
|
|
130
|
-
claro" puede contener 2 REQs ambiguos que revientan la fase.
|
|
131
|
-
- **"Verificable" confundido con "tiene test"**: verificable es una propiedad
|
|
132
|
-
del ENUNCIADO (términos mensurables), previa al test. G4 valida que el test
|
|
133
|
-
exista; este skill valida que el enunciado sea testeable.
|
|
134
|
-
- **Racional dentro del enunciado**: si el REQ explica por qué, mezcla dos
|
|
135
|
-
atributos — mover el porqué a `Razón` y dejar el enunciado conciso.
|
|
136
|
-
- **Funcional "verificado" directamente**: un funcional sin desempeños
|
|
137
|
-
asociados se "verifica" con opinión. Todo funcional no trivial necesita al
|
|
138
|
-
menos un desempeño cuantitativo asociado.
|
|
139
|
-
|
|
140
|
-
---
|
|
141
|
-
|
|
142
|
-
**Origen**: investigación académica de Saúl Wade, *"Ingeniería de
|
|
143
|
-
requerimientos"* (Wade Inc., ~2003; referencias [ZAVE94] y [RE'01 CfP]),
|
|
144
|
-
absorbida al sistema el 2026-07-08 (v2.5.1). El documento fuente vive en
|
|
145
|
-
`temp/` del repo madre (material de referencia, no distribuido); este skill
|
|
146
|
-
es su destilado operativo con el mapeo a los mecanismos SWL (gates G1/G4,
|
|
147
|
-
cuestionario de discutir-fase, MoSCoW del PRD).
|
|
1
|
+
---
|
|
2
|
+
name: proceso-ingenieria-requerimientos
|
|
3
|
+
description: >
|
|
4
|
+
Checklist de calidad de requerimientos basado en ingeniería de
|
|
5
|
+
requerimientos clásica (investigación académica del autor, 2003; refs
|
|
6
|
+
ZAVE94 y RE'01): las 8 características del buen requerimiento (correcto,
|
|
7
|
+
necesario, conciso, libre de implementación, factible, priorizable, no
|
|
8
|
+
ambiguo, verificable), la heurística "una verificación = un requerimiento",
|
|
9
|
+
la metadata de soporte por REQ (IDUR, padre, fuente, razón, riesgo, estado)
|
|
10
|
+
y la jerarquía de verificación (inspección < demostración < prueba).
|
|
11
|
+
Cargar al congelar REQs en /swl:discutir-fase (Bloque 5), al redactar
|
|
12
|
+
criterios de aceptación en un PRD (producto-prd-swl), o al auditar la
|
|
13
|
+
calidad de un CONTEXTO.md/REQUISITOS.md existente.
|
|
14
|
+
version: "1.0.0"
|
|
15
|
+
herramientasPermitidas: [Read]
|
|
16
|
+
evolvable: true
|
|
17
|
+
exclusiones:
|
|
18
|
+
- "No cargar para descomponer REQs en tareas — eso es planificador-swl con el REQ ya congelado."
|
|
19
|
+
- "No cargar para verificar la CADENA REQ→tarea→commit→test — eso es el gate G4 de /swl:verificar; este skill mejora la calidad del REQ ANTES de que exista la cadena."
|
|
20
|
+
- "No cargar para decisiones de arquitectura — un ADR documenta el CÓMO se decide; este skill vigila que el REQ diga el QUÉ sin contaminarse de cómo."
|
|
21
|
+
---
|
|
22
|
+
# Ingeniería de requerimientos — checklist de calidad por REQ
|
|
23
|
+
|
|
24
|
+
Un requerimiento mal escrito se propaga: el plan lo descompone mal, el test
|
|
25
|
+
lo verifica mal y el gate G4 valida una cadena correcta sobre un contenido
|
|
26
|
+
incorrecto. Este skill se aplica a **cada REQ individual antes de congelarlo**
|
|
27
|
+
(cierre de `discutir-fase`, redacción de PRD), no a la cadena posterior.
|
|
28
|
+
|
|
29
|
+
> La IR "funciona como el puente entre la necesidad que tienen los usuarios
|
|
30
|
+
> del mundo real [...] y las capacidades y oportunidades que brinda la
|
|
31
|
+
> tecnología" (RE'01). El REQ es ese puente: si el puente está torcido, todo
|
|
32
|
+
> lo que cruza llega torcido.
|
|
33
|
+
|
|
34
|
+
## Cuándo cargar
|
|
35
|
+
|
|
36
|
+
- Al cerrar el **Bloque 5** de `discutir-fase` (criterios de aceptación),
|
|
37
|
+
antes de escribir los `REQ-<fase>-NN` al CONTEXTO.md.
|
|
38
|
+
- Al redactar criterios de aceptación e historias en un PRD.
|
|
39
|
+
- Al auditar un CONTEXTO.md o REQUISITOS.md existente (¿por qué esta fase
|
|
40
|
+
divergió? — a menudo el REQ era ambiguo desde el origen).
|
|
41
|
+
|
|
42
|
+
## Las 8 características — checklist con prueba operativa
|
|
43
|
+
|
|
44
|
+
Aplicar a CADA requerimiento. Un REQ que falla una característica se
|
|
45
|
+
reescribe antes de congelar, no después de implementar.
|
|
46
|
+
|
|
47
|
+
| # | Característica | Prueba operativa |
|
|
48
|
+
|---|---|---|
|
|
49
|
+
| 1 | **Correcto** | Solo el usuario (o su sustituto cercano) determina si es correcto — validarlo con él en la entrevista. "Probablemente es lo que querían" = adivinar, no elicitar. |
|
|
50
|
+
| 2 | **Necesario** | Rastrear a una fuente con autoridad (petición del usuario, REQ padre, estándar, regulación). Prueba: *¿si lo elimino, qué necesidad queda sin resolver?* Sin respuesta = *gold plating* — fuera. |
|
|
51
|
+
| 3 | **Conciso** | Dice QUÉ debe hacerse y solo eso. Explicaciones, racional y análisis van en la metadata `Razón`, no en el enunciado. |
|
|
52
|
+
| 4 | **Libre de implementación** | Dice qué, no cómo. Regla de cascada: *"el diseño de un nivel es el requerimiento del nivel inferior"* — la solución elegida (ADR) genera los REQs del siguiente nivel, sin fijar el diseño de ese nivel. Excepción legítima: requerimientos de interface. |
|
|
53
|
+
| 5 | **Factible** | Chequeo de realidad técnica y de costo contra el sistema y su ambiente conocidos. Valores numéricos sospechosos se retan con física/límites del stack (el radar no ve más allá del horizonte). `/swl:predecir --abogado-diablo` es el retador formal. |
|
|
54
|
+
| 6 | **Priorizable** | Prioridad asignada = f(valor al cliente, costo relativo, riesgo técnico). Si todo es igual de importante, no se puede reaccionar a recortes ni imprevistos. |
|
|
55
|
+
| 7 | **No ambiguo** | Todos los lectores llegan a UNA interpretación. Palabras prohibidas en el enunciado: *fácil, simple, rápido, eficiente, varios, mejorado, robusto, flexible, amigable, maximizar, minimizar, soportar*. Cada una se reemplaza por un valor medible o se elimina. |
|
|
56
|
+
| 8 | **Verificable** | Enunciado en términos mensurables con tolerancias ("105 ± 0.5", "p95 < N ms", "0 hallazgos CRÍTICOS"). Un REQ no verificable convierte la aceptación en cuestión de opinión. No consistente/no factible/ambiguo ⇒ no verificable. |
|
|
57
|
+
|
|
58
|
+
## Heurística de concisión: una verificación = un requerimiento
|
|
59
|
+
|
|
60
|
+
¿La alarma visual y la audible son uno o dos REQs? **Se decide por cómo se
|
|
61
|
+
verificará**: si una sola prueba/demostración las verifica juntas, son UN
|
|
62
|
+
requerimiento; si exigen verificaciones separadas, son DOS. Ni párrafos con
|
|
63
|
+
múltiples REQs escondidos, ni multiplicar REQs sin razón — cada REQ se
|
|
64
|
+
administra y verifica, y eso cuesta.
|
|
65
|
+
|
|
66
|
+
## Tipos técnicos (y su relación de verificación)
|
|
67
|
+
|
|
68
|
+
- **Funcional** — cualitativo: qué hace ("detectar blancos"). Se verifica por
|
|
69
|
+
la SUMA de sus requerimientos de desempeño asociados.
|
|
70
|
+
- **Desempeño** — cuantitativo y comprobable individualmente ("detectar 0.1 m²
|
|
71
|
+
a >20 km con Pd ≥ 0.9"). Usualmente varios por cada funcional.
|
|
72
|
+
- **Restricción de diseño** — límites bajo los que debe existir (peso, tamaño,
|
|
73
|
+
ambiente, stack impuesto).
|
|
74
|
+
- **Interface** — cómo interactúa con sistemas externos o entre subsistemas;
|
|
75
|
+
la excepción documentada a "libre de implementación".
|
|
76
|
+
|
|
77
|
+
## Metadata de soporte por REQ
|
|
78
|
+
|
|
79
|
+
El REQ es un objeto de primera clase con metadata, no una línea suelta:
|
|
80
|
+
|
|
81
|
+
| Atributo | En swl-ses | Regla |
|
|
82
|
+
|---|---|---|
|
|
83
|
+
| **IDUR** | `REQ-<fase>-NN` (namespaceado) | Único, jamás reutilizado |
|
|
84
|
+
| **Padre** | `padre: REQ-<fase>-MM` (opcional) | Para REQs derivados de uno de nivel superior — da trazabilidad vertical |
|
|
85
|
+
| **Fuente** | quién/qué lo pidió (usuario en entrevista, PRD §, estándar, regla) | Sin fuente identificable → aplica prueba de "necesario" |
|
|
86
|
+
| **Razón** | 1 línea de racional o puntero (análisis, ADR, supuesto del Bloque 4) | Aquí vive lo que "conciso" echó del enunciado |
|
|
87
|
+
| **Riesgo** | alto/medio/bajo + por qué | Alimenta la priorización del plan |
|
|
88
|
+
| **Estado** | `PENDIENTE → definido → aprobado (gate G1) → verificado (gate G4) → borrado` | Mapa del ciclo PSD/PSR/Definido/Aprobado/Verificado/Borrado clásico; REQs `PENDIENTE` bloquean el cierre de la discusión |
|
|
89
|
+
|
|
90
|
+
## Jerarquía de verificación (al declarar CÓMO se verificará cada REQ)
|
|
91
|
+
|
|
92
|
+
**Inspección** (mirar/medir el artefacto) < **demostración** (observar la
|
|
93
|
+
operación con instrumentación mínima — p. ej. medir MTTR reparando fallas
|
|
94
|
+
inducidas) < **prueba** (instrumentada por completo — la más confiable y la
|
|
95
|
+
más cara) — con **análisis** como soporte barato (modelos validados contra
|
|
96
|
+
pruebas previas). Elegir el método MÁS BARATO que realmente verifique el
|
|
97
|
+
REQ; declarar el método junto al criterio de aceptación.
|
|
98
|
+
|
|
99
|
+
## Dos escalas de priorización (usar una, explícita)
|
|
100
|
+
|
|
101
|
+
- **Alto / Medio / Bajo** — crítico de misión para la próxima liberación /
|
|
102
|
+
necesario eventualmente / mejora si los recursos lo permiten.
|
|
103
|
+
- **Esencial / Condicional / Opcional** — el producto no es aceptable sin él /
|
|
104
|
+
mejora pero el producto es aceptable sin ella / puede o no valer la pena.
|
|
105
|
+
- MoSCoW (del PRD) mapea: Must≈Esencial, Should/Could≈Condicional,
|
|
106
|
+
Won't≈fuera. Declarar QUÉ escala se usa; nunca mezclar dos en el mismo doc.
|
|
107
|
+
|
|
108
|
+
## Por qué la elicitación falla (y qué hace el cuestionario al respecto)
|
|
109
|
+
|
|
110
|
+
Restricciones clásicas que el entrevistador debe asumir como default:
|
|
111
|
+
**conocimiento tácito** (la gente no sabe describir lo que hace — pedir
|
|
112
|
+
ejemplos concretos, no definiciones), **distribución del conocimiento**
|
|
113
|
+
(fuentes múltiples en conflicto — los conflictos se registran como decisiones
|
|
114
|
+
del Bloque 4, no se resuelven en silencio), **observación limitada** y
|
|
115
|
+
**parcialidad** (el resultado afecta al informante). Es la razón por la que
|
|
116
|
+
`discutir-fase` pregunta supuestos explícitos y registra decisiones con
|
|
117
|
+
estado en vez de asumir consenso.
|
|
118
|
+
|
|
119
|
+
## Cuándo NO cargar
|
|
120
|
+
|
|
121
|
+
- REQs ya congelados con plan aprobado (gate G1) — re-litigar el REQ ahí es
|
|
122
|
+
cambio de scope: pasa por re-planificación, no por este checklist.
|
|
123
|
+
- Tareas técnicas triviales sin REQs formales (fix puntual, typo).
|
|
124
|
+
- Verificación post-implementación — eso es `/swl:verificar` (G4).
|
|
125
|
+
|
|
126
|
+
## Gotchas / Errores comunes no obvios
|
|
127
|
+
|
|
128
|
+
- **Checklist aplicado al documento y no al requerimiento**: las 8
|
|
129
|
+
características se evalúan POR REQ individual; un CONTEXTO.md "en general
|
|
130
|
+
claro" puede contener 2 REQs ambiguos que revientan la fase.
|
|
131
|
+
- **"Verificable" confundido con "tiene test"**: verificable es una propiedad
|
|
132
|
+
del ENUNCIADO (términos mensurables), previa al test. G4 valida que el test
|
|
133
|
+
exista; este skill valida que el enunciado sea testeable.
|
|
134
|
+
- **Racional dentro del enunciado**: si el REQ explica por qué, mezcla dos
|
|
135
|
+
atributos — mover el porqué a `Razón` y dejar el enunciado conciso.
|
|
136
|
+
- **Funcional "verificado" directamente**: un funcional sin desempeños
|
|
137
|
+
asociados se "verifica" con opinión. Todo funcional no trivial necesita al
|
|
138
|
+
menos un desempeño cuantitativo asociado.
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
**Origen**: investigación académica de Saúl Wade, *"Ingeniería de
|
|
143
|
+
requerimientos"* (Wade Inc., ~2003; referencias [ZAVE94] y [RE'01 CfP]),
|
|
144
|
+
absorbida al sistema el 2026-07-08 (v2.5.1). El documento fuente vive en
|
|
145
|
+
`temp/` del repo madre (material de referencia, no distribuido); este skill
|
|
146
|
+
es su destilado operativo con el mapeo a los mecanismos SWL (gates G1/G4,
|
|
147
|
+
cuestionario de discutir-fase, MoSCoW del PRD).
|