docguard-cli 0.21.1__tar.gz → 0.22.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {docguard_cli-0.21.1/extensions/spec-kit-docguard → docguard_cli-0.22.1/.agent}/skills/docguard-fix/SKILL.md +2 -2
- {docguard_cli-0.21.1/extensions/spec-kit-docguard → docguard_cli-0.22.1/.agent}/skills/docguard-guard/SKILL.md +3 -3
- {docguard_cli-0.21.1/extensions/spec-kit-docguard → docguard_cli-0.22.1/.agent}/skills/docguard-review/SKILL.md +2 -2
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.agent/skills/docguard-score/SKILL.md +2 -2
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.agent/skills/docguard-sync/SKILL.md +1 -1
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.docguard.json +36 -1
- docguard_cli-0.22.1/.github/dependabot.yml +23 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.github/workflows/ci.yml +2 -2
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.github/workflows/release.yml +142 -6
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.github/workflows/sync-speckit-catalog.yml +14 -11
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.gitignore +4 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.jules/palette.md +4 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/AGENTS.md +1 -1
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/CHANGELOG.md +154 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/PKG-INFO +24 -10
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/README.md +23 -9
- docguard_cli-0.22.1/assets/bin/docguard +2 -0
- docguard_cli-0.22.1/assets/demo.gif +0 -0
- docguard_cli-0.22.1/assets/demo.tape +27 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/commands/explain.mjs +22 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/commands/guard.mjs +2 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/commands/memory.mjs +11 -1
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/commands/upgrade.mjs +12 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/docguard.mjs +1 -1
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/scanners/routes.mjs +8 -2
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/shared-source.mjs +9 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/validators/docs-diff.mjs +18 -3
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/validators/environment.mjs +13 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/validators/freshness.mjs +33 -3
- docguard_cli-0.22.1/cli/validators/surface-sync.mjs +365 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/validators/test-spec.mjs +1 -1
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/validators/traceability.mjs +65 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/docs/quickstart.md +1 -1
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/docs-canonical/CI-RECIPES.md +2 -2
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/docs-canonical/REQUIREMENTS.md +5 -5
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/extensions/spec-kit-docguard/README.md +1 -1
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/extensions/spec-kit-docguard/commands/guard.md +2 -2
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/extensions/spec-kit-docguard/extension.yml +1 -1
- {docguard_cli-0.21.1/.agent → docguard_cli-0.22.1/extensions/spec-kit-docguard}/skills/docguard-fix/SKILL.md +2 -2
- {docguard_cli-0.21.1/.agent → docguard_cli-0.22.1/extensions/spec-kit-docguard}/skills/docguard-guard/SKILL.md +3 -3
- {docguard_cli-0.21.1/.agent → docguard_cli-0.22.1/extensions/spec-kit-docguard}/skills/docguard-review/SKILL.md +2 -2
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/extensions/spec-kit-docguard/skills/docguard-score/SKILL.md +2 -2
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/extensions/spec-kit-docguard/skills/docguard-sync/SKILL.md +1 -1
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/package.json +1 -1
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/pyproject.toml +1 -1
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/schemas/docguard-config.schema.json +26 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/specs/002-fix-test-discovery/plan.md +21 -0
- docguard_cli-0.22.1/specs/004-v020-env-var-false-negative/spec.md +147 -0
- docguard_cli-0.22.1/specs/005-hugocross-next-bugs/spec.md +365 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/docs-diff.test.mjs +23 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/environment.test.mjs +62 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/freshness.test.mjs +76 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/npm-pack-smoke.test.mjs +2 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/plan-disk-cache.test.mjs +2 -0
- docguard_cli-0.22.1/tests/routes-nextjs-app-router.test.mjs +72 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/security-init-injection.test.mjs +2 -0
- docguard_cli-0.22.1/tests/surface-sync.test.mjs +339 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/traceability.test.mjs +45 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/vscode-extension/extension.js +10 -0
- docguard_cli-0.21.1/.github/dependabot.yml +0 -20
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.agent/commands/speckit.analyze.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.agent/commands/speckit.checklist.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.agent/commands/speckit.clarify.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.agent/commands/speckit.constitution.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.agent/commands/speckit.implement.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.agent/commands/speckit.plan.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.agent/commands/speckit.specify.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.agent/commands/speckit.tasks.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.agent/commands/speckit.taskstoissues.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.agent/skills/speckit-analyze/SKILL.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.agent/skills/speckit-checklist/SKILL.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.agent/skills/speckit-clarify/SKILL.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.agent/skills/speckit-constitution/SKILL.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.agent/skills/speckit-implement/SKILL.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.agent/skills/speckit-plan/SKILL.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.agent/skills/speckit-specify/SKILL.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.agent/skills/speckit-tasks/SKILL.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.agent/skills/speckit-taskstoissues/SKILL.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.docguardignore +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.github/scripts/patch-catalog.py +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.github/workflows/supply-chain.yml +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.jules/bolt.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.jules/sentinel.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.npmignore +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.npmrc +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.specify/extensions/.cache/catalog-ebf165086500aab1-metadata.json +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.specify/extensions/.cache/catalog-ebf165086500aab1.json +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.specify/extensions/.cache/catalog-metadata.json +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.specify/extensions/.cache/catalog.json +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.specify/init-options.json +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.specify/memory/constitution.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.specify/scripts/bash/check-prerequisites.sh +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.specify/scripts/bash/common.sh +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.specify/scripts/bash/create-new-feature.sh +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.specify/scripts/bash/setup-plan.sh +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.specify/scripts/bash/update-agent-context.sh +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.specify/templates/agent-file-template.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.specify/templates/checklist-template.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.specify/templates/constitution-template.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.specify/templates/plan-template.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.specify/templates/spec-template.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/.specify/templates/tasks-template.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/CODE_OF_CONDUCT.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/COMPARISONS.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/CONTRIBUTING.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/DRIFT-LOG.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/LICENSE +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/PHILOSOPHY.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/ROADMAP.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/SECURITY.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/STANDARD.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/SUPPLY-CHAIN-AUDIT.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/SUPPORT.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/action.yml +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/commands/agents.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/commands/badge.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/commands/ci.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/commands/demo.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/commands/diagnose.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/commands/diff.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/commands/fix.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/commands/generate.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/commands/hooks.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/commands/impact.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/commands/init.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/commands/llms.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/commands/publish.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/commands/score.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/commands/setup.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/commands/sync.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/commands/trace.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/commands/watch.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/ensure-skills.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/scanners/api-doc.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/scanners/cdk.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/scanners/doc-tools.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/scanners/frontend.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/scanners/iac.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/scanners/integrations.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/scanners/memory-plan.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/scanners/project-type.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/scanners/schemas.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/scanners/speckit.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/shared-git.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/shared-ignore.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/shared.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/validators/api-surface.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/validators/architecture.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/validators/canonical-sync.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/validators/changelog.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/validators/cross-reference.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/validators/doc-quality.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/validators/docs-coverage.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/validators/docs-sync.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/validators/drift.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/validators/generated-staleness.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/validators/metadata-sync.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/validators/metrics-consistency.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/validators/schema-sync.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/validators/security.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/validators/spec-kit.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/validators/structure.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/validators/todo-tracking.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/writers/api-reference.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/writers/fix-memory.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/writers/mechanical.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/cli/writers/sections.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/commands/docguard.fix.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/commands/docguard.guard.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/commands/docguard.review.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/commands/docguard.score.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/configs/fastify.json +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/configs/generic.json +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/configs/nextjs.json +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/configs/python.json +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/docguard_cli/__init__.py +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/docguard_cli/wrapper.py +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/docs/ai-integration.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/docs/commands.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/docs/configuration.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/docs/doc-sections.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/docs/faq.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/docs/installation.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/docs/profiles.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/docs-canonical/DATA-MODEL.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/docs-canonical/ENVIRONMENT.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/docs-canonical/SECURITY.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/docs-canonical/SURFACE-AUDIT.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/docs-canonical/TEST-SPEC.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/docs-implementation/MIGRATION-v0.20.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/examples/01-express-api/README.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/examples/01-express-api/package.json +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/examples/01-express-api/server.js +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/examples/02-python-flask/README.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/examples/02-python-flask/app.py +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/examples/02-python-flask/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/examples/02-python-flask/requirements.txt +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/examples/03-spec-kit-project/CHANGELOG.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/examples/03-spec-kit-project/README.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/examples/03-spec-kit-project/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/examples/03-spec-kit-project/docs-canonical/TEST-SPEC.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/examples/03-spec-kit-project/package.json +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/examples/03-spec-kit-project/src/index.js +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/examples/03-spec-kit-project/tests/basic.test.js +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/examples/README.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/extensions/spec-kit-docguard/LICENSE +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/extensions/spec-kit-docguard/commands/diagnose.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/extensions/spec-kit-docguard/commands/fix.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/extensions/spec-kit-docguard/commands/generate.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/extensions/spec-kit-docguard/commands/init.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/extensions/spec-kit-docguard/commands/score.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/extensions/spec-kit-docguard/commands/sync.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/extensions/spec-kit-docguard/commands/trace.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/extensions/spec-kit-docguard/scripts/bash/common.sh +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/extensions/spec-kit-docguard/scripts/bash/docguard-check-docs.sh +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/extensions/spec-kit-docguard/scripts/bash/docguard-init-doc.sh +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/extensions/spec-kit-docguard/scripts/bash/docguard-suggest-fix.sh +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/extensions/spec-kit-docguard/templates/extensions.yml +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/extensions/spec-kit-docguard/templates/github-workflows/docguard-autofix.yml +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/extensions/spec-kit-docguard/templates/github-workflows/docguard-guard.yml +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/pr_description.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/specs/001-fix-ignore-validators/plan.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/specs/001-fix-ignore-validators/spec.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/specs/001-fix-ignore-validators/tasks.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/specs/002-fix-test-discovery/spec.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/specs/002-fix-test-discovery/tasks.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/specs/003-v011-false-positives/plan.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/specs/003-v011-false-positives/spec.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/specs/003-v011-false-positives/tasks.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/ADR.md.template +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/AGENTS.md.template +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/ARCHITECTURE.md.template +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/CHANGELOG.md.template +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/CURRENT-STATE.md.template +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/DATA-MODEL.md.template +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/DEPLOYMENT.md.template +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/DRIFT-LOG.md.template +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/ENVIRONMENT.md.template +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/KNOWN-GOTCHAS.md.template +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/REQUIREMENTS.md.template +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/ROADMAP.md.template +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/RUNBOOKS.md.template +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/SECURITY.md.template +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/TEST-SPEC.md.template +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/TROUBLESHOOTING.md.template +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/VENDOR-BUGS.md.template +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/ci/github-actions.yml +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/commands/docguard.fix.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/commands/docguard.guard.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/commands/docguard.init.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/commands/docguard.review.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/commands/docguard.update.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/demo-fixture/.docguard.json +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/demo-fixture/.env.example +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/demo-fixture/AGENTS.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/demo-fixture/CHANGELOG.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/demo-fixture/DRIFT-LOG.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/demo-fixture/README.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/demo-fixture/docs-canonical/API-REFERENCE.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/demo-fixture/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/demo-fixture/docs-canonical/DATA-MODEL.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/demo-fixture/docs-canonical/ENVIRONMENT.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/demo-fixture/docs-canonical/SECURITY.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/demo-fixture/docs-canonical/TEST-SPEC.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/demo-fixture/package.json +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/demo-fixture/src/api.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/demo-fixture/src/notifier.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/demo-fixture/src/scheduler.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/templates/demo-fixture/src/worker.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/test-draft.js +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/test-metrics.js +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/anchor-autofix.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/api-doc.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/api-surface.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/api-write.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/architecture.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/b7-node-env-symmetry.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/backup-failure.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/canonical-sync.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/cdk-detection.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/changed-only-scoping.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/changed-only.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/changelog.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/commands.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/cross-reference.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/demo-command.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/doc-quality.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/docguardignore.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/docs-coverage.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/docs-sync.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/drift.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/fix-memory.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/fix-suppression.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/fixture-projects.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/frontend-deep.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/frontend.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/generated-staleness.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/guard-classify.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/guard-no-throw.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/hooks.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/i18n.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/impact.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/init-smart-detection.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/integrations.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/mechanical.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/memory-plan.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/metadata-sync.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/metrics-consistency.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/metrics-dedup.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/monorepo-scanning.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/multi-spec.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/patch-0.11.2.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/profile-flag.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/project-type.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/regenerate-section.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/routes-multilang.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/schema-sync.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/schemas-multilang.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/schemas.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/scoping-extended.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/section-na-markers.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/sections.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/security.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/severity.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/shared-git.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/shared-source.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/stress-test.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/structure.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/sweep-nudge.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/sync-since.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/sync.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/test-spec.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/todo-tracking.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/trace-multilang.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/trace-reverse.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/upgrade-pr-e2e.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/upgrade-pr.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/upgrade.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/v020-consolidation.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/validator-naming.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/version-pin.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/tests/whats-new.test.mjs +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/vscode-extension/.vscodeignore +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/vscode-extension/README.md +0 -0
- {docguard_cli-0.21.1 → docguard_cli-0.22.1}/vscode-extension/package.json +0 -0
|
@@ -6,10 +6,10 @@ description: AI-driven documentation repair with structured research workflow, t
|
|
|
6
6
|
compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
|
|
7
7
|
metadata:
|
|
8
8
|
author: docguard
|
|
9
|
-
version: 0.
|
|
9
|
+
version: 0.22.1
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-fix
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.
|
|
12
|
+
<!-- docguard:version: 0.22.1 -->
|
|
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.22.1
|
|
11
11
|
source: extensions/spec-kit-docguard/skills/docguard-guard
|
|
12
12
|
---
|
|
13
|
-
<!-- docguard:version: 0.
|
|
13
|
+
<!-- docguard:version: 0.22.1 -->
|
|
14
14
|
|
|
15
15
|
# DocGuard Guard Skill
|
|
16
16
|
|
|
@@ -24,7 +24,7 @@ You **MUST** consider the user input before proceeding (if not empty).
|
|
|
24
24
|
|
|
25
25
|
## Goal
|
|
26
26
|
|
|
27
|
-
Execute DocGuard's
|
|
27
|
+
Execute DocGuard's full guard validator suite against the current project, parse structured results, triage findings by severity and impact, and produce an actionable remediation plan. This skill transforms raw CLI output into an AI-digestible quality assessment.
|
|
28
28
|
|
|
29
29
|
## Pre-Execution Checks
|
|
30
30
|
|
|
@@ -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.22.1
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-review
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.
|
|
12
|
+
<!-- docguard:version: 0.22.1 -->
|
|
13
13
|
|
|
14
14
|
# DocGuard Review Skill
|
|
15
15
|
|
|
@@ -6,10 +6,10 @@ description: CDD maturity assessment with category-aware improvement roadmap. Ru
|
|
|
6
6
|
compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
|
|
7
7
|
metadata:
|
|
8
8
|
author: docguard
|
|
9
|
-
version: 0.
|
|
9
|
+
version: 0.22.1
|
|
10
10
|
source: extensions/spec-kit-docguard/skills/docguard-score
|
|
11
11
|
---
|
|
12
|
-
<!-- docguard:version: 0.
|
|
12
|
+
<!-- docguard:version: 0.22.1 -->
|
|
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.22.1
|
|
8
8
|
source: extensions/spec-kit-docguard/skills/docguard-sync
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -40,5 +40,40 @@
|
|
|
40
40
|
"environment": true,
|
|
41
41
|
"freshness": true
|
|
42
42
|
},
|
|
43
|
-
"severity": {}
|
|
43
|
+
"severity": {},
|
|
44
|
+
"surfaceSync": {
|
|
45
|
+
"surfaces": [
|
|
46
|
+
{
|
|
47
|
+
"name": "commands",
|
|
48
|
+
"glob": "cli/commands/*.mjs",
|
|
49
|
+
"extract": "basename-no-ext",
|
|
50
|
+
"ignore": [
|
|
51
|
+
"agents", "hooks", "ci", "badge", "llms", "publish",
|
|
52
|
+
"setup", "impact"
|
|
53
|
+
],
|
|
54
|
+
"docs": ["README.md"],
|
|
55
|
+
"section": "Usage"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"name": "validators",
|
|
59
|
+
"glob": "cli/validators/*.mjs",
|
|
60
|
+
"extract": "basename-no-ext",
|
|
61
|
+
"ignore": [
|
|
62
|
+
"drift",
|
|
63
|
+
"doc",
|
|
64
|
+
"doc-sections",
|
|
65
|
+
"drift-comments"
|
|
66
|
+
],
|
|
67
|
+
"docs": ["README.md"],
|
|
68
|
+
"section": "Validators"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"name": "slash-commands",
|
|
72
|
+
"glob": "templates/commands/*.md",
|
|
73
|
+
"extract": "basename-no-ext",
|
|
74
|
+
"docs": ["README.md"],
|
|
75
|
+
"section": "Slash Commands"
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
}
|
|
44
79
|
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
- package-ecosystem: "npm"
|
|
4
|
+
directory: "/"
|
|
5
|
+
schedule:
|
|
6
|
+
interval: "monthly"
|
|
7
|
+
groups:
|
|
8
|
+
all-npm:
|
|
9
|
+
patterns: ["*"]
|
|
10
|
+
- package-ecosystem: "pip"
|
|
11
|
+
directory: "/"
|
|
12
|
+
schedule:
|
|
13
|
+
interval: "monthly"
|
|
14
|
+
groups:
|
|
15
|
+
all-pip:
|
|
16
|
+
patterns: ["*"]
|
|
17
|
+
- package-ecosystem: "github-actions"
|
|
18
|
+
directory: "/"
|
|
19
|
+
schedule:
|
|
20
|
+
interval: "monthly"
|
|
21
|
+
groups:
|
|
22
|
+
all-actions:
|
|
23
|
+
patterns: ["*"]
|
|
@@ -15,7 +15,7 @@ jobs:
|
|
|
15
15
|
node-version: [18, 20, 22]
|
|
16
16
|
|
|
17
17
|
steps:
|
|
18
|
-
- uses: actions/checkout@
|
|
18
|
+
- uses: actions/checkout@v6
|
|
19
19
|
with:
|
|
20
20
|
fetch-depth: 0 # Full git history for freshness validator
|
|
21
21
|
|
|
@@ -81,7 +81,7 @@ jobs:
|
|
|
81
81
|
if: startsWith(github.ref, 'refs/tags/v')
|
|
82
82
|
needs: test
|
|
83
83
|
steps:
|
|
84
|
-
- uses: actions/checkout@
|
|
84
|
+
- uses: actions/checkout@v6
|
|
85
85
|
- uses: actions/setup-node@v6
|
|
86
86
|
with:
|
|
87
87
|
node-version: 20
|
|
@@ -19,7 +19,7 @@ jobs:
|
|
|
19
19
|
version: ${{ steps.check.outputs.version }}
|
|
20
20
|
changed: ${{ steps.check.outputs.changed }}
|
|
21
21
|
steps:
|
|
22
|
-
- uses: actions/checkout@
|
|
22
|
+
- uses: actions/checkout@v6
|
|
23
23
|
with:
|
|
24
24
|
fetch-depth: 2 # Need previous commit to compare
|
|
25
25
|
|
|
@@ -49,7 +49,7 @@ jobs:
|
|
|
49
49
|
matrix:
|
|
50
50
|
node-version: [18, 20, 22]
|
|
51
51
|
steps:
|
|
52
|
-
- uses: actions/checkout@
|
|
52
|
+
- uses: actions/checkout@v6
|
|
53
53
|
with:
|
|
54
54
|
fetch-depth: 0
|
|
55
55
|
- uses: actions/setup-node@v6
|
|
@@ -68,7 +68,7 @@ jobs:
|
|
|
68
68
|
outputs:
|
|
69
69
|
tag: v${{ needs.detect-version.outputs.version }}
|
|
70
70
|
steps:
|
|
71
|
-
- uses: actions/checkout@
|
|
71
|
+
- uses: actions/checkout@v6
|
|
72
72
|
with:
|
|
73
73
|
fetch-depth: 0 # Fetch all history + tags for reliable tag detection
|
|
74
74
|
|
|
@@ -125,7 +125,7 @@ jobs:
|
|
|
125
125
|
needs: [detect-version, create-release]
|
|
126
126
|
runs-on: ubuntu-latest
|
|
127
127
|
steps:
|
|
128
|
-
- uses: actions/checkout@
|
|
128
|
+
- uses: actions/checkout@v6
|
|
129
129
|
|
|
130
130
|
- name: Build extension ZIP
|
|
131
131
|
run: |
|
|
@@ -150,7 +150,7 @@ jobs:
|
|
|
150
150
|
needs: [detect-version, test, create-release]
|
|
151
151
|
runs-on: ubuntu-latest
|
|
152
152
|
steps:
|
|
153
|
-
- uses: actions/checkout@
|
|
153
|
+
- uses: actions/checkout@v6
|
|
154
154
|
- uses: actions/setup-node@v6
|
|
155
155
|
with:
|
|
156
156
|
node-version: 20
|
|
@@ -166,7 +166,7 @@ jobs:
|
|
|
166
166
|
needs: [detect-version, test, create-release]
|
|
167
167
|
runs-on: ubuntu-latest
|
|
168
168
|
steps:
|
|
169
|
-
- uses: actions/checkout@
|
|
169
|
+
- uses: actions/checkout@v6
|
|
170
170
|
- uses: actions/setup-python@v6
|
|
171
171
|
with:
|
|
172
172
|
python-version: '3.12'
|
|
@@ -189,3 +189,139 @@ jobs:
|
|
|
189
189
|
env:
|
|
190
190
|
TWINE_USERNAME: __token__
|
|
191
191
|
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
|
192
|
+
|
|
193
|
+
# ── Step 7: Sync Spec Kit community catalog ────────────────────────────
|
|
194
|
+
# Inlined here (rather than triggered via workflow_run from a sibling
|
|
195
|
+
# workflow) because workflow_run-triggered jobs get 401 on the
|
|
196
|
+
# `gh repo sync … --source github/spec-kit` API call even with a valid
|
|
197
|
+
# PAT in secrets. Same-workflow secret access is consistent — fixes the
|
|
198
|
+
# auto-sync that was failing on every release since the workflow_run
|
|
199
|
+
# auth quirk surfaced.
|
|
200
|
+
sync-catalog:
|
|
201
|
+
needs: [detect-version, build-extension, publish-npm, publish-pypi]
|
|
202
|
+
if: needs.detect-version.outputs.changed == 'true'
|
|
203
|
+
runs-on: ubuntu-latest
|
|
204
|
+
steps:
|
|
205
|
+
- name: Checkout docguard repo
|
|
206
|
+
uses: actions/checkout@v6
|
|
207
|
+
|
|
208
|
+
- name: Get version and metadata
|
|
209
|
+
id: meta
|
|
210
|
+
run: |
|
|
211
|
+
VERSION="${{ needs.detect-version.outputs.version }}"
|
|
212
|
+
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
|
|
213
|
+
echo "tag=v${VERSION}" >> "$GITHUB_OUTPUT"
|
|
214
|
+
echo "download_url=https://github.com/raccioly/docguard/releases/download/v${VERSION}/spec-kit-docguard-v${VERSION}.zip" >> "$GITHUB_OUTPUT"
|
|
215
|
+
echo "updated_at=$(date -u +%Y-%m-%dT%H:%M:%SZ)" >> "$GITHUB_OUTPUT"
|
|
216
|
+
echo "✅ Version: $VERSION"
|
|
217
|
+
|
|
218
|
+
- name: Extract release notes from CHANGELOG
|
|
219
|
+
id: notes
|
|
220
|
+
run: |
|
|
221
|
+
VERSION="${{ steps.meta.outputs.version }}"
|
|
222
|
+
NOTES=$(awk "/^## \\[${VERSION}\\]/{found=1; next} /^## \\[/{if(found) exit} found{print}" CHANGELOG.md)
|
|
223
|
+
if [ -z "$NOTES" ]; then
|
|
224
|
+
NOTES="Updated to v${VERSION}. See [CHANGELOG](https://github.com/raccioly/docguard/blob/main/CHANGELOG.md) for details."
|
|
225
|
+
fi
|
|
226
|
+
echo "$NOTES" > /tmp/changelog-section.md
|
|
227
|
+
echo "✅ Release notes extracted ($(wc -l < /tmp/changelog-section.md) lines)"
|
|
228
|
+
|
|
229
|
+
- name: Sync fork with upstream
|
|
230
|
+
env:
|
|
231
|
+
GH_TOKEN: ${{ secrets.SPECKIT_PR_TOKEN }}
|
|
232
|
+
run: |
|
|
233
|
+
gh repo sync raccioly/spec-kit --source github/spec-kit --branch main --force
|
|
234
|
+
echo "✅ Fork synced with upstream"
|
|
235
|
+
|
|
236
|
+
- name: Checkout spec-kit fork (fresh after sync)
|
|
237
|
+
uses: actions/checkout@v6
|
|
238
|
+
with:
|
|
239
|
+
repository: raccioly/spec-kit
|
|
240
|
+
token: ${{ secrets.SPECKIT_PR_TOKEN }}
|
|
241
|
+
path: spec-kit-fork
|
|
242
|
+
ref: main
|
|
243
|
+
|
|
244
|
+
- name: Update catalog.community.json
|
|
245
|
+
working-directory: spec-kit-fork
|
|
246
|
+
run: |
|
|
247
|
+
VERSION="${{ steps.meta.outputs.version }}"
|
|
248
|
+
DOWNLOAD_URL="${{ steps.meta.outputs.download_url }}"
|
|
249
|
+
UPDATED_AT="${{ steps.meta.outputs.updated_at }}"
|
|
250
|
+
cp ${{ github.workspace }}/.github/scripts/patch-catalog.py /tmp/patch-catalog.py
|
|
251
|
+
python3 /tmp/patch-catalog.py "$VERSION" "$DOWNLOAD_URL" "$UPDATED_AT"
|
|
252
|
+
|
|
253
|
+
- name: Create or update branch
|
|
254
|
+
working-directory: spec-kit-fork
|
|
255
|
+
run: |
|
|
256
|
+
BRANCH="update-docguard"
|
|
257
|
+
git config user.name "github-actions[bot]"
|
|
258
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
259
|
+
git checkout -B "$BRANCH"
|
|
260
|
+
git add extensions/catalog.community.json extensions/README.md
|
|
261
|
+
git commit -m "chore: update DocGuard extension to v${{ steps.meta.outputs.version }}" || echo "No changes to commit"
|
|
262
|
+
git push --force origin "$BRANCH"
|
|
263
|
+
echo "✅ Branch $BRANCH pushed"
|
|
264
|
+
|
|
265
|
+
- name: Create or update PR
|
|
266
|
+
working-directory: spec-kit-fork
|
|
267
|
+
env:
|
|
268
|
+
GH_TOKEN: ${{ secrets.SPECKIT_PR_TOKEN }}
|
|
269
|
+
run: |
|
|
270
|
+
VERSION="${{ steps.meta.outputs.version }}"
|
|
271
|
+
BRANCH="update-docguard"
|
|
272
|
+
PR_TITLE="chore: update DocGuard extension to v${VERSION}"
|
|
273
|
+
|
|
274
|
+
cat > /tmp/pr-body.md << 'HEADER'
|
|
275
|
+
## DocGuard Community Extension Update
|
|
276
|
+
|
|
277
|
+
Updates the DocGuard community extension catalog entry.
|
|
278
|
+
|
|
279
|
+
### Changes
|
|
280
|
+
HEADER
|
|
281
|
+
|
|
282
|
+
echo "- Version: **v${VERSION}**" >> /tmp/pr-body.md
|
|
283
|
+
echo "- Download: \`spec-kit-docguard-v${VERSION}.zip\`" >> /tmp/pr-body.md
|
|
284
|
+
echo "- Repository: https://github.com/raccioly/docguard" >> /tmp/pr-body.md
|
|
285
|
+
echo "" >> /tmp/pr-body.md
|
|
286
|
+
echo "### Release Notes" >> /tmp/pr-body.md
|
|
287
|
+
echo "" >> /tmp/pr-body.md
|
|
288
|
+
cat /tmp/changelog-section.md >> /tmp/pr-body.md
|
|
289
|
+
echo "" >> /tmp/pr-body.md
|
|
290
|
+
echo "---" >> /tmp/pr-body.md
|
|
291
|
+
echo "*This PR was automatically generated by the DocGuard release pipeline.*" >> /tmp/pr-body.md
|
|
292
|
+
|
|
293
|
+
EXISTING_PR=$(gh pr list \
|
|
294
|
+
--repo github/spec-kit \
|
|
295
|
+
--head "raccioly:${BRANCH}" \
|
|
296
|
+
--state open \
|
|
297
|
+
--json number \
|
|
298
|
+
--jq '.[0].number' 2>/dev/null || echo "")
|
|
299
|
+
|
|
300
|
+
if [ -z "$EXISTING_PR" ] || [ "$EXISTING_PR" = "null" ]; then
|
|
301
|
+
EXISTING_PR=$(gh pr list \
|
|
302
|
+
--repo github/spec-kit \
|
|
303
|
+
--state open \
|
|
304
|
+
--search "head:raccioly:${BRANCH}" \
|
|
305
|
+
--json number \
|
|
306
|
+
--jq '.[0].number' 2>/dev/null || echo "")
|
|
307
|
+
fi
|
|
308
|
+
|
|
309
|
+
if [ -n "$EXISTING_PR" ] && [ "$EXISTING_PR" != "null" ]; then
|
|
310
|
+
echo "Found existing PR #${EXISTING_PR} — updating title and body..."
|
|
311
|
+
gh pr edit "$EXISTING_PR" \
|
|
312
|
+
--repo github/spec-kit \
|
|
313
|
+
--title "$PR_TITLE" \
|
|
314
|
+
--body-file /tmp/pr-body.md
|
|
315
|
+
echo "✅ Updated existing PR #${EXISTING_PR} to v${VERSION}"
|
|
316
|
+
else
|
|
317
|
+
PR_URL=$(gh pr create \
|
|
318
|
+
--repo github/spec-kit \
|
|
319
|
+
--head "raccioly:${BRANCH}" \
|
|
320
|
+
--base main \
|
|
321
|
+
--title "$PR_TITLE" \
|
|
322
|
+
--body-file /tmp/pr-body.md 2>&1) && {
|
|
323
|
+
echo "✅ Created new PR: $PR_URL"
|
|
324
|
+
} || {
|
|
325
|
+
echo "⚠️ Could not create or find PR — branch was force-pushed with v${VERSION} content"
|
|
326
|
+
}
|
|
327
|
+
fi
|
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
name: Sync DocGuard to Spec Kit Community Catalog
|
|
2
|
-
|
|
3
|
-
#
|
|
1
|
+
name: Sync DocGuard to Spec Kit Community Catalog (Manual)
|
|
2
|
+
|
|
3
|
+
# Manual recovery only. The automatic post-release sync now runs inside
|
|
4
|
+
# release.yml itself (see the `sync-catalog` job there). This workflow
|
|
5
|
+
# is kept for one-off catalog updates outside the release flow, e.g.
|
|
6
|
+
# fixing a stale entry, retrying after upstream maintenance, or pushing
|
|
7
|
+
# a metadata-only refresh.
|
|
8
|
+
#
|
|
9
|
+
# The previous workflow_run trigger was removed because it caused
|
|
10
|
+
# repeatable HTTP 401s on `gh repo sync ... --source github/spec-kit`
|
|
11
|
+
# despite the PAT being valid — a known GitHub Actions auth quirk for
|
|
12
|
+
# cross-workflow secret usage in workflow_run contexts.
|
|
4
13
|
on:
|
|
5
|
-
workflow_run:
|
|
6
|
-
workflows: ["Auto Release — Tag, GitHub Release, npm, PyPI"]
|
|
7
|
-
types: [completed]
|
|
8
|
-
branches: [main]
|
|
9
14
|
workflow_dispatch:
|
|
10
15
|
inputs:
|
|
11
16
|
version:
|
|
@@ -19,12 +24,10 @@ permissions:
|
|
|
19
24
|
jobs:
|
|
20
25
|
sync-catalog:
|
|
21
26
|
runs-on: ubuntu-latest
|
|
22
|
-
# Only run if the release workflow succeeded (or manual trigger)
|
|
23
|
-
if: ${{ github.event_name == 'workflow_dispatch' || github.event.workflow_run.conclusion == 'success' }}
|
|
24
27
|
|
|
25
28
|
steps:
|
|
26
29
|
- name: Checkout docguard repo
|
|
27
|
-
uses: actions/checkout@
|
|
30
|
+
uses: actions/checkout@v6
|
|
28
31
|
|
|
29
32
|
- name: Get version and metadata
|
|
30
33
|
id: meta
|
|
@@ -71,7 +74,7 @@ jobs:
|
|
|
71
74
|
echo "✅ Fork synced with upstream"
|
|
72
75
|
|
|
73
76
|
- name: Checkout spec-kit fork (fresh after sync)
|
|
74
|
-
uses: actions/checkout@
|
|
77
|
+
uses: actions/checkout@v6
|
|
75
78
|
with:
|
|
76
79
|
repository: raccioly/spec-kit
|
|
77
80
|
token: ${{ secrets.SPECKIT_PR_TOKEN }}
|
|
@@ -5,3 +5,7 @@
|
|
|
5
5
|
## 2024-04-16 - Context-Aware Status Bar Tooltips
|
|
6
6
|
**Learning:** VS Code extension status bar items can display multiple forms of feedback, but static tooltips fail to explain state changes. Providing context-aware tooltip text (e.g., explaining why a threshold warning icon appears) greatly improves the usability for developers monitoring CLI outputs inline.
|
|
7
7
|
**Action:** Always map status bar dynamic properties (icon, text, backgroundColor) to corresponding informative tooltips that explain what the visual change means.
|
|
8
|
+
|
|
9
|
+
## 2024-05-18 - Yielding Event Loop for Loading States
|
|
10
|
+
**Learning:** When updating UI elements like VS Code extension `statusBarItem` to show a loading state (e.g., adding a spinner and changing tooltip) immediately prior to a synchronous, blocking operation (like `execSync`), the changes won't render unless you explicitly yield the event loop.
|
|
11
|
+
**Action:** Use `await new Promise(r => setTimeout(r, 0))` right after the UI update to allow the editor time to render the visual changes before the main thread blocks.
|
|
@@ -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) — 24 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,160 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.22.1] - 2026-05-29
|
|
11
|
+
|
|
12
|
+
Self-audit + field-feedback patch. Honest fixes only — no doc-gaming. The
|
|
13
|
+
remaining guard warnings (Spec-Kit on bugfix specs, negation-load, docs-diff
|
|
14
|
+
test files, freshness lag, the demo↔docguard import cycle) are deferred to
|
|
15
|
+
v0.23.0 because the *correct* fix is improving the validators, not papering
|
|
16
|
+
over the docs. `sync --write` confirmed the freshness warnings are git-age
|
|
17
|
+
lag, not real code-truth drift, so they were left honest rather than date-bumped.
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
- **Stale validator counts in scaffolded files** — `extensions/spec-kit-docguard/skills/docguard-guard/SKILL.md`
|
|
21
|
+
("19-validator") and `extensions/spec-kit-docguard/commands/guard.md` ("19-validator", "20 total")
|
|
22
|
+
hardcoded counts that drift every release and shipped into user projects. Reworded to be count-free,
|
|
23
|
+
matching the already-fixed `templates/commands/docguard.guard.md`. (Field report, Issue 1.)
|
|
24
|
+
- **REQUIREMENTS.md non-functional requirements were unfilled web-service boilerplate**
|
|
25
|
+
("200ms p95", "99.9% uptime SLA") — nonsensical for a zero-dependency CLI and untraced.
|
|
26
|
+
Rewrote NFR-001/002/003 to DocGuard's real, test-backed NFRs (injection-safe subprocess
|
|
27
|
+
spawns, zero runtime deps, cross-process plan cache) and traced each to its regression test
|
|
28
|
+
via `@req` tags. Clears the 3 Traceability warnings honestly.
|
|
29
|
+
- **`specs/002-fix-test-discovery/plan.md`** — added the Spec-Kit-mandated `Summary` and
|
|
30
|
+
`Project Structure` sections (real content).
|
|
31
|
+
|
|
32
|
+
### Added / Improved
|
|
33
|
+
- **`docguard explain canonical-sync`** — the count-level companion validator was missing from
|
|
34
|
+
the explainer table; added it. (Field report, Issue 10.)
|
|
35
|
+
- **Test-Spec validator note** now points to the expected table format and `docguard explain` when
|
|
36
|
+
it finds no service-to-test mappings, instead of a dead-end message. (Field report, Issue 4.)
|
|
37
|
+
|
|
38
|
+
### Docs
|
|
39
|
+
- **README "What's New" no longer over-claims language-aware trace mapping for `guard`.** The
|
|
40
|
+
multilingual patterns live in the standalone `docguard trace` command; the guard-time
|
|
41
|
+
Traceability validator is JS/TS-first today, with language parity on the v0.23 roadmap.
|
|
42
|
+
(Field report, Issue 3 — honesty fix pending the full validator port.)
|
|
43
|
+
|
|
44
|
+
## [0.22.0] - 2026-05-28
|
|
45
|
+
|
|
46
|
+
### Added — Surface-Sync validator (item-level enumerable drift)
|
|
47
|
+
|
|
48
|
+
`canonical-sync` already checks NUMERIC count claims in the README (ships
|
|
49
|
+
N commands, N validators, mermaid diagram counts). But running the docguard
|
|
50
|
+
repo through itself showed `canonical-sync` passing 3/3 while the README's
|
|
51
|
+
command table silently omitted `demo` — the count matched, the table was
|
|
52
|
+
wrong, the user hit "command not found" anyway. Count-level checks miss
|
|
53
|
+
item-level drift.
|
|
54
|
+
|
|
55
|
+
**Surface-Sync** is the item-level complement. For each configured surface
|
|
56
|
+
(commands, validators, slash commands, templates — anything enumerable), it
|
|
57
|
+
compares code-truth (from a glob) against the names appearing in table rows
|
|
58
|
+
and bullet items in target docs. Warns on items present in code but missing
|
|
59
|
+
from the doc, and on items listed in the doc but missing from code.
|
|
60
|
+
|
|
61
|
+
Key behaviors:
|
|
62
|
+
|
|
63
|
+
- **N/A by default.** Returns "nothing to validate" unless the project's
|
|
64
|
+
`.docguard.json` declares at least one surface under `surfaceSync.surfaces`.
|
|
65
|
+
Existing docguard projects upgrade safely with zero new noise.
|
|
66
|
+
- **Section-scoped scanning.** Each surface can specify a `section` heading;
|
|
67
|
+
the validator restricts scanning to that section so a README containing
|
|
68
|
+
both a Commands table and a Validators table doesn't produce cross-table
|
|
69
|
+
false positives.
|
|
70
|
+
- **Format-aware extraction.** Recognises documented entries written as
|
|
71
|
+
`` `name` ``, `**Name**`, `| `name` |`, `| N | **Name** |`, and bullet
|
|
72
|
+
items. Strips leading `docguard ` / `/` prefixes and folds case so README's
|
|
73
|
+
`**API-Surface**` matches file basename `api-surface.mjs`.
|
|
74
|
+
- **Code-block immune.** Fenced code blocks are stripped before scanning so
|
|
75
|
+
shell examples don't inflate the documented set.
|
|
76
|
+
- **`ignore` list per surface.** Known deprecation aliases, scaffolders
|
|
77
|
+
behind `init --with`, and display-name-vs-filename mismatches can be
|
|
78
|
+
silenced without disabling the surface entirely.
|
|
79
|
+
|
|
80
|
+
Config shape (in `.docguard.json`):
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"surfaceSync": {
|
|
85
|
+
"surfaces": [
|
|
86
|
+
{
|
|
87
|
+
"name": "commands",
|
|
88
|
+
"glob": "cli/commands/*.mjs",
|
|
89
|
+
"extract": "basename-no-ext",
|
|
90
|
+
"ignore": ["setup", "impact"],
|
|
91
|
+
"docs": ["README.md"],
|
|
92
|
+
"section": "Usage"
|
|
93
|
+
}
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
DocGuard's own `.docguard.json` now declares three surfaces (commands,
|
|
100
|
+
validators, slash-commands) so the project polices its own README on every
|
|
101
|
+
`guard` run. Run `docguard explain surfaceSync` for fix guidance.
|
|
102
|
+
|
|
103
|
+
### Fixed — eight field-test bugs from v0.20.0
|
|
104
|
+
|
|
105
|
+
Confirmed running v0.20.0 against two real projects (a Python codebase for
|
|
106
|
+
the v0.20.0 cycle and a Next.js 15 App Router codebase). All eight were
|
|
107
|
+
reproduced in the source, fixed surgically, and pinned with regression
|
|
108
|
+
tests. Specs: `specs/004-v020-env-var-false-negative/`, `specs/005-hugocross-next-bugs/`.
|
|
109
|
+
|
|
110
|
+
- **API-Surface emits wrong path for Next.js App Router with `src/` layout**
|
|
111
|
+
— `src/app/api/health/route.ts` was reported as `GET /app/api/health`
|
|
112
|
+
instead of `GET /api/health`. Caused the validator to fire two false
|
|
113
|
+
warnings per route (documented-missing + undocumented-in-code) on every
|
|
114
|
+
`src/app/api/` file. `cli/scanners/routes.mjs`.
|
|
115
|
+
|
|
116
|
+
- **Freshness validator ignored `<!-- docguard:last-reviewed YYYY-MM-DD -->`**
|
|
117
|
+
— header was generated into every template, recommended in the freshness
|
|
118
|
+
fix text itself, checked by `score` for ALCOA+, but never read by
|
|
119
|
+
`validateFreshness`. The reviewer's explicit "I reviewed this" signal
|
|
120
|
+
had zero effect. The header now overrides the git-log fallback.
|
|
121
|
+
`cli/validators/freshness.mjs`.
|
|
122
|
+
|
|
123
|
+
- **Environment-vars in pipe-table rows (no backticks) were treated as
|
|
124
|
+
undocumented** — projects using `| VAR_NAME | description | required |`
|
|
125
|
+
table syntax were silently flagged for every var. The doc parser only
|
|
126
|
+
matched backtick-quoted names; it now also extracts the first column of
|
|
127
|
+
markdown pipe-table rows. `cli/validators/environment.mjs`.
|
|
128
|
+
|
|
129
|
+
- **Docs-Diff warning was unactionable** — emitted `"N documented but not
|
|
130
|
+
found in code"` with no filename. Now lists up to 5 paths inline with
|
|
131
|
+
`(+N more)` for the long-tail. `cli/validators/docs-diff.mjs`.
|
|
132
|
+
|
|
133
|
+
- **Traceability ignored `// @doc` annotations AND missed Next.js App
|
|
134
|
+
Router paths** — templates told users `// @doc API-REFERENCE.md` would
|
|
135
|
+
link a source file to a canonical doc; the scanner never read the
|
|
136
|
+
annotation. Compound: the `API-REFERENCE.md` TRACE_MAP only matched
|
|
137
|
+
`routes/`, `controllers/`, `handlers/`, `openapi/swagger`, and
|
|
138
|
+
`middleware/` — none of which cover `app/api/`. Added an annotation
|
|
139
|
+
scanner (top-of-file, multi-language comment syntax) and an
|
|
140
|
+
`(app|pages)/api/` glob. `cli/validators/traceability.mjs`.
|
|
141
|
+
|
|
142
|
+
- **`docguard upgrade --apply` silently broke Metrics-Consistency** — when
|
|
143
|
+
a CLI upgrade added or removed validators, the project's hardcoded "N
|
|
144
|
+
validators" counts in markdown went stale and the very next
|
|
145
|
+
`docguard guard` failed Metrics-Consistency. The user did nothing wrong.
|
|
146
|
+
`upgrade --apply` now prints an explicit nudge to run `fix --write`
|
|
147
|
+
using the just-installed binary (the current process holds the OLD CLI's
|
|
148
|
+
validator list, so it cannot apply the fix itself). `cli/commands/upgrade.mjs`.
|
|
149
|
+
|
|
150
|
+
- **Python env-vars were never scanned at all** — `grepEnvUsage` walked
|
|
151
|
+
`.py` files but the regex list was JS-only (`process.env.*`,
|
|
152
|
+
`import.meta.env.*`). Every documented Python env var read as "in docs,
|
|
153
|
+
not in code". Added patterns for `os.environ["X"]`, `os.environ.get("X")`,
|
|
154
|
+
and `os.getenv("X")`. The `explain` command's claim that Python was
|
|
155
|
+
supported now actually holds. `cli/shared-source.mjs`.
|
|
156
|
+
|
|
157
|
+
- **`docguard memory` "Accuracy" overlapped `docguard score` "Accuracy"
|
|
158
|
+
with different denominators** — same word, same project, wildly different
|
|
159
|
+
numbers. Renamed the per-claim metric in `memory` to **"Claim match
|
|
160
|
+
rate"** (matched claims / total claims) so it no longer collides with
|
|
161
|
+
the score's weighted accuracy axis across all signals. JSON field name
|
|
162
|
+
unchanged for backward compatibility. `cli/commands/memory.mjs`.
|
|
163
|
+
|
|
10
164
|
## [0.21.1] - 2026-05-26
|
|
11
165
|
|
|
12
166
|
**Security patch — closes issue #190.** Command injection vulnerability in
|