@saulwade/swl-ses 2.3.0 → 2.4.1
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 +241 -199
- package/README.md +597 -597
- package/agentes/_intent-spec.md +73 -73
- package/agentes/_propose-step.md +90 -90
- package/agentes/accesibilidad-wcag-swl.md +2 -2
- package/agentes/arquitecto-swl.md +2 -2
- package/agentes/auto-evolucion-swl.md +2 -2
- package/agentes/backend-api-swl.md +2 -2
- package/agentes/backend-csharp-swl.md +2 -2
- package/agentes/backend-go-swl.md +2 -2
- package/agentes/backend-java-swl.md +2 -2
- package/agentes/backend-node-swl.md +2 -2
- package/agentes/backend-python-swl.md +2 -2
- package/agentes/backend-rust-swl.md +2 -2
- package/agentes/backend-workers-swl.md +2 -2
- package/agentes/cloud-infra-swl.md +2 -2
- package/agentes/consolidador-swl.md +2 -2
- package/agentes/datos-swl.md +2 -2
- package/agentes/depurador-swl.md +2 -2
- package/agentes/devops-ci-swl.md +2 -2
- package/agentes/disenador-ui-swl.md +2 -2
- package/agentes/documentador-swl.md +2 -2
- package/agentes/frontend-angular-swl.md +2 -2
- package/agentes/frontend-css-swl.md +2 -2
- package/agentes/frontend-react-swl.md +2 -2
- package/agentes/frontend-swl.md +2 -2
- package/agentes/frontend-tailwind-swl.md +2 -2
- package/agentes/gh-fix-ci-swl.md +275 -275
- package/agentes/implementador-swl.md +2 -2
- package/agentes/investigador-swl.md +2 -2
- package/agentes/investigador-ux-swl.md +2 -2
- package/agentes/llm-apps-swl.md +2 -2
- package/agentes/migrador-swl.md +2 -2
- package/agentes/mobile-android-swl.md +2 -2
- package/agentes/mobile-cross-swl.md +2 -2
- package/agentes/mobile-ios-swl.md +2 -2
- package/agentes/mobile-testing-swl.md +2 -2
- package/agentes/nemesis-auditor-swl.md +1 -1
- package/agentes/notificador-swl.md +2 -2
- package/agentes/observabilidad-swl.md +2 -2
- package/agentes/orquestador-swl.md +41 -14
- package/agentes/pagos-swl.md +2 -2
- package/agentes/perfilador-usuario-swl.md +2 -2
- package/agentes/planificador-swl.md +2 -2
- package/agentes/producto-prd-swl.md +2 -2
- package/agentes/red-team-swl.md +218 -218
- package/agentes/release-manager-swl.md +2 -2
- package/agentes/rendimiento-swl.md +2 -2
- package/agentes/resolutor-build-swl.md +2 -2
- package/agentes/revisor-angular-swl.md +2 -2
- package/agentes/revisor-codigo-swl.md +36 -3
- package/agentes/revisor-csharp-swl.md +2 -2
- package/agentes/revisor-go-swl.md +2 -2
- package/agentes/revisor-java-swl.md +2 -2
- package/agentes/revisor-kotlin-swl.md +2 -2
- package/agentes/revisor-nextjs-swl.md +2 -2
- package/agentes/revisor-php-swl.md +2 -2
- package/agentes/revisor-react-swl.md +2 -2
- package/agentes/revisor-rust-swl.md +2 -2
- package/agentes/revisor-seguridad-swl.md +2 -2
- package/agentes/revisor-swift-swl.md +2 -2
- package/agentes/revisor-typescript-swl.md +2 -2
- package/agentes/sre-swl.md +2 -2
- package/agentes/tdd-qa-swl.md +2 -2
- package/comandos/swl/briefing.md +119 -119
- package/comandos/swl/contexto.md +0 -2
- package/comandos/swl/contribuir.md +233 -233
- package/comandos/swl/deuda-codigo.md +97 -0
- package/comandos/swl/predecir.md +139 -139
- package/comandos/swl/sesiones.md +1 -1
- package/gateway/agent-executor.js +1 -1
- package/gateway/lib/event-channel.js +191 -191
- package/habilidades/agent-deep-links/SKILL.md +148 -148
- package/habilidades/agentes-como-servicio/SKILL.md +2 -2
- package/habilidades/angular-moderno/SKILL.md +24 -1
- package/habilidades/auto-evolucion-protocolo/SKILL.md +276 -276
- package/habilidades/backend-async-postgres-testing/SKILL.md +215 -215
- package/habilidades/backend-error-design/SKILL.md +221 -221
- package/habilidades/backend-production-resilience/SKILL.md +288 -288
- package/habilidades/benchmark-memoria/SKILL.md +186 -186
- package/habilidades/calidad-anti-patrones-universales/SKILL.md +368 -368
- package/habilidades/calidad-contract-testing/SKILL.md +165 -165
- package/habilidades/calidad-mutation-testing/SKILL.md +170 -170
- package/habilidades/changelog-generator/scripts/parse-commits.js +367 -367
- package/habilidades/checklist-seguridad/recursos/stride-cobertura.md +60 -60
- package/habilidades/contenedores-docker/SKILL.md +3 -1
- package/habilidades/diagrama-arquitectura/assets/template.html +276 -276
- package/habilidades/doubt-driven-review/recursos/EXAMPLES.md +130 -130
- package/habilidades/drift-detection/SKILL.md +179 -179
- package/habilidades/estructura-proyecto-claude/recursos/frontmatter-y-hooks-referencia.md +1 -1
- package/habilidades/estructura-proyecto-claude/recursos/mcp-json-template.json +57 -57
- package/habilidades/eval-framework/SKILL.md +212 -212
- package/habilidades/feynman-auditor-swl/recursos/preguntas-language-agnostic.md +108 -108
- package/habilidades/harness-claude-code/SKILL.md +4 -4
- package/habilidades/harness-claude-code/recursos/disciplina-harness-regla.md +253 -252
- package/habilidades/legacy-code-rescue/SKILL.md +268 -267
- package/habilidades/meta-skills-estandar/SKILL.md +1 -1
- package/habilidades/meta-skills-estandar/recursos/convencion-examples.md +93 -93
- package/habilidades/meta-skills-estandar/recursos/skills-as-agents.md +2 -2
- package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -469
- package/habilidades/perfil-usuario/SKILL.md +200 -200
- package/habilidades/postgresql-experto/SKILL.md +3 -1
- package/habilidades/prevencion-sobreingenieria/SKILL.md +70 -92
- package/habilidades/prevencion-sobreingenieria/recursos/EXAMPLES.md +580 -580
- package/habilidades/prevencion-sobreingenieria/recursos/soluciones-nativas.md +166 -0
- package/habilidades/prevencion-sobreingenieria/recursos/variables-residuales-post-refactor.md +85 -0
- package/habilidades/proceso-ddia-fundamentos/SKILL.md +255 -255
- package/habilidades/proceso-ddia-streaming/SKILL.md +231 -231
- package/habilidades/proceso-debate-adversarial/recursos/personas.md +105 -105
- package/habilidades/proceso-discovery-machote/SKILL.md +157 -157
- package/habilidades/proceso-dynamic-workflows/SKILL.md +138 -138
- 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-intent-engineering/SKILL.md +269 -269
- package/habilidades/proceso-modular-split/SKILL.md +256 -256
- package/habilidades/prompt-engineering/recursos/patrones-avanzados.md +2 -2
- package/habilidades/state-inconsistency-auditor-swl/recursos/coupled-state-patterns.md +147 -147
- package/habilidades/structured-outputs/SKILL.md +2 -2
- 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/swl-dashboard/SKILL.md +2 -2
- package/habilidades/tdd-workflow/recursos/gherkin-bdd.md +111 -111
- package/habilidades/validacion-ci-sistema/recursos/validadores-completos.md +1 -1
- package/habilidades/validacion-ci-sistema/scripts/validar-sistema.sh +1 -1
- package/hooks/audit-trail.js +4 -4
- package/hooks/calidad-pre-commit.js +15 -11
- package/hooks/captura-acciones-post.js +3 -2
- package/hooks/captura-acciones-session.js +3 -2
- package/hooks/ciclo-evolucion-subagente.js +26 -26
- package/hooks/ciclo-evolucion.js +26 -26
- package/hooks/claudemd-bloat-detector.js +161 -161
- package/hooks/claudemd-duplicacion-detector.js +170 -170
- package/hooks/contexto-iteracion.js +145 -144
- package/hooks/contexto-subagente.js +68 -0
- package/hooks/guardrail-modelo.js +14 -4
- package/hooks/inyeccion-contexto.js +12 -12
- package/hooks/lib/agent-routing.js +107 -107
- package/hooks/lib/auto-consolidator.js +335 -335
- package/hooks/lib/autonomia.js +208 -208
- 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-auto-evolucion.js +701 -701
- package/hooks/lib/etapa-metricas.js +388 -388
- package/hooks/lib/etapa-perfil-usuario.js +376 -376
- package/hooks/lib/loop-telemetry.js +321 -321
- package/hooks/lib/merkle-audit.js +96 -96
- package/hooks/lib/model-router.js +2 -2
- package/hooks/lib/propose-step.js +358 -358
- package/hooks/lib/provenance-tracker.js +191 -191
- package/hooks/lib/rate-limit-tracker.js +253 -253
- package/hooks/lib/resource-quota.js +122 -122
- package/hooks/lib/retry-jitter.js +165 -165
- package/hooks/lib/security-net.js +201 -201
- 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/text-similarity.js +241 -241
- package/hooks/lib/token-estimator.js +1 -0
- package/hooks/lib/toon-compressor.js +245 -245
- package/hooks/lib/usage-model.js +1 -1
- package/hooks/registro-turnos.js +210 -209
- package/hooks/session-briefing.js +98 -98
- package/hooks/spec-gate.js +212 -211
- package/hooks/sugerir-contribuir.js +2 -1
- package/hooks/sugerir-regenerar-inventario.js +171 -170
- package/hooks/tdd-gate.js +242 -241
- package/hooks/telemetria-skill-routing.js +100 -100
- package/hooks/validar-formato-post-subagente.js +140 -140
- package/hooks/validar-intent-spec.js +242 -242
- package/hooks/validar-memoria-hook.js +218 -218
- package/hooks/validar-planning-paths.js +134 -134
- 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 +2948 -1964
- package/manifiestos/hook-profiles.json +0 -2
- package/manifiestos/hooks-config.json +469 -477
- package/manifiestos/invariantes-criticos.json +30 -0
- package/manifiestos/modulos.json +1390 -1390
- package/manifiestos/planning-paths.json +44 -44
- package/manifiestos/skills-lock.json +1282 -1282
- package/package.json +93 -93
- package/plantillas/auditor-veto-template.md +105 -105
- package/plantillas/github-workflows/README.md +47 -47
- 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 -371
- package/reglas/accesibilidad.md +10 -10
- package/reglas/analisis-previo-tareas-grandes.md +172 -172
- package/reglas/api-diseno.md +9 -9
- package/reglas/arreglar-al-detectar.md +240 -240
- 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/debatir-antes-de-aceptar.md +158 -158
- package/reglas/fragmentos-compartidos.md +183 -183
- package/reglas/hooks.md +6 -6
- package/reglas/intent-engineering.md +218 -218
- package/reglas/markitdown.md +8 -8
- package/reglas/monitor-ci.md +309 -309
- package/reglas/patrones.md +6 -6
- package/reglas/sesiones-paralelas.md +180 -180
- package/reglas/sin-duplicacion-reglas-globales.md +182 -182
- package/reglas/skills-estandar.md +6 -6
- package/reglas/testing.md +7 -7
- package/reglas/tests-cleanup.md +224 -224
- package/reglas/usar-code-review-graph.md +155 -155
- package/reglas/usar-context7.md +226 -226
- package/reglas/verificar-citas-normativas.md +548 -548
- package/schemas/agent-frontmatter.schema.json +5 -3
- 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/hook-profiles.schema.json +54 -54
- package/schemas/hooks-config.schema.json +89 -89
- package/schemas/modulos.schema.json +38 -38
- package/schemas/perfiles.schema.json +36 -36
- package/schemas/plugin.schema.json +77 -77
- package/schemas/skill-evals.schema.json +119 -119
- package/schemas/skill-frontmatter.schema.json +245 -245
- 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/benchmark-memoria.js +167 -167
- package/scripts/cli/aprobar-plan.js +73 -73
- package/scripts/cli/briefing.js +23 -23
- package/scripts/cli/ciclo-evolucion.js +26 -26
- package/scripts/cli/configurar-ci.js +40 -40
- 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/liberar-fase.js +42 -42
- package/scripts/cli/loop-telemetry.js +125 -125
- package/scripts/cli/mark-evolved.js +56 -56
- 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/propose-step.js +29 -29
- 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/configurar-branch-protection.js +418 -418
- package/scripts/detectar-aprendizajes-duplicados.js +151 -151
- package/scripts/field-report.js +199 -199
- package/scripts/generar-checklists-consolidados.js +273 -273
- package/scripts/generar-matriz-lenguajes.js +271 -271
- package/scripts/instalador.js +4 -1
- package/scripts/lib/artefactos-python.js +43 -43
- package/scripts/lib/auditar-invocaciones-comandos.js +104 -104
- package/scripts/lib/benchmark-metrics.js +160 -160
- package/scripts/lib/budget-enforcer.js +252 -252
- package/scripts/lib/ci-reader.js +193 -193
- package/scripts/lib/claude-sessions.js +1 -0
- package/scripts/lib/configurar-ci.js +380 -380
- package/scripts/lib/contadores-inventario.js +217 -217
- package/scripts/lib/detectar-host-swl.js +175 -175
- 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/diary-entry.js +234 -234
- 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/evidencia-release.js +322 -322
- package/scripts/lib/gate-hooks-requires.js +249 -249
- package/scripts/lib/gate-licencias.js +212 -212
- package/scripts/lib/git-metricas.js +257 -257
- package/scripts/lib/jaccard-similarity.js +98 -98
- package/scripts/lib/longmemeval-runner.js +125 -125
- package/scripts/lib/metricas-dora.js +204 -204
- package/scripts/lib/npm-version.js +261 -261
- package/scripts/lib/paquetes-conocidos.js +50 -50
- package/scripts/lib/plan-lock.js +275 -275
- package/scripts/lib/pr-analyzer.js +399 -399
- package/scripts/lib/preservar-usuario.js +39 -5
- package/scripts/lib/prompt-builder.js +264 -264
- package/scripts/lib/reglas-globales-conocidas.json +180 -180
- package/scripts/lib/resolver-plan-fase.js +37 -37
- package/scripts/lib/rrf-fusion.js +175 -175
- package/scripts/lib/schema-version.js +164 -164
- package/scripts/lib/scoring-instintos.js +277 -277
- package/scripts/lib/semantic-search.js +252 -252
- package/scripts/lib/tool-cost-analyzer.js +1 -0
- package/scripts/limpiar-artefactos-python.js +131 -131
- package/scripts/migrar-csv-a-array.js +168 -168
- package/scripts/migrar-fase-dominio.js +200 -200
- package/scripts/publicar.js +497 -497
- package/scripts/run-eval.js +141 -141
- 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/index.js +162 -162
- 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/inspect.js +173 -173
- package/scripts/tui/pantallas/install-wizard.js +334 -334
- 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/tui/pantallas/uninstall-wizard.js +208 -208
- package/scripts/tui/pantallas/update-wizard.js +232 -232
- package/scripts/tui/pantallas/welcome.js +187 -187
- package/scripts/validar-userland-vacio.js +110 -110
- package/scripts/validar.js +1 -1
- package/scripts/verificar-release.js +51 -0
- package/hooks/lib/context-compressor.js +0 -657
- package/hooks/linea-estado.js +0 -326
- package/hooks/monitor-contexto.js +0 -373
|
@@ -1,233 +1,233 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: swl:contribuir
|
|
3
|
-
description: Contribuye evoluciones de _userland/ al core de swl-ses creando un PR en GitHub. Filtra por dominio (solo ingeniería de software general), evalúa calidad con PluginEval (score ≥80 requerido) y crea el PR vía gh CLI. Flags: --skill=[nombre], --agente=[nombre], --dry-run.
|
|
4
|
-
allowed_tools: ["Read", "Write", "Edit", "Bash", "Glob", "Grep", "Agent"]
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# /swl:contribuir — Contribuir evoluciones al core de swl-ses
|
|
8
|
-
|
|
9
|
-
Eres el facilitador de contribuciones del sistema SWL. Tu responsabilidad es tomar evoluciones que un usuario creó en `_userland/` y, si pasan los filtros de calidad y dominio, crear un Pull Request contra el repositorio oficial de swl-ses.
|
|
10
|
-
|
|
11
|
-
**Principio**: las evoluciones específicas de un proyecto se quedan en `_userland/` — solo evoluciones de dominio general pasan al core. Un skill de "configuración de Stripe para mi SaaS" no sube; un skill de "patrones de testing de APIs de pago" sí.
|
|
12
|
-
|
|
13
|
-
## Cuándo usar este comando
|
|
14
|
-
|
|
15
|
-
- Cuando el usuario evolucionó un agente o skill en `_userland/` y quiere compartirlo con la comunidad
|
|
16
|
-
- Después de `/swl:evolucionar` cuando el cambio aplica a cualquier proyecto de software
|
|
17
|
-
- Cuando se creó un skill nuevo con `/swl:crear-skill` que resuelve un problema general de ingeniería
|
|
18
|
-
|
|
19
|
-
## Prerrequisitos
|
|
20
|
-
|
|
21
|
-
1. **GitHub CLI (`gh`) autenticado** — verificar con `gh auth status`
|
|
22
|
-
2. **Evolución marcada** — el artefacto debe tener `evolved: true` en frontmatter o existir en `_userland/`
|
|
23
|
-
3. **Repositorio swl-ses accesible** — se necesita permiso de fork/PR
|
|
24
|
-
|
|
25
|
-
## Flags soportados
|
|
26
|
-
|
|
27
|
-
```
|
|
28
|
-
--skill=[nombre] Contribuir solo el skill indicado de _userland/habilidades/
|
|
29
|
-
--agente=[nombre] Contribuir solo el agente indicado de _userland/agentes/
|
|
30
|
-
--dry-run Ejecutar validaciones y evaluación sin crear PR
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
Si no se pasa flag, escanea todo `_userland/` buscando candidatos.
|
|
34
|
-
|
|
35
|
-
## Paso 0 — Verificar prerrequisitos
|
|
36
|
-
|
|
37
|
-
Verificar que `gh` está instalado y autenticado:
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
gh auth status
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
Si falla:
|
|
44
|
-
- **No instalado**: indicar al usuario que instale GitHub CLI (ver MANUAL_USO.md § Dependencias externas)
|
|
45
|
-
- **No autenticado**: indicar al usuario que ejecute `! gh auth login` desde el prompt de Claude Code
|
|
46
|
-
|
|
47
|
-
DETENER si `gh auth status` no reporta una cuenta autenticada.
|
|
48
|
-
|
|
49
|
-
## Paso 1 — Escanear candidatos en _userland/
|
|
50
|
-
|
|
51
|
-
Buscar artefactos en `_userland/habilidades/` y `_userland/agentes/`:
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
# Skills con SKILL.md
|
|
55
|
-
for dir in _userland/habilidades/*/; do
|
|
56
|
-
[ -f "$dir/SKILL.md" ] && echo "skill: $(basename $dir)"
|
|
57
|
-
done
|
|
58
|
-
|
|
59
|
-
# Agentes con .md
|
|
60
|
-
for f in _userland/agentes/*.md; do
|
|
61
|
-
[ -f "$f" ] && echo "agente: $(basename $f .md)"
|
|
62
|
-
done
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
Si se pasó `--skill` o `--agente`, filtrar a solo ese candidato.
|
|
66
|
-
|
|
67
|
-
Si no hay candidatos, informar:
|
|
68
|
-
```
|
|
69
|
-
No se encontraron evoluciones en _userland/ para contribuir.
|
|
70
|
-
Usa /swl:evolucionar o /swl:crear-skill para generar evoluciones primero.
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
## Paso 2 — Filtro de dominio
|
|
74
|
-
|
|
75
|
-
Para cada candidato, leer su contenido y evaluar compatibilidad de dominio.
|
|
76
|
-
|
|
77
|
-
**Pregunta de filtro**: *¿Le sirve esto a un ingeniero de software en cualquier proyecto de software?*
|
|
78
|
-
|
|
79
|
-
**Dominios aceptados** (ingeniería de software general):
|
|
80
|
-
- SDLC, backend, frontend, QA, DevOps, seguridad, arquitectura
|
|
81
|
-
- Testing, CI/CD, monitoreo, observabilidad
|
|
82
|
-
- Patrones de diseño, refactoring, revisión de código
|
|
83
|
-
- APIs, bases de datos, infraestructura cloud
|
|
84
|
-
|
|
85
|
-
**Dominios rechazados** (verticales específicos):
|
|
86
|
-
- ML/AI productivo, ciencia de datos, bioinformática
|
|
87
|
-
- Finanzas, contabilidad, legal
|
|
88
|
-
- Dominio de negocio específico del proyecto
|
|
89
|
-
|
|
90
|
-
Para cada candidato rechazado, explicar por qué:
|
|
91
|
-
```
|
|
92
|
-
RECHAZADO: [nombre] — dominio "[dominio detectado]" no es ingeniería de software general.
|
|
93
|
-
Las evoluciones específicas de dominio se mantienen en _userland/ del proyecto.
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
## Paso 3 — Evaluación PluginEval
|
|
97
|
-
|
|
98
|
-
Para cada candidato que pasó el filtro de dominio, ejecutar evaluación de calidad.
|
|
99
|
-
|
|
100
|
-
Cargar:
|
|
101
|
-
```
|
|
102
|
-
Skill("evaluacion-agentes")
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
Ejecutar evaluación completa (2 capas). El score mínimo para contribuir es **80/100** (badge Oro).
|
|
106
|
-
|
|
107
|
-
- **Score ≥ 80**: APROBADO — continuar al siguiente paso
|
|
108
|
-
- **Score 60-79**: RECHAZADO con recomendaciones de mejora
|
|
109
|
-
- **Score < 60**: RECHAZADO — necesita trabajo significativo
|
|
110
|
-
|
|
111
|
-
```
|
|
112
|
-
EVALUACIÓN: [nombre]
|
|
113
|
-
Capa 1 (estática): [N] errores, [N] advertencias
|
|
114
|
-
Capa 2 (semántica): [score]/100 — badge [badge]
|
|
115
|
-
Veredicto: [APROBADO | RECHAZADO]
|
|
116
|
-
[Si rechazado: top 3 mejoras recomendadas]
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
Si `--dry-run`: presentar resultados de evaluación y TERMINAR.
|
|
120
|
-
|
|
121
|
-
## Paso 4 — Preparar contribución
|
|
122
|
-
|
|
123
|
-
Para cada candidato aprobado:
|
|
124
|
-
|
|
125
|
-
1. **Guardar ruta del workspace original** antes de cambiar de directorio:
|
|
126
|
-
```bash
|
|
127
|
-
WORKSPACE_DIR=$(pwd)
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
2. **Crear fork** (si no existe) del repo oficial de swl-ses y obtener el nombre del fork:
|
|
131
|
-
```bash
|
|
132
|
-
gh repo fork saul-wade/swl-ses --clone=false
|
|
133
|
-
FORK_REPO=$(gh api user --jq '.login')/swl-ses
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
3. **Clonar el fork** y crear branch descriptivo:
|
|
137
|
-
```bash
|
|
138
|
-
gh repo clone "$FORK_REPO" /tmp/swl-ses-contrib
|
|
139
|
-
cd /tmp/swl-ses-contrib
|
|
140
|
-
git checkout -b contrib/[tipo]-[nombre]
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
4. **Copiar artefacto** desde el workspace original al clon del fork:
|
|
144
|
-
- Skills: `$WORKSPACE_DIR/_userland/habilidades/[nombre]/` → `habilidades/[nombre]/`
|
|
145
|
-
- Agentes: `$WORKSPACE_DIR/_userland/agentes/[nombre].md` → `agentes/[nombre].md`
|
|
146
|
-
|
|
147
|
-
4. **Ajustar frontmatter** — agregar campos de contribución:
|
|
148
|
-
```yaml
|
|
149
|
-
contributed: true
|
|
150
|
-
contributed-from: "_userland"
|
|
151
|
-
contributed-at: "[fecha YYYY-MM-DD]"
|
|
152
|
-
contributed-by: "[usuario gh]"
|
|
153
|
-
plugineval-score: [score]
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
5. **Registrar en plugin.json** si es necesario
|
|
157
|
-
|
|
158
|
-
## Paso 5 — Crear Pull Request
|
|
159
|
-
|
|
160
|
-
Crear el PR con template estructurado:
|
|
161
|
-
|
|
162
|
-
```bash
|
|
163
|
-
git add .
|
|
164
|
-
git commit -m "contrib([tipo]): agrega [nombre] desde _userland
|
|
165
|
-
|
|
166
|
-
Evaluado con PluginEval: [score]/100 (badge [badge]).
|
|
167
|
-
Dominio: ingeniería de software general.
|
|
168
|
-
|
|
169
|
-
Co-Authored-By: swl-ses <noreply@swl-ses>"
|
|
170
|
-
|
|
171
|
-
git push origin contrib/[tipo]-[nombre]
|
|
172
|
-
|
|
173
|
-
gh pr create \
|
|
174
|
-
--repo saul-wade/swl-ses \
|
|
175
|
-
--title "contrib([tipo]): [nombre]" \
|
|
176
|
-
--body "$(cat <<'EOF'
|
|
177
|
-
## Contribución desde _userland
|
|
178
|
-
|
|
179
|
-
**Tipo**: [skill | agente]
|
|
180
|
-
**Nombre**: [nombre]
|
|
181
|
-
**Dominio**: [dominio detectado]
|
|
182
|
-
**PluginEval**: [score]/100 — badge [badge]
|
|
183
|
-
|
|
184
|
-
## Descripción
|
|
185
|
-
|
|
186
|
-
[Descripción extraída del artefacto]
|
|
187
|
-
|
|
188
|
-
## Evidencia de calidad
|
|
189
|
-
|
|
190
|
-
- Capa 1 (estática): [N] errores, [N] advertencias
|
|
191
|
-
- Capa 2 (semántica): [score]/100
|
|
192
|
-
- Filtro de dominio: APROBADO (ingeniería de software general)
|
|
193
|
-
|
|
194
|
-
## Checklist
|
|
195
|
-
|
|
196
|
-
- [ ] Score PluginEval ≥ 80
|
|
197
|
-
- [ ] Dominio: ingeniería de software general
|
|
198
|
-
- [ ] Sin credenciales hardcodeadas
|
|
199
|
-
- [ ] Frontmatter válido
|
|
200
|
-
- [ ] No duplica skill/agente existente
|
|
201
|
-
|
|
202
|
-
---
|
|
203
|
-
Generado por `/swl:contribuir` — swl-ses v[versión]
|
|
204
|
-
EOF
|
|
205
|
-
)"
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
## Paso 6 — Reporte final
|
|
209
|
-
|
|
210
|
-
```
|
|
211
|
-
=== Contribución completada ===
|
|
212
|
-
|
|
213
|
-
Candidatos escaneados: [N]
|
|
214
|
-
Filtro de dominio: [N] aprobados, [N] rechazados
|
|
215
|
-
Evaluación PluginEval: [N] aprobados (≥80), [N] rechazados
|
|
216
|
-
PRs creados: [N]
|
|
217
|
-
|
|
218
|
-
[Para cada PR creado:]
|
|
219
|
-
→ [nombre]: [URL del PR]
|
|
220
|
-
|
|
221
|
-
Los PRs serán revisados por los mantenedores de swl-ses.
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
## Reglas de comportamiento
|
|
225
|
-
|
|
226
|
-
- NUNCA crear un PR sin que el candidato haya pasado AMBOS filtros (dominio + PluginEval ≥ 80).
|
|
227
|
-
- NUNCA contribuir artefactos que contengan credenciales, tokens o datos del proyecto del usuario.
|
|
228
|
-
- NUNCA modificar artefactos del core existente — solo agregar nuevos.
|
|
229
|
-
- Si el artefacto duplica funcionalidad de uno existente en el core, RECHAZAR y sugerir `/swl:evolucionar` en su lugar.
|
|
230
|
-
- Si `gh auth status` falla, DETENER inmediatamente — no intentar autenticación automática.
|
|
231
|
-
- En `--dry-run`, el reporte debe ser completo y accionable sin crear ningún PR.
|
|
232
|
-
- Los artefactos contribuidos mantienen su autoría original (campo `contributed-by`).
|
|
233
|
-
- SIEMPRE verificar que el nombre del artefacto no colisione con uno existente en el core antes de crear el PR.
|
|
1
|
+
---
|
|
2
|
+
name: swl:contribuir
|
|
3
|
+
description: Contribuye evoluciones de _userland/ al core de swl-ses creando un PR en GitHub. Filtra por dominio (solo ingeniería de software general), evalúa calidad con PluginEval (score ≥80 requerido) y crea el PR vía gh CLI. Flags: --skill=[nombre], --agente=[nombre], --dry-run.
|
|
4
|
+
allowed_tools: ["Read", "Write", "Edit", "Bash", "Glob", "Grep", "Agent"]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /swl:contribuir — Contribuir evoluciones al core de swl-ses
|
|
8
|
+
|
|
9
|
+
Eres el facilitador de contribuciones del sistema SWL. Tu responsabilidad es tomar evoluciones que un usuario creó en `_userland/` y, si pasan los filtros de calidad y dominio, crear un Pull Request contra el repositorio oficial de swl-ses.
|
|
10
|
+
|
|
11
|
+
**Principio**: las evoluciones específicas de un proyecto se quedan en `_userland/` — solo evoluciones de dominio general pasan al core. Un skill de "configuración de Stripe para mi SaaS" no sube; un skill de "patrones de testing de APIs de pago" sí.
|
|
12
|
+
|
|
13
|
+
## Cuándo usar este comando
|
|
14
|
+
|
|
15
|
+
- Cuando el usuario evolucionó un agente o skill en `_userland/` y quiere compartirlo con la comunidad
|
|
16
|
+
- Después de `/swl:evolucionar` cuando el cambio aplica a cualquier proyecto de software
|
|
17
|
+
- Cuando se creó un skill nuevo con `/swl:crear-skill` que resuelve un problema general de ingeniería
|
|
18
|
+
|
|
19
|
+
## Prerrequisitos
|
|
20
|
+
|
|
21
|
+
1. **GitHub CLI (`gh`) autenticado** — verificar con `gh auth status`
|
|
22
|
+
2. **Evolución marcada** — el artefacto debe tener `evolved: true` en frontmatter o existir en `_userland/`
|
|
23
|
+
3. **Repositorio swl-ses accesible** — se necesita permiso de fork/PR
|
|
24
|
+
|
|
25
|
+
## Flags soportados
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
--skill=[nombre] Contribuir solo el skill indicado de _userland/habilidades/
|
|
29
|
+
--agente=[nombre] Contribuir solo el agente indicado de _userland/agentes/
|
|
30
|
+
--dry-run Ejecutar validaciones y evaluación sin crear PR
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Si no se pasa flag, escanea todo `_userland/` buscando candidatos.
|
|
34
|
+
|
|
35
|
+
## Paso 0 — Verificar prerrequisitos
|
|
36
|
+
|
|
37
|
+
Verificar que `gh` está instalado y autenticado:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
gh auth status
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Si falla:
|
|
44
|
+
- **No instalado**: indicar al usuario que instale GitHub CLI (ver MANUAL_USO.md § Dependencias externas)
|
|
45
|
+
- **No autenticado**: indicar al usuario que ejecute `! gh auth login` desde el prompt de Claude Code
|
|
46
|
+
|
|
47
|
+
DETENER si `gh auth status` no reporta una cuenta autenticada.
|
|
48
|
+
|
|
49
|
+
## Paso 1 — Escanear candidatos en _userland/
|
|
50
|
+
|
|
51
|
+
Buscar artefactos en `_userland/habilidades/` y `_userland/agentes/`:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# Skills con SKILL.md
|
|
55
|
+
for dir in _userland/habilidades/*/; do
|
|
56
|
+
[ -f "$dir/SKILL.md" ] && echo "skill: $(basename $dir)"
|
|
57
|
+
done
|
|
58
|
+
|
|
59
|
+
# Agentes con .md
|
|
60
|
+
for f in _userland/agentes/*.md; do
|
|
61
|
+
[ -f "$f" ] && echo "agente: $(basename $f .md)"
|
|
62
|
+
done
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Si se pasó `--skill` o `--agente`, filtrar a solo ese candidato.
|
|
66
|
+
|
|
67
|
+
Si no hay candidatos, informar:
|
|
68
|
+
```
|
|
69
|
+
No se encontraron evoluciones en _userland/ para contribuir.
|
|
70
|
+
Usa /swl:evolucionar o /swl:crear-skill para generar evoluciones primero.
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Paso 2 — Filtro de dominio
|
|
74
|
+
|
|
75
|
+
Para cada candidato, leer su contenido y evaluar compatibilidad de dominio.
|
|
76
|
+
|
|
77
|
+
**Pregunta de filtro**: *¿Le sirve esto a un ingeniero de software en cualquier proyecto de software?*
|
|
78
|
+
|
|
79
|
+
**Dominios aceptados** (ingeniería de software general):
|
|
80
|
+
- SDLC, backend, frontend, QA, DevOps, seguridad, arquitectura
|
|
81
|
+
- Testing, CI/CD, monitoreo, observabilidad
|
|
82
|
+
- Patrones de diseño, refactoring, revisión de código
|
|
83
|
+
- APIs, bases de datos, infraestructura cloud
|
|
84
|
+
|
|
85
|
+
**Dominios rechazados** (verticales específicos):
|
|
86
|
+
- ML/AI productivo, ciencia de datos, bioinformática
|
|
87
|
+
- Finanzas, contabilidad, legal
|
|
88
|
+
- Dominio de negocio específico del proyecto
|
|
89
|
+
|
|
90
|
+
Para cada candidato rechazado, explicar por qué:
|
|
91
|
+
```
|
|
92
|
+
RECHAZADO: [nombre] — dominio "[dominio detectado]" no es ingeniería de software general.
|
|
93
|
+
Las evoluciones específicas de dominio se mantienen en _userland/ del proyecto.
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Paso 3 — Evaluación PluginEval
|
|
97
|
+
|
|
98
|
+
Para cada candidato que pasó el filtro de dominio, ejecutar evaluación de calidad.
|
|
99
|
+
|
|
100
|
+
Cargar:
|
|
101
|
+
```
|
|
102
|
+
Skill("evaluacion-agentes")
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Ejecutar evaluación completa (2 capas). El score mínimo para contribuir es **80/100** (badge Oro).
|
|
106
|
+
|
|
107
|
+
- **Score ≥ 80**: APROBADO — continuar al siguiente paso
|
|
108
|
+
- **Score 60-79**: RECHAZADO con recomendaciones de mejora
|
|
109
|
+
- **Score < 60**: RECHAZADO — necesita trabajo significativo
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
EVALUACIÓN: [nombre]
|
|
113
|
+
Capa 1 (estática): [N] errores, [N] advertencias
|
|
114
|
+
Capa 2 (semántica): [score]/100 — badge [badge]
|
|
115
|
+
Veredicto: [APROBADO | RECHAZADO]
|
|
116
|
+
[Si rechazado: top 3 mejoras recomendadas]
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Si `--dry-run`: presentar resultados de evaluación y TERMINAR.
|
|
120
|
+
|
|
121
|
+
## Paso 4 — Preparar contribución
|
|
122
|
+
|
|
123
|
+
Para cada candidato aprobado:
|
|
124
|
+
|
|
125
|
+
1. **Guardar ruta del workspace original** antes de cambiar de directorio:
|
|
126
|
+
```bash
|
|
127
|
+
WORKSPACE_DIR=$(pwd)
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
2. **Crear fork** (si no existe) del repo oficial de swl-ses y obtener el nombre del fork:
|
|
131
|
+
```bash
|
|
132
|
+
gh repo fork saul-wade/swl-ses --clone=false
|
|
133
|
+
FORK_REPO=$(gh api user --jq '.login')/swl-ses
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
3. **Clonar el fork** y crear branch descriptivo:
|
|
137
|
+
```bash
|
|
138
|
+
gh repo clone "$FORK_REPO" /tmp/swl-ses-contrib
|
|
139
|
+
cd /tmp/swl-ses-contrib
|
|
140
|
+
git checkout -b contrib/[tipo]-[nombre]
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
4. **Copiar artefacto** desde el workspace original al clon del fork:
|
|
144
|
+
- Skills: `$WORKSPACE_DIR/_userland/habilidades/[nombre]/` → `habilidades/[nombre]/`
|
|
145
|
+
- Agentes: `$WORKSPACE_DIR/_userland/agentes/[nombre].md` → `agentes/[nombre].md`
|
|
146
|
+
|
|
147
|
+
4. **Ajustar frontmatter** — agregar campos de contribución:
|
|
148
|
+
```yaml
|
|
149
|
+
contributed: true
|
|
150
|
+
contributed-from: "_userland"
|
|
151
|
+
contributed-at: "[fecha YYYY-MM-DD]"
|
|
152
|
+
contributed-by: "[usuario gh]"
|
|
153
|
+
plugineval-score: [score]
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
5. **Registrar en plugin.json** si es necesario
|
|
157
|
+
|
|
158
|
+
## Paso 5 — Crear Pull Request
|
|
159
|
+
|
|
160
|
+
Crear el PR con template estructurado:
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
git add .
|
|
164
|
+
git commit -m "contrib([tipo]): agrega [nombre] desde _userland
|
|
165
|
+
|
|
166
|
+
Evaluado con PluginEval: [score]/100 (badge [badge]).
|
|
167
|
+
Dominio: ingeniería de software general.
|
|
168
|
+
|
|
169
|
+
Co-Authored-By: swl-ses <noreply@swl-ses>"
|
|
170
|
+
|
|
171
|
+
git push origin contrib/[tipo]-[nombre]
|
|
172
|
+
|
|
173
|
+
gh pr create \
|
|
174
|
+
--repo saul-wade/swl-ses \
|
|
175
|
+
--title "contrib([tipo]): [nombre]" \
|
|
176
|
+
--body "$(cat <<'EOF'
|
|
177
|
+
## Contribución desde _userland
|
|
178
|
+
|
|
179
|
+
**Tipo**: [skill | agente]
|
|
180
|
+
**Nombre**: [nombre]
|
|
181
|
+
**Dominio**: [dominio detectado]
|
|
182
|
+
**PluginEval**: [score]/100 — badge [badge]
|
|
183
|
+
|
|
184
|
+
## Descripción
|
|
185
|
+
|
|
186
|
+
[Descripción extraída del artefacto]
|
|
187
|
+
|
|
188
|
+
## Evidencia de calidad
|
|
189
|
+
|
|
190
|
+
- Capa 1 (estática): [N] errores, [N] advertencias
|
|
191
|
+
- Capa 2 (semántica): [score]/100
|
|
192
|
+
- Filtro de dominio: APROBADO (ingeniería de software general)
|
|
193
|
+
|
|
194
|
+
## Checklist
|
|
195
|
+
|
|
196
|
+
- [ ] Score PluginEval ≥ 80
|
|
197
|
+
- [ ] Dominio: ingeniería de software general
|
|
198
|
+
- [ ] Sin credenciales hardcodeadas
|
|
199
|
+
- [ ] Frontmatter válido
|
|
200
|
+
- [ ] No duplica skill/agente existente
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
Generado por `/swl:contribuir` — swl-ses v[versión]
|
|
204
|
+
EOF
|
|
205
|
+
)"
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## Paso 6 — Reporte final
|
|
209
|
+
|
|
210
|
+
```
|
|
211
|
+
=== Contribución completada ===
|
|
212
|
+
|
|
213
|
+
Candidatos escaneados: [N]
|
|
214
|
+
Filtro de dominio: [N] aprobados, [N] rechazados
|
|
215
|
+
Evaluación PluginEval: [N] aprobados (≥80), [N] rechazados
|
|
216
|
+
PRs creados: [N]
|
|
217
|
+
|
|
218
|
+
[Para cada PR creado:]
|
|
219
|
+
→ [nombre]: [URL del PR]
|
|
220
|
+
|
|
221
|
+
Los PRs serán revisados por los mantenedores de swl-ses.
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
## Reglas de comportamiento
|
|
225
|
+
|
|
226
|
+
- NUNCA crear un PR sin que el candidato haya pasado AMBOS filtros (dominio + PluginEval ≥ 80).
|
|
227
|
+
- NUNCA contribuir artefactos que contengan credenciales, tokens o datos del proyecto del usuario.
|
|
228
|
+
- NUNCA modificar artefactos del core existente — solo agregar nuevos.
|
|
229
|
+
- Si el artefacto duplica funcionalidad de uno existente en el core, RECHAZAR y sugerir `/swl:evolucionar` en su lugar.
|
|
230
|
+
- Si `gh auth status` falla, DETENER inmediatamente — no intentar autenticación automática.
|
|
231
|
+
- En `--dry-run`, el reporte debe ser completo y accionable sin crear ningún PR.
|
|
232
|
+
- Los artefactos contribuidos mantienen su autoría original (campo `contributed-by`).
|
|
233
|
+
- SIEMPRE verificar que el nombre del artefacto no colisione con uno existente en el core antes de crear el PR.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: swl:deuda-codigo
|
|
3
|
+
description: Cosecha los marcadores `simplificado:` del código (simplificaciones deliberadas con techo y trigger de upgrade) hacia un ledger visible, detecta marcadores sin trigger (riesgo de rot) y sincroniza opcionalmente con .planning/DEUDA-TECNICA.md. Cargar cuando el usuario pida "qué simplificamos", "deuda de código", "cosecha los marcadores", o tras una fase que dejó marcadores simplificado:.
|
|
4
|
+
allowed_tools: ["Grep", "Read", "Edit", "Bash"]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /swl:deuda-codigo — Cosecha de simplificaciones deliberadas
|
|
8
|
+
|
|
9
|
+
Todo atajo intencional marcado con `simplificado: <techo>, <trigger>` (convención
|
|
10
|
+
de `Skill("prevencion-sobreingenieria")`, adaptada del patrón `ponytail:` de
|
|
11
|
+
ponytail, MIT) se cosecha aquí en un ledger — para que un "después" no se
|
|
12
|
+
convierta en "nunca" (regla `arreglar-al-detectar.md`).
|
|
13
|
+
|
|
14
|
+
## Uso
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
/swl:deuda-codigo — Reporte en pantalla (no escribe nada)
|
|
18
|
+
/swl:deuda-codigo --sync — Además sincroniza a .planning/DEUDA-TECNICA.md
|
|
19
|
+
/swl:deuda-codigo --owners — Agrega autor por marcador (git blame)
|
|
20
|
+
/swl:deuda-codigo <directorio> — Limita la cosecha a un subárbol
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Paso 1 — Cosechar los marcadores
|
|
24
|
+
|
|
25
|
+
Buscar con Grep (herramienta, no shell) el patrón sobre el árbol del proyecto,
|
|
26
|
+
excluyendo `node_modules`, `.git`, `dist`, `build`, `temp`, `respositorios-git`:
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
Grep(pattern: "(#|//|--|<!--|/\\*)\\s?simplificado:", output_mode: "content", -n: true)
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Cada hit es una fila del ledger. El prefijo de comentario evita capturar prosa
|
|
33
|
+
que solo menciona la convención (como este archivo o el SKILL.md).
|
|
34
|
+
|
|
35
|
+
## Paso 2 — Parsear techo y trigger
|
|
36
|
+
|
|
37
|
+
La convención es `simplificado: <techo>, <trigger de upgrade>`:
|
|
38
|
+
|
|
39
|
+
- **techo**: el límite conocido del atajo (lock global, O(n²), heurística naive).
|
|
40
|
+
- **trigger**: la condición observable que obliga el upgrade ("si throughput > X",
|
|
41
|
+
"cuando haya un segundo consumidor", "antes del primer deploy productivo").
|
|
42
|
+
|
|
43
|
+
Si el texto tras `simplificado:` no contiene una condición observable,
|
|
44
|
+
etiquetar la fila `sin-trigger` — esos son los que rotan en silencio.
|
|
45
|
+
|
|
46
|
+
## Paso 3 — Reporte
|
|
47
|
+
|
|
48
|
+
Una fila por marcador, agrupado por archivo:
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
## Ledger de simplificaciones — [fecha]
|
|
52
|
+
|
|
53
|
+
| Ubicación | Qué se simplificó | Techo | Trigger de upgrade | Estado |
|
|
54
|
+
|---|---|---|---|---|
|
|
55
|
+
| src/locks.py:42 | lock global | contención con N workers | throughput > 500 rps | ok |
|
|
56
|
+
| api/cache.js:17 | TTL fijo 5 min | staleness | (ninguno) | sin-trigger |
|
|
57
|
+
|
|
58
|
+
Total: N marcadores, M sin trigger.
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Con `--owners`: agregar columna con `git blame -L<línea>,<línea> --porcelain <archivo>`
|
|
62
|
+
(solo el autor, una llamada por fila).
|
|
63
|
+
|
|
64
|
+
Si no hay marcadores: `Sin deuda simplificado:. Ledger limpio.` — y terminar.
|
|
65
|
+
|
|
66
|
+
## Paso 4 — Sincronizar al ledger formal (solo con --sync)
|
|
67
|
+
|
|
68
|
+
Para cada marcador `sin-trigger` o de techo relevante que no exista ya en
|
|
69
|
+
`.planning/DEUDA-TECNICA.md`:
|
|
70
|
+
|
|
71
|
+
1. Leer el ledger actual y verificar duplicados por ubicación (`archivo:línea`).
|
|
72
|
+
2. Agregar entrada `### DT-SIMPLIFICADO-<n>` con: ubicación, techo, trigger
|
|
73
|
+
(o `PENDIENTE DE TRIGGER` marcado como acción requerida), fecha de cosecha.
|
|
74
|
+
3. Los `sin-trigger` NO se sincronizan como DT válidas hasta tener trigger:
|
|
75
|
+
reportarlos al usuario como acción inmediata — una DT sin trigger verificable
|
|
76
|
+
viola `arreglar-al-detectar.md § DT formal`.
|
|
77
|
+
|
|
78
|
+
NUNCA borrar ni editar los marcadores del código durante la cosecha: el
|
|
79
|
+
comando lee y reporta; el código solo cambia cuando el trigger se cumple y
|
|
80
|
+
el upgrade se implementa.
|
|
81
|
+
|
|
82
|
+
## Cuándo usarlo
|
|
83
|
+
|
|
84
|
+
- Cierre de fase (`/swl:verificar` lo puede invocar como pasada complementaria).
|
|
85
|
+
- Antes de un release: los `sin-trigger` son bloqueo blando (reportar en el gate).
|
|
86
|
+
- Auditorías de deuda: junto con la sección "Sobre-ingeniería" de `/swl:revisar`.
|
|
87
|
+
|
|
88
|
+
## Gotchas
|
|
89
|
+
|
|
90
|
+
- **Marcadores en fixtures o docs**: los hits dentro de `tests/fixtures/`,
|
|
91
|
+
ejemplos de skills o este propio comando son material de referencia, no deuda
|
|
92
|
+
— excluirlos del conteo y decir cuántos se excluyeron (sin caps silenciosos).
|
|
93
|
+
- **Prefijos de comentario por stack**: el patrón cubre `#` (Python/shell),
|
|
94
|
+
`//` (JS/TS/Go/Rust/C#/Java), `--` (SQL/Lua), `<!--` (HTML/MD) y `/*` (CSS/C).
|
|
95
|
+
Si el proyecto usa otro prefijo, agregarlo al patrón y decirlo en el reporte.
|
|
96
|
+
- **`git blame` sobre archivos renombrados**: usar `git blame -M -C` si el
|
|
97
|
+
autor aparece como el commit del rename.
|