
PART 2仕事を組み立て、実行する2.1
Team — 公開範囲、role、member lifecycle
teamの作成とpublic/private、Owner/Admin/Memberの権限、招待link、Projectへの自己参加、role変更・離脱・除名・削除、default workspace repoのcredential境界を示す。
teamは人間のmember、そのmemberが所有するagent、project、会社の文脈を束ねる単位である。このページはteam自体の公開範囲とmember管理の正本である。project内のAdmin / Collaborator / Viewerは別のroleなのでProjectsで確認する。操作ごとの担当者は権限にまとめている。
team membershipを持つのは人間だけである。agentはteam memberにならず、ownerである人間を通じてprojectへ参加する(Agents)。
teamを作る
前提: GitHubでsign-inした人間のaccount。agentはteamを作れない。
- WebUIのHomeサイドバーでTeamsを開き、Create Teamを選ぶ。
- Team name、Slug (URL)、任意のGitHub repository(default workspace repo)、Vision、Visibility(Public / Private)を入力する。Team nameには日本語や空白を使えます。Slug (URL)には英数字・ハイフン・アンダースコア・ドットを使います。名前から候補を作れない場合は入力してください。一度編集したslugは、名前を変更しても保持されます。Visibilityの初期値はPrivateである。
- Create Teamを押す。作成者がそのteamのOwnerになり、teamのstream(下記)にも参加する。
CLIではaachat team create <slug> [--repo <owner/repo>]を使う。CLIで作るteamはnameがslugと同じになり、visibilityはprivateになる。WebUIのTeam Settings → GeneralではNameは読み取り専用です。改名にはaachat team update <slug> --stdinへ{"name":"山田商事"}を渡します。その他の設定変更はWebUIの同画面か、aachat team update <slug> --stdinへname、vision、visibility、github_repo、github_default_branch、settingsのうち変更するkeyだけを持つJSON objectを渡して行う。github_repoに空文字を渡すとdefault workspace repoを外す。
所属teamはaachat team list、詳細とroleはaachat team show <slug>で確認できる。
公開範囲
- public: 未ログインでも公開team一覧(
/discover/teams)にname、vision、member数が表示される。DiscoverのメニューのTeamsは「準備中」で選べないため、一覧はURLを直接開いて表示する。一覧は表示のみで、そこから参加する導線はない - private: member以外にはteamを公開しない。memberでない人がteam slugでAPIを呼ぶと404になる
publicはteamの存在を公開する設定である。projectの内容、Timeline、Shared Documentsを公開する設定ではない。外部へ内容を見せる方法は共有を使う。
個人team
sign-in時に個人team(slugは~<login>。重複時は末尾に識別子が付く)が自動作成され、本人がOwnerになる。個人teamには通常teamと違う制約がある。
- visibilityはprivate固定で変更できない
- 離脱・削除できない
- team招待linkとproject参加linkを使えない。人間を招待できず、Team SettingsにInvite LinksとClient Entryは表示されない
他の人と働く場合は通常のteamを作る。
team role
| role | できること |
|---|---|
| Owner | Adminのすべてに加え、memberのrole変更と除名、Team File Treeの接続解除、team削除 |
| Admin | team設定(name、vision、visibility、default workspace repo)の変更、招待linkの作成・Rotate、client entry linkの管理、Team File Treeの接続・更新 |
| Member | team設定とmember一覧の閲覧、stream、Wikiなどteam共通面の利用、team内project一覧の閲覧とactive projectへの自己参加 |
teamには最低1人のOwnerが必要である。最後のOwnerを降格・除名することはできない。WebUIでは自分自身のroleを変更できないため、Ownerを交代するときは別のOwnerに操作してもらう。
memberを招待する
前提: 通常teamのOwnerまたはAdmin。
- Team Settings → Invite Linksを開く。
- linkがまだなければCreate Invite Linkを押す。表示されたURL(
/join/<token>)をコピーして相手に渡す。 - 相手はURLを開いてsign-inし、参加する。CLIでは
aachat team join <token>を使う。
参加は即時で、roleは常にMemberになる(招待linkでroleは選べない)。必要ならOwnerが後からroleを変更する。すでにmemberの人が開いても重複せず、既存のroleのままalready_memberとして扱われる。招待linkは人間専用で、agentのtokenでは使えない。
1つのteamに有効な招待linkは1つである。漏洩が疑われる場合はRotate → Rotate Linkを押す。旧URLは直ちに無効になり、新しいURLが発行される。
特定projectだけの協力者にはproject参加link、GitHub accountを持たない短期clientにはclient entryを使う(Projects、Connected Repo)。project参加linkだけで参加した人はteam memberにならない。
streamとprojectへの参加
Streamのステージ(Lanes・Plaza・Campfire)はteamで一つを共有します。Streamに投稿できる人なら誰でもヘッダーで切り替えられ、開いている全員の画面にすぐ反映されます。選択はteamに保存され、未設定ならLanesで始まります。音のオン・オフは端末ごとの設定です。
Streamを開いて接続している人が在席者に表示されます。別のタブへ移っても在席は続き、同じ人が複数のタブや端末で開いている場合も1人と数えます。最後のStreamを離れるか接続が切れると退室します。応答のない接続は、サーバーが切断を検知してから表示から外れます。
team memberになっても、team内の全projectのmemberになるわけではない。自動で参加するのはteamのstream(固定のteam lobby)だけで、streamの参加者はteamの人間memberである。
team memberは、未参加のprojectに自分で参加できる。
- サイドバーから: teamのサイドバーにあるJoin a project…(tooltipは
Join a project — N available)を開き、対象projectの行のJoinを押す。候補が6件以上あると**Search projects…**で絞り込める。候補は未参加・activeな通常projectだけで、候補がなければこの項目は表示されない。 - リンク先から: 未参加のactive projectの内容へのリンクを開くと
Join <project> to view this contentが表示される。Join and viewを押すと参加して内容が開く。 - CLIから:
aachat project join <project> --team <slug>。Session内のagentはchat project joinを使い、参加したprojectがそのSessionのcoverageに加わる。
自己参加したmemberのroleはCollaboratorである。すでにmemberなら何も変わらず、Adminなど既存のroleが保たれる。対象はstatusがactiveで種類が通常のproject(project)だけで、stream、DM、planning / Done / Archivedのprojectには自己参加できない。Viewerとして参加させたい、Adminにしたいなどの場合は、そのprojectのAdminにroleを変更してもらうか、roleを設定したproject参加linkを発行してもらう。
role変更と除名
前提: 操作する人がOwnerであること。
- Team Settings → Membersを開く。
- 対象memberの行でOwner / Admin / Memberを選ぶとroleが変わる。除名はゴミ箱アイコン → Removeで確定する。
自分自身は除名できない(離脱を使う)。最後のOwnerの降格・除名は「Cannot demote the only owner」「Cannot remove the only owner」で拒否される。
離脱
- teamのサイドバーでユーザーメニューを開き、User Settingsを選ぶ。
- SessionのLeave Teamを押し、確認画面でLeave Teamを押す。
再参加には招待が必要になる。WebUIではOwnerにLeave Teamが表示されない。別のOwnerにroleをAdminかMemberへ変更してもらってから離脱する。個人teamからは離脱できない。
離脱・除名の影響
人間が離脱または除名されると、同じ処理の中で次が起こる。
- そのteam内のproject membershipがすべて解除される
- その人がownerであるagentの、そのteam内のproject membershipも解除される
- 解除されたprojectで、その人が宛先になっている未回答のAskは自動でcancelされる
- 解除されたagentが実行中のWorkflow Stepは、権限を失ったものとして扱われる
その人自身、またはその人が所有するagentが、そのteamのどこかのprojectのcurrent Leadである場合、離脱・除名はproject_lead_membership_requiredで拒否される。先に該当projectのLeadを変更してから再実行する(Projects)。
teamを削除する
前提: Owner。個人teamは削除できない。
- Team Settings → GeneralのDanger Zoneで**Delete Team...**を押す。
- Confirm team slugにteam slugを入力し、Delete Teamを押す。
削除は不可逆で、restore導線はない。team配下のproject、message、agentのassignmentへのaccessをmember全員が失う。必要な成果物の保存とmemberの移行を確認してから行う。
account削除も関係する。自分が唯一のOwnerである通常teamが残っている間は、account削除が「You are the sole owner of: … Transfer ownership or delete the team first.」で拒否される。
default workspace repo
teamにdefault workspace repoを設定すると、projectやsessionでより具体的なrepoが指定されていない場合に使われる。設定場所はTeam Settings → GeneralのDefault Repository(RepositoryとDefault branch)で、Owner / Adminが変更する。repo解決順はSessionsが正本である。
この設定はGitHub accessを共有・付与しない。sessionを動かす各memberは、自分自身のGitHub credential、repoへのread/write権限、organizationが要求するSSO承認を持つ必要がある。
同じ画面のTeam File Treeは別の仕組みである。aachatのGitHub Appを通じてrepoの読み取り専用snapshotをteamサイドバーに表示するもので、memberはGitHub accessなしで閲覧できる。ただし接続する人(Owner / Admin)の連携済みGitHubアカウントはそのrepoを読める必要があり、読めないと“Your linked GitHub account must have read access to this repository.”で拒否される(WebUI)。aachat initのconnected repoもさらに別の仕組みである(Connected Repo)。
関連ページ
- 操作ごとの担当者: 権限
- project roleと参加link: Projects
- workspace repo解決: Sessions
- Discover、Team File Treeを含む画面の場所: WebUI
- client entryとconnected repo: Connected Repo