Documentation
¶
Overview ¶
aggregate_commands.go wires the bare `gh optivem test` aggregate verb — the for-all counterpart to the bare `compile` aggregate (compile_commands.go).
`test` is no longer a tier (that ambiguity is resolved by the `system-test` / `component-test` level nouns — plan 20260624-1221). The bare word is now the run-everything verb: it runs every test level in cheap→expensive pyramid order, halting on first failure —
component-test suites → system start → system-test run → system stop
and manages the system lifecycle itself by default. CI, which already starts and stops the system explicitly around its acceptance stage, opts out of the start/stop with --assume-running so the aggregate does not double-manage the system. Bare = for-all, qualified (`system-test` / `component-test`) = scoped: the `make` / `make test` mental model. Bare `compile` has no lifecycle analog — it is a pure source build, so it carries no such flag.
architecture_commands.go wires the `gh optivem architecture` parent and its children. Mirrors `process_commands.go` — same "view, don't generate" principle: consumers and CI alike read the same artifact gh-optivem produces, with no per-repo tooling.
gh optivem architecture show # render the Mermaid architecture diagram gh optivem architecture show > docs/architecture-diagram.md
The rendered output describes the layered ATDD architecture every scaffolded student repo follows. Keeping the canonical copy in gh-optivem's `docs/` (alongside `docs/process-diagram.md`) avoids drift between scaffolded repos and the source-of-truth template.
branch_commands.go wires the `gh optivem branch` subtree. Encapsulates the Scaled-TBD branch primitives documented in docs/tbd.md so the operator runs one command instead of three. Today the only child is `start <name>`, which freshens local `main` against origin before forking the new branch — preventing the common foot-gun of branching off a stale local `main`.
branch_refresh.go wires the `gh optivem branch refresh` subcommand. It encapsulates the Scaled-TBD "main moved while my PR was open" ritual from docs/tbd.md:75-81 — fetch origin, rebase the current feature branch onto origin/main, then push with --force-with-lease.
--force-with-lease is hardcoded; plain --force is not exposed so the operator cannot accidentally pick the unsafe variant. The command also refuses to run on `main` — refresh is for feature branches only.
claude_commands.go implements `gh optivem claude` subcommands for managing Claude Code commands and configuration globally.
install — writes embedded command files to ~/.claude/commands/ configure — merges embedded settings.json and CLAUDE.md into ~/.claude/ non-destructively setup — runs install then configure check — reports drift between embedded assets and ~/.claude/ (read-only)
cleanup_commands.go wires the `gh optivem cleanup <verb>` subtree. The cleanup noun spans bulk-destructive operations against remote systems (GitHub releases/packages/repos, SonarCloud projects). The Go ports replace the bash scripts in academy/github-utils/scripts/ — see plans/20260514-0914-migrate-workspace-scripts-to-gh-optivem.md.
The DRY_RUN env var idiom from bash becomes a `--dry-run` flag here (consistent with the rest of gh-optivem). Each subcommand pre-flights `gh api rate_limit` before each destructive call via internal/shell.
compile_commands.go wires the bare `gh optivem compile` aggregate verb and the tier-level helpers (compileSystem, compileComponentTests, compileSystemTests, monolithTier, loadProjectConfigOrExit) shared with the noun-scoped forms (`gh optivem system compile` in system_commands.go, `gh optivem component-test compile` in component_commands.go, and `gh optivem system-test compile` in test_commands.go).
Naming: `compile` is source-level build (dotnet build / gradlew compileJava / npx tsc). `build` is reserved for `docker compose build` (system_commands.go, under the `system` noun). The two are distinct enough to coexist; they must not be conflated.
`compile` is a bare "for-all" aggregate verb (no parent noun): it spans every tier, running `system compile` → `component-test compile` → `system-test compile` in sequence, halting on first failure. Bare = for-all, qualified = scoped — the `make` / `make test` mental model. This shortcut is the dominant use case (the structural-cycle compile_all action shells out to it as a single command). Same category as `gh browse` / `gh status` in gh's own surface: cross-resource, no single noun to slot under. The noun-scoped forms stay available for scoped local use.
compile_summary.go collects per-tier outcomes during a `gh optivem compile` run and prints a compact tail summary, so the user can scan success/failure without scrolling the (often long) compile output.
One row per `compiler.Compile` call (i.e. per tier). Per-command timing inside the compiler package is deliberately not threaded through — the compile_commands.go level is the right granularity, and keeping the `compiler` package's `error`-only API intact preserves its testable seam.
component_commands.go wires the `gh optivem component-test <verb>` subtree — the component-test pyramid level. It is a flat sibling of `gh optivem system-test` (test_commands.go), NOT nested under a `component` noun: `component-test` and `system-test` are parallel test-pyramid *levels* (like unit / integration / e2e), each carrying the same `run | setup | compile` verb set. Component-level tests are in-process, white-box, with no running system; system tests drive a deployed system (compose, channels, external stub/real) from outside. Keeping the two level namespaces flat and symmetric is exactly the taxonomy plan 20260624-1221 establishes.
Working-dir contract: every verb runs against the user's cwd and discovers the components from the active gh-optivem.yaml — monolith system.path, or multitier system.backend.path / system.frontend.path. Each component carries its own component-tests.yaml (by convention, in the component directory), holding its setup / compile / suite commands. An alternate gh-optivem.yaml is selected via --config / -c.
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 implement`.
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 gh optivem config preflight — validate + check on-disk layout exists gh optivem config migrate — back-fill required fields onto a pre-schema-bump config
`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.
cross_repo_commands.go wires the cross-repo verbs that live at the root of `gh optivem` — commit, sync, actions status, rate-limit, and the hidden TBD-discipline reports (lint-history, stale-branches).
The verbs share the same scope-resolution cascade (workspace.Resolve in internal/workspace): when a *.code-workspace file is reachable, every declared folder is iterated; otherwise the scope shrinks to the CWD's git repo. The resolved scope is announced on every invocation via the "Mode: …" banner so the operator always sees what's about to happen.
The --workspace flag is registered at root (main.go); its value lands in workspaceFlagValue below and is passed to workspace.Resolve as the highest-priority cascade input.
doctor_commands.go wires the `gh optivem doctor` command. It verifies local state invariants the rest of the binary depends on:
- global git config keys docs/tbd.md requires for trunk-based development (the original scope; --fix sets them).
- orphan claude.exe subprocesses left behind by crashed `gh optivem implement` runs, surfaced via --orphans and recovered from the per-dispatch PID markers internal/userstate owns. See doctor_orphans.go for the recovery logic.
Broader repo-health checks belong in their own command; this one stays focused on "the things gh-optivem itself needs in order to work."
doctor_orphans.go adds the `gh optivem doctor --orphans` recovery path: scan the user-level state dir for PID marker files left behind by crashed `gh optivem implement` runs, classify each as stale / live-dispatch / orphan, and prompt the operator to kill the orphans.
The PID marker schema and the state-dir resolver are owned by internal/userstate so the runtime writer side (driver, clauderun) and this reader side share one source of truth.
environment_commands.go wires the `gh optivem environment` subtree. The `environment` noun owns read-only operations on the local shell environment the gh-optivem CLI reads from — credentials and other inputs alike (e.g. DOCKERHUB_USERNAME is an account name, not a token, but is still required from the environment).
gh optivem environment show — print each env var, with token values
masked, so you can confirm what your
shell is exporting without leaking the
secret to terminal scrollback.
gh optivem environment verify — check every credential and required
local tool (gh CLI auth, actionlint),
returning non-zero on any missing or
rejected value.
`verify` is designed to be invoked from a CI preflight job so a single broken input surfaces once, before a scaffolding matrix fans out and burns runner minutes failing the same way N times. `show` is the local counterpart — judgment-free output for humans debugging their setup.
hooks_commands.go wires the `gh optivem hooks` subtree. Today the only child is `install`, which drops a pre-push hook into the current repo that refuses non-fast-forward pushes to `main`. Belt-and-suspenders for the "never force-push main" rule (docs/tbd.md) — the in-tool guard in workspace_commands.go covers tool-mediated pushes; the hook covers raw `git push --force` invocations the tool never sees.
implement_commands.go wires the `gh optivem implement` subcommand into the root Cobra command. The `implement` verb walks the configured pipeline against a specific issue identified by --issue.
gh optivem implement --issue 42 # walk the pipeline for a specific issue
The handler is deliberately thin: it translates Cobra flags into internal/atdd/runtime/* calls and surfaces their errors via exitOnError (defined in runner_helpers.go) for consistency with the rest of the `optivem` binary.
Why "implement" as a top-level verb (not under a methodology noun): the pipeline orchestrated here is the stable concept; *which* methodology runs (ATDD today, TDD/DDD or compositions later) is configuration read from `gh-optivem.yaml` (process_flow:, task_prompts:, node_extras:, node_replacements:). Hoisting `implement` to the root keeps the muscle memory ("implement an issue") even when a second methodology lands.
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 typescript
output_commands.go wires the `gh optivem output <verb>` subtree. The output noun is the structured-output channel between an ATDD agent (running under `claude` in a dispatched subprocess) and the gh-optivem dispatcher. The agent calls `gh optivem output write KEY=VALUE` from its `Bash` tool to emit a value the dispatcher then reads back from a per-invocation JSONL file. Replaces the older prose-YAML channel that could not cross the interactive-mode TTY boundary.
Two env vars drive the channel; both are exported by the dispatcher before launching `claude`:
- GH_OPTIVEM_OUTPUT_FILE — absolute path to the JSONL file. Each `write` invocation appends one JSON object as a single line.
- GH_OPTIVEM_OUTPUT_KEYS — comma-separated allow-list with types, shape `key1:type1,key2:type2,...`. Derived from the call-activity's BPMN `outputs:` list. Any unknown key or coercion failure exits non-zero so the agent sees the error mid-run.
Types: `string`, `bool`, `string-list` (comma-split). Coercion is self-contained in this file — there is no shared Go table; the BPMN declaration is the single source of truth, and the dispatcher hands the per-invocation slice in via the env var.
pr_commands.go wires the `gh optivem pr <verb>` subtree. The pr noun wraps `gh pr` with TBD-discipline defaults: squash- or rebase-merges only, never a merge commit on main. See plans/20260514-2043-tbd-discipline-in- workspace-tool.md (Layer 3, item 10) and docs/tbd.md for the linear-trunk invariant this enforces.
preflight_helpers.go builds the wired-up preflight.Options the cobra layer passes to preflight.Run. Both `gh optivem implement` and `gh optivem config preflight` go through this helper so the two surfaces share one definition of "what real remote checks does preflight run" — adding or removing a remote check class touches one place, not two.
Token requirements:
- GitHub: relies on whatever auth `gh` CLI is already configured with (`gh auth login` or $GH_TOKEN / $GITHUB_TOKEN). No extra plumbing.
- SonarCloud: the live org/project checks need $SONAR_TOKEN; they are wired only when it (and cfg.Sonar.Organization) is present.
- The full required credential set is presence-checked via opts.MissingEnvVars, so every missing var (SONAR_TOKEN included) surfaces together in preflight.Run's aggregated failure block rather than one-at-a-time.
process_commands.go wires the `gh optivem process` parent and its children. The intent is the "view, don't generate" principle: consumers and CI alike can read the same artifact gh-optivem produces, with no per-repo tooling.
gh optivem process show # render the Mermaid process-flow diagram gh optivem process show > docs/process-diagram.md gh optivem process scope # list every phase's allowed-paths layers gh optivem process scope AT_RED_TEST # one phase, resolved against gh-optivem.yaml
`process` is a noun group, not a methodology namespace. The artifact described (the configured process flow) belongs to *the process*, not to *the methodology* — keeping it grouped under `process` ages better when TDD/DDD or compositions land, and matches the existing noun-first surface (`system`, `test`, `config`, `environment`).
run_commands.go wires the `gh optivem run` parent and its children. `run` is the noun group for per-pipeline-run artefacts produced under .gh-optivem/runs/<ts>/ — a dispatcher per-prompt log, the streamed claude events JSONL, the agent's declared-outputs JSONL, and the per-dispatch agent-summary sidecar. The first child, `summary`, replays any run's agent-summary table from its sidecar.
gh optivem run summary # most recent run gh optivem run summary 20260528-150000 # a specific run
`run` is grouped under "Other" — a diagnostic-noun verb, not a project op (no gh-optivem.yaml is touched) and not a cross-repo op (it reads only the local cwd's .gh-optivem/runs/ tree).
runner_helpers.go holds the cross-cutting helpers used by the runner-tier commands. The command wiring itself lives in `system_commands.go` and `test_commands.go` — split per the noun-first surface (`gh optivem system <verb>` / `gh optivem system-test <verb>`). The runner package is fully agnostic — these helpers translate Cobra flags into runner.* calls and resolve config paths against gh-optivem.yaml.
Working-dir contract: each command operates against the user's current working directory. A gh-optivem.yaml is required; its system.config: / system-test.config: fields drive path resolution. An alternate gh-optivem.yaml can be selected via --config / -c.
system_commands.go wires the `gh optivem system <verb>` subtree. The system noun spans the lifecycle verbs that operate on the scaffolded project's running containers (build, start, stop, clean) plus the source-level system tier compile.
Working-dir contract: every command runs against the user's cwd and reads the systems config path from gh-optivem.yaml's system.config: field (legacy `.json` files still resolve via the loader's extension dispatch). An alternate gh-optivem.yaml can be selected via --config / -c. Missing gh-optivem.yaml or empty system.config: are hard errors. Helpers live in runner_helpers.go.
test_commands.go wires the `gh optivem system-test <verb>` subtree — the system-test pyramid level. The system-test noun owns the level's lifecycle verbs: `run` against an already-running system, `setup` for harness preparation, and `compile` for the system-test source build. It is the flat sibling of `component-test` (component_commands.go); the two parallel `*-test` level nouns share the same `run | setup | compile` verb set.
NOTE: the bare top-level `test` is no longer this tier — it is the for-all aggregate verb (aggregate_commands.go) that runs every test level in pyramid order. The system-test level is addressed only as `gh optivem system-test`.
Working-dir contract: every command runs against the user's cwd and reads the tests config path from gh-optivem.yaml's system-test.config: field (legacy `.json` files still resolve via the loader's extension dispatch). An alternate gh-optivem.yaml can be selected via --config / -c. Missing gh-optivem.yaml or empty system-test.config: are hard errors. Helpers live in runner_helpers.go.
Source Files
¶
- aggregate_commands.go
- architecture_commands.go
- branch_commands.go
- branch_refresh.go
- claude_commands.go
- cleanup_commands.go
- compile_commands.go
- compile_summary.go
- component_commands.go
- config_commands.go
- cross_repo_commands.go
- doctor_commands.go
- doctor_orphans.go
- doctor_orphans_unix.go
- environment_commands.go
- hooks_commands.go
- implement_commands.go
- main.go
- output_commands.go
- pr_commands.go
- preflight_helpers.go
- process_commands.go
- run_commands.go
- runner_helpers.go
- system_commands.go
- test_commands.go
Directories
¶
| Path | Synopsis |
|---|---|
|
internal
|
|
|
atdd
Package atdd hosts ATDD doctrinal allowlists that sit outside the runtime subtree.
|
Package atdd hosts ATDD doctrinal allowlists that sit outside the runtime subtree. |
|
atdd/assets
Package assets exposes the embedded asset tree for the ATDD process.
|
Package assets exposes the embedded asset tree for the ATDD process. |
|
atdd/process
Package process holds the concrete ATDD/BPMN process definition that the generic engine loads via its LoadBytes contract.
|
Package process holds the concrete ATDD/BPMN process definition that the generic engine loads via its LoadBytes contract. |
|
atdd/process/actions
fix_progress.go — no-progress guard for the verify-tests-pass fix loop.
|
fix_progress.go — no-progress guard for the verify-tests-pass fix loop. |
|
atdd/process/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/process/configcheck
Package configcheck holds the one project-config validation rule that needs engine knowledge: the `task-prompts:` keys must name MID tasks the embedded process-flow actually declares.
|
Package configcheck holds the one project-config validation rule that needs engine knowledge: the `task-prompts:` keys must name MID tasks the embedded process-flow actually declares. |
|
atdd/process/gates
Bindings — Go implementations of every gateway `binding:` referenced in internal/atdd/process/process-flow.yaml.
|
Bindings — Go implementations of every gateway `binding:` referenced in internal/atdd/process/process-flow.yaml. |
|
atdd/process/verify
Bindings — per-node pre/post-condition checks.
|
Bindings — per-node pre/post-condition checks. |
|
atdd/runtime/agents
Package agents resolves the agent layer of a process: the per-role prompt bodies a user-task dispatches, their model/effort tuning, plus the registry that maps YAML `agent:` names to NodeFn dispatchers.
|
Package agents resolves the agent layer of a process: the per-role prompt bodies a user-task dispatches, their model/effort tuning, plus the registry that maps YAML `agent:` names to NodeFn dispatchers. |
|
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/intake
Package intake holds the deterministic markdown parser that replaces the three LLM-driven intake agents (atdd-story / atdd-bug / task).
|
Package intake holds the deterministic markdown parser that replaces the three LLM-driven intake agents (atdd-story / atdd-bug / task). |
|
atdd/runtime/outlog
Package outlog provides level-tagged byte-stream multiplexing for the ATDD runtime.
|
Package outlog provides level-tagged byte-stream multiplexing for the ATDD runtime. |
|
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 and a real remote setup 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 and a real remote setup 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: commit and close the GitHub issue.
|
Package release owns the end-of-cycle release mechanics for the ATDD pipeline driver: 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/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/tracker
Package tracker is the seam between the ATDD pipeline driver and the concrete issue-tracker backend (GitHub Projects today, markdown files for the local/offline path, Jira tomorrow).
|
Package tracker is the seam between the ATDD pipeline driver and the concrete issue-tracker backend (GitHub Projects today, markdown files for the local/offline path, Jira tomorrow). |
|
atdd/runtime/tracker/factory
Package factory wires projectconfig.Project values to concrete tracker.Tracker adapters.
|
Package factory wires projectconfig.Project values to concrete tracker.Tracker adapters. |
|
atdd/runtime/tracker/github
Package github implements tracker.Tracker against GitHub Projects v2.
|
Package github implements tracker.Tracker against GitHub Projects v2. |
|
atdd/runtime/tracker/internal/parse
Package parse holds the shared markdown helpers the github and markdown tracker adapters use to source an Issue.Title from a body — currently just FirstH1.
|
Package parse holds the shared markdown helpers the github and markdown tracker adapters use to source an Issue.Title from a body — currently just FirstH1. |
|
atdd/runtime/tracker/markdown
Package markdown implements tracker.Tracker against a local board laid out as a tree of `<board>/<status>/<id>.md` files.
|
Package markdown implements tracker.Tracker against a local board laid out as a tree of `<board>/<status>/<id>.md` files. |
|
build
Package build is the documentation marker for the shared build module: the home of the project's compile and system-test execution machinery.
|
Package build is the documentation marker for the shared build module: the home of the project's compile and system-test execution machinery. |
|
build/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. |
|
build/componenttest
Package componenttest loads and runs component-level test suites declared in a per-component component-tests.yaml.
|
Package componenttest loads and runs component-level test suites declared in a per-component component-tests.yaml. |
|
build/runner
Package runner orchestrates docker-compose-backed system tests using two YAML config files (with legacy JSON fallback): a systems.yaml (compose + health probes) and a tests.yaml (setup commands + suites).
|
Package runner orchestrates docker-compose-backed system tests using two YAML config files (with legacy JSON fallback): a systems.yaml (compose + health probes) and a tests.yaml (setup commands + suites). |
|
claude/assets
Package assets exposes the embedded asset tree for Claude Code setup.
|
Package assets exposes the embedded asset tree for Claude Code setup. |
|
config
Package config provides CLI parsing, validation, and the Config struct.
|
Package config provides CLI parsing, validation, and the Config struct. |
|
config/configinit
Package configinit owns the shared "produce a gh-optivem.yaml" code path.
|
Package configinit owns the shared "produce a gh-optivem.yaml" code path. |
|
config/optivemyaml
Package optivemyaml builds a projectconfig.Config (the gh-optivem.yaml schema) from an init config.Config, and writes it to disk.
|
Package optivemyaml builds a projectconfig.Config (the gh-optivem.yaml schema) from an init config.Config, and writes it to disk. |
|
devworkflow/ghbulk
Package ghbulk ports the paginated bulk-delete helpers from github-utils/scripts/{delete-releases,delete-packages,delete-repos}.sh.
|
Package ghbulk ports the paginated bulk-delete helpers from github-utils/scripts/{delete-releases,delete-packages,delete-repos}.sh. |
|
devworkflow/sonar
Package sonar wraps the SonarCloud REST endpoints the cleanup command uses (api/projects/search, api/projects/delete).
|
Package sonar wraps the SonarCloud REST endpoints the cleanup command uses (api/projects/search, api/projects/delete). |
|
devworkflow/workspace
Package workspace resolves the cross-repo scope for a command invocation.
|
Package workspace resolves the cross-repo scope for a command invocation. |
|
diagrams/architecture
Package architecture renders the canonical Mermaid markdown for the ATDD layered-architecture diagram.
|
Package architecture renders the canonical Mermaid markdown for the ATDD layered-architecture diagram. |
|
diagrams/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. |
|
engine/statemachine
Package statemachine is a generic, BPMN-shaped process engine: a hand-coded graph traversal that walks a process definition node-by-node, dispatching service tasks, user-task agents, and gateways through pluggable registries.
|
Package statemachine is a generic, BPMN-shaped process engine: a hand-coded graph traversal that walks a process definition node-by-node, dispatching service tasks, user-task agents, and gateways through pluggable registries. |
|
expand
Package expand provides the shared ${name} placeholder substitution primitive used by ATDD agent-prompt rendering (clauderun): a flat name→value map is substituted into the prompt body, with a guardrail that catches missing keys.
|
Package expand provides the shared ${name} placeholder substitution primitive used by ATDD agent-prompt rendering (clauderun): a flat name→value map is substituted into the prompt body, with a guardrail that catches missing keys. |
|
kernel/approval
Package approval resolves the operator's global auto-approve policy (--auto + --confirm=<tier>) and gates every y/n confirmation against it.
|
Package approval resolves the operator's global auto-approve policy (--auto + --confirm=<tier>) and gates every y/n confirmation against it. |
|
kernel/cmdctx
Package cmdctx threads the resolved auto-approve policy from the root command's PersistentPreRunE down to every Cobra subcommand's Run via a typed context key.
|
Package cmdctx threads the resolved auto-approve policy from the root command's PersistentPreRunE down to every Cobra subcommand's Run via a typed context key. |
|
kernel/gitignore
Package gitignore provides a helper to idempotently ensure a line is present in a repo's .gitignore.
|
Package gitignore provides a helper to idempotently ensure a line is present in a repo's .gitignore. |
|
kernel/log
Package log provides colored logging helpers.
|
Package log provides colored logging helpers. |
|
kernel/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. |
|
kernel/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). |
|
kernel/promptio
Package promptio centralises every human y/n decision the CLI surfaces.
|
Package promptio centralises every human y/n decision the CLI surfaces. |
|
kernel/shell
Package shell provides GitHub CLI wrapper and subprocess helpers.
|
Package shell provides GitHub CLI wrapper and subprocess helpers. |
|
kernel/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. |
|
kernel/version
Package version provides build-time version information.
|
Package version provides build-time version information. |
|
scaffolding
Package scaffolding is the documentation marker for the scaffolding module: the machinery that materializes a new project from templates.
|
Package scaffolding is the documentation marker for the scaffolding module: the machinery that materializes a new project from templates. |
|
scaffolding/files
Package files provides file manipulation helpers: replace, rename, walk.
|
Package files provides file manipulation helpers: replace, rename, walk. |
|
scaffolding/steps
Package steps implements the scaffold pipeline steps.
|
Package steps implements the scaffold pipeline steps. |
|
scaffolding/templates
Package templates provides template helpers: copy workflows, fixups.
|
Package templates provides template helpers: copy workflows, fixups. |
|
userstate
Package userstate owns the user-level gh-optivem state directory and the schemas of the small files written there.
|
Package userstate owns the user-level gh-optivem state directory and the schemas of the small files written there. |