@saulwade/swl-ses 1.5.2 → 1.6.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 +32 -61
- package/README.md +20 -3
- package/agentes/datos-swl.md +1 -1
- package/agentes/frontend-angular-swl.md +7 -7
- package/agentes/frontend-css-swl.md +4 -4
- package/agentes/frontend-react-swl.md +7 -7
- package/agentes/frontend-swl.md +9 -9
- package/agentes/frontend-tailwind-swl.md +4 -4
- package/agentes/rendimiento-swl.md +2 -2
- package/bin/swl-ses.js +49 -7
- package/comandos/swl/brainstorm.md +1 -0
- package/comandos/swl/compactar.md +1 -1
- package/comandos/swl/discutir-fase.md +15 -1
- package/comandos/swl/mapear-codebase.md +1 -1
- package/comandos/swl/nemesis.md +29 -0
- package/comandos/swl/planear-fase.md +2 -2
- package/comandos/swl/verificar.md +4 -4
- package/habilidades/aprendizaje-continuo/SKILL.md +7 -1
- package/habilidades/diseno-herramientas-agente/SKILL.md +1 -0
- package/habilidades/doc-sync/SKILL.md +441 -1
- package/habilidades/doubt-driven-review/SKILL.md +177 -171
- package/habilidades/feynman-auditor-swl/SKILL.md +129 -123
- package/habilidades/infra-github-actions/SKILL.md +172 -166
- package/habilidades/meta-skills-estandar/recursos/skills-as-agents.md +163 -163
- package/habilidades/nemesis-evaluacion-json/SKILL.md +5 -0
- package/habilidades/nemesis-redistribuir/SKILL.md +5 -0
- package/habilidades/node-experto/SKILL.md +197 -3
- package/habilidades/prevencion-racionalizacion/SKILL.md +1 -0
- package/habilidades/privacy-memoria/SKILL.md +1 -0
- package/habilidades/sre-patrones/SKILL.md +1 -1
- package/habilidades/state-inconsistency-auditor-swl/SKILL.md +172 -166
- package/habilidades/tdd-workflow/SKILL.md +178 -3
- package/habilidades/verificacion-evidencia/SKILL.md +1 -0
- package/habilidades/web-fetcher-routing/SKILL.md +81 -75
- package/habilidades/workflow-claude-code/SKILL.md +2 -2
- package/hooks/extraccion-aprendizajes.js +11 -0
- package/manifiestos/modulos.json +2 -1
- package/manifiestos/skills-lock.json +1142 -1114
- package/package.json +7 -4
- package/plugin.json +4 -2
- package/reglas/auditorias-documentales-estructurales.md +205 -0
- package/schemas/agent-frontmatter.schema.json +1 -1
- package/scripts/desinstalar.js +105 -24
- package/scripts/generar-inventario.js +450 -420
- package/scripts/instalador.js +55 -4
- package/scripts/lib/parsear-opciones.js +3 -0
- package/scripts/lib/ui.js +148 -22
- package/scripts/tui/componentes/selector-multi.js +189 -0
- package/scripts/tui/componentes/selector-unico.js +158 -0
- package/scripts/tui/ejecutores.js +375 -0
- package/scripts/tui/index.js +162 -0
- package/scripts/tui/lib/colores.js +129 -0
- package/scripts/tui/lib/render.js +264 -0
- package/scripts/tui/lib/teclas.js +113 -0
- package/scripts/tui/pantallas/inspect.js +173 -0
- package/scripts/tui/pantallas/install-wizard.js +334 -0
- package/scripts/tui/pantallas/menu-principal.js +52 -0
- package/scripts/tui/pantallas/progreso.js +274 -0
- package/scripts/tui/pantallas/resumen.js +132 -0
- package/scripts/tui/pantallas/uninstall-wizard.js +208 -0
- package/scripts/tui/pantallas/update-wizard.js +232 -0
- package/scripts/tui/pantallas/welcome.js +187 -0
- package/scripts/verificar-docs-vs-codigo.js +654 -0
- package/scripts/verificar-evolucion.js +19 -3
|
@@ -1,166 +1,172 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: infra-github-actions
|
|
3
|
-
description: >
|
|
4
|
-
GitHub Actions CI/CD para proyectos que usan swl-ses. Cubre los tres workflows
|
|
5
|
-
distribuidos (swl-security.yml, swl-ci.yml, release-please.yml), setup del secret
|
|
6
|
-
CLAUDE_API_KEY, branch protection y troubleshooting. Cargar cuando se configura
|
|
7
|
-
CI/CD con GitHub Actions en un proyecto donde está instalado swl-ses.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
**
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
con
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
Fix:
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
1
|
+
---
|
|
2
|
+
name: infra-github-actions
|
|
3
|
+
description: >
|
|
4
|
+
GitHub Actions CI/CD para proyectos que usan swl-ses. Cubre los tres workflows
|
|
5
|
+
distribuidos (swl-security.yml, swl-ci.yml, release-please.yml), setup del secret
|
|
6
|
+
CLAUDE_API_KEY, branch protection y troubleshooting. Cargar cuando se configura
|
|
7
|
+
CI/CD con GitHub Actions en un proyecto donde está instalado swl-ses.
|
|
8
|
+
version: "1.0.0"
|
|
9
|
+
exclusiones:
|
|
10
|
+
- "No cargar para otros sistemas CI/CD (GitLab CI, CircleCI, Jenkins) — este skill cubre solo GitHub Actions; para GitLab usar el workflow YAML estándar de GitLab."
|
|
11
|
+
- "No cargar para configuración de pipelines internos del repo swl-ses — esos están en .github/workflows/ y no son distribuibles a usuarios."
|
|
12
|
+
- "No cargar para troubleshooting de runners self-hosted — este skill asume GitHub-hosted runners; runners propios requieren guía aparte."
|
|
13
|
+
- "No cargar para definir nuevos workflows desde cero sin relación con swl-security/swl-ci/release-please — para workflows custom usar la documentación oficial de GitHub Actions."
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# infra-github-actions — GitHub Actions con swl-ses
|
|
17
|
+
|
|
18
|
+
## Cuándo cargar
|
|
19
|
+
|
|
20
|
+
- Al ejecutar `/swl:configurar-ci init` y necesitar guía de setup
|
|
21
|
+
- Al depurar un workflow que no dispara o falla por API key
|
|
22
|
+
- Al configurar branch protection en el proyecto
|
|
23
|
+
- Al decidir si adoptar release-please vs el flujo manual actual
|
|
24
|
+
|
|
25
|
+
## Cuándo NO cargar
|
|
26
|
+
|
|
27
|
+
- El proyecto usa Azure DevOps Pipelines o GitLab CI — esos tienen su propia configuración
|
|
28
|
+
- El objetivo es Kubernetes, Terraform o infraestructura cloud (cargar `kubernetes-orquestacion` o `terraform-experto`)
|
|
29
|
+
- La tarea es solo correr tests localmente sin CI
|
|
30
|
+
- El proyecto no usa GitHub como repositorio
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Workflows distribuidos por swl-ses
|
|
35
|
+
|
|
36
|
+
| Archivo | Propósito | Secrets requeridos |
|
|
37
|
+
|---------|-----------|-------------------|
|
|
38
|
+
| `swl-security.yml` | Revisión semántica de seguridad con Claude en cada PR | `CLAUDE_API_KEY` |
|
|
39
|
+
| `swl-ci.yml` | Lint + tests en push y PRs. Node 22+24, Python/Rust/Go comentados | Ninguno |
|
|
40
|
+
| `release-please.yml` | Release PR automático + tag + GitHub Release | Ninguno (`GITHUB_TOKEN` automático) |
|
|
41
|
+
|
|
42
|
+
Instalación con: `/swl:configurar-ci init`
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Reglas obligatorias
|
|
47
|
+
|
|
48
|
+
**NUNCA** commitear API keys en código ni en archivos de workflow.
|
|
49
|
+
Todo secret va en GitHub Settings → Secrets and variables → Actions.
|
|
50
|
+
|
|
51
|
+
**Permisos mínimos siempre**: declarar solo `contents: read` y `pull-requests: write`
|
|
52
|
+
en el nivel del workflow. Nunca `permissions: write-all`.
|
|
53
|
+
|
|
54
|
+
**Los workflows de forks externos no reciben secrets** por diseño de GitHub.
|
|
55
|
+
La revisión de seguridad con Claude solo funciona en PRs desde ramas del mismo repo,
|
|
56
|
+
no desde repos forked. Es un comportamiento de GitHub, no un bug.
|
|
57
|
+
|
|
58
|
+
**No hardcodear nombres de rama** más allá de `main`. Si el proyecto usa otra rama
|
|
59
|
+
por defecto, editar el `on: push: branches` en los workflows copiados.
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Setup de CLAUDE_API_KEY
|
|
64
|
+
|
|
65
|
+
1. Ir a https://console.anthropic.com y crear o copiar la API key
|
|
66
|
+
2. En GitHub: Settings → Secrets and variables → Actions → New repository secret
|
|
67
|
+
- Nombre: `CLAUDE_API_KEY`
|
|
68
|
+
- Valor: la API key
|
|
69
|
+
3. La key necesita permisos tanto para Claude API como para Claude Code
|
|
70
|
+
|
|
71
|
+
Verificar con gh CLI si el secret ya existe:
|
|
72
|
+
```bash
|
|
73
|
+
gh secret list | grep CLAUDE_API_KEY
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Para configurar vía CLI (valor desde stdin, no queda en historial):
|
|
77
|
+
```bash
|
|
78
|
+
gh secret set CLAUDE_API_KEY
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Branch protection
|
|
84
|
+
|
|
85
|
+
Aplicar después de tener CI funcionando. El script del repo swl-ses:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
# Ver qué haría sin aplicar cambios
|
|
89
|
+
node scripts/configurar-branch-protection.js --dry-run
|
|
90
|
+
|
|
91
|
+
# Aplicar
|
|
92
|
+
node scripts/configurar-branch-protection.js
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Requiere `gh` CLI autenticado y permisos de admin en el repositorio.
|
|
96
|
+
|
|
97
|
+
Configura: require PR, status checks (`test (22)`, `test (24)`, `smoke`),
|
|
98
|
+
1 approval, bloquea force-push y deletions.
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Adoptar release-please (opt-in)
|
|
103
|
+
|
|
104
|
+
Ver `docs/RELEASE-PLEASE-MIGRATION.md` para comparativa completa.
|
|
105
|
+
|
|
106
|
+
El flujo actual del repo swl-ses usa `scripts/publicar.js` (manual). release-please
|
|
107
|
+
es una alternativa automática viable para proyectos de usuarios.
|
|
108
|
+
|
|
109
|
+
Instalar:
|
|
110
|
+
```
|
|
111
|
+
/swl:configurar-ci --with-release-please
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Una vez activo, el flujo es:
|
|
115
|
+
1. Hacer merge de commits convencionales a main
|
|
116
|
+
2. release-please abre un "Release PR" automático con bump de versión y CHANGELOG
|
|
117
|
+
3. Al mergear ese PR → tag git + GitHub Release creado automáticamente
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Gotchas / Errores comunes no obvios
|
|
122
|
+
|
|
123
|
+
**GitHub Free + repo privado → 403 en branch protection Y Rulesets**: tanto el endpoint legacy
|
|
124
|
+
`/repos/.../branches/{}/protection` como el endpoint moderno `/repos/.../rulesets` requieren
|
|
125
|
+
**plan de pago** en repos privados (HTTP 403 "Upgrade to GitHub Pro or make this repository public"
|
|
126
|
+
en ambos). Mi documentación inicial afirmó incorrectamente que Rulesets era gratis para repos
|
|
127
|
+
privados Free — verificación empírica posterior confirmó que NO. Ambos endpoints están bloqueados.
|
|
128
|
+
|
|
129
|
+
Planes que destraban la feature en privado:
|
|
130
|
+
- **Pro** ($4/mes): aplica a repos en cuenta personal del titular Pro.
|
|
131
|
+
- **Team** ($4/usuario/mes): aplica solo a repos **de la organización** que paga Team. NO aplica
|
|
132
|
+
a repos en la cuenta personal del admin de la org. Para que Team aplique al repo, transferirlo:
|
|
133
|
+
`gh repo transfer cuenta-personal/repo --new-owner org`.
|
|
134
|
+
|
|
135
|
+
Sin plan de pago y manteniendo repo privado, las opciones son: pre-push hook local
|
|
136
|
+
(bypasseable con `--no-verify`) y workflow advisory (no bloquea push, crea issue post-hoc).
|
|
137
|
+
|
|
138
|
+
**Push directo a main bloqueado tras activar branch protection**: si configuraste
|
|
139
|
+
branch protection antes de que tu usuario tuviera al menos un PR mergeado con los
|
|
140
|
+
status checks pasando, el repo puede quedar en estado donde nadie puede mergear.
|
|
141
|
+
Causa: GitHub verifica los status checks declarados antes de permitir el merge; si
|
|
142
|
+
los checks no han corrido en el branch, el botón de merge queda bloqueado.
|
|
143
|
+
Fix: crear una rama temporal con un cambio trivial, abrir PR, dejar que los checks
|
|
144
|
+
corran, y mergear. Luego ya funciona el flujo normal.
|
|
145
|
+
|
|
146
|
+
**GITHUB_TOKEN no puede aprobar su propio PR** al usar release-please: release-please
|
|
147
|
+
crea un Release PR con el GITHUB_TOKEN del bot — ese mismo token no puede aprobarlo
|
|
148
|
+
si el repo requiere al menos 1 approval humano. Causa: GitHub bloquea la auto-aprobación
|
|
149
|
+
con el token de Actions por defecto.
|
|
150
|
+
Fix: crear un Personal Access Token (PAT) con scope `repo` y usarlo en el workflow:
|
|
151
|
+
`token: ${{ secrets.MY_RELEASE_TOKEN }}`. O reducir el required approvals a 0 para
|
|
152
|
+
el Release PR (no recomendado en repos con múltiples contribuidores).
|
|
153
|
+
|
|
154
|
+
**`anthropics/claude-code-security-review@main` falla con "API key not set"**: el
|
|
155
|
+
secret `CLAUDE_API_KEY` no está configurado o el nombre no coincide exactamente.
|
|
156
|
+
La action es sensible a mayúsculas — `claude_api_key` (minúsculas) no funciona.
|
|
157
|
+
Fix: verificar con `gh secret list`. El nombre debe ser exactamente `CLAUDE_API_KEY`.
|
|
158
|
+
|
|
159
|
+
**El workflow `swl-ci.yml` pasa localmente pero falla en CI con "lint script not found"**:
|
|
160
|
+
el campo `lint` no está definido en `package.json` del proyecto del usuario. La plantilla
|
|
161
|
+
usa `npm run lint --if-present` precisamente para ser tolerante, pero si el proyecto
|
|
162
|
+
tiene un nombre distinto (ej: `eslint`, `check`) el step se salta silenciosamente.
|
|
163
|
+
Fix: agregar el script `"lint": "..."` en `package.json` o editar el workflow para usar
|
|
164
|
+
el nombre correcto.
|
|
165
|
+
|
|
166
|
+
**release-please genera changelog con commits `chore(release)` del repo padre swl-ses**:
|
|
167
|
+
si el proyecto del usuario adoptó los mensajes de commit de swl-ses que incluyen
|
|
168
|
+
`chore(release): v5.X.Y`, release-please los interpreta como commits de release
|
|
169
|
+
y puede generar bumps incorrectos.
|
|
170
|
+
Fix: usar mensajes de commit convencionales estándar para el proyecto del usuario,
|
|
171
|
+
separados del estilo de swl-ses. Los prefijos `feat:`, `fix:`, `chore:` sin el
|
|
172
|
+
patrón `(release): vX.Y.Z` no causan conflicto.
|