docguard-cli 0.17.1__tar.gz → 0.20.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {docguard_cli-0.17.1/extensions/spec-kit-docguard → docguard_cli-0.20.0/.agent}/skills/docguard-fix/SKILL.md +2 -2
- {docguard_cli-0.17.1/extensions/spec-kit-docguard → docguard_cli-0.20.0/.agent}/skills/docguard-guard/SKILL.md +2 -2
- {docguard_cli-0.17.1/extensions/spec-kit-docguard → docguard_cli-0.20.0/.agent}/skills/docguard-review/SKILL.md +2 -2
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.agent/skills/docguard-score/SKILL.md +2 -2
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.agent/skills/docguard-sync/SKILL.md +1 -1
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.docguardignore +5 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.github/workflows/ci.yml +1 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.github/workflows/supply-chain.yml +1 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/AGENTS.md +1 -1
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/CHANGELOG.md +236 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/PKG-INFO +121 -35
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/README.md +120 -34
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/commands/guard.mjs +20 -2
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/commands/init.mjs +54 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/commands/score.mjs +65 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/docguard.mjs +106 -49
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/scanners/memory-plan.mjs +127 -15
- docguard_cli-0.20.0/cli/validators/canonical-sync.mjs +211 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/validators/generated-staleness.mjs +56 -2
- docguard_cli-0.20.0/cli/validators/spec-kit.mjs +14 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/docs/quickstart.md +1 -1
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/docs-canonical/CI-RECIPES.md +2 -2
- docguard_cli-0.20.0/docs-canonical/REQUIREMENTS.md +68 -0
- docguard_cli-0.20.0/docs-canonical/SURFACE-AUDIT.md +334 -0
- docguard_cli-0.20.0/docs-implementation/MIGRATION-v0.20.md +194 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/extensions/spec-kit-docguard/README.md +1 -1
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/extensions/spec-kit-docguard/extension.yml +5 -5
- {docguard_cli-0.17.1/.agent → docguard_cli-0.20.0/extensions/spec-kit-docguard}/skills/docguard-fix/SKILL.md +2 -2
- {docguard_cli-0.17.1/.agent → docguard_cli-0.20.0/extensions/spec-kit-docguard}/skills/docguard-guard/SKILL.md +2 -2
- {docguard_cli-0.17.1/.agent → docguard_cli-0.20.0/extensions/spec-kit-docguard}/skills/docguard-review/SKILL.md +2 -2
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/extensions/spec-kit-docguard/skills/docguard-score/SKILL.md +2 -2
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/extensions/spec-kit-docguard/skills/docguard-sync/SKILL.md +1 -1
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/package.json +1 -1
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/pyproject.toml +1 -1
- docguard_cli-0.20.0/tests/canonical-sync.test.mjs +148 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/commands.test.mjs +7 -2
- docguard_cli-0.20.0/tests/npm-pack-smoke.test.mjs +128 -0
- docguard_cli-0.20.0/tests/plan-disk-cache.test.mjs +119 -0
- docguard_cli-0.20.0/tests/upgrade-pr-e2e.test.mjs +175 -0
- docguard_cli-0.20.0/tests/v020-consolidation.test.mjs +200 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.agent/commands/speckit.analyze.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.agent/commands/speckit.checklist.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.agent/commands/speckit.clarify.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.agent/commands/speckit.constitution.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.agent/commands/speckit.implement.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.agent/commands/speckit.plan.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.agent/commands/speckit.specify.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.agent/commands/speckit.tasks.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.agent/commands/speckit.taskstoissues.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.agent/skills/speckit-analyze/SKILL.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.agent/skills/speckit-checklist/SKILL.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.agent/skills/speckit-clarify/SKILL.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.agent/skills/speckit-constitution/SKILL.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.agent/skills/speckit-implement/SKILL.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.agent/skills/speckit-plan/SKILL.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.agent/skills/speckit-specify/SKILL.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.agent/skills/speckit-tasks/SKILL.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.agent/skills/speckit-taskstoissues/SKILL.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.docguard.json +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.github/dependabot.yml +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.github/scripts/patch-catalog.py +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.github/workflows/release.yml +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.github/workflows/sync-speckit-catalog.yml +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.gitignore +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.jules/bolt.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.jules/palette.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.jules/sentinel.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.npmignore +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.npmrc +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.specify/extensions/.cache/catalog-ebf165086500aab1-metadata.json +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.specify/extensions/.cache/catalog-ebf165086500aab1.json +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.specify/extensions/.cache/catalog-metadata.json +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.specify/extensions/.cache/catalog.json +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.specify/init-options.json +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.specify/memory/constitution.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.specify/scripts/bash/check-prerequisites.sh +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.specify/scripts/bash/common.sh +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.specify/scripts/bash/create-new-feature.sh +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.specify/scripts/bash/setup-plan.sh +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.specify/scripts/bash/update-agent-context.sh +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.specify/templates/agent-file-template.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.specify/templates/checklist-template.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.specify/templates/constitution-template.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.specify/templates/plan-template.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.specify/templates/spec-template.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/.specify/templates/tasks-template.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/CODE_OF_CONDUCT.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/COMPARISONS.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/CONTRIBUTING.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/DRIFT-LOG.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/LICENSE +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/PHILOSOPHY.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/ROADMAP.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/SECURITY.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/STANDARD.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/SUPPLY-CHAIN-AUDIT.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/SUPPORT.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/action.yml +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/commands/agents.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/commands/badge.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/commands/ci.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/commands/diagnose.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/commands/diff.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/commands/explain.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/commands/fix.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/commands/generate.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/commands/hooks.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/commands/impact.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/commands/llms.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/commands/memory.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/commands/publish.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/commands/setup.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/commands/sync.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/commands/trace.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/commands/upgrade.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/commands/watch.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/ensure-skills.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/scanners/api-doc.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/scanners/cdk.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/scanners/doc-tools.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/scanners/frontend.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/scanners/iac.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/scanners/integrations.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/scanners/project-type.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/scanners/routes.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/scanners/schemas.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/scanners/speckit.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/shared-git.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/shared-ignore.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/shared-source.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/shared.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/validators/api-surface.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/validators/architecture.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/validators/changelog.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/validators/cross-reference.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/validators/doc-quality.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/validators/docs-coverage.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/validators/docs-diff.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/validators/docs-sync.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/validators/drift.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/validators/environment.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/validators/freshness.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/validators/metadata-sync.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/validators/metrics-consistency.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/validators/schema-sync.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/validators/security.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/validators/structure.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/validators/test-spec.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/validators/todo-tracking.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/validators/traceability.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/writers/api-reference.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/writers/fix-memory.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/writers/mechanical.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/cli/writers/sections.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/commands/docguard.fix.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/commands/docguard.guard.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/commands/docguard.review.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/commands/docguard.score.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/configs/fastify.json +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/configs/generic.json +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/configs/nextjs.json +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/configs/python.json +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/docguard_cli/__init__.py +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/docguard_cli/wrapper.py +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/docs/ai-integration.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/docs/commands.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/docs/configuration.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/docs/doc-sections.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/docs/faq.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/docs/installation.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/docs/profiles.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/docs-canonical/DATA-MODEL.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/docs-canonical/ENVIRONMENT.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/docs-canonical/SECURITY.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/docs-canonical/TEST-SPEC.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/examples/01-express-api/README.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/examples/01-express-api/package.json +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/examples/01-express-api/server.js +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/examples/02-python-flask/README.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/examples/02-python-flask/app.py +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/examples/02-python-flask/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/examples/02-python-flask/requirements.txt +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/examples/03-spec-kit-project/CHANGELOG.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/examples/03-spec-kit-project/README.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/examples/03-spec-kit-project/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/examples/03-spec-kit-project/docs-canonical/TEST-SPEC.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/examples/03-spec-kit-project/package.json +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/examples/03-spec-kit-project/src/index.js +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/examples/03-spec-kit-project/tests/basic.test.js +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/examples/README.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/extensions/spec-kit-docguard/LICENSE +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/extensions/spec-kit-docguard/commands/diagnose.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/extensions/spec-kit-docguard/commands/fix.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/extensions/spec-kit-docguard/commands/generate.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/extensions/spec-kit-docguard/commands/guard.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/extensions/spec-kit-docguard/commands/init.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/extensions/spec-kit-docguard/commands/score.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/extensions/spec-kit-docguard/commands/sync.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/extensions/spec-kit-docguard/commands/trace.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/extensions/spec-kit-docguard/scripts/bash/common.sh +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/extensions/spec-kit-docguard/scripts/bash/docguard-check-docs.sh +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/extensions/spec-kit-docguard/scripts/bash/docguard-init-doc.sh +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/extensions/spec-kit-docguard/scripts/bash/docguard-suggest-fix.sh +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/extensions/spec-kit-docguard/templates/extensions.yml +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/extensions/spec-kit-docguard/templates/github-workflows/docguard-autofix.yml +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/extensions/spec-kit-docguard/templates/github-workflows/docguard-guard.yml +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/pr_description.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/schemas/docguard-config.schema.json +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/specs/001-fix-ignore-validators/plan.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/specs/001-fix-ignore-validators/spec.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/specs/001-fix-ignore-validators/tasks.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/specs/002-fix-test-discovery/plan.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/specs/002-fix-test-discovery/spec.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/specs/002-fix-test-discovery/tasks.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/specs/003-v011-false-positives/plan.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/specs/003-v011-false-positives/spec.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/specs/003-v011-false-positives/tasks.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/templates/ADR.md.template +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/templates/AGENTS.md.template +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/templates/ARCHITECTURE.md.template +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/templates/CHANGELOG.md.template +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/templates/CURRENT-STATE.md.template +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/templates/DATA-MODEL.md.template +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/templates/DEPLOYMENT.md.template +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/templates/DRIFT-LOG.md.template +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/templates/ENVIRONMENT.md.template +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/templates/KNOWN-GOTCHAS.md.template +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/templates/REQUIREMENTS.md.template +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/templates/ROADMAP.md.template +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/templates/RUNBOOKS.md.template +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/templates/SECURITY.md.template +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/templates/TEST-SPEC.md.template +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/templates/TROUBLESHOOTING.md.template +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/templates/VENDOR-BUGS.md.template +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/templates/ci/github-actions.yml +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/templates/commands/docguard.fix.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/templates/commands/docguard.guard.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/templates/commands/docguard.init.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/templates/commands/docguard.review.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/templates/commands/docguard.update.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/test-draft.js +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/test-metrics.js +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/anchor-autofix.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/api-doc.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/api-surface.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/api-write.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/architecture.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/b7-node-env-symmetry.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/backup-failure.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/cdk-detection.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/changed-only-scoping.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/changed-only.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/changelog.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/cross-reference.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/doc-quality.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/docguardignore.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/docs-coverage.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/docs-diff.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/docs-sync.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/drift.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/environment.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/fix-memory.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/fix-suppression.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/fixture-projects.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/freshness.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/frontend-deep.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/frontend.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/generated-staleness.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/guard-classify.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/guard-no-throw.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/hooks.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/i18n.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/impact.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/integrations.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/mechanical.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/memory-plan.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/metadata-sync.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/metrics-consistency.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/metrics-dedup.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/monorepo-scanning.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/multi-spec.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/patch-0.11.2.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/profile-flag.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/project-type.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/regenerate-section.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/routes-multilang.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/schema-sync.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/schemas-multilang.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/schemas.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/scoping-extended.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/section-na-markers.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/sections.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/security.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/severity.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/shared-git.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/shared-source.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/stress-test.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/structure.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/sweep-nudge.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/sync-since.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/sync.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/test-spec.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/todo-tracking.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/trace-multilang.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/trace-reverse.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/traceability.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/upgrade-pr.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/upgrade.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/validator-naming.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/version-pin.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/tests/whats-new.test.mjs +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/vscode-extension/.vscodeignore +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/vscode-extension/README.md +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/vscode-extension/extension.js +0 -0
- {docguard_cli-0.17.1 → docguard_cli-0.20.0}/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.20.0
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-fix
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.
|
|
12
|
+
<!-- docguard:version: 0.20.0 -->
|
|
13
13
|
|
|
14
14
|
# DocGuard Fix Skill
|
|
15
15
|
|
|
@@ -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.20.0
|
|
11
11
|
source: extensions/spec-kit-docguard/skills/docguard-guard
|
|
12
12
|
---
|
|
13
|
-
<!-- docguard:version: 0.
|
|
13
|
+
<!-- docguard:version: 0.20.0 -->
|
|
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.20.0
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-review
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.
|
|
12
|
+
<!-- docguard:version: 0.20.0 -->
|
|
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.20.0
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-score
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.
|
|
12
|
+
<!-- docguard:version: 0.20.0 -->
|
|
13
13
|
|
|
14
14
|
# DocGuard Score Skill
|
|
15
15
|
|
|
@@ -4,7 +4,7 @@ description: Keep canonical documentation ALWAYS UP TO DATE. Refreshes code-trut
|
|
|
4
4
|
compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
|
|
5
5
|
metadata:
|
|
6
6
|
author: docguard
|
|
7
|
-
version: 0.
|
|
7
|
+
version: 0.20.0
|
|
8
8
|
source: extensions/spec-kit-docguard/skills/docguard-sync
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -26,3 +26,8 @@ __pycache__/
|
|
|
26
26
|
# Backups created by generate --force
|
|
27
27
|
*.bak
|
|
28
28
|
|
|
29
|
+
# Surface audit doc — contains historical observations like "guard ran 22
|
|
30
|
+
# validators" that document the pre-v0.19 state. Auto-fixing those to the
|
|
31
|
+
# current count would erase the historical record the audit exists to preserve.
|
|
32
|
+
docs-canonical/SURFACE-AUDIT.md
|
|
33
|
+
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
| Command | Purpose |
|
|
42
42
|
|---------|---------|
|
|
43
43
|
| `diagnose` | **Primary** — identify issues + generate AI fix prompts |
|
|
44
|
-
| `guard` | Validate project (CI gate) —
|
|
44
|
+
| `guard` | Validate project (CI gate) — 23 validators |
|
|
45
45
|
| `generate` | Reverse-engineer docs from code |
|
|
46
46
|
| `fix --doc <name>` | AI prompt for specific document |
|
|
47
47
|
| `score` | CDD maturity score (0-100) |
|
|
@@ -7,6 +7,242 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.20.0] - 2026-05-26
|
|
11
|
+
|
|
12
|
+
**Consolidation.** 21 user-facing commands become 13. The promise from
|
|
13
|
+
v0.19's SURFACE-AUDIT delivered in full — without breaking any existing
|
|
14
|
+
user. Eight v0.19 commands keep working with deprecation warnings; one
|
|
15
|
+
permanent alias (`audit → guard`) stays forever; ten cute aliases nobody
|
|
16
|
+
documented are removed.
|
|
17
|
+
|
|
18
|
+
This is the cleanup release. **No new functionality** — every behavior
|
|
19
|
+
that worked in v0.19 still works in v0.20. The win is cognitive surface:
|
|
20
|
+
new users see four clear sections in `--help` instead of seven muddled
|
|
21
|
+
ones, and the "Daily 5" framing tells them exactly what to learn first.
|
|
22
|
+
|
|
23
|
+
### Changed — surface shape
|
|
24
|
+
|
|
25
|
+
- **`docguard init --with <name>`** is the new entry point for the
|
|
26
|
+
six one-shot scaffolders. Names: `agents`, `hooks`, `ci`, `badge`,
|
|
27
|
+
`llms`, `publish`. Comma-separated for chaining
|
|
28
|
+
(`docguard init --with agents,hooks,badge,ci`). The original six
|
|
29
|
+
commands (`docguard agents`, `docguard hooks`, …) still work — they
|
|
30
|
+
emit a yellow stderr deprecation warning and dispatch through
|
|
31
|
+
`init --with` internally.
|
|
32
|
+
- **`docguard init --wizard`** replaces `docguard setup`. Same 7-step
|
|
33
|
+
interactive flow; `setup` is now a deprecation alias.
|
|
34
|
+
- **`docguard diff --since <ref>`** replaces `docguard impact`. The
|
|
35
|
+
underlying impact analyzer is the same code path. `impact` is now a
|
|
36
|
+
deprecation alias.
|
|
37
|
+
- **`docguard --help` reorganized** into four sections: **The Daily 5**
|
|
38
|
+
(init, guard, diff, sync, score), **Tools** (8 situational verbs),
|
|
39
|
+
**`init --with <name>`** (the six scaffolders), and **Deprecation
|
|
40
|
+
aliases** (a footnote with the v1.0 timeline). Down from seven
|
|
41
|
+
alphabetically-organized sections.
|
|
42
|
+
|
|
43
|
+
### Removed — cute aliases (the ten dropped)
|
|
44
|
+
|
|
45
|
+
These were in the router but never in `--help`. None of them had
|
|
46
|
+
documentation. v0.20 errors with a one-line hint to the canonical
|
|
47
|
+
command:
|
|
48
|
+
|
|
49
|
+
`onboard` · `gen` · `badges` · `pipeline` · `repair` · `dx` ·
|
|
50
|
+
`pub` · `traceability` · `help-warning` · `update`
|
|
51
|
+
|
|
52
|
+
Try `docguard onboard` in v0.20 and you'll get:
|
|
53
|
+
```
|
|
54
|
+
Unknown command: onboard
|
|
55
|
+
Hint: this alias was removed in v0.20. Try docguard setup
|
|
56
|
+
(deprecated) — try `docguard init --wizard`.
|
|
57
|
+
See docs-implementation/MIGRATION-v0.20.md for the full list.
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Kept permanently
|
|
61
|
+
|
|
62
|
+
- **`audit → guard`** — the one alias that stays forever. Older blog
|
|
63
|
+
posts, tutorials, and CI scripts reference it. No deprecation warning,
|
|
64
|
+
no removal planned.
|
|
65
|
+
|
|
66
|
+
### Added
|
|
67
|
+
|
|
68
|
+
- **`docs-implementation/MIGRATION-v0.20.md`** — full migration guide.
|
|
69
|
+
Before/after table for every renamed command, the deprecation
|
|
70
|
+
timeline, a grep recipe to detect old usage in your repo, common
|
|
71
|
+
questions, and concrete examples (CI workflow, pre-commit hook,
|
|
72
|
+
fresh-project bootstrap, post-commit "what docs am I responsible
|
|
73
|
+
for?").
|
|
74
|
+
- **`canonical-sync` validator (v0.19) now counts user-facing commands**,
|
|
75
|
+
not just files in `cli/commands/`. It parses `cli/docguard.mjs` to
|
|
76
|
+
find names in the Daily 5 + Tools sections, so the README's
|
|
77
|
+
"ships 13 commands" claim stays accurate across renames without
|
|
78
|
+
counting deprecation aliases.
|
|
79
|
+
- **`tests/v020-consolidation.test.mjs`** — 24 tests covering: every
|
|
80
|
+
`--with` target dispatches; multi-scaffolder runs in order; unknown
|
|
81
|
+
`--with` targets error; every deprecation alias still works and
|
|
82
|
+
warns; `--quiet` suppresses the warning; all ten dropped aliases
|
|
83
|
+
error with a hint; `audit` is silent.
|
|
84
|
+
|
|
85
|
+
### Fixed
|
|
86
|
+
|
|
87
|
+
- **Spec-Kit extension aliases now satisfy the
|
|
88
|
+
`speckit.{extension}.{command}` schema** (issue #1, reported by
|
|
89
|
+
`c05m1x`). `extensions/spec-kit-docguard/extension.yml` previously
|
|
90
|
+
declared aliases as `docguard.guard` / `docguard.fix` /
|
|
91
|
+
`docguard.review` / `docguard.score`, which spec-kit rejects with
|
|
92
|
+
*"Validation Error: Invalid alias 'docguard.guard': must follow
|
|
93
|
+
pattern 'speckit.{extension}.{command}'"*. All four aliases now
|
|
94
|
+
match the canonical names (`speckit.docguard.guard` etc.), letting
|
|
95
|
+
`specify extension add docguard` succeed cleanly. The reporter's
|
|
96
|
+
secondary complaint about `--from` path-resolution is a separate
|
|
97
|
+
upstream spec-kit issue and tracked there.
|
|
98
|
+
|
|
99
|
+
### Workflow hygiene
|
|
100
|
+
|
|
101
|
+
- **`workflow_dispatch:` added to `ci.yml` and `supply-chain.yml`** so
|
|
102
|
+
admin-bypass pushes that don't auto-trigger workflows can be
|
|
103
|
+
recovered manually. (Came out of the v0.19.0 publish incident where
|
|
104
|
+
a branch-protection bypass appears to have suppressed the auto-trigger.)
|
|
105
|
+
|
|
106
|
+
### Tests
|
|
107
|
+
|
|
108
|
+
- 558 → **582 tests** (+24 from `tests/v020-consolidation.test.mjs`).
|
|
109
|
+
- Canonical-Sync re-runs clean (`23 validators · 13 user-facing commands`).
|
|
110
|
+
|
|
111
|
+
### Deprecation timeline
|
|
112
|
+
|
|
113
|
+
- **v0.20.x → v0.x**: deprecated commands work with yellow warning.
|
|
114
|
+
- **v1.0.0**: deprecated commands removed. At least 2-3 months out.
|
|
115
|
+
- **forever**: `audit → guard` stays.
|
|
116
|
+
|
|
117
|
+
See **[MIGRATION-v0.20.md](docs-implementation/MIGRATION-v0.20.md)** for
|
|
118
|
+
the full guide.
|
|
119
|
+
|
|
120
|
+
## [0.19.0] - 2026-05-26
|
|
121
|
+
|
|
122
|
+
**Self-aware.** The headline change: until v0.19, `guard` could not see
|
|
123
|
+
when the README lied about DocGuard's own surface. v0.18.1 shipped with
|
|
124
|
+
"ships 19 commands" while the codebase had 21, and the architecture
|
|
125
|
+
diagram had drifted across five releases without anyone noticing —
|
|
126
|
+
because no validator was checking. v0.19 closes that gap.
|
|
127
|
+
|
|
128
|
+
Triggered by a surface audit (see `docs-canonical/SURFACE-AUDIT.md`) that
|
|
129
|
+
found three different command counts in three different places, six
|
|
130
|
+
commands that exist in the router but were never surfaced in `--help`,
|
|
131
|
+
and 11 undocumented alias variants. This release fixes the *self-policing*
|
|
132
|
+
piece. The actual consolidation of the 21-command surface down to ~13
|
|
133
|
+
verbs is staged for v0.20 with a migration guide.
|
|
134
|
+
|
|
135
|
+
### Added
|
|
136
|
+
|
|
137
|
+
- **A — `canonical-sync` validator.** New 23rd validator that runs on
|
|
138
|
+
every `guard` and asserts: (1) README "ships N commands" matches
|
|
139
|
+
`cli/commands/*.mjs` file count; (2) README "N validators" matches the
|
|
140
|
+
live runtime count; (3) architecture-diagram `Commands (N)` and
|
|
141
|
+
`Validators (N)` mermaid labels match reality. Gated by
|
|
142
|
+
`package.json` name === "docguard-cli" — returns N/A in every other
|
|
143
|
+
project. Counts itself per SURFACE-AUDIT §8.5 (current claim is "23
|
|
144
|
+
validators" = 22 files + 1 inlined Doc Sections, where Canonical-Sync
|
|
145
|
+
is among the 22). Severity high. 9 unit tests, all green.
|
|
146
|
+
- **B — Six ghost commands surfaced in `--help`.** `explain`, `impact`,
|
|
147
|
+
`llms`, `memory`, `upgrade` now appear under their natural sections
|
|
148
|
+
(Analysis, Memory, CI/CD, Utilities). The historical `audit → guard`
|
|
149
|
+
alias is documented in a new "Aliases" footnote — kept permanently for
|
|
150
|
+
backwards-compat with older CI scripts.
|
|
151
|
+
- **P1 — `tests/npm-pack-smoke.test.mjs`.** Builds the actual tarball
|
|
152
|
+
that would be published to npm, extracts it, and runs the CLI against
|
|
153
|
+
a tiny fixture. Catches the class of bugs where a needed file is
|
|
154
|
+
missing from `package.json`'s `files:` array. Opt-out via
|
|
155
|
+
`NPM_PACK_SMOKE=0` but on by default — v0.15.0 nearly shipped with a
|
|
156
|
+
missing `schemas/` directory until we added it to the files array, and
|
|
157
|
+
this gate would have caught that.
|
|
158
|
+
|
|
159
|
+
### Changed
|
|
160
|
+
|
|
161
|
+
- **C — README counts corrected to reality.** "ships 19 commands" → "ships
|
|
162
|
+
21 commands". Architecture diagram `Commands (19)` → `(21)`,
|
|
163
|
+
`Validators (22)` → `(23)`. "any of the 22 validators" → "23 validators"
|
|
164
|
+
in the What's-New section. Validators section now lists 23 with
|
|
165
|
+
Canonical-Sync added between Generated-Staleness and Metrics-Consistency.
|
|
166
|
+
Going forward, `canonical-sync` enforces these stay accurate.
|
|
167
|
+
- **D — `Spec-Kit` validator moved to `cli/validators/`.** Was previously
|
|
168
|
+
exported from `cli/scanners/speckit.mjs` — architecturally backwards
|
|
169
|
+
(scanners read state, validators have severity/pass-fail semantics).
|
|
170
|
+
New thin file at `cli/validators/spec-kit.mjs` re-exports the function;
|
|
171
|
+
scanner logic stays where it lives. Now `ls cli/validators/*.mjs \| wc -l`
|
|
172
|
+
matches the validator surface (22 files + 1 for Doc Sections inlined).
|
|
173
|
+
- **P2 — Node-based `gh` stub for upgrade-pr e2e.** v0.18.0's shell-script
|
|
174
|
+
stub passed on macOS but failed on Linux CI runners because of PATH
|
|
175
|
+
interaction with the runner's `/usr/bin/gh`. v0.18.1 gated the test
|
|
176
|
+
behind `E2E=1`. v0.19 rewrites the stub in Node (the runtime — present
|
|
177
|
+
on every platform DocGuard supports). Net result: upgrade --pr e2e now
|
|
178
|
+
runs in regular CI on every platform with no opt-in required.
|
|
179
|
+
|
|
180
|
+
### Documentation
|
|
181
|
+
|
|
182
|
+
- **`docs-canonical/SURFACE-AUDIT.md`** (new).** Full survey of the 21
|
|
183
|
+
commands, 23 validators, and every count claim in every canonical doc.
|
|
184
|
+
Sections cover: hard data, every drift, overlap matrix between commands,
|
|
185
|
+
proposed target surface for v0.20 (~13 verbs after consolidation),
|
|
186
|
+
migration plan with deprecation aliases, the canonical-sync spec, and
|
|
187
|
+
open questions answered. Maintainer-facing — refresh quarterly or when
|
|
188
|
+
surface changes by more than ±3 commands.
|
|
189
|
+
|
|
190
|
+
### Notes / Deferred
|
|
191
|
+
|
|
192
|
+
- The consolidation itself (folding `agents`/`badge`/`ci`/`hooks`/`llms`/
|
|
193
|
+
`publish` into `init --with`; renaming `setup` → `init --wizard`;
|
|
194
|
+
renaming `impact` → `diff --since`; dropping the 11 cute aliases) is
|
|
195
|
+
intentionally **deferred to v0.20.0** with a migration guide. v0.19
|
|
196
|
+
establishes the self-policing first so the v0.20 surface changes can't
|
|
197
|
+
silently break the docs.
|
|
198
|
+
- P4 (Generated-Staleness depth optimization) was superseded by v0.18-P2's
|
|
199
|
+
cross-process disk cache, which covers the same scenario at the
|
|
200
|
+
plan-cache layer for all validators.
|
|
201
|
+
|
|
202
|
+
## [0.18.1] - 2026-05-26
|
|
203
|
+
|
|
204
|
+
Hotfix: v0.18.0 publish failed because the new `upgrade --pr` end-to-end test (which used a shell-script stub `gh`) was platform-specific — passed on macOS, failed on Linux CI runners due to interaction with the runner's existing `/usr/bin/gh`. Gated the test behind `E2E=1` (same pattern as the stress test) so the regular CI suite stays green. The production `upgrade --pr` code path is still covered by `tests/upgrade-pr.test.mjs`. v0.19 will switch to a Node-based gh stub.
|
|
205
|
+
|
|
206
|
+
All v0.18.0 features ship intact:
|
|
207
|
+
- P1 Generated-Staleness fast-path (30% faster guard)
|
|
208
|
+
- P2 cross-process plan cache (.docguard/plan.cache.json)
|
|
209
|
+
- P3 `score --diff` per-category drill-down
|
|
210
|
+
- P4 upgrade-pr battle-test (now opt-in via E2E=1)
|
|
211
|
+
|
|
212
|
+
## [0.18.0] - 2026-05-26
|
|
213
|
+
|
|
214
|
+
Performance + drill-down release. Closes the four v0.18 backlog items:
|
|
215
|
+
Generated-Staleness fast-path (**30% faster guard runs**), cross-process
|
|
216
|
+
plan cache, `score --diff` drill-down, and an end-to-end battle-test for
|
|
217
|
+
`upgrade --apply --pr`. **546 tests** (was 537, +9). 22 validators.
|
|
218
|
+
|
|
219
|
+
### Performance
|
|
220
|
+
|
|
221
|
+
- **P1 — Generated-Staleness fast-path.** The validator used to call `buildMemoryPlan` (~400ms) on EVERY guard run, even on projects with no `<!-- docguard:section source=code -->` markers and no `status: draft` docs (i.e. most projects today). New cheap pre-flight: scan canonical docs for either signal first; if neither is present, return N/A in <5ms. **Result on the client repo: total validator time 1431ms → 998ms — a 30% reduction.** Generated-Staleness dropped from "slowest validator at 26-33% of guard time" to "doesn't appear in the slow-list at all".
|
|
222
|
+
- **P2 — Cross-process plan cache (`.docguard/plan.cache.json`).** The v0.15-P1 in-process cache only helped within a single process. CI flows that run guard → sync → fix as separate processes each rebuilt the plan. v0.18 adds a disk-backed L2 cache keyed by a tree-state hash (git HEAD + manifest mtimes). Cache invalidates automatically when source files change. Disabled with `config.diskCache: false`; survives corrupt files silently; never the only cache layer — L1 (in-process) still wins for same-run flows. Cuts the typical 3-step CI flow from 3× to 1× build time.
|
|
223
|
+
|
|
224
|
+
### Added
|
|
225
|
+
|
|
226
|
+
- **P3 — `docguard score --diff` per-category drill-down.** Symmetric to v0.17's `memory --diff`. The score headline ("Architecture: 80/100") used to require source-spelunking to understand. New `--diff` mode joins the score categories to live guard validator warnings and shows the underlying errors/warnings per weak category. Cap of 5 per category + "N more" pointer. Plus an inline tip: `docguard explain "<warning>"` for full per-warning help.
|
|
227
|
+
|
|
228
|
+
### Internal
|
|
229
|
+
|
|
230
|
+
- **P4 — End-to-end battle-test for `upgrade --apply --pr`.** The v0.14-P4 PR flow shipped without ever being exercised end-to-end. New `tests/upgrade-pr-e2e.test.mjs` wires up a local bare-repo remote + a stub `gh` binary on a fresh PATH directory and asserts: branch created, migration applied, commit landed on remote, `gh pr create` invoked with `--title` + `--body`. No real GitHub credentials needed; lives in regular CI from now on.
|
|
231
|
+
- **3 new test files**: `tests/plan-disk-cache.test.mjs` (7), `tests/upgrade-pr-e2e.test.mjs` (2). Existing test suites already covered Generated-Staleness and score behavior. **Total: 537 → 546 tests (+9 new).**
|
|
232
|
+
- **New helpers** in `cli/scanners/memory-plan.mjs`: `_treeStateHash`, `_readDiskCache`, `_writeDiskCache`, `_DISK_CACHE_PATH`, `_DISK_CACHE_VERSION`.
|
|
233
|
+
- **New helpers** in `cli/validators/generated-staleness.mjs`: `_quickScan` (cheap marker pre-flight).
|
|
234
|
+
- **New helpers** in `cli/commands/score.mjs`: `_SCORE_TO_VALIDATORS` mapping, `_showScoreDiff`.
|
|
235
|
+
- **`buildMemoryPlan` cache strategy**: L1 (per-process Map) → L2 (per-tree disk file) → fresh build. Tree-state hash uses `git rev-parse HEAD` + manifest mtimes (package.json, pyproject.toml, Cargo.toml, etc.) for invalidation.
|
|
236
|
+
- **Dry-run on client repo**: env accuracy still 80/82, 672/672 PASS, validator time 1431ms → 998ms.
|
|
237
|
+
- No new NPM deps.
|
|
238
|
+
|
|
239
|
+
### Backlog for v0.19
|
|
240
|
+
|
|
241
|
+
- **F6** stale score cache (still low repro confidence)
|
|
242
|
+
- Deeper Generated-Staleness optimization for projects that DO use markers (the v0.18 fast-path only helps projects without)
|
|
243
|
+
- README polish — the README has aged through ~14 releases and could use a refresh
|
|
244
|
+
- A pre-release smoke gate that runs against multiple synthetic fixture projects before publishing
|
|
245
|
+
|
|
10
246
|
## [0.17.1] - 2026-05-26
|
|
11
247
|
|
|
12
248
|
Patch responding to a client-project feedback round: 1 real bug (B-7) and
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: docguard-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.20.0
|
|
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
|
|
@@ -39,6 +39,7 @@ Description-Content-Type: text/markdown
|
|
|
39
39
|
## Table of Contents
|
|
40
40
|
|
|
41
41
|
- [What is DocGuard?](#what-is-docguard)
|
|
42
|
+
- [What's New](#-whats-new)
|
|
42
43
|
- [Quick Start](#-quick-start)
|
|
43
44
|
- [Spec Kit Integration](#-spec-kit-integration)
|
|
44
45
|
- [Usage](#usage)
|
|
@@ -74,15 +75,15 @@ DocGuard is an official [GitHub Spec Kit](https://github.com/github/spec-kit) co
|
|
|
74
75
|
|
|
75
76
|
```mermaid
|
|
76
77
|
graph TD
|
|
77
|
-
CLI["CLI Entry<br/>docguard.mjs"] --> Commands["Commands (
|
|
78
|
+
CLI["CLI Entry<br/>docguard.mjs"] --> Commands["Commands (13)"]
|
|
78
79
|
Commands --> guard["guard"]
|
|
79
80
|
Commands --> generate["generate"]
|
|
80
81
|
Commands --> score["score"]
|
|
81
82
|
Commands --> diagnose["diagnose"]
|
|
82
83
|
Commands --> setup["setup wizard"]
|
|
83
|
-
Commands --> other["diff · init · fix · trace<br/>agents · hooks · badge · ci · watch"]
|
|
84
|
+
Commands --> other["diff · init · fix · trace · impact · sync<br/>explain · memory · upgrade · agents · hooks · badge · ci · watch"]
|
|
84
85
|
|
|
85
|
-
guard --> Validators["Validators (
|
|
86
|
+
guard --> Validators["Validators (23)"]
|
|
86
87
|
generate --> Scanners["Scanners (4)<br/>routes · schemas · doc-tools · speckit"]
|
|
87
88
|
score --> Scoring["Weighted Scoring<br/>8 categories"]
|
|
88
89
|
diagnose --> Validators
|
|
@@ -105,6 +106,37 @@ graph TD
|
|
|
105
106
|
|
|
106
107
|
---
|
|
107
108
|
|
|
109
|
+
## ✨ What's New
|
|
110
|
+
|
|
111
|
+
Recent highlights across the v0.16 → v0.19 line:
|
|
112
|
+
|
|
113
|
+
- **`docguard explain <validator>`** — `docguard explain freshness` prints purpose, rules, common
|
|
114
|
+
failures, and fix recipes for any of the 23 validators. No need to dig into source.
|
|
115
|
+
- **`docguard memory --diff`** — surface what changed in your canonical docs between two refs
|
|
116
|
+
(`HEAD~10..HEAD` by default). Great for code review and changelog drafting.
|
|
117
|
+
- **`docguard score --diff`** — see exactly which validators moved the score up or down between
|
|
118
|
+
two commits. Pinpoints regressions without re-running the full suite by hand.
|
|
119
|
+
- **`docguard upgrade --apply --pr`** — when the config schema bumps, DocGuard migrates
|
|
120
|
+
`.docguard.json` for you and (optionally) opens a PR with the change.
|
|
121
|
+
- **Language-aware patterns** — test discovery and trace mapping now understand Python, Rust, Go,
|
|
122
|
+
Java, Ruby, and PHP layouts in addition to JS/TS. Sensible defaults, override via config.
|
|
123
|
+
- **Per-validator severity overrides** — escalate `freshness` to `high` for production repos,
|
|
124
|
+
demote `doc-quality` to `low` for prototypes. Configurable per-project.
|
|
125
|
+
- **JSON Schema for `.docguard.json`** — IDE autocomplete, in-line docs, and validation via
|
|
126
|
+
`$schema`. Shipped in the package at `schemas/docguard-config.schema.json`.
|
|
127
|
+
- **Version pin (`docguardVersion` + `--pin`)** — pin the CLI version your project supports so
|
|
128
|
+
CI fails loudly if someone bumps DocGuard without re-running the suite.
|
|
129
|
+
- **Cross-process plan cache** — repeated runs reuse the validator plan across processes when
|
|
130
|
+
the working tree hasn't changed. ~30% faster guard runs on typical repos.
|
|
131
|
+
- **Headless-aware banner** — `--quiet`, `--format json`, `--write`, and `--changed-only`
|
|
132
|
+
automatically suppress the banner so JSON output stays parse-clean.
|
|
133
|
+
- **npm-pack smoke gate** — every release now extracts the actual tarball and runs the CLI
|
|
134
|
+
end-to-end before publish, catching missing-file regressions.
|
|
135
|
+
|
|
136
|
+
See [CHANGELOG.md](CHANGELOG.md) for the full history.
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
108
140
|
## ⚡ Quick Start
|
|
109
141
|
|
|
110
142
|
### Node.js (npm)
|
|
@@ -227,24 +259,49 @@ This installs DocGuard's slash commands (`/docguard.guard`, `/docguard.review`,
|
|
|
227
259
|
|
|
228
260
|
## Usage
|
|
229
261
|
|
|
230
|
-
DocGuard ships **13 commands
|
|
262
|
+
DocGuard ships **13 commands** (the "Daily 5" + 8 situational tools). Six additional one-shot scaffolders are accessed via `docguard init --with <name>`. Eight v0.19 commands continue to work as deprecation aliases through v0.20.x — see [MIGRATION-v0.20.md](docs-implementation/MIGRATION-v0.20.md).
|
|
263
|
+
|
|
264
|
+
**The Daily 5** — what you'll reach for 95% of the time:
|
|
265
|
+
|
|
266
|
+
| Command | What It Does |
|
|
267
|
+
|:--------|:-------------|
|
|
268
|
+
| `init` | Bootstrap a project (`--wizard` for interactive · `--with <name>` for scaffolders) |
|
|
269
|
+
| `guard` | Validate against canonical docs — 23 validators |
|
|
270
|
+
| `diff` | Show gaps between docs and code (`--since <ref>` for impact mode) |
|
|
271
|
+
| `sync` | Refresh code-truth doc sections — keeps memory always up to date |
|
|
272
|
+
| `score` | CDD maturity score (0-100; `--diff` for delta between refs) |
|
|
273
|
+
|
|
274
|
+
**Tools (situational, but day-to-day useful):**
|
|
231
275
|
|
|
232
276
|
| Command | Purpose |
|
|
233
277
|
|:--------|:--------|
|
|
234
|
-
| `diagnose` |
|
|
235
|
-
| `
|
|
236
|
-
| `
|
|
237
|
-
| `
|
|
238
|
-
| `
|
|
239
|
-
| `
|
|
240
|
-
| `
|
|
241
|
-
| `diff` |
|
|
242
|
-
| `
|
|
243
|
-
| `trace` | Requirements traceability
|
|
244
|
-
| `
|
|
245
|
-
| `watch` | Live
|
|
246
|
-
|
|
247
|
-
|
|
278
|
+
| `diagnose` | AI orchestrator — guard → emit fix prompts in one command |
|
|
279
|
+
| `fix` | Generate AI fix instructions for specific docs (`--doc <name> --format prompt`) |
|
|
280
|
+
| `fix --write` | Apply deterministic fixes (no AI — version bumps, counts, anchors, sections) |
|
|
281
|
+
| `fix --history` | Audit log of every mechanical fix applied (from `.docguard/fixed.json`) |
|
|
282
|
+
| `generate` | Reverse-engineer docs from existing codebase (`--plan` for AI scan) |
|
|
283
|
+
| `explain <warning>` | Paste any warning — get the validator's docstring + fix path |
|
|
284
|
+
| `memory` | Per-domain accuracy headline (endpoints / entities / env / tech) |
|
|
285
|
+
| `memory --diff` | Drill into which specific claims don't match code |
|
|
286
|
+
| `score --diff` | Drill into which checks pulled each category down |
|
|
287
|
+
| `trace` / `trace --reverse <file>` | Requirements traceability — forward AND reverse |
|
|
288
|
+
| `upgrade [--apply] [--pr]` | Check + migrate `.docguard.json` schema; `--pr` opens a PR |
|
|
289
|
+
| `watch` | Live mode: re-run guard on file changes |
|
|
290
|
+
|
|
291
|
+
**`init --with <name>` scaffolders** — picked at init time:
|
|
292
|
+
|
|
293
|
+
| Scaffolder | What It Generates |
|
|
294
|
+
|:-----------|:------------------|
|
|
295
|
+
| `agents` | `AGENTS.md`, `CLAUDE.md`, `.cursor/rules/`, `.github/copilot-instructions.md` |
|
|
296
|
+
| `hooks` | Git pre-commit / pre-push hooks |
|
|
297
|
+
| `ci` | GitHub Actions / pipeline YAML |
|
|
298
|
+
| `badge` | Shields.io score badges for README |
|
|
299
|
+
| `llms` | `llms.txt` (AI-friendly summary) |
|
|
300
|
+
| `publish` | External doc-site config (Mintlify) — experimental |
|
|
301
|
+
|
|
302
|
+
Run them solo (`docguard init --with hooks`) or stacked (`docguard init --with agents,hooks,badge,ci`).
|
|
303
|
+
|
|
304
|
+
**Deprecation aliases** — `setup` · `agents` · `hooks` · `ci` · `badge` · `llms` · `publish` · `impact` keep working in v0.20.x with a yellow stderr warning. `audit → guard` is permanent (no warning). See [MIGRATION-v0.20.md](docs-implementation/MIGRATION-v0.20.md).
|
|
248
305
|
|
|
249
306
|
### CLI Flags
|
|
250
307
|
|
|
@@ -252,10 +309,22 @@ DocGuard ships **13 commands**:
|
|
|
252
309
|
|:-----|:------------|:---------|
|
|
253
310
|
| `--dir <path>` | Project directory (default: `.`) | All |
|
|
254
311
|
| `--verbose` | Show detailed output | All |
|
|
255
|
-
| `--
|
|
312
|
+
| `--quiet` / `-q` | Suppress banner — for hooks, CI loops, scripts | All |
|
|
313
|
+
| `--format json` | Machine-readable output (clean JSON, no ANSI bleed) | guard, score, diff, trace, diagnose, memory, impact, explain |
|
|
256
314
|
| `--force` | Overwrite existing files (creates `.bak` backups) | generate, agents, init |
|
|
257
|
-
| `--
|
|
258
|
-
| `--
|
|
315
|
+
| `--force-redo` | Bypass ping-pong suppression in `.docguard/fixed.json` | fix --write |
|
|
316
|
+
| `--profile <name>` | Starter / standard / enterprise | init |
|
|
317
|
+
| `--no-spec-kit` | Skip auto-init of `.specify/` / `.agent/` scaffolding | init |
|
|
318
|
+
| `--changed-only [--since <ref>]` | Pre-commit lite mode (5 fast validators on changed files only) | guard |
|
|
319
|
+
| `--timings` | Per-validator wall-time profile (slowest first) | guard |
|
|
320
|
+
| `--show-failing` | Show warnings/errors even when status is PASS | guard |
|
|
321
|
+
| `--pin` | Record running CLI version into `.docguard.json` (reproducibility) | guard |
|
|
322
|
+
| `--diff` | Per-category drill-down | score, memory |
|
|
323
|
+
| `--check-only` | Exit 1 if behind (for CI) | upgrade |
|
|
324
|
+
| `--apply` | Actually run the migration | upgrade |
|
|
325
|
+
| `--pr` | Open a PR with the migration | upgrade |
|
|
326
|
+
| `--reverse <file>` | Reverse traceability (code → docs) | trace |
|
|
327
|
+
| `--history` | Show fix audit log | fix |
|
|
259
328
|
|
|
260
329
|
### Example Output
|
|
261
330
|
|
|
@@ -290,30 +359,47 @@ $ npx docguard-cli generate
|
|
|
290
359
|
|
|
291
360
|
## 🔍 Validators
|
|
292
361
|
|
|
293
|
-
DocGuard runs **
|
|
362
|
+
DocGuard runs **23 automated validators** on every `guard` check. Every one is **language-aware** as of v0.16 — patterns for Python (`test_*.py`), Rust (`tests/*.rs`), Go (`*_test.go`), Java (`*Test.java`), Ruby (`*_spec.rb`), PHP, and JS/TS all match.
|
|
294
363
|
|
|
295
364
|
| # | Validator | What It Checks | Default |
|
|
296
365
|
|:--|:----------|:--------------|:--------|
|
|
297
366
|
| 1 | **Structure** | Required CDD files exist | ✅ On |
|
|
298
|
-
| 2 | **Doc Sections** | Canonical docs have required sections | ✅ On |
|
|
367
|
+
| 2 | **Doc Sections** | Canonical docs have required sections (or N/A markers) | ✅ On |
|
|
299
368
|
| 3 | **Docs-Sync** | Routes/services referenced in docs + OpenAPI cross-check | ✅ On |
|
|
300
|
-
| 4 | **Drift-Comments** | `// DRIFT:` comments logged in DRIFT-LOG.md | ✅ On |
|
|
369
|
+
| 4 | **Drift-Comments** | `// DRIFT:` comments logged in DRIFT-LOG.md (skips test files by default) | ✅ On |
|
|
301
370
|
| 5 | **Changelog** | CHANGELOG.md has [Unreleased] section | ✅ On |
|
|
302
371
|
| 6 | **Test-Spec** | Tests exist per TEST-SPEC.md rules | ✅ On |
|
|
303
|
-
| 7 | **Environment** | Env vars documented,
|
|
372
|
+
| 7 | **Environment** | Env vars documented, `.env.example` exists | ✅ On |
|
|
304
373
|
| 8 | **Security** | No hardcoded secrets in source code | ✅ On |
|
|
305
|
-
| 9 | **Architecture** | Imports follow layer boundaries | ✅ On |
|
|
306
|
-
| 10 | **Freshness** | Docs not stale relative to code changes | ✅ On |
|
|
374
|
+
| 9 | **Architecture** | Imports follow layer boundaries (honors `config.ignore`) | ✅ On |
|
|
375
|
+
| 10 | **Freshness** | Docs not stale relative to code changes (rename-aware via `git log --follow`) | ✅ On |
|
|
307
376
|
| 11 | **Traceability** | Requirement IDs (FR, SC, NFR, US, AC, T) trace to tests | ✅ On |
|
|
308
377
|
| 12 | **Docs-Diff** | Code artifacts match documented entities | ✅ On |
|
|
309
|
-
| 13 | **
|
|
310
|
-
| 14 | **
|
|
311
|
-
| 15 | **
|
|
312
|
-
| 16 | **Doc-Quality** | Writing quality (readability, passive voice, atomicity) | ✅ On |
|
|
313
|
-
| 17 | **TODO-Tracking** | Untracked TODOs/FIXMEs and skipped tests | ✅ On |
|
|
378
|
+
| 13 | **API-Surface** | API-REFERENCE.md endpoints match real routes (OpenAPI cross-check) | ✅ On |
|
|
379
|
+
| 14 | **Metadata-Sync** | Version refs consistent across docs | ✅ On |
|
|
380
|
+
| 15 | **Docs-Coverage** | Code features referenced in documentation | ✅ On |
|
|
381
|
+
| 16 | **Doc-Quality** | Writing quality (readability, passive voice, atomicity, IEEE 830) | ✅ On |
|
|
382
|
+
| 17 | **TODO-Tracking** | Untracked TODOs/FIXMEs and skipped tests (skips test files by default) | ✅ On |
|
|
314
383
|
| 18 | **Schema-Sync** | Database models documented in DATA-MODEL.md | ✅ On |
|
|
315
384
|
| 19 | **Spec-Kit** | Spec quality validation (FR-IDs, mandatory sections, phased tasks) | ✅ On |
|
|
316
|
-
| 20 | **
|
|
385
|
+
| 20 | **Cross-Reference** | Internal markdown links + anchors resolve (with "did you mean?" hints) | ✅ On |
|
|
386
|
+
| 21 | **Generated-Staleness** | `source=code` sections match scanner output; `status: draft` doc age | ✅ On |
|
|
387
|
+
| 22 | **Canonical-Sync** | DocGuard's own README count claims match code-truth (DocGuard repo only — N/A elsewhere) | ✅ On |
|
|
388
|
+
| 23 | **Metrics-Consistency** | Hardcoded numbers match actual counts | ✅ On |
|
|
389
|
+
|
|
390
|
+
**Per-validator controls** (in `.docguard.json`):
|
|
391
|
+
```json
|
|
392
|
+
{
|
|
393
|
+
"validators": {
|
|
394
|
+
"test-spec": false, // disable (kebab-case OR camelCase both accepted)
|
|
395
|
+
"freshness": true
|
|
396
|
+
},
|
|
397
|
+
"severity": {
|
|
398
|
+
"todoTracking": "high", // warnings fail CI
|
|
399
|
+
"freshness": "low" // warnings ignored for exit code
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
```
|
|
317
403
|
|
|
318
404
|
---
|
|
319
405
|
|
|
@@ -367,7 +453,7 @@ DocGuard provides AI agent slash commands for integrated workflows. Installed au
|
|
|
367
453
|
|
|
368
454
|
| Command | What It Does |
|
|
369
455
|
|:--------|:-------------|
|
|
370
|
-
| `/docguard.guard` | Run quality validation — check all
|
|
456
|
+
| `/docguard.guard` | Run quality validation — check all 23 validators |
|
|
371
457
|
| `/docguard.review` | Analyze doc quality and suggest improvements |
|
|
372
458
|
| `/docguard.fix` | Generate targeted fix prompts for specific issues |
|
|
373
459
|
| `/docguard.score` | Show CDD maturity score with category breakdown |
|