@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,276 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wiki-conocimiento
|
|
3
|
+
description: >
|
|
4
|
+
Gestión de conocimiento del proyecto con grafo de conocimiento y búsqueda semántica.
|
|
5
|
+
Integra patrones de LightRAG (grafo + vectores) para indexar aprendizajes, ADRs,
|
|
6
|
+
sesiones y documentación del proyecto. Cargar cuando se use /swl:wiki o se necesite
|
|
7
|
+
recuperar conocimiento acumulado del proyecto de forma semántica.
|
|
8
|
+
version: "1.0.0"
|
|
9
|
+
herramientasPermitidas: [Read, Glob, Grep]
|
|
10
|
+
user-invocable: false
|
|
11
|
+
exclusiones:
|
|
12
|
+
- "No cargar para búsqueda simple de aprendizajes o sesiones anteriores — `memoria-busqueda` cubre esa necesidad con 3 capas de progressive disclosure a menor costo; este skill añade el grafo de conocimiento semántico que solo compensa para consultas relacionales complejas."
|
|
13
|
+
- "No cargar si el proyecto tiene menos de 20 entradas en APRENDIZAJES.md o menos de 10 sesiones — el grafo de conocimiento no tiene suficiente masa crítica para ser útil con tan pocos datos; usar `memoria-busqueda` directamente."
|
|
14
|
+
- "No cargar para indexar o buscar en código fuente del codebase — el grafo indexa decisiones, aprendizajes, ADRs y sesiones, no código; para búsqueda en código usar Grep o `swl-revisar-impacto`."
|
|
15
|
+
- "No cargar para persistir aprendizajes nuevos de la sesión — eso es `extractor-de-aprendizajes`; este skill lee y consulta el grafo existente, no lo actualiza directamente."
|
|
16
|
+
evolvable: true # default para skill estandar
|
|
17
|
+
---
|
|
18
|
+
# Wiki de Conocimiento del Proyecto
|
|
19
|
+
|
|
20
|
+
Sistema de gestión de conocimiento que combina grafo de conocimiento con búsqueda
|
|
21
|
+
semántica para recuperar información acumulada del proyecto.
|
|
22
|
+
|
|
23
|
+
## Cuándo cargar
|
|
24
|
+
|
|
25
|
+
- `/swl:wiki query "..."` necesita buscar conocimiento del proyecto
|
|
26
|
+
- Un agente SWL necesita contexto de decisiones previas antes de implementar
|
|
27
|
+
- Se quiere indexar nuevos aprendizajes o ADRs
|
|
28
|
+
- Se necesita trazar relaciones entre decisiones, bugs y soluciones
|
|
29
|
+
|
|
30
|
+
## Arquitectura de referencia
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
Fuentes de conocimiento:
|
|
34
|
+
.planning/APRENDIZAJES.md → Aprendizajes curados
|
|
35
|
+
.planning/adrs/ → Decisiones de arquitectura (ADRs)
|
|
36
|
+
.planning/sessions/ → Historial de sesiones
|
|
37
|
+
.planning/COMPACTACION.md → Contexto compactado
|
|
38
|
+
docs/ → Documentación del proyecto
|
|
39
|
+
|
|
40
|
+
↓ Ingestión
|
|
41
|
+
|
|
42
|
+
Chunking → Extracción de entidades/relaciones → Grafo de conocimiento
|
|
43
|
+
↓
|
|
44
|
+
Embeddings → Vector store
|
|
45
|
+
↓
|
|
46
|
+
Consulta → Keyword extraction → Retrieval híbrido → Respuesta contextual
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Modos de búsqueda (patrón LightRAG)
|
|
50
|
+
|
|
51
|
+
Basado en los 5 modos de retrieval de LightRAG:
|
|
52
|
+
|
|
53
|
+
### 1. Local — Preguntas específicas
|
|
54
|
+
- Extrae keywords de bajo nivel de la consulta
|
|
55
|
+
- Recupera entidades cercanas en el grafo
|
|
56
|
+
- Sigue relaciones para contexto adicional
|
|
57
|
+
- **Usar para:** "¿Qué decidimos sobre el manejo de errores en el módulo de pagos?"
|
|
58
|
+
|
|
59
|
+
### 2. Global — Preguntas amplias
|
|
60
|
+
- Extrae keywords de alto nivel
|
|
61
|
+
- Recupera relaciones agregadas y resúmenes de comunidades
|
|
62
|
+
- **Usar para:** "¿Cuáles son los patrones arquitectónicos principales del proyecto?"
|
|
63
|
+
|
|
64
|
+
### 3. Híbrido — Combina local + global
|
|
65
|
+
- Ejecuta ambas estrategias y fusiona resultados
|
|
66
|
+
- **Usar para:** Preguntas que necesitan tanto detalle como panorama general
|
|
67
|
+
|
|
68
|
+
### 4. Naive — Búsqueda directa por similaridad
|
|
69
|
+
- Sin grafo, solo embeddings de chunks
|
|
70
|
+
- Más rápido pero menos contexto
|
|
71
|
+
- **Usar para:** Búsquedas rápidas cuando se conoce el texto aproximado
|
|
72
|
+
|
|
73
|
+
### 5. Mix — Recomendado (grafo + vectores)
|
|
74
|
+
- Combina knowledge graph + chunk embeddings
|
|
75
|
+
- Con reranking adaptativo
|
|
76
|
+
- **Default para /swl:wiki query**
|
|
77
|
+
|
|
78
|
+
## Modelo de entidades
|
|
79
|
+
|
|
80
|
+
### Ontología tipada (patrón Zep)
|
|
81
|
+
|
|
82
|
+
Define tipos de entidades y relaciones válidas entre ellas.
|
|
83
|
+
Una ontología formal previene incoherencias en el grafo.
|
|
84
|
+
|
|
85
|
+
### Tipos de entidades en el grafo
|
|
86
|
+
| Tipo | Descripción | Fuente típica |
|
|
87
|
+
|------|-------------|---------------|
|
|
88
|
+
| `Decisión` | Decisión arquitectónica o técnica | ADRs, COMPACTACION.md |
|
|
89
|
+
| `Patrón` | Patrón de diseño adoptado | APRENDIZAJES.md |
|
|
90
|
+
| `AntiPatrón` | Práctica a evitar | APRENDIZAJES.md |
|
|
91
|
+
| `Componente` | Módulo, servicio o librería | Código fuente |
|
|
92
|
+
| `Bug` | Bug conocido y su solución | Sessions, APRENDIZAJES.md |
|
|
93
|
+
| `Tecnología` | Framework, librería o herramienta | package.json, pyproject.toml |
|
|
94
|
+
| `Persona` | Desarrollador o stakeholder | Git blame, sessions |
|
|
95
|
+
| `Requisito` | Requisito funcional o no-funcional | PRD, ADRs |
|
|
96
|
+
| `Preferencia` | Preferencia técnica del usuario/equipo | Feedback, sessions |
|
|
97
|
+
| `Evento` | Incidente, release, migración | Historial, COMPACTACION.md |
|
|
98
|
+
|
|
99
|
+
### Combinaciones válidas de relaciones (ontología)
|
|
100
|
+
|
|
101
|
+
| Relación | Source válido | Target válido |
|
|
102
|
+
|----------|-------------|---------------|
|
|
103
|
+
| `causado_por` | Bug | Patrón, AntiPatrón, Componente |
|
|
104
|
+
| `resuelto_con` | Bug | Decisión, Patrón |
|
|
105
|
+
| `depende_de` | Componente | Componente, Tecnología |
|
|
106
|
+
| `reemplaza` | Patrón, Decisión | AntiPatrón, Decisión |
|
|
107
|
+
| `usa` | Componente | Tecnología |
|
|
108
|
+
| `decidido_en` | Decisión | Evento |
|
|
109
|
+
| `confirmado_por` | Patrón, Decisión | Evento |
|
|
110
|
+
| `prefiere` | Persona | Tecnología, Patrón, Preferencia |
|
|
111
|
+
| `requiere` | Requisito | Componente, Tecnología |
|
|
112
|
+
|
|
113
|
+
### Grafo temporal (patrón Zep)
|
|
114
|
+
|
|
115
|
+
Cada entidad y relación tiene timestamps de vigencia:
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
{
|
|
119
|
+
"id": "decision-001",
|
|
120
|
+
"tipo": "Decisión",
|
|
121
|
+
"nombre": "Usar SQLAlchemy async en FastAPI",
|
|
122
|
+
"valid_at": "2026-04-10", // Cuándo empezó a ser válido
|
|
123
|
+
"invalid_at": null, // null = vigente actualmente
|
|
124
|
+
"created_at": "2026-04-10", // Cuándo se registró
|
|
125
|
+
"fuente": "sesión-2026-04-10"
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**Reglas de vigencia:**
|
|
130
|
+
- `valid_at` obligatorio en toda entidad/relación
|
|
131
|
+
- `invalid_at = null` → entidad vigente (incluir en consultas normales)
|
|
132
|
+
- `invalid_at = fecha` → entidad obsoleta (excluir de consultas, incluir en historial)
|
|
133
|
+
- Al crear una entidad que contradice otra → marcar la anterior con `invalid_at` = hoy
|
|
134
|
+
- Nunca borrar entidades obsoletas — solo marcar como inválidas para trazabilidad
|
|
135
|
+
|
|
136
|
+
### Clasificación de hechos por impacto (fact rating, patrón Zep)
|
|
137
|
+
|
|
138
|
+
Cada hecho extraído se clasifica automáticamente por impacto:
|
|
139
|
+
|
|
140
|
+
| Rating | Criterio | Ejemplo |
|
|
141
|
+
|--------|----------|---------|
|
|
142
|
+
| **HIGH** | Decisión arquitectónica irreversible, bug crítico, cambio de patrón | "Se migró de REST a GraphQL por requisitos de rendimiento" |
|
|
143
|
+
| **MEDIUM** | Preferencia técnica, gotcha documentado, patrón confirmado | "SQLAlchemy async requiere selectinload() obligatorio" |
|
|
144
|
+
| **LOW** | Información contextual, observación menor | "El build tarda 3 minutos en promedio" |
|
|
145
|
+
|
|
146
|
+
**Mapeo a modelo 4-tier de swl-ses:**
|
|
147
|
+
- HIGH → Tipo A (verdad estructural)
|
|
148
|
+
- MEDIUM → Tipo B (gotcha/anti-patrón operativo)
|
|
149
|
+
- LOW → Tipo C (preferencia/configuración)
|
|
150
|
+
|
|
151
|
+
### Tipos de relaciones
|
|
152
|
+
| Relación | Ejemplo |
|
|
153
|
+
|----------|---------|
|
|
154
|
+
| `causado_por` | Bug X fue causado_por Patrón Y |
|
|
155
|
+
| `resuelto_con` | Bug X fue resuelto_con Decisión Z |
|
|
156
|
+
| `depende_de` | Componente A depende_de Componente B |
|
|
157
|
+
| `reemplaza` | Patrón X reemplaza AntiPatrón Y |
|
|
158
|
+
| `usa` | Componente A usa Tecnología B |
|
|
159
|
+
| `decidido_en` | Decisión X decidido_en ADR-001 |
|
|
160
|
+
| `confirmado_por` | Patrón X confirmado_por sesión 2026-04-10 |
|
|
161
|
+
|
|
162
|
+
## Patrón Compiled Truth (v5.6.0)
|
|
163
|
+
|
|
164
|
+
Cada entidad del grafo sigue el patrón Compiled Truth:
|
|
165
|
+
|
|
166
|
+
```markdown
|
|
167
|
+
## [Nombre de la entidad]
|
|
168
|
+
|
|
169
|
+
### Compiled Truth (síntesis curada)
|
|
170
|
+
- Resumen en 2-3 oraciones
|
|
171
|
+
- Estado actual: vigente/obsoleto/en_revisión
|
|
172
|
+
|
|
173
|
+
### Timeline (evidencia cronológica)
|
|
174
|
+
- [2026-04-01] [F:APRENDIZAJES] — Primera mención
|
|
175
|
+
- [2026-04-10] [F:sesión] — Confirmado en implementación
|
|
176
|
+
- [2026-04-12] [F:ADR-005] — Formalizado como decisión
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
## Integración con LightRAG
|
|
180
|
+
|
|
181
|
+
### Implementación recomendada (servicio auxiliar)
|
|
182
|
+
|
|
183
|
+
```python
|
|
184
|
+
# scripts/lightrag-wiki.py — Servicio local de conocimiento del proyecto
|
|
185
|
+
from lightrag import LightRAG, QueryParam
|
|
186
|
+
|
|
187
|
+
async def inicializar_wiki(directorio_proyecto: str) -> LightRAG:
|
|
188
|
+
"""Inicializa LightRAG con almacenamiento local para el proyecto."""
|
|
189
|
+
rag = LightRAG(
|
|
190
|
+
working_dir=f"{directorio_proyecto}/.planning/wiki-index",
|
|
191
|
+
llm_model_func=llm_completar, # Wrapper para Claude
|
|
192
|
+
embedding_func=embedding_generar, # Wrapper para embeddings
|
|
193
|
+
chunk_token_size=1200,
|
|
194
|
+
chunk_overlap_token_size=100,
|
|
195
|
+
enable_llm_cache=True, # Caché para operaciones repetitivas
|
|
196
|
+
)
|
|
197
|
+
await rag.initialize_storages()
|
|
198
|
+
return rag
|
|
199
|
+
|
|
200
|
+
async def indexar_fuentes(rag: LightRAG, directorio_proyecto: str):
|
|
201
|
+
"""Indexa todas las fuentes de conocimiento del proyecto."""
|
|
202
|
+
fuentes = [
|
|
203
|
+
f"{directorio_proyecto}/.planning/APRENDIZAJES.md",
|
|
204
|
+
f"{directorio_proyecto}/.planning/COMPACTACION.md",
|
|
205
|
+
]
|
|
206
|
+
# Agregar ADRs si existen
|
|
207
|
+
import glob
|
|
208
|
+
fuentes += glob.glob(f"{directorio_proyecto}/.planning/adrs/*.md")
|
|
209
|
+
# Agregar sesiones recientes (últimas 10)
|
|
210
|
+
sesiones = sorted(glob.glob(f"{directorio_proyecto}/.planning/sessions/*.md"))[-10:]
|
|
211
|
+
fuentes += sesiones
|
|
212
|
+
|
|
213
|
+
for fuente in fuentes:
|
|
214
|
+
with open(fuente, 'r', encoding='utf-8') as f:
|
|
215
|
+
contenido = f.read()
|
|
216
|
+
await rag.ainsert(contenido, file_paths=[fuente])
|
|
217
|
+
|
|
218
|
+
async def consultar(rag: LightRAG, pregunta: str, modo: str = "mix") -> str:
|
|
219
|
+
"""Consulta el grafo de conocimiento del proyecto."""
|
|
220
|
+
resultado = await rag.aquery(
|
|
221
|
+
pregunta,
|
|
222
|
+
param=QueryParam(
|
|
223
|
+
mode=modo,
|
|
224
|
+
top_k=20,
|
|
225
|
+
chunk_top_k=10,
|
|
226
|
+
max_total_tokens=15000,
|
|
227
|
+
enable_rerank=True,
|
|
228
|
+
),
|
|
229
|
+
)
|
|
230
|
+
return resultado.response
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### Flujo de actualización incremental
|
|
234
|
+
|
|
235
|
+
```
|
|
236
|
+
1. /swl:aprender extrae aprendizajes → guarda en APRENDIZAJES.md
|
|
237
|
+
2. Hook post-aprender indexa nuevo contenido en LightRAG
|
|
238
|
+
3. Próxima consulta /swl:wiki incluye aprendizajes recientes
|
|
239
|
+
4. Consolidación periódica: re-indexar todo para mantener coherencia del grafo
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
## Implementación actual (sin LightRAG — búsqueda textual)
|
|
243
|
+
|
|
244
|
+
Mientras LightRAG no esté instalado, `/swl:wiki query` usa:
|
|
245
|
+
|
|
246
|
+
1. `session-fts.js` (BM25) para búsqueda en sesiones
|
|
247
|
+
2. `memory-search.js` (TF-IDF) para búsqueda en memoria
|
|
248
|
+
3. Grep directo en `.planning/` para ADRs y aprendizajes
|
|
249
|
+
|
|
250
|
+
La migración a LightRAG es incremental: agregar el servicio como MCP server
|
|
251
|
+
sin romper la funcionalidad existente.
|
|
252
|
+
|
|
253
|
+
## Evaluación de calidad (patrón RAGAS)
|
|
254
|
+
|
|
255
|
+
Para evaluar la calidad de las respuestas del wiki:
|
|
256
|
+
|
|
257
|
+
| Métrica | Descripción | Umbral aceptable |
|
|
258
|
+
|---------|-------------|-------------------|
|
|
259
|
+
| Faithfulness | ¿La respuesta se basa en las fuentes recuperadas? | ≥ 0.85 |
|
|
260
|
+
| Answer relevancy | ¿La respuesta es relevante a la pregunta? | ≥ 0.80 |
|
|
261
|
+
| Context precision | ¿Los chunks recuperados son precisos? | ≥ 0.75 |
|
|
262
|
+
| Context recall | ¿Se recuperaron todos los chunks relevantes? | ≥ 0.70 |
|
|
263
|
+
|
|
264
|
+
## Cuándo NO cargar
|
|
265
|
+
|
|
266
|
+
- La búsqueda es sobre aprendizajes o sesiones anteriores con una query de texto directa — `memoria-busqueda` tiene 3 capas de progressive disclosure y cuesta menos; el grafo de wiki compensa solo cuando la consulta requiere traversal de relaciones entre entidades.
|
|
267
|
+
- El proyecto tiene menos de 20 entradas en APRENDIZAJES.md y menos de 10 sesiones — sin masa crítica de datos, el grafo no tiene suficientes nodos para que las relaciones aporten valor sobre una búsqueda textual simple.
|
|
268
|
+
- Se busca en código fuente (funciones, patrones, implementaciones) — el grafo indexa decisiones, aprendizajes y ADRs, no código; para búsqueda de código usar Grep directamente o `swl-revisar-impacto` para análisis estructural.
|
|
269
|
+
- El objetivo es registrar un aprendizaje nuevo de la sesión actual — eso es `extractor-de-aprendizajes`; este skill lee el grafo existente, no persiste nuevo conocimiento directamente.
|
|
270
|
+
|
|
271
|
+
## Gotchas / Errores comunes no obvios
|
|
272
|
+
|
|
273
|
+
- **Entidades con `invalid_at` no excluidas de consultas normales**: el wiki devuelve decisiones obsoletas como vigentes porque la query no filtra por `invalid_at = null`. Causa: LightRAG indexa el contenido textual de los documentos pero no ejecuta filtros por campo del grafo automáticamente. Solución: al consultar decisiones vigentes, agregar `invalid_at = null` como filtro en la capa de post-procesamiento del resultado — o en el modo de implementación sin LightRAG, verificar el campo en el JSON antes de incluir la entidad.
|
|
274
|
+
- **Indexación masiva con `rag.ainsert()` llamado para cada archivo en un loop sin batching**: el proceso de ingestión tarda 45 minutos en indexar 50 sesiones porque cada llamada espera la finalización de la anterior. Causa: `ainsert()` es async pero se llama con `await` secuencial en lugar de `asyncio.gather()`. Solución: usar `asyncio.gather(*[rag.ainsert(c) for c in contenidos])` para indexar en paralelo — LightRAG soporta ingestión concurrente.
|
|
275
|
+
- **Consulta en modo `global` devuelve respuesta genérica sin usar datos del proyecto**: el agente usa modo `mix` pero el grafo no tiene suficientes entidades indexadas para el reasoning global. Causa: el modo `global` de LightRAG requiere suficiente masa de entidades para hacer inferencias; con pocos documentos, el modo `local` o `naive` da mejores resultados. Solución: para proyectos pequeños usar modo `local` (top_k sobre chunks cercanos); reservar modo `global` o `mix` para proyectos con 50+ fuentes indexadas.
|
|
276
|
+
- **`valid_at` ausente en entidades del grafo generadas automáticamente**: las entidades creadas por el extractor de hechos de LightRAG no incluyen el timestamp de vigencia requerido por el patrón Compiled Truth. Causa: LightRAG extrae entidades con sus propios campos; el schema de vigencia de swl-ses es una extensión custom que el extractor base no conoce. Solución: agregar un paso de enriquecimiento post-extracción que inyecte `valid_at = hoy` y `invalid_at = null` en cada entidad nueva antes de almacenarla.
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wireframes-flujos
|
|
3
|
+
description: Wireframes y user flows para Claude. Cubre wireframes descriptivos en formato texto, user flows como diagrama de texto, information architecture, navigation patterns (tabs/drawers/breadcrumbs), empty states/error states/loading states, decisiones de breakpoints responsivos y protocolo de handoff a implementador.
|
|
4
|
+
version: "1.0.0"
|
|
5
|
+
herramientasPermitidas: [Read, Grep]
|
|
6
|
+
evolvable: true # default para skill estandar
|
|
7
|
+
exclusiones:
|
|
8
|
+
- "No cargar para diseño visual de alta fidelidad con colores, tipografía y design tokens — para diseño visual de UI cargar `design-tokens` y el skill de diseño responsivo."
|
|
9
|
+
- "No cargar para implementar los componentes Angular/React descritos en el wireframe — los wireframes son specs para el implementador; para implementación cargar `angular-moderno` o el skill de frontend correspondiente."
|
|
10
|
+
- "No cargar para investigación de usuarios (entrevistas, encuestas, usabilidad) — los wireframes asumen que el UX research ya definió las necesidades; para investigación cargar el skill de UX correspondiente."
|
|
11
|
+
- "No cargar para generación de diagramas UML de arquitectura o diagramas de secuencia técnicos — para diagramas de arquitectura cargar `diagrama-arquitectura` o `generacion-mermaid`."
|
|
12
|
+
---
|
|
13
|
+
# Wireframes y Flujos de Usuario
|
|
14
|
+
|
|
15
|
+
## Cuándo NO cargar
|
|
16
|
+
|
|
17
|
+
- La tarea es diseño visual de alta fidelidad (colores, tipografía, design tokens): cargar `design-tokens`.
|
|
18
|
+
- La tarea es implementar los componentes descritos en el wireframe: cargar `angular-moderno` o el skill de frontend del stack.
|
|
19
|
+
- La tarea es investigación de usuarios (entrevistas, usabilidad): cargar el skill de UX correspondiente.
|
|
20
|
+
- La tarea es diagramas de arquitectura o secuencia técnicos: cargar `diagrama-arquitectura` o `generacion-mermaid`.
|
|
21
|
+
|
|
22
|
+
## Filosofía
|
|
23
|
+
|
|
24
|
+
Claude trabaja con **wireframes descriptivos en texto**, no imágenes. Un wireframe
|
|
25
|
+
de texto bien escrito comunica estructura, jerarquía, comportamiento y decisiones
|
|
26
|
+
de UX mejor que un mockup visual de baja fidelidad, y puede ser consumido
|
|
27
|
+
directamente por el agente implementador sin ambigüedad.
|
|
28
|
+
|
|
29
|
+
El objetivo no es describir cómo se verá — es describir qué hay, dónde está,
|
|
30
|
+
qué hace y cómo responde al usuario.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## 1. Formato de Wireframe Descriptivo
|
|
35
|
+
|
|
36
|
+
### Estructura de un wireframe de pantalla
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
PANTALLA: [Nombre de la Pantalla]
|
|
40
|
+
URL/RUTA: [/ruta o nombre de pantalla]
|
|
41
|
+
PROPÓSITO: [Qué logra el usuario aquí en 1 oración]
|
|
42
|
+
USUARIO: [Rol o tipo de usuario que ve esta pantalla]
|
|
43
|
+
|
|
44
|
+
━━━ LAYOUT ━━━
|
|
45
|
+
[Descripción del grid/layout general]
|
|
46
|
+
|
|
47
|
+
┌─────────────────────────────────────────────┐
|
|
48
|
+
│ HEADER │
|
|
49
|
+
│ [Logo] [Nav: Inicio | Usuarios | Config]│
|
|
50
|
+
│ [Avatar + Dropdown]│
|
|
51
|
+
├──────────────────────────────────────────── ┤
|
|
52
|
+
│ SIDEBAR (240px fijo) │ CONTENIDO PRINCIPAL│
|
|
53
|
+
│ │ │
|
|
54
|
+
│ - Sección A (activa) │ [Área de trabajo] │
|
|
55
|
+
│ - Sección B │ │
|
|
56
|
+
│ - Sección C │ │
|
|
57
|
+
├────────────────────────┴─────────────────────┤
|
|
58
|
+
│ FOOTER: versión | soporte | términos │
|
|
59
|
+
└──────────────────────────────────────────────┘
|
|
60
|
+
|
|
61
|
+
━━━ CONTENIDO PRINCIPAL (detalle) ━━━
|
|
62
|
+
|
|
63
|
+
H1: "Gestión de Usuarios"
|
|
64
|
+
[Botón primario: "+ Nuevo Usuario"] [Botón secundario: "Exportar CSV"]
|
|
65
|
+
|
|
66
|
+
Barra de búsqueda: [Buscar por nombre o email...] [Filtros]
|
|
67
|
+
|
|
68
|
+
Tabla:
|
|
69
|
+
Columnas: Nombre | Email | Rol | Último acceso | Acciones
|
|
70
|
+
Ordenable por: Nombre (asc actual), Último acceso
|
|
71
|
+
Filas: 20 por página
|
|
72
|
+
Acciones por fila: [Editar] [Desactivar] [...]
|
|
73
|
+
|
|
74
|
+
Paginación: [< Anterior] [1] [2] [3] [...] [12] [Siguiente >]
|
|
75
|
+
|
|
76
|
+
━━━ COMPORTAMIENTOS ━━━
|
|
77
|
+
- Búsqueda: debounce 300ms, actualiza tabla en tiempo real
|
|
78
|
+
- Click en fila: abre panel lateral con detalle del usuario
|
|
79
|
+
- Nuevo Usuario: abre modal de 3 pasos
|
|
80
|
+
- Filtros: se persisten en query params de la URL
|
|
81
|
+
|
|
82
|
+
━━━ ESTADOS ━━━
|
|
83
|
+
(Ver sección de estados abajo)
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 2. User Flows (Diagrama en Texto)
|
|
89
|
+
|
|
90
|
+
### Notación de flujo
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
[Pantalla] → acción → [Pantalla destino]
|
|
94
|
+
[Pantalla] → acción → (Decisión) → SÍ → [A]
|
|
95
|
+
→ NO → [B]
|
|
96
|
+
[Pantalla] → acción → {API call} → éxito → [C]
|
|
97
|
+
→ error → [D]
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Ejemplo: Flujo de Login
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
[Login]
|
|
104
|
+
Ingresa email y password
|
|
105
|
+
│
|
|
106
|
+
├─ [Olvidé mi contraseña] → [Recuperar Contraseña]
|
|
107
|
+
│ ↓
|
|
108
|
+
│ {API: reset}
|
|
109
|
+
│ ├─ éxito → [Mensaje: "Revisa tu email"]
|
|
110
|
+
│ └─ error → [Error inline: "Email no registrado"]
|
|
111
|
+
│
|
|
112
|
+
└─ [Iniciar Sesión]
|
|
113
|
+
▼
|
|
114
|
+
{API: login}
|
|
115
|
+
├─ éxito, rol=ADMIN → [Dashboard Admin]
|
|
116
|
+
├─ éxito, rol=USUARIO → [Dashboard Usuario]
|
|
117
|
+
├─ error: credenciales → Error inline (sin indicar cuál es incorrecto)
|
|
118
|
+
├─ error: cuenta bloqueada → Modal: "Cuenta bloqueada"
|
|
119
|
+
└─ error: 2FA requerido → [Verificación 2FA]
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Para flujos multi-paso completos, mapa de sitio IA y navigation patterns detallados,
|
|
123
|
+
ver [recursos/referencia-completa.md](recursos/referencia-completa.md).
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## 3. Empty States, Error States, Loading States
|
|
128
|
+
|
|
129
|
+
### Empty State
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
CUANDO: La lista/tabla no tiene datos
|
|
133
|
+
|
|
134
|
+
ESTRUCTURA:
|
|
135
|
+
[Ícono ilustrativo grande]
|
|
136
|
+
[Título: "No hay usuarios aún"]
|
|
137
|
+
[Descripción: "Agrega el primer usuario para comenzar."]
|
|
138
|
+
[Botón primario: "+ Agregar Usuario"] ← solo si el usuario tiene permiso
|
|
139
|
+
|
|
140
|
+
VARIANTES:
|
|
141
|
+
- Primera vez (onboarding): ícono friendly, CTA activo
|
|
142
|
+
- Sin resultados de búsqueda: "Intenta con otros filtros", [Limpiar filtros]
|
|
143
|
+
- Sin permisos: ícono de candado, sin CTA
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Error States
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
Error inline (campos de formulario):
|
|
150
|
+
[Input con borde rojo]
|
|
151
|
+
"El email ya está registrado" ← debajo del campo, 14px, color error
|
|
152
|
+
|
|
153
|
+
Error de página (4xx):
|
|
154
|
+
H1: "Página no encontrada" (404) | "Acceso denegado" (403)
|
|
155
|
+
[Descripción en lenguaje humano, sin códigos de error]
|
|
156
|
+
[Botón: "Ir al inicio"]
|
|
157
|
+
|
|
158
|
+
Error de API (500 en acción):
|
|
159
|
+
Toast (rojo): "No se pudo guardar. Intenta de nuevo."
|
|
160
|
+
[Reintentar] ← si la acción es reintentable
|
|
161
|
+
NO mostrar el error técnico al usuario
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Loading States
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
SKELETON (preferido para listas y cards — evita layout shift):
|
|
168
|
+
┌─────────────────────────┐
|
|
169
|
+
│ ████████████ ██████████ │ ← líneas grises animadas
|
|
170
|
+
│ ████████ ██ │
|
|
171
|
+
└─────────────────────────┘
|
|
172
|
+
|
|
173
|
+
SPINNER (para acciones puntuales — submit de form, botón):
|
|
174
|
+
[Botón: Guardando...] ← botón deshabilitado con spinner inline
|
|
175
|
+
|
|
176
|
+
PROGRESO (para operaciones largas >3s):
|
|
177
|
+
Subiendo archivo: [████████░░░░░░░] 53%
|
|
178
|
+
[Cancelar]
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## 4. Handoff de Wireframe a Implementador
|
|
184
|
+
|
|
185
|
+
El wireframe está listo para el implementador cuando incluye:
|
|
186
|
+
|
|
187
|
+
- Nombre, ruta URL y propósito de cada pantalla
|
|
188
|
+
- Layout descrito con grid, columnas y proporciones
|
|
189
|
+
- Todos los elementos nombrados específicamente
|
|
190
|
+
- Comportamientos interactivos descritos (hover, click, debounce)
|
|
191
|
+
- Empty, loading y error states definidos
|
|
192
|
+
- Entradas y salidas de la pantalla
|
|
193
|
+
- API calls marcadas con `{API: ...}` y manejo de errores
|
|
194
|
+
- Comportamiento responsive en desktop, tablet y móvil
|
|
195
|
+
|
|
196
|
+
El implementador NO debe inventar comportamientos no descritos en el wireframe.
|
|
197
|
+
Si encuentra una ambigüedad, PARA y reporta. No adivina.
|
|
198
|
+
|
|
199
|
+
Para checklist de entrega completo y decisiones de breakpoints responsive,
|
|
200
|
+
ver [recursos/referencia-completa.md](recursos/referencia-completa.md).
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## Gotchas / Errores comunes no obvios
|
|
205
|
+
|
|
206
|
+
**Los wireframes de texto no especifican el comportamiento de scroll en paneles laterales, causando que el implementador elija entre `overflow-y: auto` en el sidebar o en el body, y la decisión incorrecta hace que el header desaparezca al scrollear**: en un layout con sidebar fijo y contenido principal scrollable, si el wireframe dice "SIDEBAR (240px fijo)" sin especificar `height: 100vh; overflow-y: auto` explícitamente, el implementador puede implementar el scroll en el `body` haciendo que el sidebar desaparezca del viewport. Causa: las dimensiones en wireframes de texto no implican comportamiento de overflow ni posicionamiento CSS. Fix: en la sección `━━━ LAYOUT ━━━`, agregar siempre la línea `SCROLL: [componente que scrollea] — [contenido fijo que no scrollea]`. Ejemplo: "SCROLL: contenido principal. FIJO: header y sidebar".
|
|
207
|
+
|
|
208
|
+
**Un user flow que muestra `{API: login} → éxito, rol=ADMIN → [Dashboard Admin]` no especifica qué pasa durante la transición — si hay un estado de carga, un redirect, o si el componente de Dashboard es el mismo con diferente contenido**: el implementador que lee el flujo puede implementar un redirect `/dashboard-admin` (ruta separada) o un router Angular que carga el componente `DashboardComponent` con un guard, o simplemente mostrar/ocultar secciones en el mismo componente. Las tres implementaciones son válidas según el flujo, pero incompatibles entre sí. Causa: los user flows de texto documentan estados y transiciones pero no el mecanismo técnico de navegación. Fix: agregar una nota de "decisión de implementación" en cada `{API call} → éxito → [pantalla]` donde la transición no sea obvia: `[Dashboard Admin] ← guard verifica rol en el token, ruta separada /admin/dashboard` o `[Dashboard compartido, contenido condicional por rol]`.
|
|
209
|
+
|
|
210
|
+
**Los wireframes de empty states que incluyen `[Botón primario: "+ Agregar"]` sin especificar las condiciones de visibilidad del botón resultan en interfaces donde usuarios sin permiso de escritura ven un botón que falla con 403 al hacer clic**: el wireframe describe el empty state feliz, pero el implementador que ve `[Botón primario: "+ Agregar Usuario"]` no sabe si debe verificar el permiso antes de renderizarlo. Causa: los wireframes frecuentemente documentan el flujo del usuario con permisos completos y omiten los estados de permisos reducidos. Fix: en la sección `COMPORTAMIENTOS` de cada pantalla, incluir explícitamente las condiciones de visibilidad de acciones: `"+ Agregar Usuario: visible solo si usuario tiene permiso USERS_WRITE"`. Si la pantalla tiene variantes por rol, documentar cada variante como sección separada `━━━ VARIANTE: USUARIO_SOLO_LECTURA ━━━`.
|
|
211
|
+
|
|
212
|
+
**Los wireframes de formularios multi-paso no especifican si el estado de los pasos anteriores persiste cuando el usuario regresa al paso 1 desde el paso 3, causando inconsistencias entre implementaciones donde uno limpia el form y otro lo conserva**: en un wizard de 3 pasos donde el paso 2 depende de datos del paso 1, si el usuario regresa al paso 1 y cambia el tipo de cuenta, el paso 2 puede quedar con datos inválidos para el nuevo tipo. Causa: los user flows documentan la ruta feliz forward; la navegación hacia atrás y sus efectos en el estado son una decisión de UX no documentada. Fix: en el user flow del wizard, agregar explícitamente los bordes de retroceso: `[Paso 2] → [Atrás] → [Paso 1, datos anteriores pre-llenados]` o `[Paso 1, formulario limpio, pasos 2 y 3 invalidados]`. La elección entre ambos depende del impacto de un cambio en paso 1 sobre los datos de pasos posteriores.
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
# Referencia Completa — Wireframes y Flujos de Usuario
|
|
2
|
+
|
|
3
|
+
## Ejemplo: Flujo de Crear Usuario (multi-paso)
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
[Lista Usuarios]
|
|
7
|
+
→ Click "+ Nuevo Usuario"
|
|
8
|
+
→ [Modal: Paso 1/3 — Datos Básicos]
|
|
9
|
+
Campos: Nombre, Email, Teléfono (opcional)
|
|
10
|
+
[Cancelar] [Siguiente →]
|
|
11
|
+
│
|
|
12
|
+
└─ Validación front
|
|
13
|
+
├─ falla → Errores inline, permanecer en Paso 1
|
|
14
|
+
└─ ok → [Modal: Paso 2/3 — Rol y Permisos]
|
|
15
|
+
Selector: Rol (Admin/Usuario/Moderador)
|
|
16
|
+
Checkboxes de permisos granulares
|
|
17
|
+
[← Anterior] [Siguiente →]
|
|
18
|
+
│
|
|
19
|
+
└─ ok → [Modal: Paso 3/3 — Confirmar]
|
|
20
|
+
Resumen de datos a crear
|
|
21
|
+
[← Anterior] [Crear Usuario]
|
|
22
|
+
│
|
|
23
|
+
▼
|
|
24
|
+
{API: POST /usuarios}
|
|
25
|
+
│
|
|
26
|
+
├─ 201 Created
|
|
27
|
+
│ → Cerrar modal
|
|
28
|
+
│ → Toast: "Usuario creado exitosamente"
|
|
29
|
+
│ → Actualizar tabla (invalidar caché)
|
|
30
|
+
│
|
|
31
|
+
└─ 409 Conflict (email duplicado)
|
|
32
|
+
→ Volver a Paso 1
|
|
33
|
+
→ Error en campo email
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Information Architecture — Mapa de Sitio
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
APP SIGAF
|
|
42
|
+
├── Auth (sin sidebar)
|
|
43
|
+
│ ├── /login
|
|
44
|
+
│ ├── /recuperar-contrasena
|
|
45
|
+
│ └── /reset-contrasena/:token
|
|
46
|
+
│
|
|
47
|
+
├── Dashboard / (todos los roles)
|
|
48
|
+
│
|
|
49
|
+
├── Usuarios /usuarios (ADMIN, AUDITOR)
|
|
50
|
+
│ ├── Lista /usuarios
|
|
51
|
+
│ ├── Detalle /usuarios/:id
|
|
52
|
+
│ └── Crear /usuarios/nuevo
|
|
53
|
+
│
|
|
54
|
+
├── Reportes /reportes (todos los roles, datos filtrados por rol)
|
|
55
|
+
│ ├── Resumen /reportes
|
|
56
|
+
│ ├── Por período /reportes/periodo
|
|
57
|
+
│ └── Exportar /reportes/exportar
|
|
58
|
+
│
|
|
59
|
+
└── Configuración /config (solo ADMIN)
|
|
60
|
+
├── General /config
|
|
61
|
+
├── Usuarios /config/usuarios
|
|
62
|
+
└── Integraciones /config/integraciones
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Reglas de jerarquía visual
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
H1 — Una por página (título de la sección)
|
|
69
|
+
H2 — Subsecciones del contenido principal
|
|
70
|
+
H3 — Títulos de tarjetas o paneles
|
|
71
|
+
H4 — Etiquetas de grupos dentro de formularios
|
|
72
|
+
Texto: Sans-serif, 16px base, 24px line-height
|
|
73
|
+
Microcopy: 14px, color secundario
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Navigation Patterns
|
|
79
|
+
|
|
80
|
+
### Tabs (uso y cuándo)
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
USAR TABS cuando:
|
|
84
|
+
- 3-6 vistas relacionadas del mismo contenido
|
|
85
|
+
- El usuario necesita cambiar entre vistas frecuentemente
|
|
86
|
+
- El contenido de cada tab es independiente
|
|
87
|
+
|
|
88
|
+
EVITAR TABS cuando:
|
|
89
|
+
- Hay más de 6 opciones (usar sidebar o dropdown)
|
|
90
|
+
- Las vistas tienen jerarquía (usar breadcrumbs + sub-páginas)
|
|
91
|
+
- En móvil con tabs de contenido largo (usar accordion)
|
|
92
|
+
|
|
93
|
+
FORMATO:
|
|
94
|
+
[Tab Activa] [Tab 2] [Tab 3] [Tab 4]
|
|
95
|
+
─────────────────────────────────────
|
|
96
|
+
[Contenido de Tab Activa]
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Drawer / Sidebar
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
USAR DRAWER cuando:
|
|
103
|
+
- Navegación principal de la app (5+ secciones)
|
|
104
|
+
- El estado de navegación se reutiliza entre páginas
|
|
105
|
+
|
|
106
|
+
COLAPSABLE: sí (desktop: sidebar fijo 240px ↔ iconos 64px, móvil: overlay)
|
|
107
|
+
|
|
108
|
+
ESTRUCTURA SIDEBAR:
|
|
109
|
+
Logo
|
|
110
|
+
─────────────────
|
|
111
|
+
Sección Principal (con ícono)
|
|
112
|
+
├─ Subsección activa (highlight)
|
|
113
|
+
└─ Subsección 2
|
|
114
|
+
Sección 2 (con ícono)
|
|
115
|
+
─────────────────
|
|
116
|
+
[Divider]
|
|
117
|
+
Configuración (ícono engranaje)
|
|
118
|
+
Avatar del usuario + nombre
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Breadcrumbs
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
USAR cuando: el usuario está 2+ niveles de profundidad
|
|
125
|
+
|
|
126
|
+
FORMATO:
|
|
127
|
+
Inicio > Usuarios > Ana López > Editar
|
|
128
|
+
|
|
129
|
+
REGLAS:
|
|
130
|
+
- Último item = página actual (no es link, no clickeable)
|
|
131
|
+
- Máximo 4 niveles visibles (truncar intermedios con "...")
|
|
132
|
+
- En móvil: mostrar solo el nivel inmediato anterior con "← Anterior"
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Responsive Breakpoints — Decisiones por Pantalla
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
Pantalla: Gestión de Usuarios (tabla con acciones)
|
|
141
|
+
|
|
142
|
+
DESKTOP (≥1024px):
|
|
143
|
+
Sidebar fijo 240px + tabla completa con todas las columnas
|
|
144
|
+
|
|
145
|
+
TABLET (768px-1023px):
|
|
146
|
+
Sidebar colapsado a iconos 64px + tabla con columnas reducidas
|
|
147
|
+
(ocultar: Último acceso, Rol — accesibles en detalle del panel lateral)
|
|
148
|
+
|
|
149
|
+
MÓVIL (<768px):
|
|
150
|
+
Sidebar = drawer oculto (abrir con hamburger icon)
|
|
151
|
+
Tabla → Lista vertical de cards
|
|
152
|
+
Cada card: Avatar + Nombre + Email + [Acciones: ...]
|
|
153
|
+
Búsqueda: campo expandible (lupa → input)
|
|
154
|
+
Paginación: scroll infinito o "Cargar más"
|
|
155
|
+
|
|
156
|
+
BREAKPOINT KEY DECISIONS:
|
|
157
|
+
- ¿Tabla o cards en móvil? → Cards (tabla no es usable en pantallas <480px)
|
|
158
|
+
- ¿Sidebar o drawer en tablet? → Íconos (preserve space for content)
|
|
159
|
+
- ¿Modal o página nueva en móvil? → Página nueva (modales en móvil son difíciles de cerrar)
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## Checklist de Entrega de Wireframe
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
PANTALLA
|
|
168
|
+
[ ] Nombre y ruta URL
|
|
169
|
+
[ ] Propósito en 1 oración
|
|
170
|
+
[ ] Layout descrito (grid, columnas, proporciones)
|
|
171
|
+
[ ] Todos los elementos nombrados (no "botón" — "botón Crear Usuario")
|
|
172
|
+
[ ] Jerarquía tipográfica especificada (H1/H2/texto/microcopy)
|
|
173
|
+
[ ] Comportamientos interactivos descritos (hover, click, debounce, etc.)
|
|
174
|
+
|
|
175
|
+
ESTADOS
|
|
176
|
+
[ ] Empty state definido
|
|
177
|
+
[ ] Loading state definido
|
|
178
|
+
[ ] Error state definido
|
|
179
|
+
[ ] Estado de éxito (si aplica)
|
|
180
|
+
|
|
181
|
+
FLUJO
|
|
182
|
+
[ ] Entradas a esta pantalla (¿desde dónde se llega?)
|
|
183
|
+
[ ] Salidas de esta pantalla (¿a dónde va?)
|
|
184
|
+
[ ] Acciones con API calls marcadas con {API: ...}
|
|
185
|
+
[ ] Manejo de errores de API especificado
|
|
186
|
+
|
|
187
|
+
RESPONSIVE
|
|
188
|
+
[ ] Comportamiento en desktop descrito
|
|
189
|
+
[ ] Comportamiento en tablet descrito
|
|
190
|
+
[ ] Comportamiento en móvil descrito
|
|
191
|
+
[ ] Decisiones de breakpoint justificadas
|
|
192
|
+
```
|