Files a checkout carries
Project identity and Toolkit pin
Commit .foundry/project.toml. Init creates identity and pins the verified Toolkit. Keep the shared identity across clones. The example below comes from this repository. Use your generated identity and digest.
schema_version = 2
project_id = "project_24a65729-12e3-460e-bc96-25d51eaebd9b"
publication_root = "foundry"
minimum_cli_version = "2.0.0"
toolkit_version = "2.0.0"
toolkit_digest = "sha256:82cd76b4e1c0885ff045d059edad03408c3295c8cf7b21c3fc32b69b7bab5cf5"Price list
Commit .foundry/pricing.json. Each rate is microdollars per million tokens. One dollar equals one million microdollars. The engine pins the snapshot for each run. Doctor compares rates with the CLI’s published table.
{
"schemaVersion": 1,
"capturedAt": "2026-09-09T00:00:00.000Z",
"rates": {
"anthropic/claude-opus-5": {
"inputMicrosPerMillionTokens": 5000000,
"outputMicrosPerMillionTokens": 25000000,
"cacheReadMicrosPerMillionTokens": 500000,
"cacheWriteMicrosPerMillionTokens": 6250000
}
}
}This excerpt shows one model from the captured list. Retain the models your project intends to use and review their rates.
Execution profiles
Commit .foundry/profiles.toml. Use argument arrays for trusted commands. Story text does not supply executable shell commands. This example assumes your project provides pnpm test.
[profiles.default]
setup = [{ id = "install", argv = ["pnpm", "install", "--frozen-lockfile"], timeout_ms = 900000 }]
worker_scoped = [{ id = "test", argv = ["pnpm", "test"], timeout_ms = 600000 }]
acceptance = [{ id = "test", argv = ["pnpm", "test"], timeout_ms = 600000 }]
final = []
environment = []
[worker]
attribution = false| Field | Purpose |
|---|---|
setup | Prepare dependencies before the worker. |
worker_scoped | Tell the worker which checks to run. |
acceptance | Checks the controller executes to judge delivery. |
repair | Optional write commands for repairing failed formatting checks once. |
final | Commands at the final verification stage. |
environment | Names of additional environment variables passed to workers and commands. Values stay outside the plan. |
[worker] attribution | Controls worker commit attribution. The default is false. |
Match worker and acceptance checks. Edit profiles before planning because each run seals its profile. Use --profile <id> to choose a named profile.
Local and derived files
| Path | Owner and purpose |
|---|---|
.foundry/local.json | Generated checkout identity link. Keep ignored. |
.foundry/initiative.json | Local current initiative pointer. Keep ignored. |
.foundry/config.toml | Generated central project configuration. Keep ignored. |
.foundry/config.user.toml | Generated personal configuration. Keep ignored. |
.foundry/custom/ | Handwritten team overrides are committed. Personal .user.toml files stay ignored. |
.foundry/foundry/ | Materialized Toolkit files. Keep ignored. |
.foundry/scripts/ | Helpers from the Toolkit. Keep ignored. |
.claude/skills/ | Generated Foundry skills for Claude Code. Keep generated entries ignored. |
.agents/skills/ | Generated Foundry skills for Codex. Keep generated entries ignored. |
.opencode/skills/ | Generated Foundry skills for OpenCode. Keep generated entries ignored. |
Managed ignore rules
Commit the ignore blocks written by init. They keep generated files out of Git and allow the three shared inputs and team overrides. Preserve block markers and contents exactly. A modified managed block causes a refusal.
git check-ignore .foundry/local.json
git check-ignore .foundry/project.toml
git status --shortThe first command should print the local file. The project file should have no ignore match. Your publication root belongs in Git. Remove an unrelated ignore rule if the rule hides stories.