# Set up your team

Commit your AXM configuration so every teammate's coding agents share the same skills with a single sync.

When you configure AXM at **project** scope, your settings and installed
extensions live in the repo. Commit them, and onboarding a teammate becomes one
command: clone, `axm sync`, done. Everyone's coding agents end up with the same
skills, regardless of which agent each person uses.

## Configure at project scope

AXM records the coding agents you use and the extensions you install in root
`axm.json` at **project** scope (committed with your repo) by default — as
opposed to **user** scope (`~/.axm/workspace/`), which applies only to your own
machine. See
[project vs. user scope](/docs/managing-coding-agents#project-vs-user-scope) for
the full distinction.

A committed `axm.json` captures the team's _intent_ — which agents to keep in
sync and what's installed:

```json
{
  "agents": ["claude-code", "cursor"]
}
```

The `agents` array is the list of harnesses AXM keeps in sync. It doesn't force
everyone onto the same tool — it's the union of what the team supports, so a
teammate on Cursor and a teammate on Claude Code both get the extensions written
into their agent's native location.

## Commit your configuration

Add the AXM configuration to source control so it travels with the repo:

```bash
git add axm.json axm.lock .agents
git add agent_extensions/ skills/ # add the canonical roots present in your repo
git commit -m "Add AXM team configuration"
```

Commit `axm.json`, `axm.lock`, the authored roots you use, and
`agent_extensions/`. The project `.axm/` directory is ignored runtime scratch
and should not be committed. This gives every clone the same desired graph,
accepted external resolutions, and canonical packages.

## Everyone runs one sync

Once the configuration is committed, each teammate clones the repo and runs a
single command:

```bash
axm sync
```

`axm sync` reads the committed `axm.json`, then materializes every installed
extension into the universal `.agents/` location plus each configured agent's
native directory. After sync, inspect its result to confirm the expected
projections; actual activation remains host-specific. For what sync does under
the hood, see [How AXM works](/docs/how-axm-works).

## Keeping the team in sync

As the team adds or updates extensions, the workflow stays the same:

- Whoever installs or updates a skill commits the changed root authority and
  canonical package files.
- Teammates pull, then run `axm sync` to pick it up.
- Add a coding agent to `axm.json` and AXM backfills it with everything already
  installed — see [Managing coding agents](/docs/managing-coding-agents).

The committed configuration is the single source of truth; `axm sync` is how
each machine reconciles to it.

Operational source: `axm help workspace-state` for your installed CLI. This
workflow was reconciled with AXM 0.51.0.

## See also

- [Managing coding agents](/docs/managing-coding-agents) — project vs. user
  scope and which agents AXM syncs into
- [How AXM works](/docs/how-axm-works) — what `axm sync` does under the hood
- [Find and install skills](/docs/find-and-install-skills) — add skills for the
  team to share
- [Skills](/docs/skills) — what a skill is and how AXM manages it