CLI Design

The CLI demonstrates the standard command layout: a thin entry point, one file per public command, split subcommand modules when a command grows, command-level help, and version reporting. The primary executable is dev-std; wn-dev-std remains a compatibility alias. Text output, JSON output, and help output leave one blank padding line before the first content line and one blank padding line after the final content line before returning to the shell prompt.

audit

Runs repository audit checks for release signoff. Package roots run their configured profile checks. Workspace roots aggregate explicitly registered member policy boundaries. The default scope is all, unless a package config declares enabled_scopes; callers may request narrower scopes such as docs.plans, docs.adrs, docs.domains, docs.requirements, docs.build, docs.test_strategy for the canonical test strategy document, docs.surfaces, docs.traceability, docs.links, docs.artifacts, docs.vendors, docs.release, and tests. Text and JSON output are supported. --check-upstream-version performs an optional PyPI freshness check and reports only a warning. --mode release runs release-mode payload inspection when docs.release is selected. Other scopes keep their normal behavior in release mode. A full audit with --mode release includes release payload inspection because all selects docs.release.

adr

Helpers for compliant ADR documents. adr list lists ADRs from the discovered project root, adr show renders one ADR by id, and adr create writes a canonical ADR source file. Text output is the default. adr list starts with the discovered root, an indented status summary, status sections, and record entries with colored TTY status badges and record ids. ADR titles and paths render on indented continuation lines to keep terminal rows narrow. JSON output follows the same root, marker, path, metadata, and body conventions used by plan and log read commands.

check

Compatibility alias for audit. Existing repositories and CI jobs may keep using this command while new signoff wiring should call audit.

governance

Helpers for generated governance documentation. governance html projects compliant plan, log, ADR, and requirement Markdown sources into browseable HTML pages with standard data-dev-std-gov-* attributes, an index page, metadata tables, generated cross-links for known refs, and repeatable --css stylesheet hooks. governance resolve validates or rewrites data-dev-std-gov-ref hooks in downstream HTML docs so they point at generated governance pages. gov is the short command alias.

plan

Helpers for compliant plan documents. plan list lists plans from the discovered project root, grouping the text view into current, dependency-waiting, parked/pending, and blocked sections with TTY color unless NO_COLOR is set. Section headings have divider rules, official states render as background-color badges in TTY output, plan ids render as black text on white, and step ids use a different treatment so dependency chains and step lists are easier to scan. The text view starts with the discovered root, then a blank line, then an indented summary block with one state count per line. Each plan item shows the plan id and official state, created date, nested latest attached log detail with its step id, supporting path, nested dependency detail, grouped step lists with colored headings, step titles on indented continuation lines, nested step-dependency bullets, and explicit exit-criteria status counts. JSON output remains the stable machine-readable form. plan show renders one plan by id, plan create writes a new canonical plan, plan status updates the plan status, and plan step lists, adds, or updates structured step state. The command also reports structured exit criteria from [[exit_criteria]] metadata so users and agents can determine whether a plan is ready for closeout. Newly created plans include a default pending exit criterion. Dedicated exit-criterion mutation commands are a future slice. The command discovers the package root by walking upward to dev-std.toml, legacy wn-dev-std.toml, a configured pyproject.toml, or a .git fallback boundary.

requirement

Helpers for compliant requirement documents. requirement list lists requirements from the discovered project root, requirement show renders one requirement by id, and requirement create writes a canonical requirement source file. Text output is the default. requirement list starts with the discovered root, an indented status summary, status sections, and record entries with colored TTY status badges and record ids. Requirement titles and paths render on indented continuation lines to keep terminal rows narrow. JSON output follows the same root, marker, path, metadata, and body conventions used by plan and log read commands. Read commands fail when the governance catalog has metadata, traceability, or rogue legacy-document failures.

log

Helpers for compliant plan work logs. Bare log list lists logs across all plans, log list <plan-id> filters to one plan, log show renders one log by globally unique log id, and log create <plan-id> <step-id> writes a new timestamped log entry attached to a specific plan step after the same root discovery and catalog validation used by plan. Log creation accepts either --body for short text or --body-file for longer Markdown that should avoid shell command-line length, newline, and quoting limits. Agents should prefer --body-file whenever the log body is more than a short one-line note. Bare log list groups text output by plan and then step; filtered log list <plan-id> groups by step. Both views include an indented summary, nested log entries, wrapped path fields, and TTY color for plan, step, and log ids unless NO_COLOR is set. log show renders log metadata as a compact nested block before the body. JSON output remains the stable machine-readable form.

standard

Prints a standard profile summary as text or JSON. The default profile is python-package; --profile cpp-library renders the C++ native profile, --profile csharp-app renders the C# profile, --profile javascript-web-app renders the no-build browser JavaScript/CSS profile, and --profile python-js-app renders the Python-served browser app profile. --profile typescript-web-app renders the greenfield browser TypeScript profile, and --profile python-ts-app renders the Python-served TypeScript browser app profile. --profile rust-app renders the host-side Rust profile, --profile rust-firmware renders the embedded Rust firmware profile, and --profile zephyr-firmware renders the Zephyr firmware profile.

version

Reports the package version, Python version, and major dependency versions. --check-upstream checks PyPI for a newer released wn-dev-std version and reports only a warning.