docguard-cli 0.9.8__tar.gz → 0.9.9__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.
Files changed (186) hide show
  1. {docguard_cli-0.9.8/extensions/spec-kit-docguard → docguard_cli-0.9.9/.agent}/skills/docguard-fix/SKILL.md +2 -1
  2. {docguard_cli-0.9.8/extensions/spec-kit-docguard → docguard_cli-0.9.9/.agent}/skills/docguard-guard/SKILL.md +9 -4
  3. {docguard_cli-0.9.8/extensions/spec-kit-docguard → docguard_cli-0.9.9/.agent}/skills/docguard-review/SKILL.md +5 -1
  4. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.agent/skills/docguard-score/SKILL.md +2 -1
  5. docguard_cli-0.9.9/.specify/memory/constitution.md +76 -0
  6. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/CHANGELOG.md +38 -0
  7. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/PKG-INFO +1 -1
  8. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/commands/diagnose.mjs +64 -24
  9. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/commands/fix.mjs +1 -1
  10. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/commands/guard.mjs +12 -1
  11. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/commands/hooks.mjs +2 -2
  12. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/commands/init.mjs +94 -73
  13. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/commands/setup.mjs +60 -30
  14. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/docguard.mjs +5 -5
  15. docguard_cli-0.9.9/cli/ensure-skills.mjs +314 -0
  16. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/scanners/speckit.mjs +1 -1
  17. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/validators/doc-quality.mjs +1 -1
  18. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/validators/schema-sync.mjs +1 -1
  19. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/validators/todo-tracking.mjs +1 -1
  20. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/extensions/spec-kit-docguard/extension.yml +6 -2
  21. {docguard_cli-0.9.8/.agent → docguard_cli-0.9.9/extensions/spec-kit-docguard}/skills/docguard-fix/SKILL.md +2 -1
  22. {docguard_cli-0.9.8/.agent → docguard_cli-0.9.9/extensions/spec-kit-docguard}/skills/docguard-guard/SKILL.md +9 -4
  23. {docguard_cli-0.9.8/.agent → docguard_cli-0.9.9/extensions/spec-kit-docguard}/skills/docguard-review/SKILL.md +5 -1
  24. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/extensions/spec-kit-docguard/skills/docguard-score/SKILL.md +2 -1
  25. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/package.json +1 -1
  26. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/pyproject.toml +1 -1
  27. docguard_cli-0.9.8/.specify/memory/constitution.md +0 -50
  28. docguard_cli-0.9.8/cli/ensure-skills.mjs +0 -96
  29. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.agent/commands/speckit.analyze.md +0 -0
  30. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.agent/commands/speckit.checklist.md +0 -0
  31. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.agent/commands/speckit.clarify.md +0 -0
  32. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.agent/commands/speckit.constitution.md +0 -0
  33. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.agent/commands/speckit.implement.md +0 -0
  34. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.agent/commands/speckit.plan.md +0 -0
  35. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.agent/commands/speckit.specify.md +0 -0
  36. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.agent/commands/speckit.tasks.md +0 -0
  37. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.agent/commands/speckit.taskstoissues.md +0 -0
  38. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.agent/skills/speckit-analyze/SKILL.md +0 -0
  39. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.agent/skills/speckit-checklist/SKILL.md +0 -0
  40. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.agent/skills/speckit-clarify/SKILL.md +0 -0
  41. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.agent/skills/speckit-constitution/SKILL.md +0 -0
  42. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.agent/skills/speckit-implement/SKILL.md +0 -0
  43. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.agent/skills/speckit-plan/SKILL.md +0 -0
  44. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.agent/skills/speckit-specify/SKILL.md +0 -0
  45. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.agent/skills/speckit-tasks/SKILL.md +0 -0
  46. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.agent/skills/speckit-taskstoissues/SKILL.md +0 -0
  47. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.docguard.json +0 -0
  48. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.docguardignore +0 -0
  49. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  50. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  51. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.github/workflows/ci.yml +0 -0
  52. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.github/workflows/release.yml +0 -0
  53. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.github/workflows/spec-kit-extension.yml +0 -0
  54. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.gitignore +0 -0
  55. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.npmignore +0 -0
  56. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.specify/init-options.json +0 -0
  57. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.specify/scripts/bash/check-prerequisites.sh +0 -0
  58. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.specify/scripts/bash/common.sh +0 -0
  59. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.specify/scripts/bash/create-new-feature.sh +0 -0
  60. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.specify/scripts/bash/setup-plan.sh +0 -0
  61. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.specify/scripts/bash/update-agent-context.sh +0 -0
  62. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.specify/templates/agent-file-template.md +0 -0
  63. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.specify/templates/checklist-template.md +0 -0
  64. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.specify/templates/constitution-template.md +0 -0
  65. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.specify/templates/plan-template.md +0 -0
  66. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.specify/templates/spec-template.md +0 -0
  67. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/.specify/templates/tasks-template.md +0 -0
  68. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/AGENTS.md +0 -0
  69. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/CODE_OF_CONDUCT.md +0 -0
  70. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/COMPARISONS.md +0 -0
  71. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/CONTRIBUTING.md +0 -0
  72. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/DRIFT-LOG.md +0 -0
  73. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/LICENSE +0 -0
  74. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/PHILOSOPHY.md +0 -0
  75. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/README.md +0 -0
  76. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/ROADMAP.md +0 -0
  77. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/SECURITY.md +0 -0
  78. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/STANDARD.md +0 -0
  79. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/SUPPORT.md +0 -0
  80. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/action.yml +0 -0
  81. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/commands/agents.mjs +0 -0
  82. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/commands/badge.mjs +0 -0
  83. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/commands/ci.mjs +0 -0
  84. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/commands/diff.mjs +0 -0
  85. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/commands/generate.mjs +0 -0
  86. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/commands/llms.mjs +0 -0
  87. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/commands/publish.mjs +0 -0
  88. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/commands/score.mjs +0 -0
  89. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/commands/trace.mjs +0 -0
  90. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/commands/watch.mjs +0 -0
  91. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/scanners/doc-tools.mjs +0 -0
  92. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/scanners/routes.mjs +0 -0
  93. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/scanners/schemas.mjs +0 -0
  94. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/shared.mjs +0 -0
  95. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/validators/architecture.mjs +0 -0
  96. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/validators/changelog.mjs +0 -0
  97. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/validators/docs-coverage.mjs +0 -0
  98. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/validators/docs-diff.mjs +0 -0
  99. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/validators/docs-sync.mjs +0 -0
  100. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/validators/drift.mjs +0 -0
  101. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/validators/environment.mjs +0 -0
  102. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/validators/freshness.mjs +0 -0
  103. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/validators/metadata-sync.mjs +0 -0
  104. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/validators/metrics-consistency.mjs +0 -0
  105. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/validators/security.mjs +0 -0
  106. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/validators/structure.mjs +0 -0
  107. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/validators/test-spec.mjs +0 -0
  108. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/cli/validators/traceability.mjs +0 -0
  109. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/commands/docguard.fix.md +0 -0
  110. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/commands/docguard.guard.md +0 -0
  111. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/commands/docguard.review.md +0 -0
  112. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/commands/docguard.score.md +0 -0
  113. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/configs/fastify.json +0 -0
  114. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/configs/generic.json +0 -0
  115. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/configs/nextjs.json +0 -0
  116. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/configs/python.json +0 -0
  117. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/docguard_cli/__init__.py +0 -0
  118. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/docguard_cli/wrapper.py +0 -0
  119. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/docs/ai-integration.md +0 -0
  120. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/docs/commands.md +0 -0
  121. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/docs/configuration.md +0 -0
  122. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/docs/faq.md +0 -0
  123. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/docs/installation.md +0 -0
  124. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/docs/profiles.md +0 -0
  125. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/docs/quickstart.md +0 -0
  126. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/docs-canonical/ARCHITECTURE.md +0 -0
  127. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/docs-canonical/DATA-MODEL.md +0 -0
  128. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/docs-canonical/ENVIRONMENT.md +0 -0
  129. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/docs-canonical/SECURITY.md +0 -0
  130. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/docs-canonical/TEST-SPEC.md +0 -0
  131. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/examples/01-express-api/README.md +0 -0
  132. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/examples/01-express-api/package.json +0 -0
  133. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/examples/01-express-api/server.js +0 -0
  134. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/examples/02-python-flask/README.md +0 -0
  135. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/examples/02-python-flask/app.py +0 -0
  136. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/examples/02-python-flask/docs-canonical/ARCHITECTURE.md +0 -0
  137. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/examples/02-python-flask/requirements.txt +0 -0
  138. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/examples/03-spec-kit-project/CHANGELOG.md +0 -0
  139. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/examples/03-spec-kit-project/README.md +0 -0
  140. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/examples/03-spec-kit-project/docs-canonical/ARCHITECTURE.md +0 -0
  141. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/examples/03-spec-kit-project/docs-canonical/TEST-SPEC.md +0 -0
  142. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/examples/03-spec-kit-project/package.json +0 -0
  143. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/examples/03-spec-kit-project/src/index.js +0 -0
  144. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/examples/03-spec-kit-project/tests/basic.test.js +0 -0
  145. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/examples/README.md +0 -0
  146. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/extensions/spec-kit-docguard/LICENSE +0 -0
  147. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/extensions/spec-kit-docguard/README.md +0 -0
  148. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/extensions/spec-kit-docguard/commands/diagnose.md +0 -0
  149. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/extensions/spec-kit-docguard/commands/generate.md +0 -0
  150. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/extensions/spec-kit-docguard/commands/guard.md +0 -0
  151. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/extensions/spec-kit-docguard/commands/init.md +0 -0
  152. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/extensions/spec-kit-docguard/commands/score.md +0 -0
  153. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/extensions/spec-kit-docguard/commands/trace.md +0 -0
  154. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/extensions/spec-kit-docguard/scripts/bash/common.sh +0 -0
  155. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/extensions/spec-kit-docguard/scripts/bash/docguard-check-docs.sh +0 -0
  156. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/extensions/spec-kit-docguard/scripts/bash/docguard-init-doc.sh +0 -0
  157. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/extensions/spec-kit-docguard/scripts/bash/docguard-suggest-fix.sh +0 -0
  158. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/extensions/spec-kit-docguard/templates/extensions.yml +0 -0
  159. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/templates/ADR.md.template +0 -0
  160. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/templates/AGENTS.md.template +0 -0
  161. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/templates/ARCHITECTURE.md.template +0 -0
  162. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/templates/CHANGELOG.md.template +0 -0
  163. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/templates/CURRENT-STATE.md.template +0 -0
  164. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/templates/DATA-MODEL.md.template +0 -0
  165. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/templates/DEPLOYMENT.md.template +0 -0
  166. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/templates/DRIFT-LOG.md.template +0 -0
  167. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/templates/ENVIRONMENT.md.template +0 -0
  168. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/templates/KNOWN-GOTCHAS.md.template +0 -0
  169. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/templates/REQUIREMENTS.md.template +0 -0
  170. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/templates/ROADMAP.md.template +0 -0
  171. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/templates/RUNBOOKS.md.template +0 -0
  172. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/templates/SECURITY.md.template +0 -0
  173. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/templates/TEST-SPEC.md.template +0 -0
  174. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/templates/TROUBLESHOOTING.md.template +0 -0
  175. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/templates/VENDOR-BUGS.md.template +0 -0
  176. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/templates/ci/github-actions.yml +0 -0
  177. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/templates/commands/docguard.fix.md +0 -0
  178. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/templates/commands/docguard.guard.md +0 -0
  179. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/templates/commands/docguard.init.md +0 -0
  180. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/templates/commands/docguard.review.md +0 -0
  181. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/templates/commands/docguard.update.md +0 -0
  182. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/tests/commands.test.mjs +0 -0
  183. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/vscode-extension/.vscodeignore +0 -0
  184. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/vscode-extension/README.md +0 -0
  185. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/vscode-extension/extension.js +0 -0
  186. {docguard_cli-0.9.8 → docguard_cli-0.9.9}/vscode-extension/package.json +0 -0
@@ -6,9 +6,10 @@ description: AI-driven documentation repair with structured research workflow, t
6
6
  compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
7
7
  metadata:
8
8
  author: docguard
9
- version: 0.9.5
9
+ version: 0.9.9
10
10
  source: extensions/spec-kit-docguard/skills/docguard-fix
11
11
  ---
12
+ <!-- docguard:version: 0.9.9 -->
12
13
 
13
14
  # DocGuard Fix Skill
14
15
 
@@ -7,9 +7,10 @@ description: Run DocGuard guard validation against Canonical-Driven Development
7
7
  compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
8
8
  metadata:
9
9
  author: docguard
10
- version: 0.9.5
10
+ version: 0.9.9
11
11
  source: extensions/spec-kit-docguard/skills/docguard-guard
12
12
  ---
13
+ <!-- docguard:version: 0.9.9 -->
13
14
 
14
15
  # DocGuard Guard Skill
15
16
 
@@ -155,12 +156,16 @@ Present the user with options:
155
156
  - **Track progress** — if user runs guard multiple times, compare before/after
156
157
  - If user provides `$ARGUMENTS` like "just structure" or "only security", filter report to those validators
157
158
 
158
- ## Integration with Spec Kit
159
+ ## Integration with Spec Kit (Extension-First)
159
160
 
160
- If this project has `.specify/` directory (spec-kit enabled):
161
+ DocGuard is a spec-kit extension. When this project has a `.specify/` directory:
162
+ - Read `.specify/memory/constitution.md` for project principles that constrain documentation
161
163
  - Include Spec-Kit validator results in the triage
162
164
  - Cross-reference spec quality issues with `specs/*/spec.md` file paths
163
- - Suggest `/speckit.analyze` if spec-related findings exceed 3
165
+ - When specification issues found → suggest `/speckit.specify` or `/speckit.clarify`
166
+ - When architecture gaps found → suggest `/speckit.plan`
167
+ - When cross-artifact inconsistencies exceed 3 → suggest `/speckit.analyze`
168
+ - When no constitution exists → suggest `/speckit.constitution` as first step
164
169
 
165
170
  ## Context
166
171
 
@@ -6,9 +6,10 @@ description: Cross-document consistency analysis and quality assessment. Perform
6
6
  compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
7
7
  metadata:
8
8
  author: docguard
9
- version: 0.9.5
9
+ version: 0.9.9
10
10
  source: extensions/spec-kit-docguard/skills/docguard-review
11
11
  ---
12
+ <!-- docguard:version: 0.9.9 -->
12
13
 
13
14
  # DocGuard Review Skill
14
15
 
@@ -163,7 +164,10 @@ Output a structured markdown report (do NOT write to disk):
163
164
 
164
165
  Based on findings:
165
166
  - **If CRITICAL issues**: "Run `/docguard.fix --doc [name]` to resolve blocking issues"
167
+ - **If spec-related gaps**: "Run `/speckit.specify` to update specifications" or "/speckit.clarify to resolve ambiguities"
168
+ - **If architecture drift**: "Run `/speckit.plan` to realign implementation plan with codebase"
166
169
  - **If only LOW/MEDIUM**: "Documentation is healthy. Consider `/docguard.fix` for polish"
170
+ - **If constitution missing**: "Run `/speckit.constitution` to establish project principles"
167
171
  - **If all clean**: "Documentation is excellent. No action needed."
168
172
 
169
173
  Ask: "Would you like me to fix the top N issues? (I'll show you what I plan to change before applying)"
@@ -6,9 +6,10 @@ description: CDD maturity assessment with category-aware improvement roadmap. Ru
6
6
  compatibility: Requires DocGuard CLI installed (npm i -g docguard-cli or npx docguard-cli)
7
7
  metadata:
8
8
  author: docguard
9
- version: 0.9.5
9
+ version: 0.9.9
10
10
  source: extensions/spec-kit-docguard/skills/docguard-score
11
11
  ---
12
+ <!-- docguard:version: 0.9.9 -->
12
13
 
13
14
  # DocGuard Score Skill
14
15
 
@@ -0,0 +1,76 @@
1
+ <!-- Sync Impact Report
2
+ Version change: 0.0.0 → 1.0.0
3
+ Modified principles: N/A (initial creation)
4
+ Added sections: Core Principles (7), Technology Constraints, Extension & Spec Kit Compliance, Governance
5
+ Removed sections: N/A
6
+ Templates requiring updates: ✅ constitution-template.md (reference only, not modified)
7
+ Follow-up TODOs: None
8
+ -->
9
+
10
+ # DocGuard Constitution
11
+
12
+ ## Core Principles
13
+
14
+ ### I. LLM-First, CLI-Second
15
+
16
+ DocGuard is built for AI coding agents. Every feature MUST be designed for LLM consumption first, with CLI as a secondary interface. Skills (behavior protocols) take priority over CLI commands (step-lists). When DocGuard detects an AI agent environment, it MUST surface skill-based instructions. CLI output MUST be machine-parseable (JSON mode) alongside human-readable text.
17
+
18
+ ### II. Zero NPM Runtime Dependencies (NON-NEGOTIABLE)
19
+
20
+ DocGuard has zero `node_modules` at runtime. All Node.js functionality uses built-in modules only (`node:fs`, `node:path`, `node:child_process`, `node:test`, `node:url`, `node:readline`, `node:os`, `node:assert`). This maximizes portability, eliminates supply chain risk, and ensures instant `npx` usage. Dev dependencies are also zero — tests use `node:test`. DocGuard depends on spec-kit as a **framework convention** (`.specify/` directory structure, skill architecture, constitution pattern). This is an integration, not a code dependency. When the `specify` CLI is available, DocGuard MUST leverage it for initialization and skill management.
21
+
22
+ ### III. Documentation as Source of Truth
23
+
24
+ Canonical-Driven Development means documentation drives code, not the other way around. DocGuard enforces this by validating code against `docs-canonical/` and detecting drift. Any deviation from canonical docs MUST be logged in `DRIFT-LOG.md` with `// DRIFT: reason` inline comments. The `docguard guard` command is the enforcement gate.
25
+
26
+ ### IV. Validator Isolation
27
+
28
+ Each of the 19 validators is a pure, self-contained function. Validators receive `projectDir` and `config`, then return results. No validator may import another validator or depend on command-level logic. This ensures adding or modifying validators never breaks existing ones.
29
+
30
+ ### V. AI as Author, CLI as Orchestrator
31
+
32
+ The CLI detects problems and generates structured prompts. The AI agent writes the actual documentation. DocGuard MUST NOT generate final documentation content itself — it provides research instructions, templates, and validation. The `fix`, `diagnose`, and `generate` commands produce AI-actionable output, not finished documents.
33
+
34
+ ### VI. Safe Writes
35
+
36
+ All file write operations MUST use defensive patterns. Before overwriting any file, DocGuard creates backups. The `--force` flag is required to overwrite existing files. Init and setup commands skip files that already exist unless explicitly forced.
37
+
38
+ ### VII. Spec Kit Extension Compliance
39
+
40
+ DocGuard is a community extension of GitHub Spec Kit. It MUST follow spec-kit conventions: `extension.yml` schema, skill architecture (`SKILL.md` files with YAML frontmatter), workflow hooks (`after_implement`, `before_tasks`, `after_tasks`), and the `.specify/` directory structure. DocGuard MUST always install spec-kit core skills alongside its own skills so users get the complete spec-driven development workflow.
41
+
42
+ ## Technology Constraints
43
+
44
+ - **Language**: JavaScript (ES Modules only, no CommonJS)
45
+ - **Runtime**: Node.js ≥ 18 (for native `node:test` and ES module support)
46
+ - **Dependencies**: None. Zero. Ever. This is a hard constraint.
47
+ - **Distribution**: npm (`docguard-cli`) + PyPI (`docguard`)
48
+ - **Testing**: `node:test` + `node:assert` (built-in, no framework)
49
+ - **Extension**: VS Code Extension API for editor integration
50
+ - **Config**: `.docguard.json` for project-level customization
51
+ - **Profiles**: starter, standard, enterprise compliance levels
52
+ - **Output**: Text (human) + JSON (machine) dual output for all commands
53
+
54
+ ## Extension & Spec Kit Compliance
55
+
56
+ - DocGuard MUST declare all skills, scripts, hooks, and commands in `extension.yml`
57
+ - DocGuard MUST bundle spec-kit core skills so users don't need a separate install
58
+ - All 4 DocGuard skills (`docguard-guard`, `docguard-fix`, `docguard-review`, `docguard-score`) MUST follow spec-kit skill architecture: YAML frontmatter with `name`, `description`, `compatibility`, `metadata`
59
+ - Workflow hooks MUST be optional (never force execution)
60
+ - The `ensureSkills()` function MUST auto-detect and install both DocGuard skills AND spec-kit core skills
61
+ - DocGuard MUST detect agent environment (LLM vs CLI) and adapt its output accordingly
62
+
63
+ ## Governance
64
+
65
+ This constitution supersedes all ad-hoc practices. Amendments require:
66
+ 1. Documentation of the change in `DRIFT-LOG.md` if deviating
67
+ 2. Update this constitution with a version bump
68
+ 3. Update `CHANGELOG.md` with the change
69
+ 4. All PRs MUST pass `docguard guard` before merge
70
+
71
+ Versioning follows semantic versioning:
72
+ - **MAJOR**: Principle removal or backward-incompatible redefinition
73
+ - **MINOR**: New principle added or materially expanded guidance
74
+ - **PATCH**: Clarification, wording, typo fix
75
+
76
+ **Version**: 1.0.0 | **Ratified**: 2026-03-17 | **Last Amended**: 2026-03-17
@@ -7,6 +7,44 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.9.9] - 2026-03-17
11
+
12
+ ### Added — Extension-First Architecture & Spec-Kit Integration Gate
13
+
14
+ #### Spec-Kit Integration Gate
15
+ - **`ensureSpecKit()`** — Runs on every command. Auto-initializes spec-kit when `specify` CLI is available. Shows a prominent yellow-box reminder every time when spec-kit is not installed (persistent, no dismiss).
16
+ - **`detectAIAgent(projectDir)`** — Maps 12 filesystem signals to spec-kit `--ai` flag values: `.cursor/` → `cursor-agent`, `.claude/` or `CLAUDE.md` → `claude`, `.gemini/` → `gemini`, `.agents/` → `agy` (Antigravity), `.github/copilot-instructions.md` → `copilot`, `.windsurf/` → `windsurf`, `.codex/` → `codex`, `.roo/` → `roo`, `.amp/` → `amp`, `.kiro/` → `kiro-cli`, `.tabnine/` → `tabnine`. Falls back to `--ai generic` when no agent detected.
17
+ - **Strong init push** — `docguard init` now shows a prominent red-bordered box when spec-kit is missing, listing exactly what users miss: 9 AI skills, constitution, SDD workflow, agent detection. Provides both `uv` and `pip` install commands.
18
+ - **Guard footer reminder** — `docguard guard` shows a 1-line spec-kit install nudge after results when not initialized.
19
+ - **Skill auto-update** — `ensureSkills()` now compares installed SKILL.md `docguard:version` against package version. Automatically overwrites stale skills on DocGuard update.
20
+
21
+ #### LLM-First Output
22
+ - **`detectAgentMode(projectDir)`** — Returns `'llm'` or `'cli'` based on filesystem signals and `.specify/init-options.json`. All adaptive commands check this.
23
+ - **`diagnose.mjs`** — All `FIX_INSTRUCTIONS` now include `llmCommand` fields (e.g., `/docguard.fix --doc architecture`). Issue collection propagates `llmCommand` to output. Remediation plan, verification checklist, and debate prompts all adapt to agent mode.
24
+ - **`guard.mjs`** — "Next step" hint now shows `/docguard.diagnose` in LLM mode.
25
+ - **`init.mjs`** — Next steps show skill commands (`/docguard.guard`, `/docguard.fix`) in LLM mode, CLI commands (`docguard diagnose`) in CLI mode.
26
+ - **`setup.mjs`** — Next steps adapt to agent mode.
27
+
28
+ #### Spec-Kit Skill Chaining
29
+ - **`docguard-guard` SKILL.md** — Now chains to `/speckit.specify`, `/speckit.plan`, `/speckit.clarify`, and checks `constitution.md`.
30
+ - **`docguard-review` SKILL.md** — Offers spec-kit skills for specification-level issues.
31
+ - **`extension.yml`** — Declares `framework: spec-kit` and `specify` as optional tool.
32
+
33
+ ### Fixed
34
+ - **`npx docguard guard`** → `npx docguard-cli guard` — The npm package name is `docguard-cli`, not `docguard`. Fixed in `hooks.mjs`, `setup.mjs`, `fix.mjs`, `docguard.mjs` (pre-existing bug).
35
+ - **Hardcoded `--ai agy`** → Dynamic `detectAIAgent()` — `init.mjs` and `setup.mjs` no longer hardcode Antigravity as the agent.
36
+ - **`llmCommand` never propagated** — `collectIssues()` in `diagnose.mjs` was not copying `llmCommand` from `FIX_INSTRUCTIONS` to issue objects, so LLM-first fix hints silently fell back to CLI commands.
37
+ - **Debate prompt not LLM-aware** — `outputDebatePrompt()` now receives `agentMode` and adapts verification commands.
38
+ - **Basic-tier checklist hardcoded** — Verification checklist for basic-tier agents now adapts to LLM/CLI mode.
39
+ - **Stale "Zero dependencies" doc comments** — Updated 6 files to "Zero NPM runtime dependencies" matching the constitution.
40
+ - **Platform-aware `--script`** — `specify init` now uses `--script ps` on Windows, `--script sh` on Unix.
41
+
42
+ ### Changed
43
+ - **Constitution** — Principle II amended from "Zero Dependencies" to "Zero NPM Runtime Dependencies" (spec-kit is a framework convention, not a code dependency).
44
+ - **SKILL.md metadata** — All 4 skills updated from `0.9.5`/`0.9.8` to `0.9.9`. Added `docguard:version` comment for auto-update mechanism.
45
+ - **`ensure-skills.mjs`** — Full rewrite: 6 exports (`ensureSkills`, `ensureSpecKit`, `detectAgentMode`, `detectAIAgent`, `getDetectedAgent`, `isSpecKitAvailable`, `isSpecKitInitialized`).
46
+ - **22 files changed**, +567/−203 lines.
47
+
10
48
  ## [0.9.6] - 2026-03-14
11
49
 
12
50
  ### Added — Enterprise AI Skills Architecture
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: docguard-cli
3
- Version: 0.9.8
3
+ Version: 0.9.9
4
4
  Summary: The enforcement tool for Canonical-Driven Development (CDD). Audit, generate, and guard your project documentation. Zero dependencies.
5
5
  Project-URL: Homepage, https://github.com/raccioly/docguard
6
6
  Project-URL: Documentation, https://github.com/raccioly/docguard#readme
@@ -16,6 +16,7 @@
16
16
  import { c } from '../shared.mjs';
17
17
  import { runGuardInternal } from './guard.mjs';
18
18
  import { runScoreInternal } from './score.mjs';
19
+ import { detectAgentMode, isSpecKitInitialized } from '../ensure-skills.mjs';
19
20
  import { existsSync, readFileSync } from 'node:fs';
20
21
  import { resolve, dirname } from 'node:path';
21
22
  import { fileURLToPath } from 'node:url';
@@ -35,23 +36,26 @@ const VALIDATOR_TO_DOC = {
35
36
  'Freshness': null, // freshness — maps to stale doc
36
37
  };
37
38
 
38
- // Actionable fix instructions per validator
39
+ // Actionable fix instructions per validator (LLM-first: includes both skill and CLI commands)
39
40
  const FIX_INSTRUCTIONS = {
40
41
  'Structure': {
41
42
  action: 'Create missing files',
42
43
  command: 'docguard init',
44
+ llmCommand: '/docguard.init',
43
45
  description: 'Run init to create missing documentation templates.',
44
46
  autoFixable: true,
45
47
  },
46
48
  'Doc Sections': {
47
49
  action: 'Fill document sections',
48
50
  command: 'docguard fix --doc',
49
- description: 'Documents exist but have missing or placeholder sections. Use fix --doc to generate AI content prompts.',
51
+ llmCommand: '/docguard.fix --doc',
52
+ description: 'Documents exist but have missing or placeholder sections. Use the docguard-fix skill to generate content.',
50
53
  autoFixable: false,
51
54
  },
52
55
  'Docs-Sync': {
53
56
  action: 'Sync documentation references',
54
57
  command: 'docguard fix --doc architecture',
58
+ llmCommand: '/docguard.fix --doc architecture',
55
59
  description: 'Documentation references are out of sync with code. Review and update component maps.',
56
60
  autoFixable: false,
57
61
  },
@@ -68,35 +72,44 @@ const FIX_INSTRUCTIONS = {
68
72
  'Test-Spec': {
69
73
  action: 'Update TEST-SPEC.md',
70
74
  command: 'docguard fix --doc test-spec',
75
+ llmCommand: '/docguard.fix --doc test-spec',
71
76
  description: 'Test documentation needs updating to match actual test structure.',
72
77
  autoFixable: false,
73
78
  },
74
79
  'Environment': {
75
80
  action: 'Update ENVIRONMENT.md',
76
81
  command: 'docguard fix --doc environment',
82
+ llmCommand: '/docguard.fix --doc environment',
77
83
  description: 'Environment documentation is missing or incomplete.',
78
84
  autoFixable: false,
79
85
  },
80
86
  'Security': {
81
87
  action: 'Update SECURITY.md',
82
88
  command: 'docguard fix --doc security',
89
+ llmCommand: '/docguard.fix --doc security',
83
90
  description: 'Security documentation needs updating.',
84
91
  autoFixable: false,
85
92
  },
86
93
  'Architecture': {
87
94
  action: 'Update ARCHITECTURE.md',
88
95
  command: 'docguard fix --doc architecture',
96
+ llmCommand: '/docguard.fix --doc architecture',
89
97
  description: 'Architecture documentation doesn\'t match the codebase.',
90
98
  autoFixable: false,
91
99
  },
92
100
  'Freshness': {
93
101
  action: 'Review stale documents',
102
+ command: 'docguard fix --doc',
103
+ llmCommand: '/docguard.fix --doc',
94
104
  description: 'Documents haven\'t been reviewed since recent code changes. Re-run fix --doc for each stale doc.',
95
105
  autoFixable: false,
96
106
  },
97
107
  };
98
108
 
99
109
  export function runDiagnose(projectDir, config, flags) {
110
+ // ── Step 0: Detect agent mode (LLM-first) ──
111
+ const agentMode = detectAgentMode(projectDir);
112
+
100
113
  // ── Step 1: Run guard internally ──
101
114
  let guardData = runGuardInternal(projectDir, config);
102
115
  const scoreData = runScoreInternal(projectDir, config);
@@ -140,10 +153,15 @@ export function runDiagnose(projectDir, config, flags) {
140
153
  }
141
154
  }
142
155
  } else if (!shouldAutoFix && (hasStructural || autoFixable.length > 0) && (!flags.format || flags.format === 'text')) {
143
- // Suggest-only mode: tell user what they can do
156
+ // Suggest-only mode: tell user what they can do (LLM-first)
144
157
  console.log(` ${c.yellow}💡 ${autoFixable.length + (hasStructural ? 1 : 0)} issue(s) can be auto-fixed.${c.reset} Run with ${c.cyan}--auto${c.reset} to create/regenerate docs, or manually:`);
145
- if (hasStructural) console.log(` ${c.dim}docguard init --dir .${c.reset}`);
146
- if (autoFixable.length > 0) console.log(` ${c.dim}docguard generate --dir . --force${c.reset}`);
158
+ if (agentMode === 'llm') {
159
+ if (hasStructural) console.log(` ${c.dim}/docguard.init${c.reset}`);
160
+ if (autoFixable.length > 0) console.log(` ${c.dim}/docguard.fix${c.reset}`);
161
+ } else {
162
+ if (hasStructural) console.log(` ${c.dim}docguard init --dir .${c.reset}`);
163
+ if (autoFixable.length > 0) console.log(` ${c.dim}docguard generate --dir . --force${c.reset}`);
164
+ }
147
165
  console.log('');
148
166
  }
149
167
  }
@@ -157,7 +175,9 @@ export function runDiagnose(projectDir, config, flags) {
157
175
  const docMap = { 'architecture': 'architecture', 'data-model': 'data-model', 'security': 'security', 'test-spec': 'test-spec', 'environment': 'environment' };
158
176
  issue.docTarget = docMap[docName] || null;
159
177
  if (issue.docTarget) {
160
- issue.command = `docguard fix --doc ${issue.docTarget}`;
178
+ issue.command = agentMode === 'llm'
179
+ ? `/docguard.fix --doc ${issue.docTarget}`
180
+ : `docguard fix --doc ${issue.docTarget}`;
161
181
  }
162
182
  }
163
183
  }
@@ -167,9 +187,9 @@ export function runDiagnose(projectDir, config, flags) {
167
187
  if (flags.format === 'json') {
168
188
  outputJSON(guardData, scoreData, issues);
169
189
  } else if (flags.format === 'prompt') {
170
- outputPrompt(projectDir, guardData, scoreData, issues, flags);
190
+ outputPrompt(projectDir, guardData, scoreData, issues, flags, agentMode);
171
191
  } else {
172
- outputText(projectDir, guardData, scoreData, issues, flags);
192
+ outputText(projectDir, guardData, scoreData, issues, flags, agentMode);
173
193
  }
174
194
  }
175
195
 
@@ -191,6 +211,7 @@ function collectIssues(guardData) {
191
211
  message: err,
192
212
  action: fixInfo.action,
193
213
  command: fixInfo.command || null,
214
+ llmCommand: fixInfo.llmCommand || null,
194
215
  docTarget,
195
216
  autoFixable: fixInfo.autoFixable || false,
196
217
  });
@@ -202,6 +223,7 @@ function collectIssues(guardData) {
202
223
  message: warn,
203
224
  action: fixInfo.action,
204
225
  command: fixInfo.command || null,
226
+ llmCommand: fixInfo.llmCommand || null,
205
227
  docTarget,
206
228
  autoFixable: fixInfo.autoFixable || false,
207
229
  });
@@ -233,14 +255,18 @@ function outputJSON(guardData, scoreData, issues) {
233
255
  console.log(JSON.stringify(result, null, 2));
234
256
  }
235
257
 
236
- function outputText(projectDir, guardData, scoreData, issues, flags) {
258
+ function outputText(projectDir, guardData, scoreData, issues, flags, agentMode = 'llm') {
237
259
  console.log(`${c.bold}🔍 DocGuard Diagnose — ${guardData.project}${c.reset}`);
238
- console.log(`${c.dim} Profile: ${guardData.profile} | Score: ${scoreData.score}/100 (${scoreData.grade})${c.reset}`);
260
+ console.log(`${c.dim} Profile: ${guardData.profile} | Score: ${scoreData.score}/100 (${scoreData.grade}) | Mode: ${agentMode.toUpperCase()}${c.reset}`);
239
261
  console.log(`${c.dim} Guard: ${guardData.passed}/${guardData.total} passed | Status: ${guardData.status}${c.reset}\n`);
240
262
 
241
263
  if (issues.length === 0) {
242
264
  console.log(` ${c.green}${c.bold}✅ All clear!${c.reset} No issues found.\n`);
243
- console.log(` ${c.dim}Your documentation is healthy. Run \`docguard score --tax\` to see maintenance estimate.${c.reset}\n`);
265
+ if (agentMode === 'llm') {
266
+ console.log(` ${c.dim}Your documentation is healthy. Use ${c.cyan}/docguard.guard${c.dim} to re-validate after changes.${c.reset}\n`);
267
+ } else {
268
+ console.log(` ${c.dim}Your documentation is healthy. Run \`docguard score --tax\` to see maintenance estimate.${c.reset}\n`);
269
+ }
244
270
  return;
245
271
  }
246
272
 
@@ -252,7 +278,8 @@ function outputText(projectDir, guardData, scoreData, issues, flags) {
252
278
  console.log(` ${c.red}${c.bold}Errors (${errors.length}):${c.reset}`);
253
279
  for (const e of errors) {
254
280
  console.log(` ${c.red}✗${c.reset} [${e.validator}] ${e.message}`);
255
- if (e.command) console.log(` ${c.dim}Fix: ${e.command}${c.reset}`);
281
+ const cmd = agentMode === 'llm' && e.llmCommand ? e.llmCommand : e.command;
282
+ if (cmd) console.log(` ${c.dim}Fix: ${cmd}${c.reset}`);
256
283
  }
257
284
  console.log('');
258
285
  }
@@ -261,19 +288,21 @@ function outputText(projectDir, guardData, scoreData, issues, flags) {
261
288
  console.log(` ${c.yellow}${c.bold}Warnings (${warnings.length}):${c.reset}`);
262
289
  for (const w of warnings) {
263
290
  console.log(` ${c.yellow}⚠${c.reset} [${w.validator}] ${w.message}`);
264
- if (w.command) console.log(` ${c.dim}Fix: ${w.command}${c.reset}`);
291
+ const cmd = agentMode === 'llm' && w.llmCommand ? w.llmCommand : w.command;
292
+ if (cmd) console.log(` ${c.dim}Fix: ${cmd}${c.reset}`);
265
293
  }
266
294
  console.log('');
267
295
  }
268
296
 
269
- // ── Remediation Plan ──
297
+ // ── Remediation Plan (LLM-first) ──
270
298
  const commands = [...new Set(issues.filter(i => i.command).map(i => i.command))];
271
299
  if (commands.length > 0) {
272
300
  console.log(` ${c.bold}📋 Remediation Plan:${c.reset}`);
273
301
  for (let i = 0; i < commands.length; i++) {
274
302
  console.log(` ${c.cyan}${i + 1}. ${commands[i]}${c.reset}`);
275
303
  }
276
- console.log(` ${c.cyan}${commands.length + 1}. docguard guard${c.reset} ${c.dim}← verify fixes${c.reset}`);
304
+ const verifyCmd = agentMode === 'llm' ? '/docguard.guard' : 'docguard guard';
305
+ console.log(` ${c.cyan}${commands.length + 1}. ${verifyCmd}${c.reset} ${c.dim}← verify fixes${c.reset}`);
277
306
  console.log('');
278
307
  }
279
308
 
@@ -282,15 +311,15 @@ function outputText(projectDir, guardData, scoreData, issues, flags) {
282
311
  // Multi-perspective debate prompts (AITPG/TRACE-inspired)
283
312
  console.log(` ${c.bold}🤖 Multi-Perspective AI Debate Prompt:${c.reset}`);
284
313
  console.log(` ${c.dim}Copy everything below and paste to your AI agent:${c.reset}\n`);
285
- outputDebatePrompt(projectDir, guardData, scoreData, issues);
314
+ outputDebatePrompt(projectDir, guardData, scoreData, issues, agentMode);
286
315
  } else {
287
316
  console.log(` ${c.bold}🤖 AI-Ready Prompt:${c.reset}`);
288
317
  console.log(` ${c.dim}Copy everything below and paste to your AI agent:${c.reset}\n`);
289
- outputPrompt(undefined, guardData, scoreData, issues, flags);
318
+ outputPrompt(undefined, guardData, scoreData, issues, flags, agentMode);
290
319
  }
291
320
  }
292
321
 
293
- function outputPrompt(projectDir, guardData, scoreData, issues, flags) {
322
+ function outputPrompt(projectDir, guardData, scoreData, issues, flags, agentMode = 'llm') {
294
323
  if (issues.length === 0) {
295
324
  console.log('No issues to fix. Documentation is healthy.');
296
325
  return;
@@ -345,7 +374,11 @@ function outputPrompt(projectDir, guardData, scoreData, issues, flags) {
345
374
 
346
375
  lines.push('');
347
376
  lines.push('VALIDATION:');
348
- lines.push('After making all fixes, run: docguard guard');
377
+ if (agentMode === 'llm') {
378
+ lines.push('After making all fixes, use the /docguard.guard skill to verify');
379
+ } else {
380
+ lines.push('After making all fixes, run: docguard guard');
381
+ }
349
382
  lines.push('Expected result: All checks pass (0 errors, 0 warnings)');
350
383
  lines.push(`Target score: ≥${Math.min(scoreData.score + 5, 100)}/100`);
351
384
 
@@ -354,9 +387,15 @@ function outputPrompt(projectDir, guardData, scoreData, issues, flags) {
354
387
  lines.push('');
355
388
  lines.push('VERIFICATION CHECKLIST (complete each step):');
356
389
  lines.push('□ Read each file in docs-canonical/ before editing');
357
- lines.push('□ Run `docguard guard` after each file change');
358
- lines.push('□ Confirm 0 errors before moving to next issue');
359
- lines.push('□ Run `docguard score` to confirm improvement');
390
+ if (agentMode === 'llm') {
391
+ lines.push('□ Run /docguard.guard after each file change');
392
+ lines.push('□ Confirm 0 errors before moving to next issue');
393
+ lines.push('□ Run /docguard.score to confirm improvement');
394
+ } else {
395
+ lines.push('□ Run `docguard guard` after each file change');
396
+ lines.push('□ Confirm 0 errors before moving to next issue');
397
+ lines.push('□ Run `docguard score` to confirm improvement');
398
+ }
360
399
  }
361
400
 
362
401
  console.log(lines.join('\n'));
@@ -368,7 +407,7 @@ function outputPrompt(projectDir, guardData, scoreData, issues, flags) {
368
407
  * and TRACE adversarial debate (Advocate/Challenger/Mediator/Explainer).
369
408
  * Lopez et al., IEEE TSE/TMLCN 2026.
370
409
  */
371
- function outputDebatePrompt(projectDir, guardData, scoreData, issues) {
410
+ function outputDebatePrompt(projectDir, guardData, scoreData, issues, agentMode = 'llm') {
372
411
  const lines = [];
373
412
 
374
413
  lines.push('═══════════════════════════════════════════════════════');
@@ -427,7 +466,8 @@ function outputDebatePrompt(projectDir, guardData, scoreData, issues) {
427
466
  lines.push(' a. Which file to edit');
428
467
  lines.push(' b. What section to add or modify');
429
468
  lines.push(' c. What content to write (be specific, not vague)');
430
- lines.push('4. After all fixes, verify with: docguard guard');
469
+ const verifyCmd = agentMode === 'llm' ? '/docguard.guard' : 'docguard guard';
470
+ lines.push(`4. After all fixes, verify with: ${verifyCmd}`);
431
471
  lines.push(`5. Target score: ≥${Math.min(scoreData.score + 10, 100)}/100`);
432
472
  lines.push('');
433
473
  lines.push('═══════════════════════════════════════════════════════');
@@ -453,7 +453,7 @@ function generateDocPrompt(projectDir, config, docName) {
453
453
 
454
454
  console.log(expectations.aiResearchInstructions.trim());
455
455
 
456
- console.log(`\nVALIDATION: After writing, run \`npx docguard guard\` to verify the document passes all checks.`);
456
+ console.log(`\nVALIDATION: After writing, run \`npx docguard-cli guard\` to verify the document passes all checks.`);
457
457
  console.log(`The document should have NO <!-- TODO --> or <!-- e.g. --> placeholders.`);
458
458
  console.log(`Set the docguard:status header to 'active' (not 'draft').`);
459
459
  }
@@ -8,6 +8,7 @@
8
8
  */
9
9
 
10
10
  import { c } from '../shared.mjs';
11
+ import { detectAgentMode, isSpecKitInitialized } from '../ensure-skills.mjs';
11
12
  import { validateStructure, validateDocSections } from '../validators/structure.mjs';
12
13
  import { validateDrift } from '../validators/drift.mjs';
13
14
  import { validateChangelog } from '../validators/changelog.mjs';
@@ -197,7 +198,12 @@ export function runGuard(projectDir, config, flags) {
197
198
 
198
199
  // Next step hint — always point to diagnose when issues exist
199
200
  if (data.status !== 'PASS') {
200
- console.log(` ${c.dim}Run ${c.cyan}docguard diagnose${c.dim} to get AI fix prompts.${c.reset}`);
201
+ const agentMode = detectAgentMode(projectDir);
202
+ if (agentMode === 'llm') {
203
+ console.log(` ${c.dim}Use ${c.cyan}/docguard.diagnose${c.dim} to get AI fix prompts.${c.reset}`);
204
+ } else {
205
+ console.log(` ${c.dim}Run ${c.cyan}docguard diagnose${c.dim} to get AI fix prompts.${c.reset}`);
206
+ }
201
207
  }
202
208
 
203
209
  // Badge snippet
@@ -206,6 +212,11 @@ export function runGuard(projectDir, config, flags) {
206
212
  const badgeUrl = `https://img.shields.io/badge/CDD_Guard-${data.passed}%2F${data.total}_passed-${bColor}`;
207
213
  console.log(`\n ${c.dim}📎 Badge: ![CDD Guard](${badgeUrl})${c.reset}`);
208
214
 
215
+ // Spec-kit reminder — persistent nudge if not initialized
216
+ if (!isSpecKitInitialized(projectDir)) {
217
+ console.log(`\n ${c.yellow}💡${c.reset} ${c.dim}Enhance DocGuard with Spec Kit: ${c.cyan}uv tool install specify-cli --from git+https://github.com/github/spec-kit.git${c.reset}`);
218
+ }
219
+
209
220
  console.log('');
210
221
 
211
222
  if (data.errors > 0) process.exit(1);
@@ -20,7 +20,7 @@ echo "🛡️ Running DocGuard guard..."
20
20
 
21
21
  # Check if docguard is available
22
22
  if command -v npx &> /dev/null; then
23
- npx docguard guard
23
+ npx docguard-cli guard
24
24
  EXIT_CODE=$?
25
25
  elif command -v docguard &> /dev/null; then
26
26
  docguard guard
@@ -60,7 +60,7 @@ echo "📊 Running DocGuard score check (minimum: $MIN_SCORE)..."
60
60
 
61
61
  # Get score as JSON
62
62
  if command -v npx &> /dev/null; then
63
- RESULT=$(npx docguard score --format json 2>/dev/null)
63
+ RESULT=$(npx docguard-cli score --format json 2>/dev/null)
64
64
  elif command -v docguard &> /dev/null; then
65
65
  RESULT=$(docguard score --format json 2>/dev/null)
66
66
  else