docs-cli 1.5.0__tar.gz → 1.6.5__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 (483) hide show
  1. {docs_cli-1.5.0 → docs_cli-1.6.5}/PKG-INFO +6 -15
  2. {docs_cli-1.5.0 → docs_cli-1.6.5}/README.md +7 -16
  3. docs_cli-1.6.5/docs/INDEX.md +99 -0
  4. docs_cli-1.6.5/docs/agent-native-invocation.md +384 -0
  5. {docs_cli-1.5.0 → docs_cli-1.6.5}/docs/architecture.md +1 -1
  6. {docs_cli-1.5.0/docs → docs_cli-1.6.5/docs/archive/2026-05-20}/m1-parser-and-index-log.md +2 -2
  7. {docs_cli-1.5.0/docs → docs_cli-1.6.5/docs/archive/2026-05-20}/m1-parser-and-index.md +2 -2
  8. {docs_cli-1.5.0/docs → docs_cli-1.6.5/docs/archive/2026-05-21}/m2-mutating-verbs-log.md +2 -2
  9. {docs_cli-1.5.0/docs → docs_cli-1.6.5/docs/archive/2026-05-21}/m2-mutating-verbs.md +2 -2
  10. {docs_cli-1.5.0/docs → docs_cli-1.6.5/docs/archive/2026-05-22}/m3-validation-and-query-log.md +2 -2
  11. {docs_cli-1.5.0/docs → docs_cli-1.6.5/docs/archive/2026-05-22}/m3-validation-and-query.md +2 -2
  12. {docs_cli-1.5.0/docs → docs_cli-1.6.5/docs/archive/2026-05-22}/m4-migration-helper-log.md +2 -2
  13. {docs_cli-1.5.0/docs → docs_cli-1.6.5/docs/archive/2026-05-22}/m4-migration-helper.md +2 -2
  14. {docs_cli-1.5.0/docs → docs_cli-1.6.5/docs/archive/2026-05-23}/m5-claude-code-skill-log.md +2 -2
  15. {docs_cli-1.5.0/docs → docs_cli-1.6.5/docs/archive/2026-05-23}/m5-claude-code-skill.md +2 -2
  16. {docs_cli-1.5.0/docs → docs_cli-1.6.5/docs/archive/2026-05-24}/m6-pypi-distribution-log.md +3 -3
  17. {docs_cli-1.5.0/docs → docs_cli-1.6.5/docs/archive/2026-05-24}/m6-pypi-distribution.md +2 -2
  18. {docs_cli-1.5.0/docs → docs_cli-1.6.5/docs/archive/2026-05-25}/m7-migration-accuracy-log.md +2 -2
  19. {docs_cli-1.5.0/docs → docs_cli-1.6.5/docs/archive/2026-05-25}/m7-migration-accuracy.md +4 -4
  20. {docs_cli-1.5.0/docs → docs_cli-1.6.5/docs/archive/2026-05-25}/m8-adoption-workflow-log.md +2 -2
  21. {docs_cli-1.5.0/docs → docs_cli-1.6.5/docs/archive/2026-05-25}/m8-adoption-workflow.md +5 -5
  22. {docs_cli-1.5.0/docs → docs_cli-1.6.5/docs/archive/2026-05-25}/m9-pypi-publish-log.md +2 -2
  23. {docs_cli-1.5.0/docs → docs_cli-1.6.5/docs/archive/2026-05-25}/m9-pypi-publish.md +5 -5
  24. {docs_cli-1.5.0/docs → docs_cli-1.6.5/docs/archive/2026-05-27}/m10-adoption-polish-impl.md +1 -1
  25. {docs_cli-1.5.0 → docs_cli-1.6.5}/docs/archive/2026-05-27/m10-adoption-polish.md +1 -1
  26. {docs_cli-1.5.0/docs → docs_cli-1.6.5/docs/archive/2026-05-27}/m11-pypi-publish-impl.md +1 -1
  27. {docs_cli-1.5.0 → docs_cli-1.6.5}/docs/archive/2026-05-27/m11-pypi-publish.md +1 -1
  28. {docs_cli-1.5.0/docs → docs_cli-1.6.5/docs/archive/2026-05-28}/m12-project-rename-impl.md +3 -3
  29. {docs_cli-1.5.0/docs → docs_cli-1.6.5/docs/archive/2026-05-28}/m12-project-rename.md +2 -2
  30. docs_cli-1.6.5/docs/archive/2026-05-29/m13-pypi-publish-impl.md +247 -0
  31. {docs_cli-1.5.0/docs → docs_cli-1.6.5/docs/archive/2026-05-29}/m13-pypi-publish.md +95 -28
  32. docs_cli-1.6.5/docs/archive/2026-06-01/m16-bundled-docs-skill-quality-impl.md +90 -0
  33. docs_cli-1.6.5/docs/archive/2026-06-01/m16-bundled-docs-skill-quality-test-matrix.md +70 -0
  34. docs_cli-1.6.5/docs/archive/2026-06-01/m16-bundled-docs-skill-quality.md +134 -0
  35. docs_cli-1.6.5/docs/archive/2026-06-03/m14-robustness-agent-native-impl.md +511 -0
  36. docs_cli-1.6.5/docs/archive/2026-06-03/m14-robustness-agent-native.md +339 -0
  37. docs_cli-1.6.5/docs/archive/2026-06-03/m15-agent-native-authoring-impl.md +717 -0
  38. docs_cli-1.6.5/docs/archive/2026-06-03/m15-agent-native-authoring.md +209 -0
  39. docs_cli-1.6.5/docs/archive/2026-06-03/m17-pypi-publish.md +492 -0
  40. {docs_cli-1.5.0 → docs_cli-1.6.5}/docs/cli.md +504 -32
  41. {docs_cli-1.5.0/src/docs_cli/skill/references → docs_cli-1.6.5/docs}/convention.md +41 -5
  42. docs_cli-1.6.5/docs/m17-pypi-publish-impl.md +463 -0
  43. docs_cli-1.6.5/docs/m18-archive-edge-integrity-impl.md +128 -0
  44. docs_cli-1.6.5/docs/m18-archive-edge-integrity.md +395 -0
  45. docs_cli-1.6.5/docs/m19-post-edit-validation-impl.md +457 -0
  46. docs_cli-1.6.5/docs/m19-post-edit-validation.md +587 -0
  47. docs_cli-1.6.5/docs/m20-pypi-publish-impl.md +308 -0
  48. docs_cli-1.6.5/docs/m20-pypi-publish.md +431 -0
  49. {docs_cli-1.5.0 → docs_cli-1.6.5}/docs/plan.md +118 -28
  50. {docs_cli-1.5.0 → docs_cli-1.6.5}/docs/release-runbook.md +144 -29
  51. {docs_cli-1.5.0 → docs_cli-1.6.5}/docs/status.md +306 -69
  52. {docs_cli-1.5.0 → docs_cli-1.6.5}/pyproject.toml +1 -1
  53. {docs_cli-1.5.0 → docs_cli-1.6.5}/src/docs_cli/cli.py +921 -100
  54. {docs_cli-1.5.0 → docs_cli-1.6.5}/src/docs_cli/skill/SKILL.md +41 -4
  55. {docs_cli-1.5.0 → docs_cli-1.6.5}/src/docs_cli/skill/references/cli.md +504 -32
  56. {docs_cli-1.5.0/docs → docs_cli-1.6.5/src/docs_cli/skill/references}/convention.md +41 -5
  57. docs_cli-1.6.5/src/docs_cli/skill/references/quality-artifacts.md +69 -0
  58. {docs_cli-1.5.0 → docs_cli-1.6.5}/src/docs_cli/skill/references/use-cases.md +3 -3
  59. docs_cli-1.6.5/tests/fixtures/body-from/real-frontmatter-body.md +9 -0
  60. docs_cli-1.6.5/tests/fixtures/body-from/reason-in-body.md +8 -0
  61. docs_cli-1.6.5/tests/fixtures/body-from/yaml-fence-body.md +7 -0
  62. docs_cli-1.6.5/tests/fixtures/expected/docs-INDEX.md +99 -0
  63. docs_cli-1.6.5/tests/fixtures/stamp/already-stamped.md +13 -0
  64. docs_cli-1.6.5/tests/fixtures/stamp/raw-h1-suggests-role.md +9 -0
  65. docs_cli-1.6.5/tests/fixtures/stamp/raw-invalid-block.md +16 -0
  66. docs_cli-1.6.5/tests/fixtures/stamp/raw-no-frontmatter.md +7 -0
  67. docs_cli-1.6.5/tests/fixtures/stamp/raw-no-h1.md +4 -0
  68. docs_cli-1.6.5/tests/fixtures/stamp/raw-with-foreign-meta.md +11 -0
  69. docs_cli-1.6.5/tests/fixtures/trees/archive-pair/.docs.toml +6 -0
  70. docs_cli-1.6.5/tests/fixtures/trees/archive-pair/feature-log.md +17 -0
  71. docs_cli-1.6.5/tests/fixtures/trees/archive-pair/feature.md +17 -0
  72. docs_cli-1.6.5/tests/fixtures/trees/archive-trio/.docs.toml +6 -0
  73. docs_cli-1.6.5/tests/fixtures/trees/archive-trio/feature-impl.md +15 -0
  74. docs_cli-1.6.5/tests/fixtures/trees/archive-trio/feature-test-matrix.md +15 -0
  75. docs_cli-1.6.5/tests/fixtures/trees/archive-trio/feature.md +17 -0
  76. docs_cli-1.6.5/tests/fixtures/trees/mv-with-malformed/.docs.toml +6 -0
  77. docs_cli-1.6.5/tests/fixtures/trees/mv-with-malformed/broken.md +7 -0
  78. docs_cli-1.6.5/tests/fixtures/trees/mv-with-malformed/good-a.md +13 -0
  79. docs_cli-1.6.5/tests/fixtures/trees/mv-with-malformed/referrer.md +16 -0
  80. docs_cli-1.6.5/tests/test_atomic_write.py +90 -0
  81. docs_cli-1.6.5/tests/test_body_from.py +462 -0
  82. docs_cli-1.6.5/tests/test_cli_archive.py +924 -0
  83. docs_cli-1.6.5/tests/test_cli_check.py +275 -0
  84. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/test_cli_list.py +59 -0
  85. docs_cli-1.6.5/tests/test_cli_mv.py +336 -0
  86. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/test_cli_new.py +87 -0
  87. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/test_cli_project_rename.py +55 -0
  88. docs_cli-1.6.5/tests/test_cli_project_set.py +542 -0
  89. docs_cli-1.6.5/tests/test_cli_stamp.py +377 -0
  90. docs_cli-1.6.5/tests/test_cli_touch.py +583 -0
  91. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/test_config.py +44 -0
  92. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/test_packaging.py +50 -58
  93. docs_cli-1.6.5/tests/test_skill_quality_artifacts.py +45 -0
  94. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/test_skill_refs.py +27 -0
  95. docs_cli-1.5.0/docs/INDEX.md +0 -78
  96. docs_cli-1.5.0/docs/m13-pypi-publish-impl.md +0 -111
  97. docs_cli-1.5.0/tests/fixtures/body-from/with-frontmatter.txt +0 -6
  98. docs_cli-1.5.0/tests/fixtures/expected/docs-INDEX.md +0 -78
  99. docs_cli-1.5.0/tests/test_body_from.py +0 -263
  100. docs_cli-1.5.0/tests/test_cli_archive.py +0 -316
  101. docs_cli-1.5.0/tests/test_cli_check.py +0 -149
  102. docs_cli-1.5.0/tests/test_cli_mv.py +0 -82
  103. docs_cli-1.5.0/tests/test_cli_touch.py +0 -265
  104. {docs_cli-1.5.0 → docs_cli-1.6.5}/.gitignore +0 -0
  105. {docs_cli-1.5.0 → docs_cli-1.6.5}/LICENSE +0 -0
  106. {docs_cli-1.5.0 → docs_cli-1.6.5}/docs/.docs.toml +0 -0
  107. {docs_cli-1.5.0 → docs_cli-1.6.5}/docs/charter.md +0 -0
  108. {docs_cli-1.5.0 → docs_cli-1.6.5}/docs/definition-of-ready.md +0 -0
  109. {docs_cli-1.5.0 → docs_cli-1.6.5}/docs/dual-status-adr.md +0 -0
  110. {docs_cli-1.5.0 → docs_cli-1.6.5}/docs/test-strategy.md +0 -0
  111. {docs_cli-1.5.0 → docs_cli-1.6.5}/docs/vocab-adr.md +0 -0
  112. {docs_cli-1.5.0 → docs_cli-1.6.5}/src/docs_cli/__init__.py +0 -0
  113. {docs_cli-1.5.0 → docs_cli-1.6.5}/src/docs_cli/skill/references/adoption-playbook.md +0 -0
  114. {docs_cli-1.5.0 → docs_cli-1.6.5}/src/docs_cli/skill/references/docs-toml-template.toml +0 -0
  115. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/.gitkeep +0 -0
  116. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/_typing/docs.pyi +0 -0
  117. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/conftest.py +0 -0
  118. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/body-from/clean-body.md +0 -0
  119. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/body-from/edge-case-keyword.md +0 -0
  120. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/lifecycle/lifecycle-key.md +0 -0
  121. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/lifecycle/lifecycle-plus-status-prose.md +0 -0
  122. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/lifecycle/status-only.md +0 -0
  123. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/parser/well-formed.md +0 -0
  124. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/project-names/Abc5Migration/alpha.md +0 -0
  125. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/project-names/Abc5Migration/beta.md +0 -0
  126. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/project-names/Abc5Migration/gamma.md +0 -0
  127. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/project-names/FOO_BAR_BAZ/alpha.md +0 -0
  128. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/project-names/FOO_BAR_BAZ/beta.md +0 -0
  129. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/project-names/FOO_BAR_BAZ/gamma.md +0 -0
  130. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/project-names/FooBarBaz/alpha.md +0 -0
  131. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/project-names/FooBarBaz/beta.md +0 -0
  132. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/project-names/FooBarBaz/gamma.md +0 -0
  133. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/project-names/Foo_Bar_Baz/alpha.md +0 -0
  134. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/project-names/Foo_Bar_Baz/beta.md +0 -0
  135. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/project-names/Foo_Bar_Baz/gamma.md +0 -0
  136. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/project-names/Plan/alpha.md +0 -0
  137. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/project-names/Plan/beta.md +0 -0
  138. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/project-names/Plan/gamma.md +0 -0
  139. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/project-names/bugs-2026-01-26/alpha.md +0 -0
  140. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/project-names/bugs-2026-01-26/beta.md +0 -0
  141. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/project-names/bugs-2026-01-26/gamma.md +0 -0
  142. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/project-names/embedded-ai-discovery-parallel/alpha.md +0 -0
  143. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/project-names/embedded-ai-discovery-parallel/beta.md +0 -0
  144. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/project-names/embedded-ai-discovery-parallel/gamma.md +0 -0
  145. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-met/file-01-spec.md +0 -0
  146. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-met/file-02-spec.md +0 -0
  147. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-met/file-03-spec.md +0 -0
  148. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-met/file-04-spec.md +0 -0
  149. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-met/file-05-spec.md +0 -0
  150. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-met/file-06-spec.md +0 -0
  151. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-met/file-07-spec.md +0 -0
  152. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-met/file-08-no-suffix.md +0 -0
  153. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-met/file-09-no-suffix.md +0 -0
  154. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-met/file-10-no-suffix.md +0 -0
  155. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-not-met/file-01-spec.md +0 -0
  156. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-not-met/file-02-spec.md +0 -0
  157. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-not-met/file-03-spec.md +0 -0
  158. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-not-met/file-04-spec.md +0 -0
  159. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-not-met/file-05-plan.md +0 -0
  160. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-not-met/file-06-plan.md +0 -0
  161. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-not-met/file-07-plan.md +0 -0
  162. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-not-met/file-08-no-suffix.md +0 -0
  163. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-not-met/file-09-no-suffix.md +0 -0
  164. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/majority-not-met/file-10-no-suffix.md +0 -0
  165. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/sample-too-small/file-01-spec.md +0 -0
  166. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/sample-too-small/file-02-spec.md +0 -0
  167. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/sample-too-small/file-03-spec.md +0 -0
  168. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/sibling-defaulting/sample-too-small/file-04-no-suffix.md +0 -0
  169. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/status-prose/draft-companion.md +0 -0
  170. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/status-prose/freeform-status.md +0 -0
  171. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/status-prose/p0-implemented.md +0 -0
  172. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/status-prose/planning-only.md +0 -0
  173. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/archive-with-incoming-refs/.docs.toml +0 -0
  174. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/archive-with-incoming-refs/master.md +0 -0
  175. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/archive-with-incoming-refs/sidekick.md +0 -0
  176. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/archive-with-incoming-refs/witness.md +0 -0
  177. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/cross-refs/.docs.toml +0 -0
  178. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/cross-refs/core.md +0 -0
  179. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/cross-refs/helper.md +0 -0
  180. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/cross-refs/overview.md +0 -0
  181. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/drift/.docs.toml +0 -0
  182. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/drift/archive/2026-01-01/properly-archived.md +0 -0
  183. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/drift/archive/2026-01-01/wrongly-active.md +0 -0
  184. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/drift/clean.md +0 -0
  185. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/drift/wrongly-archived.md +0 -0
  186. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/foreign/archived/proj-old-decision.md +0 -0
  187. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/foreign/proj-auth-spec.md +0 -0
  188. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/foreign/proj-db-adr.md +0 -0
  189. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/foreign/proj-deploy-log.md +0 -0
  190. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/foreign/proj-extra-metadata.md +0 -0
  191. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/foreign/proj-has-metadata.md +0 -0
  192. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/foreign/proj-no-h1.md +0 -0
  193. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/foreign/proj-overview.md +0 -0
  194. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/foreign/proj-release-plan.md +0 -0
  195. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/foreign/topics/proj-deep-notes.md +0 -0
  196. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/invalid/.docs.toml +0 -0
  197. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/invalid/bad-date.md +0 -0
  198. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/invalid/bad-role.md +0 -0
  199. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/invalid/bad-status.md +0 -0
  200. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/invalid/broken-ref.md +0 -0
  201. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/invalid/empty-role.md +0 -0
  202. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/invalid/no-h1.md +0 -0
  203. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/invalid/no-status.md +0 -0
  204. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/marker-preservation/.docs.toml +0 -0
  205. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/marker-preservation/INDEX.md +0 -0
  206. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/marker-preservation/lone-doc.md +0 -0
  207. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/minimal/.docs.toml +0 -0
  208. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/minimal/lone-doc.md +0 -0
  209. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project/.docs.toml +0 -0
  210. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project/alpha-charter.md +0 -0
  211. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project/alpha-old-spec.md +0 -0
  212. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project/alpha-plan.md +0 -0
  213. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project/alpha-spec.md +0 -0
  214. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project/archive/2026-04-01/beta-old.md +0 -0
  215. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project/beta-done.md +0 -0
  216. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project/beta-notes.md +0 -0
  217. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project/beta-status.md +0 -0
  218. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project/topics/orphan.md +0 -0
  219. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project-alpha-sidecar/.docs.toml +0 -0
  220. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project-alpha-sidecar/alpha-charter.md +0 -0
  221. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project-alpha-sidecar/alpha-old-spec.md +0 -0
  222. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project-alpha-sidecar/alpha-plan.md +0 -0
  223. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project-alpha-sidecar/alpha-spec.md +0 -0
  224. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project-alpha-sidecar/archive/2026-04-01/beta-old.md +0 -0
  225. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project-alpha-sidecar/beta-done.md +0 -0
  226. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project-alpha-sidecar/beta-notes.md +0 -0
  227. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project-alpha-sidecar/beta-status.md +0 -0
  228. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/multi-project-alpha-sidecar/topics/orphan.md +0 -0
  229. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/nested/.docs.toml +0 -0
  230. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/nested/root-doc.md +0 -0
  231. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/nested/topics/deep-dive.md +0 -0
  232. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/README.md +0 -0
  233. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/archived/foo-deprecated-plan.md +0 -0
  234. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/archived/foo-historical-decision.md +0 -0
  235. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/archived/foo-old-thing.md +0 -0
  236. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/archived/foo-rejected-spec.md +0 -0
  237. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/archived/foo-superseded-runbook.md +0 -0
  238. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/foo-architecture-decision.md +0 -0
  239. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/foo-bar-plan.md +0 -0
  240. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/foo-bar-spec.md +0 -0
  241. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/foo-charter.md +0 -0
  242. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/foo-design-notes.md +0 -0
  243. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/foo-launch-log.md +0 -0
  244. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/foo-misc.md +0 -0
  245. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/foo-overview.md +0 -0
  246. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/foo-runbook.md +0 -0
  247. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/archive-subdir/foo-status.md +0 -0
  248. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/kebab-tiny/foo-bar-plan.md +0 -0
  249. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/kebab-tiny/foo-bar-spec.md +0 -0
  250. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/kebab-tiny/foo-bar-status.md +0 -0
  251. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/mixed-naming/API Reference.md +0 -0
  252. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/mixed-naming/Acme Plan - Database Population Plan.md +0 -0
  253. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/mixed-naming/AcmeApiSpec.md +0 -0
  254. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/mixed-naming/Foo_Design_Decision_Tree.md +0 -0
  255. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/mixed-naming/Foo_Domain_Spec.md +0 -0
  256. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/mixed-naming/Project_Status_Update.md +0 -0
  257. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/mixed-naming/User Guide - Operator Manual.md +0 -0
  258. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/mixed-naming/feature-rollout-plan.md +0 -0
  259. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/mixed-naming/incident-runbook.md +0 -0
  260. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/mixed-naming/release-notes.md +0 -0
  261. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_API_Spec.md +0 -0
  262. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Architecture.md +0 -0
  263. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Cards.md +0 -0
  264. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Charter.md +0 -0
  265. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_10_Spec.md +0 -0
  266. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_11_Spec.md +0 -0
  267. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_12_Spec.md +0 -0
  268. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_13_Spec.md +0 -0
  269. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_14_Spec.md +0 -0
  270. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_15_Spec.md +0 -0
  271. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_1_Spec.md +0 -0
  272. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_2_Spec.md +0 -0
  273. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_3_Spec.md +0 -0
  274. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_4_Spec.md +0 -0
  275. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_5_Spec.md +0 -0
  276. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_6_Spec.md +0 -0
  277. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_7_Spec.md +0 -0
  278. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_8_Spec.md +0 -0
  279. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_9_Spec.md +0 -0
  280. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Constraints.md +0 -0
  281. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Decision_Tree.md +0 -0
  282. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Design_Sketch.md +0 -0
  283. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Discovery_Plan.md +0 -0
  284. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Domain_Plan.md +0 -0
  285. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Handoff.md +0 -0
  286. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M1.md +0 -0
  287. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M10.md +0 -0
  288. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M10_Implementation.md +0 -0
  289. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M1_Implementation.md +0 -0
  290. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M2.md +0 -0
  291. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M2_Implementation.md +0 -0
  292. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M3.md +0 -0
  293. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M3_Implementation.md +0 -0
  294. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M4.md +0 -0
  295. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M4_Implementation.md +0 -0
  296. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M5.md +0 -0
  297. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M5_Implementation.md +0 -0
  298. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M6.md +0 -0
  299. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M6_Implementation.md +0 -0
  300. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M7.md +0 -0
  301. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M7_Implementation.md +0 -0
  302. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M8.md +0 -0
  303. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M8_Implementation.md +0 -0
  304. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M9.md +0 -0
  305. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_M9_Implementation.md +0 -0
  306. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Migration_Plan.md +0 -0
  307. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Module_Spec.md +0 -0
  308. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Plan.md +0 -0
  309. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Plan_Draft.md +0 -0
  310. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Plan_v3.md +0 -0
  311. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Pricing_Memo.md +0 -0
  312. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Provider_Spec.md +0 -0
  313. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Service_Spec.md +0 -0
  314. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Status.md +0 -0
  315. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Strategy_Outline.md +0 -0
  316. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Strategy_v2.md +0 -0
  317. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_10_Plan.md +0 -0
  318. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_11_Plan.md +0 -0
  319. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_12_Plan.md +0 -0
  320. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_13_Plan.md +0 -0
  321. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_14_Plan.md +0 -0
  322. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_15_Plan.md +0 -0
  323. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_1_Plan.md +0 -0
  324. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_2_Plan.md +0 -0
  325. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_3_Plan.md +0 -0
  326. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_4_Plan.md +0 -0
  327. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_5_Plan.md +0 -0
  328. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_6_Plan.md +0 -0
  329. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_7_Plan.md +0 -0
  330. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_8_Plan.md +0 -0
  331. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_9_Plan.md +0 -0
  332. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-large/Foo_Vendor_Brief.md +0 -0
  333. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_Architecture.md +0 -0
  334. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_Brief.md +0 -0
  335. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_Charter.md +0 -0
  336. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_Implementation.md +0 -0
  337. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_Log.md +0 -0
  338. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_M1.md +0 -0
  339. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_M1_Implementation.md +0 -0
  340. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_M2.md +0 -0
  341. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_M2_Implementation.md +0 -0
  342. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_M3.md +0 -0
  343. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_M4.md +0 -0
  344. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_Memo.md +0 -0
  345. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_Outline.md +0 -0
  346. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_Plan.md +0 -0
  347. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_Sketch.md +0 -0
  348. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_Status.md +0 -0
  349. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees/snake-medium/Foo_Strategy_v2.md +0 -0
  350. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/kebab-tiny/.docs.toml +0 -0
  351. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/kebab-tiny/INDEX.md +0 -0
  352. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/kebab-tiny/foo-bar-plan.md +0 -0
  353. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/kebab-tiny/foo-bar-spec.md +0 -0
  354. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/kebab-tiny/foo-bar-status.md +0 -0
  355. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/.docs.toml +0 -0
  356. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_API_Spec.md +0 -0
  357. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Architecture.md +0 -0
  358. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Cards.md +0 -0
  359. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Charter.md +0 -0
  360. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_10_Spec.md +0 -0
  361. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_11_Spec.md +0 -0
  362. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_12_Spec.md +0 -0
  363. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_13_Spec.md +0 -0
  364. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_14_Spec.md +0 -0
  365. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_15_Spec.md +0 -0
  366. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_1_Spec.md +0 -0
  367. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_2_Spec.md +0 -0
  368. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_3_Spec.md +0 -0
  369. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_4_Spec.md +0 -0
  370. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_5_Spec.md +0 -0
  371. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_6_Spec.md +0 -0
  372. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_7_Spec.md +0 -0
  373. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_8_Spec.md +0 -0
  374. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_9_Spec.md +0 -0
  375. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Constraints.md +0 -0
  376. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Decision_Tree.md +0 -0
  377. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Design_Sketch.md +0 -0
  378. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Discovery_Plan.md +0 -0
  379. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Domain_Plan.md +0 -0
  380. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Handoff.md +0 -0
  381. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M1.md +0 -0
  382. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M10.md +0 -0
  383. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M10_Implementation.md +0 -0
  384. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M1_Implementation.md +0 -0
  385. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M2.md +0 -0
  386. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M2_Implementation.md +0 -0
  387. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M3.md +0 -0
  388. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M3_Implementation.md +0 -0
  389. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M4.md +0 -0
  390. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M4_Implementation.md +0 -0
  391. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M5.md +0 -0
  392. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M5_Implementation.md +0 -0
  393. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M6.md +0 -0
  394. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M6_Implementation.md +0 -0
  395. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M7.md +0 -0
  396. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M7_Implementation.md +0 -0
  397. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M8.md +0 -0
  398. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M8_Implementation.md +0 -0
  399. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M9.md +0 -0
  400. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M9_Implementation.md +0 -0
  401. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Migration_Plan.md +0 -0
  402. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Module_Spec.md +0 -0
  403. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Plan.md +0 -0
  404. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Plan_Draft.md +0 -0
  405. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Plan_v3.md +0 -0
  406. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Pricing_Memo.md +0 -0
  407. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Provider_Spec.md +0 -0
  408. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Service_Spec.md +0 -0
  409. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Status.md +0 -0
  410. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Strategy_Outline.md +0 -0
  411. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Strategy_v2.md +0 -0
  412. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_10_Plan.md +0 -0
  413. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_11_Plan.md +0 -0
  414. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_12_Plan.md +0 -0
  415. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_13_Plan.md +0 -0
  416. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_14_Plan.md +0 -0
  417. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_15_Plan.md +0 -0
  418. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_1_Plan.md +0 -0
  419. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_2_Plan.md +0 -0
  420. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_3_Plan.md +0 -0
  421. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_4_Plan.md +0 -0
  422. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_5_Plan.md +0 -0
  423. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_6_Plan.md +0 -0
  424. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_7_Plan.md +0 -0
  425. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_8_Plan.md +0 -0
  426. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_9_Plan.md +0 -0
  427. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Vendor_Brief.md +0 -0
  428. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-large/INDEX.md +0 -0
  429. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/.docs.toml +0 -0
  430. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Architecture.md +0 -0
  431. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Brief.md +0 -0
  432. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Charter.md +0 -0
  433. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Implementation.md +0 -0
  434. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Log.md +0 -0
  435. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_M1.md +0 -0
  436. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_M1_Implementation.md +0 -0
  437. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_M2.md +0 -0
  438. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_M2_Implementation.md +0 -0
  439. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_M3.md +0 -0
  440. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_M4.md +0 -0
  441. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Memo.md +0 -0
  442. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Outline.md +0 -0
  443. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Plan.md +0 -0
  444. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Sketch.md +0 -0
  445. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Status.md +0 -0
  446. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Strategy_v2.md +0 -0
  447. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/real-trees-adopted/snake-medium/INDEX.md +0 -0
  448. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/rename-with-archive/.docs.toml +0 -0
  449. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/rename-with-archive/archive/2026-04-01/old.md +0 -0
  450. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/rename-with-archive/live.md +0 -0
  451. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/rename-with-malformed/.docs.toml +0 -0
  452. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/rename-with-malformed/broken.md +0 -0
  453. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/rename-with-malformed/good-a.md +0 -0
  454. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/rename-with-malformed/good-b.md +0 -0
  455. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/with-archive/.docs.toml +0 -0
  456. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/with-archive/.hidden-file +0 -0
  457. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/with-archive/.private/should-not-be-walked.md +0 -0
  458. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/with-archive/alpha.md +0 -0
  459. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/with-archive/archive/2026-01-01/INDEX.md +0 -0
  460. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/with-archive/archive/2026-01-01/old-plan.md +0 -0
  461. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/with-archive/beta.md +0 -0
  462. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/fixtures/trees/with-archive/notes.txt +0 -0
  463. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/manual/m7_success_criteria.py +0 -0
  464. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/test_archive_normalisation.py +0 -0
  465. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/test_check.py +0 -0
  466. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/test_cli_index.py +0 -0
  467. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/test_cli_migrate.py +0 -0
  468. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/test_edit.py +0 -0
  469. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/test_exclude.py +0 -0
  470. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/test_index.py +0 -0
  471. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/test_inference.py +0 -0
  472. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/test_lifecycle_rename.py +0 -0
  473. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/test_migrate.py +0 -0
  474. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/test_model.py +0 -0
  475. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/test_multi_project_hints.py +0 -0
  476. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/test_non_md_surfacing.py +0 -0
  477. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/test_project_normalisation.py +0 -0
  478. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/test_query.py +0 -0
  479. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/test_skill.py +0 -0
  480. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/test_skill_adoption.py +0 -0
  481. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/test_triage_flags.py +0 -0
  482. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/test_version_metadata.py +0 -0
  483. {docs_cli-1.5.0 → docs_cli-1.6.5}/tests/test_walker.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: docs-cli
3
- Version: 1.5.0
3
+ Version: 1.6.5
4
4
  Summary: Prescriptive CLI for managing trees of structured Markdown docs.
5
5
  Project-URL: Homepage, https://github.com/ArtRichards/docs-cli
6
6
  Project-URL: Repository, https://github.com/ArtRichards/docs-cli
@@ -124,22 +124,13 @@ python3 -m venv .venv
124
124
 
125
125
  ## Status
126
126
 
127
- **docs-cli 1.3.0 shipped 2026-05-25** the first public release. Install with `pip install docs-cli`. **docs-cli 1.4.0 is ready locally** (M10 adoption-flow polish); the M11 publish milestone will lift it onto PyPI. Milestone history:
127
+ Released on PyPI — `pip install docs-cli`. The on-disk Markdown convention is stable; the only breaking keyword change to date is the one-time `Status:` `Lifecycle:` rename (no backward-compat alias).
128
128
 
129
- - M1Parser and `docs index` (shipped 2026-05-20)
130
- - M2 — Mutating verbs `new`, `archive`, `mv`, `touch` (shipped 2026-05-21)
131
- - M3 — Validation and query `check`, `list` (shipped 2026-05-22)
132
- - M4 — Migration helper `docs migrate` (shipped 2026-05-22)
133
- - M5 — Claude Code skill — drives the verbs automatically when an agent does documentation work in a `docs`-managed tree, with self-contained convention and CLI references bundled alongside (shipped 2026-05-22)
134
- - M6 — PyPI distribution preparation as `docs-cli`; relocates the CLI to a proper package at `src/docs_cli/`, ships the skill inside the wheel as package data, and adds `docs install-skill` for one-shot host materialisation (closed 2026-05-24 as preparation-only; publish landed at M9 batched 1.3.0)
135
- - M7 — Migration accuracy: `Status:` → `Lifecycle:` controlled-vocab rename, broadened role inference (H1 / section-header / sibling-set / word-boundary / `_M\d+` / non-role-suffix strip), `medium` confidence level, project-name normalisation, per-file mtime archive dates, multi-project hints, `--config-project` override, `[migrate]`-only sidecar (shipped 2026-05-25; the version-internal 1.2.0 was published at M9 batched 1.3.0)
136
- - M8 — Adoption workflow agent-driveable: tree-wide `--exclude` + `[exclude]` + `.docsignore`; migrate triage flags (`--summary`, `--only ambiguous`, `--group-by`); default plan footer summary; non-md sibling surfacing; `docs new --body-from` for one-call atomic doc authoring; substantial skill-reference rewrite (adoption playbook + `.docs.toml` template) (shipped 2026-05-25; the version-internal 1.3.0 is the published number)
137
- - M9 — PyPI publish (shipped 2026-05-25). `docs-cli==1.3.0` is live at [pypi.org/project/docs-cli/1.3.0/](https://pypi.org/project/docs-cli/1.3.0/); source tag at [github.com/ArtRichards/docs-cli/releases/tag/v1.3.0](https://github.com/ArtRichards/docs-cli/releases/tag/v1.3.0).
138
- - M10 — Adoption-flow polish + 1.3.0 carry-overs (ready locally as 1.4.0): multi-file atomic `docs touch <file>...`; `docs migrate --apply` writes/extends `.docs.toml` automatically + opportunistically removes empty archive-style parents; `docs migrate --apply --quiet` suppresses the per-file plan block; `[vocabulary] add_fields` allowlist + `docs check` `unknown-field` warning; `Confidence` enum replacing the M4 `bool | str` tri-value (JSON wire format byte-stable); `MigrationPlan.excluded_count` removed (set but never read); adoption playbook restructured to 4 steps (plan / triage / apply / verify). Publish deferred to M11.
129
+ For current state, see the canonical sources kept in sync by the tooling rather than duplicated here:
139
130
 
140
- **Publish strategy.** v1.1.0 and v1.2.0 never reached PyPI by design; M9 batched the M6 + M7 + M8 surface into a single public release at version 1.3.0 (one publish event, per operator OQ-C). The on-disk Markdown convention is otherwise stable; the M7 `Lifecycle:` rename is a one-time keyword change with no backward-compat alias.
141
-
142
- See [`docs/status.md`](https://github.com/ArtRichards/docs-cli/blob/main/docs/status.md) for per-milestone summaries, [`docs/plan.md`](https://github.com/ArtRichards/docs-cli/blob/main/docs/plan.md) for the roadmap, and [`docs/m9-pypi-publish.md`](https://github.com/ArtRichards/docs-cli/blob/main/docs/m9-pypi-publish.md) for the publish record (artifact sha256, deviations recorded for future releases). The [CHANGELOG](https://github.com/ArtRichards/docs-cli/blob/main/CHANGELOG.md) tracks every release.
131
+ - [CHANGELOG](https://github.com/ArtRichards/docs-cli/blob/main/CHANGELOG.md) the current version and full release history.
132
+ - [`docs/status.md`](https://github.com/ArtRichards/docs-cli/blob/main/docs/status.md) — development progress.
133
+ - [`docs/plan.md`](https://github.com/ArtRichards/docs-cli/blob/main/docs/plan.md) the roadmap.
143
134
 
144
135
  ## License
145
136
 
@@ -78,22 +78,13 @@ python3 -m venv .venv
78
78
 
79
79
  ## Status
80
80
 
81
- **docs-cli 1.3.0 shipped 2026-05-25** the first public release. Install with `pip install docs-cli`. **docs-cli 1.4.0 is ready locally** (M10 adoption-flow polish); the M11 publish milestone will lift it onto PyPI. Milestone history:
82
-
83
- - M1Parser and `docs index` (shipped 2026-05-20)
84
- - M2 — Mutating verbs `new`, `archive`, `mv`, `touch` (shipped 2026-05-21)
85
- - M3Validation and query `check`, `list` (shipped 2026-05-22)
86
- - M4 — Migration helper `docs migrate` (shipped 2026-05-22)
87
- - M5 — Claude Code skill — drives the verbs automatically when an agent does documentation work in a `docs`-managed tree, with self-contained convention and CLI references bundled alongside (shipped 2026-05-22)
88
- - M6 — PyPI distribution preparation as `docs-cli`; relocates the CLI to a proper package at `src/docs_cli/`, ships the skill inside the wheel as package data, and adds `docs install-skill` for one-shot host materialisation (closed 2026-05-24 as preparation-only; publish landed at M9 batched 1.3.0)
89
- - M7 — Migration accuracy: `Status:` → `Lifecycle:` controlled-vocab rename, broadened role inference (H1 / section-header / sibling-set / word-boundary / `_M\d+` / non-role-suffix strip), `medium` confidence level, project-name normalisation, per-file mtime archive dates, multi-project hints, `--config-project` override, `[migrate]`-only sidecar (shipped 2026-05-25; the version-internal 1.2.0 was published at M9 batched 1.3.0)
90
- - M8 — Adoption workflow agent-driveable: tree-wide `--exclude` + `[exclude]` + `.docsignore`; migrate triage flags (`--summary`, `--only ambiguous`, `--group-by`); default plan footer summary; non-md sibling surfacing; `docs new --body-from` for one-call atomic doc authoring; substantial skill-reference rewrite (adoption playbook + `.docs.toml` template) (shipped 2026-05-25; the version-internal 1.3.0 is the published number)
91
- - M9 — PyPI publish (shipped 2026-05-25). `docs-cli==1.3.0` is live at [pypi.org/project/docs-cli/1.3.0/](https://pypi.org/project/docs-cli/1.3.0/); source tag at [github.com/ArtRichards/docs-cli/releases/tag/v1.3.0](https://github.com/ArtRichards/docs-cli/releases/tag/v1.3.0).
92
- - M10 — Adoption-flow polish + 1.3.0 carry-overs (ready locally as 1.4.0): multi-file atomic `docs touch <file>...`; `docs migrate --apply` writes/extends `.docs.toml` automatically + opportunistically removes empty archive-style parents; `docs migrate --apply --quiet` suppresses the per-file plan block; `[vocabulary] add_fields` allowlist + `docs check` `unknown-field` warning; `Confidence` enum replacing the M4 `bool | str` tri-value (JSON wire format byte-stable); `MigrationPlan.excluded_count` removed (set but never read); adoption playbook restructured to 4 steps (plan / triage / apply / verify). Publish deferred to M11.
93
-
94
- **Publish strategy.** v1.1.0 and v1.2.0 never reached PyPI by design; M9 batched the M6 + M7 + M8 surface into a single public release at version 1.3.0 (one publish event, per operator OQ-C). The on-disk Markdown convention is otherwise stable; the M7 `Lifecycle:` rename is a one-time keyword change with no backward-compat alias.
95
-
96
- See [`docs/status.md`](https://github.com/ArtRichards/docs-cli/blob/main/docs/status.md) for per-milestone summaries, [`docs/plan.md`](https://github.com/ArtRichards/docs-cli/blob/main/docs/plan.md) for the roadmap, and [`docs/m9-pypi-publish.md`](https://github.com/ArtRichards/docs-cli/blob/main/docs/m9-pypi-publish.md) for the publish record (artifact sha256, deviations recorded for future releases). The [CHANGELOG](https://github.com/ArtRichards/docs-cli/blob/main/CHANGELOG.md) tracks every release.
81
+ Released on PyPI — `pip install docs-cli`. The on-disk Markdown convention is stable; the only breaking keyword change to date is the one-time `Status:` `Lifecycle:` rename (no backward-compat alias).
82
+
83
+ For current state, see the canonical sources kept in sync by the tooling rather than duplicated here:
84
+
85
+ - [CHANGELOG](https://github.com/ArtRichards/docs-cli/blob/main/CHANGELOG.md)the current version and full release history.
86
+ - [`docs/status.md`](https://github.com/ArtRichards/docs-cli/blob/main/docs/status.md) — development progress.
87
+ - [`docs/plan.md`](https://github.com/ArtRichards/docs-cli/blob/main/docs/plan.md) the roadmap.
97
88
 
98
89
  ## License
99
90
 
@@ -0,0 +1,99 @@
1
+ # docs — Documentation
2
+
3
+ This directory is the docs root for the `docs` CLI itself. We eat our own dog food: once the tool is built, running `docs index` here should reproduce the auto-generated section below.
4
+
5
+ The hand-written preamble (this paragraph, and anything outside the marker block) is preserved by the tool. Only content between `<!-- docs:generated start -->` and `<!-- docs:generated end -->` is rewritten.
6
+
7
+ <!-- docs:generated start -->
8
+ _Generated 2026-06-12. 19 docs active, 34 archived._
9
+
10
+ ## Project — docs
11
+
12
+ ### Active — Status
13
+
14
+ - [status.md](status.md) — _status_ — **This is the single source of truth for project progress. Update only this file when milestones complete or phases…. Updated 2026-06-12.
15
+
16
+ ### Active — Charter
17
+
18
+ - [charter.md](charter.md) — _charter_ — A small, opinionated CLI (`docs`) that manages a tree of Markdown documentation by treating each file as a…. Updated 2026-05-24.
19
+
20
+ ### Active — Plan
21
+
22
+ - [plan.md](plan.md) — _plan_ — Three milestones to v1, then a migration helper, then a Claude Code skill wrapper. v1.1 picks up with packaging, then…. Updated 2026-06-12.
23
+
24
+ ### Active — Spec
25
+
26
+ - [cli.md](cli.md) — _spec_ — This spec defines the `docs` command-line surface: subcommands, flags, output formats, and exit codes. The on-disk…. Updated 2026-06-12.
27
+ - [convention.md](convention.md) — _spec_ — This spec defines the on-disk convention that `docs` reads and writes. It is the portable, tool-independent part: any…. Updated 2026-06-12.
28
+
29
+ ### Active — Milestone
30
+
31
+ - [m19-post-edit-validation.md](m19-post-edit-validation.md) — _milestone_ — - Milestone: M19 (v1.6.5) - Title: Post-edit validation ergonomics (touch --check + configurable stale window) -…. Updated 2026-06-12.
32
+ - [m20-pypi-publish.md](m20-pypi-publish.md) — _milestone_ — > **Stub-drafted 2026-06-12, post M19 implementation-complete.** M20 > enters active state immediately — M19 is…. Updated 2026-06-12.
33
+ - [m18-archive-edge-integrity.md](m18-archive-edge-integrity.md) — _milestone_ — - Milestone: M18 - Title: Archive edge integrity (intra-archive Related: rewriting) - Surface: a correctness fix to…. Updated 2026-06-03.
34
+
35
+ ### Active — Log
36
+
37
+ - [m19-post-edit-validation-impl.md](m19-post-edit-validation-impl.md) — _log_ — Chronological log of work on M19 — Post-edit validation ergonomics (`docs touch --check` + configurable stale window).…. Updated 2026-06-12.
38
+ - [m20-pypi-publish-impl.md](m20-pypi-publish-impl.md) — _log_ — Chronological log of work on M20 — PyPI publish 1.6.5. Append a section per runbook phase (operator prep → pre-publish…. Updated 2026-06-12.
39
+ - [m17-pypi-publish-impl.md](m17-pypi-publish-impl.md) — _log_ — Chronological log of work on M17 — PyPI publish 1.6.0. Append a section per runbook phase (operator prep → pre-publish…. Updated 2026-06-03.
40
+ - [m18-archive-edge-integrity-impl.md](m18-archive-edge-integrity-impl.md) — _log_ — Chronological log of work on M18 — Archive edge integrity (intra-archive `Related:` rewriting). Append a section per…. Updated 2026-06-03.
41
+
42
+ ### Active — Decision
43
+
44
+ - [dual-status-adr.md](dual-status-adr.md) — _decision_ — A doc's lifecycle state could be expressed by:. Updated 2026-05-20.
45
+ - [vocab-adr.md](vocab-adr.md) — _decision_ — The convention requires controlled vocabularies for `Status` and `Role`. Too small a set fails to express common…. Updated 2026-05-20.
46
+
47
+ ### Active — Runbook
48
+
49
+ - [release-runbook.md](release-runbook.md) — _runbook_ — The operator-driven checklist for shipping `docs-cli` to PyPI. This runbook drove **M9 — `docs-cli==1.3.0`** (shipped…. Updated 2026-06-03.
50
+
51
+ ### Active — Reference
52
+
53
+ - [architecture.md](architecture.md) — _reference_ — Single Python module at `src/docs_cli/cli.py`, exposed as the `docs` console-script via the `docs_cli.cli:main` entry…. Updated 2026-05-28.
54
+ - [definition-of-ready.md](definition-of-ready.md) — _reference_ — Gate-check before implementation begins. Implementation does not start until every item is green.. Updated 2026-05-22.
55
+ - [test-strategy.md](test-strategy.md) — _reference_ — | Layer | Tool | Scope | |---|---|---| | Unit | pytest | Parser, walker, render, vocab loading. Pure-function focus. |…. Updated 2026-05-20.
56
+
57
+ ## Project — ideas
58
+
59
+ ### Active — Plan
60
+
61
+ - [agent-native-invocation.md](agent-native-invocation.md) — _plan_ — > **Source.** Prompted by ["I read the Claude Code source >…. Updated 2026-06-03.
62
+
63
+ ## Archived
64
+
65
+ - [archive/2026-06-03/m14-robustness-agent-native-impl.md](archive/2026-06-03/m14-robustness-agent-native-impl.md) — _log_ — Chronological log of work on M14 — Robustness + agent-native surface. Append a section per TDD phase with objective,…. Updated 2026-06-03.
66
+ - [archive/2026-06-03/m14-robustness-agent-native.md](archive/2026-06-03/m14-robustness-agent-native.md) — _milestone_ — - Milestone: M14 (v1.6.0, part 1 of 2) - Title: Robustness + autonomous archive - Surface: correctness/atomicity…. Updated 2026-06-03.
67
+ - [archive/2026-06-03/m15-agent-native-authoring-impl.md](archive/2026-06-03/m15-agent-native-authoring-impl.md) — _log_ — Chronological log of work on M15 — Agent-native doc authoring. Append a section per TDD phase with objective, files…. Updated 2026-06-03.
68
+ - [archive/2026-06-03/m15-agent-native-authoring.md](archive/2026-06-03/m15-agent-native-authoring.md) — _milestone_ — - Milestone: M15 (v1.6.0, part 2 of 2) - Title: Agent-native doc authoring - Surface: the agent-native *authoring* set…. Updated 2026-06-03.
69
+ - [archive/2026-06-03/m17-pypi-publish.md](archive/2026-06-03/m17-pypi-publish.md) — _milestone_ — > **Stub-drafted 2026-06-03, post M14 + M15 closeout.** M17 > enters active state immediately — M14 and M15 are both >…. Updated 2026-06-03.
70
+ - [archive/2026-06-01/m16-bundled-docs-skill-quality-impl.md](archive/2026-06-01/m16-bundled-docs-skill-quality-impl.md) — _log_ — Chronological log for M16. This milestone records the docs-cli bundled `docs` skill changes required by the Agent…. Updated 2026-06-01.
71
+ - [archive/2026-06-01/m16-bundled-docs-skill-quality-test-matrix.md](archive/2026-06-01/m16-bundled-docs-skill-quality-test-matrix.md) — _spec_ — Lite. Updated 2026-06-01.
72
+ - [archive/2026-06-01/m16-bundled-docs-skill-quality.md](archive/2026-06-01/m16-bundled-docs-skill-quality.md) — _milestone_ — - Milestone: M16 - Title: Bundled docs skill quality artifacts - Surface: bundled `docs` skill guidance under…. Updated 2026-06-01.
73
+ - [archive/2026-05-29/m13-pypi-publish-impl.md](archive/2026-05-29/m13-pypi-publish-impl.md) — _log_ — Chronological log of work on M13 — PyPI publish 1.5.0. Append a section per runbook phase (operator prep → pre-publish…. Updated 2026-05-29.
74
+ - [archive/2026-05-29/m13-pypi-publish.md](archive/2026-05-29/m13-pypi-publish.md) — _milestone_ — > **Stub-drafted 2026-05-29, post M12 closeout.** M13 enters > active state immediately — the M12 wheel + sdist already…. Updated 2026-05-29.
75
+ - [archive/2026-05-28/m12-project-rename-impl.md](archive/2026-05-28/m12-project-rename-impl.md) — _log_ — Chronological log of work on M12 — Project rename verb + M11 wart fixes + version SoT (v1.5.0). Append a section per…. Updated 2026-05-28.
76
+ - [archive/2026-05-28/m12-project-rename.md](archive/2026-05-28/m12-project-rename.md) — _milestone_ — > **Stub-drafted 2026-05-28** following M11 closeout. M12 bundles > one operator-facing headline feature (`docs project…. Updated 2026-05-28.
77
+ - [archive/2026-05-27/m10-adoption-polish-impl.md](archive/2026-05-27/m10-adoption-polish-impl.md) — _log_ — Chronological log of work on M10 — Adoption-flow polish + 1.3.0 carry-overs. Append a section per phase with objective,…. Updated 2026-05-27.
78
+ - [archive/2026-05-27/m10-adoption-polish.md](archive/2026-05-27/m10-adoption-polish.md) — _milestone_ — - Milestone: M10 (v1.4.0) - Title: Adoption-flow polish + 1.3.0 carry-overs - Surface: two new CLI features (`docs…. Updated 2026-05-27.
79
+ - [archive/2026-05-27/m11-pypi-publish-impl.md](archive/2026-05-27/m11-pypi-publish-impl.md) — _log_ — Chronological log of work on M11 — PyPI publish `docs-cli` 1.4.0. Append a section per phase (Operator prep →…. Updated 2026-05-27.
80
+ - [archive/2026-05-27/m11-pypi-publish.md](archive/2026-05-27/m11-pypi-publish.md) — _milestone_ — > **Stub-drafted 2026-05-27, post M10 closeout.** M11 enters > active state immediately — the M10 wheel + sdist already…. Updated 2026-05-27.
81
+ - [archive/2026-05-25/m7-migration-accuracy-log.md](archive/2026-05-25/m7-migration-accuracy-log.md) — _log_ — - Project: docs - Milestone: M7 — Migration plan accuracy - Started: 2026-05-24 - Progress: **Phase 1 complete; Phase 2…. Updated 2026-05-25.
82
+ - [archive/2026-05-25/m7-migration-accuracy.md](archive/2026-05-25/m7-migration-accuracy.md) — _milestone_ — - Milestone: M7 (v1.1) - Title: Migration plan accuracy - Surface: extensions to `docs migrate`'s inference…. Updated 2026-05-25.
83
+ - [archive/2026-05-25/m8-adoption-workflow-log.md](archive/2026-05-25/m8-adoption-workflow-log.md) — _log_ — - Project: docs - Milestone: M8 — Adoption workflow (agent-driveable) - Started: 2026-05-24 - Progress: **All 10 TDD…. Updated 2026-05-25.
84
+ - [archive/2026-05-25/m8-adoption-workflow.md](archive/2026-05-25/m8-adoption-workflow.md) — _milestone_ — - Milestone: M8 (v1.1) - Title: Adoption workflow — agent-driveable - Surface: new CLI flags + verbs (`--exclude`,…. Updated 2026-05-25.
85
+ - [archive/2026-05-25/m9-pypi-publish-log.md](archive/2026-05-25/m9-pypi-publish-log.md) — _log_ — Per-phase log for M9. Entries appended as the operator walked [release-runbook.md](release-runbook.md) post-M8.. Updated 2026-05-25.
86
+ - [archive/2026-05-25/m9-pypi-publish.md](archive/2026-05-25/m9-pypi-publish.md) — _milestone_ — > **Stub-drafted 2026-05-24, post M6 scope reframe.** M9 enters > active state once M8 ships. The operative checklist…. Updated 2026-05-25.
87
+ - [archive/2026-05-24/m6-pypi-distribution-log.md](archive/2026-05-24/m6-pypi-distribution-log.md) — _log_ — - Project: docs - Milestone: M6 — PyPI distribution as `docs-cli` - Started: 2026-05-23 - Progress: **Milestone-setup…. Updated 2026-05-24.
88
+ - [archive/2026-05-24/m6-pypi-distribution.md](archive/2026-05-24/m6-pypi-distribution.md) — _milestone_ — > **Scope reframe 2026-05-24 (operator decision).** M6 is now > **preparation only** — the milestone delivered the…. Updated 2026-05-24.
89
+ - [archive/2026-05-23/m5-claude-code-skill-log.md](archive/2026-05-23/m5-claude-code-skill-log.md) — _log_ — - Project: docs - Milestone: M5 — Claude Code skill - Started: 2026-05-22 - Progress: **M5 complete — shipped…. Updated 2026-05-23.
90
+ - [archive/2026-05-23/m5-claude-code-skill.md](archive/2026-05-23/m5-claude-code-skill.md) — _milestone_ — - Milestone: M5 - Title: Claude Code skill - Surface: a Claude Code **skill** — a `SKILL.md` artifact (plus, if needed,…. Updated 2026-05-23.
91
+ - [archive/2026-05-22/m3-validation-and-query-log.md](archive/2026-05-22/m3-validation-and-query-log.md) — _log_ — - Project: docs - Milestone: M3 — Validation and query (`check`, `list`) - Started: 2026-05-22 - Progress: Complete —…. Updated 2026-05-22.
92
+ - [archive/2026-05-22/m3-validation-and-query.md](archive/2026-05-22/m3-validation-and-query.md) — _milestone_ — - Milestone: M3 - Title: Validation and query (`check`, `list`) - Surface: two new read-only CLI subcommands on the…. Updated 2026-05-22.
93
+ - [archive/2026-05-22/m4-migration-helper-log.md](archive/2026-05-22/m4-migration-helper-log.md) — _log_ — - Project: docs - Milestone: M4 — Migration helper (`docs migrate`) - Started: 2026-05-22 - Completed: 2026-05-22 -…. Updated 2026-05-22.
94
+ - [archive/2026-05-22/m4-migration-helper.md](archive/2026-05-22/m4-migration-helper.md) — _milestone_ — - Milestone: M4 - Title: Migration helper (`docs migrate`) - Surface: one new CLI subcommand on the `docs` executable…. Updated 2026-05-22.
95
+ - [archive/2026-05-21/m2-mutating-verbs-log.md](archive/2026-05-21/m2-mutating-verbs-log.md) — _log_ — - Project: docs - Milestone: M2 — Mutating verbs (`new`, `archive`, `mv`, `touch`) - Started: 2026-05-21 - Progress:…. Updated 2026-05-21.
96
+ - [archive/2026-05-21/m2-mutating-verbs.md](archive/2026-05-21/m2-mutating-verbs.md) — _milestone_ — - Milestone: M2 - Title: Mutating verbs (`new`, `archive`, `mv`, `touch`) - Surface: four new CLI subcommands on the…. Updated 2026-05-21.
97
+ - [archive/2026-05-20/m1-parser-and-index-log.md](archive/2026-05-20/m1-parser-and-index-log.md) — _log_ — - Project: docs - Milestone: M1 — Parser and `docs index` - Started: 2026-05-20 - Shipped: 2026-05-20 - Progress: Phase…. Updated 2026-05-20.
98
+ - [archive/2026-05-20/m1-parser-and-index.md](archive/2026-05-20/m1-parser-and-index.md) — _milestone_ — - Milestone: M1 - Title: Parser and `docs index` - Surface: Python module `docs`, CLI subcommand `docs index` - Status:…. Updated 2026-05-20.
99
+ <!-- docs:generated end -->
@@ -0,0 +1,384 @@
1
+ # Agent-Native Invocation — applying Claude Code harness techniques to docs's skills
2
+
3
+ Lifecycle: draft
4
+ Role: plan
5
+ Project: ideas
6
+ Updated: 2026-06-03
7
+
8
+ Related:
9
+ - pairs-with: cli.md
10
+ - pairs-with: convention.md
11
+ - pairs-with: plan.md
12
+
13
+ > **Source.** Prompted by ["I read the Claude Code source
14
+ > code"](https://buildingbetter.tech/p/i-read-the-claude-code-source-code)
15
+ > (buildingbetter.tech), which catalogues ~18 techniques Claude
16
+ > Code uses internally. Most are **harness** features — hooks,
17
+ > agent memory, system-reminders, session-context injection,
18
+ > effort/model selection, fresh-eyes reviewers. The first
19
+ > instinct is "a CLI can't use those." But `docs` is almost
20
+ > never invoked by an agent *directly* — it's invoked **through
21
+ > skills** (`docs`, `project-foundation`, `create-milestones`,
22
+ > `ship-milestone`) running inside that very harness. The skill
23
+ > layer **can** use every one of those features. This doc maps
24
+ > the harness techniques onto `docs`'s invocation surface.
25
+ > Scope: design suggestions only. Feeds into [plan.md](plan.md).
26
+
27
+ ## The reframe: the leverage is in the invocation layer
28
+
29
+ There are four ways an agent calls `docs`, in rising order of
30
+ how much harness machinery they can carry:
31
+
32
+ 1. **The `docs` skill** (`src/docs_cli/skill/SKILL.md`) — the
33
+ always-loaded instruction sheet. Can declare **hooks**,
34
+ **system-reminders**, **memory** directives.
35
+ 2. **Companion workflow skills** (`project-foundation`,
36
+ `create-milestones`, `ship-milestone`) — multi-agent
37
+ orchestrations. Can use **effort/model selection**,
38
+ **fresh-eyes (omitClaudeMd) reviewers**, **forked
39
+ subagents**.
40
+ 3. **Claude Code settings/hooks shipped by `install-skill`** —
41
+ PostToolUse / PreToolUse / SessionStart wired into the host.
42
+ 4. **An MCP server wrapping the verbs** — an alternative
43
+ invocation surface that gets structured tool-use,
44
+ permissions, and auto-approve *for free* from the harness.
45
+
46
+ The CLI barely changes. The win is teaching these four layers
47
+ to use what the harness already offers.
48
+
49
+ ## What we already do (a version of it)
50
+
51
+ - **`ship-milestone` already uses fresh-eyes reviewers** —
52
+ independent sub-agents that "did NOT build this code." That's
53
+ the article's `omitClaudeMd` reviewer pattern (#14), done by
54
+ convention rather than by flag.
55
+ - **`ship-milestone` already prescribes model + thinking** —
56
+ conductor on the largest model with high thinking, sub-agents
57
+ spawned `model: opus`. That's effort/model specialization
58
+ (#6, #11), done in prose.
59
+ - **The `docs` SKILL already states the core invariant** —
60
+ "run the verb, never hand-edit INDEX/metadata/archive" — and
61
+ warns that the cwd-fallback "is easy to misuse — confirm
62
+ before any verb that writes." Those are exactly the
63
+ instructions worth promoting to *enforced* hooks and
64
+ *re-injected* reminders below.
65
+
66
+ So several proposals are "formalize what we already improvise."
67
+
68
+ ---
69
+
70
+ ## Proposals, by invocation layer
71
+
72
+ ### Layer 1 — the `docs` skill
73
+
74
+ #### 1A — Skill-scoped hooks that *enforce* "never hand-edit" (#1,#2,#7)
75
+
76
+ - **Technique:** skills register PostToolUse/PreToolUse hooks
77
+ in frontmatter; they activate only while the skill is live
78
+ and auto-deregister (skill-scoped, keeps context lean).
79
+ - **Today:** the SKILL *asks* the agent not to hand-edit
80
+ `INDEX.md`, metadata blocks, or files under `archive/`. A
81
+ hand edit "silently drifts the tree" — but nothing stops it.
82
+ - **Proposal:** ship hooks with the skill:
83
+ - **PreToolUse** on `Write`/`Edit` whose path is `INDEX.md`,
84
+ a file under `archive/`, or a metadata block → **deny**
85
+ with a reason that names the right verb:
86
+ `permissionDecisionReason: "INDEX.md is generated — run
87
+ \`docs index\` instead of editing it."` The invariant
88
+ becomes mechanical, not hopeful.
89
+ - **PreToolUse** auto-**allow** the read-only verbs
90
+ (`docs check`, `docs list`, `docs index --dry-run`) so the
91
+ agent is never prompted for a safe call.
92
+ - **PostToolUse** on Write/Edit of any `*.md` under a
93
+ `.docs.toml` root → run `docs check` (non-blocking) and
94
+ surface violations immediately, so drift is caught at the
95
+ edit that caused it rather than at the next `check`.
96
+ - **Payoff:** the skill's central rule stops depending on the
97
+ model's memory; the harness guarantees it.
98
+
99
+ #### 1B — A critical system-reminder for the one non-negotiable rule (#15)
100
+
101
+ - **Technique:** `criticalSystemReminder_EXPERIMENTAL`
102
+ re-injects a short instruction every turn, surviving context
103
+ compaction.
104
+ - **Today:** "run the verb, never hand-edit" lives once at the
105
+ top of the SKILL — and can fade from attention across a long
106
+ session, exactly when an agent starts hand-patching INDEX.md.
107
+ - **Proposal:** carry the single most drift-prone invariant as
108
+ a critical reminder: *"In a `.docs.toml` tree, never hand-edit
109
+ INDEX.md, metadata blocks, or archive/ — always run the
110
+ matching `docs` verb."* (Flag is experimental; treat as
111
+ opt-in.)
112
+ - **Payoff:** the rule holds at turn 200 as well as turn 1.
113
+
114
+ #### 1C — Tree conventions as scoped agent memory (#9,#10)
115
+
116
+ - **Technique:** agents persist learned patterns as
117
+ `memory: project|user`; an auto-consolidation loop dedupes,
118
+ resolves contradictions, converts relative→absolute dates,
119
+ prunes stale entries.
120
+ - **Today:** every session re-derives a tree's specifics from
121
+ `.docs.toml` + `convention.md` — its custom vocab
122
+ (`add_roles`, `role_suffixes`), `archive.date_format`, the
123
+ milestone cadence, "impl logs stay `Lifecycle: active` after
124
+ archive."
125
+ - **Proposal:** have the skill write durable `memory: project`
126
+ entries for tree-specific facts the first time it learns
127
+ them, so later sessions skip the re-derivation. The article's
128
+ consolidation loop keeps them honest (absolute dates, no
129
+ dupes) — which happens to be the same hygiene `docs` itself
130
+ wants.
131
+ - **Payoff:** "the skill teaches itself this tree"; faster,
132
+ more consistent runs without re-reading the convention each
133
+ time.
134
+
135
+ #### 1D — A load-time capability gate (#16)
136
+
137
+ - **Technique:** `requiredMcpServers` hides an agent that would
138
+ fail; tools self-describe so callers don't assume.
139
+ - **Today:** the SKILL version-gates features *in prose* ("v1.2
140
+ for `Lifecycle:`, v1.3 for `--body-from`"). An agent only
141
+ discovers a missing verb (`project rename`) when the call
142
+ errors mid-task.
143
+ - **Proposal:** the skill preamble runs `docs --version` (or a
144
+ future `docs capabilities --json`, see Layer 5) and degrades
145
+ gracefully if `docs` is absent or too old — "this tree needs
146
+ docs-cli ≥ 1.5.0; install or fall back to manual." Make the
147
+ prose gate a load-time check.
148
+ - **Payoff:** clean refusal up front instead of a confusing
149
+ mid-task failure.
150
+
151
+ ### Layer 2 — companion workflow skills
152
+
153
+ #### 2A — Per-role model & effort (#6,#11)
154
+
155
+ - **Technique:** `effort: low|max` and `model:` per skill/agent
156
+ match compute to task; `context: fork` + `model: inherit`
157
+ runs heavy work async without breaking the prompt cache.
158
+ - **Today:** `ship-milestone` says "opus + high thinking" in
159
+ prose for every sub-agent — including mechanical ones.
160
+ - **Proposal:** make it explicit and graded: cheap model / low
161
+ effort for mechanical steps (running `docs index`,
162
+ `docs check`, lint, the consistency-audit file walk);
163
+ opus / high for planning, triage, and fresh-eyes review.
164
+ Use `context: fork` + `model: inherit` for the review agent
165
+ so it doesn't stall the conductor or bust the cache.
166
+ - **Payoff:** the same conductor pattern, cheaper and faster,
167
+ with compute spent where judgment is actually needed.
168
+
169
+ #### 2B — Formalize fresh-eyes with `omitClaudeMd` (#14)
170
+
171
+ - **Technique:** `omitClaudeMd: true` makes a reviewer ignore
172
+ the project's CLAUDE.md/conventions and judge against
173
+ industry standards — catching when local conventions have
174
+ drifted from good practice.
175
+ - **Today:** `ship-milestone`'s fresh-eyes reviewer rebuilds
176
+ context from the specs and code, but still inherits CLAUDE.md
177
+ and the tree's own conventions — so it can't easily flag that
178
+ a *convention itself* has drifted.
179
+ - **Proposal:** give the fresh-eyes reviewer the explicit
180
+ `omitClaudeMd` posture for a pass that judges doc hygiene and
181
+ contract quality against general standards, not the tree's
182
+ (possibly self-justifying) rules.
183
+ - **Payoff:** a genuinely independent check on the conventions,
184
+ not just on conformance to them.
185
+
186
+ ### Layer 3 — settings/hooks shipped by `install-skill`
187
+
188
+ #### 3A — SessionStart context injection (#3)
189
+
190
+ - **Technique:** SessionStart hooks inject `additionalContext`
191
+ (branch, uncommitted changes) to ground the model before it
192
+ acts and cut hallucinated assumptions.
193
+ - **Today:** to understand a tree an agent runs `check` +
194
+ `list` + reads `.docs.toml` + skims `INDEX.md` — several
195
+ calls, many tokens.
196
+ - **Proposal:** `install-skill` optionally writes a SessionStart
197
+ hook that, when a `.docs.toml` is present, injects a compact
198
+ tree snapshot (counts by role/lifecycle, violation totals,
199
+ stale docs, index-in-sync, docs-cli version). Needs the small
200
+ CLI enabler in Layer 5 (`docs context --json`).
201
+ - **Payoff:** the agent starts every session already oriented,
202
+ for one cheap injected blob instead of a discovery dance.
203
+
204
+ #### 3B — `install-skill --with-hooks` (#1,#2,#7)
205
+
206
+ - **Technique:** the host's hook config is where PreToolUse /
207
+ PostToolUse safety actually runs.
208
+ - **Today:** `install-skill` installs the SKILL.md only; the
209
+ Layer-1 hooks have no delivery vehicle on hosts that key hooks
210
+ off `settings.json` rather than skill frontmatter.
211
+ - **Proposal:** `install-skill --with-hooks` emits a reviewed
212
+ hook block (the agent/user approves before enabling) carrying
213
+ 1A's deny/allow rules and 3A's SessionStart injection.
214
+ - **Payoff:** the integration becomes *ambient* on any host —
215
+ drift caught at the edit, safe verbs un-prompted, sessions
216
+ pre-grounded — without the SKILL having to nag.
217
+ - **Caveat:** emitting hooks couples `docs` to one harness's
218
+ hook schema. Keep it behind a flag and version the emitted
219
+ block.
220
+
221
+ ### Layer 4 — an MCP server as an alternative invocation surface
222
+
223
+ - **Technique (composite):** the article's structured-output
224
+ channels (#17), contextual permissions/auto-approve (#2), and
225
+ glob permission syntax (#12) are things MCP clients give a
226
+ tool *for free*.
227
+ - **Today:** agents drive `docs` by shelling out and parsing
228
+ prose; permissions are coarse (`Bash(docs *)`).
229
+ - **Proposal:** expose the verbs as an MCP server (`docs-mcp`),
230
+ one tool per verb with typed inputs and a structured result
231
+ object. The harness then supplies: per-tool permissions
232
+ (auto-allow `docs_check`/`docs_list`, confirm `docs_archive`),
233
+ no-prompt structured I/O, and tool schemas the agent reads
234
+ instead of scraping `--help`.
235
+ - **Payoff:** most of the article's "legible, non-blocking,
236
+ structured" benefits arrive without reinventing them in the
237
+ CLI — for any MCP-capable client, not just Claude Code.
238
+ - **Open question:** maintain two surfaces (CLI + MCP), or
239
+ generate the MCP layer from one verb registry?
240
+
241
+ ### Layer 5 — the minimal CLI enablers the above need
242
+
243
+ The skill/hook/MCP work above leans on a few small,
244
+ agent-friendly CLI affordances. These are the *only* core
245
+ changes worth doing, and only because the layers above need
246
+ them:
247
+
248
+ - **`docs context --json`** — the one-shot tree snapshot 3A
249
+ injects and 1D can read.
250
+ - **Non-interactive invariant** — *`docs` never prompts unless
251
+ asked*. Concretely, replace the interactive
252
+ `docs archive --cascade` prompt (which stalls an autonomous
253
+ agent — this `/ship-milestone` run had to avoid `--cascade`
254
+ for exactly that reason) with pre-answerable flags
255
+ (`--cascade`, `--cascade-dry-run`, `--cascade-only <glob>`).
256
+ Hooks and MCP both assume verbs never block on stdin.
257
+ - **`--json` result object on every verb** (today only
258
+ `check`/`list`/`migrate`) with a `changed: true|false` flag —
259
+ so PostToolUse hooks and MCP tools have a structured channel
260
+ to read, and a re-run reports "no change" detectably.
261
+ - **`docs capabilities --json`** — verbs/flags/feature-flags so
262
+ 1D's gate and MCP schemas are generated truth, not
263
+ hand-maintained prose.
264
+
265
+ #### 5E — `docs project set`: reassign one doc's project (NOT `migrate`)
266
+
267
+ - **The gap (how this idea surfaced).** Changing a single
268
+ doc's `Project:` has no verb. To file *this* doc under
269
+ `ideas` we deleted it and recreated it with
270
+ `docs new --project ideas` — destructive: it drops the
271
+ doc's `Related:` edges, re-runs scaffolding, and (for a
272
+ *tracked* doc) breaks history continuity. `docs new --project`
273
+ covers project-at-creation; `docs project rename` covers the
274
+ *whole root*; the post-hoc single-doc case falls in the gap.
275
+ An agent recreating a doc to change one field is exactly the
276
+ clunky, error-prone move the rest of this doc argues against.
277
+ - **Should it be `docs migrate`? No.** `migrate` adopts
278
+ *foreign, unmanaged* markdown into the convention:
279
+ inference-driven (it guesses `Role`/`Project`), dry-run by
280
+ default, a one-shot import of external files. Reassigning a
281
+ field on an already-managed doc is the inverse — a precise,
282
+ known mutation inside the tree. Routing it through `migrate`
283
+ would overload that verb's "import external" model and blur a
284
+ clean boundary. Reject.
285
+ - **Where it belongs: the `docs project` namespace.**
286
+ `docs project --help` already reserves the namespace for
287
+ "future per-project verbs (show, validate, …)". `rename` is
288
+ the *whole-root* operation (rewrite `.docs.toml` `[project]
289
+ name` + every matching `Project:` line); **`project set`** is
290
+ its *single-doc* counterpart. Same concept, two scopes,
291
+ co-located — most discoverable, least surprising.
292
+ - **Proposed shape:**
293
+ ```
294
+ docs project set <doc>... <new-project>
295
+ [--root DIR] [--quiet] [--dry-run] [--new-project]
296
+ ```
297
+ - Reassigns `Project:` on one or more docs; **one**
298
+ end-of-batch INDEX refresh; atomic all-or-nothing on
299
+ validation failure (mirrors `touch` / `project rename`).
300
+ - `<new-project>` normalised via M7's
301
+ `normalise_project_name()` — same as `rename`; empty
302
+ post-normalised input → exit 2.
303
+ - Archived docs are read-only. **Divergence from `rename` (resolved
304
+ 2026-06-03, binding — see cli.md `project set` + M15 Decisions):**
305
+ `rename` walks the *whole tree* and *skips + reports* archived docs it
306
+ meets incidentally (they are out of scope for a root-wide rewrite); but
307
+ `set` takes **explicitly named** doc paths, so a *named* archived doc is
308
+ an error, not an incidental skip. Naming an archived doc therefore
309
+ **refuses the whole batch with exit 2** (nothing written), naming the
310
+ offending path — unlike `rename`'s incidental skip.
311
+ - **No path change ⇒ no `Related:`-edge rewrite** (unlike
312
+ `rename`/`archive`/`mv`). It only edits the `Project:` line
313
+ and the doc's INDEX grouping — strictly simpler than those.
314
+ - **The interesting design decision — a typo guard.** The way
315
+ an agent silently fragments the INDEX is a typo
316
+ (`idea` vs `ideas` → two project groups). Rather than prompt
317
+ (we never prompt — see the non-interactive invariant above),
318
+ **refuse a project value new to the tree unless `--new-project`
319
+ is passed**, with a prescriptive, did-you-mean error (this is
320
+ proposal P0-3 dogfooded):
321
+ ```
322
+ docs: project set: 'idea' is not a project in this tree; refusing
323
+ → did you mean 'ideas'? to create a new project group, pass --new-project
324
+ ```
325
+ An *existing* project value needs no flag. Creating a new
326
+ group (as we just did for `ideas`) is a deliberate act the
327
+ flag acknowledges — catching typos without a blocking prompt.
328
+ - **Composes with `rename`.** `project rename` only rewrites
329
+ docs matching the *old* root name, so docs already reassigned
330
+ by `set` are correctly left alone (its existing
331
+ "non-matching docs reported, not mutated" behaviour). `set`
332
+ and `rename` are orthogonal halves that don't fight.
333
+ - **Rejected alternative — a generic `docs set <doc> <field>
334
+ <value>`.** Too broad: it would let an agent poke arbitrary
335
+ metadata and bypass the controlled vocab (`Role`/`Lifecycle`
336
+ have constrained transitions; `Project` is the one
337
+ identifier-like free field). Keep it a focused
338
+ `project set`.
339
+ - **TDD sketch.** Counterpart tests to `project rename`'s set:
340
+ single-doc set; multi-doc atomic batch; `--dry-run` plan;
341
+ named-archived-doc → **refuse the whole batch, exit 2** (NOT a skip —
342
+ see the archived divergence above); empty-name → exit 2;
343
+ unknown-project-without-`--new-project` → exit 2 with did-you-mean;
344
+ INDEX regrouping; idempotent re-set reports no change.
345
+
346
+ ## Explicitly *not* worth porting
347
+
348
+ - **Hook command-*rewriting*** (silently injecting `--dry-run`):
349
+ opaque for a tool an agent must reason about; prefer the
350
+ explicit non-interactive invariant + visible `--dry-run`.
351
+ - **Auto-*rewriting* the agent's file from a PostToolUse hook:**
352
+ surface drift (advise), never silently re-edit what the agent
353
+ just wrote.
354
+ - **Colour identity, fire-once provisioning, auto-dream as a
355
+ `docs` feature:** these belong to the harness/runtime, not to
356
+ `docs`. Be a clean tool the harness wraps.
357
+
358
+ ## Suggested sequencing
359
+
360
+ 1. **Layer 5 enablers first** (`docs context --json`,
361
+ non-interactive `--cascade` redesign, uniform `--json` +
362
+ `changed`) — small, and everything else depends on them.
363
+ Natural TDD milestone (**M14 — agent-native surface**).
364
+ 2. **Layer 1** skill hooks + critical reminder + capability
365
+ gate (mostly SKILL.md + a shipped hook block).
366
+ 3. **Layer 3** `install-skill --with-hooks` / SessionStart.
367
+ 4. **Layer 2** model/effort + `omitClaudeMd` edits to
368
+ `ship-milestone` (no CLI change — pure skill edits, can land
369
+ anytime).
370
+ 5. **Layer 4** MCP server — largest, evaluate after Layer 5
371
+ settles the result schema it would reuse.
372
+
373
+ ## Open questions
374
+
375
+ - **Hook schema coupling:** is emitting Claude-Code-specific
376
+ hooks from `install-skill` acceptable, or should hooks stay
377
+ documented-only to keep `docs` harness-neutral?
378
+ - **Memory ownership:** should the `docs` skill write
379
+ `memory: project` entries itself, or only *recommend* facts
380
+ for the host to remember?
381
+ - **CLI vs MCP as the strategic surface:** if MCP (Layer 4) is
382
+ the future, how much Layer-5 CLI polish is worth doing first?
383
+ - **Critical-reminder risk:** the flag is experimental — is the
384
+ drift it prevents worth depending on an unstable field?
@@ -10,7 +10,7 @@ Related:
10
10
  - pairs-with: convention.md
11
11
  - pairs-with: cli.md
12
12
  - pairs-with: test-strategy.md
13
- - pairs-with: m5-claude-code-skill.md
13
+ - pairs-with: archive/2026-05-23/m5-claude-code-skill.md
14
14
 
15
15
  ## Shape
16
16
 
@@ -1,12 +1,12 @@
1
1
  # M1 — Implementation Log
2
2
 
3
- Lifecycle: done
3
+ Lifecycle: archived
4
4
  Role: log
5
5
  Project: docs
6
6
  Updated: 2026-05-20
7
7
 
8
8
  Related:
9
- - child-of: m1-parser-and-index.md
9
+ - child-of: archive/2026-05-20/m1-parser-and-index.md
10
10
  - pairs-with: status.md
11
11
 
12
12
  ## Implementation metadata
@@ -1,12 +1,12 @@
1
1
  # M1 — Parser and `docs index`
2
2
 
3
- Lifecycle: done
3
+ Lifecycle: archived
4
4
  Role: milestone
5
5
  Project: docs
6
6
  Updated: 2026-05-20
7
7
 
8
8
  Related:
9
- - parent-of: m1-parser-and-index-log.md
9
+ - parent-of: archive/2026-05-20/m1-parser-and-index-log.md
10
10
  - child-of: plan.md
11
11
  - implements: charter.md
12
12
  - pairs-with: convention.md
@@ -1,12 +1,12 @@
1
1
  # M2 — Implementation Log
2
2
 
3
- Lifecycle: active
3
+ Lifecycle: archived
4
4
  Role: log
5
5
  Project: docs
6
6
  Updated: 2026-05-21
7
7
 
8
8
  Related:
9
- - child-of: m2-mutating-verbs.md
9
+ - child-of: archive/2026-05-21/m2-mutating-verbs.md
10
10
  - pairs-with: status.md
11
11
 
12
12
  ## Implementation metadata
@@ -1,12 +1,12 @@
1
1
  # M2 — Mutating verbs (`new`, `archive`, `mv`, `touch`)
2
2
 
3
- Lifecycle: active
3
+ Lifecycle: archived
4
4
  Role: milestone
5
5
  Project: docs
6
6
  Updated: 2026-05-21
7
7
 
8
8
  Related:
9
- - parent-of: m2-mutating-verbs-log.md
9
+ - parent-of: archive/2026-05-21/m2-mutating-verbs-log.md
10
10
  - child-of: plan.md
11
11
  - implements: charter.md
12
12
  - pairs-with: convention.md