# Teams

Teams group organization members and give them a shared role on repositories.
Teams can be nested: a child team's path joins its parents' handles with dots,
such as `eng.web`. Open the **Teams** tab of an organization.

## Create a team

Owners and admins choose **New team**, then enter:

- a name and a slug (suggested from the name);
- the visibility: **visible** to all members or **secret**;
- an optional parent team. A visible team cannot sit under a secret one.

```sh
cafe team create acme web --name "Web" --parent eng
```

To delete a team, use the bin icon in the team list. Its child teams are
deleted with it.

## Add members

On the team's **Members** tab, choose **Add member**, pick an organization
member and a team role: **Reader**, **Triager**, **Writer** or **Maintainer**.
Organization owners can change a member's role in their row; the bin icon
removes a member.

```sh
cafe team member set acme web alice --role team-writer
```

## Grant repository access

On the **Repositories** tab, choose **Add repository**, pick one of the
organization's repositories and the role the team gets: **Read**, **Triage**,
**Write**, **Maintain** or **Admin**. Change the role in the row, or revoke it
with the bin icon. You can also grant team access from a repository's
[access settings](https://staging.git.cafe/docs/repositories/repository-access.md#give-a-team-access).

## Team rulesets

On the **Rulesets** tab, organization owners, admins and team maintainers can
add rulesets with the same editor as
[repository rulesets](https://staging.git.cafe/docs/repositories/repository-rulesets.md). A team ruleset
applies to every repository the team has access to, and appears in their
**Effective rules** with the `team` scope. Removing the team's access to a
repository removes its rules there.

## Rename or move a team

The **Settings** tab changes the team's name, visibility and parent. Moving a
team changes its path and its address. A team cannot move under one of its own
children.
