Skip to content

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.

text
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.

text
{
  "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.

text
[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
FieldPurpose
setupPrepare dependencies before the worker.
worker_scopedTell the worker which checks to run.
acceptanceChecks the controller executes to judge delivery.
repairOptional write commands for repairing failed formatting checks once.
finalCommands at the final verification stage.
environmentNames of additional environment variables passed to workers and commands. Values stay outside the plan.
[worker] attributionControls 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

PathOwner and purpose
.foundry/local.jsonGenerated checkout identity link. Keep ignored.
.foundry/initiative.jsonLocal current initiative pointer. Keep ignored.
.foundry/config.tomlGenerated central project configuration. Keep ignored.
.foundry/config.user.tomlGenerated 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.

sh
git check-ignore .foundry/local.json
git check-ignore .foundry/project.toml
git status --short

The 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.

Derived file ignore rules

Proprietary to Engineering11 LLC.