@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,298 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: meta-skills-estandar
|
|
3
|
+
description: >
|
|
4
|
+
Referencia extendida del estándar de skills SWL. Complementa la regla
|
|
5
|
+
obligatoria `reglas/skills-estandar.md` con: Response Discipline,
|
|
6
|
+
Anti-substitution Guardrails, campo dual `herramientasPermitidas`/
|
|
7
|
+
`allowed-tools`, nivel de control de instrucciones, reglas detalladas
|
|
8
|
+
para scripts/ y recursos/, y recursos/ con anti-patrones, leyes de diseño,
|
|
9
|
+
idiomas de framework y mapeo a frameworks de seguridad. Cargar cuando se
|
|
10
|
+
esté escribiendo o auditando un SKILL.md y se necesiten patrones avanzados
|
|
11
|
+
que no están en la regla core.
|
|
12
|
+
version: "1.0.0"
|
|
13
|
+
herramientasPermitidas: [Read, Write, Edit]
|
|
14
|
+
exclusiones:
|
|
15
|
+
- "No cargar si solo se necesita el frontmatter obligatorio, el límite de líneas o la estructura de directorio — eso está en la regla core `reglas/skills-estandar.md` que se carga siempre."
|
|
16
|
+
- "No cargar para crear un skill simple de dominio conceptual sin comandos prescritos ni herramientas específicas — las reglas core bastan."
|
|
17
|
+
- "No cargar para consultar el checklist de auditoría, la convención de naming o el proceso de creación — los tres viven en la regla core."
|
|
18
|
+
- "No cargar para skills fuera del dominio seguridad — el mapeo a frameworks (NIST, MITRE) solo aplica al dominio seguridad."
|
|
19
|
+
evolvable: true
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# meta-skills-estandar — Referencia extendida del estándar de skills
|
|
23
|
+
|
|
24
|
+
Complementa la regla `reglas/skills-estandar.md` con detalles, ejemplos y
|
|
25
|
+
tablas que no son estrictamente obligatorios para cualquier skill pero sí
|
|
26
|
+
son referencia crítica cuando aplican. Separar este contenido de la regla
|
|
27
|
+
core reduce el costo de contexto por sesión ~7,000 tokens cuando no se
|
|
28
|
+
escriben skills activamente.
|
|
29
|
+
|
|
30
|
+
## Cuándo cargar
|
|
31
|
+
|
|
32
|
+
- Al escribir un skill nuevo cuya descripción prescribe comandos, snippets
|
|
33
|
+
o verdicts específicos → Response Discipline + Anti-substitution.
|
|
34
|
+
- Al auditar un skill existente contra leyes de diseño de alta señal.
|
|
35
|
+
- Al escribir skills de framework específico (FastAPI, Django, NestJS,
|
|
36
|
+
Spring Boot) que requieren patrones idiomáticos.
|
|
37
|
+
- Al agregar mapeos de seguridad (NIST, MITRE) al frontmatter.
|
|
38
|
+
- Al configurar el campo dual `herramientasPermitidas` / `allowed-tools`.
|
|
39
|
+
- Al migrar skills viejos a nombres de campo en español.
|
|
40
|
+
- Al diagnosticar falsos positivos del evaluador `evaluar-skill`.
|
|
41
|
+
|
|
42
|
+
## Cuándo NO cargar
|
|
43
|
+
|
|
44
|
+
- Solo se necesita frontmatter obligatorio o estructura de directorio.
|
|
45
|
+
- Se consulta el checklist de auditoría (vive en la regla core).
|
|
46
|
+
- Skill sin comandos prescritos ni herramientas específicas.
|
|
47
|
+
- Skill fuera del dominio seguridad → no necesita mapeo a frameworks.
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Nivel de control de instrucciones
|
|
52
|
+
|
|
53
|
+
Calibrar la especificidad de las instrucciones según el costo de error:
|
|
54
|
+
|
|
55
|
+
| Nivel | Cuándo usar | Técnica |
|
|
56
|
+
|-------|-------------|---------|
|
|
57
|
+
| Alto (libertad máxima) | Code review, texto, análisis | Objetivos + restricciones, sin pasos |
|
|
58
|
+
| Medio | Runbooks, deploys | Preferencias explícitas, pasos sugeridos |
|
|
59
|
+
| Bajo (control máximo) | Migraciones BD, operaciones destructivas | Pasos exactos, scripts precisos, sin variación |
|
|
60
|
+
|
|
61
|
+
Skills de nivel bajo DEBEN incluir:
|
|
62
|
+
- Checklist de ejecución progresiva (no solo verificación post-hoc).
|
|
63
|
+
- Sección Known Gotchas con modos de falla concretos.
|
|
64
|
+
- Preferentemente un script en `scripts/` que ejecute la operación determinista.
|
|
65
|
+
|
|
66
|
+
El tono del skill (persona al inicio, si la hay) también es un control:
|
|
67
|
+
establece la rúbrica de juicio del modelo.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Response Discipline (OBLIGATORIO para skills de comando)
|
|
72
|
+
|
|
73
|
+
Aplica a skills cuyo producto principal es un comando, snippet o verdict
|
|
74
|
+
token (ej: `swl-markitdown`, `dbml-experto`, `likec4-experto`). **No aplica**
|
|
75
|
+
a skills de dominio conceptual (patrones, testing, seguridad).
|
|
76
|
+
|
|
77
|
+
### Reglas
|
|
78
|
+
|
|
79
|
+
1. **Command-first / snippet-first**. Si el prompt pide `"minimal"`, `"strict"`,
|
|
80
|
+
`"exact"`, `"paste-ready"` o una línea específica: responde con un solo
|
|
81
|
+
comando/snippet/verdict como primera línea, sin preámbulo ni alternativas.
|
|
82
|
+
2. **Una sola respuesta canónica**. No dar "opción A vs opción B" en prompts
|
|
83
|
+
strict.
|
|
84
|
+
3. **Primera línea es autoridad**. Si el prompt requiere un token específico
|
|
85
|
+
(`VALIDATE OK`, `npx X`), esa es la primera línea. Explicación después.
|
|
86
|
+
4. **Prose-only es falla** cuando se pide snippet/comando. Una explicación
|
|
87
|
+
sin el comando exacto es incorrecta aunque el contenido sea acertado.
|
|
88
|
+
5. **Documentar el patrón** con sección `## Response Discipline` listando qué
|
|
89
|
+
keywords activan respuesta estricta en ese dominio.
|
|
90
|
+
|
|
91
|
+
### Ejemplo
|
|
92
|
+
|
|
93
|
+
Prompt: *"Minimal command to validate schema.dbml strictly."*
|
|
94
|
+
|
|
95
|
+
MAL: *"Para validar un esquema DBML puedes usar varias opciones..."*
|
|
96
|
+
BIEN: `npx @dbml/cli validate schema.dbml --strict`
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## Anti-substitution Guardrails (OBLIGATORIO para skills que prescriben herramientas)
|
|
101
|
+
|
|
102
|
+
Las skills que prescriben comandos, flags o APIs DEBEN listar sustituciones
|
|
103
|
+
prohibidas más comunes para prevenir que el LLM invente alternativas plausibles
|
|
104
|
+
pero incorrectas.
|
|
105
|
+
|
|
106
|
+
### Formato obligatorio
|
|
107
|
+
|
|
108
|
+
```markdown
|
|
109
|
+
## Anti-substitution guardrails
|
|
110
|
+
|
|
111
|
+
- Familia <nombre>: usar `<comando-canónico>` (nunca sustituir con
|
|
112
|
+
`<alternativa-plausible-1>`, `<alternativa-plausible-2>`).
|
|
113
|
+
- Flag de <propósito>: usar `--<flag-canónico>` (nunca `--<flag-parecido>`).
|
|
114
|
+
- API de <propósito>: usar `<método.canónico>` (nunca `<método.parecido>`).
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Criterios para incluir una entrada
|
|
118
|
+
|
|
119
|
+
Una sustitución se lista solo si **TODAS** son verdaderas:
|
|
120
|
+
|
|
121
|
+
- La alternativa es plausible (existe, funciona para algo).
|
|
122
|
+
- La alternativa es incorrecta en el contexto específico de la skill.
|
|
123
|
+
- Un LLM sin la guardrail la produciría con probabilidad >5%.
|
|
124
|
+
|
|
125
|
+
No listar sustituciones obvias (`cd` vs `ls`) ni imposibles (`curl` vs `cat`).
|
|
126
|
+
|
|
127
|
+
### Ejemplo — skill `/swl:cron`
|
|
128
|
+
|
|
129
|
+
```markdown
|
|
130
|
+
## Anti-substitution guardrails
|
|
131
|
+
|
|
132
|
+
- Schedule recurrente: usar `every 2h` (nunca `@every 2h`, `*/2 * * * *`
|
|
133
|
+
cuando el usuario pidió "cada 2 horas" sin constraints específicos).
|
|
134
|
+
- Crear job: usar subcomando `add` (nunca `create`, `new`, `register`).
|
|
135
|
+
- Eliminar job: usar `remove <id>` (nunca `delete`, `rm`, `drop`).
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Reglas detalladas para `scripts/`
|
|
141
|
+
|
|
142
|
+
**Cuándo crear un script**: la lógica es determinista, costosa de regenerar,
|
|
143
|
+
no requiere razonamiento contextual y se reutiliza ≥2 veces por sesión.
|
|
144
|
+
|
|
145
|
+
**Cuándo NO crearlo**: la lógica cambia por proyecto, necesita acceso runtime
|
|
146
|
+
a sistema, es simple (<5 líneas), o no se reutilizaría.
|
|
147
|
+
|
|
148
|
+
**Detección empírica**: ejecutar el skill en 3 casos de uso. Si el modelo
|
|
149
|
+
regeneró el mismo helper 2+ veces independientemente, ese helper es candidato
|
|
150
|
+
a `scripts/`.
|
|
151
|
+
|
|
152
|
+
**Referencia desde SKILL.md**:
|
|
153
|
+
|
|
154
|
+
```markdown
|
|
155
|
+
`python scripts/validar-frontmatter.py ruta/al/SKILL.md`
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Los scripts NUNCA entran en contexto automáticamente. Claude los ejecuta vía
|
|
159
|
+
bash y procesa solo el output. Los scripts deben:
|
|
160
|
+
|
|
161
|
+
- Imprimir resultados claros en stdout.
|
|
162
|
+
- Usar exit codes estándar (0 = éxito, 1 = error).
|
|
163
|
+
- Documentar su uso en las primeras 5 líneas.
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Reglas detalladas para `recursos/`
|
|
168
|
+
|
|
169
|
+
**Cuándo crear un recurso**: plantilla reutilizable, ejemplo de código completo,
|
|
170
|
+
esquema de referencia, documentación extendida que no cabe en SKILL.md, o
|
|
171
|
+
lista de referencia extensa.
|
|
172
|
+
|
|
173
|
+
**Referencia desde SKILL.md**:
|
|
174
|
+
|
|
175
|
+
```markdown
|
|
176
|
+
Usar la plantilla en [recursos/claude-md-template.md](recursos/claude-md-template.md)
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Los paths SIEMPRE son relativos al directorio de la skill.
|
|
180
|
+
|
|
181
|
+
**ToC obligatoria si supera 200 líneas**: incluir tabla de contenido al inicio
|
|
182
|
+
para que lecturas truncadas sigan siendo útiles:
|
|
183
|
+
|
|
184
|
+
```markdown
|
|
185
|
+
## Contenido
|
|
186
|
+
|
|
187
|
+
- [Sección A](#sección-a)
|
|
188
|
+
- [Sección B](#sección-b)
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Campo dual: `herramientasPermitidas` y `allowed-tools`
|
|
194
|
+
|
|
195
|
+
**Principio de 3 capas**: `herramientasPermitidas` es el campo autoritativo del
|
|
196
|
+
sistema SWL (español). `allowed-tools` es el campo del protocolo Anthropic que
|
|
197
|
+
Claude Code lee (inglés, no negociable). Ambos coexisten con la misma semántica.
|
|
198
|
+
|
|
199
|
+
### Cuándo usar cada campo
|
|
200
|
+
|
|
201
|
+
- **Skills propios de swl-ses**: declarar solo `herramientasPermitidas`.
|
|
202
|
+
- **Skills exportados fuera de swl-ses** (paquetes Anthropic-compatibles):
|
|
203
|
+
declarar también `allowed-tools` explícitamente.
|
|
204
|
+
|
|
205
|
+
### Ejemplo
|
|
206
|
+
|
|
207
|
+
```yaml
|
|
208
|
+
---
|
|
209
|
+
name: mi-skill-analisis
|
|
210
|
+
description: >
|
|
211
|
+
Analiza estructura de código. Cargar al revisar código antes de merge.
|
|
212
|
+
herramientasPermitidas: [Read, Grep, Glob]
|
|
213
|
+
# Solo agregar allowed-tools si se distribuye fuera de swl-ses:
|
|
214
|
+
# allowed-tools: [Read, Grep, Glob]
|
|
215
|
+
---
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
**Validación cruzada**: si ambos están presentes deben tener el mismo contenido.
|
|
219
|
+
El evaluador `evaluar-skill` emite W011 si divergen.
|
|
220
|
+
|
|
221
|
+
### Aclaración crítica: pre-aprobación vs restricción real
|
|
222
|
+
|
|
223
|
+
Ambos campos son **pre-aprobación de UX**, NO restricción de seguridad real.
|
|
224
|
+
Las restricciones reales provienen de permission rules en `.claude/settings.json`
|
|
225
|
+
y matchers en hooks PreToolUse.
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## Skills as agents pattern (variant técnico avanzado)
|
|
230
|
+
|
|
231
|
+
Patrón Anthropic nativo: `agent: true` + `model:` en el frontmatter ejecuta
|
|
232
|
+
el skill como sub-agente independiente, aislado del contexto del padre.
|
|
233
|
+
Aplica cuando el skill consume input grande y devuelve output acotado;
|
|
234
|
+
NO aplica para skills passive (reglas, knowledge). Detalles completos
|
|
235
|
+
(cuándo usarlo, ejemplo de skill, reglas del frontmatter, candidatos SWL)
|
|
236
|
+
en [recursos/skills-as-agents.md](recursos/skills-as-agents.md).
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## Relación con otros componentes del sistema
|
|
241
|
+
|
|
242
|
+
| Componente | Relación con skills |
|
|
243
|
+
|-----------|-------------------|
|
|
244
|
+
| Agentes SWL | Invocan skills con `Skill("nombre")` antes de implementar |
|
|
245
|
+
| Comandos `/swl:*` | Pueden invocar skills para guiar su comportamiento |
|
|
246
|
+
| Reglas en `reglas/` | Las reglas aplican a código/proceso; los skills a conocimiento de dominio |
|
|
247
|
+
| Hooks | Los hooks no invocan skills — trabajan a nivel de herramientas |
|
|
248
|
+
| CLAUDE.md | Registra el inventario de skills disponibles |
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## Contenido extendido (cargar bajo demanda)
|
|
253
|
+
|
|
254
|
+
Los siguientes bloques viven en `recursos/` y se consultan cuando se necesite
|
|
255
|
+
el contenido específico, sin inflar el contexto con cada invocación:
|
|
256
|
+
|
|
257
|
+
- **Anti-patrones al crear skills + leyes de diseño de alta señal** —
|
|
258
|
+
6 anti-patrones y 6 leyes con ejemplos MAL/BIEN completos. Ver
|
|
259
|
+
[recursos/anti-patrones-y-leyes.md](recursos/anti-patrones-y-leyes.md).
|
|
260
|
+
- **Principio de idiomas de framework** — tabla para Django, FastAPI, NestJS,
|
|
261
|
+
Spring Boot, Laravel, Rails, Go, Rust con anti-patrón de código. Ver
|
|
262
|
+
[recursos/idiomas-framework.md](recursos/idiomas-framework.md).
|
|
263
|
+
- **Mapeo a frameworks de seguridad (NIST CSF, NIST AI RMF, MITRE ATT&CK/ATLAS/
|
|
264
|
+
D3FEND)** + **migración a nombres de campo en español (REC-S15)**. Ver
|
|
265
|
+
[recursos/frameworks-seguridad.md](recursos/frameworks-seguridad.md).
|
|
266
|
+
|
|
267
|
+
Cada recurso tiene ToC al inicio y es autocontenido — leer solo el relevante
|
|
268
|
+
al caso en cuestión en lugar de los tres.
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
## Gotchas / Errores comunes no obvios
|
|
273
|
+
|
|
274
|
+
- **Confundir Response Discipline con skills de dominio conceptual**: aplicar
|
|
275
|
+
el patrón "command-first" a un skill de patrones de diseño produce respuestas
|
|
276
|
+
truncadas sin contexto. Response Discipline SOLO aplica a skills que
|
|
277
|
+
prescriben comandos, snippets o tokens específicos.
|
|
278
|
+
- **Escribir Anti-substitution sin criterio de plausibilidad**: listar
|
|
279
|
+
sustituciones imposibles o obvias diluye la señal. Aplicar los 3 criterios
|
|
280
|
+
(plausible + incorrecta + prob >5%) antes de listar una entrada.
|
|
281
|
+
- **Mapear skills no-seguridad a frameworks NIST/MITRE**: genera ruido en
|
|
282
|
+
reportes de cobertura. Reservar el mapeo para el dominio seguridad.
|
|
283
|
+
- **Copiar ambos campos (`herramientasPermitidas` y `allowed-tools`) en skills
|
|
284
|
+
internos**: genera duplicación de mantenimiento. Solo el campo español es
|
|
285
|
+
autoritativo en swl-ses; la copia en inglés se hace al exportar.
|
|
286
|
+
- **Documentar idioma de framework en skills transversales**: un skill de
|
|
287
|
+
`compactacion-contexto` no debe usar `@Transactional` como ejemplo. El
|
|
288
|
+
principio aplica solo cuando la skill cubre UN framework específico.
|
|
289
|
+
- **Cargar este skill cuando la regla core basta**: esto invierte el trade-off
|
|
290
|
+
de context budget. Cargar `meta-skills-estandar` solo cuando se necesita
|
|
291
|
+
contenido extendido, no por defecto.
|
|
292
|
+
|
|
293
|
+
## Referencias
|
|
294
|
+
|
|
295
|
+
- Regla core (se carga siempre): `reglas/skills-estandar.md`.
|
|
296
|
+
- Evaluador de skills: `comandos/swl/evaluar-skill.md` (usa W009, W010, W011).
|
|
297
|
+
- Schema: `schemas/skill-frontmatter.schema.json`.
|
|
298
|
+
- Normalizador de campos legacy: `scripts/lib/skill-normalizer.js`.
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# Anti-patrones y leyes de diseño de skills
|
|
2
|
+
|
|
3
|
+
Complemento a `SKILL.md` de `meta-skills-estandar`. Contiene ejemplos MAL/BIEN
|
|
4
|
+
detallados para cada anti-patrón y ley. Referenciado desde el skill principal.
|
|
5
|
+
|
|
6
|
+
## Contenido
|
|
7
|
+
|
|
8
|
+
- [Anti-patrón 1: description pasiva](#anti-patrón-1-description-que-solo-describe-no-activa)
|
|
9
|
+
- [Anti-patrón 2: SKILL.md como dump](#anti-patrón-2-skillmd-como-dump-de-documentación)
|
|
10
|
+
- [Anti-patrón 3: scripts embebidos](#anti-patrón-3-scripts-dentro-de-skillmd)
|
|
11
|
+
- [Anti-patrón 4: paths absolutos](#anti-patrón-4-paths-absolutos-que-rompen-portabilidad)
|
|
12
|
+
- [Anti-patrón 5: skill con 1-2 reglas](#anti-patrón-5-skill-con-solo-1-2-reglas)
|
|
13
|
+
- [Anti-patrón 6: directivas sin justificación](#anti-patrón-6-directivas-sin-justificación)
|
|
14
|
+
- [Ley 1: description como trigger](#ley-1-la-description-es-un-trigger-no-un-resumen)
|
|
15
|
+
- [Ley 2: Gotchas como mayor señal](#ley-2-la-sección-gotchas-es-el-contenido-de-mayor-señal)
|
|
16
|
+
- [Ley 3: no declarar lo obvio](#ley-3-no-declarar-lo-obvio)
|
|
17
|
+
- [Ley 4: objetivos + restricciones](#ley-4-dar-objetivos-y-restricciones-no-pasos)
|
|
18
|
+
- [Ley 5: CLAUDE_PLUGIN_DATA](#ley-5-usar-claude_plugin_data-para-datos-persistentes-entre-sesiones)
|
|
19
|
+
- [Ley 6: hooks bajo demanda](#ley-6-hooks-bajo-demanda-no-permanentes)
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Anti-patrones comunes al crear skills
|
|
24
|
+
|
|
25
|
+
### Anti-patrón 1: Description que solo describe, no activa
|
|
26
|
+
|
|
27
|
+
```yaml
|
|
28
|
+
# MAL — solo describe, no dice cuándo usar
|
|
29
|
+
description: Skill sobre autenticación con JWT y manejo de tokens en APIs.
|
|
30
|
+
|
|
31
|
+
# BIEN — dice qué hace y cuándo cargar
|
|
32
|
+
description: >
|
|
33
|
+
Patrones de autenticación JWT para APIs FastAPI: generación, validación,
|
|
34
|
+
refresh tokens y revocación. Cargar cuando se implementen endpoints de
|
|
35
|
+
login/logout, middleware de autenticación o manejo de sesiones con tokens.
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Anti-patrón 2: SKILL.md como dump de documentación
|
|
39
|
+
|
|
40
|
+
Un SKILL.md que lista 200 endpoints de una API externa no es una skill, es
|
|
41
|
+
una copia de documentación. Las skills contienen instrucciones de comportamiento,
|
|
42
|
+
no documentación raw. La documentación raw va en `recursos/`.
|
|
43
|
+
|
|
44
|
+
### Anti-patrón 3: Scripts dentro de SKILL.md
|
|
45
|
+
|
|
46
|
+
```markdown
|
|
47
|
+
# MAL — script embebido en SKILL.md (satura el contexto)
|
|
48
|
+
## Script de validación
|
|
49
|
+
```python
|
|
50
|
+
#!/usr/bin/env python3
|
|
51
|
+
# ... 80 líneas de código ...
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
# BIEN — referencia al script externo
|
|
55
|
+
Para validar el frontmatter antes de guardar:
|
|
56
|
+
`python scripts/validar-frontmatter.py archivo.md`
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Anti-patrón 4: Paths absolutos que rompen portabilidad
|
|
60
|
+
|
|
61
|
+
```markdown
|
|
62
|
+
# MAL
|
|
63
|
+
Ver la referencia en D:\Python\mi-proyecto\habilidades\mi-skill\recursos\ref.md
|
|
64
|
+
|
|
65
|
+
# BIEN
|
|
66
|
+
Ver la referencia en [recursos/ref.md](recursos/ref.md)
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Anti-patrón 5: Skill con solo 1-2 reglas
|
|
70
|
+
|
|
71
|
+
Una skill con menos de 3 reglas concretas no justifica un directorio separado.
|
|
72
|
+
Agregar ese conocimiento al skill más cercano en dominio.
|
|
73
|
+
|
|
74
|
+
### Anti-patrón 6: Directivas sin justificación
|
|
75
|
+
|
|
76
|
+
Las directivas en mayúsculas (MUST, NEVER, ALWAYS, NUNCA, SIEMPRE) sin
|
|
77
|
+
justificación son obedecidas pero no generalizables — el modelo sigue la regla
|
|
78
|
+
en el caso exacto documentado, pero no puede aplicar el principio a variantes
|
|
79
|
+
no anticipadas.
|
|
80
|
+
|
|
81
|
+
```markdown
|
|
82
|
+
# MAL — directiva sin justificación
|
|
83
|
+
NUNCA usar `lazy="select"` en SQLAlchemy async.
|
|
84
|
+
|
|
85
|
+
# BIEN — directiva con justificación
|
|
86
|
+
NUNCA usar `lazy="select"` en SQLAlchemy async — lanza MissingGreenlet
|
|
87
|
+
en contexto async sin aviso claro porque el ORM intenta resolver la
|
|
88
|
+
relación fuera de la sesión activa.
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**Regla**: toda directiva absoluta DEBE incluir en la misma línea o en la
|
|
92
|
+
siguiente una frase que comience con "porque", "ya que", "para evitar",
|
|
93
|
+
"si no". Si no cabe en una línea, usar formato de lista:
|
|
94
|
+
|
|
95
|
+
```markdown
|
|
96
|
+
NUNCA usar `pickle.loads()` con datos externos.
|
|
97
|
+
— Razón: permite ejecución arbitraria de código; los datos externos no son
|
|
98
|
+
de confianza por definición. Usar `json.loads()` con schema validado.
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
El evaluador `evaluar-skill` detecta ausencia de justificaciones con W009
|
|
102
|
+
(-8 en `output_quality`).
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Leyes de diseño de skills de alta señal
|
|
107
|
+
|
|
108
|
+
### Ley 1: La description es un TRIGGER, no un resumen
|
|
109
|
+
|
|
110
|
+
La description es la señal que el modelo usa para decidir si debe cargar la
|
|
111
|
+
skill. Redactar como condición de activación:
|
|
112
|
+
|
|
113
|
+
```yaml
|
|
114
|
+
# MAL — resumen pasivo
|
|
115
|
+
description: Conocimiento sobre caching en aplicaciones web.
|
|
116
|
+
|
|
117
|
+
# BIEN — trigger con situaciones concretas
|
|
118
|
+
description: >
|
|
119
|
+
Estrategias de caching (Redis, CDN, HTTP cache, in-memory) para APIs REST.
|
|
120
|
+
Cargar cuando el tiempo de respuesta de un endpoint supere 200ms, cuando se
|
|
121
|
+
diseñe invalidación de caché, o cuando se configure un CDN.
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Ley 2: La sección Gotchas es el contenido de mayor señal
|
|
125
|
+
|
|
126
|
+
Los errores no obvios que un desarrollador experimentado comete son el contenido
|
|
127
|
+
más valioso de una skill. Toda skill de implementación DEBE incluir `## Gotchas`
|
|
128
|
+
o `## Errores comunes no obvios`:
|
|
129
|
+
|
|
130
|
+
```markdown
|
|
131
|
+
## Gotchas
|
|
132
|
+
|
|
133
|
+
- `selectinload` en SQLAlchemy async es OBLIGATORIO — `lazy="select"` lanza
|
|
134
|
+
`MissingGreenlet` en contexto async sin aviso claro
|
|
135
|
+
- `Depends()` en FastAPI crea UNA instancia por request — no es singleton
|
|
136
|
+
- `response_model` valida la SALIDA, no la entrada — usar `Body()` para input
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Si la skill no tiene gotchas documentados, probablemente no aporta valor
|
|
140
|
+
diferencial sobre lo que el modelo ya sabe.
|
|
141
|
+
|
|
142
|
+
### Ley 3: No declarar lo obvio
|
|
143
|
+
|
|
144
|
+
El modelo ya sabe qué es React, FastAPI o cómo funciona un for loop. Una skill
|
|
145
|
+
que repite conocimiento general del training data desperdicia tokens. El
|
|
146
|
+
contenido de una skill debe ser:
|
|
147
|
+
|
|
148
|
+
- Lo que el modelo hace **mal** sin la skill (gotchas, anti-patrones).
|
|
149
|
+
- Lo que el modelo **no sabe** por ser reciente o específico del proyecto.
|
|
150
|
+
- Las **decisiones de diseño** que el equipo ya tomó (no re-evaluar cada vez).
|
|
151
|
+
|
|
152
|
+
### Ley 4: Dar objetivos y restricciones, no pasos
|
|
153
|
+
|
|
154
|
+
El modelo razona mejor cuando recibe QUÉ lograr y QUÉ evitar, no una lista
|
|
155
|
+
de pasos. Los pasos rígidos fallan cuando el contexto cambia:
|
|
156
|
+
|
|
157
|
+
```markdown
|
|
158
|
+
# MAL — pasos rígidos
|
|
159
|
+
1. Crear archivo en src/api/
|
|
160
|
+
2. Importar FastAPI
|
|
161
|
+
3. Definir router
|
|
162
|
+
4. Agregar endpoint GET
|
|
163
|
+
|
|
164
|
+
# BIEN — objetivo + restricciones
|
|
165
|
+
## Objetivo
|
|
166
|
+
Implementar endpoints CRUD que cumplan el contrato OpenAPI del proyecto.
|
|
167
|
+
|
|
168
|
+
## Restricciones
|
|
169
|
+
- Usar `APIRouter` con prefix y tags (no montar en app directamente)
|
|
170
|
+
- Validación de input con Pydantic v2 `model_validator`
|
|
171
|
+
- Responses tipadas con `response_model` para auto-documentación
|
|
172
|
+
- Tests de integración con httpx antes de marcar como completado
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Ley 5: Usar `${CLAUDE_PLUGIN_DATA}` para datos persistentes entre sesiones
|
|
176
|
+
|
|
177
|
+
Cuando una skill necesita recordar estado entre sesiones (métricas acumuladas,
|
|
178
|
+
configuración del usuario, caché de resultados), usar el directorio de datos
|
|
179
|
+
persistentes del plugin en lugar de paths hardcodeados:
|
|
180
|
+
|
|
181
|
+
```markdown
|
|
182
|
+
Guardar métricas acumuladas en `${CLAUDE_PLUGIN_DATA}/metricas.json`.
|
|
183
|
+
Este directorio persiste entre sesiones y es exclusivo de esta skill.
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
No usar `.planning/` ni directorios del proyecto para datos internos de la skill.
|
|
187
|
+
|
|
188
|
+
### Ley 6: Hooks bajo demanda, no permanentes
|
|
189
|
+
|
|
190
|
+
Si una skill necesita comportamiento event-driven, definir el hook en el
|
|
191
|
+
frontmatter con `hooks` en lugar de registrarlo en `settings.json`:
|
|
192
|
+
|
|
193
|
+
```yaml
|
|
194
|
+
---
|
|
195
|
+
name: mi-skill
|
|
196
|
+
hooks:
|
|
197
|
+
PostToolUse:
|
|
198
|
+
- matcher: "Write"
|
|
199
|
+
command: "node ${CLAUDE_SKILL_DIR}/scripts/validar.js"
|
|
200
|
+
---
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Ventaja: el hook no consume recursos cuando la skill no está activa. Reservar
|
|
204
|
+
`settings.json` para hooks que SIEMPRE deben ejecutarse (seguridad global,
|
|
205
|
+
auditoría, formateo).
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# Mapeo a frameworks de seguridad (REC-C01)
|
|
2
|
+
|
|
3
|
+
Complemento a `SKILL.md` de `meta-skills-estandar`. Aplicable SOLO a skills
|
|
4
|
+
del dominio seguridad.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
Skills del dominio de seguridad pueden declarar mapeos opcionales a cinco
|
|
9
|
+
frameworks estándar en el frontmatter. El propósito es enriquecer reportes
|
|
10
|
+
(`/swl:salud`, `/swl:dashboard`) con cobertura de control y alinear el sistema
|
|
11
|
+
con vocabulario de la industria. **No es evolución — es metadata aditiva que
|
|
12
|
+
no cambia comportamiento.**
|
|
13
|
+
|
|
14
|
+
## Campos disponibles (todos opcionales, todos propios SWL en español)
|
|
15
|
+
|
|
16
|
+
| Campo | Framework | Formato | Ejemplo |
|
|
17
|
+
|-------|-----------|---------|---------|
|
|
18
|
+
| `nist_csf` | NIST CSF 2.0 | `GV\|ID\|PR\|DE\|RS\|RC.XX[-NN]` | `[GV.SC-07, PR.PS-01]` |
|
|
19
|
+
| `nist_ai_rmf` | NIST AI RMF 1.0 | `GOVERN\|MAP\|MEASURE\|MANAGE-N.N` | `[GOVERN-1.1, MEASURE-2.5]` |
|
|
20
|
+
| `atlas_techniques` | MITRE ATLAS v5.4 | `AML.TNNNN[.NNN]` | `[AML.T0051, AML.T0080]` |
|
|
21
|
+
| `attack_techniques` | MITRE ATT&CK v18 | `TNNNN[.NNN]` | `[T1190, T1552]` |
|
|
22
|
+
| `d3fend_techniques` | MITRE D3FEND v1.3 | `D3-XXX` | `[D3-MFA, D3-NTA]` |
|
|
23
|
+
|
|
24
|
+
## Cuándo declarar cada framework
|
|
25
|
+
|
|
26
|
+
- **NIST CSF 2.0**: skills que cubren controles organizacionales o funciones
|
|
27
|
+
(GOVERN, IDENTIFY, PROTECT, DETECT, RESPOND, RECOVER). Aplicable a casi
|
|
28
|
+
cualquier skill de seguridad.
|
|
29
|
+
- **NIST AI RMF 1.0**: skills específicas de sistemas agénticos o IA. Todos
|
|
30
|
+
los skills de seguridad del sistema SWL (que ES agéntico) deberían declararlo.
|
|
31
|
+
- **MITRE ATLAS v5.4**: skills que defienden contra amenazas adversarias sobre
|
|
32
|
+
modelos o pipelines LLM (prompt injection, context poisoning, jailbreak).
|
|
33
|
+
- **MITRE ATT&CK v18**: skills de defensa contra TTPs de atacantes en la
|
|
34
|
+
infraestructura desplegada (no en el código). Más útil para operaciones
|
|
35
|
+
que para SDLC, pero aplicable a skills que documentan detección en logs.
|
|
36
|
+
- **MITRE D3FEND v1.3**: contramedidas defensivas específicas. Útil para
|
|
37
|
+
autenticación (D3-MFA), rotación de credenciales (D3-CR), análisis de
|
|
38
|
+
tráfico (D3-NTA).
|
|
39
|
+
|
|
40
|
+
## Ejemplo de uso en frontmatter
|
|
41
|
+
|
|
42
|
+
```yaml
|
|
43
|
+
---
|
|
44
|
+
name: checklist-seguridad
|
|
45
|
+
description: ...
|
|
46
|
+
version: "1.0.0"
|
|
47
|
+
nist_csf: [PR.PS-01, PR.DS-02, PR.DS-10, DE.CM-09, RS.MI-01]
|
|
48
|
+
attack_techniques: [T1190, T1059, T1556]
|
|
49
|
+
---
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Qué NO hacer
|
|
53
|
+
|
|
54
|
+
- **No inventar mapeos**: verificar cada ID en la fuente oficial del framework
|
|
55
|
+
antes de declararlo. Un mapeo incorrecto es peor que ausencia de mapeo.
|
|
56
|
+
- **No saturar**: 3-6 entradas por framework son suficientes. Listar 20
|
|
57
|
+
controles diluye la señal.
|
|
58
|
+
- **No mezclar capas**: un skill de SDLC no debe mapear a tácticas ofensivas
|
|
59
|
+
fuera de contexto (T1059 Command Execution en un skill de revisión de código
|
|
60
|
+
es válido porque describe el vector defendido; T1021 Remote Services no es
|
|
61
|
+
apropiado para un skill que nunca toca red).
|
|
62
|
+
- **No mapear skills que no son de seguridad**: el mapeo es para el dominio
|
|
63
|
+
seguridad, no para todos los skills.
|
|
64
|
+
|
|
65
|
+
## Auditoría de cobertura
|
|
66
|
+
|
|
67
|
+
El script `scripts/auditar-cobertura-frameworks.js` reporta cobertura agregada
|
|
68
|
+
del sistema por framework. Ver `comandos/swl/salud.md` para el paso opt-in que
|
|
69
|
+
expone el reporte con `SWL_AUDIT_FRAMEWORKS=1`.
|
|
70
|
+
|
|
71
|
+
## Referencias a fuentes oficiales
|
|
72
|
+
|
|
73
|
+
- NIST Cybersecurity Framework 2.0: https://www.nist.gov/cyberframework
|
|
74
|
+
- NIST AI Risk Management Framework: https://airc.nist.gov/AI_RMF
|
|
75
|
+
- MITRE ATT&CK: https://attack.mitre.org
|
|
76
|
+
- MITRE ATLAS: https://atlas.mitre.org
|
|
77
|
+
- MITRE D3FEND: https://d3fend.mitre.org
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Migración a nombres propios en español (REC-S15)
|
|
82
|
+
|
|
83
|
+
Los campos `provenance`, `targets`, `evolvable`, `evolvable_scope` del schema
|
|
84
|
+
de skills están en transición a sus equivalentes en español: `procedencia`,
|
|
85
|
+
`destinos`, `evolucionable`, `evolucionable_alcance`.
|
|
86
|
+
|
|
87
|
+
**Nuevos skills**: usar solo los nombres en español (propios de SWL). El módulo
|
|
88
|
+
`scripts/lib/skill-normalizer.js` promueve el campo en inglés si solo ese está
|
|
89
|
+
presente (fallback no-breaking).
|
|
90
|
+
|
|
91
|
+
**Skills existentes**: sin cambio obligatorio. El validador emite W010 (-2 en
|
|
92
|
+
`robustness`) como señal de migración pendiente, no como error bloqueante. Tras
|
|
93
|
+
2 releases con coexistencia, los campos en inglés se marcarán deprecated.
|
|
94
|
+
|
|
95
|
+
**Validación cruzada**: si ambos campos están presentes deben coincidir en
|
|
96
|
+
valor. La divergencia entre `targets` y `destinos` (o cualquier par) emite
|
|
97
|
+
W010 ALIAS_DIVERGENTE.
|
|
98
|
+
|
|
99
|
+
**Campos excluidos de migración** (permanecen en inglés por contrato con el
|
|
100
|
+
protocolo Anthropic):
|
|
101
|
+
|
|
102
|
+
- `name`, `description`, `user-invocable`, `allowed-tools`, `when_to_use`,
|
|
103
|
+
`disable-model-invocation`.
|
|
104
|
+
|
|
105
|
+
**Herramienta de detección**: `scripts/lib/skill-normalizer.js` expone
|
|
106
|
+
`detectarUsoLegacy()` y `detectarDivergencias()` — usados por el validador
|
|
107
|
+
`/swl:evaluar-skill` en el Paso 1.3.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Principio de idiomas de framework
|
|
2
|
+
|
|
3
|
+
Complemento a `SKILL.md` de `meta-skills-estandar`. Tabla extensa por framework
|
|
4
|
+
y anti-patrón de código a detectar. Referenciado desde el skill principal.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Regla
|
|
9
|
+
|
|
10
|
+
> Las convenciones del framework toman **precedencia** sobre la consistencia
|
|
11
|
+
> cross-proyecto. Si el framework provee un mecanismo oficial para resolver un
|
|
12
|
+
> problema, ese mecanismo ES la solución correcta — no una alternativa genérica.
|
|
13
|
+
|
|
14
|
+
## Ejemplos por framework
|
|
15
|
+
|
|
16
|
+
| Framework | Patrón idiomático correcto | Anti-patrón genérico a evitar |
|
|
17
|
+
|-----------|---------------------------|-------------------------------|
|
|
18
|
+
| **Django** | Middleware global de errores, signals para side effects, `select_related`/`prefetch_related` | Try/except en cada vista, queries N+1, actualizaciones manuales de estado |
|
|
19
|
+
| **FastAPI** | `Annotated` + `Depends` para DI, `selectinload` explícito en async, `lifespan` para startup/shutdown | Parámetros manuales de DI, lazy loading en contexto async (MissingGreenlet) |
|
|
20
|
+
| **NestJS** | Constructor injection con `@Injectable()`, DTOs con `class-validator`, `@Module` para encapsulación | Field injection con `@Autowired`, validación manual de inputs |
|
|
21
|
+
| **Spring Boot** | `@Transactional` de Spring, constructor injection con `@RequiredArgsConstructor`, `@Transactional(readOnly=true)` para lecturas | Field injection, manejo manual de transacciones, SQL raw sin justificación |
|
|
22
|
+
| **Laravel** | Eager loading con `->with()`, API Resources para transformación, Jobs para operaciones largas | N+1 con Eloquent, lógica de negocio en controladores, sync para operaciones costosas |
|
|
23
|
+
| **Rails** | `includes`/`eager_load` para N+1, service objects para lógica compleja, `strong_parameters` para inputs | Lazy loading no controlado, lógica en controladores, params sin filtrar |
|
|
24
|
+
| **Go** | `context.Context` para cancellation, error wrapping con `fmt.Errorf("...: %w", err)`, `sync.WaitGroup` para concurrencia | Panics para errores de negocio, goroutines sin control de lifecycle |
|
|
25
|
+
| **Rust** | `?` operator para propagación de errores, `Arc<Mutex<T>>` para estado compartido, `thiserror` para error types | Panics en código de biblioteca, `unwrap()` en producción, `clone()` innecesario |
|
|
26
|
+
|
|
27
|
+
## Cómo aplicar al escribir o revisar una skill
|
|
28
|
+
|
|
29
|
+
1. **Identificar el mecanismo oficial** del framework para el problema.
|
|
30
|
+
2. **Verificar** que el ejemplo de código en la skill usa ese mecanismo.
|
|
31
|
+
3. **Marcar como anti-patrón** cualquier alternativa genérica que ignore el
|
|
32
|
+
mecanismo del framework.
|
|
33
|
+
4. **Documentar el "por qué"**: explicar qué errores específicos evita.
|
|
34
|
+
|
|
35
|
+
## Anti-patrón a detectar
|
|
36
|
+
|
|
37
|
+
```markdown
|
|
38
|
+
# MAL — skill que describe patrones genéricos
|
|
39
|
+
## Manejo de errores
|
|
40
|
+
try:
|
|
41
|
+
resultado = operacion()
|
|
42
|
+
except Exception as e:
|
|
43
|
+
logging.error(e)
|
|
44
|
+
raise
|
|
45
|
+
|
|
46
|
+
# BIEN — skill que usa el idioma de Django
|
|
47
|
+
## Manejo de errores (Django)
|
|
48
|
+
# Usar el middleware global de Django para errores inesperados:
|
|
49
|
+
# MIDDLEWARE = ['django.middleware.common.CommonMiddleware', ...]
|
|
50
|
+
# Para errores esperados, usar excepciones específicas de DRF:
|
|
51
|
+
raise ValidationError({"campo": "El valor no es válido"})
|
|
52
|
+
# DRF las convierte automáticamente en respuestas 400 con formato estándar
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Gotcha: aplicar solo cuando el skill cubre UN framework
|
|
56
|
+
|
|
57
|
+
Un skill transversal (p.ej. `compactacion-contexto`) NO debe usar ejemplos
|
|
58
|
+
de framework específico. El principio aplica únicamente cuando la skill
|
|
59
|
+
cubre un solo framework y tiene como propósito documentar patrones
|
|
60
|
+
idiomáticos de ese framework.
|