Modules
Overview
The EAC module system provides independently buildable, testable units with explicit contracts, dependency management, and file ownership.
Key concepts:
- Modules - Independently buildable units with explicit identity and dependencies
- Components - Typed components within modules (go, typescript, dockerfile, etc.)
- Dependencies - Explicit declaration enables topological build ordering
- File Ownership - Each file claimed by exactly one module via glob patterns
Module definition (.eac/repository.yml):
modules:
- moniker: core
name: EAC Core Libraries
depends_on: [logging]
components:
- type: go
root: go/core
All modules are registered in .eac/repository.yml with dependencies, component types, and file ownership patterns.
Module Organization
28 modules organized into focused groups:
Core Framework
| Module | Type | Purpose | Location |
|---|---|---|---|
| core | go-library | Core utilities and libraries | go/core |
| clibase | go-library | CLI framework (Cobra integration, flags) | go/clibase |
| contracts | yaml | Contract schemas and definitions | contracts/ |
See: core.md, clibase.md
CLI Tools
| Module | Type | Purpose | Location |
|---|---|---|---|
| clie | go-cli | CLIE CLI application | go/cli/clie |
| eac | go-cli | EAC CLI application | go/cli/eac |
| eac-ext | clie-extension | EAC containerized extension | containers/eac-ext |
| eac-mcp-server | go-mcp | MCP server for AI tool integration | go/mcp |
See: eac.md, eac-ext.md, eac-mcp-server.md, clie-eac-bundle.md
Commands
The commands module contains 7 command components:
- base - Command infrastructure and shared utilities
- build - Build automation commands
- lint - Code quality and linting
- repository - Repository management
- scan - Security scanning
- test - Test execution
- update - Update and maintenance
Location: go/commands/
See: commands.md
Adapters
The adapters module contains 17 adapter components:
Test Frameworks: gotest, godog, mocha, pytest, behave, reqnroll, cucumber
Package Managers: npm, pip, nuget, dotnet
Infrastructure: docker, gh, ai, eac
Utilities: tui
Location: go/adapters/
See: adapters.md
Contracts
Contract schemas define interfaces between modules and external tools:
| Contract | Purpose | Version |
|---|---|---|
| ai-provider | AI provider integration interface | 0.1.0 |
| clie | CLIE CLI framework configuration | 0.1.0 |
| container-runtime | Container runtime interface | 0.1.0 |
| core | Core configuration and environment | 0.1.0 |
| docs | Documentation generation contracts | 0.1.0 |
| runner | Test runner interface | 0.1.0 |
| scanner | Security scanner interface | 0.1.0 |
| tui | Terminal UI component interface | 0.1.0 |
Location: contracts/
See: contracts.md
OCI Tools
Containerized development tools (12 container images):
| OCI Tool | Purpose | Registry |
|---|---|---|
| cgo-oci | C/Go cross-compilation | ghcr.io/ready-to-release/cgo-oci |
| dotnet-oci | .NET SDK | ghcr.io/ready-to-release/dotnet-oci |
| drawio-oci | Diagram rendering | ghcr.io/ready-to-release/drawio-oci |
| git-oci | Git tools | ghcr.io/ready-to-release/git-oci |
| go-oci | Go SDK | ghcr.io/ready-to-release/go-oci |
| gource-oci | Repository visualization | ghcr.io/ready-to-release/gource-oci |
| mermaid-oci | Mermaid diagrams | ghcr.io/ready-to-release/mermaid-oci |
| mkdocs-dev-oci | MkDocs dev server | ghcr.io/ready-to-release/mkdocs-dev-oci |
| mkdocs-render-oci | MkDocs rendering | ghcr.io/ready-to-release/mkdocs-render-oci |
| nginx-oci | NGINX server | ghcr.io/ready-to-release/nginx-oci |
| pdf-cli-oci | PDF generation | ghcr.io/ready-to-release/pdf-cli-oci |
| pdf-oci | PDF utilities | ghcr.io/ready-to-release/pdf-oci |
Location: containers/
See: oci-tools.md
Supporting Modules
| Module | Purpose | Location |
|---|---|---|
| repository | Repository management | repository/ |
| docs | Documentation generation | docs/ |
| templates | Project templates | templates/ |
| clie-eac-bundle | Release bundle packaging | bundle/ |
| cli-installers | CLIE installation | installers/ |
| vscode-commit | VS Code commit extension | vscode-commit/ |
| implicit-cli | Implicit CLI detection | implicit-cli/ |
Key Features
Component Types
Modules contain typed components that determine build behavior:
- go - Go packages with build/test support
- typescript - TypeScript/JavaScript with npm builds
- dockerfile - Multi-platform container builds
- book - MkDocs documentation sites
- pwsh / bash - Script validation
- gherkin / structurizr - Specifications and architecture
See: Component Types Reference
Dependency Management
Modules declare dependencies via depends_on in .eac/repository.yml. Build system uses topological sort to determine build order and supports incremental builds based on change detection.
Commands:
eac show dependencies # View dependency graph
eac validate dependencies # Validate no cycles
eac get changed-modules-ci # Detect changed modules
File Ownership
Each file is claimed by exactly one module via glob patterns:
Commands:
Module Lifecycle
- Discovery - Load from
.eac/repository.yml - Build - Topological build based on dependencies
- Test - Execute test suites with tag filtering
- Validation - Schema and dependency validation
- Release - Version tagging and changelog generation
See: Architecture: Modules for detailed lifecycle documentation.
Architecture Diagrams
Each module includes C4 architecture diagrams in Structurizr DSL format:
eac serve design # View all diagrams in browser
eac serve design --module core # View specific module
Design files: specs/{module}/.design/workspace.dsl
See: Viewing Architecture Diagrams
Related Documentation
- Architecture: Modules - Detailed module system architecture
- Architecture: Component Types - Component type specifications
- Architecture: Contracts - Contract system and schemas
- Commands Reference - CLI commands for working with modules
- Repository Layout - Directory structure and organization
Tutorials | How-to Guides | Explanation | Reference
You are here: Reference — information-oriented technical descriptions of the system.