This document outlines the structure of the Ferrous Forge repository and explains where different types of files belong.
├── Cargo.toml # Rust package manifest
├── Cargo.lock # Dependency lock file
├── justfile # Task runner commands
├── README.md # Main project documentation
├── VISION.md # Project vision and philosophy
├── ROADMAP.md # Development roadmap
├── FEATURES.md # Feature status tracking
├── CHANGELOG.md # Version history
├── CONTRIBUTING.md # Contribution guidelines
├── CODE_OF_CONDUCT.md # Community standards
├── SECURITY.md # Security policy
├── CONTRIBUTORS.md # List of contributors
├── LICENSE-MIT # MIT license
├── LICENSE-APACHE # Apache 2.0 license
├── .gitignore # Git ignore rules
├── .gitattributes # Git attributes
└── rust-toolchain.toml # Rust toolchain specification
src/
├── main.rs # Binary entry point
├── lib.rs # Library root
├── cli.rs # CLI argument parsing
├── error.rs # Error types
├── commands/ # Command implementations
│ ├── mod.rs # Command module root
│ ├── init.rs # Init command
│ ├── validate.rs # Validate command
│ ├── fix.rs # Fix command
│ ├── config.rs # Config commands
│ ├── safety/ # Safety pipeline commands
│ ├── rust/ # Rust management commands
│ ├── edition/ # Edition management commands
│ └── template/ # Template commands
├── config/ # Configuration system
│ ├── mod.rs
│ ├── hierarchy/ # Hierarchical config
│ └── locking/ # Config locking
├── validation/ # Validation engine
├── templates/ # Template system
├── git_hooks/ # Git hook scripts
├── rust_version/ # Rust version management
└── ...
docs/
├── dev/ # Development documentation
│ ├── adr/ # Architecture Decision Records
│ └── specs/ # Technical specifications
├── rust-ecosystem-guide.md # New to Rust guide
├── installation.md # Installation guide
├── configuration.md # Configuration guide
├── standards.md # Standards reference
├── integration.md # Integration guide
├── troubleshooting.md # Troubleshooting
├── migration.md # Migration guide
├── USER_STORIES.json # User stories
└── RUSTDOC-STANDARDS.md # Documentation standards
tests/
├── integration_tests.rs # Integration tests
├── fixtures/ # Test fixtures
└── snapshots/ # Test snapshots
.github/
├── workflows/ # GitHub Actions
│ ├── ci.yml # CI workflow
│ ├── release.yml # Release workflow
│ └── update-packages.yml # Package manager updates
├── ISSUE_TEMPLATE/ # Issue templates
│ ├── config.yml # Issue template config
│ ├── bug_report.md # Bug report template
│ └── feature_request.md # Feature request template
├── PULL_REQUEST_TEMPLATE.md # PR template
└── dependabot.yml # Dependabot configuration
templates/
├── cli-app/ # CLI application template
├── library/ # Library template
├── wasm/ # WebAssembly template
├── embedded/ # Embedded template
├── web-service/ # Web service template
├── plugin/ # Plugin template
└── workspace/ # Workspace template
packaging/
├── homebrew/ # Homebrew formula
├── aur/ # Arch Linux PKGBUILD
├── nix/ # Nix derivation
└── chocolatey/ # Chocolatey package
editors/
└── vscode/ # VS Code extension
├── package.json
├── src/
└── README.md
Generated during CI/CD:
target/
├── debug/ # Debug builds
├── release/ # Release builds
├── doc/ # Generated documentation
└── ...
.cleo/ # CLEO task management
.forge/ # Forge configuration (test projects)
- Add to
src/commands/<name>.rs - Register in
src/commands/mod.rs - Add to CLI in
src/cli.rs - Add tests in
tests/or inline
- Architecture decisions →
docs/dev/adr/ - Technical specs →
docs/dev/specs/ - User guides →
docs/root - API docs →
///comments in source
- Create directory in
templates/<name>/ - Add
manifest.toml - Add template files
- Register in template registry
- Add to
.github/workflows/ - Follow naming convention:
<purpose>.yml - Update this document
- Rust files:
snake_case.rs - Markdown files:
UPPERCASE.mdfor top-level,lowercase.mdfor docs - Directories:
lowercaseorkebab-case - Templates:
lowercasewith descriptive names - Tests:
test_<name>.rsor<module>_tests.rs
- Never edit
README.mddirectly — it's generated fromlib.rsbycargo-rdme - Never edit
Cargo.lockmanually — managed by Cargo - Always run
cargo fmtbefore committing - Always run
cargo clippyand fix warnings - Keep ADRs in
docs/dev/adr/up to date - Update
CHANGELOG.mdfor user-facing changes