Skip to main content

Prescriptive CLI for managing trees of structured Markdown docs.

Project description

docs-cli

A prescriptive, lightweight CLI (docs) for managing trees of structured markdown documentation.

Treats each Markdown file as a small, self-describing record. A short metadata block under the H1 captures the doc's status, role, and relationships; the docs CLI uses that metadata to derive an index, archive completed work, validate consistency, and answer queries — without forcing you to maintain cross-references by hand.

Why

Documentation directories rot. Hand-maintained INDEX.md files drift from reality. Descriptions get duplicated and lose sync. Plans pile up alongside completed work with no clear lifecycle.

docs makes each file self-describing and treats the index as a derived view. The doc itself is the source of truth; the index is generated.

Convention at a glance

# Title

Lifecycle: active
Role: spec
Project: docs
Updated: 2026-05-23

Related:
- pairs-with: convention.md
- implements: charter.md

## …
  • Plain Label: value lines under the H1; a bare-label list group (like Related:) may follow after a blank line.
  • Lifecycle and Role come from controlled vocabularies (extensible per-project, additive only).
  • Related: is followed by bullets in <verb>: <path> form.
  • No YAML frontmatter, no parser dependency, readable in any Markdown viewer.

See docs/convention.md for the full spec.

Commands

docs new <role> <slug> [--project NAME] [--body-from PATH|-]
                                          Scaffold a doc with the right metadata; --body-from writes the body atomically.
docs index [DIR] [--exclude PATTERN]      Regenerate INDEX.md from metadata in DIR.
docs archive <file> [--reason "…"]        Archive: edit Lifecycle, move to archive/<date>/, refresh index.
docs mv <old> <new>                       Move + rewrite Related: references across the tree.
docs list [filters] [--json] [--exclude PATTERN]
                                          Query view of the tree.
docs check [DIR] [--exclude PATTERN]      Validate metadata, refs, status/location drift.
docs touch <file>                         Bump Updated: to today.
docs migrate <dir> [--apply] [--summary] [--only ambiguous] [--exclude PATTERN]
                                          Adopt a foreign Markdown directory into the convention (dry-run by default).
docs install-skill [--dest DIR]           Materialise the bundled Claude Code skill onto this host.

See docs/cli.md for full surface and exit codes.

Install

pip install docs-cli                      # lands `docs` on PATH
docs install-skill                        # materialise the bundled Claude Code skill at ~/.claude/skills/docs/

Requires Python 3.11+ (for stdlib tomllib). No third-party runtime dependencies.

Adopting an existing tree

Have a directory of foreign Markdown specs? docs install-skill materialises a Claude Code skill that walks an agent through docs migrate <dir> → triage → docs migrate --apply. See docs/m8-adoption-workflow.md for the full agent-driveable workflow, the bundled adoption playbook for the procedural deep-dive, or run docs migrate <dir> directly for a dry-run plan.

For development:

git clone https://github.com/ArtRichards/docs-cli.git ~/opt/docs-cli
cd ~/opt/docs-cli
python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"
.venv/bin/python -m pytest -q

Status

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).

For current state, see the canonical sources — kept in sync by the tooling rather than duplicated here:

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

docs_cli-1.6.5.tar.gz (737.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

docs_cli-1.6.5-py3-none-any.whl (111.0 kB view details)

Uploaded Python 3

File details

Details for the file docs_cli-1.6.5.tar.gz.

File metadata

  • Download URL: docs_cli-1.6.5.tar.gz
  • Upload date:
  • Size: 737.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for docs_cli-1.6.5.tar.gz
Algorithm Hash digest
SHA256 f9de1eb49ff84271969c6b4b7e0faef93a138bea0813cb1effd1d1314eff12be
MD5 c78fcef7aa5e32586f5a52addfe84394
BLAKE2b-256 4f5153e2515bf07aa3e090f685abcefae434187891ad441d37c58a0146aceaa4

See more details on using hashes here.

File details

Details for the file docs_cli-1.6.5-py3-none-any.whl.

File metadata

  • Download URL: docs_cli-1.6.5-py3-none-any.whl
  • Upload date:
  • Size: 111.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for docs_cli-1.6.5-py3-none-any.whl
Algorithm Hash digest
SHA256 aba36e92d92363958f0b9e91e52a769e2f10f69d92437a44c83cebeef396b4e0
MD5 2088e28c2e11b49b4efdb55af6b3e927
BLAKE2b-256 b07e2860ebca31675b9e5294e008c191b5d16cdd3dd8016ba21cc816a85a3175

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page