docguard-cli 0.10.0__tar.gz → 0.11.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.
- {docguard_cli-0.10.0/extensions/spec-kit-docguard → docguard_cli-0.11.1/.agent}/skills/docguard-fix/SKILL.md +13 -3
- {docguard_cli-0.10.0/extensions/spec-kit-docguard → docguard_cli-0.11.1/.agent}/skills/docguard-guard/SKILL.md +2 -2
- {docguard_cli-0.10.0/extensions/spec-kit-docguard → docguard_cli-0.11.1/.agent}/skills/docguard-review/SKILL.md +2 -2
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.agent/skills/docguard-score/SKILL.md +2 -2
- docguard_cli-0.11.1/.agent/skills/docguard-sync/SKILL.md +111 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.github/workflows/ci.yml +4 -4
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.github/workflows/release.yml +8 -8
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.github/workflows/sync-speckit-catalog.yml +2 -2
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/AGENTS.md +1 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/CHANGELOG.md +91 -0
- docguard_cli-0.11.1/PHILOSOPHY.md +125 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/PKG-INFO +24 -2
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/README.md +23 -1
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/commands/diagnose.mjs +157 -52
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/commands/fix.mjs +113 -1
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/commands/generate.mjs +91 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/commands/hooks.mjs +40 -2
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/commands/score.mjs +22 -0
- docguard_cli-0.11.1/cli/commands/sync.mjs +123 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/docguard.mjs +22 -0
- docguard_cli-0.11.1/cli/scanners/cdk.mjs +10 -0
- docguard_cli-0.11.1/cli/scanners/frontend.mjs +438 -0
- docguard_cli-0.11.1/cli/scanners/iac.mjs +235 -0
- docguard_cli-0.11.1/cli/scanners/integrations.mjs +116 -0
- docguard_cli-0.11.1/cli/scanners/memory-plan.mjs +242 -0
- docguard_cli-0.11.1/cli/scanners/project-type.mjs +310 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/scanners/routes.mjs +149 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/scanners/schemas.mjs +174 -1
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/shared-ignore.mjs +29 -2
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/shared-source.mjs +2 -1
- docguard_cli-0.11.1/cli/validators/api-surface.mjs +254 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/validators/changelog.mjs +3 -2
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/validators/docs-coverage.mjs +125 -6
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/validators/docs-sync.mjs +49 -8
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/validators/metadata-sync.mjs +6 -1
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/validators/metrics-consistency.mjs +5 -2
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/validators/test-spec.mjs +129 -11
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/validators/todo-tracking.mjs +55 -2
- docguard_cli-0.11.1/cli/writers/api-reference.mjs +101 -0
- docguard_cli-0.11.1/cli/writers/mechanical.mjs +116 -0
- docguard_cli-0.11.1/cli/writers/sections.mjs +148 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/commands/docguard.fix.md +19 -3
- docguard_cli-0.11.1/docs/doc-sections.md +37 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/docs-canonical/ARCHITECTURE.md +10 -5
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/extensions/spec-kit-docguard/README.md +7 -4
- docguard_cli-0.11.1/extensions/spec-kit-docguard/commands/fix.md +74 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/extensions/spec-kit-docguard/commands/generate.md +25 -2
- docguard_cli-0.11.1/extensions/spec-kit-docguard/commands/sync.md +62 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/extensions/spec-kit-docguard/extension.yml +1 -1
- {docguard_cli-0.10.0/.agent → docguard_cli-0.11.1/extensions/spec-kit-docguard}/skills/docguard-fix/SKILL.md +13 -3
- {docguard_cli-0.10.0/.agent → docguard_cli-0.11.1/extensions/spec-kit-docguard}/skills/docguard-guard/SKILL.md +2 -2
- {docguard_cli-0.10.0/.agent → docguard_cli-0.11.1/extensions/spec-kit-docguard}/skills/docguard-review/SKILL.md +2 -2
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/extensions/spec-kit-docguard/skills/docguard-score/SKILL.md +2 -2
- docguard_cli-0.11.1/extensions/spec-kit-docguard/skills/docguard-sync/SKILL.md +111 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/package.json +1 -1
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/pyproject.toml +1 -1
- docguard_cli-0.11.1/specs/003-v011-false-positives/plan.md +140 -0
- docguard_cli-0.11.1/specs/003-v011-false-positives/spec.md +191 -0
- docguard_cli-0.11.1/specs/003-v011-false-positives/tasks.md +156 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/templates/ARCHITECTURE.md.template +52 -0
- docguard_cli-0.11.1/tests/api-write.test.mjs +128 -0
- docguard_cli-0.11.1/tests/cdk-detection.test.mjs +292 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/tests/changelog.test.mjs +4 -2
- docguard_cli-0.11.1/tests/docs-coverage.test.mjs +258 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/tests/docs-sync.test.mjs +116 -0
- docguard_cli-0.11.1/tests/frontend-deep.test.mjs +102 -0
- docguard_cli-0.11.1/tests/frontend.test.mjs +90 -0
- docguard_cli-0.11.1/tests/i18n.test.mjs +70 -0
- docguard_cli-0.11.1/tests/integrations.test.mjs +101 -0
- docguard_cli-0.11.1/tests/mechanical.test.mjs +59 -0
- docguard_cli-0.11.1/tests/memory-plan.test.mjs +97 -0
- docguard_cli-0.11.1/tests/multi-spec.test.mjs +79 -0
- docguard_cli-0.11.1/tests/project-type.test.mjs +104 -0
- docguard_cli-0.11.1/tests/routes-multilang.test.mjs +110 -0
- docguard_cli-0.11.1/tests/schemas-multilang.test.mjs +174 -0
- docguard_cli-0.11.1/tests/sections.test.mjs +116 -0
- docguard_cli-0.11.1/tests/sync.test.mjs +104 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/tests/test-spec.test.mjs +108 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/tests/todo-tracking.test.mjs +44 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/tests/traceability.test.mjs +15 -9
- docguard_cli-0.10.0/PHILOSOPHY.md +0 -172
- docguard_cli-0.10.0/cli/validators/api-surface.mjs +0 -179
- docguard_cli-0.10.0/tests/docs-coverage.test.mjs +0 -105
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.agent/commands/speckit.analyze.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.agent/commands/speckit.checklist.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.agent/commands/speckit.clarify.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.agent/commands/speckit.constitution.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.agent/commands/speckit.implement.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.agent/commands/speckit.plan.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.agent/commands/speckit.specify.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.agent/commands/speckit.tasks.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.agent/commands/speckit.taskstoissues.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.agent/skills/speckit-analyze/SKILL.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.agent/skills/speckit-checklist/SKILL.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.agent/skills/speckit-clarify/SKILL.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.agent/skills/speckit-constitution/SKILL.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.agent/skills/speckit-implement/SKILL.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.agent/skills/speckit-plan/SKILL.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.agent/skills/speckit-specify/SKILL.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.agent/skills/speckit-tasks/SKILL.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.agent/skills/speckit-taskstoissues/SKILL.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.docguard.json +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.docguardignore +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.github/dependabot.yml +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.github/scripts/patch-catalog.py +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.github/workflows/supply-chain.yml +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.gitignore +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.jules/bolt.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.jules/palette.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.jules/sentinel.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.npmignore +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.npmrc +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.specify/extensions/.cache/catalog-ebf165086500aab1-metadata.json +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.specify/extensions/.cache/catalog-ebf165086500aab1.json +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.specify/extensions/.cache/catalog-metadata.json +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.specify/extensions/.cache/catalog.json +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.specify/init-options.json +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.specify/memory/constitution.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.specify/scripts/bash/check-prerequisites.sh +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.specify/scripts/bash/common.sh +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.specify/scripts/bash/create-new-feature.sh +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.specify/scripts/bash/setup-plan.sh +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.specify/scripts/bash/update-agent-context.sh +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.specify/templates/agent-file-template.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.specify/templates/checklist-template.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.specify/templates/constitution-template.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.specify/templates/plan-template.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.specify/templates/spec-template.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/.specify/templates/tasks-template.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/CODE_OF_CONDUCT.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/COMPARISONS.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/CONTRIBUTING.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/DRIFT-LOG.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/LICENSE +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/ROADMAP.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/SECURITY.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/STANDARD.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/SUPPLY-CHAIN-AUDIT.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/SUPPORT.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/action.yml +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/commands/agents.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/commands/badge.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/commands/ci.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/commands/diff.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/commands/guard.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/commands/init.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/commands/llms.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/commands/publish.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/commands/setup.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/commands/trace.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/commands/watch.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/ensure-skills.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/scanners/api-doc.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/scanners/doc-tools.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/scanners/speckit.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/shared.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/validators/architecture.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/validators/doc-quality.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/validators/docs-diff.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/validators/drift.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/validators/environment.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/validators/freshness.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/validators/schema-sync.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/validators/security.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/validators/structure.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/cli/validators/traceability.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/commands/docguard.guard.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/commands/docguard.review.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/commands/docguard.score.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/configs/fastify.json +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/configs/generic.json +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/configs/nextjs.json +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/configs/python.json +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/docguard_cli/__init__.py +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/docguard_cli/wrapper.py +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/docs/ai-integration.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/docs/commands.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/docs/configuration.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/docs/faq.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/docs/installation.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/docs/profiles.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/docs/quickstart.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/docs-canonical/DATA-MODEL.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/docs-canonical/ENVIRONMENT.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/docs-canonical/SECURITY.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/docs-canonical/TEST-SPEC.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/examples/01-express-api/README.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/examples/01-express-api/package.json +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/examples/01-express-api/server.js +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/examples/02-python-flask/README.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/examples/02-python-flask/app.py +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/examples/02-python-flask/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/examples/02-python-flask/requirements.txt +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/examples/03-spec-kit-project/CHANGELOG.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/examples/03-spec-kit-project/README.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/examples/03-spec-kit-project/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/examples/03-spec-kit-project/docs-canonical/TEST-SPEC.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/examples/03-spec-kit-project/package.json +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/examples/03-spec-kit-project/src/index.js +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/examples/03-spec-kit-project/tests/basic.test.js +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/examples/README.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/extensions/spec-kit-docguard/LICENSE +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/extensions/spec-kit-docguard/commands/diagnose.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/extensions/spec-kit-docguard/commands/guard.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/extensions/spec-kit-docguard/commands/init.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/extensions/spec-kit-docguard/commands/score.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/extensions/spec-kit-docguard/commands/trace.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/extensions/spec-kit-docguard/scripts/bash/common.sh +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/extensions/spec-kit-docguard/scripts/bash/docguard-check-docs.sh +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/extensions/spec-kit-docguard/scripts/bash/docguard-init-doc.sh +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/extensions/spec-kit-docguard/scripts/bash/docguard-suggest-fix.sh +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/extensions/spec-kit-docguard/templates/extensions.yml +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/pr_description.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/specs/001-fix-ignore-validators/plan.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/specs/001-fix-ignore-validators/spec.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/specs/001-fix-ignore-validators/tasks.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/specs/002-fix-test-discovery/plan.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/specs/002-fix-test-discovery/spec.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/specs/002-fix-test-discovery/tasks.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/templates/ADR.md.template +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/templates/AGENTS.md.template +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/templates/CHANGELOG.md.template +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/templates/CURRENT-STATE.md.template +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/templates/DATA-MODEL.md.template +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/templates/DEPLOYMENT.md.template +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/templates/DRIFT-LOG.md.template +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/templates/ENVIRONMENT.md.template +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/templates/KNOWN-GOTCHAS.md.template +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/templates/REQUIREMENTS.md.template +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/templates/ROADMAP.md.template +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/templates/RUNBOOKS.md.template +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/templates/SECURITY.md.template +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/templates/TEST-SPEC.md.template +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/templates/TROUBLESHOOTING.md.template +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/templates/VENDOR-BUGS.md.template +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/templates/ci/github-actions.yml +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/templates/commands/docguard.fix.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/templates/commands/docguard.guard.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/templates/commands/docguard.init.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/templates/commands/docguard.review.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/templates/commands/docguard.update.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/test-draft.js +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/test-metrics.js +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/tests/api-doc.test.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/tests/api-surface.test.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/tests/architecture.test.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/tests/backup-failure.test.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/tests/commands.test.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/tests/doc-quality.test.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/tests/docs-diff.test.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/tests/drift.test.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/tests/environment.test.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/tests/freshness.test.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/tests/guard-classify.test.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/tests/hooks.test.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/tests/metadata-sync.test.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/tests/metrics-consistency.test.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/tests/monorepo-scanning.test.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/tests/schema-sync.test.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/tests/schemas.test.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/tests/security.test.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/tests/shared-source.test.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/tests/structure.test.mjs +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/vscode-extension/.vscodeignore +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/vscode-extension/README.md +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/vscode-extension/extension.js +0 -0
- {docguard_cli-0.10.0 → docguard_cli-0.11.1}/vscode-extension/package.json +0 -0
|
@@ -6,10 +6,10 @@ description: AI-driven documentation repair with structured research workflow, t
|
|
|
6
6
|
compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
|
|
7
7
|
metadata:
|
|
8
8
|
author: docguard
|
|
9
|
-
version: 0.
|
|
9
|
+
version: 0.11.1
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-fix
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.
|
|
12
|
+
<!-- docguard:version: 0.11.1 -->
|
|
13
13
|
|
|
14
14
|
# DocGuard Fix Skill
|
|
15
15
|
|
|
@@ -36,9 +36,19 @@ Research the actual codebase to generate or repair canonical documentation that
|
|
|
36
36
|
|
|
37
37
|
## Execution Flow
|
|
38
38
|
|
|
39
|
+
### Step 0: Apply Mechanical Fixes First (no AI needed)
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npx docguard-cli fix --write 2>&1
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Removes endpoints documented in `docs-canonical/API-REFERENCE.md` that the OpenAPI
|
|
46
|
+
spec confirms no longer exist (table row + detail block). Only edits
|
|
47
|
+
`docguard:generated` docs, idempotent, prints what changed. Don't hand-edit these.
|
|
48
|
+
|
|
39
49
|
### Step 1: Diagnose Current State
|
|
40
50
|
|
|
41
|
-
Run the diagnostic to identify all issues:
|
|
51
|
+
Run the diagnostic to identify all issues (each tagged `mechanical` or `agent`):
|
|
42
52
|
|
|
43
53
|
```bash
|
|
44
54
|
npx docguard-cli diagnose 2>&1
|
|
@@ -7,10 +7,10 @@ description: Run DocGuard guard validation against Canonical-Driven Development
|
|
|
7
7
|
compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
|
|
8
8
|
metadata:
|
|
9
9
|
author: docguard
|
|
10
|
-
version: 0.
|
|
10
|
+
version: 0.11.1
|
|
11
11
|
source: extensions/spec-kit-docguard/skills/docguard-guard
|
|
12
12
|
---
|
|
13
|
-
<!-- docguard:version: 0.
|
|
13
|
+
<!-- docguard:version: 0.11.1 -->
|
|
14
14
|
|
|
15
15
|
# DocGuard Guard Skill
|
|
16
16
|
|
|
@@ -6,10 +6,10 @@ description: Cross-document consistency analysis and quality assessment. Perform
|
|
|
6
6
|
compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
|
|
7
7
|
metadata:
|
|
8
8
|
author: docguard
|
|
9
|
-
version: 0.
|
|
9
|
+
version: 0.11.1
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-review
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.
|
|
12
|
+
<!-- docguard:version: 0.11.1 -->
|
|
13
13
|
|
|
14
14
|
# DocGuard Review Skill
|
|
15
15
|
|
|
@@ -6,10 +6,10 @@ description: CDD maturity assessment with category-aware improvement roadmap. Ru
|
|
|
6
6
|
compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
|
|
7
7
|
metadata:
|
|
8
8
|
author: docguard
|
|
9
|
-
version: 0.
|
|
9
|
+
version: 0.11.1
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-score
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.
|
|
12
|
+
<!-- docguard:version: 0.11.1 -->
|
|
13
13
|
|
|
14
14
|
# DocGuard Score Skill
|
|
15
15
|
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: docguard-sync
|
|
3
|
+
description: Keep canonical documentation ALWAYS UP TO DATE. Refreshes code-truth doc sections in place (mechanical, idempotent, preserves human prose) and flags the prose sections you must review when code changes.
|
|
4
|
+
compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
|
|
5
|
+
metadata:
|
|
6
|
+
author: docguard
|
|
7
|
+
version: 0.11.1
|
|
8
|
+
source: extensions/spec-kit-docguard/skills/docguard-sync
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# DocGuard Sync Skill
|
|
12
|
+
|
|
13
|
+
## User Input
|
|
14
|
+
|
|
15
|
+
```text
|
|
16
|
+
$ARGUMENTS
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
You **MUST** consider the user input. If `--since <ref>` is provided, include the
|
|
20
|
+
git diff context in your reasoning when reviewing prose sections.
|
|
21
|
+
|
|
22
|
+
## Goal
|
|
23
|
+
|
|
24
|
+
When code changes, re-derive the code-truth surface (endpoints, entities,
|
|
25
|
+
screens, tech stack, env vars), refresh the matching `<!-- docguard:section
|
|
26
|
+
source=code -->` blocks in canonical docs in place, and **review/refresh the
|
|
27
|
+
human-written prose** in the same docs so it still describes reality.
|
|
28
|
+
|
|
29
|
+
## Operating Constraints
|
|
30
|
+
|
|
31
|
+
- **Mechanical refreshes do not need you.** DocGuard does them itself. Your job
|
|
32
|
+
is the prose sections flagged as "review" — where the human writing may no
|
|
33
|
+
longer match the new code reality.
|
|
34
|
+
- **Never edit anything outside the marked `source=human` sections** in
|
|
35
|
+
generated docs. The markers protect human writing; respect them.
|
|
36
|
+
- **Use the dry run first** to see what will change before applying.
|
|
37
|
+
|
|
38
|
+
## Execution Flow
|
|
39
|
+
|
|
40
|
+
### Step 1 — Preview what's stale
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npx --yes docguard-cli@latest sync 2>&1
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Reads:
|
|
47
|
+
- `↻` / `•` lines: code-truth sections that drifted (you don't need to write these).
|
|
48
|
+
- `🤖 Prose to review` lines: human-written sections whose surrounding code changed — **these are yours**.
|
|
49
|
+
|
|
50
|
+
### Step 2 — Apply the mechanical refresh
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
npx --yes docguard-cli@latest sync --write 2>&1
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Re-derives every code-truth section from the current code and rewrites only those
|
|
57
|
+
markers. Idempotent — running again is a no-op when up to date.
|
|
58
|
+
|
|
59
|
+
### Step 3 — Review the flagged prose
|
|
60
|
+
|
|
61
|
+
For each `🤖 Prose to review` entry:
|
|
62
|
+
|
|
63
|
+
1. Open the doc (e.g. `docs-canonical/API-REFERENCE.md`).
|
|
64
|
+
2. Locate the `<!-- docguard:section id=<id> source=human -->` block.
|
|
65
|
+
3. **Read the surrounding `source=code` section first** — that's the new truth
|
|
66
|
+
(e.g. the refreshed endpoint list, the refreshed screens table).
|
|
67
|
+
4. Update the human prose so it still accurately describes that truth.
|
|
68
|
+
Examples of what to update:
|
|
69
|
+
- The API overview's endpoint count, or its description of the surface area.
|
|
70
|
+
- The Architecture overview when new components/services appeared.
|
|
71
|
+
- The Screens flows when new screens were added/removed/renamed.
|
|
72
|
+
5. Stay inside the `source=human` markers — don't touch the code sections.
|
|
73
|
+
|
|
74
|
+
### Step 4 — Verify
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
npx --yes docguard-cli@latest guard
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Confirm there are no errors. If the API surface drifted (`API-Surface` failures),
|
|
81
|
+
combine with `docguard fix --write` (the mechanical removal of stale endpoints).
|
|
82
|
+
|
|
83
|
+
### Step 5 — Loop
|
|
84
|
+
|
|
85
|
+
The intended flow is `sync → guard → (fix if needed) → guard → commit`. Run sync
|
|
86
|
+
again before opening a PR to make sure the memory is current.
|
|
87
|
+
|
|
88
|
+
## What to do if `--since <ref>` is provided
|
|
89
|
+
|
|
90
|
+
When `--since main` is given, DocGuard also lists the changed code files since
|
|
91
|
+
that ref. Use that diff to:
|
|
92
|
+
|
|
93
|
+
- Prioritize which prose sections to update first (the ones whose related code
|
|
94
|
+
files changed most).
|
|
95
|
+
- Cite concrete change reasons in your prose updates ("Added `/api/orders`
|
|
96
|
+
endpoint in commit X" → update the API overview accordingly).
|
|
97
|
+
|
|
98
|
+
## Common patterns
|
|
99
|
+
|
|
100
|
+
| Symptom | Action |
|
|
101
|
+
|---|---|
|
|
102
|
+
| `↻ docs-canonical/API-REFERENCE.md → endpoints` | Code-truth refreshed by `--write`. No action needed. |
|
|
103
|
+
| `🤖 docs-canonical/API-REFERENCE.md → overview` | Open the doc; update the `overview` prose to reflect the new endpoint set. |
|
|
104
|
+
| `Skipped … not marked docguard:generated` | The doc isn't owned by DocGuard. Either add the marker (and commit ownership) or skip with `--force`. |
|
|
105
|
+
| `Documentation memory is up to date` | Done — no drift. |
|
|
106
|
+
|
|
107
|
+
## Anti-patterns (do NOT do these)
|
|
108
|
+
|
|
109
|
+
- ❌ Editing inside `<!-- docguard:section source=code -->` — DocGuard will rewrite it on the next sync.
|
|
110
|
+
- ❌ Removing the markers to "make the doc look cleaner" — that breaks future sync/regeneration.
|
|
111
|
+
- ❌ Skipping `sync --write` and editing the code section by hand — let DocGuard do it.
|
|
@@ -14,11 +14,11 @@ jobs:
|
|
|
14
14
|
node-version: [18, 20, 22]
|
|
15
15
|
|
|
16
16
|
steps:
|
|
17
|
-
- uses: actions/checkout@
|
|
17
|
+
- uses: actions/checkout@v5
|
|
18
18
|
with:
|
|
19
19
|
fetch-depth: 0 # Full git history for freshness validator
|
|
20
20
|
|
|
21
|
-
- uses: actions/setup-node@
|
|
21
|
+
- uses: actions/setup-node@v5
|
|
22
22
|
with:
|
|
23
23
|
node-version: ${{ matrix.node-version }}
|
|
24
24
|
|
|
@@ -80,8 +80,8 @@ jobs:
|
|
|
80
80
|
if: startsWith(github.ref, 'refs/tags/v')
|
|
81
81
|
needs: test
|
|
82
82
|
steps:
|
|
83
|
-
- uses: actions/checkout@
|
|
84
|
-
- uses: actions/setup-node@
|
|
83
|
+
- uses: actions/checkout@v5
|
|
84
|
+
- uses: actions/setup-node@v5
|
|
85
85
|
with:
|
|
86
86
|
node-version: 20
|
|
87
87
|
registry-url: 'https://registry.npmjs.org'
|
|
@@ -19,7 +19,7 @@ jobs:
|
|
|
19
19
|
version: ${{ steps.check.outputs.version }}
|
|
20
20
|
changed: ${{ steps.check.outputs.changed }}
|
|
21
21
|
steps:
|
|
22
|
-
- uses: actions/checkout@
|
|
22
|
+
- uses: actions/checkout@v5
|
|
23
23
|
with:
|
|
24
24
|
fetch-depth: 2 # Need previous commit to compare
|
|
25
25
|
|
|
@@ -49,10 +49,10 @@ jobs:
|
|
|
49
49
|
matrix:
|
|
50
50
|
node-version: [18, 20, 22]
|
|
51
51
|
steps:
|
|
52
|
-
- uses: actions/checkout@
|
|
52
|
+
- uses: actions/checkout@v5
|
|
53
53
|
with:
|
|
54
54
|
fetch-depth: 0
|
|
55
|
-
- uses: actions/setup-node@
|
|
55
|
+
- uses: actions/setup-node@v5
|
|
56
56
|
with:
|
|
57
57
|
node-version: ${{ matrix.node-version }}
|
|
58
58
|
- name: Run Tests
|
|
@@ -68,7 +68,7 @@ jobs:
|
|
|
68
68
|
outputs:
|
|
69
69
|
tag: v${{ needs.detect-version.outputs.version }}
|
|
70
70
|
steps:
|
|
71
|
-
- uses: actions/checkout@
|
|
71
|
+
- uses: actions/checkout@v5
|
|
72
72
|
with:
|
|
73
73
|
fetch-depth: 0 # Fetch all history + tags for reliable tag detection
|
|
74
74
|
|
|
@@ -125,7 +125,7 @@ jobs:
|
|
|
125
125
|
needs: [detect-version, create-release]
|
|
126
126
|
runs-on: ubuntu-latest
|
|
127
127
|
steps:
|
|
128
|
-
- uses: actions/checkout@
|
|
128
|
+
- uses: actions/checkout@v5
|
|
129
129
|
|
|
130
130
|
- name: Build extension ZIP
|
|
131
131
|
run: |
|
|
@@ -150,8 +150,8 @@ jobs:
|
|
|
150
150
|
needs: [detect-version, test, create-release]
|
|
151
151
|
runs-on: ubuntu-latest
|
|
152
152
|
steps:
|
|
153
|
-
- uses: actions/checkout@
|
|
154
|
-
- uses: actions/setup-node@
|
|
153
|
+
- uses: actions/checkout@v5
|
|
154
|
+
- uses: actions/setup-node@v5
|
|
155
155
|
with:
|
|
156
156
|
node-version: 20
|
|
157
157
|
registry-url: 'https://registry.npmjs.org'
|
|
@@ -166,7 +166,7 @@ jobs:
|
|
|
166
166
|
needs: [detect-version, test, create-release]
|
|
167
167
|
runs-on: ubuntu-latest
|
|
168
168
|
steps:
|
|
169
|
-
- uses: actions/checkout@
|
|
169
|
+
- uses: actions/checkout@v5
|
|
170
170
|
- uses: actions/setup-python@v5
|
|
171
171
|
with:
|
|
172
172
|
python-version: '3.12'
|
|
@@ -24,7 +24,7 @@ jobs:
|
|
|
24
24
|
|
|
25
25
|
steps:
|
|
26
26
|
- name: Checkout docguard repo
|
|
27
|
-
uses: actions/checkout@
|
|
27
|
+
uses: actions/checkout@v5
|
|
28
28
|
|
|
29
29
|
- name: Get version and metadata
|
|
30
30
|
id: meta
|
|
@@ -71,7 +71,7 @@ jobs:
|
|
|
71
71
|
echo "✅ Fork synced with upstream"
|
|
72
72
|
|
|
73
73
|
- name: Checkout spec-kit fork (fresh after sync)
|
|
74
|
-
uses: actions/checkout@
|
|
74
|
+
uses: actions/checkout@v5
|
|
75
75
|
with:
|
|
76
76
|
repository: raccioly/spec-kit
|
|
77
77
|
token: ${{ secrets.SPECKIT_PR_TOKEN }}
|
|
@@ -96,6 +96,7 @@ extensions/spec-kit-docguard/
|
|
|
96
96
|
|
|
97
97
|
## Rules
|
|
98
98
|
|
|
99
|
+
- **PR-first workflow — no direct-to-main commits.** Create a branch (`git checkout -b <type>/<slug>`), push, `gh pr create`, let CI run, self-review, squash-merge. Tag releases only after merge on `main`. The only acceptable direct-to-main: typo fixes in comments or README badge URLs.
|
|
99
100
|
- Never commit without updating CHANGELOG.md
|
|
100
101
|
- If code deviates from docs, add `// DRIFT: reason`
|
|
101
102
|
- Security rules in SECURITY.md are mandatory
|
|
@@ -7,6 +7,97 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.11.1] - 2026-05-25
|
|
11
|
+
|
|
12
|
+
Patch release addressing false positives surfaced by the v0.11.0 audit of the `wu-whatsappinbox` enterprise monorepo, generalized into a multi-tool IaC detector, plus several DocGuard self-audit improvements. Spec: `specs/003-v011-false-positives/`.
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
- **Docs-Sync no longer misclassifies frontend API clients as backend routes.** Dropped the ambiguous bare `'api'` from the route-directory convention list. `src/api/client.ts` (frontend axios) and similar are no longer scanned as Express/Next.js routes (FP-1). For Next.js App Router (`src/app/api`, `app/api`), only files matching the strict `route.{ts,tsx,js,jsx,mjs}` filename convention are counted — helper files in the same tree are skipped (FR-001, FR-002).
|
|
16
|
+
- **Test files are no longer flagged as undocumented services or routes.** The docs-sync route and service loops now skip paths under `__tests__/` and filenames matching `*.{test,spec}.{ts,tsx,js,jsx,mjs,py,java,go}` (FP-2, FR-003, FR-004). Eliminates ~7 spurious warnings per monorepo with co-located tests.
|
|
17
|
+
- **Build outputs no longer flagged as undocumented source.** Added `cdk.out`, `out`, `.nuxt`, `.claude` to the docs-coverage `IGNORE_DIRS` set (FP-3, FR-005).
|
|
18
|
+
- **`config.ignore` is now honored by Docs-Coverage's source-directory scan** (FP-3, FR-006 / IR-5). Closes a long-standing inconsistency where other validators respected the user's ignore but the source-dir scan did not. Patterns like `**/cdk.out/**` now match the directory itself as well as files inside it.
|
|
19
|
+
- **Worktree copies no longer double-counted.** `globMatch` in `cli/shared-ignore.mjs` now rejects paths under `.claude/worktrees/`, `.git/worktrees/`, and `.jj/` at any depth — same treatment as `node_modules` (FP-4, FR-007). Affects every Claude-Code project using parallel-agent worktrees.
|
|
20
|
+
- **Check 1 (config files) no longer flags build-cache dotdirs as undocumented configs.** Now skips directories — `.nuxt`, `.claude`, etc. are excluded by `IGNORE_DIRS` for the source-dir scan instead.
|
|
21
|
+
- **Check 1 (config files) now honors `config.ignore` too.** Originally fixed only for the source-directory scan; a follow-up audit reproduced the same FP-3 class with `.local` in `ignore` still being flagged. Both Docs-Coverage scans now call `shouldIgnore(entry, config) || shouldIgnore(entry + '/', config)`. Closes FR-015 (audit-confirmed gap).
|
|
22
|
+
- **Test-Spec validator parses multi-path Journey rows correctly.** Previously a Journey cell like `` `path/a.test.ts`, `path/b.test.ts` `` was stripped of all backticks then `existsSync()`d as one string — a 100% false-positive rate on multi-path rows. Now: split on commas outside backticks, strip backticks per segment, evaluate each independently. Row passes if ANY referenced file has evidence. Glob entries (`foo_*.test.ts`) are expanded; `(N suites)` / `(N tests)` annotations are accepted as the author's explicit coverage claim. Closes FP-6 and FR-016.
|
|
23
|
+
- **TODO-Tracking validator no longer false-positives on its own keyword list.** Previously the regex matched `TEMP(?!late|orar)` inside its own source. Two-part fix: (1) match restricted to text following a comment marker (`//`, `#`, `/*`, `<!--`, block `*`), (2) the validator skips its own source file (`cli/validators/todo-tracking.mjs`) since the docstring legitimately names the keywords.
|
|
24
|
+
- **TODO-Tracking validator no longer false-positives on test fixture strings.** Test files commonly contain `// TODO:` inside template literals (`writeFileSync(..., '// TODO:')`) that single-line heuristics can't distinguish from real comments. Test files are now skipped by default; opt back in with `config.todoTracking.includeTestFiles = true`.
|
|
25
|
+
- **Traceability validator's own fixtures no longer leak as orphan refs.** `tests/traceability.test.mjs` previously contained literal `REQ-001`/`REQ-002`/`REQ-003` strings that the validator scanned and reported as orphaned test references. Fixtures now build the IDs from parts so the validator's pattern doesn't match.
|
|
26
|
+
|
|
27
|
+
### Added
|
|
28
|
+
- **Multi-tool IaC detector + consolidated documentation reminder.** New `cli/scanners/iac.mjs` identifies projects shipping any of: **AWS CDK** (`cdk.json`), **Terraform** (`*.tf` files), **Pulumi** (`Pulumi.yaml`), **AWS SAM** (`template.yaml` with `AWS::Serverless::`), and **Serverless Framework** (`serverless.yml`). When an IaC project's ARCHITECTURE.md has no Infrastructure heading, DocGuard emits ONE actionable warning per detected tool naming the marker file location and the expected source layout — instead of multiple generic per-directory warnings (FR-009, FR-010, FR-011). The generic per-dir warnings inside IaC packages (`bin/`, `lib/`, `modules/`, `stacks/`, `constructs/`, `handlers/`, etc.) are suppressed in favor of these consolidated messages. The legacy `cli/scanners/cdk.mjs` is preserved as a thin re-export for backward compatibility.
|
|
29
|
+
- **`## Infrastructure (IaC)` section in `templates/ARCHITECTURE.md.template`.** New projects initialized via `docguard init` start with placeholder tables for AWS CDK, Terraform, and Pulumi/SAM/Serverless layouts plus a Deployment Pipeline subsection (FR-012). Explicitly skippable for non-IaC projects via a header comment.
|
|
30
|
+
- **`DEFAULT_IGNORE_DIRS`** exported from `cli/shared-ignore.mjs` — canonical shared ignore set covering build outputs (`dist`, `build`, `out`, `cdk.out`, `target`, `.gradle`), VCS internals (`.git`, `.jj`, `.hg`, `.svn`), package caches (`node_modules`, `vendor`, `.venv`, `__pycache__`), and framework synth outputs (`.next`, `.nuxt`, `.turbo`, `.vercel`, `.cache`, `.svelte-kit`) (FR-008). Added `target` (Rust/Java), `.gradle`, and `.svelte-kit` per the updated wu-whatsappinbox audit. Available for any future validator to import; existing per-validator `IGNORE_DIRS` sets are left in place (deferred migration).
|
|
31
|
+
|
|
32
|
+
### Changed
|
|
33
|
+
- **DocGuard package version bumped to 0.11.1** across `package.json` and all `extensions/spec-kit-docguard/` files (extension.yml + 5 SKILL.md files were referencing stale `v0.9.9`/`v0.10.0`).
|
|
34
|
+
- **`docs-canonical/ARCHITECTURE.md`** updated to add `cli/writers/` and `cli/shared-*.mjs` to the Component Map and Layer Boundaries — closes a real doc gap surfaced by dogfooding (the writers/ directory has shipped for several releases without being documented).
|
|
35
|
+
- **`specs/003-v011-false-positives/plan.md`** restructured to match the spec-kit `plan-template.md` shape (added Summary, Technical Context, Constitution Check, Project Structure sections). `tasks.md` rewritten with the spec-kit phased T### convention.
|
|
36
|
+
|
|
37
|
+
### Internal
|
|
38
|
+
- New test files: `tests/cdk-detection.test.mjs` (CDK + multi-tool IaC detector tests + `globMatch` worktree rejection + `DEFAULT_IGNORE_DIRS` shape). Existing test suites extended with regression cases for FP-1..FP-5, TODO-tracking false-positive guards, and IaC-tool detection across Terraform/Pulumi/SAM/Serverless. New tests are annotated with `// @req FR-NNN` / `// @req SC-NNN` comments for traceability. **Total: 329 tests passing (was 306, +23 new).**
|
|
39
|
+
- **DocGuard self-audit improvements**: ran `docguard guard` on the repo as part of this release. Warnings dropped from **57 → 15** across the session by fixing real drift (stale extension versions, missing `cli/writers/` mention, traceability gaps) and reducing self-referential false positives (TODO validator scanning its own keyword list).
|
|
40
|
+
- **Round 2 fixes after a second audit report**: FP-3 part B (`checkConfigFiles` honoring `config.ignore`), FP-6 (Test-Spec multi-path Journey row parsing with glob and `(N suites)` annotation support), additional `DEFAULT_IGNORE_DIRS` entries for Rust/Java/SvelteKit. **Total tests passing: 336** (was 306).
|
|
41
|
+
- No new NPM dependencies. Zero schema or config-file changes.
|
|
42
|
+
|
|
43
|
+
### Out of scope (deferred to v0.12)
|
|
44
|
+
- Feature requests IR-1..IR-4, IR-6..IR-8 (per-validator severity, `--diff-only`, draft-staleness warning, `sync --section`, `.docguardignore` template at init, extended Next.js detection, `routesGlob`/`servicesGlob` overrides). IR-5 (honor ignore in source-dir scan) shipped as part of this release alongside FP-3.
|
|
45
|
+
- Migrating all 17 modules that define their own `IGNORE_DIRS` constant to import `DEFAULT_IGNORE_DIRS` — mechanical, large diff, tracked separately.
|
|
46
|
+
- Multi-line string-literal detection in TODO-Tracking — current heuristic still false-positives on `// TODO:` inside multi-line template literals. Workaround: keep test files out of TODO scanning (now default) or use `config.todoIgnore` globs.
|
|
47
|
+
|
|
48
|
+
Credit: feedback from running v0.11.0 on the `wu-whatsappinbox` enterprise monorepo (audit score 98/100, 40 warnings).
|
|
49
|
+
|
|
50
|
+
## [0.11.0] - 2026-05-22
|
|
51
|
+
|
|
52
|
+
This release reshapes DocGuard from a documentation linter into an **AI-readable, always-current project memory builder** — for any language project, not just JS/web. The four-mode lifecycle (`generate → guard → sync → fix`) is now coherent end-to-end.
|
|
53
|
+
|
|
54
|
+
### Added — AI-powered Generate
|
|
55
|
+
- **`docguard generate --plan`** — the "killer feature" from the v2 vision, now real. Scans any project (JS/TS, Python, Rust, Go, Java/Kotlin, Ruby, PHP, C#; polyglot/monorepo-aware) and emits a **structured agent task manifest** + writes the code-truth skeleton inside `<!-- docguard:section -->` markers. The AI agent writes the prose grounded in scanned facts; human writing is preserved.
|
|
56
|
+
- **`--plan --format json`** machine-readable manifest for agent consumption.
|
|
57
|
+
- **`--plan --write`** scaffolds the skeleton docs (code sections filled, prose sections as agent-task placeholders).
|
|
58
|
+
- Language-aware doc set: a Rust CLI gets ARCHITECTURE; a webapp gets ARCHITECTURE + API-REFERENCE + SCREENS + FEATURES + INTEGRATIONS + ENVIRONMENT + docs-implementation/{KNOWN-GOTCHAS,CURRENT-STATE,RUNBOOKS}.
|
|
59
|
+
|
|
60
|
+
### Added — Always-up-to-date Sync
|
|
61
|
+
- **`docguard sync`** — refreshes `source=code` doc sections in place when code changes. Mechanical, idempotent, **preserves human prose**. Flags the prose sections to review when their adjacent code changed.
|
|
62
|
+
- `--since <ref>` adds git-diff context. `--write` applies; default is a dry-run preview. `--force` overrides the `docguard:generated` marker gate.
|
|
63
|
+
|
|
64
|
+
### Added — Section-addressable docs
|
|
65
|
+
- **`cli/writers/sections.mjs`** — marker format `<!-- docguard:section id=X source=code|human -->`. `parseSections` / `replaceSection` / `upsertSection` for surgical regen that never clobbers human prose. The keystone the rest of the program builds on.
|
|
66
|
+
|
|
67
|
+
### Added — Language-agnostic project intelligence
|
|
68
|
+
- **`cli/scanners/project-type.mjs`** detects every ecosystem from manifests: `package.json`, `pyproject.toml`/`requirements.txt`/`setup.py`/`Pipfile`, `Cargo.toml`, `go.mod`, `pom.xml`/`build.gradle`, `Gemfile`, `composer.json`, `*.csproj`. Polyglot-aware: returns each ecosystem's language, framework, kind, deps, entry points.
|
|
69
|
+
- **Multi-language route scanners** in `routes.mjs`: Spring Boot (Java/Kotlin, class-level base + verb annotations), Rails (verb DSL + `resources` 7-action expansion), Go (Gin/Echo/Chi/Fiber/mux), Rust (Axum, Actix, Rocket).
|
|
70
|
+
- **Multi-language schema/model scanners** in `schemas.mjs`: Python (SQLAlchemy + relationships + Pydantic/SQLModel), Rust Diesel `table!`, Go structs with `json`/`gorm`/`db` tags, Java/Kotlin JPA `@Entity`, Rails ActiveRecord `create_table` migrations.
|
|
71
|
+
|
|
72
|
+
### Added — Deep frontend capture
|
|
73
|
+
- **`cli/scanners/frontend.mjs`** captures the UI surface: screens/routes (React Router, Next App + Pages with wrapper-unwrapping), components, **state stores** (Zustand/Redux Toolkit/Jotai/MobX), **custom hooks** (incl. `export { X as useY }` aliases), **React Contexts**, **API-client→endpoint mapping** (axios/fetch/custom client), and **i18n keys** (used vs. defined in locale files, with missing-keys reported as drift).
|
|
74
|
+
|
|
75
|
+
### Added — External integrations
|
|
76
|
+
- **`cli/scanners/integrations.mjs`** — 30+ SDK registry covering Cloud (AWS, GCP, Azure, Cloudflare), Databases, Payments (Stripe/Braintree), Auth (Auth0/Clerk/NextAuth/Cognito), AI (OpenAI/Anthropic/LangChain), Messaging (Twilio/SendGrid/Slack/MessageBird), Observability (Sentry/Datadog/OpenTelemetry), Search, Queues, Storage. Surfaces as `INTEGRATIONS.md` in the memory plan.
|
|
77
|
+
|
|
78
|
+
### Added — Mechanical fix registry
|
|
79
|
+
- **`cli/writers/mechanical.mjs`** generalizes `docguard fix --write` into a deterministic, no-LLM applier covering: `remove-endpoint` (API-Surface), `replace-count` (Metrics-Consistency stale "N validators"), `replace-version` (Metadata-Sync stale refs — only in actionable contexts, never prose), `insert-changelog-unreleased`.
|
|
80
|
+
- Validators emit structured `fixes[]` arrays surfaced through `guard --format json`, `diagnose --format json`, and applied by `fix --write` / `diagnose --auto`. The 9 previously detect-only validators now have real `FIX_INSTRUCTIONS` routes (no more generic "Manual review needed").
|
|
81
|
+
|
|
82
|
+
### Added — Spec Kit extension parity
|
|
83
|
+
- New extension commands: `extensions/spec-kit-docguard/commands/fix.md`, `commands/sync.md`. `generate.md` updated to document `--plan`.
|
|
84
|
+
- New skill: `extensions/spec-kit-docguard/skills/docguard-sync/SKILL.md` — teaches the agent the refresh-and-review-prose loop. Extension README modernized to the memory-first vocabulary.
|
|
85
|
+
|
|
86
|
+
### Changed
|
|
87
|
+
- **PHILOSOPHY.md rewritten** from v1 governance-first ("not machine-generated") to the v2 memory-first reality (generate + guard + sync, bidirectional, language-agnostic). Honest about what the tool actually does.
|
|
88
|
+
- **`docguard score`** displays **`Memory: Completeness X% · Accuracy Y%`** derived from the existing category scores; `--format json` adds `memory.{completeness, accuracy}` and per-category `axis` field. No weight changes.
|
|
89
|
+
- CLI `--help` reframed around the memory lifecycle (audit/generate/guard/sync).
|
|
90
|
+
|
|
91
|
+
### Fixed
|
|
92
|
+
- Tightened a self-inflicted false positive (a literal `TODO` in a generate.mjs placeholder string was tripping DocGuard's own TODO-Tracking validator).
|
|
93
|
+
- Fixed several scanner bugs caught by new tests: React Router wrapper-component unwrapping (`<RequireAuth><XPage/>`), Next.js base-path double-append, Go single-line struct regex, Spring Boot `@RequestMapping` class-level vs method-level disambiguation, locale-dir deduplication.
|
|
94
|
+
|
|
95
|
+
### Infrastructure
|
|
96
|
+
- CI: bumped `actions/checkout` and `actions/setup-node` to `@v5` across all four workflows (ahead of the June 2026 Node 24 default).
|
|
97
|
+
|
|
98
|
+
### Tests
|
|
99
|
+
- **Tests: 175 → 285 (+110)**. New test files: `api-doc`, `api-surface`, `shared-source`, `guard-classify`, `monorepo-scanning`, `sections`, `frontend`, `frontend-deep`, `i18n`, `project-type`, `memory-plan`, `integrations`, `routes-multilang`, `schemas-multilang`, `mechanical`, `api-write`, `multi-spec`, `sync`. All green.
|
|
100
|
+
|
|
10
101
|
## [0.10.0] - 2026-05-22
|
|
11
102
|
|
|
12
103
|
### Added
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# The Philosophy of Canonical-Driven Development
|
|
2
|
+
|
|
3
|
+
> Why every codebase needs a living, machine-readable memory — and how DocGuard builds and maintains one.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## The Problem We're Solving
|
|
8
|
+
|
|
9
|
+
In 2026, AI coding agents can write thousands of lines of code in minutes. But they have a fatal flaw: **they don't remember.**
|
|
10
|
+
|
|
11
|
+
Every new session, every new agent, every new conversation starts from zero. The agent re-reads your code, re-derives how the system works, makes assumptions, and builds on them. Humans hit the same wall: a new contributor faces 500 files and a 50-line README.
|
|
12
|
+
|
|
13
|
+
This is the **comprehension crisis of the AI era:**
|
|
14
|
+
|
|
15
|
+
> The faster AI writes code, the faster everyone loses the map of what was built.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## The Insight
|
|
20
|
+
|
|
21
|
+
A project needs a **canonical memory** — a complete, structured, always-current description of what the system *is*: every endpoint, screen, entity, the architecture, the tech stack, the setup. Written so an AI agent (or a human) can load it in seconds and understand the whole project without re-reading the code.
|
|
22
|
+
|
|
23
|
+
DocGuard's job is to **build that memory from the code, keep it true as the code changes, and protect the human reasoning inside it.**
|
|
24
|
+
|
|
25
|
+
> **Canonical** (adj.): accepted as accurate and authoritative; the standard form.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## The Three Pillars of CDD
|
|
30
|
+
|
|
31
|
+
### Pillar 1: Documentation is a first-class, validated artifact
|
|
32
|
+
|
|
33
|
+
In traditional development, docs are an afterthought — written late (if at all), never updated, quickly stale. CDD makes documentation a **required, validated, and maintained** artifact, on the same footing as tests. If it isn't validated on every change, it rots; so DocGuard validates it.
|
|
34
|
+
|
|
35
|
+
### Pillar 2: Two tiers — derived truth and human reasoning
|
|
36
|
+
|
|
37
|
+
CDD separates documentation into two kinds of content, and treats them differently:
|
|
38
|
+
|
|
39
|
+
- **Code-derived** (endpoints, entities, screens, tech stack, env vars): DocGuard generates and re-generates these *from the code*. They are mechanical, and DocGuard owns them.
|
|
40
|
+
- **Human reasoning** (the "why", design intent, trade-offs, gotchas): authored by people (or an AI agent), and **never overwritten** by the tool.
|
|
41
|
+
|
|
42
|
+
DocGuard keeps these in the same readable markdown using section markers
|
|
43
|
+
(`<!-- docguard:section id=… source=code -->`), so it can refresh the derived
|
|
44
|
+
parts surgically while leaving your writing untouched.
|
|
45
|
+
|
|
46
|
+
### Pillar 3: Generate AND Guard — bidirectional, continuous
|
|
47
|
+
|
|
48
|
+
Earlier versions of this document framed CDD as "validate code against docs, never generate docs from code." Experience proved that too narrow. The tool people actually want does **both directions, continuously:**
|
|
49
|
+
|
|
50
|
+
| Direction | Mode | What it does |
|
|
51
|
+
|-----------|------|--------------|
|
|
52
|
+
| code → docs | **Generate** | Reverse-engineer a complete canonical memory from any codebase. DocGuard scans and builds the code-truth skeleton; an AI agent writes the prose. |
|
|
53
|
+
| code ↔ docs | **Sync** | When code changes, refresh the affected doc sections automatically — mechanical where deterministic, agent-assisted for prose. |
|
|
54
|
+
| docs ↔ code | **Guard** | Validate that the memory still matches reality. Catch documented-but-deleted endpoints, undocumented routes, missing tests, unlogged drift. |
|
|
55
|
+
|
|
56
|
+
The CLI orchestrates (scan, structure, verify); the AI agent does the language-specific writing. Together they keep the memory both **complete** and **accurate**.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Complete + Accurate = Trustworthy
|
|
61
|
+
|
|
62
|
+
A memory is only useful if you can trust it. DocGuard measures two things:
|
|
63
|
+
|
|
64
|
+
- **Completeness** — is the map whole? (No missing chapters: architecture, data model, API surface, screens, environment.)
|
|
65
|
+
- **Accuracy** — does the map match the territory? (The documented endpoints exist; the documented env vars are used; the schemas match the models.)
|
|
66
|
+
|
|
67
|
+
A document can be beautifully formatted and completely wrong. DocGuard's validators that compare docs against **code truth** are what make a green check mean something — and when a check has nothing to validate, it says so honestly instead of showing a misleading pass.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Any language, any project
|
|
72
|
+
|
|
73
|
+
DocGuard documents **any** project, not just web/JS. It detects the ecosystem
|
|
74
|
+
(JavaScript/TypeScript, Python, Rust, Go, Java/Kotlin, Ruby, PHP, C#) and any
|
|
75
|
+
polyglot/monorepo mix, then builds a memory shaped for that project: a Rust CLI
|
|
76
|
+
gets a Rust-shaped doc set; a Django app a Django-shaped one; a React app gets
|
|
77
|
+
its screens and components.
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Why Now?
|
|
82
|
+
|
|
83
|
+
1. **AI agents are primary developers.** They need structured context to work well. A canonical memory is the highest-leverage context you can give them.
|
|
84
|
+
2. **Multi-agent development is real.** Claude Code, Copilot, Cursor, and humans touch the same repo in the same week. They need one shared, current source of truth.
|
|
85
|
+
3. **Code volume is exploding; comprehension isn't keeping up.** AI makes adding code trivial. DocGuard makes *understanding* it trivial — and keeps that understanding current.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## The Lifecycle
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
generate ──▶ guard ──▶ sync ──▶ guard ──▶ …
|
|
93
|
+
(build) (verify) (keep (verify)
|
|
94
|
+
current)
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
- **Day 1:** `docguard generate --plan` → a complete first-draft memory of your repo (agent fills the prose).
|
|
98
|
+
- **Every change:** `docguard sync` refreshes the derived sections; `docguard guard` verifies; the agent updates prose where flagged.
|
|
99
|
+
- **Forever:** the memory stays complete and true. Any agent or human can understand your project in seconds.
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## CDD and Other Methodologies
|
|
104
|
+
|
|
105
|
+
- **+ Spec Kit (SDD):** Spec Kit generates code from specs (the build phase); DocGuard maintains the living memory and governance afterward. DocGuard ships as a Spec Kit extension.
|
|
106
|
+
- **+ TDD/BDD:** `TEST-SPEC.md` declares what must be tested; DocGuard verifies the tests exist; TDD/BDD drive their implementation.
|
|
107
|
+
- **+ Agile:** the memory grows sprint by sprint alongside the code. A 30-line `ARCHITECTURE.md` that is complete, current, and validated beats a 300-page document that's stale.
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Academic Foundations
|
|
112
|
+
|
|
113
|
+
CDD is a practitioner methodology whose patterns align with peer-reviewed research:
|
|
114
|
+
|
|
115
|
+
- **Generate → validate → evaluate pipeline** — inspired by the AITPG framework (Lopez et al., IEEE TSE 2026): multi-agent generation grounded in standards produces more comprehensive documentation while staying semantically aligned with expert references.
|
|
116
|
+
- **Calibrated quality evaluation** — DocGuard's HIGH/MEDIUM/LOW labels and multi-signal scoring adapt the CJE framework from TRACE (Lopez et al., IEEE TMLCN 2026).
|
|
117
|
+
- **Standards-grounded generation** — each canonical document maps to a relevant standard (arc42, C4, OWASP ASVS, ISO 29119, OpenAPI, 12-Factor App).
|
|
118
|
+
|
|
119
|
+
> **Lead researcher**: [Martin Manuel Lopez](https://github.com/martinmanuel9) · [ORCID 0009-0002-7652-2385](https://orcid.org/0009-0002-7652-2385), University of Arizona
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## License
|
|
124
|
+
|
|
125
|
+
This philosophy document and the CDD methodology are released under the [MIT License](https://opensource.org/licenses/MIT). CDD is an open methodology — anyone can adopt, adapt, and contribute.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: docguard-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.11.1
|
|
4
4
|
Summary: The enforcement tool for Canonical-Driven Development (CDD). Audit, generate, and guard your project documentation. Zero dependencies.
|
|
5
5
|
Project-URL: Homepage, https://github.com/raccioly/docguard
|
|
6
6
|
Project-URL: Documentation, https://github.com/raccioly/docguard#readme
|
|
@@ -154,7 +154,28 @@ diagnose → AI reads prompts → AI fixes docs → guard verifies
|
|
|
154
154
|
└───────────────── issues found? ←──────────────────────┘
|
|
155
155
|
```
|
|
156
156
|
|
|
157
|
-
`diagnose` is the primary command. It runs all validators, maps every failure to an AI-actionable fix prompt, and outputs a remediation plan. Your AI agent runs it, fixes the docs, and runs `guard` to verify.
|
|
157
|
+
`diagnose` is the primary command. It runs all validators, maps every failure to an AI-actionable fix prompt, and outputs a remediation plan. Your AI agent runs it, fixes the docs, and runs `guard` to verify.
|
|
158
|
+
|
|
159
|
+
### Mechanical vs. agent fixes
|
|
160
|
+
|
|
161
|
+
DocGuard splits drift into two kinds and is explicit about which is which:
|
|
162
|
+
|
|
163
|
+
| Kind | Example | How it's fixed |
|
|
164
|
+
|------|---------|----------------|
|
|
165
|
+
| **Mechanical** (deterministic) | An endpoint documented in `API-REFERENCE.md` that the OpenAPI spec confirms is gone | `docguard fix --write` deletes the row + detail block itself — **no AI** |
|
|
166
|
+
| **Agent** (needs judgment) | Rewriting an X-Ray prose section as CloudWatch; writing a new endpoint's request/response | Routed to an AI agent via `diagnose` / `fix --doc` prompts |
|
|
167
|
+
|
|
168
|
+
`docguard fix --write` only touches docs marked `<!-- docguard:generated true -->` (override with `--force`), is idempotent, and prints exactly what changed. It never rewrites prose — that stays with the agent.
|
|
169
|
+
|
|
170
|
+
### Hands-off loop (set and forget)
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
guard ──▶ fix --write (mechanical, auto) ──▶ guard ──▶ diagnose (agent prompts for the rest)
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
- **CI / pre-commit:** `docguard hooks --type pre-commit --auto-fix` installs a hook that applies mechanical fixes, re-stages the docs, then runs `guard`; anything left is surfaced as agent prompts.
|
|
177
|
+
- **Agent-driven:** `docguard diagnose --auto` scaffolds missing docs **and** applies mechanical fixes, then emits prompts for the content rewrites that remain.
|
|
178
|
+
- **JSON for automation:** `guard`/`diagnose --format json` include a `mechanicalFixes` array and tag each issue `mechanical` vs `agent`, so an agent can apply or delegate precisely.
|
|
158
179
|
|
|
159
180
|
---
|
|
160
181
|
|
|
@@ -216,6 +237,7 @@ DocGuard ships **13 commands**:
|
|
|
216
237
|
| `init` | Initialize CDD docs from templates (interactive) |
|
|
217
238
|
| `score` | CDD maturity score (0–100) with weighted breakdown |
|
|
218
239
|
| `fix --doc <name>` | Generate AI prompt for a specific document |
|
|
240
|
+
| `fix --write` | Apply deterministic fixes (remove stale documented endpoints) — no AI |
|
|
219
241
|
| `diff` | Compare canonical docs vs actual code artifacts |
|
|
220
242
|
| `agents` | Generate agent-specific config files |
|
|
221
243
|
| `trace` | Requirements traceability matrix |
|
|
@@ -130,7 +130,28 @@ diagnose → AI reads prompts → AI fixes docs → guard verifies
|
|
|
130
130
|
└───────────────── issues found? ←──────────────────────┘
|
|
131
131
|
```
|
|
132
132
|
|
|
133
|
-
`diagnose` is the primary command. It runs all validators, maps every failure to an AI-actionable fix prompt, and outputs a remediation plan. Your AI agent runs it, fixes the docs, and runs `guard` to verify.
|
|
133
|
+
`diagnose` is the primary command. It runs all validators, maps every failure to an AI-actionable fix prompt, and outputs a remediation plan. Your AI agent runs it, fixes the docs, and runs `guard` to verify.
|
|
134
|
+
|
|
135
|
+
### Mechanical vs. agent fixes
|
|
136
|
+
|
|
137
|
+
DocGuard splits drift into two kinds and is explicit about which is which:
|
|
138
|
+
|
|
139
|
+
| Kind | Example | How it's fixed |
|
|
140
|
+
|------|---------|----------------|
|
|
141
|
+
| **Mechanical** (deterministic) | An endpoint documented in `API-REFERENCE.md` that the OpenAPI spec confirms is gone | `docguard fix --write` deletes the row + detail block itself — **no AI** |
|
|
142
|
+
| **Agent** (needs judgment) | Rewriting an X-Ray prose section as CloudWatch; writing a new endpoint's request/response | Routed to an AI agent via `diagnose` / `fix --doc` prompts |
|
|
143
|
+
|
|
144
|
+
`docguard fix --write` only touches docs marked `<!-- docguard:generated true -->` (override with `--force`), is idempotent, and prints exactly what changed. It never rewrites prose — that stays with the agent.
|
|
145
|
+
|
|
146
|
+
### Hands-off loop (set and forget)
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
guard ──▶ fix --write (mechanical, auto) ──▶ guard ──▶ diagnose (agent prompts for the rest)
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
- **CI / pre-commit:** `docguard hooks --type pre-commit --auto-fix` installs a hook that applies mechanical fixes, re-stages the docs, then runs `guard`; anything left is surfaced as agent prompts.
|
|
153
|
+
- **Agent-driven:** `docguard diagnose --auto` scaffolds missing docs **and** applies mechanical fixes, then emits prompts for the content rewrites that remain.
|
|
154
|
+
- **JSON for automation:** `guard`/`diagnose --format json` include a `mechanicalFixes` array and tag each issue `mechanical` vs `agent`, so an agent can apply or delegate precisely.
|
|
134
155
|
|
|
135
156
|
---
|
|
136
157
|
|
|
@@ -192,6 +213,7 @@ DocGuard ships **13 commands**:
|
|
|
192
213
|
| `init` | Initialize CDD docs from templates (interactive) |
|
|
193
214
|
| `score` | CDD maturity score (0–100) with weighted breakdown |
|
|
194
215
|
| `fix --doc <name>` | Generate AI prompt for a specific document |
|
|
216
|
+
| `fix --write` | Apply deterministic fixes (remove stale documented endpoints) — no AI |
|
|
195
217
|
| `diff` | Compare canonical docs vs actual code artifacts |
|
|
196
218
|
| `agents` | Generate agent-specific config files |
|
|
197
219
|
| `trace` | Requirements traceability matrix |
|