The docs are split into two audiences. If you are using DOT to scaffold projects, start in docs/user/. If you are contributing to DOT or writing a plugin, start in docs/contributor/.
File
What it covers
contributor/architecture.md
Pipeline, flow engine, generator system, plugin system, .dot/ schemas
contributor/authoring-flows.md
Writing flow graphs: questions, branching, loops
contributor/authoring-generators.md
Writing generators: VirtualProjectState, Manifest, validators, semver
contributor/authoring-plugins.md
Writing plugins: injections, fragments, publishing
contributor/test-flow.md
End-to-end fixture testing with test-flow
Flow reference (docs/contributor/flows/)
One file per built-in flow. Each covers: question IDs, branching diagram, generator resolution, fixture examples.
Generator reference (docs/contributor/generators/)
One file per built-in generator. Each covers: answers consumed, files written, validators, commands.
Plugin reference (docs/contributor/plugins/)
One file per plugin. Each covers: plugin ID, injections (target, kind, question IDs), generators contributed, ResolveExtras logic.
Copy these when adding new items. Each contains inline instructions (<!-- HTML comments -->) and _placeholder_ values. Delete the instruction header and replace all placeholders before committing.
These rules keep the docs accurate as the codebase evolves.
When to create a new file
Trigger
Action
New generator in generators/
Create docs/contributor/generators/<name>.md (from template) + update table above
New plugin in plugins/ or examples/
Create docs/contributor/plugins/<name>.md (from template) + update table above
New flow in flows/
Create docs/contributor/flows/<id>.md (from template) + update table above
New CLI command
Add to docs/user/cli-reference.md
New major subsystem
Add a section to docs/contributor/architecture.md
Which code changes require a doc update
Change
Required update
New CLI command or flag
docs/user/cli-reference.md
New flow
docs/contributor/flows/<id>.md + test fixture
Flow question IDs change
docs/contributor/flows/<id>.md + affected fixtures
New question type
docs/contributor/authoring-flows.md + architecture.md
New injection kind
docs/contributor/authoring-plugins.md
New exported type in pkg/dotapi or pkg/dotplugin
authoring-generators.md or authoring-plugins.md
Generator manifest fields change
docs/contributor/generators/<name>.md
Plugin injection IDs change
docs/contributor/plugins/<name>.md + affected fixtures
Pipeline step added/removed
docs/contributor/architecture.md
.dot/ schema changes
docs/contributor/architecture.md (spec/manifest sections)
New test-flow flag
docs/contributor/test-flow.md
Install/uninstall mechanism changes
docs/user/getting-started.md
Setup script changes
docs/contributor/getting-started.md
One PR = one unit of documentation. If a PR adds a flow, the flow doc and fixture are part of the same PR.
Keep docs close to the code they describe. A manifest change and its generator doc update go in the same commit.
Prefer examples over prose. A code snippet is worth 10 sentences.
No placeholder "TODO" paragraphs. Either document it or leave the section out.
Who updates docs: whoever writes the code. There is no separate documentation pass.