docguard-cli 0.25.0__tar.gz → 0.26.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.26.0/.github/scripts/speckit-submission.py +209 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.github/workflows/release.yml +68 -108
- docguard_cli-0.26.0/.github/workflows/sync-speckit-catalog.yml +110 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.wolf/anatomy.md +65 -5
- docguard_cli-0.26.0/.wolf/buglog.json +1202 -0
- docguard_cli-0.26.0/.wolf/cerebrum.md +38 -0
- docguard_cli-0.26.0/.wolf/hooks/_session.json +686 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.wolf/memory.md +128 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.wolf/token-ledger.json +429 -8
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/CHANGELOG.md +78 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/PKG-INFO +4 -1
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/README.md +3 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/ROADMAP.md +2 -1
- docguard_cli-0.26.0/cli/commands/agent.mjs +135 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/commands/generate.mjs +12 -1
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/config.mjs +6 -1
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/docguard.mjs +43 -4
- docguard_cli-0.26.0/cli/scanners/inventory.mjs +140 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/scanners/memory-plan.mjs +84 -14
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/scanners/project-type.mjs +60 -4
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/scanners/routes.mjs +11 -5
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/shared-ignore.mjs +40 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/shared-source.mjs +69 -1
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/validators/freshness.mjs +31 -2
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/validators/metrics-consistency.mjs +26 -2
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/writers/mechanical.mjs +21 -3
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/extensions/spec-kit-docguard/extension.yml +1 -5
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/package.json +1 -1
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/pyproject.toml +1 -1
- docguard_cli-0.26.0/tests/agent.test.mjs +87 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/commands.test.mjs +35 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/ensure-skills-idempotent.test.mjs +11 -6
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/freshness.test.mjs +24 -0
- docguard_cli-0.26.0/tests/inventory.test.mjs +99 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/mechanical.test.mjs +20 -2
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/memory-plan.test.mjs +45 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/metrics-consistency.test.mjs +34 -3
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/metrics-dedup.test.mjs +7 -7
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/project-type.test.mjs +65 -12
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/shared-source.test.mjs +25 -0
- docguard_cli-0.25.0/.github/scripts/patch-catalog.py +0 -104
- docguard_cli-0.25.0/.github/workflows/sync-speckit-catalog.yml +0 -182
- docguard_cli-0.25.0/.wolf/buglog.json +0 -465
- docguard_cli-0.25.0/.wolf/cerebrum.md +0 -26
- docguard_cli-0.25.0/.wolf/hooks/_session.json +0 -12
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.agent/commands/docguard.fix.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.agent/commands/docguard.guard.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.agent/commands/docguard.review.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.agent/commands/docguard.score.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.agent/commands/speckit.analyze.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.agent/commands/speckit.checklist.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.agent/commands/speckit.clarify.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.agent/commands/speckit.constitution.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.agent/commands/speckit.implement.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.agent/commands/speckit.plan.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.agent/commands/speckit.specify.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.agent/commands/speckit.tasks.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.agent/commands/speckit.taskstoissues.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.agent/skills/docguard-fix/SKILL.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.agent/skills/docguard-guard/SKILL.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.agent/skills/docguard-review/SKILL.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.agent/skills/docguard-score/SKILL.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.agent/skills/docguard-sync/SKILL.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.agent/skills/speckit-analyze/SKILL.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.agent/skills/speckit-checklist/SKILL.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.agent/skills/speckit-clarify/SKILL.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.agent/skills/speckit-constitution/SKILL.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.agent/skills/speckit-implement/SKILL.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.agent/skills/speckit-plan/SKILL.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.agent/skills/speckit-specify/SKILL.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.agent/skills/speckit-tasks/SKILL.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.agent/skills/speckit-taskstoissues/SKILL.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.claude/rules/openwolf.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.claude/settings.json +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.docguard.json +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.docguardignore +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.github/dependabot.yml +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.github/workflows/ci.yml +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.github/workflows/supply-chain.yml +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.gitignore +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.jules/bolt.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.jules/palette.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.jules/sentinel.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.jules-setup.sh +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.npmignore +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.npmrc +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.specify/extensions/.cache/catalog-ebf165086500aab1-metadata.json +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.specify/extensions/.cache/catalog-ebf165086500aab1.json +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.specify/extensions/.cache/catalog-metadata.json +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.specify/extensions/.cache/catalog.json +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.specify/init-options.json +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.specify/memory/constitution.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.specify/scripts/bash/check-prerequisites.sh +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.specify/scripts/bash/common.sh +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.specify/scripts/bash/create-new-feature.sh +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.specify/scripts/bash/setup-plan.sh +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.specify/scripts/bash/update-agent-context.sh +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.specify/templates/agent-file-template.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.specify/templates/checklist-template.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.specify/templates/constitution-template.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.specify/templates/plan-template.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.specify/templates/spec-template.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.specify/templates/tasks-template.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.wolf/OPENWOLF.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.wolf/config.json +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.wolf/cron-manifest.json +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.wolf/cron-state.json +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.wolf/daemon.log +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.wolf/designqc-report.json +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.wolf/hooks/_wrap_up_nudged +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.wolf/hooks/package.json +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.wolf/hooks/post-read.js +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.wolf/hooks/post-write.js +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.wolf/hooks/pre-read.js +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.wolf/hooks/pre-write.js +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.wolf/hooks/session-start.js +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.wolf/hooks/shared.js +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.wolf/hooks/stop.js +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.wolf/identity.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.wolf/reframe-frameworks.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/.wolf/suggestions.json +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/AGENTS.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/CLAUDE.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/CODE_OF_CONDUCT.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/COMPARISONS.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/CONTRIBUTING.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/DRIFT-LOG.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/LICENSE +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/PHILOSOPHY.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/SECURITY.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/STANDARD.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/SUPPLY-CHAIN-AUDIT.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/SUPPORT.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/action.yml +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/assets/bin/docguard +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/assets/demo.gif +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/assets/demo.tape +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/assets/docguard-logo.png +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/commands/agents.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/commands/badge.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/commands/ci.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/commands/demo.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/commands/diagnose.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/commands/diff.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/commands/explain.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/commands/fix.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/commands/guard.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/commands/hooks.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/commands/impact.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/commands/init.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/commands/llms.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/commands/memory.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/commands/publish.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/commands/score.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/commands/setup.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/commands/sync.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/commands/trace.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/commands/upgrade.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/commands/watch.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/ensure-skills.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/scanners/api-doc.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/scanners/cdk.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/scanners/doc-tools.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/scanners/frontend.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/scanners/iac.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/scanners/integrations.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/scanners/js-ast.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/scanners/py-ast.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/scanners/schemas.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/scanners/speckit.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/shared-git.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/shared-trace-patterns.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/shared.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/validator-markers.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/validators/api-surface.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/validators/architecture.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/validators/canonical-sync.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/validators/changelog.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/validators/cross-reference.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/validators/doc-quality.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/validators/docs-coverage.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/validators/docs-diff.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/validators/docs-sync.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/validators/drift.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/validators/environment.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/validators/generated-staleness.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/validators/metadata-sync.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/validators/schema-sync.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/validators/security.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/validators/spec-kit.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/validators/structure.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/validators/surface-sync.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/validators/test-spec.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/validators/todo-tracking.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/validators/traceability.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/writers/api-reference.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/writers/fix-memory.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/cli/writers/sections.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/commands/docguard.fix.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/commands/docguard.guard.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/commands/docguard.review.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/commands/docguard.score.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/configs/fastify.json +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/configs/generic.json +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/configs/nextjs.json +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/configs/python.json +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/docguard_cli/__init__.py +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/docguard_cli/wrapper.py +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/docs/ai-integration.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/docs/commands.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/docs/configuration.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/docs/doc-sections.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/docs/faq.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/docs/installation.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/docs/profiles.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/docs/quickstart.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/docs-canonical/CI-RECIPES.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/docs-canonical/DATA-MODEL.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/docs-canonical/ENVIRONMENT.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/docs-canonical/REQUIREMENTS.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/docs-canonical/SECURITY.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/docs-canonical/SURFACE-AUDIT.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/docs-canonical/TEST-SPEC.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/docs-implementation/MIGRATION-v0.20.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/examples/01-express-api/README.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/examples/01-express-api/package.json +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/examples/01-express-api/server.js +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/examples/02-python-flask/README.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/examples/02-python-flask/app.py +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/examples/02-python-flask/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/examples/02-python-flask/requirements.txt +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/examples/03-spec-kit-project/CHANGELOG.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/examples/03-spec-kit-project/README.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/examples/03-spec-kit-project/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/examples/03-spec-kit-project/docs-canonical/TEST-SPEC.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/examples/03-spec-kit-project/package.json +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/examples/03-spec-kit-project/src/index.js +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/examples/03-spec-kit-project/tasks.json +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/examples/03-spec-kit-project/tests/basic.test.js +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/examples/README.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/extensions/spec-kit-docguard/LICENSE +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/extensions/spec-kit-docguard/README.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/extensions/spec-kit-docguard/commands/diagnose.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/extensions/spec-kit-docguard/commands/fix.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/extensions/spec-kit-docguard/commands/generate.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/extensions/spec-kit-docguard/commands/guard.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/extensions/spec-kit-docguard/commands/init.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/extensions/spec-kit-docguard/commands/score.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/extensions/spec-kit-docguard/commands/sync.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/extensions/spec-kit-docguard/commands/trace.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/extensions/spec-kit-docguard/scripts/bash/common.sh +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/extensions/spec-kit-docguard/scripts/bash/docguard-check-docs.sh +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/extensions/spec-kit-docguard/scripts/bash/docguard-init-doc.sh +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/extensions/spec-kit-docguard/scripts/bash/docguard-suggest-fix.sh +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/extensions/spec-kit-docguard/skills/docguard-fix/SKILL.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/extensions/spec-kit-docguard/skills/docguard-guard/SKILL.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/extensions/spec-kit-docguard/skills/docguard-review/SKILL.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/extensions/spec-kit-docguard/skills/docguard-score/SKILL.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/extensions/spec-kit-docguard/skills/docguard-sync/SKILL.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/extensions/spec-kit-docguard/templates/extensions.yml +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/extensions/spec-kit-docguard/templates/github-workflows/docguard-autofix.yml +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/extensions/spec-kit-docguard/templates/github-workflows/docguard-guard.yml +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/package-lock.json +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/pr_description.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/schemas/docguard-config.schema.json +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/specs/001-fix-ignore-validators/plan.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/specs/001-fix-ignore-validators/spec.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/specs/001-fix-ignore-validators/tasks.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/specs/002-fix-test-discovery/plan.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/specs/002-fix-test-discovery/spec.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/specs/002-fix-test-discovery/tasks.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/specs/003-v011-false-positives/plan.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/specs/003-v011-false-positives/spec.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/specs/003-v011-false-positives/tasks.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/specs/004-v020-env-var-false-negative/spec.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/specs/005-hugocross-next-bugs/spec.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/ADR.md.template +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/AGENTS.md.template +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/ARCHITECTURE.md.template +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/CHANGELOG.md.template +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/CURRENT-STATE.md.template +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/DATA-MODEL.md.template +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/DEPLOYMENT.md.template +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/DRIFT-LOG.md.template +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/ENVIRONMENT.md.template +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/KNOWN-GOTCHAS.md.template +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/REQUIREMENTS.md.template +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/ROADMAP.md.template +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/RUNBOOKS.md.template +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/SECURITY.md.template +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/TEST-SPEC.md.template +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/TROUBLESHOOTING.md.template +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/VENDOR-BUGS.md.template +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/ci/github-actions.yml +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/commands/docguard.fix.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/commands/docguard.guard.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/commands/docguard.init.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/commands/docguard.review.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/commands/docguard.update.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/demo-fixture/.docguard.json +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/demo-fixture/.env.example +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/demo-fixture/AGENTS.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/demo-fixture/CHANGELOG.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/demo-fixture/DRIFT-LOG.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/demo-fixture/README.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/demo-fixture/docs-canonical/API-REFERENCE.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/demo-fixture/docs-canonical/ARCHITECTURE.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/demo-fixture/docs-canonical/DATA-MODEL.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/demo-fixture/docs-canonical/ENVIRONMENT.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/demo-fixture/docs-canonical/SECURITY.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/demo-fixture/docs-canonical/TEST-SPEC.md +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/demo-fixture/package.json +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/demo-fixture/src/api.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/demo-fixture/src/notifier.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/demo-fixture/src/scheduler.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/templates/demo-fixture/src/worker.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/test-draft.js +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/test-metrics.js +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/anchor-autofix.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/api-doc.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/api-surface.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/api-write.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/architecture.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/b7-node-env-symmetry.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/backup-failure.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/canonical-sync.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/cdk-detection.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/changed-only-scoping.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/changed-only.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/changelog.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/cross-reference.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/demo-command.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/doc-quality.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/doc-section-synonyms.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/docguardignore.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/docs-coverage.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/docs-diff.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/docs-sync.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/drift.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/env-schema-detection.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/environment.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/explain-coverage.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/field-report-2-cli.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/fix-memory.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/fix-suppression.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/fixture-projects.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/frontend-deep.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/frontend.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/generated-staleness.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/guard-classify.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/guard-no-throw.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/hooks.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/i18n.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/impact.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/init-smart-detection.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/integrations.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/js-ast.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/metadata-sync.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/monorepo-scanning.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/multi-spec.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/npm-pack-smoke.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/openapi-parse-honesty.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/patch-0.11.2.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/plan-disk-cache.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/profile-flag.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/py-ast.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/regenerate-section.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/routes-express-mounts.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/routes-fastify.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/routes-multilang.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/routes-nextjs-app-router.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/schema-sync.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/schemas-multilang.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/schemas.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/scoping-extended.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/score-suggestions.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/section-na-markers.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/sections.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/security-init-injection.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/security.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/severity.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/shared-git.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/speckit-bugfix.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/starter-scaffold.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/stress-test.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/structure.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/surface-sync.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/sweep-nudge.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/sync-since.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/sync.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/test-spec.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/todo-tracking.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/trace-multilang.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/trace-reverse.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/traceability.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/upgrade-pr-e2e.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/upgrade-pr.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/upgrade.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/v020-consolidation.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/validator-markers.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/validator-naming.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/version-pin.test.mjs +0 -0
- {docguard_cli-0.25.0 → docguard_cli-0.26.0}/tests/whats-new.test.mjs +0 -0
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Build a spec-kit "Extension Submission" for DocGuard.
|
|
3
|
+
|
|
4
|
+
Per github/spec-kit#2707 (maintainer mnriem) and spec-kit's Extension
|
|
5
|
+
Publishing Guide, a community catalog add/update MUST go through the
|
|
6
|
+
Extension Submission issue template
|
|
7
|
+
(.github/ISSUE_TEMPLATE/extension_submission.yml) — NOT a direct PR editing
|
|
8
|
+
catalog.community.json. This script never touches the spec-kit repo; it only
|
|
9
|
+
prepares the submission so a human can open it through the real form (so
|
|
10
|
+
GitHub auto-applies the template's labels and auto-assigns a maintainer).
|
|
11
|
+
|
|
12
|
+
Two output modes:
|
|
13
|
+
--url Print a prefilled issue-form URL. Open it, review, and submit
|
|
14
|
+
through the form. Checkbox groups can't be prefilled via URL, so
|
|
15
|
+
tick those by hand. Large fields may be truncated by URL length
|
|
16
|
+
limits — paste them from --body if so.
|
|
17
|
+
--body Print Markdown mirroring every form field (a reliable copy/paste
|
|
18
|
+
source and an audit record).
|
|
19
|
+
|
|
20
|
+
The field values live in ONE place below so --url and --body never drift.
|
|
21
|
+
Only the version and download URL change per release.
|
|
22
|
+
|
|
23
|
+
Usage: speckit-submission.py (--url|--body) <version> <download_url>
|
|
24
|
+
"""
|
|
25
|
+
import sys
|
|
26
|
+
import json
|
|
27
|
+
from urllib.parse import urlencode, quote
|
|
28
|
+
|
|
29
|
+
FORM_URL = "https://github.com/github/spec-kit/issues/new"
|
|
30
|
+
TEMPLATE = "extension_submission.yml"
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def changelog_section(version: str) -> str:
|
|
34
|
+
"""Pull the release's CHANGELOG section, if available."""
|
|
35
|
+
try:
|
|
36
|
+
with open("CHANGELOG.md", encoding="utf-8") as f:
|
|
37
|
+
lines = f.readlines()
|
|
38
|
+
except FileNotFoundError:
|
|
39
|
+
lines = []
|
|
40
|
+
out, found = [], False
|
|
41
|
+
for line in lines:
|
|
42
|
+
if line.startswith(f"## [{version}]"):
|
|
43
|
+
found = True
|
|
44
|
+
continue
|
|
45
|
+
if found and line.startswith("## ["):
|
|
46
|
+
break
|
|
47
|
+
if found:
|
|
48
|
+
out.append(line.rstrip("\n"))
|
|
49
|
+
text = "\n".join(out).strip()
|
|
50
|
+
if not text:
|
|
51
|
+
text = (
|
|
52
|
+
f"See [CHANGELOG](https://github.com/raccioly/docguard/blob/main/"
|
|
53
|
+
f"CHANGELOG.md) for v{version} details."
|
|
54
|
+
)
|
|
55
|
+
return text
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def build(version: str, download_url: str):
|
|
59
|
+
catalog_entry = {
|
|
60
|
+
"docguard": {
|
|
61
|
+
"name": "DocGuard — CDD Enforcement",
|
|
62
|
+
"id": "docguard",
|
|
63
|
+
"description": (
|
|
64
|
+
"Canonical-Driven Development enforcement. Validates, scores, "
|
|
65
|
+
"and traces project documentation with automated checks, "
|
|
66
|
+
"AI-driven workflows, and spec-kit hooks. One pinned runtime "
|
|
67
|
+
"dependency; pure Node.js otherwise."
|
|
68
|
+
),
|
|
69
|
+
"author": "raccioly",
|
|
70
|
+
"version": version,
|
|
71
|
+
"download_url": download_url,
|
|
72
|
+
"repository": "https://github.com/raccioly/docguard",
|
|
73
|
+
"homepage": "https://www.npmjs.com/package/docguard-cli",
|
|
74
|
+
"documentation": (
|
|
75
|
+
"https://github.com/raccioly/docguard/blob/main/"
|
|
76
|
+
"extensions/spec-kit-docguard/README.md"
|
|
77
|
+
),
|
|
78
|
+
"changelog": (
|
|
79
|
+
"https://github.com/raccioly/docguard/blob/main/CHANGELOG.md"
|
|
80
|
+
),
|
|
81
|
+
"license": "MIT",
|
|
82
|
+
"requires": {
|
|
83
|
+
"speckit_version": ">=0.1.0",
|
|
84
|
+
"tools": [
|
|
85
|
+
{"name": "node", "version": ">=18.0.0", "required": True}
|
|
86
|
+
],
|
|
87
|
+
},
|
|
88
|
+
"provides": {"commands": 6, "hooks": 3},
|
|
89
|
+
"tags": [
|
|
90
|
+
"documentation", "validation", "quality", "cdd",
|
|
91
|
+
"traceability", "ai-agents", "enforcement", "spec-kit",
|
|
92
|
+
],
|
|
93
|
+
"verified": False,
|
|
94
|
+
"downloads": 0,
|
|
95
|
+
"stars": 0,
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
# (form-field-id, label, value). Order mirrors extension_submission.yml.
|
|
100
|
+
# `None`-valued ids are checkbox groups: rendered in --body, omitted in --url.
|
|
101
|
+
fields = [
|
|
102
|
+
("extension-id", "Extension ID", "docguard"),
|
|
103
|
+
("extension-name", "Extension Name", "DocGuard — CDD Enforcement"),
|
|
104
|
+
("version", "Version", version),
|
|
105
|
+
("description", "Description", catalog_entry["docguard"]["description"]),
|
|
106
|
+
("author", "Author", "raccioly"),
|
|
107
|
+
("repository", "Repository URL", "https://github.com/raccioly/docguard"),
|
|
108
|
+
("download-url", "Download URL", download_url),
|
|
109
|
+
("license", "License", "MIT"),
|
|
110
|
+
("homepage", "Homepage (optional)", "https://www.npmjs.com/package/docguard-cli"),
|
|
111
|
+
("documentation", "Documentation URL (optional)",
|
|
112
|
+
catalog_entry["docguard"]["documentation"]),
|
|
113
|
+
("changelog", "Changelog URL (optional)",
|
|
114
|
+
"https://github.com/raccioly/docguard/blob/main/CHANGELOG.md"),
|
|
115
|
+
("speckit-version", "Required Spec Kit Version", ">=0.1.0"),
|
|
116
|
+
("required-tools", "Required Tools (optional)",
|
|
117
|
+
"- node (>=18.0.0) - required\n"
|
|
118
|
+
"- npx - required\n"
|
|
119
|
+
"- specify - optional (auto-initializes the SDD workflow during docguard init)"),
|
|
120
|
+
("commands-count", "Number of Commands", "6"),
|
|
121
|
+
("hooks-count", "Number of Hooks (optional)", "3"),
|
|
122
|
+
("tags", "Tags",
|
|
123
|
+
"documentation, validation, quality, cdd, traceability, ai-agents, enforcement, spec-kit"),
|
|
124
|
+
("features", "Key Features",
|
|
125
|
+
"- 19-validator quality gate with severity triage and a remediation plan\n"
|
|
126
|
+
"- AI-driven documentation repair with codebase research and validation loops\n"
|
|
127
|
+
"- Cross-document semantic consistency analysis (read-only review)\n"
|
|
128
|
+
"- CDD maturity score with an ROI-based improvement roadmap\n"
|
|
129
|
+
"- Reverse-engineers canonical docs from an existing codebase\n"
|
|
130
|
+
"- spec-kit workflow hooks (after_implement, before_tasks, after_tasks)"),
|
|
131
|
+
("testing", "Testing Checklist", None),
|
|
132
|
+
("requirements", "Submission Requirements", None),
|
|
133
|
+
("testing-details", "Testing Details",
|
|
134
|
+
"**Tested on:** Linux + macOS with the spec-kit CLI.\n\n"
|
|
135
|
+
"**Install:**\n```bash\n"
|
|
136
|
+
f"specify extension add docguard --from {download_url}\n```\n\n"
|
|
137
|
+
"**Scenarios verified:**\n"
|
|
138
|
+
"1. Extension installs from the release ZIP without manifest validation errors.\n"
|
|
139
|
+
"2. All six `speckit.docguard.*` commands resolve and run.\n"
|
|
140
|
+
"3. The three workflow hooks register against spec-kit's lifecycle."),
|
|
141
|
+
("example-usage", "Example Usage",
|
|
142
|
+
"```bash\n"
|
|
143
|
+
"# Install the extension\n"
|
|
144
|
+
f"specify extension add docguard --from {download_url}\n\n"
|
|
145
|
+
"# Run the documentation quality gate\n"
|
|
146
|
+
"/speckit.docguard.guard\n```"),
|
|
147
|
+
("catalog-entry", "Proposed Catalog Entry",
|
|
148
|
+
"```json\n" + json.dumps(catalog_entry, indent=2) + "\n```"),
|
|
149
|
+
("additional-context", "Additional Context",
|
|
150
|
+
"**This is an update to an existing catalog entry (`docguard`)** for a "
|
|
151
|
+
"new release — please bump the version and download URL on the current "
|
|
152
|
+
"entry rather than adding a duplicate.\n\n"
|
|
153
|
+
f"**Release notes (v{version}):**\n\n{changelog_section(version)}"),
|
|
154
|
+
]
|
|
155
|
+
|
|
156
|
+
testing_items = [
|
|
157
|
+
"Extension installs successfully via download URL",
|
|
158
|
+
"All commands execute without errors",
|
|
159
|
+
"Documentation is complete and accurate",
|
|
160
|
+
"No security vulnerabilities identified",
|
|
161
|
+
"Tested on at least one real project",
|
|
162
|
+
]
|
|
163
|
+
requirement_items = [
|
|
164
|
+
"Valid `extension.yml` manifest included",
|
|
165
|
+
"README.md with installation and usage instructions",
|
|
166
|
+
"LICENSE file included",
|
|
167
|
+
"GitHub release created with version tag",
|
|
168
|
+
"All command files exist and are properly formatted",
|
|
169
|
+
"Extension ID follows naming conventions (lowercase-with-hyphens)",
|
|
170
|
+
]
|
|
171
|
+
checkbox_items = {"testing": testing_items, "requirements": requirement_items}
|
|
172
|
+
return fields, checkbox_items, catalog_entry
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
def render_body(fields, checkbox_items) -> str:
|
|
176
|
+
blocks = []
|
|
177
|
+
for fid, label, value in fields:
|
|
178
|
+
if value is None: # checkbox group
|
|
179
|
+
ticked = "\n".join(f"- [x] {item}" for item in checkbox_items[fid])
|
|
180
|
+
blocks.append(f"### {label}\n\n{ticked}")
|
|
181
|
+
else:
|
|
182
|
+
blocks.append(f"### {label}\n\n{value}")
|
|
183
|
+
return "\n\n".join(blocks) + "\n"
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
def render_url(fields, version) -> str:
|
|
187
|
+
params = {"template": TEMPLATE,
|
|
188
|
+
"title": f"[Extension]: Update DocGuard — CDD Enforcement (v{version})"}
|
|
189
|
+
for fid, _label, value in fields:
|
|
190
|
+
if value is None:
|
|
191
|
+
continue # checkbox groups can't be prefilled via URL
|
|
192
|
+
params[fid] = value
|
|
193
|
+
return FORM_URL + "?" + urlencode(params, quote_via=quote)
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
def main():
|
|
197
|
+
if len(sys.argv) != 4 or sys.argv[1] not in ("--url", "--body"):
|
|
198
|
+
print(__doc__)
|
|
199
|
+
sys.exit(1)
|
|
200
|
+
mode, version, download_url = sys.argv[1], sys.argv[2], sys.argv[3]
|
|
201
|
+
fields, checkbox_items, _ = build(version, download_url)
|
|
202
|
+
if mode == "--body":
|
|
203
|
+
sys.stdout.write(render_body(fields, checkbox_items))
|
|
204
|
+
else:
|
|
205
|
+
sys.stdout.write(render_url(fields, version) + "\n")
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
if __name__ == "__main__":
|
|
209
|
+
main()
|
|
@@ -197,17 +197,22 @@ jobs:
|
|
|
197
197
|
TWINE_USERNAME: __token__
|
|
198
198
|
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
|
199
199
|
|
|
200
|
-
# ── Step 7:
|
|
201
|
-
#
|
|
202
|
-
#
|
|
203
|
-
#
|
|
204
|
-
#
|
|
205
|
-
#
|
|
206
|
-
#
|
|
200
|
+
# ── Step 7: Prepare Spec Kit community catalog submission ──────────────
|
|
201
|
+
# Per spec-kit maintainer guidance (github/spec-kit#2707) and spec-kit's
|
|
202
|
+
# Extension Publishing Guide, a catalog add/update MUST go through the
|
|
203
|
+
# Extension Submission ISSUE TEMPLATE so GitHub auto-applies the template
|
|
204
|
+
# labels + auto-assigns a maintainer — NOT a direct PR editing
|
|
205
|
+
# catalog.community.json (the old fork-sync + patch-catalog.py + gh pr
|
|
206
|
+
# flow, now removed). This job does NOT touch github/spec-kit at all: it
|
|
207
|
+
# builds a prefilled issue-form link and opens a one-click reminder issue
|
|
208
|
+
# in THIS repo. A human submits the real form (so labels/assignment fire).
|
|
207
209
|
sync-catalog:
|
|
208
210
|
needs: [detect-version, build-extension, publish-npm, publish-pypi]
|
|
209
211
|
if: needs.detect-version.outputs.changed == 'true'
|
|
210
212
|
runs-on: ubuntu-latest
|
|
213
|
+
permissions:
|
|
214
|
+
contents: read
|
|
215
|
+
issues: write # reminder issue in THIS repo only — never github/spec-kit
|
|
211
216
|
steps:
|
|
212
217
|
- name: Checkout docguard repo
|
|
213
218
|
uses: actions/checkout@v6
|
|
@@ -217,118 +222,73 @@ jobs:
|
|
|
217
222
|
run: |
|
|
218
223
|
VERSION="${{ needs.detect-version.outputs.version }}"
|
|
219
224
|
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
|
|
220
|
-
echo "tag=v${VERSION}" >> "$GITHUB_OUTPUT"
|
|
221
225
|
echo "download_url=https://github.com/raccioly/docguard/releases/download/v${VERSION}/spec-kit-docguard-v${VERSION}.zip" >> "$GITHUB_OUTPUT"
|
|
222
|
-
echo "updated_at=$(date -u +%Y-%m-%dT%H:%M:%SZ)" >> "$GITHUB_OUTPUT"
|
|
223
226
|
echo "✅ Version: $VERSION"
|
|
224
227
|
|
|
225
|
-
- name:
|
|
226
|
-
id: notes
|
|
227
|
-
run: |
|
|
228
|
-
VERSION="${{ steps.meta.outputs.version }}"
|
|
229
|
-
NOTES=$(awk "/^## \\[${VERSION}\\]/{found=1; next} /^## \\[/{if(found) exit} found{print}" CHANGELOG.md)
|
|
230
|
-
if [ -z "$NOTES" ]; then
|
|
231
|
-
NOTES="Updated to v${VERSION}. See [CHANGELOG](https://github.com/raccioly/docguard/blob/main/CHANGELOG.md) for details."
|
|
232
|
-
fi
|
|
233
|
-
echo "$NOTES" > /tmp/changelog-section.md
|
|
234
|
-
echo "✅ Release notes extracted ($(wc -l < /tmp/changelog-section.md) lines)"
|
|
235
|
-
|
|
236
|
-
- name: Sync fork with upstream
|
|
237
|
-
env:
|
|
238
|
-
GH_TOKEN: ${{ secrets.SPECKIT_PR_TOKEN }}
|
|
239
|
-
run: |
|
|
240
|
-
gh repo sync raccioly/spec-kit --source github/spec-kit --branch main --force
|
|
241
|
-
echo "✅ Fork synced with upstream"
|
|
242
|
-
|
|
243
|
-
- name: Checkout spec-kit fork (fresh after sync)
|
|
244
|
-
uses: actions/checkout@v6
|
|
245
|
-
with:
|
|
246
|
-
repository: raccioly/spec-kit
|
|
247
|
-
token: ${{ secrets.SPECKIT_PR_TOKEN }}
|
|
248
|
-
path: spec-kit-fork
|
|
249
|
-
ref: main
|
|
250
|
-
|
|
251
|
-
- name: Update catalog.community.json
|
|
252
|
-
working-directory: spec-kit-fork
|
|
228
|
+
- name: Build prefilled submission link + body
|
|
253
229
|
run: |
|
|
254
230
|
VERSION="${{ steps.meta.outputs.version }}"
|
|
255
231
|
DOWNLOAD_URL="${{ steps.meta.outputs.download_url }}"
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
232
|
+
python3 .github/scripts/speckit-submission.py --url "$VERSION" "$DOWNLOAD_URL" > /tmp/submit-url.txt
|
|
233
|
+
python3 .github/scripts/speckit-submission.py --body "$VERSION" "$DOWNLOAD_URL" > /tmp/submit-body.md
|
|
234
|
+
echo "✅ Built prefilled form URL ($(wc -c < /tmp/submit-url.txt) bytes) + body"
|
|
259
235
|
|
|
260
|
-
- name:
|
|
261
|
-
working-directory: spec-kit-fork
|
|
262
|
-
run: |
|
|
263
|
-
BRANCH="update-docguard"
|
|
264
|
-
git config user.name "github-actions[bot]"
|
|
265
|
-
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
266
|
-
git checkout -B "$BRANCH"
|
|
267
|
-
git add extensions/catalog.community.json extensions/README.md
|
|
268
|
-
git commit -m "chore: update DocGuard extension to v${{ steps.meta.outputs.version }}" || echo "No changes to commit"
|
|
269
|
-
git push --force origin "$BRANCH"
|
|
270
|
-
echo "✅ Branch $BRANCH pushed"
|
|
271
|
-
|
|
272
|
-
- name: Create or update PR
|
|
273
|
-
working-directory: spec-kit-fork
|
|
236
|
+
- name: Open or refresh catalog-submission reminder (this repo)
|
|
274
237
|
env:
|
|
275
|
-
GH_TOKEN: ${{ secrets.
|
|
238
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
276
239
|
run: |
|
|
277
240
|
VERSION="${{ steps.meta.outputs.version }}"
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
241
|
+
SUBMIT_URL=$(cat /tmp/submit-url.txt)
|
|
242
|
+
TITLE="📦 Submit DocGuard v${VERSION} to the spec-kit community catalog"
|
|
243
|
+
|
|
244
|
+
# Compose the reminder body: one-click prefilled form link + the full
|
|
245
|
+
# field-by-field body as a paste fallback (URL prefill can truncate).
|
|
246
|
+
{
|
|
247
|
+
echo "A new release (**v${VERSION}**) is out. Update the spec-kit"
|
|
248
|
+
echo "community catalog **via the Extension Submission issue template**"
|
|
249
|
+
echo "(NOT a PR — see github/spec-kit#2707)."
|
|
250
|
+
echo
|
|
251
|
+
echo "## 👉 One-click: open the prefilled submission form"
|
|
252
|
+
echo
|
|
253
|
+
echo "[**Open the Extension Submission form, prefilled for v${VERSION}**](${SUBMIT_URL})"
|
|
254
|
+
echo
|
|
255
|
+
echo "Then: review the fields, tick the two checkbox groups (Testing /"
|
|
256
|
+
echo "Requirements), and click **Submit new issue**. Submitting through"
|
|
257
|
+
echo "the form is what makes GitHub auto-apply labels and assign a"
|
|
258
|
+
echo "maintainer. If any long field came through truncated, paste it"
|
|
259
|
+
echo "from the copy below."
|
|
260
|
+
echo
|
|
261
|
+
echo "<details><summary>📋 Full submission body (copy/paste fallback)</summary>"
|
|
262
|
+
echo
|
|
263
|
+
cat /tmp/submit-body.md
|
|
264
|
+
echo
|
|
265
|
+
echo "</details>"
|
|
266
|
+
} > /tmp/reminder.md
|
|
267
|
+
|
|
268
|
+
# Idempotent per-version: refresh the existing reminder, else open one.
|
|
269
|
+
EXISTING=$(gh issue list \
|
|
270
|
+
--repo "$GITHUB_REPOSITORY" \
|
|
303
271
|
--state open \
|
|
304
|
-
--
|
|
305
|
-
--
|
|
306
|
-
|
|
307
|
-
if [ -z "$EXISTING_PR" ] || [ "$EXISTING_PR" = "null" ]; then
|
|
308
|
-
EXISTING_PR=$(gh pr list \
|
|
309
|
-
--repo github/spec-kit \
|
|
310
|
-
--state open \
|
|
311
|
-
--search "head:raccioly:${BRANCH}" \
|
|
312
|
-
--json number \
|
|
313
|
-
--jq '.[0].number' 2>/dev/null || echo "")
|
|
314
|
-
fi
|
|
272
|
+
--search "in:title \"DocGuard v${VERSION}\" spec-kit catalog" \
|
|
273
|
+
--json number,title \
|
|
274
|
+
--jq "[.[] | select(.title | contains(\"v${VERSION}\"))][0].number" 2>/dev/null || echo "")
|
|
315
275
|
|
|
316
|
-
if [ -n "$
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
--repo github/spec-kit \
|
|
320
|
-
--title "$PR_TITLE" \
|
|
321
|
-
--body-file /tmp/pr-body.md
|
|
322
|
-
echo "✅ Updated existing PR #${EXISTING_PR} to v${VERSION}"
|
|
276
|
+
if [ -n "$EXISTING" ] && [ "$EXISTING" != "null" ]; then
|
|
277
|
+
gh issue edit "$EXISTING" --repo "$GITHUB_REPOSITORY" --body-file /tmp/reminder.md
|
|
278
|
+
echo "✅ Refreshed reminder issue #${EXISTING}"
|
|
323
279
|
else
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
--head "raccioly:${BRANCH}" \
|
|
327
|
-
--base main \
|
|
328
|
-
--title "$PR_TITLE" \
|
|
329
|
-
--body-file /tmp/pr-body.md 2>&1) && {
|
|
330
|
-
echo "✅ Created new PR: $PR_URL"
|
|
331
|
-
} || {
|
|
332
|
-
echo "⚠️ Could not create or find PR — branch was force-pushed with v${VERSION} content"
|
|
333
|
-
}
|
|
280
|
+
gh issue create --repo "$GITHUB_REPOSITORY" --title "$TITLE" --body-file /tmp/reminder.md
|
|
281
|
+
echo "✅ Opened catalog-submission reminder issue"
|
|
334
282
|
fi
|
|
283
|
+
|
|
284
|
+
- name: Write run summary
|
|
285
|
+
run: |
|
|
286
|
+
VERSION="${{ steps.meta.outputs.version }}"
|
|
287
|
+
SUBMIT_URL=$(cat /tmp/submit-url.txt)
|
|
288
|
+
{
|
|
289
|
+
echo "### Spec Kit catalog submission — v${VERSION}"
|
|
290
|
+
echo
|
|
291
|
+
echo "[Open the prefilled Extension Submission form](${SUBMIT_URL})"
|
|
292
|
+
echo
|
|
293
|
+
echo "Submit it through the form (do **not** open a PR against the catalog)."
|
|
294
|
+
} >> "$GITHUB_STEP_SUMMARY"
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
name: Prepare Spec Kit Catalog Submission (Manual)
|
|
2
|
+
|
|
3
|
+
# Manual recovery only. The automatic version of this runs inside
|
|
4
|
+
# release.yml (the `sync-catalog` job). Use this for one-off catalog
|
|
5
|
+
# submissions outside the release flow, e.g. re-preparing after the
|
|
6
|
+
# upstream issue was closed without action, or a metadata-only refresh.
|
|
7
|
+
#
|
|
8
|
+
# Per spec-kit maintainer guidance (github/spec-kit#2707) and spec-kit's
|
|
9
|
+
# Extension Publishing Guide, a catalog add/update MUST go through the
|
|
10
|
+
# Extension Submission ISSUE TEMPLATE so GitHub auto-applies the template
|
|
11
|
+
# labels + auto-assigns a maintainer — NOT a direct PR editing
|
|
12
|
+
# catalog.community.json. This workflow does NOT touch github/spec-kit: it
|
|
13
|
+
# builds a prefilled issue-form link and a one-click reminder issue in THIS
|
|
14
|
+
# repo. A human submits the real form so labels/assignment fire.
|
|
15
|
+
on:
|
|
16
|
+
workflow_dispatch:
|
|
17
|
+
inputs:
|
|
18
|
+
version:
|
|
19
|
+
description: 'Override version (leave empty to read from package.json)'
|
|
20
|
+
required: false
|
|
21
|
+
type: string
|
|
22
|
+
|
|
23
|
+
permissions:
|
|
24
|
+
contents: read
|
|
25
|
+
issues: write # reminder issue in THIS repo only — never github/spec-kit
|
|
26
|
+
|
|
27
|
+
jobs:
|
|
28
|
+
prepare-catalog-submission:
|
|
29
|
+
runs-on: ubuntu-latest
|
|
30
|
+
|
|
31
|
+
steps:
|
|
32
|
+
- name: Checkout docguard repo
|
|
33
|
+
uses: actions/checkout@v6
|
|
34
|
+
|
|
35
|
+
- name: Get version and metadata
|
|
36
|
+
id: meta
|
|
37
|
+
run: |
|
|
38
|
+
if [ -n "${{ inputs.version }}" ]; then
|
|
39
|
+
VERSION="${{ inputs.version }}"
|
|
40
|
+
else
|
|
41
|
+
VERSION=$(node -p "require('./package.json').version")
|
|
42
|
+
fi
|
|
43
|
+
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
|
|
44
|
+
echo "download_url=https://github.com/raccioly/docguard/releases/download/v${VERSION}/spec-kit-docguard-v${VERSION}.zip" >> "$GITHUB_OUTPUT"
|
|
45
|
+
echo "✅ Version: $VERSION"
|
|
46
|
+
|
|
47
|
+
- name: Build prefilled submission link + body
|
|
48
|
+
run: |
|
|
49
|
+
VERSION="${{ steps.meta.outputs.version }}"
|
|
50
|
+
DOWNLOAD_URL="${{ steps.meta.outputs.download_url }}"
|
|
51
|
+
python3 .github/scripts/speckit-submission.py --url "$VERSION" "$DOWNLOAD_URL" > /tmp/submit-url.txt
|
|
52
|
+
python3 .github/scripts/speckit-submission.py --body "$VERSION" "$DOWNLOAD_URL" > /tmp/submit-body.md
|
|
53
|
+
echo "✅ Built prefilled form URL ($(wc -c < /tmp/submit-url.txt) bytes) + body"
|
|
54
|
+
|
|
55
|
+
- name: Open or refresh catalog-submission reminder (this repo)
|
|
56
|
+
env:
|
|
57
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
58
|
+
run: |
|
|
59
|
+
VERSION="${{ steps.meta.outputs.version }}"
|
|
60
|
+
SUBMIT_URL=$(cat /tmp/submit-url.txt)
|
|
61
|
+
TITLE="📦 Submit DocGuard v${VERSION} to the spec-kit community catalog"
|
|
62
|
+
|
|
63
|
+
{
|
|
64
|
+
echo "Update the spec-kit community catalog for **v${VERSION}**"
|
|
65
|
+
echo "**via the Extension Submission issue template** (NOT a PR —"
|
|
66
|
+
echo "see github/spec-kit#2707)."
|
|
67
|
+
echo
|
|
68
|
+
echo "## 👉 One-click: open the prefilled submission form"
|
|
69
|
+
echo
|
|
70
|
+
echo "[**Open the Extension Submission form, prefilled for v${VERSION}**](${SUBMIT_URL})"
|
|
71
|
+
echo
|
|
72
|
+
echo "Then: review the fields, tick the two checkbox groups (Testing /"
|
|
73
|
+
echo "Requirements), and click **Submit new issue**. Submitting through"
|
|
74
|
+
echo "the form is what makes GitHub auto-apply labels and assign a"
|
|
75
|
+
echo "maintainer. If any long field came through truncated, paste it"
|
|
76
|
+
echo "from the copy below."
|
|
77
|
+
echo
|
|
78
|
+
echo "<details><summary>📋 Full submission body (copy/paste fallback)</summary>"
|
|
79
|
+
echo
|
|
80
|
+
cat /tmp/submit-body.md
|
|
81
|
+
echo
|
|
82
|
+
echo "</details>"
|
|
83
|
+
} > /tmp/reminder.md
|
|
84
|
+
|
|
85
|
+
EXISTING=$(gh issue list \
|
|
86
|
+
--repo "$GITHUB_REPOSITORY" \
|
|
87
|
+
--state open \
|
|
88
|
+
--search "in:title \"DocGuard v${VERSION}\" spec-kit catalog" \
|
|
89
|
+
--json number,title \
|
|
90
|
+
--jq "[.[] | select(.title | contains(\"v${VERSION}\"))][0].number" 2>/dev/null || echo "")
|
|
91
|
+
|
|
92
|
+
if [ -n "$EXISTING" ] && [ "$EXISTING" != "null" ]; then
|
|
93
|
+
gh issue edit "$EXISTING" --repo "$GITHUB_REPOSITORY" --body-file /tmp/reminder.md
|
|
94
|
+
echo "✅ Refreshed reminder issue #${EXISTING}"
|
|
95
|
+
else
|
|
96
|
+
gh issue create --repo "$GITHUB_REPOSITORY" --title "$TITLE" --body-file /tmp/reminder.md
|
|
97
|
+
echo "✅ Opened catalog-submission reminder issue"
|
|
98
|
+
fi
|
|
99
|
+
|
|
100
|
+
- name: Write run summary
|
|
101
|
+
run: |
|
|
102
|
+
VERSION="${{ steps.meta.outputs.version }}"
|
|
103
|
+
SUBMIT_URL=$(cat /tmp/submit-url.txt)
|
|
104
|
+
{
|
|
105
|
+
echo "### Spec Kit catalog submission — v${VERSION}"
|
|
106
|
+
echo
|
|
107
|
+
echo "[Open the prefilled Extension Submission form](${SUBMIT_URL})"
|
|
108
|
+
echo
|
|
109
|
+
echo "Submit it through the form (do **not** open a PR against the catalog)."
|
|
110
|
+
} >> "$GITHUB_STEP_SUMMARY"
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
# anatomy.md
|
|
2
2
|
|
|
3
|
-
> Auto-maintained by OpenWolf. Last scanned: 2026-
|
|
4
|
-
> Files:
|
|
3
|
+
> Auto-maintained by OpenWolf. Last scanned: 2026-06-10T21:09:50.636Z
|
|
4
|
+
> Files: 579 tracked | Anatomy hits: 0 | Misses: 0
|
|
5
|
+
|
|
6
|
+
## ../../../../../../../tmp/
|
|
7
|
+
|
|
8
|
+
- `append-buglog.mjs` — Declares path (~1335 tok)
|
|
5
9
|
|
|
6
10
|
## ./
|
|
7
11
|
|
|
@@ -14,7 +18,7 @@
|
|
|
14
18
|
- `.npmrc` — Supply-Chain Security Hardening (~59 tok)
|
|
15
19
|
- `action.yml` — CI: 'DocGuard — CDD Compliance' (~4322 tok)
|
|
16
20
|
- `AGENTS.md` — AI Agent Instructions — DocGuard (~1275 tok)
|
|
17
|
-
- `CHANGELOG.md` —
|
|
21
|
+
- `CHANGELOG.md` — Changelog (~39309 tok)
|
|
18
22
|
- `CLAUDE.md` — OpenWolf (~57 tok)
|
|
19
23
|
- `CODE_OF_CONDUCT.md` — Contributor Covenant Code of Conduct (~532 tok)
|
|
20
24
|
- `COMPARISONS.md` — Comparisons & Honest Limitations (~3053 tok)
|
|
@@ -27,8 +31,8 @@
|
|
|
27
31
|
- `package.json` — Node.js package manifest (~446 tok)
|
|
28
32
|
- `PHILOSOPHY.md` — The Philosophy of Canonical-Driven Development (~1757 tok)
|
|
29
33
|
- `pr_description.md` (~260 tok)
|
|
30
|
-
- `pyproject.toml` —
|
|
31
|
-
- `README.md` — Project documentation (~
|
|
34
|
+
- `pyproject.toml` — The enforcement tool for Canonical-Driven Development (CDD). Audit, generate, and guard your project (~351 tok)
|
|
35
|
+
- `README.md` — Project documentation (~7359 tok)
|
|
32
36
|
- `ROADMAP.md` — DocGuard Roadmap (~1494 tok)
|
|
33
37
|
- `SECURITY.md` — Security Policy (~357 tok)
|
|
34
38
|
- `STANDARD.md` — DocGuard Standard v0.1 (~6435 tok)
|
|
@@ -920,3 +924,59 @@
|
|
|
920
924
|
- `fix-memory.mjs` — Fix Memory — M-2 / S-10 (~1858 tok)
|
|
921
925
|
- `mechanical.mjs` — Mechanical Fix Registry — applies deterministic, no-LLM fixes in place. (~3008 tok)
|
|
922
926
|
- `sections.mjs` — Section-addressable docs — the foundation for surgical, non-destructive doc (~1676 tok)
|
|
927
|
+
|
|
928
|
+
## .github/scripts/
|
|
929
|
+
|
|
930
|
+
- `speckit-submission-body.sh` — Build the body for a spec-kit "Extension Submission" issue. (~1482 tok)
|
|
931
|
+
- `speckit-submission.py` — Build a spec-kit "Extension Submission" for DocGuard. (~2590 tok)
|
|
932
|
+
|
|
933
|
+
## .github/workflows/
|
|
934
|
+
|
|
935
|
+
- `release.yml` — CI: Auto Release — Tag, GitHub Release, npm, PyPI (~3386 tok)
|
|
936
|
+
- `sync-speckit-catalog.yml` — CI: Prepare Spec Kit Catalog Submission (Manual) (~1385 tok)
|
|
937
|
+
|
|
938
|
+
## cli/
|
|
939
|
+
|
|
940
|
+
- `config.mjs` — DocGuard — configuration loading. (~3265 tok)
|
|
941
|
+
- `docguard.mjs` — DocGuard CLI — The enforcement tool for Canonical-Driven Development (CDD) (~8124 tok)
|
|
942
|
+
- `shared-ignore.mjs` — Shared Ignore Utility — Unified file filtering for all validators. (~2780 tok)
|
|
943
|
+
- `shared-source.mjs` — Shared Source Resolution — Monorepo-aware source discovery. (~4357 tok)
|
|
944
|
+
|
|
945
|
+
## cli/commands/
|
|
946
|
+
|
|
947
|
+
- `agent.mjs` — `docguard agent` — the one-shot agent task graph. (~1644 tok)
|
|
948
|
+
- `generate.mjs` — Generate Command — Reverse-engineer canonical docs from an existing codebase (~15364 tok)
|
|
949
|
+
|
|
950
|
+
## cli/scanners/
|
|
951
|
+
|
|
952
|
+
- `inventory.mjs` — Inventory scanners — code-truth the generator PRE-FILLS instead of leaving (~1699 tok)
|
|
953
|
+
- `memory-plan.mjs` — Memory Plan — the orchestration artifact behind AI-powered Generate. (~5744 tok)
|
|
954
|
+
- `project-type.mjs` — Project-Type Detection — the language-agnostic spine. (~4190 tok)
|
|
955
|
+
- `routes.mjs` — Deep Route Scanner (~7712 tok)
|
|
956
|
+
|
|
957
|
+
## cli/validators/
|
|
958
|
+
|
|
959
|
+
- `freshness.mjs` — Freshness Validator — Check if documentation is stale relative to code changes. (~3462 tok)
|
|
960
|
+
- `metrics-consistency.mjs` — Metrics Consistency Validator — Detects stale hardcoded numbers in docs. (~2714 tok)
|
|
961
|
+
|
|
962
|
+
## cli/writers/
|
|
963
|
+
|
|
964
|
+
- `mechanical.mjs` — Mechanical Fix Registry — applies deterministic, no-LLM fixes in place. (~3290 tok)
|
|
965
|
+
|
|
966
|
+
## extensions/spec-kit-docguard/
|
|
967
|
+
|
|
968
|
+
- `extension.yml` (~1026 tok)
|
|
969
|
+
|
|
970
|
+
## tests/
|
|
971
|
+
|
|
972
|
+
- `agent.test.mjs` — Exports x (~1138 tok)
|
|
973
|
+
- `commands.test.mjs` — DocGuard CLI Tests — Tests all commands and flags (~10304 tok)
|
|
974
|
+
- `ensure-skills-idempotent.test.mjs` — v0.24 — Skill install is idempotent (field report, Issue D). (~1133 tok)
|
|
975
|
+
- `freshness.test.mjs` — runGit: commitOldCode (~3536 tok)
|
|
976
|
+
- `inventory.test.mjs` — Declares make (~1048 tok)
|
|
977
|
+
- `mechanical.test.mjs` — Declares write (~1161 tok)
|
|
978
|
+
- `memory-plan.test.mjs` — Exports u, Button (~1834 tok)
|
|
979
|
+
- `metrics-consistency.test.mjs` — Declares guardResults (~1986 tok)
|
|
980
|
+
- `metrics-dedup.test.mjs` — v0.14.1-N1 — Metrics-Consistency dedup. (~1450 tok)
|
|
981
|
+
- `project-type.test.mjs` — Declares make (~2140 tok)
|
|
982
|
+
- `shared-source.test.mjs` — API routes: GET (4 endpoints) (~1714 tok)
|