Model Context Protocol Server: DocGuard (io.github.raccioly/docguard)
This MCP server provides deterministic doc-drift detection. It focuses on guarding documentation that AI agents can use by validating, scoring, explaining, and verify-claims, then diagnosing MCP tools when drift is detected.
🛠️ Key Features
Deterministic doc-drift detection
Guard, score, explain, verify-claims
Diagnose MCP tools
🚀 Use Cases
Spec-Driven Development enforcement for documentation quality
Documentation workflows where drift detection is required
Governance and compliance-oriented documentation checks
⚡ Developer Benefits
CI integration referenced via a GitHub Actions workflow badge
Works within Model Context Protocol (MCP) tool ecosystems
Aligns documentation with spec-driven development practices
⚠️ Limitations
Description provides no details on deployment options, supported languages, or configuration beyond drift detection and claim verification.
DocGuard enforces Canonical-Driven Development (CDD) — a methodology where documentation is the source of truth, not an afterthought. AI writes the docs, DocGuard validates them.
Traditional Development
Canonical-Driven Development
Code first, docs maybe
Docs first, code conforms
Docs rot silently
Drift is tracked and enforced
Docs are optional
Docs are required and validated
One AI agent, one context
Any agent, shared context via canonical docs
DocGuard is an official GitHub Spec Kit community extension. It validates the artifacts that Spec Kit creates, ensuring your specs stay high-quality throughout the development lifecycle.
DocGuard checks declared documentation facts against repository evidence and gives agents structured repair tasks. Deterministic checks cover supported facts, references, and generated sections. Human-authored requirements and architectural decisions retain their authority when implementation diverges.
A guard result describes the checks performed. The CDD grade measures structural maturity. Exact declarations in .docguard-evidence.json can verify selected statements against current local evidence; every other statement remains unverified. Coverage and unresolved claims remain visible, so teams can choose an appropriate enforcement policy.
Research motivates evaluation of this approach. A 2026 study found that repository context files did not generally improve task success and increased inference cost in its evaluated settings. It also found agents generally followed the instructions. These results support testing concise, relevant context and measuring actual task outcomes; they do not establish DocGuard's effectiveness. Evaluating AGENTS.md, revised June 2026.
The current roadmap prioritizes accurate detection, reproducible evidence, document lifecycle management, and contributor-supplied regression cases. Released plans and superseded specifications are removed from active AI context and remain recoverable from Git.
⚡ Quick Start
Package naming: this repo is raccioly/docguard; the published package is docguard-cli on both npm and PyPI; the installed command is docguard. Same project — the -cli suffix is just the registry name. The package runs no install scripts, so npm i -g docguard-cli --ignore-scripts is equivalent.
Node.js (npm)
bash
# No install needed — run directly
npx docguard-cli diagnose
# Or install globally
npm i -g docguard-cli
docguard diagnose
Python (PyPI)
bash
pip install docguard-cli
docguard diagnose
Note: The Python package is a thin wrapper that delegates to npx. Node.js 18+ is required on the system.
Docker (MCP server)
The MCP server ships as a container image on GHCR — no Node.js install required. Public image, so no authentication is needed to pull it:
bash
# Run the MCP server against the current directory
docker run -i --rm -v "$PWD":/workspace ghcr.io/raccioly/docguard:latest
The entrypoint is the stdio MCP transport: stdout is the JSON-RPC channel, so don't pipe anything else into it. Mount the project you want inspected at /workspace and pass {"projectDir": "/workspace"} in tool calls (or rely on the default working directory).
Pin a version rather than tracking latest in CI:
bash
docker run -i --rm -v "$PWD":/workspace ghcr.io/raccioly/docguard:0.34.9
The server is read-only — it never writes to the mounted project.
More ways to integrate
pre-commit — changed-only guard on every commit:
yaml
repos:-repo:https://github.com/raccioly/docguardrev:v0.29.0hooks: [{ id:docguard-guard }] # docguard-guard-full for pre-push
Homebrew — brew install raccioly/tap/docguard (formula in packaging/homebrew/).
Core Workflow
bash
# 1. Initialize docs for your project
npx docguard-cli init
# 2. Or reverse-engineer docs from existing code
npx docguard-cli generate
# 3. AI diagnoses issues and generates fix prompts
npx docguard-cli diagnose
# 4. Validate — use as CI gate
npx docguard-cli guard
# 5. Check maturity score
npx docguard-cli score
The AI Loop
code
diagnose → AI reads prompts → AI fixes docs → guard verifies
↑ ↓
└───────────────── issues found? ←──────────────────────┘
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.
Mechanical vs. agent fixes
DocGuard splits drift into two kinds and is explicit about which is which:
Kind
Example
How it's fixed
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
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
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.
Continuous documentation workflow
code
guard ──▶ fix --write (mechanical, auto) ──▶ guard ──▶ diagnose (agent prompts for the rest)
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.
Agent-driven:docguard diagnose --auto scaffolds missing docs and applies mechanical fixes, then emits prompts for the content rewrites that remain.
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.
🌱 Spec Kit Integration
DocGuard is a community extension for GitHub's Spec Kit framework. While Spec Kit focuses on creating specifications (via AI slash commands like /speckit.specify and /speckit.plan), DocGuard focuses on validating their quality.
This installs DocGuard's slash commands (/docguard.init, /docguard.guard, /docguard.review, /docguard.fix, /docguard.update) into your AI agent's command palette.
Usage
DocGuard ships 23 commands (the "Daily 5" + 18 situational tools, including lifecycle reconciliation, retirement and spec tracking, the zero-install demo, the mcp server, and the ci pipeline gate). Six additional one-shot scaffolders are accessed via docguard init --with <name>. Legacy command forms remain compatible until v1.0 and print their replacements.
The Daily 5 — what you'll reach for 95% of the time:
Command
What It Does
init
Bootstrap a project (--wizard for interactive · --with <name> for scaffolders)
guard
Validate against canonical docs — 29 validators
diff
Show gaps between docs and code (--since <ref> for impact mode)
sync
Refresh code-truth doc sections — keeps memory always up to date
score
Structural CDD maturity score (0-100; not a guard verdict; --diff for delta between refs)
Tools (situational, but day-to-day useful):
Command
Purpose
demo
Zero-install showcase — runs guard against a baked-in drifting fixture (npx docguard-cli demo)
diagnose
AI orchestrator — guard → emit fix prompts in one command
fix
Generate AI fix instructions for specific docs (--doc <name> --format prompt)
fix --write
Apply deterministic fixes (no AI — version bumps, counts, anchors, sections)
fix --history
Audit log of every mechanical fix applied (from .docguard/fixed.json)
generate
Reverse-engineer docs from existing codebase (--plan for AI scan) — includes auto-generated Mermaid ER diagrams from your detected schemas (Prisma/Drizzle/TypeORM/Sequelize/Django/Rails) in DATA-MODEL.md
agent
One-shot agent task graph, or a bounded current-evidence packet for one task (--task <text>, --format json)
explain <warning|CODE>
Paste any warning — or a finding code like SEC001 — to get the validator's docstring, fix path, and how to suppress
verify --evidence
Evaluate strict statement-to-source declarations for typed JSON values, bounded collection counts, saved oasdiff JSON, and saved Buf JSON Lines. Results distinguish scoped verification, contradiction, stale inputs, inconclusive evidence, and unsupported formats.
verify --semantic
Extract documented numbers/limits/enums (retention days, rate limits, GSI/role counts, status enums) as a task list for an agent to check against code — the semantic-drift class regex/AST can't see
verify --instructions
Audit AGENTS.md/CLAUDE.md themselves for drift: duplicate rules, never-vs-always contradictions, stale file pointers, unknown commands — plus clustered rule pairs as agent judgment tasks
feedback
Review any finding or a synthetic false-positive/false-negative/unsupported fixture; verify its opposite control, reduce it deterministically, search open and closed duplicates, and optionally emit a test-only contribution. Nothing is submitted automatically.
retire
Find completed or superseded planning material (--plan/--check; --fail-on-warning gates advisory candidates) and explicitly remove clean tracked documentation from active AI context. .docguard-archive.json records recovery metadata and retired requirement identities, and --retention-ref proves the source revision remains reachable. This is separate from the Spec Kit Archive extension, which consolidates feature documents.
reconcile
Build a read-only code↔spec review graph since a Git ref. Classifies mechanical facts, approved intent, decisions, unrelated changes, and unsupported evidence; --write applies only mechanical generated-section refreshes.
specs
Maintain the versioned spec registry, preflight new specs, and apply evidence-gated completion transactions with bounded outcomes and active-context regeneration. Verified living specs can record later reviewed maintenance without reopening or duplicating the specification.
specs --check / specs --write
Validate or refresh .docguard-specs.json, the byte-stable index of immutable spec IDs, reviewed lifecycle/lineage/scope, artifact digests, task state, explicitly scoped test evidence, and archive tombstones. Refreshes preserve the reviewed block.
specs preflight [--path <spec>]
Before specification, print current spec lifecycle and evidence. Before planning, check the generated draft for structural blockers and report semantic overlap as review-only evidence.
mcp
MCP server — exposes guard/score/explain/verify/report/diagnose as native tools for Claude, Cursor, and any MCP client. Stdio: claude mcp add docguard -- npx docguard-cli mcp. Team-shared HTTP: docguard mcp --transport http --port 8585 (loopback by default; non-loopback binds require --api-key)
report
Compliance-evidence bundle for audits — combined readiness, guard verdict, structural maturity, ALCOA+ attributes, and fix history, stamped with git commit and a tamper-evident sha256 integrity hash (--format json, --out <file>). Evidence, not a gate: always exits 0
ci
Pipeline gate: guard + structural maturity in one command with READY/ATTENTION/BLOCKED assessment — never scaffolds or touches source; its only write is its own .docguard/history.jsonl (opt out: --no-history). --threshold <n> fails below a score, --fail-on-warning for strict mode, --format json for parsers
score --trend
Score trajectory from recorded ci runs — sparkline, delta, and the last 10 runs with commit stamps
Run them solo (docguard init --with hooks) or stacked (docguard init --with agents,hooks,badge,ci).
To declare an exact fact, copy templates/evidence-manifest.json to
.docguard-evidence.json, point its literal Markdown template at one unique
statement, and bind that value to a supported local source. Run
docguard verify --evidence --format json before enabling the guard in CI.
External compatibility declarations consume saved oasdiff or Buf output and
require current SHA-256 identities for every declared repository input.
Deprecation aliases — setup · agents · hooks · badge · llms · publish · impact remain compatible until v1.0 with a yellow stderr warning. audit → guard is permanent and silent; ci is a current first-class pipeline command.
SARIF 2.1.0 output — findings as rules/results for GitHub Code Scanning and SARIF dashboards
guard
--format junit
JUnit XML output — one testcase per validator, for GitLab CI (artifacts:reports:junit), Jenkins, Azure DevOps, CircleCI
guard
--update-baseline
Adopt DocGuard on a legacy repo without a red day one: freeze today's findings into a committed .docguard.baseline.json; guard/ci then gate only NEW drift. Suppression is always visible ("N pre-existing finding(s) suppressed"), and --no-baseline shows the full picture
guard
--full
Generate llms-full.txt (full doc bodies inlined) instead of the llms.txt link index
Regenerate the agent-file family (CLAUDE.md, Copilot, Cursor, …) from AGENTS.md; hash-marked, never touches hand-written files without --force
agents
--check
CI gate for the synced agent-file family — exit 2 when a variant is stale
agents
--force
Overwrite existing files (creates .bak backups)
generate, agents, init
--force-redo
Bypass ping-pong suppression in .docguard/fixed.json
fix --write
--profile <name>
Starter / standard / enterprise
init
--no-spec-kit
Skip auto-init of .specify/ / .agent/ scaffolding
init
--changed-only [--since <ref>]
Pre-commit lite mode (6 fast validators on changed files only)
guard
--timings
Per-validator wall-time profile (slowest first)
guard
--show-failing
Show warnings/errors even when status is PASS
guard
--pin
Record running CLI version into .docguard.json (reproducibility)
guard
--diff
Per-category drill-down
score, memory
--check-only
Exit 1 if behind (for CI)
upgrade
--apply
Actually run the migration
upgrade
--pr
Open a PR with the migration
upgrade
--reverse <file>
Reverse traceability (code → docs)
trace
--no-indirect
Skip the reverse-import-graph analysis (docs about modules that import a changed file)
impact, diff --since
--prs
Open-PR doc-conflict analysis — two PRs impacting the same canonical doc = merge-order risk (needs the gh CLI)
impact
--transport http--port--host--api-key--path
Serve MCP over Streamable HTTP instead of stdio (team-shared server; loopback-only unless an api-key is set)
mcp
--history
Show fix audit log
fix
When run from a nested package without --dir, DocGuard checks only that
selected directory. If a bounded ancestor scan finds a .docguard.json or an
npm/pnpm workspace declaration that owns the package, stderr shows an exact
repository-scope rerun command. DocGuard never changes scope automatically. JSON,
SARIF, and JUnit stdout remain valid; machine runs receive one typed
docguard.repository-root-guidance JSON diagnostic on stderr. A local config,
an explicit --dir, an unmatched workspace, or a nested Git boundary suppresses
the suggestion.
DocGuard runs 29 automated validators on every guard check. Source-facing validators are language-aware where their evidence model applies; repository and document validators operate independently of source language.
Counting note:guard prints 30 result rows, not 29. Structure emits a
second check result (Doc Sections) under the same validator key, so rows are
checks, not validators. The published number is the count of shipped
cli/validators/*.mjs modules and is enforced by tests — don't derive it by
counting output rows.
#
Validator
What It Checks
Default
1
Structure
Required CDD files exist
✅ On
2
Doc Sections
Canonical docs have required sections (or N/A markers)
✅ On
3
Docs-Sync
Routes/services referenced in docs + OpenAPI cross-check
✅ On
4
Drift-Comments
// DRIFT: comments logged in DRIFT-LOG.md (skips test files by default)
Exact declared Markdown statements match current typed JSON, bounded collections, or saved compatibility reports; unsupported and missing evidence stays visible
✅ On
23
Cross-Reference
Internal markdown links + anchors resolve (with "did you mean?" hints); Obsidian wikilinks validated when the repo uses them as file links (.obsidian present or a target resolves)
✅ On
24
Generated-Staleness
source=code sections match scanner output; status: draft doc age
✅ On
25
Canonical-Sync
DocGuard's own README count claims match code-truth (DocGuard repo only — N/A elsewhere)
✅ On
26
Metrics-Consistency
Hardcoded numbers match actual counts
✅ On
27
Surface-Sync
Item-level enumerable drift — names in doc tables/lists (commands, checks, etc.) match code-truth (opt-in via surfaceSync.surfaces; N/A unless configured)
✅ On
28
Diff-Suspicion
Change-driven: a doc/agent-instruction file that references code changed since the ref AND shares removed domain symbols is flagged for review (arXiv 2010.01625, F1 74.7)
✅ On
29
Reference-Existence
Two-revision check: a backticked code symbol present when the doc was last updated but gone at HEAD is flagged as outdated (arXiv 2212.01479)
✅ On
30
API-Doc-Smells
Bloated (≥300 words) / Lazy (≤6 prose words) API documentation units, keyed on signature-headed sections (F1 0.90/0.95)
✅ On
Per-validator controls (in .docguard.json):
json
{"validators":{"test-spec":false,// disable (kebab-case OR camelCase both accepted)"freshness":true},"severity":{"todoTracking":"high",// warnings fail CI"freshness":"low"// warnings ignored for exit code},"findingSeverity":{"TRC004":"low",// only this finding becomes informational"SEC001":"high"// this exact code always blocks}}
Exact findingSeverity entries take precedence over validator severity. Guard
JSON, SARIF, and JUnit retain the detector's intrinsic severity and add the
effective severity plus the policy source. Intrinsic errors stay blocking unless
their exact stable code is explicitly configured.
📄 Templates
DocGuard ships 18 professional templates with metadata, badges, and revision history:
Template
Type
Purpose
ARCHITECTURE.md
Canonical
System design, components, layer boundaries
DATA-MODEL.md
Canonical
Schemas, entities, relationships
SECURITY.md
Canonical
Auth, permissions, secrets management
TEST-SPEC.md
Canonical
Test strategy, coverage requirements
ENVIRONMENT.md
Canonical
Environment variables, deployment config
REQUIREMENTS.md
Canonical
Spec-kit aligned FR/SC IDs, user stories
DEPLOYMENT.md
Canonical
Infrastructure, CI/CD, DNS
ADR.md
Canonical
Architecture Decision Records
ROADMAP.md
Canonical
Project phases, feature tracking
KNOWN-GOTCHAS.md
Implementation
Symptom → gotcha → fix entries
TROUBLESHOOTING.md
Implementation
Error diagnosis guides
RUNBOOKS.md
Implementation
Operational procedures
VENDOR-BUGS.md
Implementation
Third-party issue tracker
CURRENT-STATE.md
Implementation
Deployment status, tech debt
AGENTS.md
Agent
AI agent behavior rules
CHANGELOG.md
Tracking
Change log
DRIFT-LOG.md
Tracking
Deviation tracking
llms.txt
Generated
AI-friendly project summary (llmstxt.org)
🤖 AI Agent Support
One-click MCP install
Claude Code: claude mcp add docguard -- npx docguard-cli mcp
Claude Desktop: download docguard-v<version>.mcpb from the latest release and drag it into Settings → Extensions — you'll be asked which project folder to analyze. No npm, no JSON editing.
Anything MCP: DocGuard is a verified namespace on the official MCP registry (io.github.raccioly/docguard).
DocGuard works with every major AI coding agent. All canonical docs are plain markdown — no vendor lock-in.
Registers a PostToolUse hook in the project's .claude/settings.json. After the
agent edits a canonical doc it is nudged to run docguard guard --changed-only;
after it edits a code file the docs reference, it is nudged toward docguard impact.
Merge-safe (only DocGuard's own entry is ever added/removed), throttled to one nudge
per file per 30 minutes, and the hook runtime can never break a session (errors are
silent by contract). Explicit opt-in — init never installs it for you.
⚡ Slash Commands
DocGuard provides AI agent slash commands for integrated workflows. Installed automatically via docguard init or specify extension add docguard:
Command
What It Does
/docguard.init
Initialize Canonical-Driven Development in a new or existing project
/docguard.guard
Run quality validation — check all 29 validators
/docguard.review
Analyze doc quality and suggest improvements
/docguard.fix
Generate targeted fix prompts for specific issues
/docguard.update
Update canonical docs after code changes — detect drift and sync documentation
These commands are installed into your AI agent's command directory:
code
.github/commands/ → GitHub Copilot
.cursor/rules/ → Cursor
.gemini/commands/ → Google Gemini
.claude/commands/ → Claude Code
.agents/workflows/ → Antigravity
🧠 AI Skills (Enterprise)
Beyond slash commands, DocGuard provides 4 enterprise-grade AI skills — deep behavior protocols that tell AI agents not just what to run, but how to think, validate, and iterate. Skills are modeled after Spec Kit's skill architecture.
Skill
Lines
What It Does
docguard-guard
155
6-step quality gate with severity triage (CRITICAL→LOW), structured reporting, remediation
docguard-fix
195
7-step research workflow with per-document codebase research and 3-iteration validation loops
docguard-review
170
Read-only semantic cross-document analysis with 6 analysis passes and quality scoring
docguard-score
165
CDD maturity assessment with ROI-based improvement roadmap and grade progression
Workflow Hooks
DocGuard integrates into the spec-kit workflow as an automated quality gate:
Hook
When
Behavior
after_implement
After /speckit.implement
Mandatory — always runs DocGuard guard
before_tasks
Before /speckit.tasks
Optional — reviews doc consistency
after_tasks
After /speckit.tasks
Optional — shows CDD maturity score
Orchestration Scripts
For advanced users and CI/CD pipelines, DocGuard includes bash scripts with --json output:
Script
Purpose
docguard-check-docs.sh
Discover project docs, return JSON inventory with metadata
docguard-suggest-fix.sh
Run guard, parse results, output prioritized fixes
docguard-init-doc.sh
Initialize canonical doc with metadata header
📁 Examples
Three real-world projects to see DocGuard in action:
Covers all 15 CLI commands, project type detection, compliance profiles, JSON output format, and help completeness.
CI Matrix
Node.js
OS
Status
18
ubuntu-latest
✅
20
ubuntu-latest
✅
22
ubuntu-latest
✅
Self-Validation (Dogfooding)
DocGuard runs its own guard, score, diff, diagnose, and badge commands against itself in CI — ensuring the tool passes its own checks.
🏢 Enterprise Adoption
Everything runs local or in your CI — no SaaS, no data leaving your infra.
The pieces that matter at company scale:
Need
DocGuard answer
Adopt on a legacy repo without a red pipeline on day one
guard --update-baseline freezes existing findings into a committed .docguard.baseline.json; only NEW drift gates from then on (suppression always visible)
Audit trail for compliance reviews
docguard report — commit-stamped evidence bundle (guard verdict, findings by code, CDD score, ALCOA+ data-integrity attributes, fix history) with a tamper-evident sha256 integrity hash
docguard ci records every run to .docguard/history.jsonl; score --trend shows the sparkline + delta
AI agents on the team
MCP server (stdio or team-shared HTTP) exposes guard/score/explain/verify/report/diagnose as read-only tools; agents --sync keeps the whole agent-file family drift-proof
Data-integrity framing auditors know
ALCOA+ scoring (FDA 21 CFR Part 11 / EMA Annex 11 vocabulary) built into score and report
⚙️ CI/CD Integration
Full recipes: see docs-canonical/CI-RECIPES.md for guard, auto-fix (commits mechanical fixes back to PRs), nightly sync, score-on-PR, and pre-commit configs.
GitHub Actions — Guard (most common)
yaml
name:DocGuardGuardon: [pull_request, push]
permissions: { pull-requests:write } # for the sticky PR comment (optional)jobs:docguard:runs-on:ubuntu-lateststeps:-uses:actions/checkout@v4with: { fetch-depth:0 }
-uses:raccioly/docguard@v0.12.0with:command:guard
On pull requests, guard mode also gives inline PR feedback (both default on):
Input
Default
Description
annotations
true
Inline ::error/::warning annotations on the PR diff, one per guard finding (capped at 50; a final notice reports how many were elided)
pr-comment
true
Sticky PR comment with the guard verdict, top findings (by code), and which canonical docs the PR's changed files impact (diff --since origin/<base>). Needs permissions: pull-requests: write; degrades to a log warning without it
Both run even when guard fails — that's when the feedback matters. Prefer native
code-scanning integration? docguard guard --format sarif uploads straight to
GitHub Code Scanning via github/codeql-action/upload-sarif.
Adoption baseline — guard --update-baseline freezes a legacy repo's existing findings
into a committed .docguard.baseline.json; guard/ci then gate only NEW drift, with suppression
always visible. Adopt today, burn down at your own pace.
docguard report — commit-stamped compliance-evidence bundle (guard verdict, findings by
code, CDD score, ALCOA+ attributes, fix history) with a tamper-evident sha256 integrity hash.
Also exposed as the docguard_report MCP tool.
Score history + score --trend — docguard ci records every run to
.docguard/history.jsonl; the trend view shows the sparkline and delta over time.
Three machine formats for guard — --format json, --format sarif (GitHub Code
Scanning), and --format junit (GitLab, Jenkins, Azure DevOps, CircleCI).
MCP server, stdio + team HTTP — guard/score/explain/verify/report/diagnose as read-only
agent tools: claude mcp add docguard -- npx docguard-cli mcp.
Agent-file family sync — agents --sync treats AGENTS.md as canonical and regenerates
CLAUDE.md / .cursor/rules / Copilot / Gemini variants with drift-proof source-hash markers.
verify --evidence, verify --semantic, and verify --instructions — check exact local
evidence declarations first, extract remaining numbers/limits/enums as agent tasks, and audit
agent-instruction files for contradictions and stale pointers.
docguard agent — one-shot ordered task graph with pre-filled code-truth, collapsing ~10
agent round-trips into one call.
docguard agent --task <text> — opt-in task context from approved current
specs and canonical docs, with hashed excerpts, source/test pointers, strict
budgets, and honest abstention. The frozen 27-run evaluation preserved every
tested behavior and cut median steps by 50% and latency by 17% versus the
context pack, while using 80% more uncached input tokens.
DocGuard's quality evaluation and documentation generation patterns are informed by peer-reviewed research from the University of Arizona and the Joint Interoperability Test Command (JITC), U.S. Department of Defense:
What the labels measure. DocGuard borrows TRACE's HIGH/MEDIUM/LOW vocabulary as deterministic strata (a validator's check pass-ratio). Detector precision is the quantity DocGuard actually measures: on a labelled, deliberately balanced benchmark corpus, published with sample sizes and Wilson 95% bounds in benchmarks/baseline.json (contract: schemas/docguard-benchmark-baseline.schema.json). Every number there carries a caveat explaining that benchmark precision on a balanced corpus differs from the base rate of stale claims in your repository. See VALIDATION.md.
⭐ Star History
🔒 Privacy & Supply Chain
DocGuard is local-first: no telemetry, no analytics, no phone-home — the full
(short) policy is in PRIVACY.md. npm releases are published with
provenance attestation,
so you can verify each tarball was built by GitHub Actions from this repository.