@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,298 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: checkpoints-verificacion
|
|
3
|
+
description: Sistema de checkpoints del GSD para control de flujo entre agentes. Cubre los 3 tipos (human-verify, decision, human-action), formato XML, auto-mode, notificaciones y session snapshots atómicos para persistencia y reanudación. Incluye estructura completa de snapshot con mensajes, actividades, archivos modificados y último veredicto.
|
|
4
|
+
version: "1.1.0"
|
|
5
|
+
herramientasPermitidas: [Read, Write, Edit, Bash, Glob, Grep]
|
|
6
|
+
exclusiones:
|
|
7
|
+
- "No cargar para pausar la ejecución por razones de incertidumbre del agente — los checkpoints son puntos de gobernanza definidos en el plan, no válvulas de escape ante duda."
|
|
8
|
+
- "No cargar para crear más de un checkpoint `decision` por oleada; si hay múltiples bifurcaciones, consolidarlas en una decisión con opciones o escalar con `ejecutar-fase` Desviación Mayor."
|
|
9
|
+
- "No cargar si la decisión ya está especificada en el PLAN.md o CONTEXTO.md — un checkpoint `decision` sobre algo ya resuelto es ruido de gobernanza."
|
|
10
|
+
- "No cargar para registrar el estado de sesión entre agentes; para eso usar `execution-state.js` directamente."
|
|
11
|
+
evolvable: true # default para skill estandar
|
|
12
|
+
---
|
|
13
|
+
# Checkpoints de Verificación GSD
|
|
14
|
+
|
|
15
|
+
## Cuándo NO cargar
|
|
16
|
+
|
|
17
|
+
- El agente quiere pausar porque no está seguro de cómo implementar algo — eso no es un checkpoint, es una Desviación Mayor en `ejecutar-fase`. Escalar a `arquitecto-swl` si el bloqueo es técnico.
|
|
18
|
+
- La decisión ya está en PLAN.md o CONTEXTO.md; ejecutar el plan sin pausa adicional.
|
|
19
|
+
- Se quiere registrar el estado entre agentes para serialización y reanudación; usar `execution-state.js` de `hooks/lib/` directamente — los checkpoints son para gobernanza, no para persistencia técnica.
|
|
20
|
+
- La bifurcación es claramente inferior en una opción; usar `human-verify` con recomendación, no `decision`.
|
|
21
|
+
|
|
22
|
+
## Concepto
|
|
23
|
+
|
|
24
|
+
Un **checkpoint** es un punto de pausa controlada en el flujo de ejecución del sistema GSD.
|
|
25
|
+
|
|
26
|
+
> **Si Claude PUEDE automatizar una decisión, DEBE automatizarla.**
|
|
27
|
+
> Solo se pausa cuando la decisión requiere juicio humano genuino, acción fuera del
|
|
28
|
+
> alcance del agente, o verificación de calidad que el agente no puede hacer por sí solo.
|
|
29
|
+
|
|
30
|
+
| Tipo | Frecuencia | Cuándo |
|
|
31
|
+
|------|-----------|--------|
|
|
32
|
+
| human-verify | ~90% | El agente termina, el humano confirma calidad |
|
|
33
|
+
| decision | ~9% | El agente necesita elegir entre caminos ambiguos |
|
|
34
|
+
| human-action | ~1% | El agente necesita algo que solo el humano puede hacer |
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 1. Tipo: human-verify
|
|
39
|
+
|
|
40
|
+
El agente completó una tarea y presenta resultados para revisión.
|
|
41
|
+
|
|
42
|
+
**Cuándo usar**: Al finalizar una fase, generar un documento importante, completar un slice vertical, o detectar una anomalía menor.
|
|
43
|
+
|
|
44
|
+
**Comportamiento**: Presentar checkpoint con toda la información, NO continuar hasta recibir respuesta (salvo `auto_advance: true`), registrar resultado en ESTADO.md.
|
|
45
|
+
|
|
46
|
+
Para templates XML completos y ejemplos concretos, ver [recursos/checkpoint-templates.md](recursos/checkpoint-templates.md).
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 2. Tipo: decision
|
|
51
|
+
|
|
52
|
+
El agente encontró una bifurcación donde ambos caminos son válidos pero con implicaciones distintas de negocio, riesgo o prioridad.
|
|
53
|
+
|
|
54
|
+
**Cuándo usar**: Tecnología A vs B no especificada en spec, migración big-bang vs incremental, dos normalizaciones igualmente válidas.
|
|
55
|
+
|
|
56
|
+
**Cuándo NO usar**: La spec ya especifica la decisión, una opción es claramente inferior, la decisión es fácilmente reversible.
|
|
57
|
+
|
|
58
|
+
**Regla de recomendación**: El agente SIEMPRE indica su recomendación con justificación técnica. No es neutral: tiene opinión fundamentada.
|
|
59
|
+
|
|
60
|
+
Para templates XML con pros/contras y ejemplos de migración, ver [recursos/checkpoint-templates.md](recursos/checkpoint-templates.md).
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## 3. Tipo: human-action
|
|
65
|
+
|
|
66
|
+
El agente necesita que el humano realice una acción fuera de su alcance: configurar credenciales, aprobar gastos, ejecutar en sistemas restringidos.
|
|
67
|
+
|
|
68
|
+
**Cuándo usar**: Configurar secretos, aprobar cargos/licencias, ejecutar en producción con acceso restringido, contactar proveedor externo, aprobar PR con protección de rama.
|
|
69
|
+
|
|
70
|
+
Para templates XML con acciones numeradas y ejemplos de AWS Secrets Manager, ver [recursos/checkpoint-templates.md](recursos/checkpoint-templates.md).
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## 4. Auto-Mode (auto_advance: true)
|
|
75
|
+
|
|
76
|
+
`auto_advance: true` se usa cuando el checkpoint es informativo: el agente reporta progreso pero no necesita confirmación para continuar.
|
|
77
|
+
|
|
78
|
+
**Reglas estrictas**:
|
|
79
|
+
- `auto_advance: true` SOLO para checkpoints de tipo `human-verify`
|
|
80
|
+
- NUNCA `auto_advance: true` en `decision` o `human-action`
|
|
81
|
+
- Valor por defecto: `false`
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## 5. Integración con Notificaciones
|
|
86
|
+
|
|
87
|
+
Cada checkpoint emite notificación al canal configurado:
|
|
88
|
+
|
|
89
|
+
```javascript
|
|
90
|
+
const PRIORIDAD = {
|
|
91
|
+
'human-action': 'urgente', // notificación inmediata, todos los canales
|
|
92
|
+
'decision': 'alta', // notificación inmediata, canal principal
|
|
93
|
+
'human-verify': 'normal', // notificación normal, canal principal
|
|
94
|
+
};
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## 6. Registro en ESTADO.md
|
|
100
|
+
|
|
101
|
+
Todo checkpoint resuelto se registra:
|
|
102
|
+
|
|
103
|
+
```markdown
|
|
104
|
+
| ID | Tipo | Estado | Resolución | Fecha |
|
|
105
|
+
|----|------|--------|-----------|-------|
|
|
106
|
+
| verify-plan-fase2 | human-verify | resuelto | aprobado | 2024-03-20 |
|
|
107
|
+
| decision-db-engine | decision | resuelto | opción-B | 2024-03-21 |
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Reglas de selección de tipo
|
|
113
|
+
|
|
114
|
+
| Situación | Tipo correcto |
|
|
115
|
+
|-----------|--------------|
|
|
116
|
+
| Agente terminó tarea, quiere confirmación | `human-verify` |
|
|
117
|
+
| Lint/tests pasan, reportar sin bloquear | `human-verify` con `auto_advance="true"` |
|
|
118
|
+
| Dos opciones igualmente válidas con distinto impacto | `decision` |
|
|
119
|
+
| Una opción claramente superior | `human-verify` con recomendación (NO `decision`) |
|
|
120
|
+
| Necesita credenciales, accesos o aprobaciones | `human-action` |
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Gotchas / Errores comunes no obvios
|
|
125
|
+
|
|
126
|
+
- **`auto_advance: true` en checkpoint `decision`**: el agente marca una decisión de bifurcación real como auto-advance porque "ya tiene preferencia". Causa: se confunde la recomendación del agente con la decisión del usuario. Solución: `auto_advance: true` es exclusivo de `human-verify`; cualquier `decision` o `human-action` siempre espera respuesta explícita del usuario — la regla no tiene excepciones.
|
|
127
|
+
- **Snapshot de sesión escrito con `fs.writeFileSync` en lugar de `atomicWriteJSON`**: si el proceso se interrumpe durante la escritura del snapshot, el archivo queda corrupto y la reanudación falla. Causa: se usa escritura directa por simplicidad. Solución: usar `atomicWriteJSON` de `hooks/lib/atomic-write.js` — escribe a `.tmp` primero y renombra, garantizando atomicidad.
|
|
128
|
+
- **Checkpoint sin `consecuencias_de_espera` en tipo `decision`**: el usuario no sabe cuánto tiempo puede esperar para decidir. Causa: campo omitido como opcional cuando en realidad es crítico para decisiones bloqueantes. Solución: siempre incluir `consecuencias_de_espera` especificando qué tareas quedan bloqueadas si el usuario no responde en N horas.
|
|
129
|
+
- **Session stale reanudada automáticamente después de 24 h**: el agente lee el snapshot con `updated_at` de 2 días antes y reanuda sin verificar. Causa: no se aplicó la detección de sesión stale. Solución: comparar `updated_at` con la hora actual; si hay más de 24 h y `status` es `active`, marcar como `stalled` y emitir `human-verify` antes de continuar.
|
|
130
|
+
|
|
131
|
+
## Anti-patrones
|
|
132
|
+
|
|
133
|
+
- Checkpoint sin `id` único (dificulta trazabilidad en ESTADO.md)
|
|
134
|
+
- `auto_advance: true` en `decision` o `human-action`
|
|
135
|
+
- Más de 4 opciones en un `decision` (sobrecarga cognitiva)
|
|
136
|
+
- `human-action` para algo que el agente puede hacer con sus herramientas
|
|
137
|
+
- `decision` sin campo `recomendacion`
|
|
138
|
+
- Omitir `consecuencias_de_espera` en `decision`
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## 7. Estado de ejecución serializable — execution-state.json
|
|
143
|
+
|
|
144
|
+
Cuando un plan multi-agente se pausa (checkpoint) o un agente completa su trabajo,
|
|
145
|
+
registrar el estado en `.planning/execution-state.json` usando `hooks/lib/execution-state.js`.
|
|
146
|
+
|
|
147
|
+
Este archivo permite reanudar planes con estado preciso, sin reconstrucción de contexto
|
|
148
|
+
a partir de texto libre. Inspirado en el patrón ExecutionSnapshot de Sim Studio.
|
|
149
|
+
|
|
150
|
+
### Al completar un agente
|
|
151
|
+
|
|
152
|
+
```javascript
|
|
153
|
+
const es = require('./hooks/lib/execution-state');
|
|
154
|
+
es.completarAgente(process.cwd(), 'implementador-swl', 'api-endpoints', {
|
|
155
|
+
archivosCreados: ['src/api.py', 'tests/test_api.py'],
|
|
156
|
+
archivosModificados: ['src/config.py'],
|
|
157
|
+
resumen: 'API REST implementada con FastAPI, 4 endpoints, tests unitarios',
|
|
158
|
+
});
|
|
159
|
+
es.actualizarContexto(process.cwd(), {
|
|
160
|
+
archivosModificados: ['src/api.py', 'tests/test_api.py'],
|
|
161
|
+
testsStatus: 'passing',
|
|
162
|
+
decisiones: ['FastAPI por rendimiento', 'Pydantic v2 para validación'],
|
|
163
|
+
});
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Al pausar (checkpoint humano)
|
|
167
|
+
|
|
168
|
+
```javascript
|
|
169
|
+
// Registrar el próximo agente pendiente
|
|
170
|
+
es.establecerProximo(process.cwd(), 'revisor-codigo-swl', 'revision-api');
|
|
171
|
+
// El archivo execution-state.json persiste entre sesiones
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Al reanudar desde checkpoint
|
|
175
|
+
|
|
176
|
+
```javascript
|
|
177
|
+
// Leer el estado para saber dónde continuar
|
|
178
|
+
const estado = es.leer(process.cwd());
|
|
179
|
+
console.log(es.formatearResumen(process.cwd()));
|
|
180
|
+
// → "Plan: plan-x — Fase: implementacion
|
|
181
|
+
// Agentes completados:
|
|
182
|
+
// ✓ implementador-swl / api-endpoints
|
|
183
|
+
// → revisor-codigo-swl / revision-api (próximo)"
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Referencias en prompts con variable-resolver
|
|
187
|
+
|
|
188
|
+
Los outputs registrados pueden referenciarse en prompts del orquestador:
|
|
189
|
+
|
|
190
|
+
```
|
|
191
|
+
Implementa los endpoints listados en {{planificador-swl.output.archivosACrear}}.
|
|
192
|
+
Decisiones ya tomadas: {{contexto.decisiones}}.
|
|
193
|
+
Tests actuales: {{contexto.testsStatus}}.
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Resolver con `hooks/lib/variable-resolver.js`:
|
|
197
|
+
|
|
198
|
+
```javascript
|
|
199
|
+
const vr = require('./hooks/lib/variable-resolver');
|
|
200
|
+
const promptResuelto = vr.resolver(promptTemplate, process.cwd());
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## 8. Session Snapshots — Persistencia atómica para reanudación
|
|
206
|
+
|
|
207
|
+
Cuando una sesión multi-agente se pausa o interrumpe, el snapshot captura el estado
|
|
208
|
+
completo para reanudar sin pérdida de contexto. Complementa `execution-state.json`
|
|
209
|
+
con información de actividad y veredictos.
|
|
210
|
+
|
|
211
|
+
### Estructura del snapshot
|
|
212
|
+
|
|
213
|
+
```json
|
|
214
|
+
{
|
|
215
|
+
"metadata": {
|
|
216
|
+
"session_id": "ses_abc123",
|
|
217
|
+
"plan_id": "plan-modulo-pagos",
|
|
218
|
+
"spec": "Implementar módulo de pagos con Stripe",
|
|
219
|
+
"status": "paused | active | completed | failed",
|
|
220
|
+
"iterations": 3,
|
|
221
|
+
"created_at": "2026-04-12T10:00:00Z",
|
|
222
|
+
"updated_at": "2026-04-12T14:30:00Z"
|
|
223
|
+
},
|
|
224
|
+
"state": {
|
|
225
|
+
"current_phase": "implementacion",
|
|
226
|
+
"activities": [
|
|
227
|
+
{
|
|
228
|
+
"agent": "implementador-swl",
|
|
229
|
+
"task": "api-endpoints",
|
|
230
|
+
"phase": "completed",
|
|
231
|
+
"duration_ms": 45000
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"agent": "revisor-codigo-swl",
|
|
235
|
+
"task": "revision-api",
|
|
236
|
+
"phase": "in_progress",
|
|
237
|
+
"duration_ms": null
|
|
238
|
+
}
|
|
239
|
+
],
|
|
240
|
+
"modified_files": [
|
|
241
|
+
"src/api/pagos.py",
|
|
242
|
+
"src/services/stripe_service.py",
|
|
243
|
+
"tests/test_pagos.py"
|
|
244
|
+
],
|
|
245
|
+
"git_tracking": {
|
|
246
|
+
"branch": "feat/modulo-pagos",
|
|
247
|
+
"commits_ahead": 3,
|
|
248
|
+
"last_commit": "abc1234"
|
|
249
|
+
}
|
|
250
|
+
},
|
|
251
|
+
"context": {
|
|
252
|
+
"decisions": ["Stripe Checkout por simplicidad", "Webhooks async"],
|
|
253
|
+
"tests_status": "passing",
|
|
254
|
+
"pending_checkpoints": ["verify-integracion-stripe"]
|
|
255
|
+
},
|
|
256
|
+
"last_verdict": {
|
|
257
|
+
"verdict": "Fail",
|
|
258
|
+
"risk": "Medium",
|
|
259
|
+
"score": 0.75,
|
|
260
|
+
"failures": [{"artifact": "src/services/stripe_service.py", "level": "DATOS_FLUYEN", "reason": "Webhook no procesa evento checkout.session.completed"}],
|
|
261
|
+
"nextStep": {"action": "Fix", "instructions": ["Implementar handler para checkout.session.completed en webhook endpoint"]}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### Persistencia atómica
|
|
267
|
+
|
|
268
|
+
Escribir snapshots con el patrón write-tmp-rename para evitar corrupción:
|
|
269
|
+
|
|
270
|
+
```javascript
|
|
271
|
+
const { atomicWriteJSON } = require('./hooks/lib/atomic-write');
|
|
272
|
+
// Escribe a .tmp primero, luego renombra — si el proceso muere a mitad
|
|
273
|
+
// de escritura, el archivo original permanece intacto
|
|
274
|
+
atomicWriteJSON(path.join(planningDir, 'session-snapshot.json'), snapshot);
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
NUNCA escribir directamente al archivo de snapshot — una interrupción a mitad
|
|
278
|
+
de escritura corrompe el estado y pierde la capacidad de reanudación.
|
|
279
|
+
|
|
280
|
+
### Reanudación desde snapshot
|
|
281
|
+
|
|
282
|
+
Al reanudar una sesión pausada:
|
|
283
|
+
|
|
284
|
+
1. Leer `session-snapshot.json` con `execution-state.js`.
|
|
285
|
+
2. Verificar `last_verdict` — si fue `Fail`, las `nextStep.instructions` son la
|
|
286
|
+
primera tarea del ejecutor.
|
|
287
|
+
3. Verificar `modified_files` contra el estado actual de git para detectar cambios
|
|
288
|
+
externos durante la pausa.
|
|
289
|
+
4. Restaurar `context.decisions` para que los agentes no re-debatan decisiones ya tomadas.
|
|
290
|
+
5. Continuar desde `state.current_phase` con el siguiente agente pendiente.
|
|
291
|
+
|
|
292
|
+
### Detección de sesión stale
|
|
293
|
+
|
|
294
|
+
Si `updated_at` tiene más de 24 horas y `status` es `active`:
|
|
295
|
+
|
|
296
|
+
- Marcar como `stalled` en el snapshot.
|
|
297
|
+
- Emitir checkpoint `human-verify` para confirmar si se debe continuar o descartar.
|
|
298
|
+
- No reanudar automáticamente sesiones stale — pueden tener contexto desactualizado.
|
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
# Templates de Checkpoints — Referencia Rápida
|
|
2
|
+
|
|
3
|
+
Copia el template del tipo correcto y rellena los campos marcados con `[...]`.
|
|
4
|
+
Elimina los comentarios `<!-- ... -->` antes de emitir el checkpoint.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Tipo 1: human-verify
|
|
9
|
+
|
|
10
|
+
Usar cuando el agente terminó trabajo y el humano debe confirmar calidad antes de continuar.
|
|
11
|
+
|
|
12
|
+
```xml
|
|
13
|
+
<checkpoint type="human-verify" id="verify-[identificador-unico]" auto_advance="false">
|
|
14
|
+
<titulo>[Qué se hizo — frase corta descriptiva]</titulo>
|
|
15
|
+
|
|
16
|
+
<resumen>
|
|
17
|
+
[2-4 oraciones describiendo qué se implementó, qué decisiones se tomaron
|
|
18
|
+
y cuál es el estado actual. Ser concreto: números, archivos, resultados.]
|
|
19
|
+
</resumen>
|
|
20
|
+
|
|
21
|
+
<artefactos>
|
|
22
|
+
<artefacto tipo="archivo" ruta="[ruta/al/archivo.md]" />
|
|
23
|
+
<artefacto tipo="archivo" ruta="[ruta/al/otro.py]" />
|
|
24
|
+
<!-- tipo puede ser: archivo | log | url | directorio -->
|
|
25
|
+
</artefactos>
|
|
26
|
+
|
|
27
|
+
<metricas>
|
|
28
|
+
<metrica nombre="tareas_completadas" valor="[N]" />
|
|
29
|
+
<metrica nombre="tareas_totales" valor="[N]" />
|
|
30
|
+
<metrica nombre="tests_pasando" valor="[N]" />
|
|
31
|
+
<metrica nombre="cobertura_pct" valor="[N]" />
|
|
32
|
+
<!-- Agregar métricas relevantes al contexto -->
|
|
33
|
+
</metricas>
|
|
34
|
+
|
|
35
|
+
<preguntas>
|
|
36
|
+
<!-- Opcional: preguntas específicas que el humano debe considerar -->
|
|
37
|
+
<pregunta id="q1">[Pregunta concreta sobre el trabajo entregado]</pregunta>
|
|
38
|
+
<pregunta id="q2">[Pregunta sobre riesgo o edge case identificado]</pregunta>
|
|
39
|
+
</preguntas>
|
|
40
|
+
|
|
41
|
+
<opciones>
|
|
42
|
+
<opcion valor="aprobar">Aprobar y continuar con [siguiente paso]</opcion>
|
|
43
|
+
<opcion valor="ajustar">Ajustar con feedback específico</opcion>
|
|
44
|
+
<opcion valor="rechazar">Rechazar y rehacer desde [punto de reintento]</opcion>
|
|
45
|
+
</opciones>
|
|
46
|
+
</checkpoint>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Ejemplo concreto: verificación de slice de autenticación
|
|
50
|
+
|
|
51
|
+
```xml
|
|
52
|
+
<checkpoint type="human-verify" id="verify-auth-slice1" auto_advance="false">
|
|
53
|
+
<titulo>Slice 1 completo: modelos y endpoints de autenticación JWT</titulo>
|
|
54
|
+
|
|
55
|
+
<resumen>
|
|
56
|
+
Se implementaron los modelos Usuario y Sesion con migraciones Alembic,
|
|
57
|
+
los endpoints /auth/login y /auth/refresh con RBAC, y los schemas Pydantic
|
|
58
|
+
correspondientes. La cobertura de tests es 94%. El linter y mypy pasan sin errores.
|
|
59
|
+
</resumen>
|
|
60
|
+
|
|
61
|
+
<artefactos>
|
|
62
|
+
<artefacto tipo="archivo" ruta="app/models/usuario.py" />
|
|
63
|
+
<artefacto tipo="archivo" ruta="app/routers/auth.py" />
|
|
64
|
+
<artefacto tipo="archivo" ruta="tests/test_auth.py" />
|
|
65
|
+
<artefacto tipo="archivo" ruta="alembic/versions/001_usuarios.py" />
|
|
66
|
+
</artefactos>
|
|
67
|
+
|
|
68
|
+
<metricas>
|
|
69
|
+
<metrica nombre="endpoints_implementados" valor="2" />
|
|
70
|
+
<metrica nombre="tests_pasando" valor="18" />
|
|
71
|
+
<metrica nombre="cobertura_pct" valor="94" />
|
|
72
|
+
<metrica nombre="errores_mypy" valor="0" />
|
|
73
|
+
</metricas>
|
|
74
|
+
|
|
75
|
+
<preguntas>
|
|
76
|
+
<pregunta id="q1">¿El tiempo de expiración del token (24h) coincide con el requerimiento de negocio?</pregunta>
|
|
77
|
+
<pregunta id="q2">¿Se requiere soporte para múltiples sesiones simultáneas o solo la sesión más reciente?</pregunta>
|
|
78
|
+
</preguntas>
|
|
79
|
+
|
|
80
|
+
<opciones>
|
|
81
|
+
<opcion valor="aprobar">Aprobar y continuar con Slice 2 (CRUD de usuarios)</opcion>
|
|
82
|
+
<opcion valor="ajustar">Ajustar con feedback específico antes de Slice 2</opcion>
|
|
83
|
+
<opcion valor="rechazar">Rechazar y rehacer el slice desde los modelos</opcion>
|
|
84
|
+
</opciones>
|
|
85
|
+
</checkpoint>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Variante auto_advance (informativo, sin pausa)
|
|
89
|
+
|
|
90
|
+
Usar cuando el resultado es positivo y no requiere confirmación explícita:
|
|
91
|
+
|
|
92
|
+
```xml
|
|
93
|
+
<checkpoint type="human-verify" id="verify-lint-[fase]" auto_advance="true">
|
|
94
|
+
<titulo>Lint, type-check y tests pasaron — continuando automáticamente</titulo>
|
|
95
|
+
|
|
96
|
+
<resumen>
|
|
97
|
+
Todos los archivos del Slice [N] pasaron ruff, mypy y pytest sin errores.
|
|
98
|
+
Se continúa automáticamente con el Slice [N+1].
|
|
99
|
+
</resumen>
|
|
100
|
+
|
|
101
|
+
<artefactos>
|
|
102
|
+
<artefacto tipo="log" ruta=".claude/logs/lint-[fecha].txt" />
|
|
103
|
+
</artefactos>
|
|
104
|
+
|
|
105
|
+
<metricas>
|
|
106
|
+
<metrica nombre="errores_ruff" valor="0" />
|
|
107
|
+
<metrica nombre="errores_mypy" valor="0" />
|
|
108
|
+
<metrica nombre="tests_pasando" valor="[N]" />
|
|
109
|
+
</metricas>
|
|
110
|
+
</checkpoint>
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Tipo 2: decision
|
|
116
|
+
|
|
117
|
+
Usar cuando hay una bifurcación real donde ambas opciones son válidas y el humano
|
|
118
|
+
debe elegir según criterios de negocio, riesgo o prioridad que el agente no puede resolver.
|
|
119
|
+
|
|
120
|
+
```xml
|
|
121
|
+
<checkpoint type="decision" id="decision-[dominio]-[tema]" auto_advance="false">
|
|
122
|
+
<titulo>[Decisión que se necesita — formulada como pregunta o elección]</titulo>
|
|
123
|
+
|
|
124
|
+
<contexto>
|
|
125
|
+
[Explicar por qué se llegó a esta bifurcación. Qué dice (o no dice) la spec.
|
|
126
|
+
Qué consecuencias tiene cada camino. 3-5 oraciones máximo.]
|
|
127
|
+
</contexto>
|
|
128
|
+
|
|
129
|
+
<opciones>
|
|
130
|
+
<opcion id="A" recomendada="false">
|
|
131
|
+
<!-- recomendada="true" en la opción que el agente recomienda -->
|
|
132
|
+
<nombre>[Nombre corto de la opción A]</nombre>
|
|
133
|
+
<pros>
|
|
134
|
+
<pro>[Ventaja concreta y medible]</pro>
|
|
135
|
+
<pro>[Otra ventaja]</pro>
|
|
136
|
+
</pros>
|
|
137
|
+
<contras>
|
|
138
|
+
<contra>[Desventaja concreta]</contra>
|
|
139
|
+
<contra>[Otra desventaja]</contra>
|
|
140
|
+
</contras>
|
|
141
|
+
<impacto>[Impacto en tiempo, costo, riesgo o mantenimiento. Sé específico.]</impacto>
|
|
142
|
+
</opcion>
|
|
143
|
+
|
|
144
|
+
<opcion id="B" recomendada="true">
|
|
145
|
+
<nombre>[Nombre corto de la opción B]</nombre>
|
|
146
|
+
<pros>
|
|
147
|
+
<pro>[Ventaja]</pro>
|
|
148
|
+
</pros>
|
|
149
|
+
<contras>
|
|
150
|
+
<contra>[Desventaja]</contra>
|
|
151
|
+
</contras>
|
|
152
|
+
<impacto>[Impacto]</impacto>
|
|
153
|
+
</opcion>
|
|
154
|
+
|
|
155
|
+
<!-- Agregar opción C solo si genuinamente hay 3 caminos distintos.
|
|
156
|
+
Máximo 4 opciones por checkpoint. -->
|
|
157
|
+
</opciones>
|
|
158
|
+
|
|
159
|
+
<recomendacion>
|
|
160
|
+
[Párrafo explicando por qué el agente recomienda la opción marcada.
|
|
161
|
+
Fundamentar con criterios técnicos, no preferencias. Ser directo.]
|
|
162
|
+
</recomendacion>
|
|
163
|
+
|
|
164
|
+
<consecuencias_de_espera>
|
|
165
|
+
[Qué está bloqueado mientras no se toma esta decisión.
|
|
166
|
+
Qué tareas pueden avanzar de forma independiente mientras tanto.]
|
|
167
|
+
</consecuencias_de_espera>
|
|
168
|
+
</checkpoint>
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Ejemplo concreto: elección de estrategia de migración
|
|
172
|
+
|
|
173
|
+
```xml
|
|
174
|
+
<checkpoint type="decision" id="decision-migracion-schema-v2" auto_advance="false">
|
|
175
|
+
<titulo>Estrategia de migración: big-bang vs incremental para schema v2</titulo>
|
|
176
|
+
|
|
177
|
+
<contexto>
|
|
178
|
+
El schema v2 requiere renombrar 12 columnas y agregar 3 tablas nuevas.
|
|
179
|
+
La base de datos de producción tiene 2.3M registros. La spec no especifica
|
|
180
|
+
la estrategia de migración. Hay dos caminos viables con trade-offs distintos.
|
|
181
|
+
</contexto>
|
|
182
|
+
|
|
183
|
+
<opciones>
|
|
184
|
+
<opcion id="A" recomendada="false">
|
|
185
|
+
<nombre>Big-bang: migración única con ventana de mantenimiento</nombre>
|
|
186
|
+
<pros>
|
|
187
|
+
<pro>Código más simple: sin lógica de compatibilidad dual</pro>
|
|
188
|
+
<pro>Migración completa en una sola operación atómica</pro>
|
|
189
|
+
</pros>
|
|
190
|
+
<contras>
|
|
191
|
+
<contra>Requiere ventana de mantenimiento de ~45 minutos</contra>
|
|
192
|
+
<contra>Riesgo de rollback complejo si falla a mitad</contra>
|
|
193
|
+
</contras>
|
|
194
|
+
<impacto>Downtime de 45 min. Implementación: 2 días. Sin deuda técnica residual.</impacto>
|
|
195
|
+
</opcion>
|
|
196
|
+
|
|
197
|
+
<opcion id="B" recomendada="true">
|
|
198
|
+
<nombre>Incremental: expand-contract pattern (sin downtime)</nombre>
|
|
199
|
+
<pros>
|
|
200
|
+
<pro>Zero downtime: producción nunca se interrumpe</pro>
|
|
201
|
+
<pro>Rollback simple en cualquier punto de la migración</pro>
|
|
202
|
+
</pros>
|
|
203
|
+
<contras>
|
|
204
|
+
<contra>Código temporal de compatibilidad por ~2 semanas</contra>
|
|
205
|
+
<contra>Requiere 3 deployments en lugar de 1</contra>
|
|
206
|
+
</contras>
|
|
207
|
+
<impacto>Sin downtime. Implementación: 5 días. Complejidad temporal gestionable.</impacto>
|
|
208
|
+
</opcion>
|
|
209
|
+
</opciones>
|
|
210
|
+
|
|
211
|
+
<recomendacion>
|
|
212
|
+
Se recomienda la opción B (expand-contract) porque la aplicación tiene SLA de
|
|
213
|
+
disponibilidad del 99.5% y 45 minutos de downtime viola ese acuerdo. El coste
|
|
214
|
+
adicional de 3 días de implementación es menor que el riesgo de incumplimiento del SLA.
|
|
215
|
+
</recomendacion>
|
|
216
|
+
|
|
217
|
+
<consecuencias_de_espera>
|
|
218
|
+
El Slice 3 (endpoints de reportes) está bloqueado hasta esta decisión.
|
|
219
|
+
Los Slices 1 y 2 (autenticación y CRUD básico) pueden continuar independientemente.
|
|
220
|
+
</consecuencias_de_espera>
|
|
221
|
+
</checkpoint>
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## Tipo 3: human-action
|
|
227
|
+
|
|
228
|
+
Usar cuando el agente necesita que el humano realice una acción fuera del alcance
|
|
229
|
+
del agente: configurar credenciales, aprobar gastos, ejecutar en sistemas restringidos, etc.
|
|
230
|
+
|
|
231
|
+
```xml
|
|
232
|
+
<checkpoint type="human-action" id="action-[dominio]-[accion]" auto_advance="false">
|
|
233
|
+
<titulo>[Acción requerida — imperativo claro: "Configurar X", "Aprobar Y", "Ejecutar Z"]</titulo>
|
|
234
|
+
|
|
235
|
+
<razon>
|
|
236
|
+
[Por qué el agente no puede hacer esto por sí solo. Ser honesto y específico:
|
|
237
|
+
"No tiene acceso a X", "Requiere autorización de Y", "Está fuera del sandbox".]
|
|
238
|
+
</razon>
|
|
239
|
+
|
|
240
|
+
<acciones_requeridas>
|
|
241
|
+
<accion orden="1">
|
|
242
|
+
<descripcion>[Paso concreto y accionable]</descripcion>
|
|
243
|
+
<detalle>
|
|
244
|
+
[Información específica necesaria para completar el paso:
|
|
245
|
+
rutas, IDs, formatos, valores exactos.]
|
|
246
|
+
</detalle>
|
|
247
|
+
</accion>
|
|
248
|
+
|
|
249
|
+
<accion orden="2">
|
|
250
|
+
<descripcion>[Siguiente paso]</descripcion>
|
|
251
|
+
<detalle>[Detalles]</detalle>
|
|
252
|
+
</accion>
|
|
253
|
+
|
|
254
|
+
<accion orden="N">
|
|
255
|
+
<descripcion>Confirmar aquí cuando todas las acciones anteriores estén completadas</descripcion>
|
|
256
|
+
</accion>
|
|
257
|
+
</acciones_requeridas>
|
|
258
|
+
|
|
259
|
+
<bloqueado_hasta>
|
|
260
|
+
[Qué tareas están bloqueadas hasta que estas acciones se completen.
|
|
261
|
+
Ser específico: nombres de tareas, slices o fases.]
|
|
262
|
+
</bloqueado_hasta>
|
|
263
|
+
|
|
264
|
+
<tiempo_estimado>[Estimación realista: "5-10 minutos", "1-2 horas", "1 día hábil"]</tiempo_estimado>
|
|
265
|
+
|
|
266
|
+
<!-- Opcional: notificación de urgencia -->
|
|
267
|
+
<notificacion>
|
|
268
|
+
<prioridad>urgente</prioridad>
|
|
269
|
+
<canales>desktop,telegram</canales>
|
|
270
|
+
<resumen_corto>BLOQUEADO: [descripción de 60 chars máximo]</resumen_corto>
|
|
271
|
+
</notificacion>
|
|
272
|
+
</checkpoint>
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### Ejemplo concreto: configuración de secretos en producción
|
|
276
|
+
|
|
277
|
+
```xml
|
|
278
|
+
<checkpoint type="human-action" id="action-secrets-produccion" auto_advance="false">
|
|
279
|
+
<titulo>Configurar credenciales de base de datos en gestor de secretos de producción</titulo>
|
|
280
|
+
|
|
281
|
+
<razon>
|
|
282
|
+
El agente no tiene acceso al gestor de secretos de producción (AWS Secrets Manager).
|
|
283
|
+
Las credenciales son necesarias para que el pipeline de CI pueda ejecutar las migraciones
|
|
284
|
+
de Alembic contra la base de datos de producción en el siguiente deployment.
|
|
285
|
+
</razon>
|
|
286
|
+
|
|
287
|
+
<acciones_requeridas>
|
|
288
|
+
<accion orden="1">
|
|
289
|
+
<descripcion>Acceder a AWS Secrets Manager en la consola de producción</descripcion>
|
|
290
|
+
<detalle>
|
|
291
|
+
Región: us-east-1
|
|
292
|
+
Cuenta AWS: [número de cuenta]
|
|
293
|
+
URL: https://console.aws.amazon.com/secretsmanager/home?region=us-east-1
|
|
294
|
+
</detalle>
|
|
295
|
+
</accion>
|
|
296
|
+
|
|
297
|
+
<accion orden="2">
|
|
298
|
+
<descripcion>Crear o actualizar el secreto "sigaf/prod/database"</descripcion>
|
|
299
|
+
<detalle>
|
|
300
|
+
Estructura JSON requerida (copiar exactamente):
|
|
301
|
+
{
|
|
302
|
+
"host": "[hostname RDS de producción]",
|
|
303
|
+
"port": 5432,
|
|
304
|
+
"database": "sigaf_prod",
|
|
305
|
+
"username": "[usuario de producción]",
|
|
306
|
+
"password": "[contraseña segura — mínimo 32 chars, símbolos incluidos]"
|
|
307
|
+
}
|
|
308
|
+
</detalle>
|
|
309
|
+
</accion>
|
|
310
|
+
|
|
311
|
+
<accion orden="3">
|
|
312
|
+
<descripcion>Agregar el ARN del secreto como variable en GitHub Actions</descripcion>
|
|
313
|
+
<detalle>
|
|
314
|
+
Settings → Secrets and variables → Actions → New repository secret
|
|
315
|
+
Nombre: PROD_DB_SECRET_ARN
|
|
316
|
+
Valor: arn:aws:secretsmanager:us-east-1:[cuenta]:secret:sigaf/prod/database-[sufijo]
|
|
317
|
+
</detalle>
|
|
318
|
+
</accion>
|
|
319
|
+
|
|
320
|
+
<accion orden="4">
|
|
321
|
+
<descripcion>Confirmar aquí que los tres pasos anteriores están completos</descripcion>
|
|
322
|
+
</accion>
|
|
323
|
+
</acciones_requeridas>
|
|
324
|
+
|
|
325
|
+
<bloqueado_hasta>
|
|
326
|
+
La tarea "deploy-produccion" y el Slice 4 completo están bloqueados hasta
|
|
327
|
+
completar estas acciones. El desarrollo local puede continuar sin ellas.
|
|
328
|
+
</bloqueado_hasta>
|
|
329
|
+
|
|
330
|
+
<tiempo_estimado>10-15 minutos</tiempo_estimado>
|
|
331
|
+
|
|
332
|
+
<notificacion>
|
|
333
|
+
<prioridad>urgente</prioridad>
|
|
334
|
+
<canales>desktop,telegram</canales>
|
|
335
|
+
<resumen_corto>BLOQUEADO: Configurar credenciales AWS para deploy a producción</resumen_corto>
|
|
336
|
+
</notificacion>
|
|
337
|
+
</checkpoint>
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
---
|
|
341
|
+
|
|
342
|
+
## Reglas de selección de tipo
|
|
343
|
+
|
|
344
|
+
| Situación | Tipo correcto |
|
|
345
|
+
|-----------|--------------|
|
|
346
|
+
| El agente terminó una tarea y quiere confirmación de calidad | `human-verify` |
|
|
347
|
+
| El lint/tests pasan, reportar sin bloquear | `human-verify` con `auto_advance="true"` |
|
|
348
|
+
| Hay dos opciones técnicas igualmente válidas con distinto impacto | `decision` |
|
|
349
|
+
| Hay una opción claramente superior | NO usar `decision` — usar `human-verify` con recomendación |
|
|
350
|
+
| El agente necesita credenciales, accesos o aprobaciones externas | `human-action` |
|
|
351
|
+
| Necesita que alguien ejecute algo en producción | `human-action` |
|
|
352
|
+
|
|
353
|
+
## Anti-patrones
|
|
354
|
+
|
|
355
|
+
- Checkpoint sin `id` único: dificulta la trazabilidad en ESTADO.md
|
|
356
|
+
- `auto_advance="true"` en `decision` o `human-action`: nunca válido
|
|
357
|
+
- Más de 4 opciones en un `decision`: sobrecarga cognitiva
|
|
358
|
+
- `human-action` para algo que el agente puede hacer con sus herramientas disponibles
|
|
359
|
+
- `decision` sin campo `recomendacion`: el agente siempre debe tener una posición fundamentada
|
|
360
|
+
- Omitir `consecuencias_de_espera` en `decision`: el humano necesita saber qué se bloquea
|