docs-cli 1.5.0__tar.gz → 1.6.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {docs_cli-1.5.0 → docs_cli-1.6.0}/PKG-INFO +6 -15
- {docs_cli-1.5.0 → docs_cli-1.6.0}/README.md +7 -16
- docs_cli-1.6.0/docs/INDEX.md +95 -0
- docs_cli-1.6.0/docs/agent-native-invocation.md +384 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/docs/architecture.md +1 -1
- {docs_cli-1.5.0/docs → docs_cli-1.6.0/docs/archive/2026-05-20}/m1-parser-and-index-log.md +2 -2
- {docs_cli-1.5.0/docs → docs_cli-1.6.0/docs/archive/2026-05-20}/m1-parser-and-index.md +2 -2
- {docs_cli-1.5.0/docs → docs_cli-1.6.0/docs/archive/2026-05-21}/m2-mutating-verbs-log.md +2 -2
- {docs_cli-1.5.0/docs → docs_cli-1.6.0/docs/archive/2026-05-21}/m2-mutating-verbs.md +2 -2
- {docs_cli-1.5.0/docs → docs_cli-1.6.0/docs/archive/2026-05-22}/m3-validation-and-query-log.md +2 -2
- {docs_cli-1.5.0/docs → docs_cli-1.6.0/docs/archive/2026-05-22}/m3-validation-and-query.md +2 -2
- {docs_cli-1.5.0/docs → docs_cli-1.6.0/docs/archive/2026-05-22}/m4-migration-helper-log.md +2 -2
- {docs_cli-1.5.0/docs → docs_cli-1.6.0/docs/archive/2026-05-22}/m4-migration-helper.md +2 -2
- {docs_cli-1.5.0/docs → docs_cli-1.6.0/docs/archive/2026-05-23}/m5-claude-code-skill-log.md +2 -2
- {docs_cli-1.5.0/docs → docs_cli-1.6.0/docs/archive/2026-05-23}/m5-claude-code-skill.md +2 -2
- {docs_cli-1.5.0/docs → docs_cli-1.6.0/docs/archive/2026-05-24}/m6-pypi-distribution-log.md +3 -3
- {docs_cli-1.5.0/docs → docs_cli-1.6.0/docs/archive/2026-05-24}/m6-pypi-distribution.md +2 -2
- {docs_cli-1.5.0/docs → docs_cli-1.6.0/docs/archive/2026-05-25}/m7-migration-accuracy-log.md +2 -2
- {docs_cli-1.5.0/docs → docs_cli-1.6.0/docs/archive/2026-05-25}/m7-migration-accuracy.md +4 -4
- {docs_cli-1.5.0/docs → docs_cli-1.6.0/docs/archive/2026-05-25}/m8-adoption-workflow-log.md +2 -2
- {docs_cli-1.5.0/docs → docs_cli-1.6.0/docs/archive/2026-05-25}/m8-adoption-workflow.md +5 -5
- {docs_cli-1.5.0/docs → docs_cli-1.6.0/docs/archive/2026-05-25}/m9-pypi-publish-log.md +2 -2
- {docs_cli-1.5.0/docs → docs_cli-1.6.0/docs/archive/2026-05-25}/m9-pypi-publish.md +5 -5
- {docs_cli-1.5.0/docs → docs_cli-1.6.0/docs/archive/2026-05-27}/m10-adoption-polish-impl.md +1 -1
- {docs_cli-1.5.0 → docs_cli-1.6.0}/docs/archive/2026-05-27/m10-adoption-polish.md +1 -1
- {docs_cli-1.5.0/docs → docs_cli-1.6.0/docs/archive/2026-05-27}/m11-pypi-publish-impl.md +1 -1
- {docs_cli-1.5.0 → docs_cli-1.6.0}/docs/archive/2026-05-27/m11-pypi-publish.md +1 -1
- {docs_cli-1.5.0/docs → docs_cli-1.6.0/docs/archive/2026-05-28}/m12-project-rename-impl.md +3 -3
- {docs_cli-1.5.0/docs → docs_cli-1.6.0/docs/archive/2026-05-28}/m12-project-rename.md +2 -2
- docs_cli-1.6.0/docs/archive/2026-05-29/m13-pypi-publish-impl.md +247 -0
- {docs_cli-1.5.0/docs → docs_cli-1.6.0/docs/archive/2026-05-29}/m13-pypi-publish.md +95 -28
- docs_cli-1.6.0/docs/archive/2026-06-01/m16-bundled-docs-skill-quality-impl.md +90 -0
- docs_cli-1.6.0/docs/archive/2026-06-01/m16-bundled-docs-skill-quality-test-matrix.md +70 -0
- docs_cli-1.6.0/docs/archive/2026-06-01/m16-bundled-docs-skill-quality.md +134 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/docs/cli.md +421 -30
- {docs_cli-1.5.0/src/docs_cli/skill/references → docs_cli-1.6.0/docs}/convention.md +16 -5
- docs_cli-1.6.0/docs/m14-robustness-agent-native-impl.md +510 -0
- docs_cli-1.6.0/docs/m14-robustness-agent-native.md +339 -0
- docs_cli-1.6.0/docs/m15-agent-native-authoring-impl.md +716 -0
- docs_cli-1.6.0/docs/m15-agent-native-authoring.md +209 -0
- docs_cli-1.6.0/docs/m17-pypi-publish-impl.md +252 -0
- docs_cli-1.6.0/docs/m17-pypi-publish.md +420 -0
- docs_cli-1.6.0/docs/m18-archive-edge-integrity-impl.md +128 -0
- docs_cli-1.6.0/docs/m18-archive-edge-integrity.md +395 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/docs/plan.md +62 -29
- {docs_cli-1.5.0 → docs_cli-1.6.0}/docs/release-runbook.md +92 -29
- {docs_cli-1.5.0 → docs_cli-1.6.0}/docs/status.md +200 -69
- {docs_cli-1.5.0 → docs_cli-1.6.0}/pyproject.toml +1 -1
- {docs_cli-1.5.0 → docs_cli-1.6.0}/src/docs_cli/cli.py +757 -82
- {docs_cli-1.5.0 → docs_cli-1.6.0}/src/docs_cli/skill/SKILL.md +32 -3
- {docs_cli-1.5.0 → docs_cli-1.6.0}/src/docs_cli/skill/references/cli.md +421 -30
- {docs_cli-1.5.0/docs → docs_cli-1.6.0/src/docs_cli/skill/references}/convention.md +16 -5
- docs_cli-1.6.0/src/docs_cli/skill/references/quality-artifacts.md +66 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/src/docs_cli/skill/references/use-cases.md +3 -3
- docs_cli-1.6.0/tests/fixtures/body-from/real-frontmatter-body.md +9 -0
- docs_cli-1.6.0/tests/fixtures/body-from/reason-in-body.md +8 -0
- docs_cli-1.6.0/tests/fixtures/body-from/yaml-fence-body.md +7 -0
- docs_cli-1.6.0/tests/fixtures/expected/docs-INDEX.md +95 -0
- docs_cli-1.6.0/tests/fixtures/stamp/already-stamped.md +13 -0
- docs_cli-1.6.0/tests/fixtures/stamp/raw-h1-suggests-role.md +9 -0
- docs_cli-1.6.0/tests/fixtures/stamp/raw-invalid-block.md +16 -0
- docs_cli-1.6.0/tests/fixtures/stamp/raw-no-frontmatter.md +7 -0
- docs_cli-1.6.0/tests/fixtures/stamp/raw-no-h1.md +4 -0
- docs_cli-1.6.0/tests/fixtures/stamp/raw-with-foreign-meta.md +11 -0
- docs_cli-1.6.0/tests/fixtures/trees/archive-pair/.docs.toml +6 -0
- docs_cli-1.6.0/tests/fixtures/trees/archive-pair/feature-log.md +17 -0
- docs_cli-1.6.0/tests/fixtures/trees/archive-pair/feature.md +17 -0
- docs_cli-1.6.0/tests/fixtures/trees/archive-trio/.docs.toml +6 -0
- docs_cli-1.6.0/tests/fixtures/trees/archive-trio/feature-impl.md +15 -0
- docs_cli-1.6.0/tests/fixtures/trees/archive-trio/feature-test-matrix.md +15 -0
- docs_cli-1.6.0/tests/fixtures/trees/archive-trio/feature.md +17 -0
- docs_cli-1.6.0/tests/fixtures/trees/mv-with-malformed/.docs.toml +6 -0
- docs_cli-1.6.0/tests/fixtures/trees/mv-with-malformed/broken.md +7 -0
- docs_cli-1.6.0/tests/fixtures/trees/mv-with-malformed/good-a.md +13 -0
- docs_cli-1.6.0/tests/fixtures/trees/mv-with-malformed/referrer.md +16 -0
- docs_cli-1.6.0/tests/test_atomic_write.py +90 -0
- docs_cli-1.6.0/tests/test_body_from.py +434 -0
- docs_cli-1.6.0/tests/test_cli_archive.py +924 -0
- docs_cli-1.6.0/tests/test_cli_mv.py +336 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_cli_new.py +87 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_cli_project_rename.py +55 -0
- docs_cli-1.6.0/tests/test_cli_project_set.py +542 -0
- docs_cli-1.6.0/tests/test_cli_stamp.py +377 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_cli_touch.py +72 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_packaging.py +49 -58
- docs_cli-1.6.0/tests/test_skill_quality_artifacts.py +45 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_skill_refs.py +27 -0
- docs_cli-1.5.0/docs/INDEX.md +0 -78
- docs_cli-1.5.0/docs/m13-pypi-publish-impl.md +0 -111
- docs_cli-1.5.0/tests/fixtures/body-from/with-frontmatter.txt +0 -6
- docs_cli-1.5.0/tests/fixtures/expected/docs-INDEX.md +0 -78
- docs_cli-1.5.0/tests/test_body_from.py +0 -263
- docs_cli-1.5.0/tests/test_cli_archive.py +0 -316
- docs_cli-1.5.0/tests/test_cli_mv.py +0 -82
- {docs_cli-1.5.0 → docs_cli-1.6.0}/.gitignore +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/LICENSE +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/docs/.docs.toml +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/docs/charter.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/docs/definition-of-ready.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/docs/dual-status-adr.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/docs/test-strategy.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/docs/vocab-adr.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/src/docs_cli/__init__.py +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/src/docs_cli/skill/references/adoption-playbook.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/src/docs_cli/skill/references/docs-toml-template.toml +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/.gitkeep +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/_typing/docs.pyi +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/conftest.py +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/body-from/clean-body.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/body-from/edge-case-keyword.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/lifecycle/lifecycle-key.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/lifecycle/lifecycle-plus-status-prose.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/lifecycle/status-only.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/parser/well-formed.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/project-names/Abc5Migration/alpha.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/project-names/Abc5Migration/beta.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/project-names/Abc5Migration/gamma.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/project-names/FOO_BAR_BAZ/alpha.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/project-names/FOO_BAR_BAZ/beta.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/project-names/FOO_BAR_BAZ/gamma.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/project-names/FooBarBaz/alpha.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/project-names/FooBarBaz/beta.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/project-names/FooBarBaz/gamma.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/project-names/Foo_Bar_Baz/alpha.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/project-names/Foo_Bar_Baz/beta.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/project-names/Foo_Bar_Baz/gamma.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/project-names/Plan/alpha.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/project-names/Plan/beta.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/project-names/Plan/gamma.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/project-names/bugs-2026-01-26/alpha.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/project-names/bugs-2026-01-26/beta.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/project-names/bugs-2026-01-26/gamma.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/project-names/embedded-ai-discovery-parallel/alpha.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/project-names/embedded-ai-discovery-parallel/beta.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/project-names/embedded-ai-discovery-parallel/gamma.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/sibling-defaulting/majority-met/file-01-spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/sibling-defaulting/majority-met/file-02-spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/sibling-defaulting/majority-met/file-03-spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/sibling-defaulting/majority-met/file-04-spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/sibling-defaulting/majority-met/file-05-spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/sibling-defaulting/majority-met/file-06-spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/sibling-defaulting/majority-met/file-07-spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/sibling-defaulting/majority-met/file-08-no-suffix.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/sibling-defaulting/majority-met/file-09-no-suffix.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/sibling-defaulting/majority-met/file-10-no-suffix.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/sibling-defaulting/majority-not-met/file-01-spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/sibling-defaulting/majority-not-met/file-02-spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/sibling-defaulting/majority-not-met/file-03-spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/sibling-defaulting/majority-not-met/file-04-spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/sibling-defaulting/majority-not-met/file-05-plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/sibling-defaulting/majority-not-met/file-06-plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/sibling-defaulting/majority-not-met/file-07-plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/sibling-defaulting/majority-not-met/file-08-no-suffix.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/sibling-defaulting/majority-not-met/file-09-no-suffix.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/sibling-defaulting/majority-not-met/file-10-no-suffix.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/sibling-defaulting/sample-too-small/file-01-spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/sibling-defaulting/sample-too-small/file-02-spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/sibling-defaulting/sample-too-small/file-03-spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/sibling-defaulting/sample-too-small/file-04-no-suffix.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/status-prose/draft-companion.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/status-prose/freeform-status.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/status-prose/p0-implemented.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/status-prose/planning-only.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/archive-with-incoming-refs/.docs.toml +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/archive-with-incoming-refs/master.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/archive-with-incoming-refs/sidekick.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/archive-with-incoming-refs/witness.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/cross-refs/.docs.toml +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/cross-refs/core.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/cross-refs/helper.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/cross-refs/overview.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/drift/.docs.toml +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/drift/archive/2026-01-01/properly-archived.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/drift/archive/2026-01-01/wrongly-active.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/drift/clean.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/drift/wrongly-archived.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/foreign/archived/proj-old-decision.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/foreign/proj-auth-spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/foreign/proj-db-adr.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/foreign/proj-deploy-log.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/foreign/proj-extra-metadata.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/foreign/proj-has-metadata.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/foreign/proj-no-h1.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/foreign/proj-overview.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/foreign/proj-release-plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/foreign/topics/proj-deep-notes.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/invalid/.docs.toml +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/invalid/bad-date.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/invalid/bad-role.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/invalid/bad-status.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/invalid/broken-ref.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/invalid/empty-role.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/invalid/no-h1.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/invalid/no-status.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/marker-preservation/.docs.toml +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/marker-preservation/INDEX.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/marker-preservation/lone-doc.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/minimal/.docs.toml +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/minimal/lone-doc.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/multi-project/.docs.toml +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/multi-project/alpha-charter.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/multi-project/alpha-old-spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/multi-project/alpha-plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/multi-project/alpha-spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/multi-project/archive/2026-04-01/beta-old.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/multi-project/beta-done.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/multi-project/beta-notes.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/multi-project/beta-status.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/multi-project/topics/orphan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/multi-project-alpha-sidecar/.docs.toml +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/multi-project-alpha-sidecar/alpha-charter.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/multi-project-alpha-sidecar/alpha-old-spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/multi-project-alpha-sidecar/alpha-plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/multi-project-alpha-sidecar/alpha-spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/multi-project-alpha-sidecar/archive/2026-04-01/beta-old.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/multi-project-alpha-sidecar/beta-done.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/multi-project-alpha-sidecar/beta-notes.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/multi-project-alpha-sidecar/beta-status.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/multi-project-alpha-sidecar/topics/orphan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/nested/.docs.toml +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/nested/root-doc.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/nested/topics/deep-dive.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/README.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/archive-subdir/archived/foo-deprecated-plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/archive-subdir/archived/foo-historical-decision.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/archive-subdir/archived/foo-old-thing.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/archive-subdir/archived/foo-rejected-spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/archive-subdir/archived/foo-superseded-runbook.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/archive-subdir/foo-architecture-decision.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/archive-subdir/foo-bar-plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/archive-subdir/foo-bar-spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/archive-subdir/foo-charter.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/archive-subdir/foo-design-notes.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/archive-subdir/foo-launch-log.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/archive-subdir/foo-misc.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/archive-subdir/foo-overview.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/archive-subdir/foo-runbook.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/archive-subdir/foo-status.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/kebab-tiny/foo-bar-plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/kebab-tiny/foo-bar-spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/kebab-tiny/foo-bar-status.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/mixed-naming/API Reference.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/mixed-naming/Acme Plan - Database Population Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/mixed-naming/AcmeApiSpec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/mixed-naming/Foo_Design_Decision_Tree.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/mixed-naming/Foo_Domain_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/mixed-naming/Project_Status_Update.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/mixed-naming/User Guide - Operator Manual.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/mixed-naming/feature-rollout-plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/mixed-naming/incident-runbook.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/mixed-naming/release-notes.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_API_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Architecture.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Cards.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Charter.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_10_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_11_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_12_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_13_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_14_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_15_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_1_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_2_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_3_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_4_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_5_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_6_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_7_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_8_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Component_9_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Constraints.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Decision_Tree.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Design_Sketch.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Discovery_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Domain_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Handoff.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M1.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M10.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M10_Implementation.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M1_Implementation.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M2.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M2_Implementation.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M3.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M3_Implementation.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M4.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M4_Implementation.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M5.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M5_Implementation.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M6.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M6_Implementation.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M7.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M7_Implementation.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M8.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M8_Implementation.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M9.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_M9_Implementation.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Migration_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Module_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Plan_Draft.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Plan_v3.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Pricing_Memo.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Provider_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Service_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Status.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Strategy_Outline.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Strategy_v2.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_10_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_11_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_12_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_13_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_14_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_15_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_1_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_2_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_3_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_4_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_5_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_6_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_7_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_8_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Task_9_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-large/Foo_Vendor_Brief.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_Architecture.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_Brief.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_Charter.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_Implementation.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_Log.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_M1.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_M1_Implementation.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_M2.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_M2_Implementation.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_M3.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_M4.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_Memo.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_Outline.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_Sketch.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_Status.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees/snake-medium/Foo_Strategy_v2.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/kebab-tiny/.docs.toml +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/kebab-tiny/INDEX.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/kebab-tiny/foo-bar-plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/kebab-tiny/foo-bar-spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/kebab-tiny/foo-bar-status.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/.docs.toml +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_API_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Architecture.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Cards.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Charter.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_10_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_11_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_12_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_13_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_14_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_15_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_1_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_2_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_3_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_4_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_5_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_6_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_7_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_8_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Component_9_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Constraints.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Decision_Tree.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Design_Sketch.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Discovery_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Domain_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Handoff.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M1.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M10.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M10_Implementation.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M1_Implementation.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M2.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M2_Implementation.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M3.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M3_Implementation.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M4.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M4_Implementation.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M5.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M5_Implementation.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M6.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M6_Implementation.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M7.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M7_Implementation.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M8.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M8_Implementation.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M9.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_M9_Implementation.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Migration_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Module_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Plan_Draft.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Plan_v3.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Pricing_Memo.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Provider_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Service_Spec.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Status.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Strategy_Outline.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Strategy_v2.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_10_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_11_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_12_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_13_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_14_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_15_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_1_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_2_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_3_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_4_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_5_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_6_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_7_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_8_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Task_9_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/Foo_Vendor_Brief.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-large/INDEX.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/.docs.toml +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Architecture.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Brief.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Charter.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Implementation.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Log.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_M1.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_M1_Implementation.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_M2.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_M2_Implementation.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_M3.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_M4.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Memo.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Outline.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Sketch.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Status.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/Foo_Strategy_v2.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/real-trees-adopted/snake-medium/INDEX.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/rename-with-archive/.docs.toml +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/rename-with-archive/archive/2026-04-01/old.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/rename-with-archive/live.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/rename-with-malformed/.docs.toml +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/rename-with-malformed/broken.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/rename-with-malformed/good-a.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/rename-with-malformed/good-b.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/with-archive/.docs.toml +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/with-archive/.hidden-file +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/with-archive/.private/should-not-be-walked.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/with-archive/alpha.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/with-archive/archive/2026-01-01/INDEX.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/with-archive/archive/2026-01-01/old-plan.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/with-archive/beta.md +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/fixtures/trees/with-archive/notes.txt +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/manual/m7_success_criteria.py +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_archive_normalisation.py +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_check.py +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_cli_check.py +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_cli_index.py +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_cli_list.py +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_cli_migrate.py +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_config.py +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_edit.py +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_exclude.py +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_index.py +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_inference.py +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_lifecycle_rename.py +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_migrate.py +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_model.py +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_multi_project_hints.py +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_non_md_surfacing.py +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_project_normalisation.py +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_query.py +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_skill.py +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_skill_adoption.py +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_triage_flags.py +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_version_metadata.py +0 -0
- {docs_cli-1.5.0 → docs_cli-1.6.0}/tests/test_walker.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: docs-cli
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.6.0
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
141
|
-
|
|
142
|
-
|
|
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
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
-
|
|
86
|
-
-
|
|
87
|
-
-
|
|
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,95 @@
|
|
|
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-03. 20 docs active, 29 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-03.
|
|
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-03.
|
|
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-03.
|
|
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-03.
|
|
28
|
+
|
|
29
|
+
### Active — Milestone
|
|
30
|
+
|
|
31
|
+
- [m15-agent-native-authoring.md](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.
|
|
32
|
+
- [m17-pypi-publish.md](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.
|
|
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
|
+
- [m14-robustness-agent-native.md](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-02.
|
|
35
|
+
|
|
36
|
+
### Active — Log
|
|
37
|
+
|
|
38
|
+
- [m15-agent-native-authoring-impl.md](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.
|
|
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
|
+
- [m14-robustness-agent-native-impl.md](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-02.
|
|
42
|
+
|
|
43
|
+
### Active — Decision
|
|
44
|
+
|
|
45
|
+
- [dual-status-adr.md](dual-status-adr.md) — _decision_ — A doc's lifecycle state could be expressed by:. Updated 2026-05-20.
|
|
46
|
+
- [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.
|
|
47
|
+
|
|
48
|
+
### Active — Runbook
|
|
49
|
+
|
|
50
|
+
- [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.
|
|
51
|
+
|
|
52
|
+
### Active — Reference
|
|
53
|
+
|
|
54
|
+
- [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.
|
|
55
|
+
- [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.
|
|
56
|
+
- [test-strategy.md](test-strategy.md) — _reference_ — | Layer | Tool | Scope | |---|---|---| | Unit | pytest | Parser, walker, render, vocab loading. Pure-function focus. |…. Updated 2026-05-20.
|
|
57
|
+
|
|
58
|
+
## Project — ideas
|
|
59
|
+
|
|
60
|
+
### Active — Plan
|
|
61
|
+
|
|
62
|
+
- [agent-native-invocation.md](agent-native-invocation.md) — _plan_ — > **Source.** Prompted by ["I read the Claude Code source >…. Updated 2026-06-03.
|
|
63
|
+
|
|
64
|
+
## Archived
|
|
65
|
+
|
|
66
|
+
- [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.
|
|
67
|
+
- [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.
|
|
68
|
+
- [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.
|
|
69
|
+
- [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.
|
|
70
|
+
- [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.
|
|
71
|
+
- [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.
|
|
72
|
+
- [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.
|
|
73
|
+
- [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.
|
|
74
|
+
- [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.
|
|
75
|
+
- [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.
|
|
76
|
+
- [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.
|
|
77
|
+
- [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.
|
|
78
|
+
- [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.
|
|
79
|
+
- [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.
|
|
80
|
+
- [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.
|
|
81
|
+
- [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.
|
|
82
|
+
- [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.
|
|
83
|
+
- [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.
|
|
84
|
+
- [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.
|
|
85
|
+
- [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.
|
|
86
|
+
- [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.
|
|
87
|
+
- [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.
|
|
88
|
+
- [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.
|
|
89
|
+
- [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.
|
|
90
|
+
- [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.
|
|
91
|
+
- [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.
|
|
92
|
+
- [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.
|
|
93
|
+
- [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.
|
|
94
|
+
- [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.
|
|
95
|
+
<!-- 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?
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# M1 — Implementation Log
|
|
2
2
|
|
|
3
|
-
Lifecycle:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|