@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,140 @@
|
|
|
1
|
+
# API REST — Referencia completa
|
|
2
|
+
|
|
3
|
+
## Paginación por cursor (recomendada para datos en tiempo real)
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
GET /facturas?cursor=eyJpZCI6IjEyMyIsImZlY2hhIjoiMjAyNiJ9&limit=20
|
|
7
|
+
|
|
8
|
+
# Respuesta
|
|
9
|
+
{
|
|
10
|
+
"items": [...],
|
|
11
|
+
"pagination": {
|
|
12
|
+
"cursor_siguiente": "eyJpZCI6IjE0MyIsImZlY2hhIjoiMjAyNiJ9",
|
|
13
|
+
"cursor_anterior": "eyJpZCI6IjEwMyIsImZlY2hhIjoiMjAyNiJ9",
|
|
14
|
+
"tiene_siguiente": true,
|
|
15
|
+
"tiene_anterior": true,
|
|
16
|
+
"total": 847
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Paginación por offset (simple, pero inestable con inserciones)
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
GET /facturas?page=3&page_size=20
|
|
25
|
+
|
|
26
|
+
# Respuesta
|
|
27
|
+
{
|
|
28
|
+
"items": [...],
|
|
29
|
+
"pagination": {
|
|
30
|
+
"page": 3,
|
|
31
|
+
"page_size": 20,
|
|
32
|
+
"total": 847,
|
|
33
|
+
"total_paginas": 43,
|
|
34
|
+
"tiene_siguiente": true,
|
|
35
|
+
"tiene_anterior": true
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**Elegir cursor cuando**: los datos se actualizan frecuentemente, la consistencia entre
|
|
41
|
+
páginas importa, o la colección es grande (>10k elementos).
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Filtrado y ordenamiento completo
|
|
46
|
+
|
|
47
|
+
### Query parameters para filtros
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
# Filtros simples
|
|
51
|
+
GET /facturas?estatus=emitida&fecha_desde=2026-01-01&fecha_hasta=2026-03-31
|
|
52
|
+
|
|
53
|
+
# Filtro de texto (búsqueda)
|
|
54
|
+
GET /facturas?q=empresa+acme
|
|
55
|
+
|
|
56
|
+
# Filtros múltiples del mismo campo
|
|
57
|
+
GET /facturas?estatus=emitida&estatus=pendiente
|
|
58
|
+
|
|
59
|
+
# Ordenamiento: prefijo - para descendente
|
|
60
|
+
GET /facturas?orden=-fecha,folio
|
|
61
|
+
|
|
62
|
+
# Proyección de campos
|
|
63
|
+
GET /facturas?campos=id,folio,monto_total
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Convenciones de filtros de fecha
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
fecha_desde / fecha_hasta # rango de fecha
|
|
70
|
+
creado_desde / creado_hasta # rango de creación
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## HATEOAS — Hypermedia
|
|
76
|
+
|
|
77
|
+
Incluir links a recursos relacionados en las respuestas:
|
|
78
|
+
|
|
79
|
+
```json
|
|
80
|
+
{
|
|
81
|
+
"id": "factura-123",
|
|
82
|
+
"folio": "F-00001",
|
|
83
|
+
"estatus": "emitida",
|
|
84
|
+
"monto_total": 1160.00,
|
|
85
|
+
"_links": {
|
|
86
|
+
"self": { "href": "/v1/facturas/factura-123" },
|
|
87
|
+
"cancelar": { "href": "/v1/facturas/factura-123/cancelar", "method": "POST" },
|
|
88
|
+
"items": { "href": "/v1/facturas/factura-123/items" },
|
|
89
|
+
"cliente": { "href": "/v1/clientes/cliente-456" }
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
En APIs internas, HATEOAS es opcional. En APIs públicas mejora la descubribilidad.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Headers importantes
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
# Respuesta con recurso creado
|
|
102
|
+
Location: /v1/facturas/factura-123
|
|
103
|
+
|
|
104
|
+
# Caché
|
|
105
|
+
Cache-Control: max-age=3600, must-revalidate
|
|
106
|
+
ETag: "33a64df551425fcc55e4d42a148795d9f25f89d"
|
|
107
|
+
|
|
108
|
+
# Rate limiting
|
|
109
|
+
X-RateLimit-Limit: 1000
|
|
110
|
+
X-RateLimit-Remaining: 847
|
|
111
|
+
X-RateLimit-Reset: 1711324800
|
|
112
|
+
|
|
113
|
+
# Idempotencia en POST (para operaciones que deben ser idempotentes)
|
|
114
|
+
Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Versionado — detalles
|
|
120
|
+
|
|
121
|
+
### Versionado en la URI (recomendado para APIs públicas)
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
https://api.empresa.com/v1/facturas
|
|
125
|
+
https://api.empresa.com/v2/facturas
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Versionado en header (más limpio, más difícil de probar)
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
GET /facturas
|
|
132
|
+
Accept: application/vnd.empresa.v2+json
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Estrategia de deprecación
|
|
136
|
+
|
|
137
|
+
1. Anunciar con al menos 6 meses de anticipación.
|
|
138
|
+
2. Agregar header `Deprecation: date="2027-01-01"` a respuestas de versiones deprecadas.
|
|
139
|
+
3. Agregar header `Sunset: Mon, 01 Jan 2027 00:00:00 GMT`.
|
|
140
|
+
4. Mantener compatibilidad hasta la fecha de sunset.
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aprendizaje-continuo
|
|
3
|
+
description: >
|
|
4
|
+
Sistema de aprendizaje continuo v2.1 basado en instintos. Cubre observacion de
|
|
5
|
+
sesion via hooks, creacion y gestion de instintos con niveles de confianza,
|
|
6
|
+
tres scopes (proyecto/dominio/global), degradacion automatica por contradiccion,
|
|
7
|
+
promocion a skills/comandos/agentes, evolucion (merge, split, deprecate) y
|
|
8
|
+
proteccion contra contaminacion cross-proyecto.
|
|
9
|
+
version: "1.0.0"
|
|
10
|
+
herramientasPermitidas: [Read]
|
|
11
|
+
exclusiones:
|
|
12
|
+
- "No cargar para consultar instintos ya cargados en la sesión actual — si el perfil fue leído, re-cargarlo es desperdicio de contexto."
|
|
13
|
+
- "No cargar para registrar una decisión de proyecto; las decisiones de diseño van a `DECISIONS.md` o APRENDIZAJES.md, no al sistema de instintos."
|
|
14
|
+
- "No cargar para gestionar la memoria nativa de Claude Code (auto-memory); este skill cubre instintos de `instintos/*.yaml`, canal distinto."
|
|
15
|
+
- "No cargar para promover un draft a instinto global sin evidence_count ≥ 3 — la promoción prematura contamina el scope global con datos sin confirmar."
|
|
16
|
+
evolvable: true # default para skill estandar
|
|
17
|
+
---
|
|
18
|
+
# Aprendizaje Continuo v2 — Sistema de Instintos
|
|
19
|
+
|
|
20
|
+
## Concepto Central
|
|
21
|
+
|
|
22
|
+
Un **instinto** es una unidad de conocimiento aprendido de la experiencia real de sesión.
|
|
23
|
+
A diferencia de las skills (conocimiento declarativo estático), los instintos son
|
|
24
|
+
conocimiento inductivo: emergen de observar patrones repetidos en el comportamiento
|
|
25
|
+
del agente y los resultados que produce.
|
|
26
|
+
|
|
27
|
+
El sistema tiene cuatro capas:
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
Observación → Instinto (draft) → Instinto (consolidado) → Promoción
|
|
31
|
+
(hook) confianza<0.5 confianza≥0.5 skill/cmd/agente
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 1. Observación via Hooks
|
|
37
|
+
|
|
38
|
+
### Cobertura del 100% de actividad de sesión
|
|
39
|
+
|
|
40
|
+
Todo lo que el agente hace pasa por hooks instrumentados:
|
|
41
|
+
|
|
42
|
+
```jsonc
|
|
43
|
+
// .claude/settings.json — hooks de observación
|
|
44
|
+
{
|
|
45
|
+
"hooks": {
|
|
46
|
+
"PreToolUse": [
|
|
47
|
+
{
|
|
48
|
+
"matcher": ".*",
|
|
49
|
+
"hooks": [{ "type": "command", "command": "node hooks/observe-pre.js" }]
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
"PostToolUse": [
|
|
53
|
+
{
|
|
54
|
+
"matcher": ".*",
|
|
55
|
+
"hooks": [{ "type": "command", "command": "node hooks/observe-post.js" }]
|
|
56
|
+
}
|
|
57
|
+
],
|
|
58
|
+
"Stop": [
|
|
59
|
+
{
|
|
60
|
+
"hooks": [{ "type": "command", "command": "node hooks/session-end.js" }]
|
|
61
|
+
}
|
|
62
|
+
]
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Qué observar en cada evento
|
|
68
|
+
|
|
69
|
+
| Evento | Datos relevantes | Señal de instinto |
|
|
70
|
+
|--------|-----------------|-------------------|
|
|
71
|
+
| PreToolUse | tool_name, input | Herramienta usada antes de X |
|
|
72
|
+
| PostToolUse | tool_name, output, duration_ms | Herramienta exitosa/fallida |
|
|
73
|
+
| Stop | session_id, turn_count | Patrón de sesión completa |
|
|
74
|
+
|
|
75
|
+
**Regla**: los hooks de observación NUNCA deben producir exit code != 0.
|
|
76
|
+
Un fallo de observación no debe interrumpir el trabajo del agente.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 2. Niveles de Confianza
|
|
81
|
+
|
|
82
|
+
### Escala de confianza (0.0 — 1.0)
|
|
83
|
+
|
|
84
|
+
| Rango | Estado | Significado |
|
|
85
|
+
|-------|--------|-------------|
|
|
86
|
+
| 0.0 – 0.29 | draft | Observado 1-2 veces, no fiable |
|
|
87
|
+
| 0.30 – 0.49 | draft | Patrón emergente, necesita confirmación |
|
|
88
|
+
| 0.50 – 0.69 | activo | Confiable para el scope actual |
|
|
89
|
+
| 0.70 – 0.89 | activo | Alta confianza, considerar promoción |
|
|
90
|
+
| 0.90 – 1.00 | activo | Candidato inmediato a skill/comando |
|
|
91
|
+
|
|
92
|
+
### Algoritmo de actualización de confianza
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
nueva_confianza = confianza_actual + (0.1 × peso_evento)
|
|
96
|
+
|
|
97
|
+
peso_evento:
|
|
98
|
+
confirmacion_exitosa = +1.0
|
|
99
|
+
confirmacion_prevencion = +0.8
|
|
100
|
+
excepcion_encontrada = -0.3
|
|
101
|
+
refutacion_directa = -0.5
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
La confianza nunca supera 0.95 automáticamente — el último 5% requiere
|
|
105
|
+
revisión humana explícita antes de promoción.
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 3. Scope: Proyecto, Dominio y Global
|
|
110
|
+
|
|
111
|
+
### Scope de proyecto
|
|
112
|
+
|
|
113
|
+
- El instinto aplica solo en el directorio del proyecto actual
|
|
114
|
+
- Se almacena en `.claude/instintos/`
|
|
115
|
+
- Se activa cuando `PROJECT_NAME` coincide
|
|
116
|
+
- Ejemplo: "En este proyecto, los modelos usan prefijo `tb_`"
|
|
117
|
+
|
|
118
|
+
### Scope de dominio (nuevo en v4.1)
|
|
119
|
+
|
|
120
|
+
- El instinto aplica a todos los proyectos que usan el mismo stack/dominio
|
|
121
|
+
- Se almacena en `~/.claude/instintos/dominio/`
|
|
122
|
+
- Se activa cuando el proyecto actual coincide con las condiciones de activación
|
|
123
|
+
- Ejemplo: "En FastAPI, los background tasks no tienen acceso a la session de BD del request"
|
|
124
|
+
|
|
125
|
+
### Scope global
|
|
126
|
+
|
|
127
|
+
- El instinto aplica en cualquier proyecto
|
|
128
|
+
- Se almacena en `~/.claude/instintos/`
|
|
129
|
+
- Se activa siempre
|
|
130
|
+
- Ejemplo: "Nunca usar `except: pass` en Python"
|
|
131
|
+
|
|
132
|
+
Para referencia completa de dominios válidos, reglas de promoción de scope, formato de instinto,
|
|
133
|
+
evolución (merge/split/deprecate), protección cross-proyecto y estructura de directorio,
|
|
134
|
+
ver [recursos/referencia-instintos.md](recursos/referencia-instintos.md).
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Gotchas / Errores comunes no obvios
|
|
139
|
+
|
|
140
|
+
- **Instinto de scope global demasiado específico de un framework**: un instinto como "En FastAPI siempre usar `selectinload`" se promueve a `global.yaml` porque tuvo alta confianza. Causa: el criterio de promoción no verificó que el patrón sea cross-proyecto y no de dominio. Solución: antes de mover a global, aplicar el filtro "¿le sirve esto a un ingeniero en cualquier stack?"; si no, mantenerlo en `dominio.yaml` o `proyecto.yaml`.
|
|
141
|
+
- **Hooks de observación con exit code != 0 interrumpen la sesión**: el hook `observe-pre.js` lanza una excepción y Claude Code detiene la tarea en curso. Causa: violación de la regla "los hooks de observación NUNCA deben producir exit code != 0". Solución: envolver toda la lógica del hook en `try/catch` y loggear el error al stderr sin propagarlo — la observabilidad nunca debe bloquear el trabajo productivo.
|
|
142
|
+
- **Duplicación de instintos entre `proyecto.yaml` y `APRENDIZAJES.md`**: el mismo anti-patrón existe en ambos canales con información inconsistente. Causa: el instinto se creó manualmente sin verificar si ya había una entrada en APRENDIZAJES.md. Solución: antes de crear un instinto nuevo, ejecutar `memoria-busqueda` para verificar si ya existe en otro canal; si existe, actualizar el canal correcto según `reglas/memoria-consolidada.md`.
|
|
143
|
+
- **Confianza llegando a 0.95 sin revisión humana**: el algoritmo suma 0.1 por evento y el instinto llega a 0.95 sin que nadie lo revise antes de la promoción. Causa: no se aplicó la restricción del último 5% (requiere revisión explícita). Solución: al llegar a 0.90, el sistema debe emitir un checkpoint `human-verify` antes de superar ese umbral — automatizar la vigilancia en `session-end.js`.
|
|
144
|
+
|
|
145
|
+
## Anti-patrones
|
|
146
|
+
|
|
147
|
+
- Crear instintos sin evidencia (mínimo 2 observaciones para pasar de draft)
|
|
148
|
+
- Instintos con scope global demasiado específicos a un framework de nicho
|
|
149
|
+
- No actualizar la confianza cuando el instinto previene un error (refuerzo positivo)
|
|
150
|
+
- Fusionar instintos de dominios distintos sin justificación clara
|
|
151
|
+
- Ignorar instintos en cuarentena — siempre revisarlos en la fecha programada
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../../../schemas/skill-evals.schema.json",
|
|
3
|
+
"skill_name": "aprendizaje-continuo",
|
|
4
|
+
"artifact_type": "skill",
|
|
5
|
+
"schema_version": 1,
|
|
6
|
+
"description": "Evals para aprendizaje-continuo — sistema de instintos, scopes, confianza, degradación.",
|
|
7
|
+
"evals": [
|
|
8
|
+
{
|
|
9
|
+
"id": 0,
|
|
10
|
+
"prompt": "Un patrón se observó 5 veces sin contradicciones. ¿A qué confianza debería subir el instinto?",
|
|
11
|
+
"files": [],
|
|
12
|
+
"expectations": [
|
|
13
|
+
"La respuesta indica confianza ≥ 0.8 (o sobre la tabla de promoción).",
|
|
14
|
+
"La respuesta menciona que se puede promover a skill/cmd/agente cuando confidence ≥ 0.8."
|
|
15
|
+
],
|
|
16
|
+
"tags": ["promotion"]
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": 1,
|
|
20
|
+
"prompt": "Un instinto con confidence 0.7 recibe una contradicción observada. ¿Qué le pasa?",
|
|
21
|
+
"files": [],
|
|
22
|
+
"expectations": [
|
|
23
|
+
"La respuesta indica que se degrada (reduce confidence).",
|
|
24
|
+
"La respuesta menciona el hook `degradacion-instintos.js` como el mecanismo.",
|
|
25
|
+
"La respuesta describe que con ≥3 contradicciones se marca `[DEGRADADO]`."
|
|
26
|
+
],
|
|
27
|
+
"tags": ["degradation"]
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"id": "scopes",
|
|
31
|
+
"prompt": "¿Cuáles son los tres scopes de instintos y cuándo se promueve un instinto de project a global?",
|
|
32
|
+
"files": [],
|
|
33
|
+
"expectations": [
|
|
34
|
+
"Los tres scopes son: project, domain, global.",
|
|
35
|
+
"Promoción a global requiere confidence > 0.8.",
|
|
36
|
+
"La respuesta menciona protección anti-contaminación cross-proyecto."
|
|
37
|
+
],
|
|
38
|
+
"tags": ["scopes"]
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"id": "anti-pattern-direct-skill-creation",
|
|
42
|
+
"prompt": "Observo un patrón útil en una sesión. ¿Debo crear un skill inmediatamente?",
|
|
43
|
+
"files": [],
|
|
44
|
+
"expectations": [
|
|
45
|
+
"La respuesta indica que NO inmediatamente.",
|
|
46
|
+
"La respuesta menciona la escalera: solución ad-hoc → repetible → skill.",
|
|
47
|
+
"La respuesta describe que se requieren ≥3 ocurrencias exitosas antes de promover a skill."
|
|
48
|
+
],
|
|
49
|
+
"grading_guidance": "Failure si sugiere crear skill desde primer observación.",
|
|
50
|
+
"tags": ["anti-pattern"]
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
}
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
# Referencia Completa — Sistema de Instintos
|
|
2
|
+
|
|
3
|
+
## Hook de Observación Mínimo (Node.js)
|
|
4
|
+
|
|
5
|
+
```javascript
|
|
6
|
+
// hooks/observe-post.js
|
|
7
|
+
const fs = require('fs');
|
|
8
|
+
|
|
9
|
+
const input = JSON.parse(fs.readFileSync('/dev/stdin', 'utf8'));
|
|
10
|
+
const { tool_name, tool_input, tool_response } = input;
|
|
11
|
+
|
|
12
|
+
const event = {
|
|
13
|
+
ts: Date.now(),
|
|
14
|
+
tool: tool_name,
|
|
15
|
+
success: !tool_response?.error,
|
|
16
|
+
duration_ms: tool_response?.duration_ms ?? null,
|
|
17
|
+
project: process.env.PROJECT_NAME ?? 'global',
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
// Append al log de observaciones
|
|
21
|
+
const logPath = process.env.OBSERVATIONS_LOG ?? '.claude/observations.jsonl';
|
|
22
|
+
fs.appendFileSync(logPath, JSON.stringify(event) + '\n');
|
|
23
|
+
|
|
24
|
+
// Exit 0 obligatorio — nunca bloquear el flujo
|
|
25
|
+
process.exit(0);
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Formato Completo de un Instinto
|
|
31
|
+
|
|
32
|
+
```yaml
|
|
33
|
+
---
|
|
34
|
+
id: instinto-20240315-001
|
|
35
|
+
titulo: "Siempre usar selectinload en queries con relaciones"
|
|
36
|
+
confianza: 0.75
|
|
37
|
+
scope: proyecto # "proyecto" | "global"
|
|
38
|
+
proyecto: sigaf-backend # solo si scope=proyecto
|
|
39
|
+
observaciones: 7 # cuántas veces se observó
|
|
40
|
+
primera_vez: "2024-03-10"
|
|
41
|
+
ultima_vez: "2024-03-15"
|
|
42
|
+
estado: activo # "draft" | "activo" | "deprecado" | "promovido"
|
|
43
|
+
promovido_a: null # "skill:fastapi-experto" | "comando:fix-selectin" | null
|
|
44
|
+
tags: [sqlalchemy, async, orm]
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Descripción
|
|
48
|
+
|
|
49
|
+
Al usar SQLAlchemy async, cada vez que se accede a una relación en la
|
|
50
|
+
serialización Pydantic sin `selectinload()` se produce `MissingGreenlet`.
|
|
51
|
+
|
|
52
|
+
## Patrón observado
|
|
53
|
+
|
|
54
|
+
En 7 sesiones de trabajo con el modelo `fastapi-experto`, se detectó que
|
|
55
|
+
queries sin eager loading causaban errores en producción que no aparecían
|
|
56
|
+
en tests síncronos.
|
|
57
|
+
|
|
58
|
+
## Acción correctiva
|
|
59
|
+
|
|
60
|
+
```python
|
|
61
|
+
# SIEMPRE incluir selectinload para relaciones accedidas
|
|
62
|
+
stmt = select(Modelo).options(selectinload(Modelo.relacion))
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Condiciones de activación
|
|
66
|
+
|
|
67
|
+
- Proyecto usa SQLAlchemy async (detectado en requirements.txt)
|
|
68
|
+
- Se están escribiendo endpoints FastAPI con Pydantic
|
|
69
|
+
|
|
70
|
+
## Evidencia
|
|
71
|
+
|
|
72
|
+
- Sesión 2024-03-10: error MissingGreenlet en endpoint /usuarios
|
|
73
|
+
- Sesión 2024-03-12: mismo error en endpoint /proyectos
|
|
74
|
+
- Sesión 2024-03-15: prevenido al aplicar selectinload preventivamente
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Scope de Dominio (v4.1)
|
|
80
|
+
|
|
81
|
+
Formato de instinto con scope dominio:
|
|
82
|
+
|
|
83
|
+
```yaml
|
|
84
|
+
---
|
|
85
|
+
scope: dominio
|
|
86
|
+
dominio: backend-python
|
|
87
|
+
condiciones_activacion:
|
|
88
|
+
- "requirements.txt contiene fastapi"
|
|
89
|
+
- "pyproject.toml contiene fastapi"
|
|
90
|
+
---
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Dominios válidos (alineados con la tabla de habilidades del sistema):
|
|
94
|
+
|
|
95
|
+
| Dominio | Se activa cuando el proyecto contiene |
|
|
96
|
+
|---------|--------------------------------------|
|
|
97
|
+
| `backend-python` | requirements.txt/pyproject.toml con fastapi, django, flask |
|
|
98
|
+
| `backend-node` | package.json con express, fastify, nestjs |
|
|
99
|
+
| `frontend-react` | package.json con react, next |
|
|
100
|
+
| `frontend-angular` | package.json con @angular/core |
|
|
101
|
+
| `frontend-css` | archivos *.css, *.scss, tailwind.config.* |
|
|
102
|
+
| `mobile-android` | build.gradle con android, archivos *.kt |
|
|
103
|
+
| `mobile-ios` | *.xcodeproj, Package.swift, archivos *.swift |
|
|
104
|
+
| `mobile-cross` | package.json con react-native, pubspec.yaml con flutter |
|
|
105
|
+
| `datos` | archivos *.sql, dbt_project.yml, alembic/ |
|
|
106
|
+
| `infra` | archivos *.tf, docker-compose*, k8s/ |
|
|
107
|
+
| `seguridad` | auth/, security/, middleware/ |
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Reglas de Promoción de Scope
|
|
112
|
+
|
|
113
|
+
**Proyecto -> Dominio**: Un instinto de proyecto puede ascender a dominio si:
|
|
114
|
+
1. Se observa en 2+ proyectos distintos del mismo dominio
|
|
115
|
+
2. La confianza es >= 0.6 en ambos proyectos
|
|
116
|
+
3. La condición de activación es detectable automáticamente (archivo de config)
|
|
117
|
+
|
|
118
|
+
**Dominio -> Global**: Un instinto de dominio puede ascender a global si:
|
|
119
|
+
1. Se observa en 3+ dominios distintos con el mismo patrón
|
|
120
|
+
2. La confianza es >= 0.7 en todos los dominios
|
|
121
|
+
3. No contradice ningún instinto global existente
|
|
122
|
+
|
|
123
|
+
**Degradación**: Un instinto puede bajar de scope si es contradicho en un contexto
|
|
124
|
+
donde debería aplicar.
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
# Comando para promover scope
|
|
128
|
+
node scripts/instinto-promover-scope.js \
|
|
129
|
+
--id instinto-20240315-001 \
|
|
130
|
+
--de proyecto \
|
|
131
|
+
--a dominio \
|
|
132
|
+
--dominio backend-python
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Promoción de Instintos
|
|
138
|
+
|
|
139
|
+
### A Skill
|
|
140
|
+
|
|
141
|
+
Cuando un instinto tiene confianza >= 0.85 y cubre un dominio técnico bien definido:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
# Genera un borrador de SKILL.md a partir del instinto
|
|
145
|
+
node scripts/instinto-a-skill.js \
|
|
146
|
+
--instinto .claude/instintos/instinto-20240315-001.md \
|
|
147
|
+
--skill-dir habilidades/selectinload-sqlalchemy/
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
El instinto se marca `estado: promovido` y `promovido_a: skill:selectinload-sqlalchemy`.
|
|
151
|
+
|
|
152
|
+
### A Comando
|
|
153
|
+
|
|
154
|
+
Cuando el instinto describe una acción repetitiva que puede automatizarse:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
node scripts/instinto-a-comando.js \
|
|
158
|
+
--instinto .claude/instintos/instinto-20240318-003.md \
|
|
159
|
+
--comando-dir comandos/fix-missing-selectin/
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### A Agente
|
|
163
|
+
|
|
164
|
+
Cuando el instinto describe un workflow completo y recurrente (confianza >= 0.90):
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
node scripts/instinto-a-agente.js \
|
|
168
|
+
--instinto .claude/instintos/instinto-20240320-007.md \
|
|
169
|
+
--agente-dir agentes/revisor-sqlalchemy/
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Evolución de Instintos
|
|
175
|
+
|
|
176
|
+
### Merge (fusión)
|
|
177
|
+
|
|
178
|
+
Dos instintos con patrones solapados se fusionan:
|
|
179
|
+
|
|
180
|
+
```yaml
|
|
181
|
+
# merge-plan.yaml
|
|
182
|
+
fuente_a: instinto-20240310-001 # "usar selectinload"
|
|
183
|
+
fuente_b: instinto-20240312-003 # "lazy='selectin' en relaciones Usuario"
|
|
184
|
+
resultado: instinto-20240320-010 # "estrategia completa de eager loading async"
|
|
185
|
+
razon: "Ambos instintos cubren el mismo dominio desde ángulos complementarios"
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Regla: el instinto fusionado hereda `confianza = max(a, b) × 0.9` (penalty por fusión).
|
|
189
|
+
|
|
190
|
+
### Split (división)
|
|
191
|
+
|
|
192
|
+
Un instinto demasiado genérico se divide en instintos más específicos:
|
|
193
|
+
|
|
194
|
+
```yaml
|
|
195
|
+
# split-plan.yaml
|
|
196
|
+
fuente: instinto-20240301-001 # "buenas prácticas SQLAlchemy"
|
|
197
|
+
resultados:
|
|
198
|
+
- instinto-20240320-011 # "eager loading en queries async"
|
|
199
|
+
- instinto-20240320-012 # "session management en endpoints"
|
|
200
|
+
- instinto-20240320-013 # "commit solo en endpoint, nunca en service"
|
|
201
|
+
razon: "El instinto original era demasiado amplio para activación precisa"
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Deprecate (deprecación)
|
|
205
|
+
|
|
206
|
+
Un instinto se depreca cuando:
|
|
207
|
+
- La librería cambió y el patrón ya no aplica
|
|
208
|
+
- Se encontró una mejor práctica que lo reemplaza
|
|
209
|
+
- La confianza cayó por debajo de 0.2 tras múltiples refutaciones
|
|
210
|
+
|
|
211
|
+
```yaml
|
|
212
|
+
estado: deprecado
|
|
213
|
+
deprecado_en: "2024-04-01"
|
|
214
|
+
razon: "SQLAlchemy 2.1 agregó lazy loading seguro en async por defecto"
|
|
215
|
+
reemplazado_por: instinto-20240401-020
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## Protección contra Contaminación Cross-Proyecto
|
|
221
|
+
|
|
222
|
+
### El problema
|
|
223
|
+
|
|
224
|
+
Si los instintos de un proyecto contaminan otro proyecto, se generan
|
|
225
|
+
sugerencias incorrectas. Ejemplo: el prefijo `tb_` de tablas de un proyecto
|
|
226
|
+
legacy no debe aplicarse en un proyecto nuevo con convención `snake_case`.
|
|
227
|
+
|
|
228
|
+
### Mecanismo de aislamiento
|
|
229
|
+
|
|
230
|
+
```javascript
|
|
231
|
+
// hooks/instinto-loader.js
|
|
232
|
+
const projectName = process.env.PROJECT_NAME;
|
|
233
|
+
const instintosGlobales = loadInstintos('~/.claude/instintos/');
|
|
234
|
+
const instintosProyecto = loadInstintos(`.claude/instintos/`);
|
|
235
|
+
|
|
236
|
+
// Los instintos de proyecto NUNCA se exportan a otros proyectos
|
|
237
|
+
const instintosActivos = [
|
|
238
|
+
...instintosGlobales.filter(i => i.scope === 'global'),
|
|
239
|
+
...instintosProyecto.filter(i => i.proyecto === projectName),
|
|
240
|
+
];
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### Cuarentena de instintos sospechosos
|
|
244
|
+
|
|
245
|
+
Cuando un instinto produce una sugerencia que el humano rechaza 3+ veces,
|
|
246
|
+
entra en cuarentena automática:
|
|
247
|
+
|
|
248
|
+
```yaml
|
|
249
|
+
estado: cuarentena
|
|
250
|
+
cuarentena_inicio: "2024-03-20"
|
|
251
|
+
rechazos: 3
|
|
252
|
+
cuarentena_fin: "2024-03-27" # revisión en 7 días
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
Durante la cuarentena, el instinto no se activa pero tampoco se borra —
|
|
256
|
+
se espera revisión humana.
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## Directorio de Instintos
|
|
261
|
+
|
|
262
|
+
Estructura recomendada en el proyecto:
|
|
263
|
+
|
|
264
|
+
```
|
|
265
|
+
.claude/
|
|
266
|
+
└── instintos/
|
|
267
|
+
├── index.yaml # índice de todos los instintos activos
|
|
268
|
+
├── draft/ # instintos con confianza < 0.5
|
|
269
|
+
├── activos/ # instintos con confianza >= 0.5
|
|
270
|
+
├── cuarentena/ # instintos rechazados en revisión
|
|
271
|
+
└── promovidos/ # instintos ya convertidos a skill/cmd/agente
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
### index.yaml mínimo
|
|
275
|
+
|
|
276
|
+
```yaml
|
|
277
|
+
version: 2
|
|
278
|
+
ultimo_update: "2024-03-20"
|
|
279
|
+
totales:
|
|
280
|
+
draft: 3
|
|
281
|
+
activos: 12
|
|
282
|
+
cuarentena: 1
|
|
283
|
+
promovidos: 5
|
|
284
|
+
instintos:
|
|
285
|
+
- id: instinto-20240315-001
|
|
286
|
+
titulo: "Siempre usar selectinload en queries con relaciones"
|
|
287
|
+
confianza: 0.75
|
|
288
|
+
scope: proyecto
|
|
289
|
+
estado: activo
|
|
290
|
+
```
|