This repository is a reference implementation of AI Agent-friendly software engineering practices.
Its purpose is to demonstrate how repository structure, explicit contracts, architecture rules, and executable verification can improve collaboration between humans and coding agents.
Before making a change:
- Identify the affected area.
- Read
.agents/architecture.mdfor system boundaries. - Read
.agents/playbook.mdfor the expected engineering workflow. - Read any relevant file under
contracts/. - Inspect the current implementation and tests before making assumptions.
For architectural changes, also inspect relevant ADRs under docs/decisions/.
apps/— runnable applications.packages/— reusable application or domain packages.migrations/— versioned database schema changes.tests/— repository-level and cross-module tests..agents/— concise Agent-oriented engineering context.contracts/— stable engineering constraints.docs/decisions/— significant architecture decisions..github/— contribution and CI workflows.
Prefer authoritative, executable sources over descriptive documentation.
In general:
- source code and tests;
- schemas, migrations, specifications, and generated contracts;
- repository configuration;
- engineering documentation.
Documentation explains intent and constraints but MUST NOT be used to override the actual implementation or machine-readable contract.
If documentation and implementation disagree, identify the inconsistency rather than silently choosing one.
- Keep changes minimal and coherent.
- Do not introduce unrelated refactoring.
- Do not silently break public contracts.
- Do not manually edit generated artifacts.
- Preserve architectural dependency boundaries.
- Add or update tests when observable behavior changes.
- Use versioned migrations for persistent schema changes.
- Do not modify released migrations in place.
- Record significant architectural decisions as ADRs when appropriate.
Before considering a change complete, run:
make checkIf the full check cannot be completed, clearly report what was and was not verified.
Before finishing:
- inspect the final diff;
- remove unrelated changes;
- confirm affected contracts remain valid;
- update
CHANGELOG.mdwhen the change is notable; - add or update an ADR when a significant architectural decision was made.