@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,220 @@
|
|
|
1
|
+
# Deprecación y Migración — Implementaciones Completas
|
|
2
|
+
|
|
3
|
+
## Feature Flags para Migraciones Graduales
|
|
4
|
+
|
|
5
|
+
```python
|
|
6
|
+
# feature_flags.py — flags para migrar gradualmente
|
|
7
|
+
from enum import Enum
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class FeatureFlag(str, Enum):
|
|
11
|
+
MOTOR_BUSQUEDA_OPENSEARCH = "motor_busqueda_opensearch"
|
|
12
|
+
API_V2_RESPUESTA = "api_v2_respuesta"
|
|
13
|
+
SESIONES_POSTGRES = "sesiones_postgres"
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class ServicioFeatureFlags:
|
|
17
|
+
"""Lee feature flags desde la base de datos con caché local."""
|
|
18
|
+
|
|
19
|
+
def esta_activo(self, flag: FeatureFlag, contexto: dict | None = None) -> bool:
|
|
20
|
+
configuracion = self._obtener_config(flag)
|
|
21
|
+
|
|
22
|
+
if not configuracion.activo:
|
|
23
|
+
return False
|
|
24
|
+
|
|
25
|
+
if configuracion.porcentaje_rollout < 100:
|
|
26
|
+
if contexto and "usuario_id" in contexto:
|
|
27
|
+
hash_usuario = hash(contexto["usuario_id"] + flag.value) % 100
|
|
28
|
+
return hash_usuario < configuracion.porcentaje_rollout
|
|
29
|
+
|
|
30
|
+
return True
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
# Uso en servicio de búsqueda
|
|
34
|
+
class ServicioBusqueda:
|
|
35
|
+
def __init__(self, flags: ServicioFeatureFlags):
|
|
36
|
+
self.flags = flags
|
|
37
|
+
self.es_cliente = ElasticSearchCliente()
|
|
38
|
+
self.os_cliente = OpenSearchCliente()
|
|
39
|
+
|
|
40
|
+
def buscar(self, query: str, usuario_id: str) -> list[Resultado]:
|
|
41
|
+
if self.flags.esta_activo(
|
|
42
|
+
FeatureFlag.MOTOR_BUSQUEDA_OPENSEARCH,
|
|
43
|
+
contexto={"usuario_id": usuario_id},
|
|
44
|
+
):
|
|
45
|
+
return self.os_cliente.buscar(query)
|
|
46
|
+
else:
|
|
47
|
+
return self.es_cliente.buscar(query)
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Patrón Strangler Fig — Migración de Monolito a Microservicios
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
Antes:
|
|
56
|
+
Cliente -> [Monolito] -> BD monolito
|
|
57
|
+
|
|
58
|
+
Proceso (reemplazar módulo por módulo):
|
|
59
|
+
Paso 1: Cliente -> [Proxy/API Gateway] -> [Monolito]
|
|
60
|
+
Paso 2: Cliente -> [Proxy] -> { [Monolito], [Nuevo Servicio Pagos] }
|
|
61
|
+
Paso 3: Cliente -> [Proxy] -> { [Monolito sin pagos], [Servicio Pagos] }
|
|
62
|
+
...
|
|
63
|
+
Final: Cliente -> [API Gateway] -> { [Svc Pedidos], [Svc Pagos], [Svc Usuarios] }
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
```python
|
|
67
|
+
# proxy_router.py — Strangler Fig con feature flags
|
|
68
|
+
class ProxyEstrangulador:
|
|
69
|
+
"""
|
|
70
|
+
Enruta peticiones al monolito o al nuevo servicio según el feature flag.
|
|
71
|
+
Permite migración gradual sin cambios en el cliente.
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
def __init__(
|
|
75
|
+
self,
|
|
76
|
+
monolito_url: str,
|
|
77
|
+
flags: ServicioFeatureFlags,
|
|
78
|
+
):
|
|
79
|
+
self.monolito_url = monolito_url
|
|
80
|
+
self.flags = flags
|
|
81
|
+
self.servicios_nuevos: dict[str, str] = {}
|
|
82
|
+
|
|
83
|
+
def registrar_servicio(self, patron_ruta: str, url_servicio: str) -> None:
|
|
84
|
+
self.servicios_nuevos[patron_ruta] = url_servicio
|
|
85
|
+
|
|
86
|
+
async def enrutar(self, request: Request) -> Response:
|
|
87
|
+
ruta = request.url.path
|
|
88
|
+
|
|
89
|
+
for patron, url_servicio in self.servicios_nuevos.items():
|
|
90
|
+
if ruta.startswith(patron):
|
|
91
|
+
flag_nombre = f"nuevo_servicio_{patron.strip('/').replace('/', '_')}"
|
|
92
|
+
usuario_id = request.headers.get("X-User-ID")
|
|
93
|
+
|
|
94
|
+
if self.flags.esta_activo(
|
|
95
|
+
FeatureFlag(flag_nombre),
|
|
96
|
+
contexto={"usuario_id": usuario_id},
|
|
97
|
+
):
|
|
98
|
+
return await self._proxy(request, url_servicio)
|
|
99
|
+
|
|
100
|
+
return await self._proxy(request, self.monolito_url)
|
|
101
|
+
|
|
102
|
+
async def _proxy(self, request: Request, destino_url: str) -> Response:
|
|
103
|
+
async with httpx.AsyncClient() as cliente:
|
|
104
|
+
respuesta = await cliente.request(
|
|
105
|
+
method=request.method,
|
|
106
|
+
url=f"{destino_url}{request.url.path}",
|
|
107
|
+
headers=dict(request.headers),
|
|
108
|
+
content=await request.body(),
|
|
109
|
+
timeout=30.0,
|
|
110
|
+
)
|
|
111
|
+
return Response(
|
|
112
|
+
content=respuesta.content,
|
|
113
|
+
status_code=respuesta.status_code,
|
|
114
|
+
headers=dict(respuesta.headers),
|
|
115
|
+
)
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Guía de Migración — Plantilla para Usuarios
|
|
121
|
+
|
|
122
|
+
```markdown
|
|
123
|
+
# Guía de Migración: v1 -> v2 del Endpoint de Usuarios
|
|
124
|
+
|
|
125
|
+
## Resumen
|
|
126
|
+
El endpoint `/v1/usuarios` será eliminado el **2026-09-01**.
|
|
127
|
+
Esta guía explica cómo migrar a `/v2/usuarios`.
|
|
128
|
+
|
|
129
|
+
## Qué cambió?
|
|
130
|
+
|
|
131
|
+
| Aspecto | v1 | v2 |
|
|
132
|
+
|---------|----|----|
|
|
133
|
+
| Campo nombre | `nombre_completo` (string) | `nombre` + `apellidos` (strings separados) |
|
|
134
|
+
| Dirección | Objeto plano | Objeto anidado con `calle`, `ciudad`, `cp` |
|
|
135
|
+
| Fechas | `"2024-01-15T10:00:00"` (sin TZ) | `"2024-01-15T10:00:00-06:00"` (con TZ) |
|
|
136
|
+
|
|
137
|
+
## Antes (v1)
|
|
138
|
+
```json
|
|
139
|
+
GET /v1/usuarios/abc123
|
|
140
|
+
{
|
|
141
|
+
"id": "abc123",
|
|
142
|
+
"nombre_completo": "Ana García López",
|
|
143
|
+
"direccion": "Insurgentes Sur 123, CDMX, 06600"
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Después (v2)
|
|
148
|
+
```json
|
|
149
|
+
GET /v2/usuarios/abc123
|
|
150
|
+
{
|
|
151
|
+
"id": "abc123",
|
|
152
|
+
"nombre": "Ana",
|
|
153
|
+
"apellidos": "García López",
|
|
154
|
+
"direccion": {
|
|
155
|
+
"calle": "Insurgentes Sur 123",
|
|
156
|
+
"ciudad": "Ciudad de México",
|
|
157
|
+
"cp": "06600"
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Script de Migración (TypeScript)
|
|
163
|
+
```typescript
|
|
164
|
+
function adaptarUsuarioV1aV2(v1: UsuarioV1): UsuarioV2 {
|
|
165
|
+
const [nombre, ...apellidosParts] = v1.nombre_completo.split(" ");
|
|
166
|
+
return {
|
|
167
|
+
id: v1.id,
|
|
168
|
+
nombre,
|
|
169
|
+
apellidos: apellidosParts.join(" "),
|
|
170
|
+
direccion: parsearDireccion(v1.direccion),
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## Línea de Tiempo
|
|
176
|
+
- **2026-03-01**: v2 disponible en staging
|
|
177
|
+
- **2026-04-01**: v2 disponible en producción
|
|
178
|
+
- **2026-06-01**: v1 retorna header `Deprecation: true`
|
|
179
|
+
- **2026-09-01**: v1 eliminado (retorna 410 Gone)
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Gestión de Breaking Changes en APIs Públicas
|
|
185
|
+
|
|
186
|
+
```python
|
|
187
|
+
# Detectar clientes que aún usan endpoints deprecados
|
|
188
|
+
class MonitorDeprecados:
|
|
189
|
+
def registrar_uso(
|
|
190
|
+
self,
|
|
191
|
+
endpoint: str,
|
|
192
|
+
version: str,
|
|
193
|
+
cliente_id: str,
|
|
194
|
+
user_agent: str,
|
|
195
|
+
) -> None:
|
|
196
|
+
db.execute("""
|
|
197
|
+
INSERT INTO uso_endpoints_deprecados
|
|
198
|
+
(endpoint, version, cliente_id, user_agent, timestamp)
|
|
199
|
+
VALUES (:ep, :v, :cid, :ua, now())
|
|
200
|
+
ON CONFLICT (endpoint, version, cliente_id)
|
|
201
|
+
DO UPDATE SET
|
|
202
|
+
ultimo_uso = now(),
|
|
203
|
+
total_llamadas = uso_endpoints_deprecados.total_llamadas + 1
|
|
204
|
+
""", {"ep": endpoint, "v": version, "cid": cliente_id, "ua": user_agent})
|
|
205
|
+
|
|
206
|
+
def clientes_activos_deprecados(
|
|
207
|
+
self, endpoint: str, dias: int = 30
|
|
208
|
+
) -> list[dict]:
|
|
209
|
+
return db.execute("""
|
|
210
|
+
SELECT
|
|
211
|
+
cliente_id,
|
|
212
|
+
MAX(ultimo_uso) AS ultimo_uso,
|
|
213
|
+
SUM(total_llamadas) AS llamadas_totales
|
|
214
|
+
FROM uso_endpoints_deprecados
|
|
215
|
+
WHERE endpoint = :ep
|
|
216
|
+
AND ultimo_uso > now() - INTERVAL ':dias days'
|
|
217
|
+
GROUP BY cliente_id
|
|
218
|
+
ORDER BY llamadas_totales DESC
|
|
219
|
+
""", {"ep": endpoint, "dias": dias}).fetchall()
|
|
220
|
+
```
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: design-tokens
|
|
3
|
+
description: Design tokens y sistemas de diseño. Cubre definición de tokens (color, tipografía, espaciado, sombras, bordes), formatos (JSON, YAML, CSS custom properties), tokens semánticos vs primitivos, theming (light/dark/brand), transformación con Style Dictionary, integración con Tailwind/CSS-in-JS/Angular Material y versionado.
|
|
4
|
+
version: "1.0.0"
|
|
5
|
+
herramientasPermitidas: [Read, Grep]
|
|
6
|
+
evolvable: true # default para skill estandar
|
|
7
|
+
exclusiones:
|
|
8
|
+
- "No cargar para implementar componentes UI concretos (botones, formularios, cards) — para componentes cargar `angular-moderno`, `react-experto` o el skill del framework."
|
|
9
|
+
- "No cargar para configuración de Tailwind CSS sin sistema de tokens — para Tailwind sin design system cargar `tailwind-experto`."
|
|
10
|
+
- "No cargar para diseño responsivo (breakpoints, container queries, layout adaptativo) — para responsivo cargar `diseno-responsivo`."
|
|
11
|
+
- "No cargar para accesibilidad de color (contraste, daltonismo) — los tokens definen los colores, pero la validación de accesibilidad corresponde a `accesibilidad-a11y`."
|
|
12
|
+
---
|
|
13
|
+
# Design Tokens y Sistemas de Diseño
|
|
14
|
+
|
|
15
|
+
## Cuándo NO cargar
|
|
16
|
+
|
|
17
|
+
- La tarea es implementar componentes UI concretos (botones, inputs, cards): cargar el skill del framework (`angular-moderno`, `react-experto`).
|
|
18
|
+
- La configuración es de Tailwind CSS sin un sistema de tokens formal: cargar `tailwind-experto`.
|
|
19
|
+
- El trabajo es diseño responsivo (breakpoints, layout, container queries): cargar `diseno-responsivo`.
|
|
20
|
+
- La validación es de accesibilidad de color (ratios de contraste WCAG): cargar `accesibilidad-a11y`.
|
|
21
|
+
|
|
22
|
+
## Qué es un Design Token
|
|
23
|
+
|
|
24
|
+
Un design token es la unidad mínima de una decisión de diseño: un par nombre-valor
|
|
25
|
+
con semántica explícita. No es `#3b82f6` — es `color.marca.primario = #3b82f6`.
|
|
26
|
+
|
|
27
|
+
**Por qué importan**:
|
|
28
|
+
- Una sola fuente de verdad para diseñadores y desarrolladores
|
|
29
|
+
- Los cambios de tema afectan todos los consumidores automáticamente
|
|
30
|
+
- Los tokens semánticos aíslan los cambios de implementación
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Tipos de Tokens — Regla Fundamental
|
|
35
|
+
|
|
36
|
+
### Primitivos (base)
|
|
37
|
+
|
|
38
|
+
Valores crudos sin semántica de uso: `color.azul.500 = #3b82f6`, `espacio.4 = 16px`.
|
|
39
|
+
|
|
40
|
+
### Semánticos (decisión de uso)
|
|
41
|
+
|
|
42
|
+
Referencian primitivos y comunican propósito: `color.marca.primario = {color.azul.600}`.
|
|
43
|
+
|
|
44
|
+
**REGLA**: Los componentes SIEMPRE usan tokens semánticos, NUNCA primitivos directamente.
|
|
45
|
+
|
|
46
|
+
```css
|
|
47
|
+
/* MAL */
|
|
48
|
+
color: #3b82f6;
|
|
49
|
+
|
|
50
|
+
/* BIEN */
|
|
51
|
+
color: var(--color-marca-primario);
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Formato de Tokens
|
|
57
|
+
|
|
58
|
+
- **JSON**: formato W3C Design Tokens (estándar emergente) con `$value`, `$type`, `$description`.
|
|
59
|
+
- **YAML**: legible para humanos, bueno para edición manual.
|
|
60
|
+
- **CSS Custom Properties**: output generado automáticamente para web.
|
|
61
|
+
|
|
62
|
+
```css
|
|
63
|
+
:root {
|
|
64
|
+
--color-marca-primario: var(--color-azul-500);
|
|
65
|
+
--color-texto-primario: var(--color-gris-900);
|
|
66
|
+
--espacio-componente-padding-md: var(--espacio-4);
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Theming: Light / Dark / Brand
|
|
73
|
+
|
|
74
|
+
- Tokens semánticos se sobreescriben por tema, primitivos no cambian.
|
|
75
|
+
- Usar `[data-tema="oscuro"]` para selector CSS del tema oscuro.
|
|
76
|
+
- Respetar `prefers-color-scheme: dark` con `:root:not([data-tema])`.
|
|
77
|
+
- Multi-tenant: sobreescribir `color.marca.*` por empresa.
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Transformación con Style Dictionary
|
|
82
|
+
|
|
83
|
+
- SIEMPRE generar tokens desde código, no mantener archivos manuales.
|
|
84
|
+
- Configurar platforms: `css`, `js` (con TypeScript declarations), `android`, `ios-swift`.
|
|
85
|
+
- Scripts: `tokens:build`, `tokens:watch`, `tokens:build:claro`, `tokens:build:oscuro`.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Integraciones con Frameworks
|
|
90
|
+
|
|
91
|
+
### Tailwind CSS v4
|
|
92
|
+
|
|
93
|
+
Referenciar CSS vars generados en `@theme`:
|
|
94
|
+
```css
|
|
95
|
+
@theme {
|
|
96
|
+
--color-primario: var(--color-marca-primario);
|
|
97
|
+
--font-sans: var(--fuente-sans);
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Angular Material
|
|
102
|
+
|
|
103
|
+
Definir paleta desde tokens primitivos, usar en `define-light-theme`.
|
|
104
|
+
|
|
105
|
+
### CSS-in-JS
|
|
106
|
+
|
|
107
|
+
Objeto de tema que referencia CSS custom properties.
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Versionado de Tokens
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
MAYOR: Eliminar o renombrar tokens (breaking change)
|
|
115
|
+
MENOR: Agregar tokens, cambiar valores existentes
|
|
116
|
+
PARCHE: Correcciones de metadata sin cambio de valor
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
- SIEMPRE mantener CHANGELOG de tokens.
|
|
120
|
+
- Tokens deprecated: marcar con `"$deprecated": true` + mensaje de migración.
|
|
121
|
+
- NUNCA renombrar sin período de transición (alias del viejo al nuevo).
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Anti-patrones
|
|
126
|
+
|
|
127
|
+
| Anti-patrón | Corrección |
|
|
128
|
+
|-------------|------------|
|
|
129
|
+
| Primitivos directamente en componentes | Usar tokens semánticos |
|
|
130
|
+
| Tokens de un solo uso | No crear — usar valor directo |
|
|
131
|
+
| Sin documentación del propósito | `$description` en cada token |
|
|
132
|
+
| Cambiar primitivo sin evaluar cascada | Revisar todos los semánticos que lo referencian |
|
|
133
|
+
| Tokens en Figma que no existen en código | Sincronizar con Style Dictionary |
|
|
134
|
+
| Versionar sin CHANGELOG | Mantener changelog de tokens |
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Checklist
|
|
139
|
+
|
|
140
|
+
- [ ] Tokens primitivos definidos (color, espacio, tipografía, sombras, bordes)
|
|
141
|
+
- [ ] Tokens semánticos para cada decisión de uso
|
|
142
|
+
- [ ] Componentes usan semánticos, nunca primitivos
|
|
143
|
+
- [ ] Temas light/dark funcionan con `prefers-color-scheme`
|
|
144
|
+
- [ ] Style Dictionary configurado y genera automáticamente
|
|
145
|
+
- [ ] CHANGELOG de tokens actualizado
|
|
146
|
+
- [ ] Tokens deprecated marcados con `$deprecated`
|
|
147
|
+
|
|
148
|
+
Para definiciones completas de tokens, temas, configuración de Style Dictionary e integraciones, ver [recursos/tokens-y-configuracion.md](recursos/tokens-y-configuracion.md).
|
|
149
|
+
|
|
150
|
+
## Gotchas / Errores comunes no obvios
|
|
151
|
+
|
|
152
|
+
**Style Dictionary genera los archivos CSS pero los tokens semánticos no resuelven los primitivos en runtime**: Style Dictionary resuelve las referencias `{color.azul.500}` en tiempo de build y genera variables CSS con el valor literal. Si el token semántico se define como `var(--color-azul-500)` en lugar de que Style Dictionary lo resuelva, el valor literal no se embebe y depende de que ambas variables estén declaradas en el mismo scope CSS. Causa: confundir la resolución en build-time de Style Dictionary con la referencia en runtime de CSS custom properties. Fix: en Style Dictionary, usar la sintaxis de referencia `{color.azul.500}` (llaves, sin `var()`) para que el build resuelva el valor. Las `var()` solo aparecen en el CSS generado cuando se configura explícitamente la plataforma `css/variables`.
|
|
153
|
+
|
|
154
|
+
**Cambiar un token primitivo de valor afecta componentes que deberían estar aislados por el token semántico**: si un componente usa directamente `var(--color-azul-500)` en lugar de `var(--color-marca-primario)`, cambiar el valor del primitivo cambia ese componente aunque el primitivo sea de "base" y no debería afectar la interfaz. Causa: la regla "componentes solo usan semánticos" se rompe gradualmente cuando los desarrolladores toman atajos. Fix: establecer un lint de CSS que detecte el uso directo de tokens primitivos en componentes: buscar `var(--color-azul-` o `var(--espacio-` en archivos de componentes y rechazar en CI.
|
|
155
|
+
|
|
156
|
+
**El tema oscuro no aplica cuando el usuario tiene `prefers-color-scheme: dark` pero el sistema tiene `[data-tema="claro"]` forzado**: la prioridad de CSS hace que `[data-tema="claro"]` en el `<html>` gane sobre `@media (prefers-color-scheme: dark)` porque el selector de atributo tiene mayor especificidad. Causa: el override explícito del tema en el atributo HTML tiene precedencia sobre la media query del sistema operativo. Fix: es el comportamiento correcto cuando el usuario eligió explícitamente el tema en la app. Pero si el sistema no tiene selector de tema en `<html>`, agregar `:root:not([data-tema])` al selector de dark mode para que solo aplique cuando no hay tema forzado.
|
|
157
|
+
|
|
158
|
+
**Los tokens deprecated con `"$deprecated": true` siguen siendo usados por componentes porque el equipo de diseño los eliminó en Figma pero no en código**: el `$deprecated: true` es solo metadata en el JSON de tokens — no causa error en build ni lint. Los componentes siguen usando el token viejo sin ninguna advertencia visible. Causa: la deprecación de tokens es declarativa pero no hay enforcement automático. Fix: agregar un paso en el pipeline de Style Dictionary que genera una lista de tokens deprecated y un script de lint que verifica si algún archivo CSS/TS los referencia. Sin enforcement, los tokens deprecated nunca se eliminan.
|