Skip to content

Working as a team

Several people can work in one project, each with their own assistant sessions, because every entry is its own file and every personal view is its own file.

Set mode: team in the Project section of docs/ai/config.md. init leaves a project at solo when it sees only one author. The mode changes one thing, when an entry gets its short id, and you can switch back and forth at any time; ids already assigned stay.

In solo mode the assistant gives a task (T7), backlog item (B5), question (Q12) or todo (U3) its id at once. Two people doing that on separate branches would hand out the same number, so in team mode an entry has only a file name until it reaches the default branch, for example T-anna-20261004-1030-fix-login.md. Cite the file name until then.

python .act/scripts/entries.py assign hands out the missing ids. On a feature branch it changes nothing and says so. The act-commit skill runs it when closing out a task: it renames each file and reports <old> -> <new>, and you stage both paths, the old one as a deletion, so a clone that already has the old file does not keep it lying around.

Entries and tasks carry a for: header: all for everyone, or a workspace identity, the short name in .act-local/identity.json. A task is created for the current identity unless you pass --for; todos, reports and notes default to all. The board lists your tasks and shared ones, and with board-others on (the default in team mode) a separate section for tasks assigned to other people. Your inbox view .act-local/inbox-<identity>.md collects the open entries addressed to you or to all.

File Who writes Versioned
docs/ai/concept/ideas-<identity>.md only its owner yes
docs/ai/board.md (default board: docs) generated per checkout no, gitignored
docs/ai/board-<identity>.md (board: shared) generated by act-commit yes
.act-local/** (identity, state, feedback, inbox view) per machine no

With board: shared, each person’s versioned board lets the others see open tasks without sharing a working tree. Someone else’s ideas file is theirs: read it, write into your own.

  • Entry files (inbox, tasks, backlog, journal) are one file per entry, so two people rarely touch the same file. The journal and every new entry carry a created: timestamp, so two branches filing the same title never produce a silent merge of identical files.
  • Generated files (CLAUDE.md, AGENTS.md, docs/ai/rules.md) are marked merge=ours in .gitattributes, and docs/ai/board-*.md too. If no merge driver is registered (git config merge.ours.driver true), git merges normally; the session start re-derives an unchanged bridge, and the next commit rewrites a board file, so a stale one never survives.
  • docs/ai/config.md and your own rules are shared project decisions; merge them by hand like any other source file.
  • Updating the template: other branches get an update only with the merge. An update on a non-default branch gives one note saying so.

See Work entries for the entry kinds and Configuration for mode and board.