Project Structure

What choochoo init creates

Running choochoo init scaffolds a content directory with example files. By default it creates ./choochoo/docs, but you can change this with --dir.

Layout

choochoo/docs/
├── domains/              # Business domain definitions
├── teams/                # Team ownership metadata
├── agents/               # AI agent descriptions
├── data-products/        # Data Product definitions (ODPS)
├── data-contracts/       # Data Contract definitions (ODCS)
├── access-agreements/    # Data access agreements
├── schemas/              # Schema definitions
├── specifications/       # API and interface specs
├── workflows/            # Workflow definitions (Arazzo)
├── business-definitions/ # Business glossary terms
├── services/             # Service catalog entries
├── events/               # Event catalog entries
├── changelogs/           # Change history
└── agent-traces/         # Example trace records

Each directory contains example YAML files that you can edit or replace with your own content.

What goes where

DirectoryContainsValidated against
data-products/Product definitionsODPS schema
data-contracts/Contract definitionsODCS schema
agents/Agent descriptions—
workflows/API workflowsArazzo schema
schemas/Custom schemas—
OthersDocumentation and metadata—

Validation

Run choochoo validate against the content directory to check all files:

choochoo validate ./choochoo/docs

The validator auto-detects schema types from file content. See CLI Reference for details on detection rules.

File naming

  • Use lowercase letters, numbers, and hyphens only.
  • No spaces or special characters.
  • YAML (.yaml, .yml) and JSON (.json) are both supported.

ChooChoo also stores runtime data in the project root:

PathPurpose
.choochoo/traces.ndjsonAgent trace records

See Configuration for all paths and environment variables.

Next steps

On this page