evol-dd 0.1.0__tar.gz
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.
- evol_dd-0.1.0/.agent/hooks/hooks.json +78 -0
- evol_dd-0.1.0/.agent/hooks/scripts/.gitkeep +0 -0
- evol_dd-0.1.0/.agent/hooks/scripts/post-bash-pr-logger.sh +9 -0
- evol_dd-0.1.0/.agent/hooks/scripts/post-edit-mempalace-index.sh +7 -0
- evol_dd-0.1.0/.agent/hooks/scripts/post-write-auto-organize.sh +13 -0
- evol_dd-0.1.0/.agent/hooks/scripts/pre-bash-dangerous-command.sh +105 -0
- evol_dd-0.1.0/.agent/hooks/scripts/pre-commit-gitflow.sh +25 -0
- evol_dd-0.1.0/.agent/hooks/scripts/pre-edit-config-protection.sh +53 -0
- evol_dd-0.1.0/.agent/hooks/scripts/pre-tool-temporal-awareness.sh +8 -0
- evol_dd-0.1.0/.agent/hooks/scripts/pre-write-doc-file-warning.sh +19 -0
- evol_dd-0.1.0/.agent/hooks/scripts/session-start-context-load.sh +17 -0
- evol_dd-0.1.0/.agent/hooks/scripts/session-start-reme-load.sh +20 -0
- evol_dd-0.1.0/.agent/hooks/scripts/stop-git-check.sh +11 -0
- evol_dd-0.1.0/.agent/hooks/scripts/stop-pattern-extraction.sh +13 -0
- evol_dd-0.1.0/.agent/hooks/scripts/stop-reme-summary.sh +36 -0
- evol_dd-0.1.0/.agent/workflows/.gitkeep +0 -0
- evol_dd-0.1.0/.agent/workflows/a11y-audit.md +56 -0
- evol_dd-0.1.0/.agent/workflows/adr-new.md +52 -0
- evol_dd-0.1.0/.agent/workflows/advanced-agentic-pentesting.md +60 -0
- evol_dd-0.1.0/.agent/workflows/agent-factory.md +41 -0
- evol_dd-0.1.0/.agent/workflows/analisis-impacto.md +117 -0
- evol_dd-0.1.0/.agent/workflows/analyst.md +21 -0
- evol_dd-0.1.0/.agent/workflows/analytics-instrument.md +57 -0
- evol_dd-0.1.0/.agent/workflows/api-contract.md +56 -0
- evol_dd-0.1.0/.agent/workflows/architect.md +22 -0
- evol_dd-0.1.0/.agent/workflows/brainstorm.md +90 -0
- evol_dd-0.1.0/.agent/workflows/builder.md +28 -0
- evol_dd-0.1.0/.agent/workflows/ci-cd-setup.md +84 -0
- evol_dd-0.1.0/.agent/workflows/cierre-fase.md +80 -0
- evol_dd-0.1.0/.agent/workflows/clarify.md +94 -0
- evol_dd-0.1.0/.agent/workflows/code-as-tool.md +95 -0
- evol_dd-0.1.0/.agent/workflows/contract-test.md +51 -0
- evol_dd-0.1.0/.agent/workflows/crear-skill.md +334 -0
- evol_dd-0.1.0/.agent/workflows/cross-validate.md +81 -0
- evol_dd-0.1.0/.agent/workflows/data-pipeline.md +58 -0
- evol_dd-0.1.0/.agent/workflows/data.md +21 -0
- evol_dd-0.1.0/.agent/workflows/db-migrate.md +62 -0
- evol_dd-0.1.0/.agent/workflows/dependency-update.md +118 -0
- evol_dd-0.1.0/.agent/workflows/deploy-prod.md +100 -0
- evol_dd-0.1.0/.agent/workflows/design-system-builder.md +42 -0
- evol_dd-0.1.0/.agent/workflows/devops.md +21 -0
- evol_dd-0.1.0/.agent/workflows/doc.md +33 -0
- evol_dd-0.1.0/.agent/workflows/domain.md +22 -0
- evol_dd-0.1.0/.agent/workflows/dr-drill.md +57 -0
- evol_dd-0.1.0/.agent/workflows/evol-profile.md +31 -0
- evol_dd-0.1.0/.agent/workflows/evolve.md +87 -0
- evol_dd-0.1.0/.agent/workflows/fase-requisitos.md +125 -0
- evol_dd-0.1.0/.agent/workflows/feature-flag.md +57 -0
- evol_dd-0.1.0/.agent/workflows/finops-baseline.md +53 -0
- evol_dd-0.1.0/.agent/workflows/generar-flujo.md +85 -0
- evol_dd-0.1.0/.agent/workflows/generate-unit-tests.md +79 -0
- evol_dd-0.1.0/.agent/workflows/i18n-setup.md +62 -0
- evol_dd-0.1.0/.agent/workflows/incidente-ID.md +128 -0
- evol_dd-0.1.0/.agent/workflows/mejorar-prompt.md +84 -0
- evol_dd-0.1.0/.agent/workflows/mempalace-sync.md +51 -0
- evol_dd-0.1.0/.agent/workflows/ml-eval.md +63 -0
- evol_dd-0.1.0/.agent/workflows/mobile-release.md +63 -0
- evol_dd-0.1.0/.agent/workflows/observability-init.md +58 -0
- evol_dd-0.1.0/.agent/workflows/onboard-dev.md +60 -0
- evol_dd-0.1.0/.agent/workflows/orchestrate.md +52 -0
- evol_dd-0.1.0/.agent/workflows/orchestrator.md +26 -0
- evol_dd-0.1.0/.agent/workflows/perf-budget.md +62 -0
- evol_dd-0.1.0/.agent/workflows/plan-fases.md +75 -0
- evol_dd-0.1.0/.agent/workflows/pm.md +21 -0
- evol_dd-0.1.0/.agent/workflows/privacy-review.md +63 -0
- evol_dd-0.1.0/.agent/workflows/project-architecture-gsd.md +93 -0
- evol_dd-0.1.0/.agent/workflows/pruebas-fuzz.md +117 -0
- evol_dd-0.1.0/.agent/workflows/pruebas-humo.md +111 -0
- evol_dd-0.1.0/.agent/workflows/qa-review.md +84 -0
- evol_dd-0.1.0/.agent/workflows/qa.md +22 -0
- evol_dd-0.1.0/.agent/workflows/refactor-area.md +80 -0
- evol_dd-0.1.0/.agent/workflows/release-cut.md +58 -0
- evol_dd-0.1.0/.agent/workflows/release.md +21 -0
- evol_dd-0.1.0/.agent/workflows/research.md +62 -0
- evol_dd-0.1.0/.agent/workflows/researcher.md +38 -0
- evol_dd-0.1.0/.agent/workflows/reviewer.md +21 -0
- evol_dd-0.1.0/.agent/workflows/rollback.md +121 -0
- evol_dd-0.1.0/.agent/workflows/sec.md +21 -0
- evol_dd-0.1.0/.agent/workflows/secure-isolation-ops.md +72 -0
- evol_dd-0.1.0/.agent/workflows/security-audit.md +84 -0
- evol_dd-0.1.0/.agent/workflows/skill-template-generator.md +84 -0
- evol_dd-0.1.0/.agent/workflows/stress-test.md +77 -0
- evol_dd-0.1.0/.agent/workflows/technical-documentation.md +86 -0
- evol_dd-0.1.0/.agent/workflows/ux-discovery.md +52 -0
- evol_dd-0.1.0/.agent/workflows/ux.md +22 -0
- evol_dd-0.1.0/.claude/skills/gitnexus/gitnexus-cli/SKILL.md +83 -0
- evol_dd-0.1.0/.claude/skills/gitnexus/gitnexus-debugging/SKILL.md +89 -0
- evol_dd-0.1.0/.claude/skills/gitnexus/gitnexus-exploring/SKILL.md +78 -0
- evol_dd-0.1.0/.claude/skills/gitnexus/gitnexus-guide/SKILL.md +64 -0
- evol_dd-0.1.0/.claude/skills/gitnexus/gitnexus-impact-analysis/SKILL.md +97 -0
- evol_dd-0.1.0/.claude/skills/gitnexus/gitnexus-refactoring/SKILL.md +121 -0
- evol_dd-0.1.0/.github/workflows/ci.yml +178 -0
- evol_dd-0.1.0/.gitignore +86 -0
- evol_dd-0.1.0/AGENTS.md +142 -0
- evol_dd-0.1.0/AGENT_MEMORY.md +26 -0
- evol_dd-0.1.0/CHANGELOG.md +52 -0
- evol_dd-0.1.0/CLAUDE.md +169 -0
- evol_dd-0.1.0/CODE_OF_CONDUCT.md +48 -0
- evol_dd-0.1.0/CONTRIBUTING.md +81 -0
- evol_dd-0.1.0/INSTALL.md +89 -0
- evol_dd-0.1.0/LICENSE +21 -0
- evol_dd-0.1.0/PKG-INFO +199 -0
- evol_dd-0.1.0/PROMPT.md +1611 -0
- evol_dd-0.1.0/README.md +175 -0
- evol_dd-0.1.0/SECURITY.md +55 -0
- evol_dd-0.1.0/VERSION +1 -0
- evol_dd-0.1.0/WORKING-CONTEXT.md +46 -0
- evol_dd-0.1.0/api/.gitkeep +0 -0
- evol_dd-0.1.0/api/README.md +3 -0
- evol_dd-0.1.0/assets/.gitkeep +0 -0
- evol_dd-0.1.0/assets/README.md +3 -0
- evol_dd-0.1.0/design/.gitkeep +0 -0
- evol_dd-0.1.0/design/README.md +3 -0
- evol_dd-0.1.0/docs/.gitkeep +0 -0
- evol_dd-0.1.0/docs/CONFIG.md +121 -0
- evol_dd-0.1.0/docs/DOC_STANDARD.md +51 -0
- evol_dd-0.1.0/docs/GATE.md +88 -0
- evol_dd-0.1.0/docs/IDE_SETUP.md +367 -0
- evol_dd-0.1.0/docs/README.md +37 -0
- evol_dd-0.1.0/docs/RETROFIT_GUIDE.md +224 -0
- evol_dd-0.1.0/docs/SECURITY_PERMISSIONS.md +68 -0
- evol_dd-0.1.0/docs/X-DD_Integration_Guide.md +121 -0
- evol_dd-0.1.0/docs/api/API_GUIDE.md +270 -0
- evol_dd-0.1.0/docs/api/openapi.yaml +5 -0
- evol_dd-0.1.0/docs/arquitectura/ARQUITECTURA.md +490 -0
- evol_dd-0.1.0/docs/arquitectura/DECISIONES.md +199 -0
- evol_dd-0.1.0/docs/arquitectura/DOMINIO.md +409 -0
- evol_dd-0.1.0/docs/arquitectura/adr/ADR-0001.md +14 -0
- evol_dd-0.1.0/docs/constitucion.md +155 -0
- evol_dd-0.1.0/docs/diagramas/componentes.md +159 -0
- evol_dd-0.1.0/docs/diagramas/despliegue.md +87 -0
- evol_dd-0.1.0/docs/diagramas/flujo-datos.md +145 -0
- evol_dd-0.1.0/docs/equipo.md +30 -0
- evol_dd-0.1.0/docs/gitnexus-optin.md +136 -0
- evol_dd-0.1.0/docs/guias/CONTRIBUCION.md +395 -0
- evol_dd-0.1.0/docs/guias/ONBOARDING.md +419 -0
- evol_dd-0.1.0/docs/guias/TROUBLESHOOTING.md +526 -0
- evol_dd-0.1.0/docs/modos.md +44 -0
- evol_dd-0.1.0/docs/operaciones/DR_PLAN.md +242 -0
- evol_dd-0.1.0/docs/operaciones/MONITORING.md +115 -0
- evol_dd-0.1.0/docs/operaciones/RELEASE_PROCESS.md +134 -0
- evol_dd-0.1.0/docs/operaciones/RUNBOOK.md +282 -0
- evol_dd-0.1.0/docs/operaciones/TAG_STRATEGY.md +62 -0
- evol_dd-0.1.0/docs/profiles/README.md +64 -0
- evol_dd-0.1.0/docs/qa/CASOS_BORDE.md +210 -0
- evol_dd-0.1.0/docs/qa/CASOS_GHERKIN.md +666 -0
- evol_dd-0.1.0/docs/qa/CHECKLIST_RELEASE.md +144 -0
- evol_dd-0.1.0/docs/qa/MATRIZ_TRAZABILIDAD.md +84 -0
- evol_dd-0.1.0/docs/qa/PLAN_QA.md +529 -0
- evol_dd-0.1.0/docs/qa/REPORTE_QA.md +138 -0
- evol_dd-0.1.0/docs/requisitos/FUNCIONALES.md +400 -0
- evol_dd-0.1.0/docs/requisitos/GLOSARIO.md +449 -0
- evol_dd-0.1.0/docs/requisitos/NO_FUNCIONALES.md +487 -0
- evol_dd-0.1.0/docs/requisitos/RESTRICCIONES.md +234 -0
- evol_dd-0.1.0/docs/seguridad/PRIVACY.md +85 -0
- evol_dd-0.1.0/docs/seguridad/SECURITY_CONTROLS.md +55 -0
- evol_dd-0.1.0/docs/seguridad/THREATS.md +159 -0
- evol_dd-0.1.0/docs/usuario/FAQ.md +7 -0
- evol_dd-0.1.0/docs/usuario/MANUAL_USUARIO.md +241 -0
- evol_dd-0.1.0/evals/.gitkeep +0 -0
- evol_dd-0.1.0/evals/agent-eval/cases.jsonl +5 -0
- evol_dd-0.1.0/evals/agent-eval/grader.yaml +16 -0
- evol_dd-0.1.0/evals/evol-ai-review/cases.jsonl +5 -0
- evol_dd-0.1.0/evals/evol-ai-review/grader.yaml +16 -0
- evol_dd-0.1.0/evals/evol-compact/cases.jsonl +5 -0
- evol_dd-0.1.0/evals/evol-compact/grader.yaml +16 -0
- evol_dd-0.1.0/evals/evol-fs-context/cases.jsonl +5 -0
- evol_dd-0.1.0/evals/evol-fs-context/grader.yaml +16 -0
- evol_dd-0.1.0/evals/evol-sandbox/cases.jsonl +5 -0
- evol_dd-0.1.0/evals/evol-sandbox/grader.yaml +16 -0
- evol_dd-0.1.0/evals/evol-skill-manager/cases.jsonl +5 -0
- evol_dd-0.1.0/evals/evol-skill-manager/grader.yaml +16 -0
- evol_dd-0.1.0/evals/evol-talk-compact/cases.jsonl +5 -0
- evol_dd-0.1.0/evals/evol-talk-compact/grader.yaml +16 -0
- evol_dd-0.1.0/evol.config.yml +53 -0
- evol_dd-0.1.0/evol.profile.yml +9 -0
- evol_dd-0.1.0/idea/.gitkeep +0 -0
- evol_dd-0.1.0/idea/README.md +3 -0
- evol_dd-0.1.0/lecciones.md +165 -0
- evol_dd-0.1.0/manifests/install-components.json +3 -0
- evol_dd-0.1.0/manifests/install-modules.json +166 -0
- evol_dd-0.1.0/manifests/install-profiles.json +81 -0
- evol_dd-0.1.0/memoria.md +125 -0
- evol_dd-0.1.0/memory/.gitkeep +0 -0
- evol_dd-0.1.0/prompts/agents/core/evol-agent-factory.md +71 -0
- evol_dd-0.1.0/prompts/agents/core/evol-analyst.md +38 -0
- evol_dd-0.1.0/prompts/agents/core/evol-architect.md +38 -0
- evol_dd-0.1.0/prompts/agents/core/evol-builder.md +41 -0
- evol_dd-0.1.0/prompts/agents/core/evol-data.md +28 -0
- evol_dd-0.1.0/prompts/agents/core/evol-devops.md +40 -0
- evol_dd-0.1.0/prompts/agents/core/evol-doc.md +53 -0
- evol_dd-0.1.0/prompts/agents/core/evol-domain.md +33 -0
- evol_dd-0.1.0/prompts/agents/core/evol-orchestrator.md +61 -0
- evol_dd-0.1.0/prompts/agents/core/evol-pm.md +47 -0
- evol_dd-0.1.0/prompts/agents/core/evol-qa.md +45 -0
- evol_dd-0.1.0/prompts/agents/core/evol-release.md +47 -0
- evol_dd-0.1.0/prompts/agents/core/evol-researcher.md +59 -0
- evol_dd-0.1.0/prompts/agents/core/evol-reviewer.md +34 -0
- evol_dd-0.1.0/prompts/agents/core/evol-sec.md +43 -0
- evol_dd-0.1.0/prompts/agents/core/evol-ux.md +34 -0
- evol_dd-0.1.0/prompts/agents/ephemeral/.gitkeep +0 -0
- evol_dd-0.1.0/prompts/agents/registry.json +240 -0
- evol_dd-0.1.0/prompts/agents/registry.schema.json +129 -0
- evol_dd-0.1.0/prompts/orchestrator/personas/.gitkeep +0 -0
- evol_dd-0.1.0/prompts/workflows/.gitkeep +0 -0
- evol_dd-0.1.0/pyproject.toml +75 -0
- evol_dd-0.1.0/requirements-dev.txt +1 -0
- evol_dd-0.1.0/schemas/.gitkeep +0 -0
- evol_dd-0.1.0/schemas/agent-manifest.schema.json +264 -0
- evol_dd-0.1.0/scripts/_evol_common.py +138 -0
- evol_dd-0.1.0/scripts/_generate_equipo.py +35 -0
- evol_dd-0.1.0/scripts/bump-version.py +30 -0
- evol_dd-0.1.0/scripts/evol-adapt.sh +211 -0
- evol_dd-0.1.0/scripts/evol-agent-lifecycle.py +318 -0
- evol_dd-0.1.0/scripts/evol-brand.sh +93 -0
- evol_dd-0.1.0/scripts/evol-doctor.sh +421 -0
- evol_dd-0.1.0/scripts/evol-eval.py +540 -0
- evol_dd-0.1.0/scripts/evol-evolve.py +471 -0
- evol_dd-0.1.0/scripts/evol-flow.py +53 -0
- evol_dd-0.1.0/scripts/evol-gate.py +244 -0
- evol_dd-0.1.0/scripts/evol-global-install.sh +143 -0
- evol_dd-0.1.0/scripts/evol-init.sh +315 -0
- evol_dd-0.1.0/scripts/evol-lessons.py +449 -0
- evol_dd-0.1.0/scripts/evol-memory.py +205 -0
- evol_dd-0.1.0/scripts/evol-orchestrate.py +8 -0
- evol_dd-0.1.0/scripts/evol-profile.py +316 -0
- evol_dd-0.1.0/scripts/evol-provider.py +67 -0
- evol_dd-0.1.0/scripts/evol-researcher.py +184 -0
- evol_dd-0.1.0/scripts/evol-shield.py +271 -0
- evol_dd-0.1.0/scripts/evol-start.sh +21 -0
- evol_dd-0.1.0/scripts/evol-state.py +226 -0
- evol_dd-0.1.0/scripts/evol-update.py +236 -0
- evol_dd-0.1.0/scripts/generate-equipo.sh +20 -0
- evol_dd-0.1.0/scripts/lint-workflows.sh +31 -0
- evol_dd-0.1.0/scripts/validate-registry.py +116 -0
- evol_dd-0.1.0/skills/agent-eval/.gitkeep +0 -0
- evol_dd-0.1.0/skills/agent-eval/SKILL.md +50 -0
- evol_dd-0.1.0/skills/crear-agente/SKILL.md +190 -0
- evol_dd-0.1.0/skills/crear-agente/evals/evals.json +82 -0
- evol_dd-0.1.0/skills/crear-agente/evals/trigger_evals.json +22 -0
- evol_dd-0.1.0/skills/crear-agente/evals/workspace/iter-1/eval-1-legal-saas/baseline/agent.md +382 -0
- evol_dd-0.1.0/skills/crear-agente/evals/workspace/iter-1/eval-1-legal-saas/with_skill/specialized-legal-saas-reviewer.md +90 -0
- evol_dd-0.1.0/skills/crear-agente/evals/workspace/iter-1/eval-2-a11y-efimero/baseline/agent.md +147 -0
- evol_dd-0.1.0/skills/crear-agente/evals/workspace/iter-1/eval-2-a11y-efimero/with_skill/2026-06-02-wcag-auditor.md +126 -0
- evol_dd-0.1.0/skills/crear-agente/evals/workspace/iter-1/eval-3-data-engineer/baseline/agent.md +455 -0
- evol_dd-0.1.0/skills/crear-agente/evals/workspace/iter-1/eval-3-data-engineer/with_skill/engineering-data-engineer-ecommerce.md +121 -0
- evol_dd-0.1.0/skills/crear-agente/references/agent-template-spec.md +80 -0
- evol_dd-0.1.0/skills/crear-agente/references/categorias.md +32 -0
- evol_dd-0.1.0/skills/crear-agente/references/ejemplos.md +76 -0
- evol_dd-0.1.0/skills/crear-agente/scripts/validate_agent.py +98 -0
- evol_dd-0.1.0/skills/crear-skill/SKILL.md +122 -0
- evol_dd-0.1.0/skills/evol-ai-review/.gitkeep +0 -0
- evol_dd-0.1.0/skills/evol-ai-review/SKILL.md +37 -0
- evol_dd-0.1.0/skills/evol-compact/.gitkeep +0 -0
- evol_dd-0.1.0/skills/evol-compact/SKILL.md +33 -0
- evol_dd-0.1.0/skills/evol-fs-context/.gitkeep +0 -0
- evol_dd-0.1.0/skills/evol-fs-context/SKILL.md +32 -0
- evol_dd-0.1.0/skills/evol-sandbox/.gitkeep +0 -0
- evol_dd-0.1.0/skills/evol-sandbox/SKILL.md +40 -0
- evol_dd-0.1.0/skills/evol-skill-manager/.gitkeep +0 -0
- evol_dd-0.1.0/skills/evol-skill-manager/SKILL.md +47 -0
- evol_dd-0.1.0/skills/evol-talk-compact/.gitkeep +0 -0
- evol_dd-0.1.0/skills/evol-talk-compact/SKILL.md +31 -0
- evol_dd-0.1.0/src/.gitkeep +0 -0
- evol_dd-0.1.0/src/README.md +3 -0
- evol_dd-0.1.0/src/evol_cli/__init__.py +173 -0
- evol_dd-0.1.0/templates/AGENT_MEMORY.template.md +26 -0
- evol_dd-0.1.0/templates/agent.template.md +51 -0
- evol_dd-0.1.0/templates/evol-dd.PROMPT.template.md +1611 -0
- evol_dd-0.1.0/templates/gitignore.template +80 -0
- evol_dd-0.1.0/templates/lecciones.template.md +34 -0
- evol_dd-0.1.0/templates/memoria.template.md +63 -0
- evol_dd-0.1.0/templates/working-context.template.md +9 -0
- evol_dd-0.1.0/tests/.gitkeep +0 -0
- evol_dd-0.1.0/tests/README.md +3 -0
- evol_dd-0.1.0/tests/__init__.py +1 -0
- evol_dd-0.1.0/tests/hooks/test_security_hooks.bats +210 -0
- evol_dd-0.1.0/tests/test_adapt_trigger_sanitization.bats +54 -0
- evol_dd-0.1.0/tests/test_gate.py +101 -0
- evol_dd-0.1.0/tests/test_init_idempotent.bats +70 -0
- evol_dd-0.1.0/tests/test_state.py +123 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "1.0",
|
|
3
|
+
"profiles": {
|
|
4
|
+
"minimal": [
|
|
5
|
+
{
|
|
6
|
+
"id": "post:edit:mempalace-index",
|
|
7
|
+
"event": "PostToolUse",
|
|
8
|
+
"enabled": true,
|
|
9
|
+
"script": "post-edit-mempalace-index.sh",
|
|
10
|
+
"trigger": "edit"
|
|
11
|
+
}
|
|
12
|
+
],
|
|
13
|
+
"standard": [
|
|
14
|
+
{
|
|
15
|
+
"id": "pre:bash:dangerous-command",
|
|
16
|
+
"event": "PreToolUse",
|
|
17
|
+
"enabled": true,
|
|
18
|
+
"script": "pre-bash-dangerous-command.sh",
|
|
19
|
+
"trigger": "bash"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": "pre:write:doc-file-warning",
|
|
23
|
+
"event": "PreToolUse",
|
|
24
|
+
"enabled": true,
|
|
25
|
+
"script": "pre-write-doc-file-warning.sh",
|
|
26
|
+
"trigger": "write"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": "post:bash:pr-logger",
|
|
30
|
+
"event": "PostToolUse",
|
|
31
|
+
"enabled": true,
|
|
32
|
+
"script": "post-bash-pr-logger.sh",
|
|
33
|
+
"trigger": "bash"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"id": "post:write:auto-organize",
|
|
37
|
+
"event": "PostToolUse",
|
|
38
|
+
"enabled": true,
|
|
39
|
+
"script": "post-write-auto-organize.sh",
|
|
40
|
+
"trigger": "write"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "session:start:context-load",
|
|
44
|
+
"event": "SessionStart",
|
|
45
|
+
"enabled": true,
|
|
46
|
+
"script": "session-start-context-load.sh"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "stop:git-check",
|
|
50
|
+
"event": "Stop",
|
|
51
|
+
"enabled": true,
|
|
52
|
+
"script": "stop-git-check.sh"
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"strict": [
|
|
56
|
+
{
|
|
57
|
+
"id": "pre:edit:config-protection",
|
|
58
|
+
"event": "PreToolUse",
|
|
59
|
+
"enabled": true,
|
|
60
|
+
"script": "pre-edit-config-protection.sh",
|
|
61
|
+
"trigger": "edit"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"id": "pre:tool:temporal-awareness",
|
|
65
|
+
"event": "PreToolUse",
|
|
66
|
+
"enabled": true,
|
|
67
|
+
"script": "pre-tool-temporal-awareness.sh"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"id": "stop:pattern-extraction",
|
|
71
|
+
"event": "Stop",
|
|
72
|
+
"enabled": true,
|
|
73
|
+
"script": "stop-pattern-extraction.sh"
|
|
74
|
+
}
|
|
75
|
+
]
|
|
76
|
+
},
|
|
77
|
+
"default_profile": "standard"
|
|
78
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# PostToolUse hook: Log PR URL after gh pr create
|
|
3
|
+
|
|
4
|
+
OUTPUT="$1"
|
|
5
|
+
if echo "$OUTPUT" | grep -q "github.com.*pull/"; then
|
|
6
|
+
URL=$(echo "$OUTPUT" | grep -oE "https://github.com/[^ ]+/pull/[0-9]+" | head -1)
|
|
7
|
+
echo "[HOOK] PR Created: $URL"
|
|
8
|
+
fi
|
|
9
|
+
exit 0
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# PostToolUse hook: Move docs to canonical paths
|
|
3
|
+
|
|
4
|
+
DEST="$1"
|
|
5
|
+
if [ -f "$DEST" ]; then
|
|
6
|
+
case "$DEST" in
|
|
7
|
+
*architecture*.md) [ ! -d "docs/arquitectura" ] && mkdir -p "docs/arquitectura" ;;
|
|
8
|
+
*requisitos*.md) [ ! -d "docs/requisitos" ] && mkdir -p "docs/requisitos" ;;
|
|
9
|
+
*qa*.md|*test*.md) [ ! -d "docs/qa" ] && mkdir -p "docs/qa" ;;
|
|
10
|
+
*seguridad*.md|*security*.md) [ ! -d "docs/seguridad" ] && mkdir -p "docs/seguridad" ;;
|
|
11
|
+
esac
|
|
12
|
+
fi
|
|
13
|
+
exit 0
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# PreToolUse hook: Block dangerous commands
|
|
3
|
+
# Exit 0 = allow, Exit 2 = block
|
|
4
|
+
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
|
|
7
|
+
INPUT=$(cat)
|
|
8
|
+
COMMAND="$INPUT"
|
|
9
|
+
|
|
10
|
+
# Try parse JSON if available (Claude Code passes structured input)
|
|
11
|
+
if echo "$INPUT" | grep -q '^{'; then
|
|
12
|
+
COMMAND=$(echo "$INPUT" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('command','') or d.get('prompt','') or '')" 2>/dev/null || echo "$INPUT")
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
# Logging without secrets
|
|
16
|
+
log_blocked() {
|
|
17
|
+
local reason="$1"
|
|
18
|
+
local hook_log="${HOOK_LOG:-.agent/hooks/.hook-blocked.log}"
|
|
19
|
+
echo "[$(date -u +%Y-%m-%dT%H:%M:%SZ)] BLOCKED: $reason" >> "$hook_log" 2>/dev/null || true
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
BLOCKED=0
|
|
23
|
+
|
|
24
|
+
# Block: rm -rf on root
|
|
25
|
+
if echo "$COMMAND" | grep -qE 'rm[[:space:]]+-rf[[:space:]]+/?$'; then
|
|
26
|
+
echo "[evol-hook] BLOQUEADO: rm -rf /" >&2
|
|
27
|
+
log_blocked "rm -rf /"
|
|
28
|
+
BLOCKED=1
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
# Block: rm -rf on home directory
|
|
32
|
+
if echo "$COMMAND" | grep -qE 'rm[[:space:]]+-rf[[:space:]]+~'; then
|
|
33
|
+
echo "[evol-hook] BLOQUEADO: rm -rf ~" >&2
|
|
34
|
+
log_blocked "rm -rf ~"
|
|
35
|
+
BLOCKED=1
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
# Block: rm -rf on protected system directories
|
|
39
|
+
if echo "$COMMAND" | grep -qE 'rm[[:space:]]+-rf[[:space:]]+(--[[:space:]]+)?/(etc|usr|bin|sbin|lib|boot|root|var|opt|dev|sys)'; then
|
|
40
|
+
echo "[evol-hook] BLOQUEADO: rm -rf sobre directorio de sistema" >&2
|
|
41
|
+
log_blocked "rm -rf /etc|/usr|/bin|..."
|
|
42
|
+
BLOCKED=1
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
# Block: dd if= (disk dump)
|
|
46
|
+
if echo "$COMMAND" | grep -qE 'dd[[:space:]]+if='; then
|
|
47
|
+
echo "[evol-hook] BLOQUEADO: dd if= (operacion de disco cruda)" >&2
|
|
48
|
+
log_blocked "dd if="
|
|
49
|
+
BLOCKED=1
|
|
50
|
+
fi
|
|
51
|
+
|
|
52
|
+
# Block: mkfs (filesystem creation)
|
|
53
|
+
if echo "$COMMAND" | grep -qE 'mkfs'; then
|
|
54
|
+
echo "[evol-hook] BLOQUEADO: mkfs (creacion de filesystem)" >&2
|
|
55
|
+
log_blocked "mkfs"
|
|
56
|
+
BLOCKED=1
|
|
57
|
+
fi
|
|
58
|
+
|
|
59
|
+
# Block: chmod -R 777
|
|
60
|
+
if echo "$COMMAND" | grep -qE 'chmod[[:space:]]+(-R[[:space:]]+|-R )?777'; then
|
|
61
|
+
echo "[evol-hook] BLOQUEADO: chmod 777 o chmod -R 777" >&2
|
|
62
|
+
log_blocked "chmod 777"
|
|
63
|
+
BLOCKED=1
|
|
64
|
+
fi
|
|
65
|
+
|
|
66
|
+
# Block: curl | sh / wget | sh
|
|
67
|
+
if echo "$COMMAND" | grep -qE '(curl|wget)[[:space:]].*[|][[:space:]]*(ba)?sh'; then
|
|
68
|
+
echo "[evol-hook] BLOQUEADO: curl/wget pipe a shell" >&2
|
|
69
|
+
log_blocked "curl|wget | sh"
|
|
70
|
+
BLOCKED=1
|
|
71
|
+
fi
|
|
72
|
+
|
|
73
|
+
# Block: bash <(curl ...)
|
|
74
|
+
if echo "$COMMAND" | grep -qE 'bash[[:space:]]*<[[:space:]]*\((curl|wget)'; then
|
|
75
|
+
echo "[evol-hook] BLOQUEADO: process substitution con curl/wget" >&2
|
|
76
|
+
log_blocked "bash <(curl...)"
|
|
77
|
+
BLOCKED=1
|
|
78
|
+
fi
|
|
79
|
+
|
|
80
|
+
# Block: sudo without authorized context
|
|
81
|
+
if echo "$COMMAND" | grep -qE '^sudo[[:space:]]' && [ -z "${EVOL_SUDO_AUTHORIZED:-}" ]; then
|
|
82
|
+
echo "[evol-hook] BLOQUEADO: sudo sin autorizacion explicita (EVOL_SUDO_AUTHORIZED no esta definido)" >&2
|
|
83
|
+
log_blocked "sudo without EVOL_SUDO_AUTHORIZED"
|
|
84
|
+
BLOCKED=1
|
|
85
|
+
fi
|
|
86
|
+
|
|
87
|
+
# Block: git push --force / --force-with-lease to protected branches
|
|
88
|
+
PROTECTED_BRANCHES="main|master|develop"
|
|
89
|
+
if echo "$COMMAND" | grep -qE "git[[:space:]]+push[[:space:]].*(--force-with-lease|--force-with-lease=.*)[[:space:]].*($PROTECTED_BRANCHES)"; then
|
|
90
|
+
echo "[evol-hook] BLOQUEADO: git push --force-with-lease a rama protegida" >&2
|
|
91
|
+
log_blocked "git push --force-with-lease"
|
|
92
|
+
BLOCKED=1
|
|
93
|
+
fi
|
|
94
|
+
|
|
95
|
+
if echo "$COMMAND" | grep -qE "git[[:space:]]+push[[:space:]].*(-f|--force)[[:space:]].*($PROTECTED_BRANCHES)"; then
|
|
96
|
+
echo "[evol-hook] BLOQUEADO: git push --force a rama protegida" >&2
|
|
97
|
+
log_blocked "git push --force"
|
|
98
|
+
BLOCKED=1
|
|
99
|
+
fi
|
|
100
|
+
|
|
101
|
+
if [ "$BLOCKED" -eq 1 ]; then
|
|
102
|
+
exit 2
|
|
103
|
+
fi
|
|
104
|
+
|
|
105
|
+
exit 0
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Pre-commit hook: Enforce GitFlow branch naming
|
|
3
|
+
|
|
4
|
+
BRANCH=$(git symbolic-ref --short HEAD 2>/dev/null || echo "")
|
|
5
|
+
|
|
6
|
+
if [ "$BRANCH" = "main" ] || [ "$BRANCH" = "develop" ]; then
|
|
7
|
+
exit 0
|
|
8
|
+
fi
|
|
9
|
+
|
|
10
|
+
ALLOWED='^(feature/|fix/|hotfix/|release/|chore/|docs/|refactor/)'
|
|
11
|
+
if ! [[ "$BRANCH" =~ $ALLOWED ]]; then
|
|
12
|
+
echo "[HOOK] BLOCKED: Branch '$BRANCH' does not follow GitFlow convention"
|
|
13
|
+
echo "[HOOK] Allowed: feature/*, fix/*, hotfix/*, release/*, chore/*, docs/*, refactor/*"
|
|
14
|
+
exit 1
|
|
15
|
+
fi
|
|
16
|
+
|
|
17
|
+
# Check conventional commits
|
|
18
|
+
if [ -f ".git/COMMIT_EDITMSG" ]; then
|
|
19
|
+
MSG=$(head -1 .git/COMMIT_EDITMSG)
|
|
20
|
+
if ! [[ "$MSG" =~ ^(feat|fix|docs|style|refactor|test|chore|perf|ci|build|revert) ]]; then
|
|
21
|
+
echo "[HOOK] WARN: Commit message should follow Conventional Commits"
|
|
22
|
+
fi
|
|
23
|
+
fi
|
|
24
|
+
|
|
25
|
+
exit 0
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# PreToolUse hook: Block governance file edits without evol-gate approval
|
|
3
|
+
# Exit 0 = allow, Exit 2 = block
|
|
4
|
+
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
|
|
7
|
+
HOOK_LOG="${HOOK_LOG:-.agent/hooks/.hook-blocked.log}"
|
|
8
|
+
GATE_LOG=".evol/.gate-log.jsonl"
|
|
9
|
+
|
|
10
|
+
log_blocked() {
|
|
11
|
+
local reason="$1"
|
|
12
|
+
echo "[$(date -u +%Y-%m-%dT%H:%M:%SZ)] BLOCKED: $reason" >> "$HOOK_LOG" 2>/dev/null || true
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
PROTECTED_FILES="constitucion.md gates.md hooks.json .gate-key .gate-log.jsonl"
|
|
16
|
+
PROTECTED_PATTERNS="constitucion.md gates.md hooks.json"
|
|
17
|
+
|
|
18
|
+
# Check if evol-gate approve was run recently (within 1 hour)
|
|
19
|
+
check_gate_approval() {
|
|
20
|
+
if [ ! -f "$GATE_LOG" ]; then
|
|
21
|
+
return 1
|
|
22
|
+
fi
|
|
23
|
+
local last_approve
|
|
24
|
+
last_approve=$(grep -c '"phase"' "$GATE_LOG" 2>/dev/null || echo "0")
|
|
25
|
+
if [ "$last_approve" -gt 0 ]; then
|
|
26
|
+
return 0
|
|
27
|
+
fi
|
|
28
|
+
return 1
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
GATE_APPROVED=0
|
|
32
|
+
if check_gate_approval; then
|
|
33
|
+
GATE_APPROVED=1
|
|
34
|
+
fi
|
|
35
|
+
|
|
36
|
+
BLOCKED=0
|
|
37
|
+
for pattern in $PROTECTED_PATTERNS; do
|
|
38
|
+
if [[ "$1" == *"$pattern"* ]]; then
|
|
39
|
+
if [ "$GATE_APPROVED" -eq 1 ]; then
|
|
40
|
+
echo "[evol-hook] WARN: editing governance file: $pattern (gate approved)" >&2
|
|
41
|
+
else
|
|
42
|
+
echo "[evol-hook] BLOQUEADO: edicion de archivo de gobernanza '$pattern' requiere evol-gate approve" >&2
|
|
43
|
+
log_blocked "governance-edit:$pattern without gate"
|
|
44
|
+
BLOCKED=1
|
|
45
|
+
fi
|
|
46
|
+
fi
|
|
47
|
+
done
|
|
48
|
+
|
|
49
|
+
if [ "$BLOCKED" -eq 1 ]; then
|
|
50
|
+
exit 2
|
|
51
|
+
fi
|
|
52
|
+
|
|
53
|
+
exit 0
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# PreToolUse hook: Warn if doc file outside canonical paths
|
|
3
|
+
|
|
4
|
+
DEST="$1"
|
|
5
|
+
CANONICAL_DOCS="docs/ .claude/ .opencode/ AGENTS.md CLAUDE.md memoria.md"
|
|
6
|
+
|
|
7
|
+
if [[ "$DEST" =~ \.md$ ]]; then
|
|
8
|
+
IN_CANONICAL=false
|
|
9
|
+
for path in $CANONICAL_DOCS; do
|
|
10
|
+
if [[ "$DEST" == "$path"* ]]; then
|
|
11
|
+
IN_CANONICAL=true
|
|
12
|
+
break
|
|
13
|
+
fi
|
|
14
|
+
done
|
|
15
|
+
if [ "$IN_CANONICAL" = false ]; then
|
|
16
|
+
echo "[HOOK] WARN: Writing .md outside canonical paths: $DEST"
|
|
17
|
+
fi
|
|
18
|
+
fi
|
|
19
|
+
exit 0
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# SessionStart hook: Load memoria.md and WORKING-CONTEXT
|
|
3
|
+
|
|
4
|
+
echo "=== Working Context ==="
|
|
5
|
+
|
|
6
|
+
if [ -f "memoria.md" ]; then
|
|
7
|
+
echo "--- memoria.md ---"
|
|
8
|
+
head -30 memoria.md
|
|
9
|
+
fi
|
|
10
|
+
|
|
11
|
+
if [ -f "WORKING-CONTEXT.md" ]; then
|
|
12
|
+
echo "--- WORKING-CONTEXT.md ---"
|
|
13
|
+
cat WORKING-CONTEXT.md
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
echo "==================="
|
|
17
|
+
exit 0
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Hook: session:start:reme-load — carga MEMORY.md + journal anterior via evol-memory.py nativo.
|
|
3
|
+
# Perfil: minimal+. Requiere EVOL_MEMORY=1. Sin dependencias externas.
|
|
4
|
+
# No-op si EVOL_MEMORY != 1. Exit 0 siempre.
|
|
5
|
+
set -eu
|
|
6
|
+
|
|
7
|
+
if [ "${EVOL_MEMORY:-0}" != "1" ]; then
|
|
8
|
+
exit 0
|
|
9
|
+
fi
|
|
10
|
+
|
|
11
|
+
SCRIPTS_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )/../../.." && pwd )/scripts"
|
|
12
|
+
PROJECT_DIR="${PWD}"
|
|
13
|
+
|
|
14
|
+
if [ ! -f "$SCRIPTS_DIR/evol-memory.py" ]; then
|
|
15
|
+
echo "[evol-memory] WARN: evol-memory.py no encontrado en $SCRIPTS_DIR" >&2
|
|
16
|
+
exit 0
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
python3 "$SCRIPTS_DIR/evol-memory.py" --project "$PROJECT_DIR" load
|
|
20
|
+
exit 0
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Stop hook: Warn if uncommitted changes
|
|
3
|
+
|
|
4
|
+
if [ -d ".git" ]; then
|
|
5
|
+
UNCOMMITTED=$(git status --porcelain 2>/dev/null | wc -l)
|
|
6
|
+
if [ "$UNCOMMITTED" -gt 0 ]; then
|
|
7
|
+
echo "[HOOK] WARN: $UNCOMMITTED uncommitted changes"
|
|
8
|
+
echo "[HOOK] Run: git add . && git commit -m '...'"
|
|
9
|
+
fi
|
|
10
|
+
fi
|
|
11
|
+
exit 0
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Stop hook: Extract patterns for instincts
|
|
3
|
+
|
|
4
|
+
if command -v python3 >/dev/null 2>&1; then
|
|
5
|
+
if [ -f "scripts/evol-state.py" ]; then
|
|
6
|
+
python3 scripts/evol-state.py record-instinct \
|
|
7
|
+
--pattern "session_pattern" \
|
|
8
|
+
--context "auto-extracted" \
|
|
9
|
+
--confidence 0.3 \
|
|
10
|
+
--source "stop-hook" 2>/dev/null || true
|
|
11
|
+
fi
|
|
12
|
+
fi
|
|
13
|
+
exit 0
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Hook: stop:reme-summary — persiste sesion en memory/YYYY-MM-DD.md via evol-memory.py nativo.
|
|
3
|
+
# Perfil: minimal+. Requiere EVOL_MEMORY=1. Sin dependencias externas.
|
|
4
|
+
# No-op si EVOL_MEMORY != 1. Exit 0 siempre (no bloquea cierre de sesion).
|
|
5
|
+
set -eu
|
|
6
|
+
|
|
7
|
+
if [ "${EVOL_MEMORY:-0}" != "1" ]; then
|
|
8
|
+
exit 0
|
|
9
|
+
fi
|
|
10
|
+
|
|
11
|
+
SCRIPTS_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )/../../.." && pwd )/scripts"
|
|
12
|
+
PROJECT_DIR="${PWD}"
|
|
13
|
+
|
|
14
|
+
if [ ! -f "$SCRIPTS_DIR/evol-memory.py" ]; then
|
|
15
|
+
echo "[evol-memory] WARN: evol-memory.py no encontrado" >&2
|
|
16
|
+
exit 0
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
# El evento Stop puede proveer JSON de mensajes via stdin — guardarlo en tmp
|
|
20
|
+
TMPFILE=$(mktemp /tmp/evol-memory-XXXXXX.jsonl 2>/dev/null || echo "")
|
|
21
|
+
if [ -n "$TMPFILE" ]; then
|
|
22
|
+
cat > "$TMPFILE" 2>/dev/null || true
|
|
23
|
+
if [ -s "$TMPFILE" ]; then
|
|
24
|
+
python3 "$SCRIPTS_DIR/evol-memory.py" --project "$PROJECT_DIR" summarize --messages "$TMPFILE" &
|
|
25
|
+
else
|
|
26
|
+
python3 "$SCRIPTS_DIR/evol-memory.py" --project "$PROJECT_DIR" summarize &
|
|
27
|
+
fi
|
|
28
|
+
rm -f "$TMPFILE"
|
|
29
|
+
else
|
|
30
|
+
python3 "$SCRIPTS_DIR/evol-memory.py" --project "$PROJECT_DIR" summarize &
|
|
31
|
+
fi
|
|
32
|
+
|
|
33
|
+
# gc de tool_result/ vencidos (async, en background)
|
|
34
|
+
python3 "$SCRIPTS_DIR/evol-memory.py" --project "$PROJECT_DIR" gc &
|
|
35
|
+
|
|
36
|
+
exit 0
|
|
File without changes
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Auditoría de accesibilidad WCAG 2.1 AA. Automatizada en CI + revisión humana de flujos críticos.
|
|
3
|
+
name: a11y-audit
|
|
4
|
+
trigger: /evol a11y-audit
|
|
5
|
+
---
|
|
6
|
+
# /a11y-audit
|
|
7
|
+
|
|
8
|
+
> **Estandar de documentacion:** Todo artefacto que produzca este workflow cumple
|
|
9
|
+
> [`docs/DOC_STANDARD.md`](../../docs/DOC_STANDARD.md): sin emojis, diagramas Mermaid
|
|
10
|
+
> obligatorios, tablas para datos estructurados, Gherkin donde aplique, secciones
|
|
11
|
+
> minimas y trazabilidad bidireccional.
|
|
12
|
+
**ID:** FLUJO-A11Y | **Versión:** 1.0 | **Agente:** Frontend-Developer + Accessibility-Auditor
|
|
13
|
+
**Misión:** Producto usable para personas con discapacidad. WCAG 2.1 AA mínimo, AAA donde sea razonable.
|
|
14
|
+
|
|
15
|
+
## 0. Pre-flight
|
|
16
|
+
- Solo aplica si el producto tiene UI (web, mobile, desktop).
|
|
17
|
+
|
|
18
|
+
## 1. Cobertura automática (CI)
|
|
19
|
+
<!-- CONFIGURAR: Herramientas. -->
|
|
20
|
+
<!-- - Web: axe-core (Playwright/Cypress), Pa11y, Lighthouse a11y -->
|
|
21
|
+
<!-- - Mobile: Accessibility Scanner (Android), Accessibility Inspector (iOS) -->
|
|
22
|
+
<!-- - Design system: Storybook + axe addon -->
|
|
23
|
+
|
|
24
|
+
Tests automatizados verifican:
|
|
25
|
+
- Contraste de color (4.5:1 texto normal, 3:1 large)
|
|
26
|
+
- Roles ARIA correctos, no abusivos
|
|
27
|
+
- Labels en todos los form controls
|
|
28
|
+
- Foco visible y orden lógico
|
|
29
|
+
- Alternativas de texto en imágenes
|
|
30
|
+
|
|
31
|
+
## 2. Cobertura manual (no automatizable)
|
|
32
|
+
Revisión humana de flujos críticos (signup, checkout, settings):
|
|
33
|
+
- **Teclado**: navegación 100% con teclado, sin trampas de foco
|
|
34
|
+
- **Lector de pantalla**: VoiceOver (macOS/iOS) + NVDA (Windows) + TalkBack (Android)
|
|
35
|
+
- **Zoom 200%** sin pérdida de contenido ni scroll horizontal
|
|
36
|
+
- **Reduce motion**: respetar `prefers-reduced-motion`
|
|
37
|
+
- **Color**: información no solo por color (probar con simulador daltonismo)
|
|
38
|
+
|
|
39
|
+
## 3. Componentes
|
|
40
|
+
- Design system con componentes accesibles por construcción.
|
|
41
|
+
- Cada componente nuevo trae tests a11y antes de merge.
|
|
42
|
+
- Documentación de patrones (modales, menús, formularios) sigue ARIA Authoring Practices Guide.
|
|
43
|
+
|
|
44
|
+
## 4. Contenido
|
|
45
|
+
- Estructura semántica (h1-h6 correctos, landmarks).
|
|
46
|
+
- Idioma declarado (`<html lang>`) — cruzar con `/i18n-setup`.
|
|
47
|
+
- Vídeos con subtítulos, transcripciones de audio.
|
|
48
|
+
|
|
49
|
+
## 5. CI gate
|
|
50
|
+
- PR bloquea si violación nivel `serious` o `critical`.
|
|
51
|
+
- Violaciones `moderate` permitidas con justificación temporal y issue trackeado.
|
|
52
|
+
|
|
53
|
+
## 6. Cierre
|
|
54
|
+
- Reporte a `qa-review` Tier 2.
|
|
55
|
+
- Hallazgos críticos a `lecciones.md`.
|
|
56
|
+
- Roadmap de mejoras a11y mantenido (no "lo arreglamos cuando podamos").
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Crea un Architecture Decision Record numerado en docs/adr/. Formato Nygard.
|
|
3
|
+
name: adr-new
|
|
4
|
+
trigger: /evol adr-new
|
|
5
|
+
---
|
|
6
|
+
# /adr-new
|
|
7
|
+
|
|
8
|
+
> **Estandar de documentacion:** Todo artefacto que produzca este workflow cumple
|
|
9
|
+
> [`docs/DOC_STANDARD.md`](../../docs/DOC_STANDARD.md): sin emojis, diagramas Mermaid
|
|
10
|
+
> obligatorios, tablas para datos estructurados, Gherkin donde aplique, secciones
|
|
11
|
+
> minimas y trazabilidad bidireccional.
|
|
12
|
+
**ID:** FLUJO-ADR | **Versión:** 1.0 | **Agente:** Software-Architect
|
|
13
|
+
**Misión:** Toda decisión arquitectónica significativa queda capturada con su contexto, alternativas y consecuencias.
|
|
14
|
+
|
|
15
|
+
## 0. Pre-flight
|
|
16
|
+
- Crea `docs/adr/` si no existe.
|
|
17
|
+
- Calcula el próximo número (`NNNN` = max existente + 1, 4 dígitos).
|
|
18
|
+
|
|
19
|
+
## 1. Cuándo usar
|
|
20
|
+
Crear ADR cuando:
|
|
21
|
+
- La decisión es difícil de revertir (elección de stack, lenguaje, BD principal).
|
|
22
|
+
- Afecta múltiples componentes o equipos.
|
|
23
|
+
- Resuelve un trade-off no obvio.
|
|
24
|
+
- Reemplaza una decisión previa.
|
|
25
|
+
|
|
26
|
+
NO crear ADR para:
|
|
27
|
+
- Decisiones tácticas reversibles (nombre de variable, lib de fechas).
|
|
28
|
+
- Implementación específica sin alternativas razonables.
|
|
29
|
+
|
|
30
|
+
## 2. Generación
|
|
31
|
+
Copia `templates/adr.template.md` a `docs/adr/NNNN-<slug-kebab-case>.md` y guía al usuario en rellenar:
|
|
32
|
+
- Contexto (¿qué problema, qué restricciones?)
|
|
33
|
+
- Decisión (imperativa, 1-3 frases)
|
|
34
|
+
- Alternativas consideradas (con pro/contra/por qué descartadas)
|
|
35
|
+
- Consecuencias (positivas, negativas, neutras)
|
|
36
|
+
- Plan de revisión (cuándo y bajo qué señales revisitar)
|
|
37
|
+
|
|
38
|
+
## 3. Estados
|
|
39
|
+
- `Propuesto` — en discusión.
|
|
40
|
+
- `Aceptado` — vigente.
|
|
41
|
+
- `Reemplazado por ADR-XXXX` — superseded (mantener original, no borrar).
|
|
42
|
+
- `Deprecado` — ya no aplica pero se conserva por trazabilidad.
|
|
43
|
+
|
|
44
|
+
## 4. Vinculación
|
|
45
|
+
- Si reemplaza ADR previo: actualizar el ADR antiguo a "Reemplazado por ADR-NNNN".
|
|
46
|
+
- Si está relacionado con DOMAIN.md, SPEC.md, THREATS.md: enlazar.
|
|
47
|
+
- Indexar en `docs/adr/README.md` (índice cronológico).
|
|
48
|
+
|
|
49
|
+
## 5. Cierre
|
|
50
|
+
- Commit con prefijo `docs(adr): NNNN <título>`.
|
|
51
|
+
- MemPalace indexa.
|
|
52
|
+
- Notificar a equipo si decisión impacta a otros componentes.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: advanced-agentic-pentesting
|
|
3
|
+
description: Workflow advanced-agentic-pentesting
|
|
4
|
+
trigger: /evol advanced-agentic-pentesting
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
description: Workflow X-DD
|
|
8
|
+
|
|
9
|
+
# /advanced-agentic-pentesting
|
|
10
|
+
|
|
11
|
+
> **Estandar de documentacion:** Todo artefacto que produzca este workflow cumple
|
|
12
|
+
> [`docs/DOC_STANDARD.md`](../../docs/DOC_STANDARD.md): sin emojis, diagramas Mermaid
|
|
13
|
+
> obligatorios, tablas para datos estructurados, Gherkin donde aplique, secciones
|
|
14
|
+
> minimas y trazabilidad bidireccional.
|
|
15
|
+
**ID:** FLUJO-062 | **Versión:** 2.3.0 | **Nivel:** Operativo
|
|
16
|
+
**Módulo Core:** `skill-agentic-sast-reasoning`, `skill-autonomous-exploitation`
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
## 0. PRE-FLIGHT: MEMORY SEAL (START)
|
|
20
|
+
- Registro obligatorio en `memoria.md` (Art. 4 Constitución).
|
|
21
|
+
## 1. MISIÓN DEL FLUJO
|
|
22
|
+
Ejecutar un ciclo de auditoría de seguridad de alta fidelidad basado en el motor de razonamiento de Shannon, combinando el análisis estático de rutas (SAST) con la explotación dinámica autónoma (DAST) para garantizar que los hallazgos son vulnerabilidades reales y explotables (Zero False Positives).
|
|
23
|
+
|
|
24
|
+
## 2. DIRECTRICES INQUEBRANTABLES
|
|
25
|
+
- **Contextual Reasoning:** No se permite el uso de scanners basados únicamente en firmas o regex. Cada ruta de datos debe ser razonada por un LLM.
|
|
26
|
+
- **POC Mandatory:** Solo se reportan vulnerabilidades que tengan una Prueba de Concepto (POC) generada y validada mediante ejecución activa.
|
|
27
|
+
- **Aislamiento de Entorno:** Toda explotación debe realizarse en entornos controlados (Staging/Isolate) para evitar daños colaterales.
|
|
28
|
+
- **Reachability First:** Antes de alertar sobre una librería vulnerable, se debe verificar si la función vulnerable es realmente alcanzable desde el código de la aplicación.
|
|
29
|
+
|
|
30
|
+
## 3. DOMINIOS DE CONTROL X-DD
|
|
31
|
+
- **Comandante de Seguridad**: Orquesta las fases de Recon y Ataque.
|
|
32
|
+
- **Red Teamer**: Diseña las hipótesis de explotación basadas en el análisis de código.
|
|
33
|
+
|
|
34
|
+
## 4. FLUJO OPERATIVO DETALLADO
|
|
35
|
+
1. **Phase 1: Pre-Recon (Code-Centric)**: Mapeo de superficies de ataque analizando el código fuente. Identificación de Sinks (SQL, Exec, HTML) y Sources (Input, API).
|
|
36
|
+
2. **Phase 2: Recon (Runtime-Centric)**: Verificación de la existencia de endpoints y formularios mediante Playwright.
|
|
37
|
+
3. **Phase 3: Agentic SAST (Path Tracing)**: Trazado inverso desde el Sink al Source validando cada paso de sanitización con LLM.
|
|
38
|
+
4. **Phase 4: Autonomous DAST (Exploitation)**: Ejecución de agentes paralelos de Inyección, XSS, SSRF y Auth para validar hipótesis.
|
|
39
|
+
5. **Phase 5: Executive Reporting**: Consolidación de evidencias, capturas de pantalla de la explotación y pasos de remediación.
|
|
40
|
+
|
|
41
|
+
## 5. OBSERVABILIDAD (NDJSON)
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"timestamp": "ISO-8601",
|
|
45
|
+
"event": "vulnerability_exploited",
|
|
46
|
+
"data": {
|
|
47
|
+
"cwe": "CWE-89",
|
|
48
|
+
"severity": "CRITICAL",
|
|
49
|
+
"poc_path": "/deliverables/poc_sqli.txt",
|
|
50
|
+
"confidence": 1.0
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
Desarrollado por el Centro de Ciberseguridad Avanzada · %X-DD% V1.1.0
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
## POST-FLIGHT: MEMORY SEAL (END)
|
|
60
|
+
- Cierre de sesión y persistencia final en `memoria.md`.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: /evol agent create
|
|
3
|
+
description: Creates ephemeral agents via guided interaction
|
|
4
|
+
trigger: /evol agent create
|
|
5
|
+
category: core
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Evol-Agent-Factory
|
|
9
|
+
|
|
10
|
+
## Mission
|
|
11
|
+
Create ephemeral agents for specialized tasks.
|
|
12
|
+
|
|
13
|
+
## Lifecycle
|
|
14
|
+
CREATE -> INVOKE -> RETIRE -> [RECALL]
|
|
15
|
+
|
|
16
|
+
## Commands
|
|
17
|
+
```bash
|
|
18
|
+
# Create
|
|
19
|
+
python3 scripts/evol-agent-lifecycle.py create \
|
|
20
|
+
--name "specialist-name" \
|
|
21
|
+
--task "Task description" \
|
|
22
|
+
--expires-after 30
|
|
23
|
+
|
|
24
|
+
# Invoke
|
|
25
|
+
python3 scripts/evol-agent-lifecycle.py invoke specialist-name
|
|
26
|
+
|
|
27
|
+
# Retire
|
|
28
|
+
python3 scripts/evol-agent-lifecycle.py retire specialist-name
|
|
29
|
+
|
|
30
|
+
# Recall
|
|
31
|
+
python3 scripts/evol-agent-lifecycle.py recall specialist-name
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## When Invoked
|
|
35
|
+
- `/evol agent create <name> --task <desc>`
|
|
36
|
+
- Ephemeral agent needed
|
|
37
|
+
|
|
38
|
+
## Constraints
|
|
39
|
+
- Cannot modify governance files
|
|
40
|
+
- Cannot create other agents
|
|
41
|
+
- Must register decisions in memoria.md
|