main-spex 0.23.0

AI-first development framework that turns specifications into deterministic, verifiable code
# FAQ

## Which layout should I choose?

`spex init` asks which layout the project uses:

- `multi-repo`: every package is its own git repository under one project root folder, with a separate spex repository. Choose it when access should be granted per repository, as explained below.
- `single-repo`: the project is one git repository. The spex files live in its `spex/` folder, and `AGENTS.md`, `CLAUDE.md`, `.agents` and `.claude` in its root.
- `monorepo`: one git repository holding several packages, each listed in `spex.yaml` as a package. Laid out like `single-repo`.

## Why separate repositories?

A `multi-repo` project keeps every package as its own git repository under one shared folder, each named `<project-name>-<package-short-name>`:

```text
shopping-notes/             <- project root folder
  shopping-notes-spex/      <- specs, config, and contracts/
  shopping-notes-api/
  shopping-notes-frontend/
```

Each person — and each AI agent — gets access only to what they need. Because each package is its own git repository, access is granted per repository:

- A backend engineer gets access to `api`, not `frontend`.
- A frontend engineer gets access to `frontend`, not `api`.
- A contractor or AI agent scoped to one task gets only the packages that task touches.
- Everyone who needs to read or approve specs gets access to `spex`, without that granting access to any implementation.

A single repository or monorepo grants all-or-nothing access: anyone who can clone it sees every line of every service. Splitting the project into separate repositories under one project root keeps least privilege the default, so a leak, a compromised credential, or an over-eager agent is limited to a single repository instead of the whole project.