Skip to content

[Extension]: Update DocGuard — CDD Enforcement (v0.27.0) #3093

Description

@raccioly

Extension ID

docguard

Extension Name

DocGuard — CDD Enforcement

Version

0.27.0

Description

Canonical-Driven Development enforcement. Validates, scores, and traces project documentation with automated checks, AI-driven workflows, and spec-kit hooks. One pinned runtime dependency; pure Node.js otherwise.

Author

raccioly

Repository URL

https://github.com/raccioly/docguard

Download URL

https://github.com/raccioly/docguard/releases/download/v0.27.0/spec-kit-docguard-v0.27.0.zip

License

MIT

Homepage (optional)

https://www.npmjs.com/package/docguard-cli

Documentation URL (optional)

https://github.com/raccioly/docguard/blob/main/extensions/spec-kit-docguard/README.md

Changelog URL (optional)

https://github.com/raccioly/docguard/blob/main/CHANGELOG.md

Required Spec Kit Version

=0.1.0

Required Tools (optional)

- node (>=18.0.0) - required
- npx - required
- specify - optional (auto-initializes the SDD workflow during docguard init)

Number of Commands

6

Number of Hooks (optional)

3

Tags

documentation, validation, quality, cdd, traceability, ai-agents, enforcement, spec-kit

Key Features

  • 19-validator quality gate with severity triage and a remediation plan
  • AI-driven documentation repair with codebase research and validation loops
  • Cross-document semantic consistency analysis (read-only review)
  • CDD maturity score with an ROI-based improvement roadmap
  • Reverse-engineers canonical docs from an existing codebase
  • spec-kit workflow hooks (after_implement, before_tasks, after_tasks)

Testing Checklist

  • Extension installs successfully via download URL
  • All commands execute without errors
  • Documentation is complete and accurate
  • No security vulnerabilities identified
  • Tested on at least one real project

Submission Requirements

  • Valid extension.yml manifest included
  • README.md with installation and usage instructions
  • LICENSE file included
  • GitHub release created with version tag
  • All command files exist and are properly formatted
  • Extension ID follows naming conventions (lowercase-with-hyphens)

Testing Details

Tested on: Linux + macOS with the spec-kit CLI.

Install:

specify extension add docguard --from https://github.com/raccioly/docguard/releases/download/v0.27.0/spec-kit-docguard-v0.27.0.zip

Scenarios verified:

  1. Extension installs from the release ZIP without manifest validation errors.
  2. All six speckit.docguard.* commands resolve and run.
  3. The three workflow hooks register against spec-kit's lifecycle.

Example Usage

# Install the extension
specify extension add docguard --from https://github.com/raccioly/docguard/releases/download/v0.27.0/spec-kit-docguard-v0.27.0.zip

# Run the documentation quality gate
/speckit.docguard.guard

Proposed Catalog Entry

json
{
  "docguard": {
    "name": "DocGuard \u2014 CDD Enforcement",
    "id": "docguard",
    "description": "Canonical-Driven Development enforcement. Validates, scores, and traces project documentation with automated checks, AI-driven workflows, and spec-kit hooks. One pinned runtime dependency; pure Node.js otherwise.",
    "author": "raccioly",
    "version": "0.27.0",
    "download_url": "https://github.com/raccioly/docguard/releases/download/v0.27.0/spec-kit-docguard-v0.27.0.zip",
    "repository": "https://github.com/raccioly/docguard",
    "homepage": "https://www.npmjs.com/package/docguard-cli",
    "documentation": "https://github.com/raccioly/docguard/blob/main/extensions/spec-kit-docguard/README.md",
    "changelog": "https://github.com/raccioly/docguard/blob/main/CHANGELOG.md",
    "license": "MIT",
    "requires": {
      "speckit_version": ">=0.1.0",
      "tools": [
        {
          "name": "node",
          "version": ">=18.0.0",
          "required": true
        }
      ]
    },
    "provides": {
      "commands": 6,
      "hooks": 3
    },
    "tags": [
      "documentation",
      "validation",
      "quality",
      "cdd",
      "traceability",
      "ai-agents",
      "enforcement",
      "spec-kit"
    ],
    "verified": false,
    "downloads": 0,
    "stars": 0
  }
}

Additional Context

This is an update to an existing catalog entry (docguard) for a new release — please bump the version and download URL on the current entry rather than adding a duplicate.

Release notes (v0.27.0):

Acting on a third end-to-end LLM field report (a coding agent ran DocGuard on a
Vite+Vitest WhatsApp-inbox repo). The headline is architectural: DocGuard is a
tool for LLMs, so every run should end with a suggested next action and every
finding it surfaces should be addressable, suppressible, and — when uncertain —
reportable. This release introduces structured findings (stable codes +
confidence + a built-in suggestion), wires them through guard/explain, adds a
local-first feedback loop, and fixes the group-A false positives the report
flagged.

Added

  • Structured findings with stable codes (cli/findings.mjs) — a validator
    can now emit Finding[] (code like SEC001, high/low confidence, and a
    machine-readable suggestion) via resultFromFindings(...). Fully
    backward-compatible: the legacy {errors,warnings,passed,total} shape is
    derived from the same array, so non-migrated validators are unchanged. Security
    is the first fully-migrated validator.
  • Every guard run ends with a suggested next step — issues render with an
    inline → suggestion (fix command or suppression pragma); a clean run points
    at the next workflow step. guard --format json now carries a stable
    findings / reportable / nextStep contract for agents in hooks/CI.
  • docguard feedback — collects the low-confidence findings of a guard run
    (likely false positives, and anything DocGuard flagged uncertainly), writes a
    full local record under .docguard/feedback/, and prints a 1-click,
    prefilled, redacted, length-capped
    GitHub issue URL (zero typing; no source
    code or secret values; capped well under GitHub's ~8 KB URL limit — the failure
    mode of commit 3b600fd).
  • docguard explain <CODE>explain now resolves a finding code
    (docguard explain SEC001) to its meaning, inline-suppression snippet, and the
    feedback path, alongside the existing validator/warning lookup.
  • Inline secret suppression// docguard:ignore SEC001 — reason (or
    // docguard:ignore-secret, or docguard:ignore SEC*) on the flagged line or
    the line above silences a single finding, instead of blinding the whole file
    via securityIgnore. (field report chore: Fix typo #8)
  • Read-only skills nudge — when an agent has no /docguard.* commands
    installed, guard suggests docguard init (it never writes — scaffolding
    stays on init).

Fixed

  • Natural-language values no longer flagged as hardcoded passwords — a
    password-style key whose value reads like prose (a validation message / UI
    copy) is downgraded from a blocking error to a low-confidence, suppressible,
    reportable warning. Still surfaced (no false-green); a genuine single-token
    secret like "SuperSecretPassword!" stays a blocking error. (field report Add John Lam as contributor and release badge #1)
  • score recognises modern test-runner config — Vitest configured inside
    vite.config.* (vitest/config import or a test: block), a scripts.test
    that runs a known runner (vitest/jest/mocha/ava/…), and runner configs
    in workspace subdirs (backend/, frontend/, …). A fully-tested Vite+Vitest
    repo is no longer docked 15 points and told to "add a test runner". (field
    report Update README.md #3)
  • TODO-Tracking scans docs-canonical/{ROADMAP,CURRENT-STATE,BACKLOG,TODO}.md
    — a TODO tracked in the canonical roadmap is no longer reported as untracked.
    (field report shell scripts in the scripts directory fail to execute #6)
  • Env validator ignores runner/CI/SDK varsVITEST, CI, GITHUB_*,
    RUNNER_*, JEST_*, AWS_SESSION_TOKEN, etc. are no longer reported as
    undocumented (they're injected by the runner, not product config). NODE_ENV
    is deliberately still treated as app config. (field report adding executable permission to the scripts so they execute when the … #7)
  • Doc-Quality passive-voice has a per-doc override — parity with
    negation-load: <!-- docguard:quality passive-voice off — reason --> (or a
    numeric threshold) silences the warning on legitimately passive sequence/flow
    docs. (field report Support Cursor CLI #9)

Notes

  • Tests 794 → 813 (new tests/field-report-3.test.mjs, each fix paired with a
    non-vacuous control).
  • The detection-gap items from the report (semantic number/enum drift verify --semantic, dynamic-import cycle breaks, spec-declares-but-no-route, sync --tests, freshness precedence) are deliberately deferred — each is its own
    design and would bloat this release.

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions