x-dd 0.1.1__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.
- x_dd-0.1.1/.agent/hooks/README.md +88 -0
- x_dd-0.1.1/.agent/hooks/hooks.json +184 -0
- x_dd-0.1.1/.agent/hooks/scripts/aa-replay-flush.sh +6 -0
- x_dd-0.1.1/.agent/hooks/scripts/am-cost-record.sh +6 -0
- x_dd-0.1.1/.agent/hooks/scripts/ba-otel-trace-start.sh +6 -0
- x_dd-0.1.1/.agent/hooks/scripts/bm-cost-budget-check.sh +6 -0
- x_dd-0.1.1/.agent/hooks/scripts/post-bash-pr-logger.sh +25 -0
- x_dd-0.1.1/.agent/hooks/scripts/post-edit-mempalace-index.sh +8 -0
- x_dd-0.1.1/.agent/hooks/scripts/post-write-auto-organize.sh +42 -0
- x_dd-0.1.1/.agent/hooks/scripts/pre-bash-dangerous-command.sh +48 -0
- x_dd-0.1.1/.agent/hooks/scripts/pre-edit-config-protection.sh +54 -0
- x_dd-0.1.1/.agent/hooks/scripts/pre-llm-budget.sh +21 -0
- x_dd-0.1.1/.agent/hooks/scripts/pre-tool-authz.sh +21 -0
- x_dd-0.1.1/.agent/hooks/scripts/pre-write-doc-warning.sh +36 -0
- x_dd-0.1.1/.agent/hooks/scripts/session-start-context-load.sh +43 -0
- x_dd-0.1.1/.agent/hooks/scripts/stop-git-check.sh +19 -0
- x_dd-0.1.1/.agent/hooks/scripts/stop-pattern-extraction.sh +54 -0
- x_dd-0.1.1/.agent/hooks/scripts/wm-otel-span.sh +6 -0
- x_dd-0.1.1/.agent/hooks/scripts/wt-otel-span.sh +6 -0
- x_dd-0.1.1/.agent/workflows/README.md +38 -0
- x_dd-0.1.1/.agent/workflows/a11y-audit.md +49 -0
- x_dd-0.1.1/.agent/workflows/adr-new.md +45 -0
- x_dd-0.1.1/.agent/workflows/advanced-agentic-pentesting.md +49 -0
- x_dd-0.1.1/.agent/workflows/analisis-impacto.md +110 -0
- x_dd-0.1.1/.agent/workflows/analytics-instrument.md +50 -0
- x_dd-0.1.1/.agent/workflows/api-contract.md +49 -0
- x_dd-0.1.1/.agent/workflows/brainstorm.md +84 -0
- x_dd-0.1.1/.agent/workflows/ci-cd-setup.md +77 -0
- x_dd-0.1.1/.agent/workflows/cierre-fase.md +73 -0
- x_dd-0.1.1/.agent/workflows/clarify.md +88 -0
- x_dd-0.1.1/.agent/workflows/code-as-tool.md +89 -0
- x_dd-0.1.1/.agent/workflows/contract-test.md +44 -0
- x_dd-0.1.1/.agent/workflows/cross-validate.md +75 -0
- x_dd-0.1.1/.agent/workflows/data-pipeline.md +51 -0
- x_dd-0.1.1/.agent/workflows/db-migrate.md +55 -0
- x_dd-0.1.1/.agent/workflows/dependency-update.md +111 -0
- x_dd-0.1.1/.agent/workflows/deploy-prod.md +93 -0
- x_dd-0.1.1/.agent/workflows/design-system-builder.md +35 -0
- x_dd-0.1.1/.agent/workflows/dr-drill.md +50 -0
- x_dd-0.1.1/.agent/workflows/evolve.md +80 -0
- x_dd-0.1.1/.agent/workflows/fase-requisitos.md +69 -0
- x_dd-0.1.1/.agent/workflows/feature-flag.md +50 -0
- x_dd-0.1.1/.agent/workflows/finops-baseline.md +46 -0
- x_dd-0.1.1/.agent/workflows/generar-flujo.md +78 -0
- x_dd-0.1.1/.agent/workflows/generate-unit-tests.md +72 -0
- x_dd-0.1.1/.agent/workflows/i18n-setup.md +55 -0
- x_dd-0.1.1/.agent/workflows/incidente-ID.md +121 -0
- x_dd-0.1.1/.agent/workflows/mejorar-prompt.md +77 -0
- x_dd-0.1.1/.agent/workflows/mempalace-sync.md +44 -0
- x_dd-0.1.1/.agent/workflows/ml-eval.md +56 -0
- x_dd-0.1.1/.agent/workflows/mobile-release.md +56 -0
- x_dd-0.1.1/.agent/workflows/observability-init.md +51 -0
- x_dd-0.1.1/.agent/workflows/onboard-dev.md +53 -0
- x_dd-0.1.1/.agent/workflows/orchestrate.md +45 -0
- x_dd-0.1.1/.agent/workflows/perf-budget.md +55 -0
- x_dd-0.1.1/.agent/workflows/plan-fases.md +68 -0
- x_dd-0.1.1/.agent/workflows/privacy-review.md +56 -0
- x_dd-0.1.1/.agent/workflows/project-architecture-gsd.md +86 -0
- x_dd-0.1.1/.agent/workflows/pruebas-fuzz.md +110 -0
- x_dd-0.1.1/.agent/workflows/pruebas-humo.md +104 -0
- x_dd-0.1.1/.agent/workflows/qa-review.md +77 -0
- x_dd-0.1.1/.agent/workflows/refactor-area.md +73 -0
- x_dd-0.1.1/.agent/workflows/release-cut.md +51 -0
- x_dd-0.1.1/.agent/workflows/rollback.md +114 -0
- x_dd-0.1.1/.agent/workflows/secure-isolation-ops.md +65 -0
- x_dd-0.1.1/.agent/workflows/security-audit.md +77 -0
- x_dd-0.1.1/.agent/workflows/skill-template-generator.md +77 -0
- x_dd-0.1.1/.agent/workflows/stress-test.md +70 -0
- x_dd-0.1.1/.agent/workflows/technical-documentation.md +79 -0
- x_dd-0.1.1/.agent/workflows/ux-discovery.md +45 -0
- x_dd-0.1.1/.agent/workflows/xdd-build.md +33 -0
- x_dd-0.1.1/.agent/workflows/xdd-ingest.md +30 -0
- x_dd-0.1.1/.agent/workflows/xdd-trace.md +27 -0
- x_dd-0.1.1/.agent/workflows/xdd.md +57 -0
- x_dd-0.1.1/.devcontainer/devcontainer.json +45 -0
- x_dd-0.1.1/.devcontainer/postCreate.sh +43 -0
- x_dd-0.1.1/.editorconfig +29 -0
- x_dd-0.1.1/.gitattributes +31 -0
- x_dd-0.1.1/.github/ISSUE_TEMPLATE/agent.md +43 -0
- x_dd-0.1.1/.github/ISSUE_TEMPLATE/bug.md +48 -0
- x_dd-0.1.1/.github/ISSUE_TEMPLATE/feature.md +31 -0
- x_dd-0.1.1/.github/ISSUE_TEMPLATE/ide-adapter.md +34 -0
- x_dd-0.1.1/.github/PULL_REQUEST_TEMPLATE.md +57 -0
- x_dd-0.1.1/.github/renovate.json +39 -0
- x_dd-0.1.1/.github/workflows/gitleaks.yml +21 -0
- x_dd-0.1.1/.github/workflows/lint-commits.yml +33 -0
- x_dd-0.1.1/.github/workflows/lint-markdown.yml +30 -0
- x_dd-0.1.1/.github/workflows/lint-shell.yml +31 -0
- x_dd-0.1.1/.github/workflows/pypi-publish.yml +72 -0
- x_dd-0.1.1/.github/workflows/release.yml +63 -0
- x_dd-0.1.1/.github/workflows/tests.yml +61 -0
- x_dd-0.1.1/.github/workflows/validate-prompts.yml +53 -0
- x_dd-0.1.1/.gitignore +46 -0
- x_dd-0.1.1/.markdownlint.yaml +55 -0
- x_dd-0.1.1/.pre-commit-config.yaml +44 -0
- x_dd-0.1.1/.xdd/briefing/.approvers +1 -0
- x_dd-0.1.1/.xdd/briefing/.checksums +4 -0
- x_dd-0.1.1/.xdd/briefing/.signature +1 -0
- x_dd-0.1.1/.xdd/briefing/.status +1 -0
- x_dd-0.1.1/.xdd/briefing/FEATURES.md +85 -0
- x_dd-0.1.1/.xdd/briefing/SPEC.md +76 -0
- x_dd-0.1.1/.xdd/build/.approvers +1 -0
- x_dd-0.1.1/.xdd/build/.checksums +3 -0
- x_dd-0.1.1/.xdd/build/.signature +1 -0
- x_dd-0.1.1/.xdd/build/.status +1 -0
- x_dd-0.1.1/.xdd/build/README.md +10 -0
- x_dd-0.1.1/.xdd/plan/.approvers +1 -0
- x_dd-0.1.1/.xdd/plan/.checksums +3 -0
- x_dd-0.1.1/.xdd/plan/.signature +1 -0
- x_dd-0.1.1/.xdd/plan/.status +1 -0
- x_dd-0.1.1/.xdd/plan/PLAN.md +81 -0
- x_dd-0.1.1/.xdd/qa/.approvers +1 -0
- x_dd-0.1.1/.xdd/qa/.checksums +3 -0
- x_dd-0.1.1/.xdd/qa/.signature +1 -0
- x_dd-0.1.1/.xdd/qa/.status +1 -0
- x_dd-0.1.1/.xdd/qa/QA_REPORT.md +102 -0
- x_dd-0.1.1/.xdd/retro/.approvers +1 -0
- x_dd-0.1.1/.xdd/retro/.checksums +3 -0
- x_dd-0.1.1/.xdd/retro/.signature +1 -0
- x_dd-0.1.1/.xdd/retro/.status +1 -0
- x_dd-0.1.1/.xdd/retro/lecciones.md +85 -0
- x_dd-0.1.1/.xdd/spec/.approvers +2 -0
- x_dd-0.1.1/.xdd/spec/.checksums +4 -0
- x_dd-0.1.1/.xdd/spec/.signature +1 -0
- x_dd-0.1.1/.xdd/spec/.status +1 -0
- x_dd-0.1.1/.xdd/spec/DOMAIN.md +205 -0
- x_dd-0.1.1/.xdd/spec/THREATS.md +144 -0
- x_dd-0.1.1/AGENTS.md +119 -0
- x_dd-0.1.1/CLAUDE.md +122 -0
- x_dd-0.1.1/CODE_OF_CONDUCT.md +117 -0
- x_dd-0.1.1/CONTRIBUTING.md +169 -0
- x_dd-0.1.1/DEPENDENCIES.md +82 -0
- x_dd-0.1.1/INSTALL.md +420 -0
- x_dd-0.1.1/LICENSE +21 -0
- x_dd-0.1.1/MEJORAS-X-DD.md +816 -0
- x_dd-0.1.1/Makefile +66 -0
- x_dd-0.1.1/NOTICE +38 -0
- x_dd-0.1.1/PKG-INFO +164 -0
- x_dd-0.1.1/PROJ-MASTER-PLAN.md +158 -0
- x_dd-0.1.1/README.en.md +556 -0
- x_dd-0.1.1/README.md +138 -0
- x_dd-0.1.1/README.pt-BR.md +556 -0
- x_dd-0.1.1/RELEASES/v0.1.0.md +51 -0
- x_dd-0.1.1/RELEASES/v0.1.1.md +35 -0
- x_dd-0.1.1/SECURITY.md +109 -0
- x_dd-0.1.1/VERSION +1 -0
- x_dd-0.1.1/WORKING-CONTEXT.md +88 -0
- x_dd-0.1.1/agent.yaml +267 -0
- x_dd-0.1.1/bundles/security-bundle.xddbundle +0 -0
- x_dd-0.1.1/commitlint.config.js +51 -0
- x_dd-0.1.1/docs/AHE_EVOLVE.md +93 -0
- x_dd-0.1.1/docs/BRANDING.md +157 -0
- x_dd-0.1.1/docs/CHANGELOG.md +563 -0
- x_dd-0.1.1/docs/CONFIG.md +94 -0
- x_dd-0.1.1/docs/CONTEXT_ENGINEERING.md +67 -0
- x_dd-0.1.1/docs/EXTERNAL_BENCHMARKS.md +54 -0
- x_dd-0.1.1/docs/GATE.md +147 -0
- x_dd-0.1.1/docs/HOOKS.md +49 -0
- x_dd-0.1.1/docs/IDE_SETUP.md +94 -0
- x_dd-0.1.1/docs/INSTALL_PROFILES.md +115 -0
- x_dd-0.1.1/docs/INSTALL_VSCODE.md +219 -0
- x_dd-0.1.1/docs/MCP_INTEGRATION.md +200 -0
- x_dd-0.1.1/docs/MONOREPO.md +92 -0
- x_dd-0.1.1/docs/OBSERVABILITY.md +90 -0
- x_dd-0.1.1/docs/PENTEST.md +98 -0
- x_dd-0.1.1/docs/PERMISSIONS.md +73 -0
- x_dd-0.1.1/docs/RETROFIT_GUIDE.md +92 -0
- x_dd-0.1.1/docs/SANDBOXING.md +52 -0
- x_dd-0.1.1/docs/SKILLS_INTEROP.md +77 -0
- x_dd-0.1.1/docs/WORKSPACE.md +58 -0
- x_dd-0.1.1/docs/X-DD_Integration_Guide.md +591 -0
- x_dd-0.1.1/docs/adr/0000-mapeo-mejoras-pipeline-xdd.md +35 -0
- x_dd-0.1.1/docs/adr/0001-dogfooding-visible-commiteable.md +37 -0
- x_dd-0.1.1/docs/adr/0002-profile-vs-config-coexisten.md +38 -0
- x_dd-0.1.1/docs/adr/0003-python-runtime-gate-keeper.md +38 -0
- x_dd-0.1.1/docs/adr/0004-mempalace-dep-externa-no-fork.md +44 -0
- x_dd-0.1.1/docs/adr/0005-mcp-preferido-y-server-propio.md +47 -0
- x_dd-0.1.1/docs/adr/0006-gate-keeper-firma-hmac.md +37 -0
- x_dd-0.1.1/docs/adr/0007-adapters-iniciales-claude-opencode-mcp.md +42 -0
- x_dd-0.1.1/docs/adr/0008-consolidacion-xdd-cli-diferida.md +53 -0
- x_dd-0.1.1/docs/adr/0009-politica-versionado-xdd-directorio.md +51 -0
- x_dd-0.1.1/docs/adr/0010-shannon-external-dep-pentest-operator-naming.md +69 -0
- x_dd-0.1.1/docs/adr/0011-white-labeling-policy.md +80 -0
- x_dd-0.1.1/docs/adr/0012-workspace-mode-wizard.md +83 -0
- x_dd-0.1.1/docs/adr/0013-monorepo-three-modes.md +118 -0
- x_dd-0.1.1/docs/adr/0014-sdd-parity-clarify-cross-validate-constitution.md +67 -0
- x_dd-0.1.1/docs/adr/0015-ai-pre-commit-review.md +60 -0
- x_dd-0.1.1/docs/adr/0016-party-mode-orchestration.md +47 -0
- x_dd-0.1.1/docs/adr/0017-web-bundles-distribution.md +96 -0
- x_dd-0.1.1/docs/adr/0018-hitl-checkpoints-orchestration.md +64 -0
- x_dd-0.1.1/docs/adr/0019-multi-provider-router.md +81 -0
- x_dd-0.1.1/docs/adr/0020-community-skills-voting-policy.md +98 -0
- x_dd-0.1.1/docs/adr/0021-observability-stack-otel-replay.md +89 -0
- x_dd-0.1.1/docs/adr/0022-per-call-cost-tracking.md +76 -0
- x_dd-0.1.1/docs/adr/0023-context-budget-policy.md +69 -0
- x_dd-0.1.1/docs/adr/0024-compaction-skill.md +88 -0
- x_dd-0.1.1/docs/adr/0025-inspect-ai-compatibility.md +56 -0
- x_dd-0.1.1/docs/adr/0026-external-benchmark-integration.md +72 -0
- x_dd-0.1.1/docs/adr/0027-sandbox-provider-abstraction.md +57 -0
- x_dd-0.1.1/docs/adr/0028-permission-model-intent-authz.md +115 -0
- x_dd-0.1.1/docs/adr/0029-ahe-evolve-3-layer-observability.md +95 -0
- x_dd-0.1.1/docs/adr/0030-a2a-protocol-compat.md +60 -0
- x_dd-0.1.1/docs/adr/0031-agui-streaming-spec.md +61 -0
- x_dd-0.1.1/docs/adr/0032-skills-migration-plan-act-adapt-orch.md +120 -0
- x_dd-0.1.1/docs/adr/0033-gitnexus-tier1-companion.md +113 -0
- x_dd-0.1.1/docs/adr/0034-universal-ide-adapter.md +94 -0
- x_dd-0.1.1/docs/adr/0035-global-install-architecture.md +109 -0
- x_dd-0.1.1/docs/adr/0036-codex-adapter-global-skills.md +90 -0
- x_dd-0.1.1/docs/adr/0037-windsurf-adapter-parity.md +186 -0
- x_dd-0.1.1/docs/adr/0038-workflow-enforcement-pilot-lessons.md +214 -0
- x_dd-0.1.1/docs/adr/0039-global-orchestrator-parity.md +209 -0
- x_dd-0.1.1/docs/adr/0040-vscode-global-prompts-discovery.md +197 -0
- x_dd-0.1.1/docs/adr/0041-auto-organize-workspace.md +213 -0
- x_dd-0.1.1/docs/adr/0042-gitflow-hybrid-trunk-based.md +71 -0
- x_dd-0.1.1/docs/adr/0043-pip-installable-supersede-0008.md +59 -0
- x_dd-0.1.1/docs/adr/0044-deprecar-mcp-no-necesario.md +62 -0
- x_dd-0.1.1/docs/adr/0045-global-cli-pipx.md +57 -0
- x_dd-0.1.1/docs/adr/0046-adapters-in-code-ssot.md +58 -0
- x_dd-0.1.1/docs/adr/0047-pypi-publish-trusted.md +51 -0
- x_dd-0.1.1/docs/adr/0048-modelo-distribucion-update-hibrido.md +101 -0
- x_dd-0.1.1/docs/adr/README.md +73 -0
- x_dd-0.1.1/docs/archive/sprints/README.md +7 -0
- x_dd-0.1.1/docs/archive/sprints/sprint-10/REPORT.md +34 -0
- x_dd-0.1.1/docs/archive/sprints/sprint-11/REPORT.md +37 -0
- x_dd-0.1.1/docs/archive/sprints/sprint-12/REPORT.md +62 -0
- x_dd-0.1.1/docs/archive/sprints/sprint-13/REPORT.md +53 -0
- x_dd-0.1.1/docs/archive/sprints/sprint-3/REPORT.md +48 -0
- x_dd-0.1.1/docs/archive/sprints/sprint-4/REPORT.md +65 -0
- x_dd-0.1.1/docs/archive/sprints/sprint-5/REPORT.md +56 -0
- x_dd-0.1.1/docs/archive/sprints/sprint-6/REPORT.md +79 -0
- x_dd-0.1.1/docs/archive/sprints/sprint-7/REPORT.md +95 -0
- x_dd-0.1.1/docs/archive/sprints/sprint-8/REPORT.md +82 -0
- x_dd-0.1.1/docs/archive/sprints/sprint-9/REPORT.md +97 -0
- x_dd-0.1.1/docs/constitucion.md +69 -0
- x_dd-0.1.1/docs/dev/GUIA_ANTIGRAVITY_AGENTES_SKILLS_WORKFLOWS.md +362 -0
- x_dd-0.1.1/docs/dev/GUIA_CLAUDE_CODE_AGENTES_SKILLS_WORKFLOWS.md +767 -0
- x_dd-0.1.1/docs/dev/GUIA_CODEX_AGENTES_SKILLS_WORKFLOWS.md +598 -0
- x_dd-0.1.1/docs/dev/GUIA_CURSOR_AGENTES_SKILLS_WORKFLOWS.md +670 -0
- x_dd-0.1.1/docs/dev/GUIA_OPENCODE_AGENTES_SKILLS_WORKFLOWS.md +741 -0
- x_dd-0.1.1/docs/dev/GUIA_VSCODE_AGENTES_SKILLS_WORKFLOWS.md +212 -0
- x_dd-0.1.1/docs/dev/GUIA_WINDSURF_AGENTES_SKILLS_WORKFLOWS.md +754 -0
- x_dd-0.1.1/docs/dev/README.md +28 -0
- x_dd-0.1.1/docs/equipo.md +310 -0
- x_dd-0.1.1/docs/research/ECC-inspiration-analysis.md +158 -0
- x_dd-0.1.1/docs/research/agents-best-practices-integration.md +26 -0
- x_dd-0.1.1/docs/research/awesome-harness-engineering-analysis.md +61 -0
- x_dd-0.1.1/evals/external/longmemeval/README.md +21 -0
- x_dd-0.1.1/evals/external/longmemeval/cases.jsonl +2 -0
- x_dd-0.1.1/evals/external/longmemeval/grader.yaml +3 -0
- x_dd-0.1.1/evals/external/promptfoo-compat/README.md +21 -0
- x_dd-0.1.1/evals/external/promptfoo-compat/cases.jsonl +2 -0
- x_dd-0.1.1/evals/external/promptfoo-compat/grader.yaml +3 -0
- x_dd-0.1.1/evals/external/swe-bench-verified/README.md +25 -0
- x_dd-0.1.1/evals/external/swe-bench-verified/cases.jsonl +3 -0
- x_dd-0.1.1/evals/external/swe-bench-verified/grader.yaml +1 -0
- x_dd-0.1.1/evals/external/terminal-bench-2/README.md +45 -0
- x_dd-0.1.1/evals/external/terminal-bench-2/cases.jsonl +3 -0
- x_dd-0.1.1/evals/external/terminal-bench-2/grader.yaml +1 -0
- x_dd-0.1.1/evals/xdd-talk-compact/cases.jsonl +5 -0
- x_dd-0.1.1/evals/xdd-talk-compact/grader.yaml +6 -0
- x_dd-0.1.1/evals/xdd-talk-compact/reports/latest.json +36 -0
- x_dd-0.1.1/install.ps1 +231 -0
- x_dd-0.1.1/lecciones.md +264 -0
- x_dd-0.1.1/manifests/install-components.json +61 -0
- x_dd-0.1.1/manifests/install-modules.json +251 -0
- x_dd-0.1.1/manifests/install-profiles.json +131 -0
- x_dd-0.1.1/memoria.md +293 -0
- x_dd-0.1.1/prompts/agents/academic/academic-anthropologist.md +125 -0
- x_dd-0.1.1/prompts/agents/academic/academic-geographer.md +127 -0
- x_dd-0.1.1/prompts/agents/academic/academic-historian.md +123 -0
- x_dd-0.1.1/prompts/agents/academic/academic-narratologist.md +118 -0
- x_dd-0.1.1/prompts/agents/academic/academic-psychologist.md +118 -0
- x_dd-0.1.1/prompts/agents/design/design-brand-guardian.md +322 -0
- x_dd-0.1.1/prompts/agents/design/design-image-prompt-engineer.md +236 -0
- x_dd-0.1.1/prompts/agents/design/design-inclusive-visuals-specialist.md +71 -0
- x_dd-0.1.1/prompts/agents/design/design-ui-designer.md +383 -0
- x_dd-0.1.1/prompts/agents/design/design-ux-architect.md +469 -0
- x_dd-0.1.1/prompts/agents/design/design-ux-researcher.md +329 -0
- x_dd-0.1.1/prompts/agents/design/design-visual-storyteller.md +149 -0
- x_dd-0.1.1/prompts/agents/design/design-whimsy-injector.md +438 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-ai-data-remediation-engineer.md +211 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-ai-engineer.md +146 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-autonomous-optimization-architect.md +107 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-backend-architect.md +235 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-chaos-engineer.md +41 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-cms-developer.md +536 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-code-reviewer.md +76 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-codebase-onboarding-engineer.md +173 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-data-engineer.md +306 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-database-optimizer.md +176 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-devops-automator.md +376 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-email-intelligence-engineer.md +353 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-embedded-firmware-engineer.md +173 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-feature-flag-manager.md +43 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-feishu-integration-developer.md +598 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-filament-optimization-specialist.md +283 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-finops-architect.md +45 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-frontend-developer.md +225 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-git-workflow-master.md +84 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-i18n-engineer.md +42 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-incident-response-commander.md +444 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-minimal-change-engineer.md +207 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-mobile-app-builder.md +493 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-rapid-prototyper.md +462 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-security-engineer.md +304 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-senior-developer.md +176 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-software-architect.md +81 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-solidity-smart-contract-engineer.md +522 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-sre.md +90 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-technical-writer.md +393 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-threat-detection-engineer.md +534 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-voice-ai-integration-engineer.md +561 -0
- x_dd-0.1.1/prompts/agents/engineering/engineering-wechat-mini-program-developer.md +350 -0
- x_dd-0.1.1/prompts/agents/finance/finance-bookkeeper-controller.md +260 -0
- x_dd-0.1.1/prompts/agents/finance/finance-financial-analyst.md +234 -0
- x_dd-0.1.1/prompts/agents/finance/finance-fpa-analyst.md +263 -0
- x_dd-0.1.1/prompts/agents/finance/finance-investment-researcher.md +272 -0
- x_dd-0.1.1/prompts/agents/finance/finance-tax-strategist.md +239 -0
- x_dd-0.1.1/prompts/agents/game-development/game-audio-engineer.md +264 -0
- x_dd-0.1.1/prompts/agents/game-development/game-designer.md +167 -0
- x_dd-0.1.1/prompts/agents/game-development/level-designer.md +208 -0
- x_dd-0.1.1/prompts/agents/game-development/narrative-designer.md +243 -0
- x_dd-0.1.1/prompts/agents/game-development/technical-artist.md +229 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-agentic-search-optimizer.md +311 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-ai-citation-strategist.md +170 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-app-store-optimizer.md +321 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-baidu-seo-specialist.md +226 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-bilibili-content-strategist.md +199 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-book-co-author.md +110 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-carousel-growth-engine.md +199 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-china-ecommerce-operator.md +283 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-china-market-localization-strategist.md +283 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-content-creator.md +54 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-cross-border-ecommerce.md +259 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-douyin-strategist.md +149 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-growth-hacker.md +54 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-instagram-curator.md +113 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-kuaishou-strategist.md +223 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-linkedin-content-creator.md +214 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-livestream-commerce-coach.md +305 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-podcast-strategist.md +277 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-private-domain-operator.md +308 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-reddit-community-builder.md +123 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-seo-specialist.md +321 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-short-video-editing-coach.md +412 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-social-media-strategist.md +125 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-tiktok-strategist.md +125 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-twitter-engager.md +126 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-video-optimization-specialist.md +119 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-wechat-official-account.md +145 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-weibo-strategist.md +240 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-xiaohongshu-specialist.md +138 -0
- x_dd-0.1.1/prompts/agents/marketing/marketing-zhihu-strategist.md +162 -0
- x_dd-0.1.1/prompts/agents/paid-media/paid-media-auditor.md +71 -0
- x_dd-0.1.1/prompts/agents/paid-media/paid-media-creative-strategist.md +71 -0
- x_dd-0.1.1/prompts/agents/paid-media/paid-media-paid-social-strategist.md +71 -0
- x_dd-0.1.1/prompts/agents/paid-media/paid-media-ppc-strategist.md +71 -0
- x_dd-0.1.1/prompts/agents/paid-media/paid-media-programmatic-buyer.md +71 -0
- x_dd-0.1.1/prompts/agents/paid-media/paid-media-search-query-analyst.md +71 -0
- x_dd-0.1.1/prompts/agents/paid-media/paid-media-tracking-specialist.md +71 -0
- x_dd-0.1.1/prompts/agents/product/product-analytics-architect.md +43 -0
- x_dd-0.1.1/prompts/agents/product/product-behavioral-nudge-engine.md +80 -0
- x_dd-0.1.1/prompts/agents/product/product-feedback-synthesizer.md +119 -0
- x_dd-0.1.1/prompts/agents/product/product-manager.md +469 -0
- x_dd-0.1.1/prompts/agents/product/product-sprint-prioritizer.md +154 -0
- x_dd-0.1.1/prompts/agents/product/product-trend-researcher.md +159 -0
- x_dd-0.1.1/prompts/agents/project-management/project-management-experiment-tracker.md +198 -0
- x_dd-0.1.1/prompts/agents/project-management/project-management-jira-workflow-steward.md +230 -0
- x_dd-0.1.1/prompts/agents/project-management/project-management-project-shepherd.md +194 -0
- x_dd-0.1.1/prompts/agents/project-management/project-management-studio-operations.md +200 -0
- x_dd-0.1.1/prompts/agents/project-management/project-management-studio-producer.md +203 -0
- x_dd-0.1.1/prompts/agents/project-management/project-manager-senior.md +135 -0
- x_dd-0.1.1/prompts/agents/project-management/release-manager.md +44 -0
- x_dd-0.1.1/prompts/agents/registry.json +3505 -0
- x_dd-0.1.1/prompts/agents/registry.schema.json +115 -0
- x_dd-0.1.1/prompts/agents/sales/sales-account-strategist.md +227 -0
- x_dd-0.1.1/prompts/agents/sales/sales-coach.md +271 -0
- x_dd-0.1.1/prompts/agents/sales/sales-deal-strategist.md +180 -0
- x_dd-0.1.1/prompts/agents/sales/sales-discovery-coach.md +225 -0
- x_dd-0.1.1/prompts/agents/sales/sales-engineer.md +182 -0
- x_dd-0.1.1/prompts/agents/sales/sales-outbound-strategist.md +201 -0
- x_dd-0.1.1/prompts/agents/sales/sales-pipeline-analyst.md +267 -0
- x_dd-0.1.1/prompts/agents/sales/sales-proposal-strategist.md +217 -0
- x_dd-0.1.1/prompts/agents/security/README.md +29 -0
- x_dd-0.1.1/prompts/agents/security/privacy-engineer.md +46 -0
- x_dd-0.1.1/prompts/agents/security/security-pentest-operator.md +153 -0
- x_dd-0.1.1/prompts/agents/spatial-computing/macos-spatial-metal-engineer.md +337 -0
- x_dd-0.1.1/prompts/agents/spatial-computing/terminal-integration-specialist.md +70 -0
- x_dd-0.1.1/prompts/agents/spatial-computing/visionos-spatial-engineer.md +54 -0
- x_dd-0.1.1/prompts/agents/spatial-computing/xr-cockpit-interaction-specialist.md +32 -0
- x_dd-0.1.1/prompts/agents/spatial-computing/xr-immersive-developer.md +32 -0
- x_dd-0.1.1/prompts/agents/spatial-computing/xr-interface-architect.md +32 -0
- x_dd-0.1.1/prompts/agents/specialized/accounts-payable-agent.md +185 -0
- x_dd-0.1.1/prompts/agents/specialized/agentic-identity-trust.md +387 -0
- x_dd-0.1.1/prompts/agents/specialized/agents-orchestrator.md +367 -0
- x_dd-0.1.1/prompts/agents/specialized/automation-governance-architect.md +216 -0
- x_dd-0.1.1/prompts/agents/specialized/blockchain-security-auditor.md +463 -0
- x_dd-0.1.1/prompts/agents/specialized/compliance-auditor.md +158 -0
- x_dd-0.1.1/prompts/agents/specialized/corporate-training-designer.md +192 -0
- x_dd-0.1.1/prompts/agents/specialized/customer-service.md +398 -0
- x_dd-0.1.1/prompts/agents/specialized/data-consolidation-agent.md +60 -0
- x_dd-0.1.1/prompts/agents/specialized/government-digital-presales-consultant.md +363 -0
- x_dd-0.1.1/prompts/agents/specialized/healthcare-customer-service.md +389 -0
- x_dd-0.1.1/prompts/agents/specialized/healthcare-marketing-compliance.md +395 -0
- x_dd-0.1.1/prompts/agents/specialized/hospitality-guest-services.md +603 -0
- x_dd-0.1.1/prompts/agents/specialized/hr-onboarding.md +451 -0
- x_dd-0.1.1/prompts/agents/specialized/identity-graph-operator.md +260 -0
- x_dd-0.1.1/prompts/agents/specialized/language-translator.md +264 -0
- x_dd-0.1.1/prompts/agents/specialized/legal-billing-time-tracking.md +569 -0
- x_dd-0.1.1/prompts/agents/specialized/legal-client-intake.md +492 -0
- x_dd-0.1.1/prompts/agents/specialized/legal-document-review.md +454 -0
- x_dd-0.1.1/prompts/agents/specialized/loan-officer-assistant.md +555 -0
- x_dd-0.1.1/prompts/agents/specialized/lsp-index-engineer.md +314 -0
- x_dd-0.1.1/prompts/agents/specialized/real-estate-buyer-seller.md +596 -0
- x_dd-0.1.1/prompts/agents/specialized/recruitment-specialist.md +509 -0
- x_dd-0.1.1/prompts/agents/specialized/report-distribution-agent.md +65 -0
- x_dd-0.1.1/prompts/agents/specialized/retail-customer-returns.md +566 -0
- x_dd-0.1.1/prompts/agents/specialized/sales-data-extraction-agent.md +67 -0
- x_dd-0.1.1/prompts/agents/specialized/sales-outreach.md +425 -0
- x_dd-0.1.1/prompts/agents/specialized/specialized-chief-of-staff.md +279 -0
- x_dd-0.1.1/prompts/agents/specialized/specialized-civil-engineer.md +356 -0
- x_dd-0.1.1/prompts/agents/specialized/specialized-cultural-intelligence-strategist.md +88 -0
- x_dd-0.1.1/prompts/agents/specialized/specialized-developer-advocate.md +317 -0
- x_dd-0.1.1/prompts/agents/specialized/specialized-document-generator.md +55 -0
- x_dd-0.1.1/prompts/agents/specialized/specialized-french-consulting-market.md +192 -0
- x_dd-0.1.1/prompts/agents/specialized/specialized-korean-business-navigator.md +216 -0
- x_dd-0.1.1/prompts/agents/specialized/specialized-mcp-builder.md +248 -0
- x_dd-0.1.1/prompts/agents/specialized/specialized-model-qa.md +488 -0
- x_dd-0.1.1/prompts/agents/specialized/specialized-salesforce-architect.md +180 -0
- x_dd-0.1.1/prompts/agents/specialized/specialized-workflow-architect.md +597 -0
- x_dd-0.1.1/prompts/agents/specialized/study-abroad-advisor.md +282 -0
- x_dd-0.1.1/prompts/agents/specialized/supply-chain-strategist.md +582 -0
- x_dd-0.1.1/prompts/agents/specialized/zk-steward.md +211 -0
- x_dd-0.1.1/prompts/agents/strategy/EXECUTIVE-BRIEF.md +95 -0
- x_dd-0.1.1/prompts/agents/strategy/QUICKSTART.md +194 -0
- x_dd-0.1.1/prompts/agents/strategy/nexus-strategy.md +1110 -0
- x_dd-0.1.1/prompts/agents/support/support-analytics-reporter.md +365 -0
- x_dd-0.1.1/prompts/agents/support/support-dev-onboarding-coach.md +41 -0
- x_dd-0.1.1/prompts/agents/support/support-end-user-docs-writer.md +42 -0
- x_dd-0.1.1/prompts/agents/support/support-executive-summary-generator.md +212 -0
- x_dd-0.1.1/prompts/agents/support/support-finance-tracker.md +442 -0
- x_dd-0.1.1/prompts/agents/support/support-infrastructure-maintainer.md +618 -0
- x_dd-0.1.1/prompts/agents/support/support-legal-compliance-checker.md +588 -0
- x_dd-0.1.1/prompts/agents/support/support-support-responder.md +585 -0
- x_dd-0.1.1/prompts/agents/testing/testing-accessibility-auditor.md +316 -0
- x_dd-0.1.1/prompts/agents/testing/testing-api-tester.md +306 -0
- x_dd-0.1.1/prompts/agents/testing/testing-contract-testing-engineer.md +41 -0
- x_dd-0.1.1/prompts/agents/testing/testing-evidence-collector.md +210 -0
- x_dd-0.1.1/prompts/agents/testing/testing-performance-benchmarker.md +268 -0
- x_dd-0.1.1/prompts/agents/testing/testing-reality-checker.md +236 -0
- x_dd-0.1.1/prompts/agents/testing/testing-test-results-analyzer.md +305 -0
- x_dd-0.1.1/prompts/agents/testing/testing-tool-evaluator.md +394 -0
- x_dd-0.1.1/prompts/agents/testing/testing-workflow-optimizer.md +450 -0
- x_dd-0.1.1/prompts/ecosystem/01_ecosystem_structure.md +132 -0
- x_dd-0.1.1/prompts/orchestrator/personas/casual.md +28 -0
- x_dd-0.1.1/prompts/orchestrator/personas/formal.md +29 -0
- x_dd-0.1.1/prompts/orchestrator/personas/friendly.md +29 -0
- x_dd-0.1.1/prompts/orchestrator/personas/technical.md +29 -0
- x_dd-0.1.1/prompts/phases/atdd_01_acceptance_stubs.md +48 -0
- x_dd-0.1.1/prompts/phases/bdd_01_feature_generator.md +50 -0
- x_dd-0.1.1/prompts/phases/bdd_02_qa_reporter.md +74 -0
- x_dd-0.1.1/prompts/phases/ddd_01_domain_model.md +60 -0
- x_dd-0.1.1/prompts/phases/fdd_01_feature_catalog.md +46 -0
- x_dd-0.1.1/prompts/phases/fdd_02_plan_features.md +56 -0
- x_dd-0.1.1/prompts/phases/memoria_01_learning_loop.md +64 -0
- x_dd-0.1.1/prompts/phases/sec_01_threat_model.md +58 -0
- x_dd-0.1.1/prompts/phases/sec_02_stdd_hardening.md +58 -0
- x_dd-0.1.1/prompts/phases/sec_03_devsecops_scan.md +78 -0
- x_dd-0.1.1/prompts/phases/sec_04_shannon_red_team.md +74 -0
- x_dd-0.1.1/prompts/phases/tdd_01_red_green_refactor.md +69 -0
- x_dd-0.1.1/prompts/phases/xdd_agency_matrix.md +31 -0
- x_dd-0.1.1/prompts/skills/02_skills_catalog.md +51 -0
- x_dd-0.1.1/prompts/skills/registry.json +60 -0
- x_dd-0.1.1/prompts/templates/04_templates_guide.md +57 -0
- x_dd-0.1.1/prompts/workflows/03_workflows_catalog.md +105 -0
- x_dd-0.1.1/pyproject.toml +53 -0
- x_dd-0.1.1/requirements-dev.txt +5 -0
- x_dd-0.1.1/schemas/hooks.schema.json +51 -0
- x_dd-0.1.1/schemas/install-components.schema.json +32 -0
- x_dd-0.1.1/schemas/install-modules.schema.json +41 -0
- x_dd-0.1.1/schemas/install-profiles.schema.json +34 -0
- x_dd-0.1.1/schemas/skills.schema.json +32 -0
- x_dd-0.1.1/schemas/xdd.config.schema.json +183 -0
- x_dd-0.1.1/schemas/xdd.profile.schema.json +105 -0
- x_dd-0.1.1/scripts/_xdd_common.py +68 -0
- x_dd-0.1.1/scripts/generate-equipo.sh +131 -0
- x_dd-0.1.1/scripts/hooks/post-commit +10 -0
- x_dd-0.1.1/scripts/lint-workflows.sh +72 -0
- x_dd-0.1.1/scripts/migrate-agents-to-registry.py +197 -0
- x_dd-0.1.1/scripts/validate-registry.py +115 -0
- x_dd-0.1.1/scripts/xdd-a2a.py +167 -0
- x_dd-0.1.1/scripts/xdd-adapt.sh +712 -0
- x_dd-0.1.1/scripts/xdd-agui.py +154 -0
- x_dd-0.1.1/scripts/xdd-authz.py +194 -0
- x_dd-0.1.1/scripts/xdd-brand.sh +169 -0
- x_dd-0.1.1/scripts/xdd-bundle.py +261 -0
- x_dd-0.1.1/scripts/xdd-context.py +201 -0
- x_dd-0.1.1/scripts/xdd-cost.py +256 -0
- x_dd-0.1.1/scripts/xdd-doctor.sh +281 -0
- x_dd-0.1.1/scripts/xdd-eval.py +309 -0
- x_dd-0.1.1/scripts/xdd-flow.py +247 -0
- x_dd-0.1.1/scripts/xdd-frozen-transfer.py +206 -0
- x_dd-0.1.1/scripts/xdd-gate.py +384 -0
- x_dd-0.1.1/scripts/xdd-global-install.sh +412 -0
- x_dd-0.1.1/scripts/xdd-init.sh +287 -0
- x_dd-0.1.1/scripts/xdd-intent.py +204 -0
- x_dd-0.1.1/scripts/xdd-mcp-install-global.sh +119 -0
- x_dd-0.1.1/scripts/xdd-meta-eval.py +192 -0
- x_dd-0.1.1/scripts/xdd-monorepo.sh +104 -0
- x_dd-0.1.1/scripts/xdd-orchestrate.py +311 -0
- x_dd-0.1.1/scripts/xdd-organize.sh +293 -0
- x_dd-0.1.1/scripts/xdd-otel.py +234 -0
- x_dd-0.1.1/scripts/xdd-pentest.sh +127 -0
- x_dd-0.1.1/scripts/xdd-provider.py +161 -0
- x_dd-0.1.1/scripts/xdd-replay.py +233 -0
- x_dd-0.1.1/scripts/xdd-router.py +190 -0
- x_dd-0.1.1/scripts/xdd-shield.py +292 -0
- x_dd-0.1.1/scripts/xdd-start.sh +92 -0
- x_dd-0.1.1/scripts/xdd-state.py +472 -0
- x_dd-0.1.1/scripts/xdd-trace-summarize.py +203 -0
- x_dd-0.1.1/scripts/xdd-wizard.sh +223 -0
- x_dd-0.1.1/scripts/xdd_adapters.py +193 -0
- x_dd-0.1.1/skills/agent-eval/SKILL.md +70 -0
- x_dd-0.1.1/skills/xdd-ai-review/SKILL.md +95 -0
- x_dd-0.1.1/skills/xdd-compact/SKILL.md +95 -0
- x_dd-0.1.1/skills/xdd-fs-context/SKILL.md +99 -0
- x_dd-0.1.1/skills/xdd-sandbox/SKILL.md +67 -0
- x_dd-0.1.1/skills/xdd-talk-compact/SKILL.md +103 -0
- x_dd-0.1.1/src/xdd_cli/__init__.py +143 -0
- x_dd-0.1.1/templates/adr.template.md +24 -0
- x_dd-0.1.1/templates/auto-organize.template.yml +149 -0
- x_dd-0.1.1/templates/budget.template.md +52 -0
- x_dd-0.1.1/templates/constitution.template.md +91 -0
- x_dd-0.1.1/templates/constitution.template.yml +90 -0
- x_dd-0.1.1/templates/discovery.template.md +36 -0
- x_dd-0.1.1/templates/dr-plan.template.md +48 -0
- x_dd-0.1.1/templates/events.schema.template.json +59 -0
- x_dd-0.1.1/templates/flags.template.md +40 -0
- x_dd-0.1.1/templates/lecciones.template.md +23 -0
- x_dd-0.1.1/templates/memoria.template.md +33 -0
- x_dd-0.1.1/templates/onboarding.template.md +44 -0
- x_dd-0.1.1/templates/privacy.template.md +37 -0
- x_dd-0.1.1/templates/release-notes.template.md +30 -0
- x_dd-0.1.1/templates/runbook.template.md +40 -0
- x_dd-0.1.1/templates/xdd.profile.template.yml +46 -0
- x_dd-0.1.1/templates/xdd.profile.with-branding.yml +27 -0
- x_dd-0.1.1/tests/bats/hooks.bats +70 -0
- x_dd-0.1.1/tests/bats/xdd-adapt-windsurf.bats +134 -0
- x_dd-0.1.1/tests/bats/xdd-adapt.bats +205 -0
- x_dd-0.1.1/tests/bats/xdd-brand.bats +109 -0
- x_dd-0.1.1/tests/bats/xdd-doctor.bats +44 -0
- x_dd-0.1.1/tests/bats/xdd-flow.bats +47 -0
- x_dd-0.1.1/tests/bats/xdd-global-install.bats +219 -0
- x_dd-0.1.1/tests/bats/xdd-init-sprint28.bats +122 -0
- x_dd-0.1.1/tests/bats/xdd-init.bats +71 -0
- x_dd-0.1.1/tests/bats/xdd-mcp-install-global.bats +69 -0
- x_dd-0.1.1/tests/bats/xdd-monorepo.bats +110 -0
- x_dd-0.1.1/tests/bats/xdd-organize.bats +177 -0
- x_dd-0.1.1/tests/bats/xdd-wizard.bats +54 -0
- x_dd-0.1.1/tests/e2e/test_quickstart.bats +106 -0
- x_dd-0.1.1/tests/test_adapters.py +113 -0
- x_dd-0.1.1/tests/test_ahe.py +179 -0
- x_dd-0.1.1/tests/test_authz.py +95 -0
- x_dd-0.1.1/tests/test_context.py +93 -0
- x_dd-0.1.1/tests/test_cost.py +112 -0
- x_dd-0.1.1/tests/test_eval.py +147 -0
- x_dd-0.1.1/tests/test_eval_external.py +151 -0
- x_dd-0.1.1/tests/test_flow.py +157 -0
- x_dd-0.1.1/tests/test_gate.py +232 -0
- x_dd-0.1.1/tests/test_intent.py +77 -0
- x_dd-0.1.1/tests/test_manifests.py +126 -0
- x_dd-0.1.1/tests/test_mcp_local_first.py +117 -0
- x_dd-0.1.1/tests/test_mcp_server.py +155 -0
- x_dd-0.1.1/tests/test_orchestrate.py +197 -0
- x_dd-0.1.1/tests/test_otel.py +99 -0
- x_dd-0.1.1/tests/test_packaging.py +83 -0
- x_dd-0.1.1/tests/test_protocols_bundle.py +222 -0
- x_dd-0.1.1/tests/test_provider.py +108 -0
- x_dd-0.1.1/tests/test_replay.py +85 -0
- x_dd-0.1.1/tests/test_router.py +78 -0
- x_dd-0.1.1/tests/test_shield.py +78 -0
- x_dd-0.1.1/tests/test_state.py +290 -0
- x_dd-0.1.1/tests/test_version_consistency.py +91 -0
- x_dd-0.1.1/the-longform-guide.md +374 -0
- x_dd-0.1.1/the-security-guide.md +201 -0
- x_dd-0.1.1/the-shortform-guide.md +224 -0
- x_dd-0.1.1/xdd-mcp-server/__init__.py +6 -0
- x_dd-0.1.1/xdd-mcp-server/__main__.py +45 -0
- x_dd-0.1.1/xdd-mcp-server/server.py +124 -0
- x_dd-0.1.1/xdd-mcp-server/tools.py +299 -0
- x_dd-0.1.1/xdd.config.yml +83 -0
- x_dd-0.1.1/xdd.profile.yml +37 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# X-DD Hooks
|
|
2
|
+
|
|
3
|
+
Catálogo de hooks event-driven inspirado en ECC (Sprint 7).
|
|
4
|
+
Definidos en [`hooks.json`](hooks.json) y validados contra
|
|
5
|
+
[`schemas/hooks.schema.json`](../../schemas/hooks.schema.json).
|
|
6
|
+
|
|
7
|
+
## Eventos soportados
|
|
8
|
+
|
|
9
|
+
- **PreToolUse** — antes de ejecutar tool. Puede bloquear (`exit_on_match: 2`).
|
|
10
|
+
- **PostToolUse** — después. No bloquea; útil para indexar / loguear.
|
|
11
|
+
- **SessionStart** — al iniciar sesión del orquestador.
|
|
12
|
+
- **SessionEnd** — al cerrar sesión (cleanup).
|
|
13
|
+
- **Stop** — al finalizar respuesta del agente.
|
|
14
|
+
- **PreCompact** — antes de compactar contexto.
|
|
15
|
+
|
|
16
|
+
## Profiles
|
|
17
|
+
|
|
18
|
+
Cada hook declara en qué profiles aplica: `minimal | standard | strict`.
|
|
19
|
+
Configurable vía env:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
export XDD_HOOK_PROFILE=standard # default
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Catálogo v0.1.0
|
|
26
|
+
|
|
27
|
+
| ID | Evento | Profile | Comportamiento |
|
|
28
|
+
|----|--------|---------|----------------|
|
|
29
|
+
| `pre:bash:dangerous-command` | PreToolUse `Bash` | standard, strict | **Bloquea** `rm -rf /`, `git push --force`, `git reset --hard origin/...`, `chmod 777`, `curl \| sh`, fork bombs, `dd >/dev/sda` |
|
|
30
|
+
| `pre:edit:config-protection` | PreToolUse `Edit\|Write` | strict | **Bloquea** edición de configs sensibles (linters, schemas). Override: `XDD_ALLOW_CONFIG_EDIT=1` |
|
|
31
|
+
| `pre:write:doc-file-warning` | PreToolUse `Write` | standard, strict | Advierte sobre `.md` fuera de paths canónicos (no bloquea) |
|
|
32
|
+
| `post:edit:mempalace-index` | PostToolUse `Edit\|Write\|NotebookEdit` | minimal+ | Re-indexa MemPalace en background |
|
|
33
|
+
| `post:bash:pr-logger` | PostToolUse `Bash` | standard, strict | Loguea URL de PR tras `gh pr create` en `~/.xdd/pr-history.log` |
|
|
34
|
+
| `session-start:context-load` | SessionStart | standard, strict | Imprime `WORKING-CONTEXT.md` + última sesión de `memoria.md` |
|
|
35
|
+
| `stop:git-check` | Stop | standard, strict | Advierte si hay cambios sin commitear/pushear |
|
|
36
|
+
| `stop:pattern-extraction` | Stop | strict | Stub para Sprint 9 (Continuous Learning) |
|
|
37
|
+
|
|
38
|
+
## Instalación
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# Manual (futuro: vía manifests, Sprint 7.3)
|
|
42
|
+
cp -r .agent/hooks/scripts ~/.claude/hooks/
|
|
43
|
+
# O via xdd-adapt.sh (próxima iteración)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Los hooks usan `bash` puro (sin Node) para portabilidad. Reciben JSON por
|
|
47
|
+
stdin con `{tool_name, tool_input, tool_output?}`. Salida:
|
|
48
|
+
- `exit 0` — permitir y continuar
|
|
49
|
+
- `exit 2` — **bloquear** la herramienta (solo PreToolUse)
|
|
50
|
+
- otro código — error logueado, no bloquea
|
|
51
|
+
|
|
52
|
+
## Variables de entorno
|
|
53
|
+
|
|
54
|
+
| Var | Default | Efecto |
|
|
55
|
+
|-----|---------|--------|
|
|
56
|
+
| `XDD_HOOK_PROFILE` | `standard` | `minimal\|standard\|strict` |
|
|
57
|
+
| `XDD_DISABLED_HOOKS` | (vacío) | CSV de IDs a desactivar, ej `pre:bash:dangerous-command,stop:git-check` |
|
|
58
|
+
| `XDD_ALLOW_CONFIG_EDIT` | `0` | `1` permite editar configs protegidos |
|
|
59
|
+
| `XDD_SESSION_START_MAX_CHARS` | `8000` | cap del contexto inicial cargado |
|
|
60
|
+
|
|
61
|
+
## Tests
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Manual quick-check
|
|
65
|
+
echo '{"tool_input":{"command":"rm -rf /"}}' | bash .agent/hooks/scripts/pre-bash-dangerous-command.sh
|
|
66
|
+
# → BLOCKED + exit 2
|
|
67
|
+
|
|
68
|
+
echo '{"tool_input":{"file_path":".markdownlint.yaml"}}' | bash .agent/hooks/scripts/pre-edit-config-protection.sh
|
|
69
|
+
# → BLOCKED + exit 2
|
|
70
|
+
|
|
71
|
+
# Suite bats (Sprint 7.5)
|
|
72
|
+
bats tests/hooks/
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Crear un hook propio
|
|
76
|
+
|
|
77
|
+
1. Escribir script bash/node en `.agent/hooks/scripts/`.
|
|
78
|
+
2. Registrar entry en `.agent/hooks/hooks.json` siguiendo el schema.
|
|
79
|
+
3. Validar: `python3 -c "import json,jsonschema; jsonschema.validate(json.load(open('.agent/hooks/hooks.json')), json.load(open('schemas/hooks.schema.json')))"`.
|
|
80
|
+
4. Test manual con stdin.
|
|
81
|
+
|
|
82
|
+
## Threat model coverage
|
|
83
|
+
|
|
84
|
+
Los hooks mitigan amenazas listadas en [.xdd/spec/THREATS.md](../../.xdd/spec/THREATS.md):
|
|
85
|
+
|
|
86
|
+
- **T2.6** (hook ejecutando script malicioso) — `pre:edit:config-protection` defiende los configs de linters/CI
|
|
87
|
+
- **T6.2** (workflow ejecuta `sudo` o accede fuera de scope) — `pre:bash:dangerous-command` bloquea ataques destructivos típicos
|
|
88
|
+
- **V2** (Hook ejecutando script malicioso post-commit) — todos los hooks viven en `.agent/hooks/scripts/` versionado y auditable, no en `.git/hooks/`
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../../schemas/hooks.schema.json",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Catálogo de hooks X-DD event-driven (inspirado en ECC). Profiles: minimal | standard | strict.",
|
|
5
|
+
"hooks": {
|
|
6
|
+
"PreToolUse": [
|
|
7
|
+
{
|
|
8
|
+
"id": "pre:bash:dangerous-command",
|
|
9
|
+
"matcher": "Bash",
|
|
10
|
+
"description": "Bloquea comandos peligrosos: rm -rf, git push --force, git reset --hard, chmod 777, curl|sh.",
|
|
11
|
+
"profile": [
|
|
12
|
+
"standard",
|
|
13
|
+
"strict"
|
|
14
|
+
],
|
|
15
|
+
"exit_on_match": 2,
|
|
16
|
+
"script": ".agent/hooks/scripts/pre-bash-dangerous-command.sh"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": "pre:edit:config-protection",
|
|
20
|
+
"matcher": "Edit|Write",
|
|
21
|
+
"description": "Bloquea modificaciones a configs de linters/formatters sin justificación explícita (steers a arreglar código, no a debilitar configs).",
|
|
22
|
+
"profile": [
|
|
23
|
+
"strict"
|
|
24
|
+
],
|
|
25
|
+
"exit_on_match": 2,
|
|
26
|
+
"script": ".agent/hooks/scripts/pre-edit-config-protection.sh"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": "pre:write:doc-file-warning",
|
|
30
|
+
"matcher": "Write",
|
|
31
|
+
"description": "Advierte cuando se crean archivos .md fuera de paths estándar (README, CHANGELOG, docs/, .xdd/).",
|
|
32
|
+
"profile": [
|
|
33
|
+
"standard",
|
|
34
|
+
"strict"
|
|
35
|
+
],
|
|
36
|
+
"exit_on_match": 0,
|
|
37
|
+
"script": ".agent/hooks/scripts/pre-write-doc-warning.sh"
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"PostToolUse": [
|
|
41
|
+
{
|
|
42
|
+
"id": "post:edit:mempalace-index",
|
|
43
|
+
"matcher": "Edit|Write|NotebookEdit",
|
|
44
|
+
"description": "Re-indexa MemPalace en background tras cada Edit/Write (heredado del retrofit original).",
|
|
45
|
+
"profile": [
|
|
46
|
+
"minimal",
|
|
47
|
+
"standard",
|
|
48
|
+
"strict"
|
|
49
|
+
],
|
|
50
|
+
"async": true,
|
|
51
|
+
"script": ".agent/hooks/scripts/post-edit-mempalace-index.sh"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "post:bash:pr-logger",
|
|
55
|
+
"matcher": "Bash",
|
|
56
|
+
"description": "Log de PR URL tras gh pr create (facilita seguimiento).",
|
|
57
|
+
"profile": [
|
|
58
|
+
"standard",
|
|
59
|
+
"strict"
|
|
60
|
+
],
|
|
61
|
+
"async": true,
|
|
62
|
+
"script": ".agent/hooks/scripts/post-bash-pr-logger.sh"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": "post:write:auto-organize",
|
|
66
|
+
"matcher": "Edit|Write|NotebookEdit",
|
|
67
|
+
"description": "Sprint 31: auto-organize workspace (move docs canónicos, gitignore framework pollution + cache + secrets). Idempotente, no destructivo. Opt-out: XDD_NO_ORGANIZE=1.",
|
|
68
|
+
"profile": [
|
|
69
|
+
"standard",
|
|
70
|
+
"strict"
|
|
71
|
+
],
|
|
72
|
+
"async": true,
|
|
73
|
+
"script": ".agent/hooks/scripts/post-write-auto-organize.sh"
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
"SessionStart": [
|
|
77
|
+
{
|
|
78
|
+
"id": "session-start:context-load",
|
|
79
|
+
"matcher": "*",
|
|
80
|
+
"description": "Carga last entry de memoria.md + estado de WORKING-CONTEXT.md al iniciar sesión.",
|
|
81
|
+
"profile": [
|
|
82
|
+
"standard",
|
|
83
|
+
"strict"
|
|
84
|
+
],
|
|
85
|
+
"script": ".agent/hooks/scripts/session-start-context-load.sh"
|
|
86
|
+
}
|
|
87
|
+
],
|
|
88
|
+
"Stop": [
|
|
89
|
+
{
|
|
90
|
+
"id": "stop:git-check",
|
|
91
|
+
"matcher": "*",
|
|
92
|
+
"description": "Advierte (no bloquea) si hay cambios no commiteados al cerrar la sesión.",
|
|
93
|
+
"profile": [
|
|
94
|
+
"standard",
|
|
95
|
+
"strict"
|
|
96
|
+
],
|
|
97
|
+
"exit_on_match": 0,
|
|
98
|
+
"script": ".agent/hooks/scripts/stop-git-check.sh"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"id": "stop:pattern-extraction",
|
|
102
|
+
"matcher": "*",
|
|
103
|
+
"description": "Stub para Sprint 9 (Continuous Learning). Hoy no-op; será punto de extracción de instincts.",
|
|
104
|
+
"profile": [
|
|
105
|
+
"strict"
|
|
106
|
+
],
|
|
107
|
+
"async": true,
|
|
108
|
+
"script": ".agent/hooks/scripts/stop-pattern-extraction.sh"
|
|
109
|
+
}
|
|
110
|
+
],
|
|
111
|
+
"before_agent": [
|
|
112
|
+
{
|
|
113
|
+
"id": "ba:otel:trace-start",
|
|
114
|
+
"matcher": "*",
|
|
115
|
+
"description": "Sprint 18 ADR-0021: abre span OTel agent.invocation al inicio de agent loop.",
|
|
116
|
+
"profile": [
|
|
117
|
+
"strict"
|
|
118
|
+
],
|
|
119
|
+
"async": true,
|
|
120
|
+
"script": ".agent/hooks/scripts/ba-otel-trace-start.sh"
|
|
121
|
+
}
|
|
122
|
+
],
|
|
123
|
+
"before_model": [
|
|
124
|
+
{
|
|
125
|
+
"id": "bm:cost:budget-check",
|
|
126
|
+
"matcher": "*",
|
|
127
|
+
"description": "Sprint 18 ADR-0022: pre-call check de cost budget (warning si exceede).",
|
|
128
|
+
"profile": [
|
|
129
|
+
"strict"
|
|
130
|
+
],
|
|
131
|
+
"exit_on_match": 0,
|
|
132
|
+
"script": ".agent/hooks/scripts/bm-cost-budget-check.sh"
|
|
133
|
+
}
|
|
134
|
+
],
|
|
135
|
+
"wrap_model_call": [
|
|
136
|
+
{
|
|
137
|
+
"id": "wm:otel:span",
|
|
138
|
+
"matcher": "*",
|
|
139
|
+
"description": "Sprint 18 ADR-0021: wrap LLM call con span llm.call (input/output tokens, latency, cost).",
|
|
140
|
+
"profile": [
|
|
141
|
+
"strict"
|
|
142
|
+
],
|
|
143
|
+
"async": true,
|
|
144
|
+
"script": ".agent/hooks/scripts/wm-otel-span.sh"
|
|
145
|
+
}
|
|
146
|
+
],
|
|
147
|
+
"wrap_tool_call": [
|
|
148
|
+
{
|
|
149
|
+
"id": "wt:otel:span",
|
|
150
|
+
"matcher": "*",
|
|
151
|
+
"description": "Sprint 18 ADR-0021: wrap tool call con span tool.call (tool name, args, duration).",
|
|
152
|
+
"profile": [
|
|
153
|
+
"strict"
|
|
154
|
+
],
|
|
155
|
+
"async": true,
|
|
156
|
+
"script": ".agent/hooks/scripts/wt-otel-span.sh"
|
|
157
|
+
}
|
|
158
|
+
],
|
|
159
|
+
"after_model": [
|
|
160
|
+
{
|
|
161
|
+
"id": "am:cost:record",
|
|
162
|
+
"matcher": "*",
|
|
163
|
+
"description": "Sprint 18 ADR-0022: post-call registra cost en SQLite cost.db.",
|
|
164
|
+
"profile": [
|
|
165
|
+
"strict"
|
|
166
|
+
],
|
|
167
|
+
"async": true,
|
|
168
|
+
"script": ".agent/hooks/scripts/am-cost-record.sh"
|
|
169
|
+
}
|
|
170
|
+
],
|
|
171
|
+
"after_agent": [
|
|
172
|
+
{
|
|
173
|
+
"id": "aa:replay:flush",
|
|
174
|
+
"matcher": "*",
|
|
175
|
+
"description": "Sprint 18 ADR-0021: flush session events a .xdd/traces/<sid>.jsonl.",
|
|
176
|
+
"profile": [
|
|
177
|
+
"strict"
|
|
178
|
+
],
|
|
179
|
+
"async": true,
|
|
180
|
+
"script": ".agent/hooks/scripts/aa-replay-flush.sh"
|
|
181
|
+
}
|
|
182
|
+
]
|
|
183
|
+
}
|
|
184
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# post:bash:pr-logger — log de PR URL tras gh pr create.
|
|
3
|
+
# No bloquea. Async OK.
|
|
4
|
+
set +e
|
|
5
|
+
|
|
6
|
+
CMD=""
|
|
7
|
+
OUTPUT=""
|
|
8
|
+
if [ ! -t 0 ]; then
|
|
9
|
+
RAW=$(cat || true)
|
|
10
|
+
if command -v python3 >/dev/null 2>&1; then
|
|
11
|
+
CMD=$(echo "$RAW" | python3 -c "import json,sys; d=json.loads(sys.stdin.read() or '{}'); print((d.get('tool_input') or {}).get('command') or '')" 2>/dev/null || echo "")
|
|
12
|
+
OUTPUT=$(echo "$RAW" | python3 -c "import json,sys; d=json.loads(sys.stdin.read() or '{}'); print((d.get('tool_output') or {}).get('output') or '')" 2>/dev/null || echo "")
|
|
13
|
+
fi
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
# Detectar gh pr create
|
|
17
|
+
if echo "$CMD" | grep -qE "gh\s+pr\s+create"; then
|
|
18
|
+
PR_URL=$(echo "$OUTPUT" | grep -oE 'https://github\.com/[^/]+/[^/]+/pull/[0-9]+' | head -1)
|
|
19
|
+
if [ -n "$PR_URL" ]; then
|
|
20
|
+
mkdir -p ~/.xdd
|
|
21
|
+
echo "$(date -u +%Y-%m-%dT%H:%M:%SZ) PR opened: $PR_URL" >> ~/.xdd/pr-history.log
|
|
22
|
+
echo "[xdd:hook] PR logged → $PR_URL"
|
|
23
|
+
fi
|
|
24
|
+
fi
|
|
25
|
+
exit 0
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# post:edit:mempalace-index — re-indexa MemPalace en background tras cada Edit/Write.
|
|
3
|
+
# Heredado del retrofit original. No bloquea nunca.
|
|
4
|
+
set +e
|
|
5
|
+
if command -v mempalace >/dev/null 2>&1; then
|
|
6
|
+
( mempalace mine "$PWD" >>"$HOME/.mempalace/mine.log" 2>&1 & ) >/dev/null 2>&1
|
|
7
|
+
fi
|
|
8
|
+
exit 0
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# post:write:auto-organize — Sprint 31 / ADR-0041
|
|
3
|
+
# Hook PostToolUse que invoca xdd-organize en modo apply (non-destructive) tras
|
|
4
|
+
# Write/Edit/NotebookEdit. Real-time auto-organize sin destruir.
|
|
5
|
+
#
|
|
6
|
+
# Comportamiento:
|
|
7
|
+
# - NO bloquea (exit 0 siempre)
|
|
8
|
+
# - Async (no demora respuesta del orquestador)
|
|
9
|
+
# - Solo gitignore_only + move (NO gitignore_and_delete sin --confirm-delete)
|
|
10
|
+
# - Opt-out: XDD_NO_ORGANIZE=1 env var (mismo opt-out que xdd-organize)
|
|
11
|
+
#
|
|
12
|
+
# Output: log line por acción al stderr. Captura en .xdd/organize.log si dir existe.
|
|
13
|
+
set +e
|
|
14
|
+
|
|
15
|
+
# Skip si opt-out activo
|
|
16
|
+
[ "${XDD_NO_ORGANIZE:-0}" = "1" ] && exit 0
|
|
17
|
+
|
|
18
|
+
# Resolver path del repo X-DD source (script xdd-organize vive ahí)
|
|
19
|
+
XDD_ORGANIZE=""
|
|
20
|
+
if [ -x ./scripts/xdd-organize.sh ]; then
|
|
21
|
+
XDD_ORGANIZE="./scripts/xdd-organize.sh"
|
|
22
|
+
elif [ -x "$HOME/Documentos/Desarrollos/scripts/xdd-organize.sh" ]; then
|
|
23
|
+
XDD_ORGANIZE="$HOME/Documentos/Desarrollos/scripts/xdd-organize.sh"
|
|
24
|
+
elif command -v xdd-organize >/dev/null 2>&1; then
|
|
25
|
+
XDD_ORGANIZE="$(command -v xdd-organize)"
|
|
26
|
+
else
|
|
27
|
+
# No disponible — skip silencioso
|
|
28
|
+
exit 0
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
# Ejecutar apply (non-destructive). Log a .xdd/organize.log si dir existe.
|
|
32
|
+
LOG=""
|
|
33
|
+
[ -d .xdd ] && LOG=".xdd/organize.log"
|
|
34
|
+
|
|
35
|
+
if [ -n "$LOG" ]; then
|
|
36
|
+
echo "=== $(date -Iseconds) post:write:auto-organize ===" >> "$LOG"
|
|
37
|
+
bash "$XDD_ORGANIZE" apply --dest=. 2>&1 | tee -a "$LOG" >&2
|
|
38
|
+
else
|
|
39
|
+
bash "$XDD_ORGANIZE" apply --dest=. 2>&1 >&2
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
exit 0
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# pre:bash:dangerous-command — bloquea comandos peligrosos.
|
|
3
|
+
# Recibe el comando como JSON por stdin (formato Claude Code) o $1.
|
|
4
|
+
# Exit 2 = bloquea ejecución; Exit 0 = permite.
|
|
5
|
+
set -eu
|
|
6
|
+
|
|
7
|
+
# Obtener el comando del input
|
|
8
|
+
CMD=""
|
|
9
|
+
if [ -t 0 ]; then
|
|
10
|
+
CMD="${1:-}"
|
|
11
|
+
else
|
|
12
|
+
RAW=$(cat || true)
|
|
13
|
+
if command -v python3 >/dev/null 2>&1; then
|
|
14
|
+
CMD=$(echo "$RAW" | python3 -c "import json,sys; d=json.loads(sys.stdin.read() or '{}'); print((d.get('tool_input') or {}).get('command') or '')" 2>/dev/null || echo "")
|
|
15
|
+
else
|
|
16
|
+
CMD=$(echo "$RAW" | grep -oE '"command"\s*:\s*"[^"]*"' | head -1 | sed 's/.*"command"\s*:\s*"\(.*\)"/\1/' || echo "")
|
|
17
|
+
fi
|
|
18
|
+
fi
|
|
19
|
+
|
|
20
|
+
[ -z "$CMD" ] && exit 0
|
|
21
|
+
|
|
22
|
+
# Patrones peligrosos
|
|
23
|
+
DANGEROUS_PATTERNS=(
|
|
24
|
+
'rm[[:space:]]+-[rR][fF]?[[:space:]]+/'
|
|
25
|
+
'rm[[:space:]]+-[fF][rR]?[[:space:]]+/'
|
|
26
|
+
'git[[:space:]]+push[[:space:]]+.*--force'
|
|
27
|
+
'git[[:space:]]+push[[:space:]]+.*-f([[:space:]]|$)'
|
|
28
|
+
'git[[:space:]]+reset[[:space:]]+--hard[[:space:]]+(origin|HEAD~)'
|
|
29
|
+
'git[[:space:]]+clean[[:space:]]+-[fdx]'
|
|
30
|
+
'chmod[[:space:]]+-?R?[[:space:]]+777'
|
|
31
|
+
'curl[[:space:]]+.*\|[[:space:]]*(bash|sh)([[:space:]]|$)'
|
|
32
|
+
'wget[[:space:]]+.*\|[[:space:]]*(bash|sh)([[:space:]]|$)'
|
|
33
|
+
'dd[[:space:]]+if=.*of=/dev/(sda|hda|nvme)'
|
|
34
|
+
':(){.*}'
|
|
35
|
+
'>\s*/dev/(sda|hda|nvme)'
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
for pat in "${DANGEROUS_PATTERNS[@]}"; do
|
|
39
|
+
if echo "$CMD" | grep -qE "$pat"; then
|
|
40
|
+
echo "[xdd:hook] BLOCKED — comando peligroso detectado:" >&2
|
|
41
|
+
echo "[xdd:hook] patrón: $pat" >&2
|
|
42
|
+
echo "[xdd:hook] comando: $CMD" >&2
|
|
43
|
+
echo "[xdd:hook] Si es intencional, ejecutalo manualmente fuera del agente." >&2
|
|
44
|
+
exit 2
|
|
45
|
+
fi
|
|
46
|
+
done
|
|
47
|
+
|
|
48
|
+
exit 0
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# pre:edit:config-protection — bloquea modificación de configs sensibles.
|
|
3
|
+
# Profile: strict. Steers al agente a arreglar el código, no a debilitar la config.
|
|
4
|
+
set -eu
|
|
5
|
+
|
|
6
|
+
# Lista de paths protegidos (configs que NO deben relajarse silenciosamente)
|
|
7
|
+
PROTECTED=(
|
|
8
|
+
".markdownlint.yaml"
|
|
9
|
+
".markdownlint.json"
|
|
10
|
+
".editorconfig"
|
|
11
|
+
".gitignore"
|
|
12
|
+
".pre-commit-config.yaml"
|
|
13
|
+
".eslintrc"
|
|
14
|
+
".eslintrc.js"
|
|
15
|
+
".eslintrc.json"
|
|
16
|
+
".prettierrc"
|
|
17
|
+
".prettierrc.json"
|
|
18
|
+
"eslint.config.js"
|
|
19
|
+
"ruff.toml"
|
|
20
|
+
"pyproject.toml"
|
|
21
|
+
"tsconfig.json"
|
|
22
|
+
".github/renovate.json"
|
|
23
|
+
".github/dependabot.yml"
|
|
24
|
+
"schemas/"
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
# Obtener path del input
|
|
28
|
+
FILE_PATH=""
|
|
29
|
+
if [ -t 0 ]; then
|
|
30
|
+
FILE_PATH="${1:-}"
|
|
31
|
+
else
|
|
32
|
+
RAW=$(cat || true)
|
|
33
|
+
if command -v python3 >/dev/null 2>&1; then
|
|
34
|
+
FILE_PATH=$(echo "$RAW" | python3 -c "import json,sys; d=json.loads(sys.stdin.read() or '{}'); print((d.get('tool_input') or {}).get('file_path') or '')" 2>/dev/null || echo "")
|
|
35
|
+
fi
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
[ -z "$FILE_PATH" ] && exit 0
|
|
39
|
+
|
|
40
|
+
# Verificar contra paths protegidos
|
|
41
|
+
for prot in "${PROTECTED[@]}"; do
|
|
42
|
+
if [[ "$FILE_PATH" == *"$prot"* ]]; then
|
|
43
|
+
if [ "${XDD_ALLOW_CONFIG_EDIT:-}" = "1" ]; then
|
|
44
|
+
echo "[xdd:hook] WARN — editando config protegido: $FILE_PATH (XDD_ALLOW_CONFIG_EDIT=1)" >&2
|
|
45
|
+
exit 0
|
|
46
|
+
fi
|
|
47
|
+
echo "[xdd:hook] BLOCKED — modificación a config protegido: $FILE_PATH" >&2
|
|
48
|
+
echo "[xdd:hook] Steers: ¿podés arreglar el código en lugar de debilitar la config?" >&2
|
|
49
|
+
echo "[xdd:hook] Si es realmente necesario: export XDD_ALLOW_CONFIG_EDIT=1" >&2
|
|
50
|
+
exit 2
|
|
51
|
+
fi
|
|
52
|
+
done
|
|
53
|
+
|
|
54
|
+
exit 0
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Sprint 19 ADR-0023: pre-LLM-call budget check.
|
|
3
|
+
# Lee tokens estimados desde stdin o XDD_TOKENS_ESTIMATE env var.
|
|
4
|
+
# Invoca xdd-context check con budget de xdd.config.yml.
|
|
5
|
+
set -eu
|
|
6
|
+
|
|
7
|
+
TOKENS="${XDD_TOKENS_ESTIMATE:-}"
|
|
8
|
+
if [ -z "$TOKENS" ]; then
|
|
9
|
+
# Sin input → no-op (stub no bloquea)
|
|
10
|
+
exit 0
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
XDD_ROOT="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/../../.." && pwd)"
|
|
14
|
+
python3 "$XDD_ROOT/scripts/xdd-context.py" check --tokens="$TOKENS"
|
|
15
|
+
RC=$?
|
|
16
|
+
# rc=0 ok, rc=1 warning (no bloquea), rc=2 block
|
|
17
|
+
if [ "$RC" -eq 2 ]; then
|
|
18
|
+
echo "[hook] BLOCK: context budget exceeded" >&2
|
|
19
|
+
exit 2
|
|
20
|
+
fi
|
|
21
|
+
exit 0
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Sprint 21 ADR-0028: hook PreToolUse que invoca xdd-authz.
|
|
3
|
+
# Si exit 2 = deny → bloquea tool call.
|
|
4
|
+
# Si exit 1 = require_approval → orchestrator debería prompt humano.
|
|
5
|
+
set -eu
|
|
6
|
+
|
|
7
|
+
TOOL="${XDD_TOOL_NAME:-}"
|
|
8
|
+
ARGS_JSON="${XDD_TOOL_ARGS:-{}}"
|
|
9
|
+
if [ -z "$TOOL" ]; then
|
|
10
|
+
exit 0 # no info, no-op
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
XDD_ROOT="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/../../.." && pwd)"
|
|
14
|
+
python3 "$XDD_ROOT/scripts/xdd-authz.py" check --tool="$TOOL" --args="$ARGS_JSON"
|
|
15
|
+
RC=$?
|
|
16
|
+
case "$RC" in
|
|
17
|
+
0) exit 0 ;;
|
|
18
|
+
1) echo "[hook] require_approval: $TOOL" >&2; exit 1 ;;
|
|
19
|
+
2) echo "[hook] DENY: $TOOL blocked by authz policy" >&2; exit 2 ;;
|
|
20
|
+
*) exit 0 ;;
|
|
21
|
+
esac
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# pre:write:doc-file-warning — advierte sobre archivos .md fuera de paths estándar.
|
|
3
|
+
# Exit 0 siempre (solo warn).
|
|
4
|
+
set -eu
|
|
5
|
+
|
|
6
|
+
FILE_PATH=""
|
|
7
|
+
if [ -t 0 ]; then
|
|
8
|
+
FILE_PATH="${1:-}"
|
|
9
|
+
else
|
|
10
|
+
RAW=$(cat || true)
|
|
11
|
+
if command -v python3 >/dev/null 2>&1; then
|
|
12
|
+
FILE_PATH=$(echo "$RAW" | python3 -c "import json,sys; d=json.loads(sys.stdin.read() or '{}'); print((d.get('tool_input') or {}).get('file_path') or '')" 2>/dev/null || echo "")
|
|
13
|
+
fi
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
[ -z "$FILE_PATH" ] && exit 0
|
|
17
|
+
|
|
18
|
+
# Solo aplica a .md
|
|
19
|
+
case "$FILE_PATH" in
|
|
20
|
+
*.md|*.MD|*.Md) ;;
|
|
21
|
+
*) exit 0 ;;
|
|
22
|
+
esac
|
|
23
|
+
|
|
24
|
+
# Paths estándar permitidos sin warn
|
|
25
|
+
case "$FILE_PATH" in
|
|
26
|
+
*README.md|*CHANGELOG.md|*CONTRIBUTING.md|*CODE_OF_CONDUCT.md|*SECURITY.md|*LICENSE.md|*NOTICE.md|*CLAUDE.md|*AGENTS.md|*SOUL.md|*RULES.md|*MEMORY.md|*memoria.md|*lecciones.md|*MEJORAS-X-DD.md|*DEPENDENCIES.md|*PROJ-MASTER-PLAN.md|*WORKING-CONTEXT.md|*EVALUATION.md|*the-*-guide.md)
|
|
27
|
+
exit 0 ;;
|
|
28
|
+
docs/*|.xdd/*|.agent/*|prompts/*|templates/*|schemas/*|RELEASES/*|skills/*)
|
|
29
|
+
exit 0 ;;
|
|
30
|
+
*/docs/*|*/.xdd/*|*/.agent/*|*/prompts/*|*/templates/*|*/schemas/*|*/RELEASES/*|*/skills/*|*SKILL.md|*ADR-*.md|*adr/*.md)
|
|
31
|
+
exit 0 ;;
|
|
32
|
+
esac
|
|
33
|
+
|
|
34
|
+
echo "[xdd:hook] WARN — creando archivo .md fuera de paths estándar: $FILE_PATH" >&2
|
|
35
|
+
echo "[xdd:hook] Considerá: docs/, .xdd/, prompts/, templates/, skills/, o uno de los archivos raíz canónicos." >&2
|
|
36
|
+
exit 0
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# session-start:context-load — imprime el contexto vivo al iniciar sesión.
|
|
3
|
+
# Sprint 28 / ADR-0038: enforce lectura memoria + lecciones + WORKING-CONTEXT + doctor + gate.
|
|
4
|
+
# Lección retroactiva: en proyecto piloto multi-IDE el orquestador omitía leer lecciones,
|
|
5
|
+
# repitiendo errores conocidos. Ahora carga forzada y visible al inicio.
|
|
6
|
+
# Exit 0 siempre. El orquestador captura stdout como contexto del prompt.
|
|
7
|
+
set +e
|
|
8
|
+
|
|
9
|
+
if [ -f WORKING-CONTEXT.md ]; then
|
|
10
|
+
echo "=== Working Context (live) ==="
|
|
11
|
+
head -30 WORKING-CONTEXT.md
|
|
12
|
+
echo
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
if [ -f memoria.md ]; then
|
|
16
|
+
echo "=== Memoria — última sesión ==="
|
|
17
|
+
awk '/^### Sesión/{p=1} p' memoria.md | head -25
|
|
18
|
+
echo
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
# Sprint 28: carga lecciones recientes (last 5 entries) — previene repetición de errores
|
|
22
|
+
if [ -f lecciones.md ]; then
|
|
23
|
+
echo "=== Lecciones — últimas 5 entries (consultar ANTES de proponer arquitectura) ==="
|
|
24
|
+
awk '/^### \[/{count++; if (count>5) exit} count>=1' lecciones.md | head -80
|
|
25
|
+
echo
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
# Sprint 28: micro-doctor — verifica salud crítica del entorno (NO bloquea, solo reporta)
|
|
29
|
+
if [ -x ./scripts/xdd-doctor.sh ]; then
|
|
30
|
+
echo "=== Doctor (resumen) ==="
|
|
31
|
+
bash ./scripts/xdd-doctor.sh 2>/dev/null | tail -5
|
|
32
|
+
echo
|
|
33
|
+
fi
|
|
34
|
+
|
|
35
|
+
# Sprint 28: gate status — fase actual + estado
|
|
36
|
+
if [ -f ./scripts/xdd-gate.py ] && command -v python3 >/dev/null 2>&1; then
|
|
37
|
+
echo "=== Gate keeper (fase actual) ==="
|
|
38
|
+
python3 ./scripts/xdd-gate.py status 2>/dev/null | head -10
|
|
39
|
+
echo
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
# Cap a ~8000 chars total (similar a ECC_SESSION_START_MAX_CHARS)
|
|
43
|
+
exit 0
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# stop:git-check — advierte si hay cambios sin commitear al cerrar sesión.
|
|
3
|
+
# Exit 0 siempre (warn-only).
|
|
4
|
+
set +e
|
|
5
|
+
|
|
6
|
+
if [ ! -d .git ]; then
|
|
7
|
+
exit 0
|
|
8
|
+
fi
|
|
9
|
+
|
|
10
|
+
UNCOMMITTED=$(git status --porcelain 2>/dev/null | wc -l)
|
|
11
|
+
UNPUSHED=$(git log --branches --not --remotes --oneline 2>/dev/null | wc -l)
|
|
12
|
+
|
|
13
|
+
if [ "$UNCOMMITTED" -gt 0 ] || [ "$UNPUSHED" -gt 0 ]; then
|
|
14
|
+
echo "[xdd:hook] WARN — al cerrar sesión:" >&2
|
|
15
|
+
[ "$UNCOMMITTED" -gt 0 ] && echo "[xdd:hook] · $UNCOMMITTED archivos modificados sin commitear" >&2
|
|
16
|
+
[ "$UNPUSHED" -gt 0 ] && echo "[xdd:hook] · $UNPUSHED commits locales sin pushear" >&2
|
|
17
|
+
echo "[xdd:hook] Considerá ejecutar: git status / git push origin HEAD" >&2
|
|
18
|
+
fi
|
|
19
|
+
exit 0
|