Skip to content

Team cartridge

This page settles how a team gets its own cartridge: run cartridge init <team>, then decide whether you're extending local or base.

cartridge init

cartridge init my-team --cartridges-dir <workspace>/cartridges

This creates <workspace>/cartridges/my-team/ from the example team: a cartridge.yaml and a context/ folder for your charter and conventions. It links base and local beside it, pointing into the checkout's src/cartridges/cartridges/. It then prints the profile lines that name the new team. --extends base makes it extend base instead of local; --dry-run prints the plan and writes nothing.

It does not write your charter or conventions for you. Those are yours to write, because they say what your team actually believes.

The keys

A team cartridge's top-level keys are the same shape as base's: write kinds with their risk and ramp, policy, landing_areas, context, and a crew key naming which skills bind to which seats. Fragments under cartridge.d/ add to them; see Fragments. A team may not lower a risk or shorten a ramp that local or base set; see Cartridges.

Checks

landing_areas.checks lists the commands the harness runs on every build, as {name, cmd} entries, with an optional timeout (seconds) and fix (a command that repairs what the check found). A repository can add its own checks on top with a root .agent-checks file. See Landing.

The project layer

A repository can also carry .agent/cartridge.yaml. The harness reads it for runs against that repository and folds it in last. It may set only description, context, policy.review_tier, policy.cost.level and landing_areas.checks. Its checks list replaces the team's list for that repository; .agent-checks still adds to it. Any other key is refused.

The project layer may only tighten review: it may lower a review_tier threshold, add to tier2_surfaces and remove from tier0_patterns, never the reverse. It may move policy.cost.level toward strict, never toward liberal.

Extending local or base

Most teams extend local (the default) rather than reaching past it to base. Extend base directly only when your change is genuinely independent of anything local has already decided; reaching past a layer that already narrowed something usually means you're fighting the layer instead of using it.

What lands where

A team cartridge doesn't replace base or local; it's resolved on top of them at run time, layer by layer. See Fragments for how the pieces inside your cartridge are folded, and Policy for the values most teams change first.