docguard-cli 0.14.1__tar.gz → 0.15.2__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.14.1/extensions/spec-kit-docguard → docguard_cli-0.15.2/.agent}/skills/docguard-fix/SKILL.md +2 -2
- {docguard_cli-0.14.1/extensions/spec-kit-docguard → docguard_cli-0.15.2/.agent}/skills/docguard-guard/SKILL.md +2 -2
- {docguard_cli-0.14.1/extensions/spec-kit-docguard → docguard_cli-0.15.2/.agent}/skills/docguard-review/SKILL.md +2 -2
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.agent/skills/docguard-score/SKILL.md +2 -2
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.agent/skills/docguard-sync/SKILL.md +1 -1
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/CHANGELOG.md +74 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/DRIFT-LOG.md +3 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/PKG-INFO +1 -1
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/ROADMAP.md +1 -1
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/commands/guard.mjs +1 -1
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/commands/init.mjs +4 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/scanners/memory-plan.mjs +46 -1
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/scanners/schemas.mjs +37 -12
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/validators/drift.mjs +26 -11
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/validators/todo-tracking.mjs +52 -41
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/writers/mechanical.mjs +6 -1
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/docs-canonical/DATA-MODEL.md +1 -1
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/docs-canonical/ENVIRONMENT.md +1 -1
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/docs-canonical/SECURITY.md +1 -1
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/docs-canonical/TEST-SPEC.md +1 -1
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/extensions/spec-kit-docguard/README.md +1 -1
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/extensions/spec-kit-docguard/extension.yml +1 -1
- {docguard_cli-0.14.1/.agent → docguard_cli-0.15.2/extensions/spec-kit-docguard}/skills/docguard-fix/SKILL.md +2 -2
- {docguard_cli-0.14.1/.agent → docguard_cli-0.15.2/extensions/spec-kit-docguard}/skills/docguard-guard/SKILL.md +2 -2
- {docguard_cli-0.14.1/.agent → docguard_cli-0.15.2/extensions/spec-kit-docguard}/skills/docguard-review/SKILL.md +2 -2
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/extensions/spec-kit-docguard/skills/docguard-score/SKILL.md +2 -2
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/extensions/spec-kit-docguard/skills/docguard-sync/SKILL.md +1 -1
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/package.json +2 -1
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/pyproject.toml +1 -1
- docguard_cli-0.15.2/schemas/docguard-config.schema.json +155 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/architecture.test.mjs +5 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/docguardignore.test.mjs +5 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/patch-0.11.2.test.mjs +4 -0
- docguard_cli-0.15.2/tests/scoping-extended.test.mjs +90 -0
- docguard_cli-0.15.2/tests/stress-test.test.mjs +111 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/todo-tracking.test.mjs +13 -2
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.agent/commands/speckit.analyze.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.agent/commands/speckit.checklist.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.agent/commands/speckit.clarify.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.agent/commands/speckit.constitution.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.agent/commands/speckit.implement.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.agent/commands/speckit.plan.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.agent/commands/speckit.specify.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.agent/commands/speckit.tasks.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.agent/commands/speckit.taskstoissues.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.agent/skills/speckit-analyze/SKILL.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.agent/skills/speckit-checklist/SKILL.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.agent/skills/speckit-clarify/SKILL.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.agent/skills/speckit-constitution/SKILL.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.agent/skills/speckit-implement/SKILL.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.agent/skills/speckit-plan/SKILL.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.agent/skills/speckit-specify/SKILL.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.agent/skills/speckit-tasks/SKILL.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.agent/skills/speckit-taskstoissues/SKILL.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.docguard.json +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.docguardignore +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.github/dependabot.yml +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.github/scripts/patch-catalog.py +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.github/workflows/ci.yml +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.github/workflows/release.yml +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.github/workflows/supply-chain.yml +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.github/workflows/sync-speckit-catalog.yml +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.gitignore +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.jules/bolt.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.jules/palette.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.jules/sentinel.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.npmignore +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.npmrc +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.specify/extensions/.cache/catalog-ebf165086500aab1-metadata.json +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.specify/extensions/.cache/catalog-ebf165086500aab1.json +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.specify/extensions/.cache/catalog-metadata.json +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.specify/extensions/.cache/catalog.json +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.specify/init-options.json +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.specify/memory/constitution.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.specify/scripts/bash/check-prerequisites.sh +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.specify/scripts/bash/common.sh +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.specify/scripts/bash/create-new-feature.sh +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.specify/scripts/bash/setup-plan.sh +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.specify/scripts/bash/update-agent-context.sh +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.specify/templates/agent-file-template.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.specify/templates/checklist-template.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.specify/templates/constitution-template.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.specify/templates/plan-template.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.specify/templates/spec-template.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/.specify/templates/tasks-template.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/AGENTS.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/CODE_OF_CONDUCT.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/COMPARISONS.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/CONTRIBUTING.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/LICENSE +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/PHILOSOPHY.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/README.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/SECURITY.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/STANDARD.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/SUPPLY-CHAIN-AUDIT.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/SUPPORT.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/action.yml +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/commands/agents.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/commands/badge.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/commands/ci.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/commands/diagnose.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/commands/diff.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/commands/fix.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/commands/generate.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/commands/hooks.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/commands/impact.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/commands/llms.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/commands/publish.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/commands/score.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/commands/setup.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/commands/sync.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/commands/trace.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/commands/upgrade.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/commands/watch.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/docguard.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/ensure-skills.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/scanners/api-doc.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/scanners/cdk.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/scanners/doc-tools.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/scanners/frontend.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/scanners/iac.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/scanners/integrations.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/scanners/project-type.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/scanners/routes.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/scanners/speckit.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/shared-git.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/shared-ignore.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/shared-source.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/shared.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/validators/api-surface.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/validators/architecture.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/validators/changelog.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/validators/cross-reference.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/validators/doc-quality.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/validators/docs-coverage.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/validators/docs-diff.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/validators/docs-sync.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/validators/environment.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/validators/freshness.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/validators/generated-staleness.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/validators/metadata-sync.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/validators/metrics-consistency.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/validators/schema-sync.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/validators/security.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/validators/structure.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/validators/test-spec.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/validators/traceability.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/writers/api-reference.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/writers/fix-memory.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/cli/writers/sections.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/commands/docguard.fix.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/commands/docguard.guard.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/commands/docguard.review.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/commands/docguard.score.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/configs/fastify.json +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/configs/generic.json +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/configs/nextjs.json +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/configs/python.json +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/docguard_cli/__init__.py +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/docguard_cli/wrapper.py +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/docs/ai-integration.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/docs/commands.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/docs/configuration.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/docs/doc-sections.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/docs/faq.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/docs/installation.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/docs/profiles.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/docs/quickstart.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/docs-canonical/CI-RECIPES.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/examples/01-express-api/README.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/examples/01-express-api/package.json +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/examples/01-express-api/server.js +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/examples/02-python-flask/README.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/examples/02-python-flask/app.py +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/examples/02-python-flask/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/examples/02-python-flask/requirements.txt +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/examples/03-spec-kit-project/CHANGELOG.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/examples/03-spec-kit-project/README.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/examples/03-spec-kit-project/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/examples/03-spec-kit-project/docs-canonical/TEST-SPEC.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/examples/03-spec-kit-project/package.json +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/examples/03-spec-kit-project/src/index.js +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/examples/03-spec-kit-project/tests/basic.test.js +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/examples/README.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/extensions/spec-kit-docguard/LICENSE +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/extensions/spec-kit-docguard/commands/diagnose.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/extensions/spec-kit-docguard/commands/fix.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/extensions/spec-kit-docguard/commands/generate.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/extensions/spec-kit-docguard/commands/guard.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/extensions/spec-kit-docguard/commands/init.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/extensions/spec-kit-docguard/commands/score.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/extensions/spec-kit-docguard/commands/sync.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/extensions/spec-kit-docguard/commands/trace.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/extensions/spec-kit-docguard/scripts/bash/common.sh +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/extensions/spec-kit-docguard/scripts/bash/docguard-check-docs.sh +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/extensions/spec-kit-docguard/scripts/bash/docguard-init-doc.sh +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/extensions/spec-kit-docguard/scripts/bash/docguard-suggest-fix.sh +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/extensions/spec-kit-docguard/templates/extensions.yml +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/extensions/spec-kit-docguard/templates/github-workflows/docguard-autofix.yml +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/extensions/spec-kit-docguard/templates/github-workflows/docguard-guard.yml +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/pr_description.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/specs/001-fix-ignore-validators/plan.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/specs/001-fix-ignore-validators/spec.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/specs/001-fix-ignore-validators/tasks.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/specs/002-fix-test-discovery/plan.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/specs/002-fix-test-discovery/spec.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/specs/002-fix-test-discovery/tasks.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/specs/003-v011-false-positives/plan.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/specs/003-v011-false-positives/spec.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/specs/003-v011-false-positives/tasks.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/templates/ADR.md.template +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/templates/AGENTS.md.template +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/templates/ARCHITECTURE.md.template +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/templates/CHANGELOG.md.template +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/templates/CURRENT-STATE.md.template +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/templates/DATA-MODEL.md.template +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/templates/DEPLOYMENT.md.template +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/templates/DRIFT-LOG.md.template +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/templates/ENVIRONMENT.md.template +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/templates/KNOWN-GOTCHAS.md.template +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/templates/REQUIREMENTS.md.template +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/templates/ROADMAP.md.template +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/templates/RUNBOOKS.md.template +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/templates/SECURITY.md.template +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/templates/TEST-SPEC.md.template +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/templates/TROUBLESHOOTING.md.template +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/templates/VENDOR-BUGS.md.template +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/templates/ci/github-actions.yml +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/templates/commands/docguard.fix.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/templates/commands/docguard.guard.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/templates/commands/docguard.init.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/templates/commands/docguard.review.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/templates/commands/docguard.update.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/test-draft.js +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/test-metrics.js +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/anchor-autofix.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/api-doc.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/api-surface.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/api-write.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/backup-failure.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/cdk-detection.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/changed-only-scoping.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/changed-only.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/changelog.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/commands.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/cross-reference.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/doc-quality.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/docs-coverage.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/docs-diff.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/docs-sync.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/drift.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/environment.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/fix-memory.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/fix-suppression.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/fixture-projects.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/freshness.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/frontend-deep.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/frontend.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/generated-staleness.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/guard-classify.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/guard-no-throw.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/hooks.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/i18n.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/impact.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/integrations.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/mechanical.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/memory-plan.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/metadata-sync.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/metrics-consistency.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/metrics-dedup.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/monorepo-scanning.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/multi-spec.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/profile-flag.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/project-type.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/regenerate-section.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/routes-multilang.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/schema-sync.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/schemas-multilang.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/schemas.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/sections.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/security.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/severity.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/shared-git.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/shared-source.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/structure.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/sweep-nudge.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/sync-since.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/sync.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/test-spec.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/trace-reverse.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/traceability.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/upgrade-pr.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/tests/upgrade.test.mjs +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/vscode-extension/.vscodeignore +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/vscode-extension/README.md +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/vscode-extension/extension.js +0 -0
- {docguard_cli-0.14.1 → docguard_cli-0.15.2}/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.15.2
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-fix
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.
|
|
12
|
+
<!-- docguard:version: 0.15.2 -->
|
|
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.15.2
|
|
11
11
|
source: extensions/spec-kit-docguard/skills/docguard-guard
|
|
12
12
|
---
|
|
13
|
-
<!-- docguard:version: 0.
|
|
13
|
+
<!-- docguard:version: 0.15.2 -->
|
|
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.15.2
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-review
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.
|
|
12
|
+
<!-- docguard:version: 0.15.2 -->
|
|
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.15.2
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-score
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.
|
|
12
|
+
<!-- docguard:version: 0.15.2 -->
|
|
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.15.2
|
|
8
8
|
source: extensions/spec-kit-docguard/skills/docguard-sync
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -7,6 +7,80 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.15.2] - 2026-05-26
|
|
11
|
+
|
|
12
|
+
Patch release responding to a `/docguard.diagnose` self-audit run on canonical-spec-kit.
|
|
13
|
+
Fixes one real bug (case-sensitive applier) and 9 traceability/freshness/dedup warnings
|
|
14
|
+
through targeted doc + test edits. **497 tests** (unchanged). 22 validators.
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- **`applyReplaceCount` was case-sensitive — couldn't fix capitalized labels.** Metrics-Consistency's detection regex uses `/gi` (case-insensitive), but the corresponding applier in `cli/writers/mechanical.mjs` was built with `/g` only. Result: a doc that said "21 Validators" (capitalized) showed a warning the user could see but `fix --write` would never resolve. Now the applier mirrors the validator's flags. Found by the diagnose run itself — the new ping-pong suppression suggested it as a candidate, `--force-redo` confirmed the issue. Closed-loop discovery.
|
|
19
|
+
|
|
20
|
+
### Improved
|
|
21
|
+
|
|
22
|
+
- **5 freshness counters reset** — DATA-MODEL, SECURITY, TEST-SPEC, ENVIRONMENT, ROADMAP all updated with current `<!-- docguard:last-reviewed -->` dates reflecting the v0.12-v0.15 review cycle.
|
|
23
|
+
- **5 traceability gaps closed** — added `@req FR-012/FR-013/FR-014/SC-006/SC-008` markers to existing tests (`tests/architecture.test.mjs`, `tests/docguardignore.test.mjs`, `tests/todo-tracking.test.mjs`, `tests/patch-0.11.2.test.mjs`) that already exercised those requirements but weren't tagged.
|
|
24
|
+
- **DRIFT-LOG updated** with 3 new entries covering v0.15's drift-marker usage (test fixtures, the v0.15.1 defensive `includeTestFiles` flag, and the v0.12-v0.15 release-note prose). All marked Info / by design.
|
|
25
|
+
- **TODO-Tracking false-positive eliminated** — the validator's own test file no longer trips itself by containing literal `test.skip(...)` in the outer scope. Fixed via string-concat token hiding, same pattern as the v0.15.1 DRIFT fixture fix.
|
|
26
|
+
|
|
27
|
+
### Internal
|
|
28
|
+
|
|
29
|
+
- Self-guard: **218/227 → 224/231** (more checks pass, fewer warnings). 10 → 4 actionable warnings remaining (down from 17 at start of diagnose).
|
|
30
|
+
- Remaining warnings are pre-existing: Docs-Diff test-file count (62), Doc-Quality CI-RECIPES negation density (legitimate prose), Spec-Kit plan-template sections in `specs/002-fix-test-discovery/` (historical artifact).
|
|
31
|
+
- No new NPM deps. No code-behavior changes outside the applier fix.
|
|
32
|
+
|
|
33
|
+
## [0.15.1] - 2026-05-26
|
|
34
|
+
|
|
35
|
+
Feature + performance release. **497 tests** (was 492, +5). 22 validators.
|
|
36
|
+
Headline: full `--changed-only` set now covers **5 validators in ~100ms** on
|
|
37
|
+
both wu-whatsappinbox AND a synthetic 1000-file repo. New `.docguard.json`
|
|
38
|
+
JSON Schema for IDE autocomplete.
|
|
39
|
+
|
|
40
|
+
> **Note**: v0.15.0 was committed but never published — the CI self-guard
|
|
41
|
+
> failed because the new `tests/scoping-extended.test.mjs` had literal
|
|
42
|
+
> `// DRIFT:` strings inside JS fixture data that Drift-Comments treated as
|
|
43
|
+
> real drift comments. v0.15.1 includes a two-part fix: the test uses string
|
|
44
|
+
> concatenation so the literal marker isn't in source, AND Drift-Comments
|
|
45
|
+
> now skips test files by default (matching TODO-Tracking's pattern; opt in
|
|
46
|
+
> via `config.drift.includeTestFiles`). Everything else in this release was
|
|
47
|
+
> ready in v0.15.0 — see the v0.15.0-planned features below.
|
|
48
|
+
|
|
49
|
+
### Fixed (v0.15.1 hotfix)
|
|
50
|
+
|
|
51
|
+
- **Drift-Comments false-positives from test fixtures.** Test files commonly carry literal `// DRIFT:` strings inside JS string fixtures (`'// DRIFT: example\n'`). Reading the test as source treated those as real drift comments. Drift-Comments now skips test files by default — same defensive posture TODO-Tracking adopted in v0.11.2 for the same reason. New `config.drift.includeTestFiles` opt-in for projects that genuinely use DRIFT markers in test code.
|
|
52
|
+
|
|
53
|
+
### Added
|
|
54
|
+
|
|
55
|
+
- **P3: Drift-Comments + TODO-Tracking honor `config.changedFiles`.** Extending the v0.13 N-1 + v0.14-P2 lite-mode scoping. Now 5 of 22 validators scope to changed files in `--changed-only` mode (was 3). `CHANGED_ONLY_VALIDATORS` updated to include `drift` and `todoTracking`. **Result on wu: `--changed-only --since HEAD~3` runs 5 validators in 116ms** (was 78ms with 3 validators in v0.14 — adding two more validators cost only ~40ms because each is scoped). **Result on synthetic 1000-file repo: 91ms** (verified via new stress test).
|
|
56
|
+
- **P4: JSON Schema for `.docguard.json`.** New `schemas/docguard-config.schema.json` shipped in the npm package. `docguard init` now writes `$schema` reference into newly-created configs so VS Code / IntelliJ / any JSON-Schema-aware editor gets autocomplete + inline validation for every config field. Includes types, descriptions, enums (severity = high/medium/low; profile = starter/standard/enterprise; projectType = cli/library/webapp/api/unknown), and field-level help text. Zero runtime impact — DocGuard ignores the `$schema` field itself.
|
|
57
|
+
- **Q: Stress-test fixture.** New `tests/stress-test.test.mjs` builds a synthetic 1000-file monorepo (500 services + 500 routes + 1000 doc references) and asserts:
|
|
58
|
+
- `--changed-only` finishes in **< 500ms** (actual: ~91ms).
|
|
59
|
+
- Full guard finishes in **< 5s** (actual: ~755ms).
|
|
60
|
+
Opt-in via `STRESS=1` to keep `npm test` fast. Catches regressions where any scoping path accidentally devolves to a full tree walk.
|
|
61
|
+
|
|
62
|
+
### Performance
|
|
63
|
+
|
|
64
|
+
- **P1: `buildMemoryPlan` cache.** Memoizes the memory plan per (projectDir + scanner-relevant config) within a single process. Helps cross-command flows where `guard` then `sync` would otherwise rebuild the plan twice. New `clearMemoryPlanCache()` export for tests. Single-`guard` runs see no change (only one caller per process).
|
|
65
|
+
- **P2: `walkDir` cache in `cli/scanners/schemas.mjs`.** `walkDir` was called 8× inside `scanSchemasDeep` for different entity types (Pydantic, Mongoose, Prisma, SQLAlchemy, Sequelize, GORM, Sqlx, Hibernate). Now caches the file list per directory; subsequent callers iterate an array instead of re-traversing. Net gain on wu's mixed Python+TS stack is modest (~3% of total validator time) but real, and helps on stacks where multiple scanners hit the same root dir.
|
|
66
|
+
- **Combined P1+P2+P3 result on wu**: full guard 1456ms → 1431ms (~2%). `--changed-only` covers 5/22 validators in 116ms (vs 1456ms full = **12.6× faster**).
|
|
67
|
+
|
|
68
|
+
### Internal
|
|
69
|
+
|
|
70
|
+
- **2 new test files**: `tests/scoping-extended.test.mjs` (4 tests covering P3) and `tests/stress-test.test.mjs` (2 stress tests + 1 always-passes smoke). **Total: 492 → 497 tests (+5 — stress tests opt-in via STRESS=1).**
|
|
71
|
+
- New helpers: `clearMemoryPlanCache()`, `clearWalkDirCache()`, `_scanTodoFile()`.
|
|
72
|
+
- `schemas/docguard-config.schema.json` is the first non-code file under `schemas/` — added to `package.json#files` so it ships in the npm tarball.
|
|
73
|
+
- `.docguard.json` now self-documents via `$schema` reference when created by `init`.
|
|
74
|
+
- Dry-run on wu: **672/672 PASS in 1.43s**.
|
|
75
|
+
- No new NPM deps.
|
|
76
|
+
|
|
77
|
+
### Out of scope (deferred to v0.16)
|
|
78
|
+
|
|
79
|
+
- **Deeper Generated-Staleness optimization** — still the slowest validator at 26% of guard time on wu. The cache helps cross-command flows but not single-guard runs. Next attack vector: stream `buildMemoryPlan` so it yields partial results as scanners complete, letting the validator early-exit on the first non-stale section.
|
|
80
|
+
- **`upgrade --apply --pr` battle-test** on a real GitHub repo. Logic shipped in v0.14; end-to-end PR creation hasn't been tested against a live remote with branch protections.
|
|
81
|
+
- **Cross-process memoization** — if guard / sync / fix runs in CI sequentially, they each rebuild the plan. A serialized cache under `.docguard/plan.cache.json` (keyed by a tree-state hash) would share across processes.
|
|
82
|
+
- **Tree-state hashing for plan cache invalidation** — currently the in-process cache assumes the tree doesn't change mid-run. A proper hash would let long-running `watch` mode keep a stable cache that only invalidates on actual file changes.
|
|
83
|
+
|
|
10
84
|
## [0.14.1] - 2026-05-26
|
|
11
85
|
|
|
12
86
|
Patch + small feature release responding to the wu-whatsappinbox v0.12 feedback.
|
|
@@ -10,3 +10,6 @@
|
|
|
10
10
|
| 2026-03-13 | `cli/commands/agents.mjs` | ARCHITECTURE.md | Agent config generators include `// DRIFT: reason` as instruction text for AI agents. 3 occurrences across Windsurf, Cursor, and generic agent configs. | Info | By design — instruction content |
|
|
11
11
|
| 2026-03-13 | `cli/validators/drift.mjs` | ARCHITECTURE.md | Drift validator references `// DRIFT:` pattern in JSDoc and regex. | Info | By design — validator implementation |
|
|
12
12
|
| 2026-05-12 | `tests/drift.test.mjs` | ARCHITECTURE.md | Drift validator tests use `// DRIFT:` comments to simulate project files having drift comments. | Info | By design — test implementation |
|
|
13
|
+
| 2026-05-26 | `tests/scoping-extended.test.mjs` | ARCHITECTURE.md | v0.15 P3 test fixture builds `// D' + 'RIFT:` strings via concat to test changed-files scoping without false-positiving the outer scan. | Info | By design — test implementation; mitigated by v0.15.1 hotfix that skips test files by default in Drift-Comments |
|
|
14
|
+
| 2026-05-26 | `cli/validators/drift.mjs` | ARCHITECTURE.md | Drift-Comments validator v0.15.1+ skips test files by default (matches TODO-Tracking's pattern). Opt in via `config.drift.includeTestFiles` if your project genuinely uses DRIFT markers in test code. | Info | By design — defensive default to prevent fixture false-positives |
|
|
15
|
+
| 2026-05-26 | `CHANGELOG.md` / `extensions/spec-kit-docguard/skills/*` | None | v0.12-v0.15 changelogs and release notes reference `// DRIFT:` in feature descriptions (e.g. K-3 .docguardignore, v0.13 sync, v0.14 P3 scoping). Documentation prose only, not actionable drift. | Info | By design — release notes |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: docguard-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.15.2
|
|
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
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- docguard:version 0.4.0 -->
|
|
4
4
|
<!-- docguard:status living -->
|
|
5
|
-
<!-- docguard:last-reviewed 2026-
|
|
5
|
+
<!-- docguard:last-reviewed 2026-05-26 -->
|
|
6
6
|
<!-- docguard:owner @raccioly -->
|
|
7
7
|
|
|
8
8
|
> The planned evolution of DocGuard and Canonical-Driven Development (CDD).
|
|
@@ -198,7 +198,7 @@ export function runGuardInternal(projectDir, config) {
|
|
|
198
198
|
* Freshness (git log), Traceability (REQ scan), Doc-Quality (prose lint) —
|
|
199
199
|
* stay off for speed.
|
|
200
200
|
*/
|
|
201
|
-
export const CHANGED_ONLY_VALIDATORS = ['docsSync', 'environment', 'apiSurface'];
|
|
201
|
+
export const CHANGED_ONLY_VALIDATORS = ['docsSync', 'environment', 'apiSurface', 'drift', 'todoTracking'];
|
|
202
202
|
|
|
203
203
|
/**
|
|
204
204
|
* Build a validators map that enables only the pre-commit-lite set.
|
|
@@ -167,6 +167,10 @@ export async function runInit(projectDir, config, flags) {
|
|
|
167
167
|
const ptc = typeDefaults[detectedType] || typeDefaults.unknown;
|
|
168
168
|
|
|
169
169
|
const defaultConfig = {
|
|
170
|
+
// v0.15-P4: $schema reference enables VS Code / IDE autocomplete +
|
|
171
|
+
// validation for .docguard.json fields. Picked up by any
|
|
172
|
+
// JSON-Schema-aware editor; ignored by DocGuard itself.
|
|
173
|
+
$schema: 'https://raccioly.github.io/docguard/schemas/docguard-config.schema.json',
|
|
170
174
|
projectName: config.projectName,
|
|
171
175
|
version: '0.5',
|
|
172
176
|
profile: profileName,
|
|
@@ -29,13 +29,58 @@ const md = {
|
|
|
29
29
|
},
|
|
30
30
|
};
|
|
31
31
|
|
|
32
|
+
/**
|
|
33
|
+
* v0.15-P1: in-process cache. buildMemoryPlan is expensive (~400ms on
|
|
34
|
+
* wu-whatsappinbox, 33% of total guard validator time) because it triggers
|
|
35
|
+
* routes/schemas/screens/frontend scanners — all of which walk the source
|
|
36
|
+
* tree. Within a single guard run, sync, generate, and the Generated-
|
|
37
|
+
* Staleness validator all ask for the SAME plan; without caching they each
|
|
38
|
+
* re-pay the cost.
|
|
39
|
+
*
|
|
40
|
+
* Cache key: projectDir + a config fingerprint that captures the fields the
|
|
41
|
+
* scanners actually consume (sourceRoot, ignore, projectType). Other config
|
|
42
|
+
* mutations (e.g. changedFiles per-validator) don't invalidate the plan.
|
|
43
|
+
*
|
|
44
|
+
* Bypass with `_skipCache: true` in opts — used by tests and any caller that
|
|
45
|
+
* wants a fresh scan.
|
|
46
|
+
*/
|
|
47
|
+
const _memoryPlanCache = new Map(); // key → plan
|
|
48
|
+
|
|
49
|
+
export function clearMemoryPlanCache() {
|
|
50
|
+
_memoryPlanCache.clear();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function _cacheKey(projectDir, config) {
|
|
54
|
+
return JSON.stringify({
|
|
55
|
+
dir: projectDir,
|
|
56
|
+
sourceRoot: config.sourceRoot,
|
|
57
|
+
ignore: Array.isArray(config.ignore) ? [...config.ignore].sort() : null,
|
|
58
|
+
projectType: config.projectType,
|
|
59
|
+
profile: config.profile,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
|
|
32
63
|
/**
|
|
33
64
|
* Build the full memory plan for a project.
|
|
34
65
|
* @returns {{ profile, surface, docs, agentTasks }}
|
|
35
66
|
* docs[].sections[]: { id, source:'code', body } OR { id, source:'human', task, grounding }
|
|
36
67
|
* agentTasks: flattened prose tasks the AI must write.
|
|
37
68
|
*/
|
|
38
|
-
export function buildMemoryPlan(projectDir, config = {}) {
|
|
69
|
+
export function buildMemoryPlan(projectDir, config = {}, opts = {}) {
|
|
70
|
+
if (!opts._skipCache) {
|
|
71
|
+
const key = _cacheKey(projectDir, config);
|
|
72
|
+
const cached = _memoryPlanCache.get(key);
|
|
73
|
+
if (cached) return cached;
|
|
74
|
+
}
|
|
75
|
+
const result = _buildMemoryPlanUncached(projectDir, config);
|
|
76
|
+
if (!opts._skipCache) {
|
|
77
|
+
_memoryPlanCache.set(_cacheKey(projectDir, config), result);
|
|
78
|
+
}
|
|
79
|
+
return result;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Original implementation, renamed so the public buildMemoryPlan can wrap it.
|
|
83
|
+
function _buildMemoryPlanUncached(projectDir, config = {}) {
|
|
39
84
|
const profile = detectProjectProfile(projectDir, config);
|
|
40
85
|
const primaryFramework = profile.primary?.framework || profile.frameworks[0] || '';
|
|
41
86
|
|
|
@@ -690,20 +690,45 @@ function readFileSafe(path) {
|
|
|
690
690
|
try { return readFileSync(path, 'utf-8'); } catch { return null; }
|
|
691
691
|
}
|
|
692
692
|
|
|
693
|
+
// v0.15-P2: walkDir is called 8 times across schemas.mjs (Pydantic, Mongoose,
|
|
694
|
+
// Prisma, SQLAlchemy, Sequelize, GORM, Sqlx, Hibernate). Each call walks the
|
|
695
|
+
// same tree. Cache the file list per (dir, extension-set) so subsequent
|
|
696
|
+
// callers iterate an array instead of re-traversing.
|
|
697
|
+
//
|
|
698
|
+
// Cache key: just the dir path. The extension filter is constant across all
|
|
699
|
+
// callers (the regex hard-coded below), so a single cache slot per dir works.
|
|
700
|
+
// Lifetime: per-process. `clearWalkDirCache()` invalidates for tests.
|
|
701
|
+
const _walkDirCache = new Map(); // dir → string[] of file paths
|
|
702
|
+
|
|
703
|
+
export function clearWalkDirCache() {
|
|
704
|
+
_walkDirCache.clear();
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
const _CODE_FILE_RE = /\.(js|mjs|cjs|ts|tsx|jsx|py|rs|go|java|kt|rb)$/;
|
|
708
|
+
|
|
709
|
+
function _collectFiles(dir, out) {
|
|
710
|
+
let entries;
|
|
711
|
+
try { entries = readdirSync(dir, { withFileTypes: true }); } catch { return; }
|
|
712
|
+
for (const entry of entries) {
|
|
713
|
+
if (IGNORE_DIRS.has(entry.name) || entry.name.startsWith('.')) continue;
|
|
714
|
+
const fullPath = join(dir, entry.name);
|
|
715
|
+
if (entry.isDirectory()) {
|
|
716
|
+
_collectFiles(fullPath, out);
|
|
717
|
+
} else if (entry.isFile() && _CODE_FILE_RE.test(entry.name)) {
|
|
718
|
+
out.push(fullPath);
|
|
719
|
+
}
|
|
720
|
+
}
|
|
721
|
+
}
|
|
722
|
+
|
|
693
723
|
function walkDir(dir, callback) {
|
|
694
724
|
if (!existsSync(dir)) return;
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
} else if (entry.isFile() && /\.(js|mjs|cjs|ts|tsx|jsx|py|rs|go|java|kt|rb)$/.test(entry.name)) {
|
|
703
|
-
callback(fullPath);
|
|
704
|
-
}
|
|
705
|
-
}
|
|
706
|
-
} catch { /* skip */ }
|
|
725
|
+
let files = _walkDirCache.get(dir);
|
|
726
|
+
if (!files) {
|
|
727
|
+
files = [];
|
|
728
|
+
_collectFiles(dir, files);
|
|
729
|
+
_walkDirCache.set(dir, files);
|
|
730
|
+
}
|
|
731
|
+
for (const f of files) callback(f);
|
|
707
732
|
}
|
|
708
733
|
|
|
709
734
|
/**
|
|
@@ -20,21 +20,27 @@ const IGNORE_DIRS = new Set([
|
|
|
20
20
|
export function validateDrift(projectDir, config) {
|
|
21
21
|
const results = { name: 'drift', errors: [], warnings: [], passed: 0, total: 0 };
|
|
22
22
|
|
|
23
|
-
//
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
// v0.15-P3: when config.changedFiles is set (--changed-only mode), only
|
|
24
|
+
// visit the listed paths. Drift comments in unchanged files are still in
|
|
25
|
+
// git so they'll be caught by a full guard run; pre-commit hooks care
|
|
26
|
+
// about NEW drift comments in this commit.
|
|
27
|
+
const scanFile = (filePath) => {
|
|
26
28
|
const ext = extname(filePath);
|
|
27
29
|
if (!CODE_EXTENSIONS.has(ext)) return;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
//
|
|
30
|
+
// v0.15 hotfix: test files commonly contain literal `// DRIFT:` inside
|
|
31
|
+
// string fixtures (e.g. `'// DRIFT: a-drift\n'`). Reading the test as
|
|
32
|
+
// source would treat the string as a real drift comment. Skip test
|
|
33
|
+
// files unless the user opts in — same pattern TODO-Tracking uses.
|
|
34
|
+
const rel = filePath.replace(projectDir + '/', '');
|
|
35
|
+
const includeTests = config?.drift?.includeTestFiles === true;
|
|
36
|
+
if (!includeTests && /(^|\/)(__tests__|tests?|spec)\/|\.(test|spec)\.[^.]+$/.test(rel)) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
let content;
|
|
40
|
+
try { content = readFileSync(filePath, 'utf-8'); } catch { return; }
|
|
32
41
|
if (!content.includes('DRIFT:')) return;
|
|
33
|
-
|
|
34
42
|
const lines = content.split('\n');
|
|
35
|
-
|
|
36
43
|
lines.forEach((line, i) => {
|
|
37
|
-
// Match various comment styles: // DRIFT:, # DRIFT:, /* DRIFT:, -- DRIFT:
|
|
38
44
|
const match = line.match(/(?:\/\/|#|\/\*|\-\-)\s*DRIFT:\s*(.+)/i);
|
|
39
45
|
if (match) {
|
|
40
46
|
driftComments.push({
|
|
@@ -44,7 +50,16 @@ export function validateDrift(projectDir, config) {
|
|
|
44
50
|
});
|
|
45
51
|
}
|
|
46
52
|
});
|
|
47
|
-
}
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
const driftComments = [];
|
|
56
|
+
if (Array.isArray(config.changedFiles) && config.changedFiles.length > 0) {
|
|
57
|
+
for (const rel of config.changedFiles) {
|
|
58
|
+
scanFile(resolve(projectDir, rel));
|
|
59
|
+
}
|
|
60
|
+
} else {
|
|
61
|
+
walkDir(projectDir, scanFile);
|
|
62
|
+
}
|
|
48
63
|
|
|
49
64
|
if (driftComments.length === 0) {
|
|
50
65
|
// No // DRIFT: comments to reconcile — not applicable (NOT a pass).
|
|
@@ -329,6 +329,20 @@ function isSelfPath(fullPath) {
|
|
|
329
329
|
}
|
|
330
330
|
|
|
331
331
|
function findTodos(rootDir, dir, todos, config) {
|
|
332
|
+
// v0.15-P3: when config.changedFiles is set (--changed-only mode), only
|
|
333
|
+
// scan those paths. New TODOs in this commit get caught; pre-existing
|
|
334
|
+
// TODOs in unchanged files are still tracked by full guard runs.
|
|
335
|
+
if (dir === rootDir && Array.isArray(config?.changedFiles) && config.changedFiles.length > 0) {
|
|
336
|
+
for (const rel of config.changedFiles) {
|
|
337
|
+
const full = resolve(rootDir, rel);
|
|
338
|
+
let stat;
|
|
339
|
+
try { stat = statSync(full); } catch { continue; }
|
|
340
|
+
if (!stat.isFile()) continue;
|
|
341
|
+
_scanTodoFile(rootDir, full, todos, config);
|
|
342
|
+
}
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
|
|
332
346
|
let entries;
|
|
333
347
|
try { entries = readdirSync(dir); } catch { return; }
|
|
334
348
|
|
|
@@ -345,47 +359,44 @@ function findTodos(rootDir, dir, todos, config) {
|
|
|
345
359
|
if (stat.isDirectory()) {
|
|
346
360
|
findTodos(rootDir, full, todos, config);
|
|
347
361
|
} else {
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
});
|
|
387
|
-
}
|
|
388
|
-
}
|
|
362
|
+
_scanTodoFile(rootDir, full, todos, config);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
/**
|
|
368
|
+
* v0.15-P3: per-file TODO scan extracted so both the full-tree walker and
|
|
369
|
+
* the --changed-only path can reuse it. Honors test-file filtering,
|
|
370
|
+
* self-path skip, ignore patterns, and the TODO regex.
|
|
371
|
+
*/
|
|
372
|
+
function _scanTodoFile(rootDir, full, todos, config) {
|
|
373
|
+
const includeTests = config?.todoTracking?.includeTestFiles === true;
|
|
374
|
+
const ext = extname(full).toLowerCase();
|
|
375
|
+
if (!SOURCE_EXTENSIONS.has(ext)) return;
|
|
376
|
+
|
|
377
|
+
const relPath = relative(rootDir, full);
|
|
378
|
+
|
|
379
|
+
if (!includeTests && isTestFilePath(relPath)) return;
|
|
380
|
+
if (isSelfPath(full)) return;
|
|
381
|
+
if (config && shouldIgnore(relPath, config, 'todoIgnore')) return;
|
|
382
|
+
|
|
383
|
+
let content;
|
|
384
|
+
try { content = readFileSync(full, 'utf-8'); } catch { return; }
|
|
385
|
+
if (!TODO_PATTERN.test(content)) return;
|
|
386
|
+
|
|
387
|
+
const lines = content.split('\n');
|
|
388
|
+
for (let i = 0; i < lines.length; i++) {
|
|
389
|
+
const commentText = commentPortion(lines[i]);
|
|
390
|
+
if (commentText === null) continue;
|
|
391
|
+
if (TODO_PATTERN.test(commentText)) {
|
|
392
|
+
const match = commentText.match(TODO_EXTRACT);
|
|
393
|
+
if (match) {
|
|
394
|
+
todos.push({
|
|
395
|
+
keyword: match[1].toUpperCase(),
|
|
396
|
+
text: match[2].trim(),
|
|
397
|
+
file: relPath,
|
|
398
|
+
line: i + 1,
|
|
399
|
+
});
|
|
389
400
|
}
|
|
390
401
|
}
|
|
391
402
|
}
|
|
@@ -48,7 +48,12 @@ function applyReplaceCount(projectDir, fix) {
|
|
|
48
48
|
const full = resolve(projectDir, fix.file);
|
|
49
49
|
if (!existsSync(full)) return { applied: false };
|
|
50
50
|
const content = readFileSync(full, 'utf-8');
|
|
51
|
-
|
|
51
|
+
// v0.15.2 hotfix: case-insensitive label match. Mirrors the validator's
|
|
52
|
+
// detection regex (which is `gi`). Without `i` here, the applier would
|
|
53
|
+
// skip "21 Validators" (capitalized) even though Metrics-Consistency
|
|
54
|
+
// detected it — leaving the user with a warning they couldn't auto-fix.
|
|
55
|
+
// The /docguard.diagnose run on canonical-spec-kit surfaced this.
|
|
56
|
+
const re = new RegExp(`\\b${esc(fix.found)}(\\s+(?:automated\\s+)?${esc(fix.label)}\\b)`, 'gi');
|
|
52
57
|
const next = content.replace(re, `${fix.actual}$1`);
|
|
53
58
|
if (next === content) return { applied: false };
|
|
54
59
|
writeFileSync(full, next, 'utf-8');
|
|
@@ -4,7 +4,7 @@ Enterprise-grade Canonical-Driven Development (CDD) enforcement and **AI-readabl
|
|
|
4
4
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
7
|
-
- **
|
|
7
|
+
- **22 Validators** — Structure, Security, Doc Quality, Test-Spec, Drift-Comments, API-Surface, Freshness, Cross-Reference, and 13 more
|
|
8
8
|
- **Language-agnostic** — JS/TS, Python, Rust, Go, Java/Kotlin, Ruby, PHP, C#. Polyglot/monorepo-aware.
|
|
9
9
|
- **AI-powered Generate** — `generate --plan` builds the code-truth skeleton in `<!-- docguard:section -->` markers and emits a structured agent task manifest; the AI writes the prose.
|
|
10
10
|
- **Always up to date** — `sync` surgically refreshes code-truth doc sections in place, **preserves human prose**, flags prose for agent review.
|
|
@@ -3,7 +3,7 @@ schema_version: "1.0"
|
|
|
3
3
|
extension:
|
|
4
4
|
id: "docguard"
|
|
5
5
|
name: "DocGuard — CDD Enforcement"
|
|
6
|
-
version: "0.
|
|
6
|
+
version: "0.15.2"
|
|
7
7
|
description: "Canonical-Driven Development enforcement as a true spec-kit extension. LLM-first design with 19 automated validators, 4 AI behavior skills, spec-kit skill chaining, and workflow hooks. Zero NPM runtime dependencies."
|
|
8
8
|
author: "Ricardo Accioly"
|
|
9
9
|
repository: "https://github.com/raccioly/docguard"
|
|
@@ -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.15.2
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-fix
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.
|
|
12
|
+
<!-- docguard:version: 0.15.2 -->
|
|
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.15.2
|
|
11
11
|
source: extensions/spec-kit-docguard/skills/docguard-guard
|
|
12
12
|
---
|
|
13
|
-
<!-- docguard:version: 0.
|
|
13
|
+
<!-- docguard:version: 0.15.2 -->
|
|
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.15.2
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-review
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.
|
|
12
|
+
<!-- docguard:version: 0.15.2 -->
|
|
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.15.2
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-score
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.
|
|
12
|
+
<!-- docguard:version: 0.15.2 -->
|
|
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.15.2
|
|
8
8
|
source: extensions/spec-kit-docguard/skills/docguard-sync
|
|
9
9
|
---
|
|
10
10
|
|