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