@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,275 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mapear-codebase
|
|
3
|
+
description: Análisis profundo de un codebase existente. Genera árbol de directorios anotado, identifica puntos de entrada, tecnologías usadas, estándares del proyecto, deuda técnica visible y zonas de riesgo. Produce un documento estructurado que sirve como mapa de navegación para el equipo.
|
|
4
|
+
version: "1.1.0"
|
|
5
|
+
evolved: true
|
|
6
|
+
evolved-from: "1.0.0"
|
|
7
|
+
evolved-at: "2026-04-24"
|
|
8
|
+
evolved-by: "aprender"
|
|
9
|
+
evolved-note: "Sección nueva: validar parser jerárquico contra árbol real antes de congelar dataclass"
|
|
10
|
+
herramientasPermitidas: [Read, Write, Edit, Bash, Glob, Grep]
|
|
11
|
+
exclusiones:
|
|
12
|
+
- "No cargar cuando el codebase ya tiene un `CODEBASE-MAP.md` generado en los últimos 30 días y no ha habido cambios arquitectónicos — ejecutar este skill produce un mapa redundante con costo de análisis innecesario."
|
|
13
|
+
- "No cargar para análisis de seguridad del código — el mapa identifica zonas de riesgo estructural, no vulnerabilidades; para auditoría de seguridad cargar `reglas/seguridad.md` o invocar `revisor-seguridad-swl`."
|
|
14
|
+
- "No cargar para entender el codebase de un proyecto SWL propio (este mismo repo) — usar `.planning/ESTADO.md`, `INVENTARIO.md` y `ARQUITECTURA.md` que ya documentan la estructura interna."
|
|
15
|
+
- "No cargar para búsquedas puntuales de una función o patrón específico — `Grep` directo es suficiente y no requiere generar un CODEBASE-MAP.md completo."
|
|
16
|
+
evolvable: true # default para skill estandar
|
|
17
|
+
---
|
|
18
|
+
# Habilidad: Mapear Codebase Existente
|
|
19
|
+
|
|
20
|
+
## Propósito
|
|
21
|
+
|
|
22
|
+
Antes de modificar cualquier sistema heredado o desconocido, el equipo necesita
|
|
23
|
+
un mapa preciso. Esta habilidad genera ese mapa de forma sistemática y sin
|
|
24
|
+
suposiciones. El output es un documento que cualquier desarrollador puede leer
|
|
25
|
+
para orientarse en menos de 15 minutos.
|
|
26
|
+
|
|
27
|
+
## Cuándo activar
|
|
28
|
+
|
|
29
|
+
- Se incorpora un desarrollador nuevo al proyecto
|
|
30
|
+
- Se va a añadir una feature a un proyecto no familiar
|
|
31
|
+
- Se detectan inconsistencias entre documentación y código
|
|
32
|
+
- El planificador necesita entender el estado actual antes de planear
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Paso 1 — Reconocimiento inicial (5 minutos de exploración)
|
|
37
|
+
|
|
38
|
+
Ejecutar los siguientes comandos de exploración antes de generar el documento:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# Árbol de directorios (excluir node_modules, .git, __pycache__, dist)
|
|
42
|
+
find . -type f | grep -v node_modules | grep -v .git | grep -v __pycache__ \
|
|
43
|
+
| grep -v dist | grep -v .egg-info | sort | head -200
|
|
44
|
+
|
|
45
|
+
# Conteo de archivos por extensión
|
|
46
|
+
find . -type f | grep -v node_modules | grep -v .git \
|
|
47
|
+
| sed 's/.*\.//' | sort | uniq -c | sort -rn | head -20
|
|
48
|
+
|
|
49
|
+
# Archivos de configuración en raíz
|
|
50
|
+
ls -la . | grep -E "\.(toml|json|yaml|yml|env|cfg|ini|lock)$"
|
|
51
|
+
|
|
52
|
+
# Tamaño de los módulos principales
|
|
53
|
+
du -sh */ 2>/dev/null | sort -rh | head -20
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Paso 2 — Identificación de tecnologías
|
|
59
|
+
|
|
60
|
+
Para cada uno de los siguientes indicadores, verificar si existe en el proyecto:
|
|
61
|
+
|
|
62
|
+
### Backend
|
|
63
|
+
- `requirements.txt` / `pyproject.toml` / `Pipfile` → Python
|
|
64
|
+
- `pom.xml` / `build.gradle` → Java/Kotlin
|
|
65
|
+
- `package.json` en raíz sin framework frontend → Node.js
|
|
66
|
+
- `go.mod` → Go
|
|
67
|
+
- `Cargo.toml` → Rust
|
|
68
|
+
- `Gemfile` → Ruby
|
|
69
|
+
|
|
70
|
+
### Frontend
|
|
71
|
+
- `angular.json` → Angular
|
|
72
|
+
- `next.config.*` → Next.js
|
|
73
|
+
- `vite.config.*` → Vite (React/Vue/Svelte)
|
|
74
|
+
- `nuxt.config.*` → Nuxt
|
|
75
|
+
- Presencia de `tailwind.config.*`
|
|
76
|
+
- Presencia de `material` en package.json
|
|
77
|
+
|
|
78
|
+
### Infraestructura
|
|
79
|
+
- `Dockerfile` / `docker-compose.yml` → Docker
|
|
80
|
+
- `terraform/` o `*.tf` → Terraform
|
|
81
|
+
- `.github/workflows/` → GitHub Actions
|
|
82
|
+
- `Makefile` → Build automation
|
|
83
|
+
- `alembic/` → Migraciones SQLAlchemy
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Paso 3 — Identificar puntos de entrada
|
|
88
|
+
|
|
89
|
+
Buscar explícitamente:
|
|
90
|
+
|
|
91
|
+
| Tecnología | Punto de entrada típico |
|
|
92
|
+
|-----------|------------------------|
|
|
93
|
+
| FastAPI | `app = FastAPI()` en `main.py` o `app/main.py` |
|
|
94
|
+
| Django | `manage.py`, `wsgi.py`, `asgi.py` |
|
|
95
|
+
| Express | `app.listen` en `index.js` / `server.js` |
|
|
96
|
+
| Angular | `main.ts` → `bootstrapApplication` o `AppModule` |
|
|
97
|
+
| Next.js | `pages/_app.tsx` o `app/layout.tsx` |
|
|
98
|
+
| Go | `func main()` en `cmd/*/main.go` |
|
|
99
|
+
| Rust | `fn main()` en `src/main.rs` |
|
|
100
|
+
|
|
101
|
+
Anotar: archivo exacto, función, puerto si es visible en config.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Paso 4 — Detectar estándares del proyecto
|
|
106
|
+
|
|
107
|
+
Verificar presencia y contenido de:
|
|
108
|
+
|
|
109
|
+
- **Linting**: `.eslintrc*`, `ruff.toml`, `.pylintrc`, `flake8`
|
|
110
|
+
- **Formateo**: `.prettierrc`, `black` en pyproject.toml, `editorconfig`
|
|
111
|
+
- **Tests**: `pytest.ini`, `jest.config.*`, carpeta `tests/` o `__tests__/`
|
|
112
|
+
- **Commits**: `.commitlintrc`, `CHANGELOG.md`, convenciones en README
|
|
113
|
+
- **Branching**: documentado en README o CONTRIBUTING.md
|
|
114
|
+
- **Tipo de imports**: absolutos vs relativos, alias configurados
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Paso 5 — Identificar deuda técnica visible
|
|
119
|
+
|
|
120
|
+
Buscar activamente:
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
# TODOs y FIXMEs
|
|
124
|
+
grep -r "TODO\|FIXME\|HACK\|XXX\|DEPRECATED" --include="*.py" \
|
|
125
|
+
--include="*.ts" --include="*.js" -n | head -50
|
|
126
|
+
|
|
127
|
+
# Print/console.log de debug
|
|
128
|
+
grep -r "console\.log\|print(" --include="*.py" --include="*.ts" \
|
|
129
|
+
--include="*.js" -n | grep -v "test\|spec\|logger" | head -30
|
|
130
|
+
|
|
131
|
+
# Código comentado (señal de deuda)
|
|
132
|
+
grep -r "^[[:space:]]*#.*def \|^[[:space:]]*//" --include="*.py" \
|
|
133
|
+
--include="*.ts" -n | head -20
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Categorizar deuda encontrada:
|
|
137
|
+
- **Deuda de código**: TODOs, prints, código comentado
|
|
138
|
+
- **Deuda de test**: módulos sin cobertura visible
|
|
139
|
+
- **Deuda de docs**: funciones públicas sin docstring/JSDoc
|
|
140
|
+
- **Deuda de dependencias**: packages con versiones `*` o muy antiguas
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Estructura del documento de salida: `CODEBASE-MAP.md`
|
|
145
|
+
|
|
146
|
+
```markdown
|
|
147
|
+
# CODEBASE-MAP.md — [Nombre del Proyecto]
|
|
148
|
+
**Generado**: [fecha] **Analizado por**: [agente/persona]
|
|
149
|
+
|
|
150
|
+
## Resumen ejecutivo
|
|
151
|
+
[2-3 oraciones: qué hace el sistema, en qué estado está, nivel de madurez]
|
|
152
|
+
|
|
153
|
+
## Stack tecnológico confirmado
|
|
154
|
+
| Capa | Tecnología | Versión | Notas |
|
|
155
|
+
|------|-----------|---------|-------|
|
|
156
|
+
| | | | |
|
|
157
|
+
|
|
158
|
+
## Árbol de directorios (anotado)
|
|
159
|
+
```
|
|
160
|
+
proyecto/
|
|
161
|
+
├── src/ # Código fuente principal
|
|
162
|
+
│ ├── api/ # Endpoints REST
|
|
163
|
+
│ ├── models/ # Modelos ORM
|
|
164
|
+
│ └── services/ # Lógica de negocio
|
|
165
|
+
├── tests/ # Suite de tests
|
|
166
|
+
├── migrations/ # Migraciones de BD
|
|
167
|
+
└── .planning/ # Documentación del proyecto
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## Puntos de entrada
|
|
171
|
+
| Tipo | Archivo | Función/Clase | Puerto/URL |
|
|
172
|
+
|------|---------|--------------|-----------|
|
|
173
|
+
| | | | |
|
|
174
|
+
|
|
175
|
+
## Módulos principales
|
|
176
|
+
| Módulo | Responsabilidad | Dependencias internas | LOC aprox. |
|
|
177
|
+
|--------|----------------|----------------------|-----------|
|
|
178
|
+
| | | | |
|
|
179
|
+
|
|
180
|
+
## Convenciones detectadas
|
|
181
|
+
- Estilo de código: [PEP8 / Airbnb / Google / sin estándar detectado]
|
|
182
|
+
- Tests: [pytest / jest / sin tests detectados]
|
|
183
|
+
- Commits: [conventional commits / libre]
|
|
184
|
+
- Branching: [gitflow / trunk / no documentado]
|
|
185
|
+
|
|
186
|
+
## Deuda técnica
|
|
187
|
+
| Tipo | Descripción | Archivo(s) | Severidad |
|
|
188
|
+
|------|-------------|-----------|----------|
|
|
189
|
+
| | | | Alta/Media/Baja |
|
|
190
|
+
|
|
191
|
+
## Zonas de riesgo
|
|
192
|
+
- [ ] [Módulo X]: sin tests, alta complejidad ciclomática
|
|
193
|
+
- [ ] [Módulo Y]: dependencia no mantenida (última versión: 20XX)
|
|
194
|
+
|
|
195
|
+
## Decisiones de arquitectura detectadas (implícitas)
|
|
196
|
+
1.
|
|
197
|
+
2.
|
|
198
|
+
|
|
199
|
+
## Preguntas sin respuesta (para el equipo)
|
|
200
|
+
- ¿Por qué se usa X en lugar de Y?
|
|
201
|
+
- ¿Existe documentación de la API externa Z?
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## Reglas de calidad del mapa
|
|
207
|
+
|
|
208
|
+
- NUNCA escribir "no encontrado" sin haber buscado activamente
|
|
209
|
+
- Cada zona de riesgo debe tener evidencia (archivo y línea)
|
|
210
|
+
- El árbol NO es el output de `tree` — es el árbol anotado con semántica
|
|
211
|
+
- Si el codebase supera 50k LOC, mapear solo los módulos de mayor impacto
|
|
212
|
+
|
|
213
|
+
## Cuándo NO cargar
|
|
214
|
+
|
|
215
|
+
- El `CODEBASE-MAP.md` fue generado hace menos de 30 días y el proyecto no tuvo cambios arquitectónicos desde entonces — el análisis es caro en tool calls y el mapa existente es válido.
|
|
216
|
+
- El objetivo es detectar vulnerabilidades de seguridad o código inseguro — este skill mapea estructura, no analiza patrones de seguridad. Para eso cargar `reglas/seguridad.md` o invocar `revisor-seguridad-swl`.
|
|
217
|
+
- Se trabaja en el propio repositorio SWL — `INVENTARIO.md`, `.planning/ESTADO.md` y `ARQUITECTURA.md` ya documentan la estructura; generar un CODEBASE-MAP redundante fragmenta la documentación.
|
|
218
|
+
- La necesidad es encontrar dónde está una función o clase específica — `Grep` directo con la firma de la función es suficiente y no requiere el análisis completo de los 5 pasos.
|
|
219
|
+
|
|
220
|
+
## Gotchas / Errores comunes no obvios
|
|
221
|
+
|
|
222
|
+
- **Árbol de directorios generado con `tree` sin anotar**: el CODEBASE-MAP.md tiene el árbol de directorios crudo sin explicar qué contiene cada carpeta. Causa: copiar el output de `tree` directamente en lugar de recorrer cada directorio y agregar semántica. Solución: el árbol en CODEBASE-MAP.md es obligatoriamente anotado — cada directorio no obvio debe tener un comentario breve (`# Lógica de negocio`, `# Endpoints REST`, etc.); sin anotaciones no es un mapa, es un listado.
|
|
223
|
+
- **Deuda técnica marcada sin evidencia de archivo y línea**: el reporte dice "hay código comentado" sin indicar dónde. Causa: los `grep` de deuda se ejecutan pero el resultado no se procesa para extraer los archivos y líneas específicos. Solución: cada entrada en la tabla de deuda técnica debe incluir el path del archivo y el número de línea aproximado — una deuda sin ubicación no puede priorizarse ni corregirse.
|
|
224
|
+
- **Zonas de riesgo inferidas sin verificación**: el mapa marca `api/auth.py` como "sin tests" sin haber verificado si existe `tests/test_auth.py` en otro directorio. Causa: buscar tests solo en el directorio adyacente al módulo. Solución: el Paso 4 requiere detectar la convención de organización de tests del proyecto (adyacente, directorio `tests/` raíz, o ambos) antes de marcar un módulo como sin cobertura.
|
|
225
|
+
- **Preguntas sin respuesta omitidas porque "parecen obvias"**: el mapa no registra por qué se usa una dependencia inusual o por qué un módulo tiene una estructura atípica. Causa: el agente asume conocimiento del equipo. Solución: toda decisión implícita no documentada en el codebase debe aparecer en "Preguntas sin respuesta" — el propósito es exactamente capturar lo que no es obvio para alguien externo al proyecto.
|
|
226
|
+
|
|
227
|
+
## Validar parser jerárquico contra el árbol REAL antes de congelar el dataclass
|
|
228
|
+
|
|
229
|
+
### SIEMPRE: ejecutar `find <raíz> -type d | sort` sobre datos reales antes de diseñar
|
|
230
|
+
|
|
231
|
+
**Cuándo aplicar**: al diseñar un `dataclass`, parser o modelo de estructura jerárquica (árbol de archivos, taxonomía de categorías, segmentos de ruta con numerales anidados) cuya forma exacta se desconoce a priori. Aplica especialmente cuando la jerarquía es heterogénea entre ramas.
|
|
232
|
+
|
|
233
|
+
**Problema que previene**: asumir una profundidad fija (p.ej. "5 niveles") o una gramática regular (p.ej. "siempre letra + número + letra") basándose en una muestra pequeña o en la documentación del dominio. La realidad de los datos suele tener:
|
|
234
|
+
- Profundidad variable entre ramas (5 niveles en una, 7 en otra).
|
|
235
|
+
- Numerales compuestos (árabe + romano + inciso + subinciso).
|
|
236
|
+
- Fusiones donde un nodo combina inciso con descripción en un solo segmento.
|
|
237
|
+
- Saltos de niveles porque el dato fuente los omitió.
|
|
238
|
+
|
|
239
|
+
Si el dataclass se congela sin ver estos casos, el parser requiere re-diseño completo al encontrar la primera rama atípica. Las 15 minutos de exploración ahorran horas de refactor.
|
|
240
|
+
|
|
241
|
+
**Regla operativa**:
|
|
242
|
+
|
|
243
|
+
1. Antes de escribir la primera línea del dataclass/parser, ejecutar:
|
|
244
|
+
```bash
|
|
245
|
+
find <raíz-del-dataset> -type d -mindepth 1 | sort | head -200
|
|
246
|
+
# o para dataset enorme:
|
|
247
|
+
find <raíz-del-dataset> -type d -mindepth 1 | awk -F/ '{print NF-1}' | sort | uniq -c
|
|
248
|
+
```
|
|
249
|
+
2. Inspeccionar a ojo 3-5 ramas distintas. Anotar variaciones en profundidad, tipos de numeral, presencia/ausencia de segmentos esperados.
|
|
250
|
+
3. Diseñar el dataclass para la variedad observada, no para el caso modal.
|
|
251
|
+
4. Si después se descubre un caso no cubierto, el fix es extender el parser — no colapsar el caso a un molde que no lo acomoda.
|
|
252
|
+
|
|
253
|
+
### Ejemplo genérico
|
|
254
|
+
|
|
255
|
+
```python
|
|
256
|
+
# MAL — dataclass con profundidad fija asumida
|
|
257
|
+
@dataclass
|
|
258
|
+
class RutaJerarquica:
|
|
259
|
+
nivel_1: str # asume siempre letra mayúscula
|
|
260
|
+
nivel_2: int # asume siempre número
|
|
261
|
+
nivel_3: str # asume siempre inciso
|
|
262
|
+
nivel_4: str | None # ocasionalmente un 4to nivel
|
|
263
|
+
|
|
264
|
+
# Cuando llega una rama "A.7 d) I 1/" el parser explota o pierde información.
|
|
265
|
+
|
|
266
|
+
# BIEN — dataclass con estructura variable comprobada contra datos reales
|
|
267
|
+
@dataclass(frozen=True)
|
|
268
|
+
class RutaJerarquica:
|
|
269
|
+
segmentos: tuple[str, ...] # profundidad variable
|
|
270
|
+
numeral_romano: str | None = None # presente solo en algunas ramas
|
|
271
|
+
numeral_arabe_secundario: int | None = None # caso observado en rama B
|
|
272
|
+
inciso_fusionado: bool = False # caso donde inciso+desc vienen juntos
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
**Relacionado**: ver también `testing-python` (tests multi-formato ANTES de refactorizar un parser) y `patrones-python` (normalizadores al formato canónico del proyecto).
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: memoria-busqueda
|
|
3
|
+
description: >
|
|
4
|
+
Búsqueda progresiva (Progressive Disclosure) sobre la memoria del sistema SWL:
|
|
5
|
+
aprendizajes en APRENDIZAJES.md, sesiones en sessions/*.json e instintos en
|
|
6
|
+
instintos/proyecto.yaml. Cargar cuando se necesite recuperar trabajo pasado,
|
|
7
|
+
buscar decisiones anteriores, entender qué se hizo en sesiones previas, o
|
|
8
|
+
evitar repetir errores ya documentados.
|
|
9
|
+
version: "1.0.0"
|
|
10
|
+
herramientasPermitidas: [Read]
|
|
11
|
+
exclusiones:
|
|
12
|
+
- "No cargar para búsquedas triviales en el codebase (nombre de función, ruta de archivo); `Grep` directo es más barato y no requiere el índice de sesiones."
|
|
13
|
+
- "No cargar si la información ya está en el contexto activo de la sesión — no hacer una búsqueda de memoria para algo que se dijo hace 2 turnos."
|
|
14
|
+
- "No cargar para escribir o actualizar aprendizajes; este skill es de solo lectura. Para escribir, usar `extractor-de-aprendizajes`."
|
|
15
|
+
- "No cargar cuando el proyecto no tiene historial (primer día) — no hay sesiones en `.planning/sessions/` ni entradas en APRENDIZAJES.md que buscar."
|
|
16
|
+
evolvable: true # default para skill estandar
|
|
17
|
+
---
|
|
18
|
+
# Memoria Búsqueda — Progressive Disclosure Search
|
|
19
|
+
|
|
20
|
+
## Cuándo cargar esta skill
|
|
21
|
+
|
|
22
|
+
- Antes de empezar una tarea: verificar si hay aprendizajes relevantes previos.
|
|
23
|
+
- Cuando el usuario pregunta "¿ya resolvimos esto antes?" o "¿qué hicimos la semana pasada?".
|
|
24
|
+
- Al iniciar una sesión nueva en un proyecto con historial acumulado.
|
|
25
|
+
- Para recuperar el contexto de una sesión anterior sin cargar todo a memoria.
|
|
26
|
+
- Cuando se detecta un error potencialmente ya visto y documentado.
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## El problema que resuelve
|
|
31
|
+
|
|
32
|
+
Cargar APRENDIZAJES.md completo o todas las sesiones en contexto es costoso:
|
|
33
|
+
- APRENDIZAJES.md puede tener 200+ entradas = 50,000+ tokens.
|
|
34
|
+
- 50 sesiones x 1,000 tokens promedio = 50,000 tokens adicionales.
|
|
35
|
+
- Total sin progressive disclosure: ~100,000 tokens para una búsqueda.
|
|
36
|
+
|
|
37
|
+
Con las 3 capas, el costo típico es:
|
|
38
|
+
- 20 índices (Capa 1): ~2,000 tokens.
|
|
39
|
+
- 5 timelines (Capa 2): ~2,500 tokens.
|
|
40
|
+
- 2 fetch completos (Capa 3): ~2,000 tokens.
|
|
41
|
+
- **Total: ~6,500 tokens. Ahorro: ~93%.**
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Las 3 capas de búsqueda
|
|
46
|
+
|
|
47
|
+
### Capa 1 — search(): índices compactos
|
|
48
|
+
|
|
49
|
+
**Cuándo usar**: Siempre primero. Retorna solo id, tipo, título, fecha y relevancia.
|
|
50
|
+
|
|
51
|
+
```js
|
|
52
|
+
const { search } = require('./hooks/lib/memory-search');
|
|
53
|
+
|
|
54
|
+
// Busqueda basica
|
|
55
|
+
const resultados = search(baseDir, "error build classpath");
|
|
56
|
+
// → [
|
|
57
|
+
// { id: "apr-5", tipo: "aprendizaje", titulo: "Fix classpath Maven en CI", fecha: "2026-03-10", relevancia: 0.9 },
|
|
58
|
+
// { id: "ses-20260310-142000", tipo: "sesion", titulo: "Investigacion build Java", fecha: "2026-03-10", relevancia: 0.6 },
|
|
59
|
+
// ]
|
|
60
|
+
|
|
61
|
+
// Con filtros
|
|
62
|
+
const soloAprendizajes = search(baseDir, "autenticación JWT", {
|
|
63
|
+
tipo: 'aprendizaje',
|
|
64
|
+
fecha_desde: '2026-01-01',
|
|
65
|
+
limit: 10,
|
|
66
|
+
});
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**Filtros disponibles**:
|
|
70
|
+
- `tipo`: `'aprendizaje'` | `'sesion'` | `'instinto'` (sin filtro = todas las fuentes)
|
|
71
|
+
- `fecha_desde`: string YYYY-MM-DD — excluye resultados anteriores
|
|
72
|
+
- `fecha_hasta`: string YYYY-MM-DD — excluye resultados posteriores
|
|
73
|
+
- `limit`: número máximo de resultados (default: 20)
|
|
74
|
+
|
|
75
|
+
**Costo por resultado**: ~50-100 tokens. Seguro pedir hasta 20 resultados.
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
### Capa 2 — timeline(): contexto cronológico
|
|
80
|
+
|
|
81
|
+
**Cuándo usar**: Después de search(), para los 3-7 resultados más relevantes.
|
|
82
|
+
Agrega contexto resumido sin traer el contenido completo.
|
|
83
|
+
|
|
84
|
+
```js
|
|
85
|
+
const { timeline } = require('./hooks/lib/memory-search');
|
|
86
|
+
|
|
87
|
+
// Tomar los 5 ids mas relevantes de search()
|
|
88
|
+
const ids = resultados.slice(0, 5).map(r => r.id);
|
|
89
|
+
const ctx = timeline(baseDir, ids);
|
|
90
|
+
// → [
|
|
91
|
+
// { id: "apr-5", tipo: "aprendizaje", titulo: "...", contenido: "<primeros 500 chars>", fecha: "2026-03-10" },
|
|
92
|
+
// { id: "ses-...", tipo: "sesion", contenido: "Modo: dev | Tool calls: 47 | Archivos: build.gradle | ...", fecha: "2026-03-10" },
|
|
93
|
+
// ]
|
|
94
|
+
// Ordenado descendente por fecha (más reciente primero).
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**Costo por entrada**: ~200-500 tokens. Seguro para 5-7 entradas simultáneas.
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
### Capa 3 — fetch(): detalle completo
|
|
102
|
+
|
|
103
|
+
**Cuándo usar**: Solo para los 1-3 resultados definitivamente relevantes.
|
|
104
|
+
Retorna el contenido completo sin truncar.
|
|
105
|
+
|
|
106
|
+
```js
|
|
107
|
+
const { fetch } = require('./hooks/lib/memory-search');
|
|
108
|
+
|
|
109
|
+
// Solo para el resultado más relevante
|
|
110
|
+
const detalle = fetch(baseDir, "apr-5");
|
|
111
|
+
// → { id: "apr-5", tipo: "aprendizaje", contenido: "<bloque completo del APRENDIZAJES.md>" }
|
|
112
|
+
|
|
113
|
+
const sesionCompleta = fetch(baseDir, "ses-20260310-142000");
|
|
114
|
+
// → { id: "ses-...", tipo: "sesion", contenido: { ...objeto JSON completo... } }
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**Costo**: ~500-1,000 tokens por resultado. NO hacer fetch de todos los resultados.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Fuentes de datos y formato de IDs
|
|
122
|
+
|
|
123
|
+
| Fuente | Formato de ID | Ejemplo |
|
|
124
|
+
|--------|--------------|---------|
|
|
125
|
+
| APRENDIZAJES.md | `apr-{N}` donde N es el índice del bloque H2 | `apr-0`, `apr-42` |
|
|
126
|
+
| sessions/*.json | `ses-YYYYMMDD-HHmmss` (del campo `id` del JSON) | `ses-20260325-143000` |
|
|
127
|
+
| instintos/proyecto.yaml | el valor del campo `id:` en el YAML | `inst-selectinload-async` |
|
|
128
|
+
|
|
129
|
+
Los IDs de sesiones son estables (basados en timestamp). Los IDs de aprendizajes
|
|
130
|
+
(`apr-N`) son posicionales: si se reordena APRENDIZAJES.md, los índices cambian.
|
|
131
|
+
Siempre obtenerlos desde search(), no hardcodearlos.
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Protocolo de busqueda recomendado
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
1. search(query, { limit: 20 })
|
|
139
|
+
→ Leer títulos y relevancias. Identificar los 3-7 más prometedores.
|
|
140
|
+
|
|
141
|
+
2. timeline(ids_seleccionados)
|
|
142
|
+
→ Leer el contenido resumido. Confirmar cuáles son relevantes.
|
|
143
|
+
|
|
144
|
+
3. fetch(id_mas_relevante)
|
|
145
|
+
→ Solo si el contenido resumido no es suficiente.
|
|
146
|
+
→ Máximo 2-3 fetch por consulta.
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
**Regla de oro**: Si la respuesta de timeline es suficiente, no hacer fetch.
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Anti-patrones
|
|
154
|
+
|
|
155
|
+
- **Fetch masivo**: `resultados.forEach(r => fetch(baseDir, r.id))` — anula el ahorro.
|
|
156
|
+
- **Búsqueda sin query**: `search(baseDir, "")` — retorna vacío (protección intencional).
|
|
157
|
+
- **Términos muy cortos**: "es", "el", "un" se filtran (longitud mínima: 3 caracteres).
|
|
158
|
+
- **Ignorar la capa 1**: Ir directo a fetch sin buscar primero.
|
|
159
|
+
- **Cargar APRENDIZAJES.md directamente**: Usar siempre esta API en su lugar.
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Cuándo NO cargar
|
|
164
|
+
|
|
165
|
+
- La consulta es una búsqueda de código (patrón, función, clase); `Grep` sobre el codebase es más eficiente y no involucra el índice de sesiones.
|
|
166
|
+
- La información pedida ya está en el contexto de la conversación — re-buscarla en la memoria persistente cuando ya está disponible desperdicia tokens y tiempo.
|
|
167
|
+
- El objetivo es agregar o actualizar un aprendizaje; este skill es de solo lectura. Usar `extractor-de-aprendizajes` para escrituras.
|
|
168
|
+
- El proyecto no tiene sesiones anteriores ni entradas en APRENDIZAJES.md; la búsqueda devolvería vacío. Verificar con `ls .planning/sessions/` antes de cargar.
|
|
169
|
+
|
|
170
|
+
## Gotchas / Errores comunes no obvios
|
|
171
|
+
|
|
172
|
+
- **Fetch masivo de todos los resultados de search()**: el agente llama a `fetch()` para cada uno de los 20 resultados de `search()`, consumiendo ~20,000 tokens en lugar de los ~6,500 del protocolo de 3 capas. Causa: se implementó el fetch como iteración directa. Solución: la regla de oro es explícita — hacer fetch solo de los 1-3 resultados definitivamente relevantes; para los demás, el resumen de `timeline()` es suficiente.
|
|
173
|
+
- **IDs de aprendizaje (`apr-N`) hardcodeados entre sesiones**: el agente guarda `apr-42` en ESTADO.md y lo usa en la sesión siguiente, pero el índice cambió porque se reordenó APRENDIZAJES.md. Causa: los IDs posicionales son estables solo dentro de una sesión. Solución: nunca hardcodear `apr-N` en persistencia larga; siempre obtenerlos desde `search()` en el momento de uso.
|
|
174
|
+
- **Búsqueda con query de 1-2 caracteres retorna vacío sin advertencia**: el agente busca `"CI"` y recibe un array vacío sin entender por qué. Causa: el filtro de longitud mínima de 3 caracteres descarta el término. Solución: usar queries de al menos 3 caracteres o frases descriptivas; para acrónimos cortos, expandirlos ("CI" → "continuous integration" o "integración continua").
|
|
175
|
+
- **Capa 3 (fetch) usada para instintos que `context-builder` ya inyectó**: el agente hace fetch del instinto `inst-selectinload-async` cuando ese instinto ya está en el bloque de contexto inyectado al inicio de sesión. Causa: no se verificó si el instinto ya estaba disponible en contexto. Solución: antes de hacer fetch de un instinto, verificar si aparece en el bloque `[SWL Context]` inyectado — si está ahí, no es necesario recuperarlo.
|
|
176
|
+
|
|
177
|
+
## Integración en hooks y agentes
|
|
178
|
+
|
|
179
|
+
Para usar desde un hook o agente SWL:
|
|
180
|
+
|
|
181
|
+
```js
|
|
182
|
+
// En cualquier hook dentro de hooks/
|
|
183
|
+
const { search, timeline, fetch } = require('./lib/memory-search');
|
|
184
|
+
const baseDir = process.env.CLAUDE_PROJECT_DIR || process.cwd();
|
|
185
|
+
|
|
186
|
+
// Ejemplo: al inicio de sesión, buscar aprendizajes relevantes al contexto
|
|
187
|
+
const aprendizajes = search(baseDir, "FastAPI SQLAlchemy async", {
|
|
188
|
+
tipo: 'aprendizaje',
|
|
189
|
+
limit: 5,
|
|
190
|
+
});
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
El módulo es síncrono, sin dependencias externas y sin efectos secundarios.
|
|
194
|
+
Safe para usar en PreToolUse hooks sin riesgo de bloqueo.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../../../schemas/skill-evals.schema.json",
|
|
3
|
+
"skill_name": "memoria-busqueda",
|
|
4
|
+
"artifact_type": "skill",
|
|
5
|
+
"schema_version": 1,
|
|
6
|
+
"description": "Evals para memoria-busqueda — progressive disclosure de APRENDIZAJES/sessions/instintos.",
|
|
7
|
+
"evals": [
|
|
8
|
+
{
|
|
9
|
+
"id": 0,
|
|
10
|
+
"prompt": "Quiero saber si ya resolvimos un problema similar antes. ¿Qué capa de búsqueda uso primero?",
|
|
11
|
+
"files": [],
|
|
12
|
+
"expectations": [
|
|
13
|
+
"Comienza por Capa 1 (índices, ~2000 tokens).",
|
|
14
|
+
"Solo escala a Capa 2 (timelines) si Capa 1 indica relevancia.",
|
|
15
|
+
"Solo escala a Capa 3 (fetch completo) cuando la entrada es claramente relevante.",
|
|
16
|
+
"Menciona el ahorro ~93% de tokens vs cargar todo."
|
|
17
|
+
],
|
|
18
|
+
"tags": ["progressive-disclosure"]
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"id": "anti-pattern-load-all",
|
|
22
|
+
"prompt": "¿Puedo cargar APRENDIZAJES.md completo para que el contexto sea más rico?",
|
|
23
|
+
"files": [],
|
|
24
|
+
"expectations": [
|
|
25
|
+
"La respuesta indica que NO, sería ~50,000 tokens innecesarios.",
|
|
26
|
+
"La respuesta menciona el patrón de progressive disclosure.",
|
|
27
|
+
"La respuesta redirige a la Capa 1 (índices)."
|
|
28
|
+
],
|
|
29
|
+
"grading_guidance": "Failure si sugiere cargar todo.",
|
|
30
|
+
"tags": ["anti-pattern", "tokens"]
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "fuentes",
|
|
34
|
+
"prompt": "¿Qué tres fuentes indexa esta skill?",
|
|
35
|
+
"files": [],
|
|
36
|
+
"expectations": [
|
|
37
|
+
"APRENDIZAJES.md",
|
|
38
|
+
"sessions/*.json",
|
|
39
|
+
"instintos/proyecto.yaml (o equivalente instintos.)"
|
|
40
|
+
],
|
|
41
|
+
"tags": ["scope"]
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
}
|