@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,199 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: diseno-herramientas-agente
|
|
3
|
+
description: >
|
|
4
|
+
Principios de diseno de herramientas (tools) para agentes de IA: Principio de
|
|
5
|
+
Consolidacion, reduccion arquitectonica, limite 10-20 tools por coleccion,
|
|
6
|
+
description como prompt engineering, naming MCP y diseno de mensajes de error.
|
|
7
|
+
Cargar cuando se disenan tools para agentes, se configura MCP, se definen
|
|
8
|
+
toolBudget en agentes SWL, o se evalua la coleccion de herramientas de un agente.
|
|
9
|
+
herramientasPermitidas: [Read, Grep]
|
|
10
|
+
exclusiones:
|
|
11
|
+
- "No cargar para implementar el hook que ejecuta los tools — este skill diseña la interfaz, no el handler; para implementar PreToolUse o PostToolUse cargar `hooks` o el agente correspondiente."
|
|
12
|
+
- "No cargar para evaluar si un agente específico cumple su SLA — eso es `evaluacion-agentes`; este skill cubre diseño de colecciones de tools, no rendimiento de agentes."
|
|
13
|
+
- "No cargar cuando el cambio es solo actualizar la descripción de una tool existente sin rediseñar la colección — el costo de carga no compensa para un fix de texto de una línea."
|
|
14
|
+
- "No cargar para configurar permisos de red o escritura en frontmatter de agentes — eso cae bajo `seguridad-agentes` y `estructura-proyecto-claude`."
|
|
15
|
+
evolvable: true # default para skill estandar
|
|
16
|
+
---
|
|
17
|
+
# Diseno de Herramientas para Agentes
|
|
18
|
+
|
|
19
|
+
## Cuando cargar
|
|
20
|
+
|
|
21
|
+
- Al disenar o revisar tools para agentes de IA (MCP servers, function calling)
|
|
22
|
+
- Al configurar `toolBudget` o `tools` en frontmatter de agentes SWL
|
|
23
|
+
- Al evaluar si un agente tiene demasiadas o muy pocas herramientas
|
|
24
|
+
- Al escribir descripciones de herramientas para consumo de LLMs
|
|
25
|
+
- Al disenar mensajes de error que un agente pueda interpretar
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Principio de Consolidacion
|
|
30
|
+
|
|
31
|
+
> Cuando multiples herramientas se solapan en funcionalidad, consolidar en una
|
|
32
|
+
> sola herramienta con parametros que controlan el comportamiento.
|
|
33
|
+
|
|
34
|
+
El exceso de herramientas similares degrada el rendimiento del agente porque:
|
|
35
|
+
- Aumenta el espacio de decision en cada turno
|
|
36
|
+
- Genera confuision sobre cuial herramienta usar para queii
|
|
37
|
+
- Consume tokens de contexto en las descripciones de cada tool
|
|
38
|
+
|
|
39
|
+
### Reduccion arquitectonica
|
|
40
|
+
|
|
41
|
+
Preferir la coleccion MINIMA de herramientas que cubra todos los casos de uso.
|
|
42
|
+
Si una herramienta puede hacer lo que dos hacen por separado con un parametro
|
|
43
|
+
adicional, consolidar.
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
MAL (3 tools solapadas):
|
|
47
|
+
- search_files_by_name
|
|
48
|
+
- search_files_by_content
|
|
49
|
+
- search_files_by_pattern
|
|
50
|
+
|
|
51
|
+
BIEN (1 tool con parametro):
|
|
52
|
+
- search_files(query, mode: "name" | "content" | "pattern")
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Limite de herramientas por coleccion
|
|
56
|
+
|
|
57
|
+
| Tamano de coleccion | Evaluacion |
|
|
58
|
+
|---------------------|------------|
|
|
59
|
+
| **1-10 tools** | Optimo. El agente puede razonar sobre todas sin confusion |
|
|
60
|
+
| **10-20 tools** | Aceptable. Documentar agrupacion logica para orientar al agente |
|
|
61
|
+
| **20-30 tools** | Riesgoso. Considerar dividir en sub-agentes especializados |
|
|
62
|
+
| **30+ tools** | Problematico. El agente perdera tiempo eligiendo y cometera errores |
|
|
63
|
+
|
|
64
|
+
En SWL, el `toolBudget` del frontmatter de agentes controla cuantos tool calls
|
|
65
|
+
puede hacer un agente por tarea (simple/standard/complex). El diseno de herramientas
|
|
66
|
+
complementa esto: menos herramientas mejor disenadas = menos calls necesarios.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Description como prompt engineering
|
|
71
|
+
|
|
72
|
+
La `description` de una herramienta es un prompt para el LLM. No es documentacion
|
|
73
|
+
para humanos. Disenarla como instruccion de activacion:
|
|
74
|
+
|
|
75
|
+
### Estructura de una description efectiva
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
[QUE hace en 1 oracion]
|
|
79
|
+
[CUANDO usarla — condiciones de activacion]
|
|
80
|
+
[CUANDO NO usarla — desambiguacion con herramientas similares]
|
|
81
|
+
[RESTRICCIONES criticas si las hay]
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Ejemplo concreto
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
MAL:
|
|
88
|
+
description: "Lee un archivo del sistema de archivos."
|
|
89
|
+
|
|
90
|
+
BIEN:
|
|
91
|
+
description: "Lee el contenido de un archivo por su ruta absoluta.
|
|
92
|
+
Usar para archivos de texto, codigo fuente, JSON, YAML y Markdown.
|
|
93
|
+
Para archivos binarios (imagenes, PDFs) usar read_binary en su lugar.
|
|
94
|
+
Limite: 2000 lineas por defecto; usar offset/limit para archivos grandes."
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Regla de los 100 tokens
|
|
98
|
+
|
|
99
|
+
La description de una herramienta debe tener entre 50 y 100 tokens. Menos de 50
|
|
100
|
+
no da suficiente contexto de activacion. Mas de 100 consume contexto sin beneficio
|
|
101
|
+
proporcional.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Naming de herramientas MCP
|
|
106
|
+
|
|
107
|
+
Para servidores MCP, el nombre de la herramienta sigue el patron:
|
|
108
|
+
`ServerName:tool_name`
|
|
109
|
+
|
|
110
|
+
Reglas de naming:
|
|
111
|
+
- `tool_name` en snake_case (no kebab-case, no camelCase)
|
|
112
|
+
- Verbo + sustantivo: `search_files`, `create_issue`, `read_document`
|
|
113
|
+
- Sin prefijos redundantes: `github:github_create_issue` es redundante;
|
|
114
|
+
usar `github:create_issue`
|
|
115
|
+
- Maximo 64 caracteres para el nombre completo
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Diseno de mensajes de error para agentes
|
|
120
|
+
|
|
121
|
+
Los mensajes de error de las herramientas son INSTRUCCIONES para el agente sobre
|
|
122
|
+
como recuperarse. No son mensajes para humanos.
|
|
123
|
+
|
|
124
|
+
### Estructura de un error accionable
|
|
125
|
+
|
|
126
|
+
```json
|
|
127
|
+
{
|
|
128
|
+
"error": "ARCHIVO_NO_ENCONTRADO",
|
|
129
|
+
"message": "El archivo src/main.py no existe",
|
|
130
|
+
"recovery": "Verificar la ruta con search_files antes de intentar leer.
|
|
131
|
+
Rutas similares encontradas: src/app/main.py, src/core/main.py"
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Principios
|
|
136
|
+
|
|
137
|
+
1. **Incluir sugerencia de recovery**: El agente necesita saber queii hacer despues
|
|
138
|
+
2. **Ofrecer alternativas**: Si la accion fallo, sugerir acciones correctivas concretas
|
|
139
|
+
3. **No exponer internals**: Stack traces no ayudan al agente; acciones si
|
|
140
|
+
4. **Mensajes como reask**: Enviar el error como contexto para que el LLM reformule
|
|
141
|
+
su siguiente intento (patron reask), no repetir el mismo call identico
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Integracion con el sistema SWL
|
|
146
|
+
|
|
147
|
+
### toolBudget en agentes
|
|
148
|
+
|
|
149
|
+
El campo `toolBudget` en frontmatter define limites por complejidad de tarea:
|
|
150
|
+
|
|
151
|
+
```yaml
|
|
152
|
+
toolBudget:
|
|
153
|
+
simple: 10 # tareas de busqueda, lectura
|
|
154
|
+
standard: 20 # implementacion de 1 slice
|
|
155
|
+
complex: 35 # refactor multi-archivo
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
El diseno de herramientas afecta directamente el presupuesto: herramientas bien
|
|
159
|
+
consolidadas permiten hacer mas con menos calls.
|
|
160
|
+
|
|
161
|
+
### toolsRequeridos en skills
|
|
162
|
+
|
|
163
|
+
Los skills pueden declarar `toolsRequeridos` en frontmatter para indicar queii
|
|
164
|
+
herramientas necesitan. Esto permite al orquestador verificar que el agente
|
|
165
|
+
asignado tiene acceso a esas herramientas antes de delegarle la tarea.
|
|
166
|
+
|
|
167
|
+
### Evaluacion de colecciones
|
|
168
|
+
|
|
169
|
+
Antes de agregar una herramienta nueva a un agente, verificar:
|
|
170
|
+
1. No hay otra herramienta que ya cubra el caso de uso (consolidacion)
|
|
171
|
+
2. La description sigue el patron de activacion (no solo describe)
|
|
172
|
+
3. Los errores incluyen recovery actions
|
|
173
|
+
4. El total de herramientas no supera 20 por agente
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Anti-patrones
|
|
178
|
+
|
|
179
|
+
- **Tool sprawl**: Agregar herramientas sin consolidar las existentes
|
|
180
|
+
- **Description generica**: "Hace cosas con archivos" — no activa correctamente
|
|
181
|
+
- **Error opaco**: "Error 500" sin sugerencia de recovery
|
|
182
|
+
- **Herramienta monolitica**: Una sola herramienta con 30 parametros opcionales
|
|
183
|
+
- **Duplicacion cross-agente**: La misma herramienta implementada distinto en 3 agentes
|
|
184
|
+
- **Retry ciego**: Reintentar la misma llamada identica ante un error — usar reask
|
|
185
|
+
|
|
186
|
+
## Cuándo NO cargar
|
|
187
|
+
|
|
188
|
+
- Se implementa el handler de un PreToolUse o PostToolUse — este skill diseña la interfaz, no el código del hook. Para hooks cargar la regla `hooks.md` o el agente que corresponda.
|
|
189
|
+
- Se evalúa el rendimiento histórico de un agente específico (tasa de éxito, latencia) — eso es `evaluacion-agentes`, no diseño de colección.
|
|
190
|
+
- El único cambio pendiente es corregir el texto de la descripción de una tool existente sin rediseñar la colección — el costo de carga no compensa.
|
|
191
|
+
- Se configuran `permisosRed`, `permisosEscritura` o `nivelRiesgo` en el frontmatter de un agente — esas decisiones caen en `seguridad-agentes` y `estructura-proyecto-claude`.
|
|
192
|
+
|
|
193
|
+
## Gotchas / Errores comunes no obvios
|
|
194
|
+
|
|
195
|
+
- **Description escrita para un humano, no para un LLM**: la descripción dice "Ejecuta comandos de sistema operativo" en vez de "Úsala cuando necesites ejecutar comandos de shell, manipular archivos o instalar dependencias". El LLM necesita saber cuándo activar la tool, no solo qué hace. Causa: confundir documentación para desarrolladores con prompt de activación. Solución: comenzar la description con el disparador de uso ("Úsala cuando...", "Llama esto cuando...") y mencionar los casos de uso concretos que activan la herramienta.
|
|
196
|
+
- **Consolidación que rompe el límite de parámetros**: al consolidar tres tools en una, el parámetro `accion` acepta 15 valores posibles y el LLM los confunde. Causa: consolidar sin rediseñar la interfaz — la herramienta resultante hereda toda la complejidad de las tres. Solución: verificar después de consolidar que la interfaz resultante tiene ≤6 parámetros y ≤5 valores por enum; si no cabe, la consolidación está sobre-agrupando.
|
|
197
|
+
- **Error `recovery` genérico ("intenta de nuevo")**: el agente reintenta la misma llamada idéntica y falla de nuevo. Causa: el campo `recovery` dice "Reintenta más tarde" sin indicar qué debe cambiar. Solución: el `recovery` debe describir la acción correctiva específica ("Verificar que el archivo existe antes de llamar", "Reducir el campo `limit` a menos de 100").
|
|
198
|
+
- **Naming MCP sin prefijo de servidor**: la tool `buscar_documentos` de un MCP server colisiona con otra tool local del mismo nombre. Causa: no seguir el formato `ServidorMCP:nombre_tool`. Solución: en MCP servers siempre usar `NombreServidor:accion_sustantivo`; el `:` no es opcional aunque el servidor solo tenga una tool.
|
|
199
|
+
- **toolBudget `complex: 35` ignorado porque el agente no lo valida**: el orquestador asigna una tarea simple a un agente que usó 42 tool calls. Causa: `toolBudget` solo es efectivo si el hook de validación o el agente lo respeta activamente; declararlo en frontmatter sin lógica que lo cumpla no tiene efecto. Solución: verificar que el agente o el hook de control de presupuesto lee el campo `toolBudget` del frontmatter antes de asumir que el límite se aplicará automáticamente.
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: diseno-responsivo
|
|
3
|
+
description: Diseño responsivo moderno. Container queries, fluid typography, CSS Grid, Flexbox, mobile-first, Tailwind CSS y patrones para interfaces adaptativas.
|
|
4
|
+
version: "1.0.0"
|
|
5
|
+
herramientasPermitidas: [Read, Grep]
|
|
6
|
+
evolvable: true # default para skill estandar
|
|
7
|
+
exclusiones:
|
|
8
|
+
- "No cargar para sistemas de design tokens (paletas de colores, tipografía de marca, theming) — para tokens cargar `design-tokens`."
|
|
9
|
+
- "No cargar para accesibilidad (ARIA, contraste, lector de pantalla) — para a11y cargar `accesibilidad-a11y`."
|
|
10
|
+
- "No cargar para optimización de rendimiento de imágenes en el pipeline de build (WebP, AVIF, compresión) — para imágenes en build cargar el skill de rendimiento del framework."
|
|
11
|
+
- "No cargar para CSS de componentes individuales sin responsividad (estilos fijos de un card o modal) — cargar `css-moderno` para CSS de componente."
|
|
12
|
+
---
|
|
13
|
+
# Diseño Responsivo Moderno
|
|
14
|
+
|
|
15
|
+
## Cuándo NO cargar
|
|
16
|
+
|
|
17
|
+
- La tarea es definir el sistema de design tokens (paletas, tipografía de marca, theming light/dark): cargar `design-tokens`.
|
|
18
|
+
- La revisión es de accesibilidad (contraste WCAG, ARIA, lectores de pantalla): cargar `accesibilidad-a11y`.
|
|
19
|
+
- La optimización es del pipeline de imágenes en build (WebP, AVIF, lazy loading en Next.js): cargar el skill de rendimiento del framework.
|
|
20
|
+
- El CSS es de componentes fijos sin comportamiento adaptativo: cargar `css-moderno`.
|
|
21
|
+
|
|
22
|
+
## Filosofía mobile-first
|
|
23
|
+
|
|
24
|
+
El diseño mobile-first significa escribir los estilos base para pantallas pequeñas
|
|
25
|
+
y luego agregar complejidad para pantallas más grandes mediante breakpoints.
|
|
26
|
+
|
|
27
|
+
```css
|
|
28
|
+
/* MAL: desktop-first — sobreescribir para móvil es más complejo */
|
|
29
|
+
.tarjeta {
|
|
30
|
+
display: grid;
|
|
31
|
+
grid-template-columns: 1fr 1fr 1fr;
|
|
32
|
+
}
|
|
33
|
+
@media (max-width: 768px) {
|
|
34
|
+
.tarjeta { grid-template-columns: 1fr; }
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/* BIEN: mobile-first — agregar complejidad progresivamente */
|
|
38
|
+
.tarjeta {
|
|
39
|
+
display: grid;
|
|
40
|
+
grid-template-columns: 1fr;
|
|
41
|
+
}
|
|
42
|
+
@media (min-width: 768px) {
|
|
43
|
+
.tarjeta { grid-template-columns: 1fr 1fr; }
|
|
44
|
+
}
|
|
45
|
+
@media (min-width: 1024px) {
|
|
46
|
+
.tarjeta { grid-template-columns: 1fr 1fr 1fr; }
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Breakpoints estándar (Tailwind CSS)
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
sm: 640px — Teléfonos en horizontal
|
|
56
|
+
md: 768px — Tablets
|
|
57
|
+
lg: 1024px — Laptops / pantallas pequeñas
|
|
58
|
+
xl: 1280px — Desktops
|
|
59
|
+
2xl: 1536px — Pantallas grandes
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
```html
|
|
63
|
+
<!-- Tailwind mobile-first: sin prefijo = base -->
|
|
64
|
+
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4 p-4">
|
|
65
|
+
<!-- Cards -->
|
|
66
|
+
</div>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## CSS Grid auto-responsive sin breakpoints
|
|
72
|
+
|
|
73
|
+
```css
|
|
74
|
+
.grid-auto-fill {
|
|
75
|
+
display: grid;
|
|
76
|
+
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
|
|
77
|
+
gap: 1.5rem;
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Para layouts completos de página con Grid y Flexbox, ver [recursos/ejemplos-layouts.md](recursos/ejemplos-layouts.md).
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Container Queries — el futuro del diseño responsivo
|
|
86
|
+
|
|
87
|
+
Container queries permiten aplicar estilos basados en el tamaño del **contenedor**,
|
|
88
|
+
no de la ventana. Esencial para componentes verdaderamente reutilizables.
|
|
89
|
+
|
|
90
|
+
```css
|
|
91
|
+
.card-contenedor {
|
|
92
|
+
container-type: inline-size;
|
|
93
|
+
container-name: card;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.card {
|
|
97
|
+
display: flex;
|
|
98
|
+
flex-direction: column;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
@container card (min-width: 400px) {
|
|
102
|
+
.card {
|
|
103
|
+
flex-direction: row;
|
|
104
|
+
}
|
|
105
|
+
.card-imagen {
|
|
106
|
+
width: 40%;
|
|
107
|
+
flex-shrink: 0;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
@container card (min-width: 600px) {
|
|
112
|
+
.card-acciones {
|
|
113
|
+
display: flex;
|
|
114
|
+
justify-content: flex-end;
|
|
115
|
+
gap: 0.5rem;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Tipografía fluida
|
|
123
|
+
|
|
124
|
+
La tipografía fluida elimina los saltos abruptos de tamaño entre breakpoints.
|
|
125
|
+
|
|
126
|
+
```css
|
|
127
|
+
/* Escala linealmente de 1rem (320px) a 1.5rem (1200px) */
|
|
128
|
+
.titulo-principal {
|
|
129
|
+
font-size: clamp(1rem, 0.75rem + 1.25vw, 1.5rem);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/* Escala de tipo fluida completa */
|
|
133
|
+
:root {
|
|
134
|
+
--text-sm: clamp(0.75rem, 0.7rem + 0.25vw, 0.875rem);
|
|
135
|
+
--text-base: clamp(1rem, 0.9rem + 0.5vw, 1.125rem);
|
|
136
|
+
--text-lg: clamp(1.125rem, 1rem + 0.625vw, 1.25rem);
|
|
137
|
+
--text-xl: clamp(1.25rem, 1.1rem + 0.75vw, 1.5rem);
|
|
138
|
+
--text-2xl: clamp(1.5rem, 1.25rem + 1.25vw, 2rem);
|
|
139
|
+
--text-3xl: clamp(1.875rem, 1.5rem + 1.875vw, 2.25rem);
|
|
140
|
+
}
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Imágenes responsivas — reglas clave
|
|
146
|
+
|
|
147
|
+
- Usar `srcset` y `sizes` para servir la imagen del tamaño adecuado.
|
|
148
|
+
- SIEMPRE `loading="lazy"` y `decoding="async"` en imágenes fuera del viewport.
|
|
149
|
+
- SIEMPRE atributos `width` y `height` para evitar layout shift.
|
|
150
|
+
- Usar `<picture>` para art direction (recortes distintos por breakpoint).
|
|
151
|
+
|
|
152
|
+
Para ejemplos completos de imágenes y patrones Tailwind, ver [recursos/ejemplos-layouts.md](recursos/ejemplos-layouts.md).
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## Accesibilidad y responsivo — reglas clave
|
|
157
|
+
|
|
158
|
+
- Botón de menú móvil SIEMPRE con `aria-label`, `aria-expanded` y `aria-controls`.
|
|
159
|
+
- Respetar `prefers-reduced-motion: reduce` desactivando animaciones.
|
|
160
|
+
- Áreas táctiles mínimas de 44x44px en móvil.
|
|
161
|
+
|
|
162
|
+
Para ejemplos completos de accesibilidad responsiva, ver [recursos/ejemplos-layouts.md](recursos/ejemplos-layouts.md).
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Checklist de diseño responsivo
|
|
167
|
+
|
|
168
|
+
- [ ] El diseño base está en mobile (sin prefijo en Tailwind).
|
|
169
|
+
- [ ] Tipografía usa clamp() o escala fluida.
|
|
170
|
+
- [ ] Las imágenes tienen srcset y loading="lazy".
|
|
171
|
+
- [ ] Los formularios tienen labels visibles en todas las pantallas.
|
|
172
|
+
- [ ] Los botones/links tienen área táctil mínima de 44x44px.
|
|
173
|
+
- [ ] No hay overflow horizontal en ningún breakpoint.
|
|
174
|
+
- [ ] El espaciado usa variables relativas (rem, em) no píxeles fijos.
|
|
175
|
+
- [ ] Se probó en orientación portrait y landscape.
|
|
176
|
+
- [ ] Los componentes reutilizables usan container queries donde aplica.
|
|
177
|
+
|
|
178
|
+
## Gotchas / Errores comunes no obvios
|
|
179
|
+
|
|
180
|
+
**`container-type: inline-size` en un elemento `position: relative` rompe los `position: fixed` de sus descendientes**: cuando un elemento tiene `container-type`, crea un nuevo contexto de contención que convierte cualquier `position: fixed` dentro de él en `position: absolute` relativo al contenedor. Causa: el spec de CSS Container Queries especifica que los contenedores crean contexto de contención y eso afecta a los elementos fijos. Fix: no usar `container-type` en wrappers que tengan descendientes con `position: fixed` (modales, tooltips, dropdowns). Para esos casos, usar un wrapper contenedor hermano en lugar de padre.
|
|
181
|
+
|
|
182
|
+
**`clamp()` con unidades `vw` produce tipografía que se escala incorrectamente cuando el usuario hace zoom en el browser**: `font-size: clamp(1rem, 2vw, 2rem)` usa `vw` que es relativo al viewport, no al zoom del usuario. Al hacer zoom al 200%, `vw` se reduce proporcionalmente y la fuente puede quedar más pequeña de lo esperado. Causa: `vw` no respeta el factor de zoom del usuario — es siempre relativo al viewport físico. Fix: usar `vi` (inline size) o combinar con `em` en la expresión media: `clamp(1rem, 0.5rem + 1vw + 0.5em, 2rem)` para que el componente `em` escale con el zoom del usuario.
|
|
183
|
+
|
|
184
|
+
**El breakpoint `md:` de Tailwind (`768px`) no corresponde al breakpoint de tablet real en 2026**: en 2026, las tablets más comunes tienen resoluciones de `820px` (iPad Air) o `912px` (Surface), no `768px`. Usar `md:` para "layout de tablet" produce un layout desktop que se activa en pantallas de teléfono grande. Causa: los breakpoints de Tailwind son históricos y no reflejan los viewports actuales de dispositivos. Fix: usar container queries en lugar de media queries para componentes que deben adaptarse al espacio disponible, no al tamaño del viewport. Para layouts de página, considerar breakpoints personalizados en `tailwind.config.js` basados en los dispositivos reales del público objetivo.
|
|
185
|
+
|
|
186
|
+
**`srcset` con `sizes` incorrecto hace que el browser descargue la imagen en resolución incorrecta aunque el `srcset` tenga los tamaños correctos**: `sizes="(max-width: 768px) 100vw, 50vw"` le dice al browser que en desktop la imagen ocupa 50% del viewport. Si la imagen realmente ocupa 33%, el browser descarga una imagen más grande de lo necesario, desperdiciando ancho de banda. Causa: el atributo `sizes` es una instrucción al browser, no un cálculo automático. Fix: medir el ancho real que ocupa la imagen en cada breakpoint con las DevTools y usar ese valor en `sizes`. Un error en `sizes` no rompe el render (el browser usa el `src` como fallback) pero sí afecta el rendimiento.
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
# Diseño Responsivo — Ejemplos completos de layouts
|
|
2
|
+
|
|
3
|
+
## CSS Grid — Layout de página completo
|
|
4
|
+
|
|
5
|
+
```css
|
|
6
|
+
.layout-app {
|
|
7
|
+
display: grid;
|
|
8
|
+
grid-template-areas:
|
|
9
|
+
"header"
|
|
10
|
+
"main"
|
|
11
|
+
"footer";
|
|
12
|
+
grid-template-rows: auto 1fr auto;
|
|
13
|
+
min-height: 100vh;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
@media (min-width: 1024px) {
|
|
17
|
+
.layout-app {
|
|
18
|
+
grid-template-areas:
|
|
19
|
+
"sidebar header"
|
|
20
|
+
"sidebar main"
|
|
21
|
+
"sidebar footer";
|
|
22
|
+
grid-template-columns: 260px 1fr;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
header { grid-area: header; }
|
|
27
|
+
main { grid-area: main; }
|
|
28
|
+
footer { grid-area: footer; }
|
|
29
|
+
.sidebar { grid-area: sidebar; }
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Flexbox para componentes
|
|
35
|
+
|
|
36
|
+
```css
|
|
37
|
+
/* Navegación responsiva */
|
|
38
|
+
.nav {
|
|
39
|
+
display: flex;
|
|
40
|
+
flex-direction: column;
|
|
41
|
+
gap: 0.5rem;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@media (min-width: 768px) {
|
|
45
|
+
.nav {
|
|
46
|
+
flex-direction: row;
|
|
47
|
+
align-items: center;
|
|
48
|
+
justify-content: space-between;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/* Tarjeta con footer pegado al fondo */
|
|
53
|
+
.tarjeta {
|
|
54
|
+
display: flex;
|
|
55
|
+
flex-direction: column;
|
|
56
|
+
height: 100%;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.tarjeta-cuerpo {
|
|
60
|
+
flex: 1; /* Ocupa el espacio disponible */
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.tarjeta-footer {
|
|
64
|
+
margin-top: auto; /* Siempre al fondo */
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Imágenes responsivas
|
|
71
|
+
|
|
72
|
+
```html
|
|
73
|
+
<!-- srcset para diferentes densidades de pantalla -->
|
|
74
|
+
<img
|
|
75
|
+
src="imagen-800w.jpg"
|
|
76
|
+
srcset="imagen-400w.jpg 400w, imagen-800w.jpg 800w, imagen-1200w.jpg 1200w"
|
|
77
|
+
sizes="(max-width: 640px) 100vw, (max-width: 1024px) 50vw, 33vw"
|
|
78
|
+
alt="Descripción de la imagen"
|
|
79
|
+
loading="lazy"
|
|
80
|
+
decoding="async"
|
|
81
|
+
width="800"
|
|
82
|
+
height="600"
|
|
83
|
+
/>
|
|
84
|
+
|
|
85
|
+
<!-- Picture para art direction -->
|
|
86
|
+
<picture>
|
|
87
|
+
<source media="(min-width: 1024px)" srcset="imagen-horizontal.webp" />
|
|
88
|
+
<source media="(min-width: 640px)" srcset="imagen-cuadrada.webp" />
|
|
89
|
+
<img src="imagen-vertical.jpg" alt="Imagen del producto" />
|
|
90
|
+
</picture>
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Patrones Tailwind para layouts comunes
|
|
96
|
+
|
|
97
|
+
```html
|
|
98
|
+
<!-- Sidebar + contenido -->
|
|
99
|
+
<div class="flex min-h-screen">
|
|
100
|
+
<aside class="w-64 shrink-0 hidden lg:block bg-gray-800 text-white">
|
|
101
|
+
<!-- Sidebar -->
|
|
102
|
+
</aside>
|
|
103
|
+
<main class="flex-1 overflow-auto p-6">
|
|
104
|
+
<!-- Contenido -->
|
|
105
|
+
</main>
|
|
106
|
+
</div>
|
|
107
|
+
|
|
108
|
+
<!-- Dashboard con cards -->
|
|
109
|
+
<div class="grid grid-cols-1 sm:grid-cols-2 xl:grid-cols-4 gap-4">
|
|
110
|
+
<!-- Métrica 1 -->
|
|
111
|
+
<!-- Métrica 2 -->
|
|
112
|
+
</div>
|
|
113
|
+
|
|
114
|
+
<!-- Formulario de dos columnas en pantallas grandes -->
|
|
115
|
+
<form class="grid grid-cols-1 md:grid-cols-2 gap-6">
|
|
116
|
+
<div class="md:col-span-2"><!-- Campo de ancho completo --></div>
|
|
117
|
+
<div><!-- Campo izquierdo --></div>
|
|
118
|
+
<div><!-- Campo derecho --></div>
|
|
119
|
+
</form>
|
|
120
|
+
|
|
121
|
+
<!-- Hero section centrado -->
|
|
122
|
+
<section class="flex flex-col items-center justify-center min-h-[60vh] text-center px-4">
|
|
123
|
+
<h1 class="text-3xl sm:text-4xl lg:text-5xl font-bold max-w-3xl">Título</h1>
|
|
124
|
+
<p class="mt-4 text-lg text-gray-600 max-w-xl">Subtítulo descriptivo.</p>
|
|
125
|
+
</section>
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## Accesibilidad y responsivo
|
|
131
|
+
|
|
132
|
+
```html
|
|
133
|
+
<!-- Botón de menú móvil con aria apropiado -->
|
|
134
|
+
<button
|
|
135
|
+
aria-label="Abrir menú de navegación"
|
|
136
|
+
aria-expanded="false"
|
|
137
|
+
aria-controls="nav-mobile"
|
|
138
|
+
class="lg:hidden p-2"
|
|
139
|
+
>
|
|
140
|
+
<svg ...>...</svg>
|
|
141
|
+
</button>
|
|
142
|
+
|
|
143
|
+
<nav id="nav-mobile" class="hidden lg:flex" aria-label="Navegación principal">
|
|
144
|
+
<!-- Links -->
|
|
145
|
+
</nav>
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
```css
|
|
149
|
+
/* Preferencia de movimiento reducido */
|
|
150
|
+
@media (prefers-reduced-motion: reduce) {
|
|
151
|
+
*, *::before, *::after {
|
|
152
|
+
animation-duration: 0.01ms !important;
|
|
153
|
+
transition-duration: 0.01ms !important;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
```
|