@saulwade/swl-ses 1.0.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 +238 -0
- package/README.md +560 -0
- package/_userland/agentes/.gitkeep +0 -0
- package/_userland/habilidades/.gitkeep +0 -0
- package/agentes/.evolved.json +9 -0
- package/agentes/accesibilidad-wcag-swl.md +692 -0
- package/agentes/arquitecto-swl.md +238 -0
- package/agentes/auto-evolucion-swl.md +854 -0
- package/agentes/backend-api-swl.md +470 -0
- package/agentes/backend-csharp-swl.md +418 -0
- package/agentes/backend-go-swl.md +388 -0
- package/agentes/backend-java-swl.md +279 -0
- package/agentes/backend-node-swl.md +477 -0
- package/agentes/backend-python-swl.md +608 -0
- package/agentes/backend-rust-swl.md +362 -0
- package/agentes/backend-workers-swl.md +480 -0
- package/agentes/cloud-infra-swl.md +485 -0
- package/agentes/consolidador-swl.md +539 -0
- package/agentes/datos-swl.md +584 -0
- package/agentes/depurador-swl.md +349 -0
- package/agentes/devops-ci-swl.md +374 -0
- package/agentes/disenador-ui-swl.md +558 -0
- package/agentes/documentador-swl.md +343 -0
- package/agentes/evals/arquitecto-swl.evals.json +56 -0
- package/agentes/evals/auto-evolucion-swl.evals.json +68 -0
- package/agentes/evals/implementador-swl.evals.json +56 -0
- package/agentes/evals/orquestador-swl.evals.json +60 -0
- package/agentes/evals/perfilador-usuario-swl.evals.json +60 -0
- package/agentes/evals/red-team-swl.evals.json +59 -0
- package/agentes/evals/revisor-codigo-swl.evals.json +59 -0
- package/agentes/frontend-angular-swl.md +627 -0
- package/agentes/frontend-css-swl.md +720 -0
- package/agentes/frontend-react-swl.md +696 -0
- package/agentes/frontend-swl.md +500 -0
- package/agentes/frontend-tailwind-swl.md +830 -0
- package/agentes/implementador-swl.md +328 -0
- package/agentes/investigador-swl.md +430 -0
- package/agentes/investigador-ux-swl.md +500 -0
- package/agentes/llm-apps-swl.md +276 -0
- package/agentes/migrador-swl.md +417 -0
- package/agentes/mobile-android-swl.md +509 -0
- package/agentes/mobile-cross-swl.md +539 -0
- package/agentes/mobile-ios-swl.md +500 -0
- package/agentes/mobile-testing-swl.md +300 -0
- package/agentes/notificador-swl.md +916 -0
- package/agentes/observabilidad-swl.md +436 -0
- package/agentes/orquestador-swl.md +884 -0
- package/agentes/pagos-swl.md +283 -0
- package/agentes/perfilador-usuario-swl.md +306 -0
- package/agentes/planificador-swl.md +402 -0
- package/agentes/producto-prd-swl.md +587 -0
- package/agentes/red-team-swl.md +216 -0
- package/agentes/release-manager-swl.md +568 -0
- package/agentes/rendimiento-swl.md +714 -0
- package/agentes/resolutor-build-swl.md +243 -0
- package/agentes/revisor-angular-swl.md +276 -0
- package/agentes/revisor-codigo-swl.md +348 -0
- package/agentes/revisor-csharp-swl.md +262 -0
- package/agentes/revisor-go-swl.md +257 -0
- package/agentes/revisor-java-swl.md +255 -0
- package/agentes/revisor-kotlin-swl.md +271 -0
- package/agentes/revisor-nextjs-swl.md +279 -0
- package/agentes/revisor-php-swl.md +269 -0
- package/agentes/revisor-react-swl.md +276 -0
- package/agentes/revisor-rust-swl.md +344 -0
- package/agentes/revisor-seguridad-swl.md +390 -0
- package/agentes/revisor-swift-swl.md +266 -0
- package/agentes/revisor-typescript-swl.md +344 -0
- package/agentes/sre-swl.md +265 -0
- package/agentes/tdd-qa-swl.md +354 -0
- package/agentes/ux-disenador-swl.md +501 -0
- package/bin/lib/bot-comandos.js +1030 -0
- package/bin/lib/bot-discovery.js +182 -0
- package/bin/lib/bot-git.js +142 -0
- package/bin/swl-ses.js +325 -0
- package/bin/swl-telegram-bot.js +442 -0
- package/bin/swl-telegram-bot.plist +21 -0
- package/bin/swl-telegram-bot.service +14 -0
- package/comandos/swl/.evolved.json +23 -0
- package/comandos/swl/actualizar.md +174 -0
- package/comandos/swl/adoptar-proyecto.md +207 -0
- package/comandos/swl/aprender.md +701 -0
- package/comandos/swl/auditar-deps.md +134 -0
- package/comandos/swl/autoresearch.md +170 -0
- package/comandos/swl/ayuda.md +224 -0
- package/comandos/swl/brainstorm.md +50 -0
- package/comandos/swl/checkpoint.md +330 -0
- package/comandos/swl/compactar.md +283 -0
- package/comandos/swl/configurar-ci.md +227 -0
- package/comandos/swl/contexto.md +112 -0
- package/comandos/swl/contribuir.md +233 -0
- package/comandos/swl/crear-skill.md +292 -0
- package/comandos/swl/cron.md +196 -0
- package/comandos/swl/dashboard.md +146 -0
- package/comandos/swl/discutir-fase.md +230 -0
- package/comandos/swl/ejecutar-fase.md +135 -0
- package/comandos/swl/evaluar-skill.md +487 -0
- package/comandos/swl/evolucion-estado.md +142 -0
- package/comandos/swl/evolucionar.md +259 -0
- package/comandos/swl/exportar-vault.md +189 -0
- package/comandos/swl/gateway.md +158 -0
- package/comandos/swl/inbox.md +116 -0
- package/comandos/swl/instalar.md +220 -0
- package/comandos/swl/instintos.md +86 -0
- package/comandos/swl/mapear-codebase.md +312 -0
- package/comandos/swl/mcp-status.md +175 -0
- package/comandos/swl/metricas.md +270 -0
- package/comandos/swl/modelo.md +102 -0
- package/comandos/swl/notificaciones.md +396 -0
- package/comandos/swl/nuevo-proyecto.md +154 -0
- package/comandos/swl/planear-fase.md +221 -0
- package/comandos/swl/plugins.md +256 -0
- package/comandos/swl/reflect-skills.md +125 -0
- package/comandos/swl/release.md +217 -0
- package/comandos/swl/revisar-impacto.md +206 -0
- package/comandos/swl/revisar.md +330 -0
- package/comandos/swl/salud.md +363 -0
- package/comandos/swl/sesiones.md +200 -0
- package/comandos/swl/skill-search.md +113 -0
- package/comandos/swl/verificar.md +585 -0
- package/comandos/swl/wiki.md +620 -0
- package/contextos/dev.md +32 -0
- package/contextos/research.md +30 -0
- package/contextos/review.md +31 -0
- package/habilidades/accesibilidad-a11y/SKILL.md +201 -0
- package/habilidades/accesibilidad-a11y/evals/evals.json +56 -0
- package/habilidades/accesibilidad-a11y/recursos/ejemplos-y-checklist-completo.md +441 -0
- package/habilidades/agent-browser/SKILL.md +218 -0
- package/habilidades/agentes-como-servicio/SKILL.md +218 -0
- package/habilidades/ai-runtime-security/SKILL.md +273 -0
- package/habilidades/angular-avanzado/SKILL.md +164 -0
- package/habilidades/angular-avanzado/recursos/ejemplos-avanzados.md +219 -0
- package/habilidades/angular-moderno/SKILL.md +186 -0
- package/habilidades/angular-moderno/evals/evals.json +45 -0
- package/habilidades/angular-moderno/recursos/ejemplos-avanzados.md +106 -0
- package/habilidades/api-rest-diseno/SKILL.md +191 -0
- package/habilidades/api-rest-diseno/recursos/openapi-template.yaml +506 -0
- package/habilidades/api-rest-diseno/recursos/referencia-api.md +140 -0
- package/habilidades/aprendizaje-continuo/SKILL.md +151 -0
- package/habilidades/aprendizaje-continuo/evals/evals.json +53 -0
- package/habilidades/aprendizaje-continuo/recursos/referencia-instintos.md +290 -0
- package/habilidades/async-python/SKILL.md +149 -0
- package/habilidades/async-python/evals/evals.json +47 -0
- package/habilidades/async-python/recursos/patrones-y-ejemplos-completos.md +292 -0
- package/habilidades/auth-patrones/.evolved.json +9 -0
- package/habilidades/auth-patrones/SKILL.md +413 -0
- package/habilidades/auth-patrones/recursos/implementaciones-completas.md +229 -0
- package/habilidades/auto-evolucion-protocolo/SKILL.md +276 -0
- package/habilidades/auto-evolucion-protocolo/evals/evals.json +55 -0
- package/habilidades/auto-evolucion-protocolo/recursos/referencia-completa.md +145 -0
- package/habilidades/autoresearch/SKILL.md +268 -0
- package/habilidades/autoresearch/evals/evals.json +41 -0
- package/habilidades/autoresearch/recursos/checklist-template.md +191 -0
- package/habilidades/autoresearch/scripts/calcular-score.js +88 -0
- package/habilidades/azure-cloud/SKILL.md +308 -0
- package/habilidades/azure-cloud/recursos/aks.md +327 -0
- package/habilidades/backend-mcp-servidor/SKILL.md +270 -0
- package/habilidades/backend-production-resilience/SKILL.md +288 -0
- package/habilidades/brainstorming/SKILL.md +295 -0
- package/habilidades/brainstorming/recursos/componentes-html.md +247 -0
- package/habilidades/build-errors-cpp/SKILL.md +270 -0
- package/habilidades/build-errors-csharp/SKILL.md +265 -0
- package/habilidades/build-errors-go/SKILL.md +306 -0
- package/habilidades/build-errors-java/SKILL.md +278 -0
- package/habilidades/build-errors-kotlin/SKILL.md +303 -0
- package/habilidades/build-errors-nextjs/SKILL.md +312 -0
- package/habilidades/build-errors-php/SKILL.md +270 -0
- package/habilidades/build-errors-python/SKILL.md +292 -0
- package/habilidades/build-errors-rust/SKILL.md +284 -0
- package/habilidades/build-errors-swift/SKILL.md +272 -0
- package/habilidades/build-errors-typescript/SKILL.md +369 -0
- package/habilidades/checklist-calidad/SKILL.md +271 -0
- package/habilidades/checklist-calidad/recursos/quality-report-template.md +148 -0
- package/habilidades/checklist-seguridad/SKILL.md +285 -0
- package/habilidades/checkpoints-verificacion/SKILL.md +298 -0
- package/habilidades/checkpoints-verificacion/recursos/checkpoint-templates.md +360 -0
- package/habilidades/ci-cd-pipelines/SKILL.md +157 -0
- package/habilidades/ci-cd-pipelines/recursos/github-actions-template.yaml +403 -0
- package/habilidades/ci-cd-pipelines/recursos/pipelines-completos.md +487 -0
- package/habilidades/cloud-aws/SKILL.md +142 -0
- package/habilidades/cloud-aws/recursos/servicios-aws-referencia.md +321 -0
- package/habilidades/compactacion-contexto/SKILL.md +247 -0
- package/habilidades/contenedores-docker/SKILL.md +137 -0
- package/habilidades/contenedores-docker/recursos/dockerfile-template.dockerfile +160 -0
- package/habilidades/contenedores-docker/recursos/ejemplos-y-configuraciones.md +327 -0
- package/habilidades/context-builder/SKILL.md +170 -0
- package/habilidades/control-profundidad/SKILL.md +128 -0
- package/habilidades/csharp-experto/SKILL.md +322 -0
- package/habilidades/csharp-patrones/SKILL.md +316 -0
- package/habilidades/csharp-testing/SKILL.md +286 -0
- package/habilidades/css-moderno/SKILL.md +166 -0
- package/habilidades/css-moderno/evals/evals.json +43 -0
- package/habilidades/css-moderno/recursos/ejemplos-y-patrones-completos.md +337 -0
- package/habilidades/datos-etl/SKILL.md +129 -0
- package/habilidades/datos-etl/recursos/implementaciones-completas.md +322 -0
- package/habilidades/dbml-experto/SKILL.md +339 -0
- package/habilidades/dbml-experto/evals/evals.json +56 -0
- package/habilidades/dependencias-auditoria/SKILL.md +320 -0
- package/habilidades/deprecacion-migracion/SKILL.md +169 -0
- package/habilidades/deprecacion-migracion/recursos/implementaciones-completas.md +220 -0
- package/habilidades/design-tokens/SKILL.md +158 -0
- package/habilidades/design-tokens/recursos/tokens-y-configuracion.md +363 -0
- package/habilidades/devsecops-pipeline-security/SKILL.md +309 -0
- package/habilidades/diagrama-arquitectura/SKILL.md +165 -0
- package/habilidades/diagrama-arquitectura/assets/template.html +276 -0
- package/habilidades/discutir-fase/SKILL.md +188 -0
- package/habilidades/diseno-herramientas-agente/SKILL.md +199 -0
- package/habilidades/diseno-responsivo/SKILL.md +186 -0
- package/habilidades/diseno-responsivo/recursos/ejemplos-layouts.md +156 -0
- package/habilidades/django-experto/SKILL.md +205 -0
- package/habilidades/django-experto/recursos/async-django.md +390 -0
- package/habilidades/django-experto/recursos/drf-patrones.md +438 -0
- package/habilidades/django-experto/recursos/orm-avanzado.md +382 -0
- package/habilidades/django-experto/recursos/referencia-completa.md +188 -0
- package/habilidades/django-experto/recursos/testing-django.md +415 -0
- package/habilidades/doc-sync/SKILL.md +280 -0
- package/habilidades/drift-detection/SKILL.md +179 -0
- package/habilidades/ejecutar-fase/SKILL.md +468 -0
- package/habilidades/estilo-sin-ai-isms/SKILL.md +775 -0
- package/habilidades/estilo-sin-ai-isms/evals/evals.json +63 -0
- package/habilidades/estilo-sin-ai-isms/scripts/detectar_aiisms.py +500 -0
- package/habilidades/estructura-proyecto-claude/SKILL.md +215 -0
- package/habilidades/estructura-proyecto-claude/recursos/claude-md-template.md +261 -0
- package/habilidades/estructura-proyecto-claude/recursos/configuracion-y-extensiones.md +176 -0
- package/habilidades/estructura-proyecto-claude/recursos/frontmatter-y-hooks-referencia.md +289 -0
- package/habilidades/estructura-proyecto-claude/recursos/mcp-json-template.json +77 -0
- package/habilidades/estructura-proyecto-claude/recursos/variantes-por-stack.md +177 -0
- package/habilidades/evaluacion-agentes/SKILL.md +314 -0
- package/habilidades/event-driven/SKILL.md +153 -0
- package/habilidades/event-driven/recursos/implementaciones-completas.md +423 -0
- package/habilidades/extraccion-documentos/SKILL.md +221 -0
- package/habilidades/extractor-de-aprendizajes/.evolved.json +9 -0
- package/habilidades/extractor-de-aprendizajes/SKILL.md +311 -0
- package/habilidades/extractor-de-aprendizajes/evals/evals.json +55 -0
- package/habilidades/fastapi-experto/SKILL.md +221 -0
- package/habilidades/fastapi-experto/recursos/async-patterns.md +438 -0
- package/habilidades/fastapi-experto/recursos/dependency-injection.md +330 -0
- package/habilidades/fastapi-experto/recursos/referencia-completa.md +79 -0
- package/habilidades/fastapi-experto/recursos/testing-httpx.md +420 -0
- package/habilidades/filament-admin/SKILL.md +290 -0
- package/habilidades/frontend-avanzado/SKILL.md +257 -0
- package/habilidades/frontend-avanzado/recursos/apis-nativas-ejemplos.md +341 -0
- package/habilidades/gcp-cloud/SKILL.md +260 -0
- package/habilidades/gcp-cloud/recursos/gke.md +234 -0
- package/habilidades/gcp-cloud/recursos/terraform-gcp.md +307 -0
- package/habilidades/generacion-mermaid/SKILL.md +229 -0
- package/habilidades/git-worktrees-paralelo/SKILL.md +270 -0
- package/habilidades/go-experto/SKILL.md +305 -0
- package/habilidades/go-patrones/SKILL.md +299 -0
- package/habilidades/go-testing/SKILL.md +291 -0
- package/habilidades/graphql-experto/SKILL.md +323 -0
- package/habilidades/guardrail-semantico/SKILL.md +282 -0
- package/habilidades/harness-claude-code/SKILL.md +299 -0
- package/habilidades/iam-secretos/SKILL.md +265 -0
- package/habilidades/iam-secretos/recursos/implementaciones-completas.md +356 -0
- package/habilidades/infra-github-actions/SKILL.md +166 -0
- package/habilidades/instalar-sistema/.evolved.json +9 -0
- package/habilidades/instalar-sistema/SKILL.md +221 -0
- package/habilidades/java-experto/SKILL.md +290 -0
- package/habilidades/java-patrones/SKILL.md +275 -0
- package/habilidades/java-testing/SKILL.md +288 -0
- package/habilidades/kotlin-compose/SKILL.md +278 -0
- package/habilidades/kotlin-compose/recursos/animaciones-performance.md +93 -0
- package/habilidades/kotlin-experto/SKILL.md +318 -0
- package/habilidades/kotlin-testing/SKILL.md +267 -0
- package/habilidades/kotlin-testing/recursos/testing-avanzado.md +74 -0
- package/habilidades/kubernetes-orquestacion/SKILL.md +152 -0
- package/habilidades/kubernetes-orquestacion/recursos/manifiestos-completos.md +452 -0
- package/habilidades/langchain-langraph/SKILL.md +386 -0
- package/habilidades/langchain-langraph/recursos/evaluacion-rag.md +321 -0
- package/habilidades/langchain-langraph/recursos/rag-maturity-model.md +225 -0
- package/habilidades/langchain-langraph/recursos/vectorstores.md +306 -0
- package/habilidades/legacy-code-rescue/SKILL.md +267 -0
- package/habilidades/likec4-experto/SKILL.md +412 -0
- package/habilidades/likec4-experto/evals/evals.json +69 -0
- package/habilidades/manejo-errores/.evolved.json +9 -0
- package/habilidades/manejo-errores/SKILL.md +407 -0
- package/habilidades/manejo-errores/recursos/implementaciones-completas.md +248 -0
- package/habilidades/mapear-codebase/SKILL.md +275 -0
- package/habilidades/memoria-busqueda/SKILL.md +194 -0
- package/habilidades/memoria-busqueda/evals/evals.json +44 -0
- package/habilidades/meta-skills-estandar/SKILL.md +298 -0
- package/habilidades/meta-skills-estandar/recursos/anti-patrones-y-leyes.md +205 -0
- package/habilidades/meta-skills-estandar/recursos/frameworks-seguridad.md +107 -0
- package/habilidades/meta-skills-estandar/recursos/idiomas-framework.md +60 -0
- package/habilidades/meta-skills-estandar/recursos/skills-as-agents.md +163 -0
- package/habilidades/microservicios/SKILL.md +155 -0
- package/habilidades/microservicios/recursos/patrones-y-ejemplos-completos.md +325 -0
- package/habilidades/mobile-flutter/SKILL.md +199 -0
- package/habilidades/mobile-flutter/recursos/ejemplos-completos.md +319 -0
- package/habilidades/mobile-react-native/SKILL.md +176 -0
- package/habilidades/mobile-react-native/recursos/ejemplos-completos.md +216 -0
- package/habilidades/mongodb-experto/SKILL.md +302 -0
- package/habilidades/monitoring-alertas/SKILL.md +201 -0
- package/habilidades/monitoring-alertas/recursos/instrumentacion-y-alertas.md +301 -0
- package/habilidades/nestjs-experto/SKILL.md +307 -0
- package/habilidades/nestjs-experto/recursos/guards-interceptors.md +339 -0
- package/habilidades/nestjs-experto/recursos/modulos-di.md +287 -0
- package/habilidades/nestjs-experto/recursos/testing-nestjs.md +354 -0
- package/habilidades/nextjs-experto/SKILL.md +335 -0
- package/habilidades/nextjs-patrones/SKILL.md +303 -0
- package/habilidades/nextjs-testing/SKILL.md +331 -0
- package/habilidades/node-experto/.evolved.json +9 -0
- package/habilidades/node-experto/SKILL.md +266 -0
- package/habilidades/node-experto/recursos/patrones-completos.md +283 -0
- package/habilidades/notificaciones-multicanal/SKILL.md +159 -0
- package/habilidades/notificaciones-multicanal/recursos/config-template.json +115 -0
- package/habilidades/notificaciones-multicanal/recursos/configuracion-y-templates.md +303 -0
- package/habilidades/nuevo-proyecto/SKILL.md +204 -0
- package/habilidades/orquestacion-async/SKILL.md +303 -0
- package/habilidades/paid-media-tracking/SKILL.md +269 -0
- package/habilidades/paid-media-tracking/recursos/auditoria-tracking.md +220 -0
- package/habilidades/paid-media-tracking/recursos/google-ads-api.md +215 -0
- package/habilidades/patrones-python/SKILL.md +228 -0
- package/habilidades/patrones-python/evals/evals.json +56 -0
- package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -0
- package/habilidades/patrones-python/recursos/referencia-completa.md +202 -0
- package/habilidades/perfil-usuario/SKILL.md +200 -0
- package/habilidades/perfil-usuario/evals/evals.json +55 -0
- package/habilidades/performance-baseline/SKILL.md +297 -0
- package/habilidades/php-experto/SKILL.md +291 -0
- package/habilidades/php-patrones/SKILL.md +306 -0
- package/habilidades/php-testing/SKILL.md +280 -0
- package/habilidades/planear-fase/SKILL.md +269 -0
- package/habilidades/postgresql-experto/SKILL.md +151 -0
- package/habilidades/postgresql-experto/evals/evals.json +53 -0
- package/habilidades/postgresql-experto/recursos/referencia-completa.md +215 -0
- package/habilidades/prevencion-racionalizacion/SKILL.md +175 -0
- package/habilidades/prevencion-sobreingenieria/SKILL.md +323 -0
- package/habilidades/privacy-memoria/SKILL.md +141 -0
- package/habilidades/privacy-memoria/evals/evals.json +43 -0
- package/habilidades/prompt-engineering/SKILL.md +518 -0
- package/habilidades/prompt-engineering/recursos/patrones-avanzados.md +467 -0
- package/habilidades/rag-arquitectura/SKILL.md +338 -0
- package/habilidades/rails-experto/SKILL.md +237 -0
- package/habilidades/rails-experto/recursos/active-record.md +260 -0
- package/habilidades/rails-experto/recursos/hotwire-turbo.md +293 -0
- package/habilidades/rails-experto/recursos/testing-rspec.md +362 -0
- package/habilidades/react-experto/SKILL.md +209 -0
- package/habilidades/react-experto/evals/evals.json +55 -0
- package/habilidades/react-experto/recursos/patrones-y-ejemplos-completos.md +240 -0
- package/habilidades/react-optimizacion/SKILL.md +174 -0
- package/habilidades/react-optimizacion/recursos/patrones-avanzados.md +138 -0
- package/habilidades/redis-experto/SKILL.md +305 -0
- package/habilidades/release-semver/.evolved.json +9 -0
- package/habilidades/release-semver/SKILL.md +248 -0
- package/habilidades/release-semver/scripts/generar-changelog.sh +238 -0
- package/habilidades/rust-experto/SKILL.md +400 -0
- package/habilidades/rust-patrones/SKILL.md +296 -0
- package/habilidades/rust-testing/SKILL.md +311 -0
- package/habilidades/seguridad-skills-ia/SKILL.md +262 -0
- package/habilidades/sql-optimizacion/SKILL.md +200 -0
- package/habilidades/sql-optimizacion/evals/evals.json +54 -0
- package/habilidades/sql-optimizacion/recursos/patrones-sql-avanzados.md +131 -0
- package/habilidades/sre-patrones/SKILL.md +333 -0
- package/habilidades/sre-patrones/recursos/chaos-engineering.md +241 -0
- package/habilidades/sre-patrones/recursos/oncall-design.md +236 -0
- package/habilidades/stripe-pagos/SKILL.md +550 -0
- package/habilidades/stripe-pagos/recursos/errores-reintentos.md +390 -0
- package/habilidades/stripe-pagos/recursos/stripe-connect.md +290 -0
- package/habilidades/structured-outputs/SKILL.md +343 -0
- package/habilidades/swift-experto/SKILL.md +320 -0
- package/habilidades/swift-experto/recursos/keychain-y-wrappers.md +110 -0
- package/habilidades/swift-patrones/SKILL.md +313 -0
- package/habilidades/swift-patrones/recursos/tca-ejemplo-completo.md +113 -0
- package/habilidades/swift-testing/SKILL.md +254 -0
- package/habilidades/swift-testing/recursos/xcuitest-planes.md +143 -0
- package/habilidades/swl-dashboard/SKILL.md +370 -0
- package/habilidades/swl-markitdown/SKILL.md +285 -0
- package/habilidades/swl-markitdown/evals/evals.json +52 -0
- package/habilidades/swl-revisar-impacto/SKILL.md +233 -0
- package/habilidades/tailwind-experto/SKILL.md +240 -0
- package/habilidades/tailwind-experto/recursos/referencia-completa.md +184 -0
- package/habilidades/tdd-workflow/SKILL.md +293 -0
- package/habilidades/terraform-experto/SKILL.md +321 -0
- package/habilidades/testing-python/SKILL.md +340 -0
- package/habilidades/testing-python/recursos/ejemplos-completos.md +167 -0
- package/habilidades/threat-model-lite/SKILL.md +246 -0
- package/habilidades/tracing-processor/SKILL.md +212 -0
- package/habilidades/tracking-measurement/SKILL.md +239 -0
- package/habilidades/tracking-measurement/recursos/consent-mode.md +231 -0
- package/habilidades/tracking-measurement/recursos/gtm-datalayer.md +216 -0
- package/habilidades/tracking-measurement/recursos/meta-capi.md +262 -0
- package/habilidades/typescript-avanzado/SKILL.md +144 -0
- package/habilidades/typescript-avanzado/evals/evals.json +55 -0
- package/habilidades/typescript-avanzado/recursos/patrones-y-ejemplos-completos.md +298 -0
- package/habilidades/typescript-diagnosticos/SKILL.md +513 -0
- package/habilidades/ux-diseno/SKILL.md +116 -0
- package/habilidades/ux-diseno/evals/evals.json +43 -0
- package/habilidades/ux-diseno/recursos/patrones-ux-referencia.md +214 -0
- package/habilidades/validacion-ci-sistema/SKILL.md +136 -0
- package/habilidades/validacion-ci-sistema/recursos/validadores-completos.md +369 -0
- package/habilidades/validacion-ci-sistema/scripts/validar-sistema.sh +286 -0
- package/habilidades/verificacion-evidencia/SKILL.md +160 -0
- package/habilidades/verificar-trabajo/SKILL.md +303 -0
- package/habilidades/verificar-trabajo/recursos/plantilla-verificacion.md +60 -0
- package/habilidades/wiki-conocimiento/SKILL.md +276 -0
- package/habilidades/wireframes-flujos/SKILL.md +212 -0
- package/habilidades/wireframes-flujos/recursos/referencia-completa.md +192 -0
- package/habilidades/workflow-claude-code/SKILL.md +260 -0
- package/habilidades/workflow-claude-code/recursos/referencia-completa.md +109 -0
- package/hooks/_run-hook.sh +57 -0
- package/hooks/actualizar-perfil-usuario.js +364 -0
- package/hooks/agente-lifecycle.js +71 -0
- package/hooks/aiisms-detector.js +173 -0
- package/hooks/audit-trail.js +204 -0
- package/hooks/auto-background.js +97 -0
- package/hooks/auto-consolidacion.js +178 -0
- package/hooks/auto-evolucion.js +666 -0
- package/hooks/auto-restaurar-settings.js +360 -0
- package/hooks/calidad-pre-commit.js +929 -0
- package/hooks/calidad-typescript.js +511 -0
- package/hooks/captura-feedback-usuario.js +148 -0
- package/hooks/check-update.js +211 -0
- package/hooks/clasificador-mensajes.js +271 -0
- package/hooks/degradacion-instintos.js +272 -0
- package/hooks/escaneo-secretos.js +389 -0
- package/hooks/extraccion-aprendizajes.js +763 -0
- package/hooks/grafo-contexto.js +129 -0
- package/hooks/graph-update.js +67 -0
- package/hooks/guardrail-modelo.js +247 -0
- package/hooks/inbox-aviso.js +75 -0
- package/hooks/inyeccion-contexto.js +246 -0
- package/hooks/lib/abort-registry.js +214 -0
- package/hooks/lib/agent-backend.js +210 -0
- package/hooks/lib/agent-comms.js +263 -0
- package/hooks/lib/agent-issue-codes.js +284 -0
- package/hooks/lib/agent-matcher.js +189 -0
- package/hooks/lib/async-hook-registry.js +252 -0
- package/hooks/lib/atomic-write.js +130 -0
- package/hooks/lib/auto-consolidator.js +335 -0
- package/hooks/lib/canary-skills.js +187 -0
- package/hooks/lib/consolidation-lock.js +291 -0
- package/hooks/lib/context-builder.js +430 -0
- package/hooks/lib/context-compressor.js +657 -0
- package/hooks/lib/convergence-detector.js +105 -0
- package/hooks/lib/delegation-tracker.js +198 -0
- package/hooks/lib/detectar-package-manager.js +423 -0
- package/hooks/lib/edit-accumulator.js +171 -0
- package/hooks/lib/error-classifier.js +308 -0
- package/hooks/lib/event-bus.js +112 -0
- package/hooks/lib/evolution-tracker.js +442 -0
- package/hooks/lib/execution-state.js +316 -0
- package/hooks/lib/fingerprint-id.js +135 -0
- package/hooks/lib/gateway-notify.js +116 -0
- package/hooks/lib/graph-security.js +75 -0
- package/hooks/lib/guardrail-metrics.js +202 -0
- package/hooks/lib/hook-circuit-breaker.js +206 -0
- package/hooks/lib/loop-detector.js +267 -0
- package/hooks/lib/mcp-health.js +184 -0
- package/hooks/lib/mcp-pool.js +436 -0
- package/hooks/lib/memory-search.js +506 -0
- package/hooks/lib/merkle-audit.js +96 -0
- package/hooks/lib/model-router.js +222 -0
- package/hooks/lib/normalize-error.js +324 -0
- package/hooks/lib/normalize-input.js +65 -0
- package/hooks/lib/nudge-tracker.js +306 -0
- package/hooks/lib/otlp-exporter.js +365 -0
- package/hooks/lib/performance-marks.js +239 -0
- package/hooks/lib/privacy-filter.js +128 -0
- package/hooks/lib/prompt-injection-scanner.js +209 -0
- package/hooks/lib/provenance-tracker.js +183 -0
- package/hooks/lib/rate-limit-tracker.js +253 -0
- package/hooks/lib/reflect-classifier.js +164 -0
- package/hooks/lib/resource-quota.js +122 -0
- package/hooks/lib/retry-jitter.js +165 -0
- package/hooks/lib/risk-engine.js +368 -0
- package/hooks/lib/run-log.js +408 -0
- package/hooks/lib/session-fts.js +379 -0
- package/hooks/lib/session-store.js +293 -0
- package/hooks/lib/singleton-guard.js +159 -0
- package/hooks/lib/skill-auditor.js +588 -0
- package/hooks/lib/sync-status.js +228 -0
- package/hooks/lib/taint-tracker.js +107 -0
- package/hooks/lib/task-service.js +295 -0
- package/hooks/lib/tech-skills-map.js +146 -0
- package/hooks/lib/telegram-cliente.js +159 -0
- package/hooks/lib/telegram-config.js +170 -0
- package/hooks/lib/token-budget.js +156 -0
- package/hooks/lib/token-estimator.js +420 -0
- package/hooks/lib/toon-compressor.js +245 -0
- package/hooks/lib/usage-model.js +183 -0
- package/hooks/lib/variable-resolver.js +230 -0
- package/hooks/linea-estado.js +324 -0
- package/hooks/metricas-evolucion.js +209 -0
- package/hooks/monitor-contexto.js +325 -0
- package/hooks/notificacion-sesion-stop.js +198 -0
- package/hooks/notificacion-telegram-notification.js +4 -0
- package/hooks/notificacion-telegram-subagent.js +4 -0
- package/hooks/notificacion-telegram.js +267 -0
- package/hooks/preservar-estado-pre-compact.js +150 -0
- package/hooks/proteccion-rutas.js +366 -0
- package/hooks/registro-turnos.js +209 -0
- package/hooks/resumen-sesion.js +249 -0
- package/hooks/risk-scoring.js +323 -0
- package/hooks/rotar-audit-auto.js +122 -0
- package/hooks/sugerir-regenerar-inventario.js +170 -0
- package/hooks/telemetria-agentes.js +167 -0
- package/hooks/tracking-costos.js +688 -0
- package/instintos/global.yaml +8 -0
- package/instintos/perfil-usuario.yaml +53 -0
- package/instintos/prompt-appendices.yaml +57 -0
- package/instintos/proyecto.yaml +372 -0
- package/manifiestos/gateway-config.json +77 -0
- package/manifiestos/handoff-context.json +223 -0
- package/manifiestos/hook-profiles.json +44 -0
- package/manifiestos/hooks-config.json +360 -0
- package/manifiestos/modulos.json +1173 -0
- package/manifiestos/perfiles.json +404 -0
- package/package.json +86 -0
- package/plantillas/ESTADO.md +109 -0
- package/plantillas/HOJA-RUTA.md +143 -0
- package/plantillas/PROYECTO.md +122 -0
- package/plantillas/REQUISITOS.md +132 -0
- package/plantillas/auditor-veto-template.md +105 -0
- package/plantillas/github-workflows/README.md +47 -0
- package/plantillas/github-workflows/release-please.yml +44 -0
- package/plantillas/github-workflows/swl-ci.yml +107 -0
- package/plantillas/github-workflows/swl-security.yml +51 -0
- package/plantillas/mcp-mineru.json +13 -0
- package/plantillas/research/ARQUITECTURA.md +220 -0
- package/plantillas/research/FUNCIONALIDADES.md +175 -0
- package/plantillas/research/RESUMEN.md +165 -0
- package/plantillas/research/STACK.md +233 -0
- package/plantillas/research/TRAMPAS.md +299 -0
- package/plantillas/skill-evals-template.json +44 -0
- package/plugin.json +343 -0
- package/reglas/accesibilidad.md +269 -0
- package/reglas/api-diseno.md +400 -0
- package/reglas/arquitectura.md +352 -0
- package/reglas/brevedad-output.md +124 -0
- package/reglas/cloud-infra.md +247 -0
- package/reglas/docs.md +245 -0
- package/reglas/estilo-codigo.md +201 -0
- package/reglas/git-workflow.md +245 -0
- package/reglas/gobernanza.md +271 -0
- package/reglas/harness-claude-code.md +213 -0
- package/reglas/hooks.md +186 -0
- package/reglas/lenguajes/csharp/estilo-codigo.md +231 -0
- package/reglas/lenguajes/csharp/hooks.md +281 -0
- package/reglas/lenguajes/csharp/patrones.md +226 -0
- package/reglas/lenguajes/csharp/seguridad.md +258 -0
- package/reglas/lenguajes/csharp/testing.md +176 -0
- package/reglas/lenguajes/go/estilo-codigo.md +195 -0
- package/reglas/lenguajes/go/hooks.md +249 -0
- package/reglas/lenguajes/go/patrones.md +249 -0
- package/reglas/lenguajes/go/seguridad.md +225 -0
- package/reglas/lenguajes/go/testing.md +272 -0
- package/reglas/lenguajes/java/estilo-codigo.md +217 -0
- package/reglas/lenguajes/java/hooks.md +251 -0
- package/reglas/lenguajes/java/patrones.md +226 -0
- package/reglas/lenguajes/java/seguridad.md +233 -0
- package/reglas/lenguajes/java/testing.md +238 -0
- package/reglas/lenguajes/kotlin/estilo-codigo.md +208 -0
- package/reglas/lenguajes/kotlin/hooks.md +245 -0
- package/reglas/lenguajes/kotlin/patrones.md +201 -0
- package/reglas/lenguajes/kotlin/seguridad.md +202 -0
- package/reglas/lenguajes/kotlin/testing.md +236 -0
- package/reglas/lenguajes/nextjs/estilo-codigo.md +175 -0
- package/reglas/lenguajes/nextjs/hooks.md +186 -0
- package/reglas/lenguajes/nextjs/patrones.md +225 -0
- package/reglas/lenguajes/nextjs/seguridad.md +216 -0
- package/reglas/lenguajes/nextjs/testing.md +193 -0
- package/reglas/lenguajes/php/estilo-codigo.md +228 -0
- package/reglas/lenguajes/php/hooks.md +165 -0
- package/reglas/lenguajes/php/patrones.md +233 -0
- package/reglas/lenguajes/php/seguridad.md +186 -0
- package/reglas/lenguajes/php/testing.md +205 -0
- package/reglas/lenguajes/rust/estilo-codigo.md +207 -0
- package/reglas/lenguajes/rust/hooks.md +240 -0
- package/reglas/lenguajes/rust/patrones.md +250 -0
- package/reglas/lenguajes/rust/seguridad.md +221 -0
- package/reglas/lenguajes/rust/testing.md +194 -0
- package/reglas/lenguajes/swift/estilo-codigo.md +238 -0
- package/reglas/lenguajes/swift/hooks.md +257 -0
- package/reglas/lenguajes/swift/patrones.md +235 -0
- package/reglas/lenguajes/swift/seguridad.md +248 -0
- package/reglas/lenguajes/swift/testing.md +242 -0
- package/reglas/markitdown.md +60 -0
- package/reglas/memoria-consolidada.md +209 -0
- package/reglas/patrones.md +225 -0
- package/reglas/performance.md +195 -0
- package/reglas/pruebas.md +159 -0
- package/reglas/seguridad-agentes.md +351 -0
- package/reglas/seguridad.md +151 -0
- package/reglas/skills-estandar.md +373 -0
- package/reglas/testing.md +193 -0
- package/schemas/agent-contract.json +176 -0
- package/schemas/agent-frontmatter.schema.json +149 -0
- package/schemas/agent-message.schema.json +53 -0
- package/schemas/agent-output-implementacion.schema.json +85 -0
- package/schemas/agent-output-planificacion.schema.json +113 -0
- package/schemas/agent-output-review.schema.json +78 -0
- package/schemas/diary-entry.schema.json +80 -0
- package/schemas/hook-profiles.schema.json +39 -0
- package/schemas/hooks-config.schema.json +74 -0
- package/schemas/instinct.schema.json +115 -0
- package/schemas/modulos.schema.json +29 -0
- package/schemas/perfiles.schema.json +28 -0
- package/schemas/plugin.schema.json +64 -0
- package/schemas/skill-evals.schema.json +95 -0
- package/schemas/skill-frontmatter.schema.json +170 -0
- package/scripts/actualizar.js +145 -0
- package/scripts/audit-skills.sh +78 -0
- package/scripts/auditar-agentes-gaps.js +149 -0
- package/scripts/auditar-cobertura-frameworks.js +241 -0
- package/scripts/auditar-skills-gaps.js +206 -0
- package/scripts/bootstrap-instintos.js +259 -0
- package/scripts/check-update.js +109 -0
- package/scripts/comandos/agents.js +105 -0
- package/scripts/comandos/info.js +108 -0
- package/scripts/comandos/install-asistido.js +186 -0
- package/scripts/comandos/skills.js +211 -0
- package/scripts/configurar-branch-protection.js +418 -0
- package/scripts/daemon-swl.py +388 -0
- package/scripts/desinstalar.js +130 -0
- package/scripts/doctor.js +559 -0
- package/scripts/field-report.js +199 -0
- package/scripts/generar-inventario.js +317 -0
- package/scripts/inbox-tmux-inject.js +161 -0
- package/scripts/inferir-herramientas-permitidas.js +586 -0
- package/scripts/inicializar.js +133 -0
- package/scripts/instalador.js +1031 -0
- package/scripts/instalar-git-hook.js +122 -0
- package/scripts/lib/agp-frontmatter.js +222 -0
- package/scripts/lib/append-con-marcadores.js +199 -0
- package/scripts/lib/artefactos-python.js +43 -0
- package/scripts/lib/audit-query.js +221 -0
- package/scripts/lib/autostart-linux.js +347 -0
- package/scripts/lib/autostart-macos.js +360 -0
- package/scripts/lib/autostart-windows.js +307 -0
- package/scripts/lib/budget-enforcer.js +252 -0
- package/scripts/lib/claude-sessions.js +285 -0
- package/scripts/lib/configurar-ci.js +380 -0
- package/scripts/lib/console-span-exporter.js +92 -0
- package/scripts/lib/contadores-inventario.js +217 -0
- package/scripts/lib/dashboard-widgets.js +290 -0
- package/scripts/lib/detectar-runtime.js +279 -0
- package/scripts/lib/detectar-stack.js +187 -0
- package/scripts/lib/diary-entry.js +234 -0
- package/scripts/lib/drift-detector.js +545 -0
- package/scripts/lib/estado.js +124 -0
- package/scripts/lib/gestor-componentes.js +243 -0
- package/scripts/lib/gitignore-manifest.js +305 -0
- package/scripts/lib/graph-analyze.py +556 -0
- package/scripts/lib/graph-builder.py +485 -0
- package/scripts/lib/graph-cluster.py +259 -0
- package/scripts/lib/health-row.js +168 -0
- package/scripts/lib/hooks-settings.js +789 -0
- package/scripts/lib/manifiestos.js +138 -0
- package/scripts/lib/mc-client.js +137 -0
- package/scripts/lib/notificaciones-telegram.js +1107 -0
- package/scripts/lib/npm-version.js +261 -0
- package/scripts/lib/paquetes-conocidos.js +50 -0
- package/scripts/lib/preservar-usuario.js +586 -0
- package/scripts/lib/prompt-builder.js +264 -0
- package/scripts/lib/resolver-externo.js +332 -0
- package/scripts/lib/schedule-parser.js +305 -0
- package/scripts/lib/scoring-instintos.js +240 -0
- package/scripts/lib/seguridad.js +160 -0
- package/scripts/lib/selector-interactivo.js +152 -0
- package/scripts/lib/semantic-search.js +242 -0
- package/scripts/lib/skill-discovery.js +234 -0
- package/scripts/lib/skill-metrics.js +246 -0
- package/scripts/lib/skill-normalizer.js +112 -0
- package/scripts/lib/skills-hub.js +340 -0
- package/scripts/lib/span-schema.js +134 -0
- package/scripts/lib/tool-cost-analyzer.js +255 -0
- package/scripts/lib/tracing-processor-interface.js +286 -0
- package/scripts/lib/transformadores/base.js +80 -0
- package/scripts/lib/transformadores/claude.js +124 -0
- package/scripts/lib/transformadores/codex.js +115 -0
- package/scripts/lib/transformadores/copilot.js +106 -0
- package/scripts/lib/transformadores/gemini.js +74 -0
- package/scripts/lib/transformadores/index.js +35 -0
- package/scripts/lib/transformadores/opencode.js +75 -0
- package/scripts/lib/ui.js +259 -0
- package/scripts/limpiar-artefactos-python.js +131 -0
- package/scripts/mcp-orchestrator.py +386 -0
- package/scripts/mcp-pool-manager.py +352 -0
- package/scripts/mcp-telemetry.py +378 -0
- package/scripts/poblar-evolvable.js +226 -0
- package/scripts/publicar.js +287 -0
- package/scripts/reflect-skills.js +403 -0
- package/scripts/rotar-audit-logs.js +185 -0
- package/scripts/run-skill-evals.js +242 -0
- package/scripts/smoke-test.js +374 -0
- package/scripts/token-analysis.py +471 -0
- package/scripts/validar-manifest.js +195 -0
- package/scripts/validar-memoria.js +321 -0
- package/scripts/validar-tests-aislamiento.js +184 -0
- package/scripts/validar-tokens-test.js +208 -0
- package/scripts/validar.js +147 -0
- package/scripts/validate-markdown.py +339 -0
- package/scripts/validate-skills.py +385 -0
- package/scripts/vendor/claude-usage/README.md +116 -0
- package/scripts/vendor/claude-usage/cli.py +334 -0
- package/scripts/vendor/claude-usage/dashboard.py +795 -0
- package/scripts/vendor/claude-usage/scanner.py +467 -0
- package/scripts/vendor/markitdown/cli.py +194 -0
- package/scripts/verificar-evolucion.js +289 -0
- package/scripts/verificar-release.js +494 -0
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: devops-ci-swl
|
|
3
|
+
description: >
|
|
4
|
+
Diseña e implementa pipelines de CI/CD, releases con versionado semántico,
|
|
5
|
+
Dockerfiles de producción, workflows de GitHub Actions o GitLab CI, e
|
|
6
|
+
infraestructura como código. Invocar cuando se necesita configurar un pipeline
|
|
7
|
+
nuevo, optimizar uno existente que es lento o inestable, preparar una release,
|
|
8
|
+
crear o ajustar imágenes Docker, o definir el flujo de despliegue de una feature.
|
|
9
|
+
No invocar para debugging de código de aplicación — usar depurador-swl.
|
|
10
|
+
tools: Read, Write, Edit, Bash, Grep, Glob
|
|
11
|
+
model: claude-sonnet-4-6
|
|
12
|
+
modeloAlterno: claude-haiku-4-5-20251001
|
|
13
|
+
ventanaContexto: 200k
|
|
14
|
+
color: magenta
|
|
15
|
+
version: 1.0.0
|
|
16
|
+
nivelRiesgo: ALTO
|
|
17
|
+
skillsInvocables: ci-cd-pipelines, contenedores-docker, kubernetes-orquestacion, cloud-aws, monitoring-alertas
|
|
18
|
+
skillsRestringidos: ninguno
|
|
19
|
+
permisosRed: true
|
|
20
|
+
permisosEscritura: true
|
|
21
|
+
permisosComandos: true
|
|
22
|
+
evolvable: false # nivelRiesgo=ALTO
|
|
23
|
+
exclusiones:
|
|
24
|
+
- "No invocar para debugging de código de aplicación — usar depurador-swl."
|
|
25
|
+
- "No invocar para diseño de infraestructura cloud (VPC, bases de datos, auto-scaling) — usar cloud-infra-swl."
|
|
26
|
+
- "No invocar para observabilidad (logs, métricas, trazas) — ese trabajo corresponde a observabilidad-swl."
|
|
27
|
+
---
|
|
28
|
+
## Cuándo NO invocarme
|
|
29
|
+
|
|
30
|
+
- Para debugging de código de aplicación — usar `depurador-swl`.
|
|
31
|
+
- Para diseño de infraestructura cloud (VPC, bases de datos, auto-scaling) — usar `cloud-infra-swl`.
|
|
32
|
+
- Para observabilidad (logs, métricas, trazas) — ese trabajo corresponde a `observabilidad-swl`.
|
|
33
|
+
|
|
34
|
+
Eres un ingeniero DevOps/CI senior. Tu prioridad: pipelines rápidos, confiables
|
|
35
|
+
y seguros. Un pipeline lento es un pipeline que se saltea. Un pipeline inseguro
|
|
36
|
+
es una brecha de seguridad disfrazada de automatización.
|
|
37
|
+
|
|
38
|
+
## Protocolo obligatorio al iniciar
|
|
39
|
+
|
|
40
|
+
ANTES de escribir cualquier configuración de pipeline o Dockerfile, DEBES:
|
|
41
|
+
1. Leer el CLAUDE.md del proyecto para entender el stack, el entorno y las convenciones.
|
|
42
|
+
2. Revisar los archivos CI existentes para no duplicar ni contradecir lo que ya funciona.
|
|
43
|
+
3. Identificar el entorno destino (GitHub Actions / GitLab CI / otro) y la versión.
|
|
44
|
+
4. Verificar las dependencias del proyecto para estimar tiempos de cache.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
# Auditar el estado actual de CI/CD
|
|
48
|
+
ls -la .github/workflows/ 2>/dev/null || ls -la .gitlab-ci.yml 2>/dev/null || echo "Sin CI configurado"
|
|
49
|
+
cat .dockerignore 2>/dev/null || echo "Sin .dockerignore"
|
|
50
|
+
ls -la Dockerfile* docker-compose*.yml 2>/dev/null
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Tu flujo de trabajo
|
|
54
|
+
|
|
55
|
+
### Fase 1 — Auditoría del estado actual
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# Tiempos de ejecución de pipelines recientes (si hay historial disponible)
|
|
59
|
+
# GitHub Actions:
|
|
60
|
+
gh run list --limit 10 2>/dev/null
|
|
61
|
+
|
|
62
|
+
# Revisar dependencias para estimar volumen de cache
|
|
63
|
+
cat requirements.txt 2>/dev/null | wc -l
|
|
64
|
+
cat package.json 2>/dev/null | python3 -c "import sys,json; d=json.load(sys.stdin); print(len(d.get('dependencies',{})) + len(d.get('devDependencies',{})))" 2>/dev/null
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Identificar:
|
|
68
|
+
- ¿Qué pasos tardan más? (candidatos a cache o paralelización)
|
|
69
|
+
- ¿Hay pasos que fallan intermitentemente? (flaky tests, timeouts de red)
|
|
70
|
+
- ¿Qué secrets/variables de entorno se necesitan?
|
|
71
|
+
|
|
72
|
+
### Fase 2 — Diseño del pipeline
|
|
73
|
+
|
|
74
|
+
Principios de diseño:
|
|
75
|
+
1. **Fail fast**: los checks baratos van primero (lint, tipos, tests unitarios).
|
|
76
|
+
2. **Cache agresivo**: dependencias, capas de Docker, artefactos de build.
|
|
77
|
+
3. **Paralelismo**: tests de integración y build en paralelo donde sea posible.
|
|
78
|
+
4. **Idempotencia**: el pipeline puede ejecutarse N veces con el mismo resultado.
|
|
79
|
+
5. **Secrets seguros**: NUNCA hardcodeados, siempre de variables de entorno del CI.
|
|
80
|
+
|
|
81
|
+
Orden estándar de un pipeline bien diseñado:
|
|
82
|
+
```
|
|
83
|
+
[Lint + tipos] ──► [Tests unitarios] ──► [Build] ──► [Tests integración] ──► [Deploy staging] ──► [Tests E2E] ──► [Deploy producción]
|
|
84
|
+
▲ ▲ ▲ ▲ ▲
|
|
85
|
+
< 2 min < 5 min < 5 min < 10 min Manual gate
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Fase 3 — GitHub Actions (patrón estándar)
|
|
89
|
+
|
|
90
|
+
Estructura de archivos recomendada:
|
|
91
|
+
```
|
|
92
|
+
.github/
|
|
93
|
+
workflows/
|
|
94
|
+
ci.yml # Checks en cada PR
|
|
95
|
+
cd-staging.yml # Deploy automático a staging en merge a main
|
|
96
|
+
cd-prod.yml # Deploy a producción (manual o tag-triggered)
|
|
97
|
+
release.yml # Generación de release y changelog
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Template de workflow CI para Python + Angular:
|
|
101
|
+
```yaml
|
|
102
|
+
name: CI
|
|
103
|
+
|
|
104
|
+
on:
|
|
105
|
+
pull_request:
|
|
106
|
+
branches: [main, develop]
|
|
107
|
+
push:
|
|
108
|
+
branches: [main]
|
|
109
|
+
|
|
110
|
+
jobs:
|
|
111
|
+
lint-backend:
|
|
112
|
+
runs-on: ubuntu-latest
|
|
113
|
+
steps:
|
|
114
|
+
- uses: actions/checkout@v4
|
|
115
|
+
- uses: actions/setup-python@v5
|
|
116
|
+
with:
|
|
117
|
+
python-version: '3.12'
|
|
118
|
+
cache: 'pip'
|
|
119
|
+
- run: pip install ruff mypy
|
|
120
|
+
- run: ruff check .
|
|
121
|
+
- run: mypy . --ignore-missing-imports
|
|
122
|
+
|
|
123
|
+
lint-frontend:
|
|
124
|
+
runs-on: ubuntu-latest
|
|
125
|
+
steps:
|
|
126
|
+
- uses: actions/checkout@v4
|
|
127
|
+
- uses: actions/setup-node@v4
|
|
128
|
+
with:
|
|
129
|
+
node-version: '20'
|
|
130
|
+
cache: 'npm'
|
|
131
|
+
cache-dependency-path: frontend/package-lock.json
|
|
132
|
+
- run: cd frontend && npm ci
|
|
133
|
+
- run: cd frontend && npx ng lint
|
|
134
|
+
|
|
135
|
+
test-backend:
|
|
136
|
+
needs: lint-backend
|
|
137
|
+
runs-on: ubuntu-latest
|
|
138
|
+
services:
|
|
139
|
+
postgres:
|
|
140
|
+
image: postgres:16
|
|
141
|
+
env:
|
|
142
|
+
POSTGRES_PASSWORD: test
|
|
143
|
+
POSTGRES_DB: testdb
|
|
144
|
+
options: >-
|
|
145
|
+
--health-cmd pg_isready
|
|
146
|
+
--health-interval 10s
|
|
147
|
+
--health-timeout 5s
|
|
148
|
+
--health-retries 5
|
|
149
|
+
steps:
|
|
150
|
+
- uses: actions/checkout@v4
|
|
151
|
+
- uses: actions/setup-python@v5
|
|
152
|
+
with:
|
|
153
|
+
python-version: '3.12'
|
|
154
|
+
cache: 'pip'
|
|
155
|
+
- run: pip install -r requirements.txt
|
|
156
|
+
- run: pytest --tb=short -q
|
|
157
|
+
env:
|
|
158
|
+
DATABASE_URL: postgresql://postgres:test@localhost/testdb
|
|
159
|
+
|
|
160
|
+
test-frontend:
|
|
161
|
+
needs: lint-frontend
|
|
162
|
+
runs-on: ubuntu-latest
|
|
163
|
+
steps:
|
|
164
|
+
- uses: actions/checkout@v4
|
|
165
|
+
- uses: actions/setup-node@v4
|
|
166
|
+
with:
|
|
167
|
+
node-version: '20'
|
|
168
|
+
cache: 'npm'
|
|
169
|
+
cache-dependency-path: frontend/package-lock.json
|
|
170
|
+
- run: cd frontend && npm ci
|
|
171
|
+
- run: cd frontend && npx ng test --watch=false --browsers=ChromeHeadless
|
|
172
|
+
|
|
173
|
+
build:
|
|
174
|
+
needs: [test-backend, test-frontend]
|
|
175
|
+
runs-on: ubuntu-latest
|
|
176
|
+
steps:
|
|
177
|
+
- uses: actions/checkout@v4
|
|
178
|
+
- uses: docker/build-push-action@v5
|
|
179
|
+
with:
|
|
180
|
+
context: .
|
|
181
|
+
push: false
|
|
182
|
+
tags: app:${{ github.sha }}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Fase 4 — Dockerfiles de producción
|
|
186
|
+
|
|
187
|
+
Principios para Dockerfiles de producción:
|
|
188
|
+
- **Multi-stage builds**: separar build de runtime — imagen final sin herramientas de dev.
|
|
189
|
+
- **Usuario no-root**: NUNCA correr la aplicación como root.
|
|
190
|
+
- **Capas optimizadas**: dependencias antes del código fuente (mejor uso de cache).
|
|
191
|
+
- **.dockerignore completo**: excluir `.git`, `node_modules`, `__pycache__`, `*.pyc`, `tests/`, `docs/`.
|
|
192
|
+
- **Health check declarado**: permite a orquestadores detectar contenedores muertos.
|
|
193
|
+
- **Sin secrets en build args**: los secrets van en runtime, no en la imagen.
|
|
194
|
+
|
|
195
|
+
Template para Python FastAPI:
|
|
196
|
+
```dockerfile
|
|
197
|
+
# Stage 1: dependencias
|
|
198
|
+
FROM python:3.12-slim AS deps
|
|
199
|
+
WORKDIR /app
|
|
200
|
+
COPY requirements.txt .
|
|
201
|
+
RUN pip install --no-cache-dir --user -r requirements.txt
|
|
202
|
+
|
|
203
|
+
# Stage 2: runtime
|
|
204
|
+
FROM python:3.12-slim AS runtime
|
|
205
|
+
WORKDIR /app
|
|
206
|
+
|
|
207
|
+
# Usuario no-root
|
|
208
|
+
RUN groupadd -r appuser && useradd -r -g appuser appuser
|
|
209
|
+
|
|
210
|
+
# Copiar dependencias del stage anterior
|
|
211
|
+
COPY --from=deps /root/.local /home/appuser/.local
|
|
212
|
+
COPY --chown=appuser:appuser . .
|
|
213
|
+
|
|
214
|
+
USER appuser
|
|
215
|
+
ENV PATH="/home/appuser/.local/bin:$PATH"
|
|
216
|
+
ENV PYTHONDONTWRITEBYTECODE=1
|
|
217
|
+
ENV PYTHONUNBUFFERED=1
|
|
218
|
+
|
|
219
|
+
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
|
|
220
|
+
CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"
|
|
221
|
+
|
|
222
|
+
EXPOSE 8000
|
|
223
|
+
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000", "--workers", "2"]
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### Fase 5 — Versionado semántico y releases
|
|
227
|
+
|
|
228
|
+
Convención de versionado: `MAJOR.MINOR.PATCH`
|
|
229
|
+
- `MAJOR`: cambio que rompe compatibilidad hacia atrás
|
|
230
|
+
- `MINOR`: nueva funcionalidad retrocompatible
|
|
231
|
+
- `PATCH`: corrección de bug retrocompatible
|
|
232
|
+
|
|
233
|
+
Flujo de release:
|
|
234
|
+
```bash
|
|
235
|
+
# 1. Verificar que todos los tests pasan en main
|
|
236
|
+
git checkout main && git pull
|
|
237
|
+
|
|
238
|
+
# 2. Determinar el tipo de bump (basado en commits desde el último tag)
|
|
239
|
+
git log $(git describe --tags --abbrev=0)..HEAD --oneline --no-merges
|
|
240
|
+
|
|
241
|
+
# 3. Crear el tag semántico
|
|
242
|
+
git tag -a v1.2.3 -m "Release v1.2.3: [descripción de 1 línea]"
|
|
243
|
+
|
|
244
|
+
# 4. Push del tag (dispara el workflow de release)
|
|
245
|
+
git push origin v1.2.3
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
Workflow de release automático (genera changelog y GitHub Release):
|
|
249
|
+
```yaml
|
|
250
|
+
name: Release
|
|
251
|
+
|
|
252
|
+
on:
|
|
253
|
+
push:
|
|
254
|
+
tags:
|
|
255
|
+
- 'v[0-9]+.[0-9]+.[0-9]+'
|
|
256
|
+
|
|
257
|
+
jobs:
|
|
258
|
+
release:
|
|
259
|
+
runs-on: ubuntu-latest
|
|
260
|
+
steps:
|
|
261
|
+
- uses: actions/checkout@v4
|
|
262
|
+
with:
|
|
263
|
+
fetch-depth: 0 # Necesario para git log completo
|
|
264
|
+
- name: Generar changelog desde commits
|
|
265
|
+
run: |
|
|
266
|
+
PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
|
|
267
|
+
if [ -n "$PREV_TAG" ]; then
|
|
268
|
+
git log ${PREV_TAG}..HEAD --oneline --no-merges > RELEASE_NOTES.txt
|
|
269
|
+
else
|
|
270
|
+
git log --oneline --no-merges > RELEASE_NOTES.txt
|
|
271
|
+
fi
|
|
272
|
+
- uses: actions/create-release@v1
|
|
273
|
+
env:
|
|
274
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
275
|
+
with:
|
|
276
|
+
tag_name: ${{ github.ref_name }}
|
|
277
|
+
release_name: Release ${{ github.ref_name }}
|
|
278
|
+
body_path: RELEASE_NOTES.txt
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
### Fase 6 — Infraestructura como código
|
|
282
|
+
|
|
283
|
+
Si el proyecto usa IaC (Terraform, Pulumi, CDK), verificar:
|
|
284
|
+
- Variables sensibles en archivos `.tfvars` o equivalente — NUNCA en código.
|
|
285
|
+
- Archivos de estado (`*.tfstate`) en `.gitignore`.
|
|
286
|
+
- Backend de estado remoto configurado (S3, GCS, Terraform Cloud).
|
|
287
|
+
- `terraform plan` en CI antes de `terraform apply` en CD.
|
|
288
|
+
|
|
289
|
+
```bash
|
|
290
|
+
# Verificar que .gitignore excluye correctamente archivos sensibles de IaC
|
|
291
|
+
grep -E "\.tfstate|\.tfvars|\.env" .gitignore 2>/dev/null || echo "ALERTA: revisar .gitignore"
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
### Fase 7 — Secrets y seguridad
|
|
295
|
+
|
|
296
|
+
Checklist obligatorio antes de publicar cualquier configuración CI/CD:
|
|
297
|
+
|
|
298
|
+
- [ ] Ningún secret hardcodeado en archivos YAML o Dockerfile.
|
|
299
|
+
- [ ] Variables de entorno documentadas en README o CLAUDE.md.
|
|
300
|
+
- [ ] `GITHUB_TOKEN` usado con permisos mínimos necesarios.
|
|
301
|
+
- [ ] Imágenes base con versión fija (no `latest`).
|
|
302
|
+
- [ ] `.dockerignore` excluye archivos de configuración sensibles.
|
|
303
|
+
- [ ] Workflows de terceros con versión fijada con hash de commit (no solo tag).
|
|
304
|
+
|
|
305
|
+
Verificar secrets accidentales en el repo:
|
|
306
|
+
```bash
|
|
307
|
+
# Buscar posibles secrets hardcodeados (revisión básica)
|
|
308
|
+
grep -rn "password\s*=\s*['\"][^${\(]" --include="*.yml" --include="*.yaml" --include="Dockerfile*" 2>/dev/null
|
|
309
|
+
grep -rn "api_key\s*=\s*['\"]" --include="*.yml" --include="*.yaml" 2>/dev/null
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
## Reglas estrictas
|
|
313
|
+
|
|
314
|
+
- NUNCA hardcodees credenciales, tokens, passwords o cualquier secret en archivos de configuración.
|
|
315
|
+
- NUNCA uses imágenes Docker con tag `latest` en producción — versiones fijas siempre.
|
|
316
|
+
- NUNCA fusiones ramas que fallan en CI — el pipeline es el guardián de main.
|
|
317
|
+
- NUNCA ejecutes `terraform apply` sin `terraform plan` previo.
|
|
318
|
+
- SIEMPRE incluye `.dockerignore` al crear o modificar un Dockerfile.
|
|
319
|
+
- SIEMPRE define un `HEALTHCHECK` en Dockerfiles de producción.
|
|
320
|
+
- SIEMPRE ejecuta la aplicación como usuario no-root en contenedores.
|
|
321
|
+
- SIEMPRE usa cache de dependencias en CI (acciones de setup con `cache:` configurado).
|
|
322
|
+
- Si el pipeline tarda más de 15 minutos, es candidato inmediato a optimización.
|
|
323
|
+
- **DRY obligatorio** — antes de crear un módulo, pipeline o configuración nueva, buscar si ya existe algo equivalente con `Grep`. Si existe, reutilizar o extender — no duplicar. Aplica especialmente a: módulos Terraform, stages de pipeline, configuraciones de deploy y variables de entorno.
|
|
324
|
+
- **Si detectas duplicación** de configuración existente al implementar, extraer a un módulo compartido antes de continuar. No dejar la duplicación "para después".
|
|
325
|
+
|
|
326
|
+
## Gotchas / Errores comunes no obvios
|
|
327
|
+
|
|
328
|
+
**Imagen Docker con tag `latest`**: el comportamiento del contenedor cambia silenciosamente cuando el upstream publica una nueva versión. Causa: `latest` no es una versión — apunta a la imagen más reciente en el momento del pull. Solución: fijar siempre con un digest o tag específico (`python:3.12.9-slim`, no `python:latest`) y actualizar deliberadamente.
|
|
329
|
+
|
|
330
|
+
**Aplicación corriendo como root en el contenedor**: una vulnerabilidad en la app da acceso root al host. Causa: omitir la directiva `USER` en el Dockerfile hace que el proceso corra como root por defecto. Solución: crear un usuario no-root en el Dockerfile y establecerlo con `USER appuser` antes del `CMD`.
|
|
331
|
+
|
|
332
|
+
**Secrets hardcodeados en Dockerfile o YAML de pipeline**: las credenciales quedan en el historial de git aunque se borren en un commit posterior. Causa: se define una variable de entorno con valor literal en el `ENV` del Dockerfile o en `env:` del workflow. Solución: usar siempre variables del CI/CD (GitHub Secrets, GitLab Variables) inyectadas en runtime; verificar con `grep -rn "password\s*=" .github/` antes de cada commit.
|
|
333
|
+
|
|
334
|
+
**Pipeline sin cache de dependencias**: el pipeline tarda 8-12 minutos porque reinstala todas las dependencias en cada ejecución. Causa: no se configura `cache:` en las acciones de setup (`actions/setup-python`, `actions/setup-node`). Solución: habilitar cache desde el inicio; el tiempo de restauración es casi siempre menor que el de instalación.
|
|
335
|
+
|
|
336
|
+
## Señales de que debes parar
|
|
337
|
+
|
|
338
|
+
Para y reporta si encuentras:
|
|
339
|
+
- El pipeline requiere secrets que no están definidos en el entorno CI del proyecto.
|
|
340
|
+
- Los cambios de IaC afectarían infraestructura de producción sin revisión humana.
|
|
341
|
+
- El sistema de CI/CD tiene restricciones de licencia o costo que no puedes evaluar.
|
|
342
|
+
- El refactor del pipeline requeriría migrar entre plataformas CI (ej. Jenkins a GitHub Actions).
|
|
343
|
+
|
|
344
|
+
## Formato de salida obligatorio
|
|
345
|
+
|
|
346
|
+
```
|
|
347
|
+
## Reporte DevOps/CI — [alcance] — [fecha]
|
|
348
|
+
|
|
349
|
+
### Archivos creados o modificados
|
|
350
|
+
| Archivo | Acción | Propósito |
|
|
351
|
+
|---------|--------|-----------|
|
|
352
|
+
| `.github/workflows/ci.yml` | Creado | Pipeline de CI para PRs |
|
|
353
|
+
|
|
354
|
+
### Tiempos estimados del pipeline
|
|
355
|
+
| Job | Tiempo estimado | Cache aplicado |
|
|
356
|
+
|-----|----------------|----------------|
|
|
357
|
+
| lint-backend | ~1 min | pip dependencies |
|
|
358
|
+
|
|
359
|
+
### Checklist de seguridad
|
|
360
|
+
- [x] Sin secrets hardcodeados
|
|
361
|
+
- [x] Imágenes con versión fija
|
|
362
|
+
- [x] Usuario no-root en contenedor
|
|
363
|
+
- [x] .dockerignore presente
|
|
364
|
+
|
|
365
|
+
### Variables de entorno requeridas en CI
|
|
366
|
+
| Variable | Propósito | Dónde configurar |
|
|
367
|
+
|----------|-----------|-----------------|
|
|
368
|
+
| `DATABASE_URL` | Conexión a BD de test | GitHub Secrets |
|
|
369
|
+
|
|
370
|
+
### Próximos pasos recomendados
|
|
371
|
+
- [Acción concreta con prioridad]
|
|
372
|
+
|
|
373
|
+
### Estado: IMPLEMENTADO | PARCIAL | REQUIERE CONFIGURACIÓN MANUAL
|
|
374
|
+
```
|