Documentation
¶
Overview ¶
atdd_commands.go wires the `gh optivem atdd …` subcommands into the root Cobra command. Two public commands mirror today's slash commands:
gh optivem atdd implement-ticket --issue N gh optivem atdd manage-project
A hidden `debug` parent groups the diagnostic helpers — pick-top-ready, classify, next-phase, gate, release — so each underlying runtime package can be exercised standalone without rerunning the whole pipeline. The hidden flag (Cobra's `Hidden: true`) keeps these out of the default help text; `gh optivem atdd debug --help` still works for anyone who knows they exist.
The handlers are deliberately thin: they translate Cobra flags into internal/atdd/runtime/* calls and surface their errors via exitOnError (defined in runner_commands.go) for consistency with the rest of the `optivem` binary.
atdd_init.go provides the thin wrapper that lets `runInit`'s buildSteps call `atdd.Install` as a phase step. There is no standalone `gh optivem atdd install` subcommand — ATDD assets are installed only as part of `gh optivem init`. To refresh ATDD assets in an existing repo, re-run `gh optivem init` (or copy the assets from a fresh shop checkout by hand).
compile_commands.go wires the `compile`, `compile system`, and `compile system-tests` Cobra subcommands.
Naming: `compile` is source-level build (dotnet build / gradlew compileJava / npx tsc). `build` is reserved for `docker compose build` (runner_commands.go). The two are distinct enough to coexist; they must not be conflated.
Bare `gh optivem compile` runs `system` then `system-tests` sequentially, halting on first failure. This shortcut is the dominant use case (the structural-cycle compile_in_scope action shells out to it as a single command), and is a deliberate departure from build/run/test/stop/clean which all require an explicit subcommand. The explicit subcommands stay available for scoped local use.
config_commands.go wires the `gh optivem config …` subcommands into the root Cobra command. The `config` namespace owns operations that read or write gh-optivem.yaml — the central per-project config file produced by `gh optivem init` and consumed by `gh optivem atdd implement-ticket`.
gh optivem config init — write a fresh gh-optivem.yaml from CLI flags gh optivem config validate — parse <CWD>/gh-optivem.yaml and validate it
`config init` reuses the same render path as `gh optivem init` (steps.WriteOptivemYAMLToPath / config.ValidateAndDeriveForYAML) so a new YAML-affecting flag flows to both surfaces with no per-command duplication.
gh-optivem: A gh CLI extension for pipeline project management.
Usage:
Monolith:
gh optivem init --owner acme --system-name "Page Turner" --repo page-turner \
--arch monolith --monolith-lang java
Multitier:
gh optivem init --owner acme --system-name "Page Turner" --repo page-turner \
--arch multitier --backend-lang java --frontend-lang react
Dry run:
gh optivem init ... --dry-run
runner_commands.go wires the `build system`, `run system`, `test system`, `stop system`, and `clean system` subcommands into the root Cobra command. The runner package is fully agnostic — these handlers just translate Cobra flags into runner.* calls.
Working-dir contract: each command operates against the user's current working directory. JSON config paths default to ./system.json and ./tests.json; both can be overridden with --system-config / --test-config.
verify_commands.go wires the `gh optivem verify …` subcommands into the root Cobra command. The `verify` namespace owns preflight checks that validate the environment is ready to run a CLI operation, without performing any mutation.
gh optivem verify tokens — live auth-check every credential the CLI
consumes from the environment, returning
non-zero on any missing or rejected token.
Designed to be invoked from a CI preflight job so a single broken token surfaces once, before a scaffolding matrix fans out and burns runner minutes failing the same way N times.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
internal
|
|
|
atdd
Package atdd installs ATDD (Acceptance-Test-Driven Development) Claude assets — agents, commands, and prompt docs — from a shop checkout into a scaffolded project.
|
Package atdd installs ATDD (Acceptance-Test-Driven Development) Claude assets — agents, commands, and prompt docs — from a shop checkout into a scaffolded project. |
|
atdd/runtime/actions
Bindings — Go implementations of every service-task `action:` referenced in docs/atdd/process/process-flow.yaml.
|
Bindings — Go implementations of every service-task `action:` referenced in docs/atdd/process/process-flow.yaml. |
|
atdd/runtime/agents
Package agents holds the user-task agent-dispatch registry.
|
Package agents holds the user-task agent-dispatch registry. |
|
atdd/runtime/board
Package board owns the GitHub Project board interactions for the ATDD pipeline driver.
|
Package board owns the GitHub Project board interactions for the ATDD pipeline driver. |
|
atdd/runtime/classify
Package classify is the fast-path ticket classifier for the ATDD pipeline driver.
|
Package classify is the fast-path ticket classifier for the ATDD pipeline driver. |
|
atdd/runtime/clauderun
Package clauderun shells out to the `claude` CLI to dispatch a named ATDD agent for the current phase, replacing v1's "pause and let the operator launch the agent in a second window" workflow.
|
Package clauderun shells out to the `claude` CLI to dispatch a named ATDD agent for the current phase, replacing v1's "pause and let the operator launch the agent in a second window" workflow. |
|
atdd/runtime/diagram
Package diagram renders the canonical Mermaid markdown for the ATDD process flow.
|
Package diagram renders the canonical Mermaid markdown for the ATDD process flow. |
|
atdd/runtime/driver
Package driver wires together the ATDD pipeline runtime: it loads the process-flow YAML, registers gates / actions / agents, applies override and verify decorators, and walks the named process end to end.
|
Package driver wires together the ATDD pipeline runtime: it loads the process-flow YAML, registers gates / actions / agents, applies override and verify decorators, and walks the named process end to end. |
|
atdd/runtime/gates
Bindings — Go implementations of every gateway `binding:` referenced in docs/atdd/process/process-flow.yaml.
|
Bindings — Go implementations of every gateway `binding:` referenced in docs/atdd/process/process-flow.yaml. |
|
atdd/runtime/intake
Package intake holds the deterministic markdown parser that replaces the four LLM-driven intake agents (atdd-story / atdd-bug / atdd-task / atdd-chore).
|
Package intake holds the deterministic markdown parser that replaces the four LLM-driven intake agents (atdd-story / atdd-bug / atdd-task / atdd-chore). |
|
atdd/runtime/override
Package override implements the per-step override-hook decorator.
|
Package override implements the per-step override-hook decorator. |
|
atdd/runtime/preflight
Package preflight validates that the consumer's gh-optivem.yaml maps onto a real on-disk layout before any ATDD agent or board work runs.
|
Package preflight validates that the consumer's gh-optivem.yaml maps onto a real on-disk layout before any ATDD agent or board work runs. |
|
atdd/runtime/release
Package release owns the end-of-cycle release mechanics for the ATDD pipeline driver: regex-remove `@Disabled`-style markers from in-scope test files, commit, and close the GitHub issue.
|
Package release owns the end-of-cycle release mechanics for the ATDD pipeline driver: regex-remove `@Disabled`-style markers from in-scope test files, commit, and close the GitHub issue. |
|
atdd/runtime/repolocator
Package repolocator turns a parsed projectconfig.Config into a map from repo slug → absolute local clone path.
|
Package repolocator turns a parsed projectconfig.Config into a map from repo slug → absolute local clone path. |
|
atdd/runtime/statemachine
Embed binds the canonical process-flow document into the statemachine package binary.
|
Embed binds the canonical process-flow document into the statemachine package binary. |
|
atdd/runtime/testselect
Package testselect computes the minimal-but-safe set of acceptance and contract tests to run after a driver-adapter change.
|
Package testselect computes the minimal-but-safe set of acceptance and contract tests to run after a driver-adapter change. |
|
atdd/runtime/trace
Package trace adds a per-node logging decorator to the engine, producing a chronological audit trail of every step the ATDD pipeline takes:
|
Package trace adds a per-node logging decorator to the engine, producing a chronological audit trail of every step the ATDD pipeline takes: |
|
atdd/runtime/verify
Bindings — per-node pre/post-condition checks.
|
Bindings — per-node pre/post-condition checks. |
|
compiler
Package compiler runs source-level compile sequences for one tier of a scaffolded project, dispatching by language.
|
Package compiler runs source-level compile sequences for one tier of a scaffolded project, dispatching by language. |
|
config
Package config provides CLI parsing, validation, and the Config struct.
|
Package config provides CLI parsing, validation, and the Config struct. |
|
files
Package files provides file manipulation helpers: replace, rename, walk.
|
Package files provides file manipulation helpers: replace, rename, walk. |
|
log
Package log provides colored logging helpers.
|
Package log provides colored logging helpers. |
|
pathx
Package pathx contains small cross-platform path helpers shared across packages that exec subprocesses.
|
Package pathx contains small cross-platform path helpers shared across packages that exec subprocesses. |
|
projectconfig
Package projectconfig loads the consumer repo's per-project configuration file at gh-optivem.yaml (project root).
|
Package projectconfig loads the consumer repo's per-project configuration file at gh-optivem.yaml (project root). |
|
runner
Package runner orchestrates docker-compose-backed system tests using two JSON config files: a system.json (compose + health probes) and a tests.json (setup commands + suites).
|
Package runner orchestrates docker-compose-backed system tests using two JSON config files: a system.json (compose + health probes) and a tests.json (setup commands + suites). |
|
shell
Package shell provides GitHub CLI wrapper and subprocess helpers.
|
Package shell provides GitHub CLI wrapper and subprocess helpers. |
|
spinner
Package spinner shows an animated liveness indicator for long-running waits where the duration is unknown.
|
Package spinner shows an animated liveness indicator for long-running waits where the duration is unknown. |
|
steps
Package steps implements the scaffold pipeline steps.
|
Package steps implements the scaffold pipeline steps. |
|
templates
Package templates provides template helpers: copy workflows, fixups.
|
Package templates provides template helpers: copy workflows, fixups. |
|
version
Package version provides build-time version information.
|
Package version provides build-time version information. |