Steergen is a CLI for maintaining a single set of steering and constitution documents in your repository, then converting that corpus into the formats expected by spec-driven development tools such as Speckit and Kiro.
The point of the tool is to let you switch between downstream tools without having to manually reconcile multiple copies of the same guidance.
The examples below are intended as a guide to using the tool in everyday work:
- initialize a repo for one or more targets
- write steering docs in Markdown
- run generation
- validate or regenerate whenever the source docs change
For the full onboarding flow, use the Getting Started guide on the wiki:
dotnet tool install --global aabs.steergenInitialize a repository for the targets you want to generate:
steergen init . --target kiro --target copilot-agentThat creates:
steering/global/steering/project/steergen.config.yaml- target-native output folders for the selected targets
Add a steering document under steering/global/ or steering/project/.
Example:
---
id: engineering-baseline
title: Engineering Baseline
---
# Engineering Baseline
:::rule id="CORE-001" severity="error" category="quality" domain="core"
Prefer small, composable changes that are easy to review and easy to revert.
:::
:::rule id="CORE-002" severity="warning" category="testing" domain="core"
Add or update automated tests when behaviour changes.
:::Generate outputs:
steergen runValidate source documents without generating:
steergen validateIf steergen.config.yaml is present in the current directory, run and validate will discover it automatically.
Generate for a single target:
steergen run --target kiroGenerate under an explicit output base:
steergen run --output .steergen/outValidate explicit source roots:
steergen validate --global steering/global --project steering/projectInspect the resolved model as JSON:
steergen inspect --global steering/global --project steering/projectAdd or remove registered targets later:
steergen target add speckit
steergen target remove kiroSteergen currently includes built-in support for:
kirospeckitcopilot-agentkiro-agent
The exact generated folder layout is target-specific. steergen init bootstraps the expected target folders, and steergen run writes output using the selected target's built-in layout.
steergen init [project-root] [--target <id>...]
steergen run [--config <path>] [--global <dir>] [--project <dir>] [--output <dir>] [--target <id>...]
steergen validate [--config <path>] [--global <dir>] [--project <dir>]
steergen inspect [--global <dir>] [--project <dir>]
steergen target add <id>
steergen target remove <id>
steergen update [--version <version>] [--preview]The README stays focused on basic usage. For deeper material:
- Getting started and setup walkthrough: https://github.com/aabs/steergen/wiki/Getting-Started
- Developer guide: docs/development/how-steergen-works.md
- Code tour: docs/development/end-to-end-pipeline.tour
For automation, the most useful commands are:
steergen validate
steergen run --output .steergen/outvalidate exits non-zero on document errors. run can write a deterministic generation manifest alongside output artefacts when an explicit output base is used.