---
title: "Working in teams"
description: "Multi-user workflows with unique milestone IDs, push branches, and shared planning artifacts."
---

SF supports multi-user workflows where several developers work on the same repository concurrently.

## Setup

### 1. Set team mode

```yaml
# .sf/PREFERENCES.md (project-level, committed to git)
---
version: 1
mode: team
---
```

This enables unique milestone IDs, push branches, and pre-merge checks in one setting. Override individual settings on top of `mode: team` as needed.

### 2. Configure `.gitignore`

Share planning artifacts while keeping runtime files local:

```bash
# Runtime / ephemeral (per-developer)
.sf/auto.lock
.sf/completed-units*.json
.sf/state-manifest.json
.sf/STATE.md
.sf/metrics.json
.sf/activity/
.sf/runtime/
.sf/worktrees/
.sf/sf.db*
.sf/journal/
.sf/doctor-history.jsonl
.sf/event-log.jsonl
.sf/milestones/**/continue.md
.sf/milestones/**/*-CONTINUE.md
```

**Shared** (committed): preferences, PROJECT.md, REQUIREMENTS.md, DECISIONS.md, milestones.

**Local** (gitignored): lock files, metrics, state cache, worktrees, activity logs, database files, journals.

### 3. Commit

```bash
git add .sf/PREFERENCES.md
git commit -m "chore: enable SF team workflow"
```

## `commit_docs: false`

For teams where only some members use SF:

```yaml
git:
  commit_docs: false
```

Adds `.sf/` to `.gitignore` entirely. The developer gets structured planning without affecting teammates.

## Parallel development

Multiple developers run auto mode simultaneously on different milestones. Each developer gets their own worktree and unique `milestone/<MID>` branch. Milestone dependencies can be declared:

```yaml
# M00X-CONTEXT.md frontmatter
---
depends_on: [M001-eh88as]
---
```

SF enforces that dependent milestones complete before starting downstream work.
