team-setup について
team-setup は、プロジェクトのチーム AI 指示を設定する対話型スキルです。リポジトリのクローン、ローカルディレクトリの指定、新規作成、既存設定の確認を案内し、既存ファイルを上書きせずにプロジェクトへ設定を反映します。
主な機能
- 014 種類のガイド付き設定モード
- 02GitHub から指示をクローン
- 03既存のローカルディレクトリを指定
- 04新しい指示のひな型を作成
- 05既存設定の検証
- 06プロジェクト設定と MCP 設定の導入
活用シーン
- 01新しいチームの指示設定
- 02GitHub の指示リポジトリへの接続
- 03既存のローカル指示ディレクトリの再利用
- 04プロジェクト設定の確認や修正
MCP 対応
セットアップ時に MCP 設定を導入して既存設定と統合し、プロジェクトからチーム指定の MCP サーバーを利用できるようにします。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ tikalk/ adlc-team-skills --skill team-setupインストール後、Claude Code で/team-setupを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/mode-clone.mdmode-configured.mdmode-local.mdmode-scaffold.mdpost-setup-agents.mdpost-setup-mcp.mdscripts/bash/team-helpers.shscripts/powershell/team-helpers.ps1詳細
team-setup
概要
team-setup は、チームの AI ディレクティブのセットアップを案内するインタラクティブなスキルです。4 つのモードを提示し、各オプションを説明して選択を確認した後、セットアップを実行します。
次の 2 つの方法で呼び出されます。
- ユーザーによる呼び出し(
/team-setup)— プロジェクトの設定や確認を行うため、いつでも呼び出せます。 team-bootによるモデルからの呼び出し — プロジェクトに.adlc/init-options.json設定がない場合(セルフインストール)、セッション開始時に自動的に呼び出されます。これにより、ユーザーがコマンドを知らなくても、未設定のプロジェクトが自身を連携します。
このスキルは非破壊的です。既存のファイルやディレクトリを上書きすることはありません。対象のパスに設定済みのチーム AI ディレクティブがすでにある場合は、それを検出し、代わりに「設定済み」モードを提示します。
使用するタイミング
- 新しいチームをゼロから立ち上げ、後で内容を記入できる中立的なチーム AI ディレクティブのひな形が必要な場合。
- チームに GitHub 上のディレクティブリポジトリがすでにあり、ローカルにクローンしたい場合。
- ローカルにチーム AI ディレクティブのディレクトリがすでにある(例:以前のプロジェクトから引き継いだ)ため、連携したい場合。
- チーム AI ディレクティブが設定済みかどうか不明で、簡単に確認したい場合。
- プロジェクトがまだチーム AI ディレクティブと連携されていない場合(
.adlc/init-options.jsonにteam_ai_directivesフィールドがない)。 - セッション開始時に未設定のプロジェクトを検出した
team-bootを通じて自動的に呼び出された場合(セルフインストール)。
拒否時の処理(team-boot によるモデルからの呼び出しの場合)
プロジェクトが未設定のために team-boot がこのスキルを呼び出した場合、ユーザーは今すぐチーム AI ディレクティブをセットアップしないことを選択できます。再度確認するループを避けるため、拒否を明示的に処理してください。
- ユーザーがモード選択時に拒否した場合、どのモードも実行しないでください。正常に終了し、ユーザーが拒否したことを
team-bootに伝えます。 - 永続的なオプトアウトを提案します。「このプロジェクトでは今後確認しないようにしますか?」 「はい」の場合(ビルドモードのみ)、
team_ai_directives: nullを含む.adlc/init-options.jsonを書き込みます。
このマーカーにより、以降のプロンプトではecho '{"team_ai_directives": null}' > ".adlc/init-options.json"team-bootがセットアップを通知なしでスキップします。 - 計画/読み取り専用モードでは、永続的なオプトアウトを書き込めません。拒否はそのセッションのみに適用されるため、延期するよう
team-bootに伝えます。 - モードを強制しないでください。セットアップの各ステップでは、常にユーザーの同意が必要です。
基本プロセス
目標
4 つのモードのいずれかを使って、チーム AI ディレクティブをセットアップします。
セキュリティ:入力の検証(全モード)
いずれかのモードを実行する前に、ユーザーが指定した値(パス、URL、チーム名)をすべて検証してください。これらの値はシェルコマンドに埋め込まれるため、検証されていない入力はコマンドインジェクションの原因になります。
- パス(
{DEST}、{ABSOLUTE_PATH}):`、$、;、|、&、(、)、<、>、改行、またはバックスラッシュが含まれている場合は拒否します。使用前にrealpath/Resolve-Pathで絶対パスに解決します。 - チーム名:
^[A-Za-z0-9 ._-]+$に一致する必要があります。それ以外は拒否します。 - クローン URL(モード 1):
https://で始まる必要があります。ユーザーがリスクを明示的に確認しない限り、file://、ssh://、およびhttps以外のスキームは拒否します。クローン時にリポジトリ内のコードは実行されませんが、クローンした内容は後でエージェントが読み取ります。信頼できるリポジトリのみをクローンしてください。
値が検証に失敗した場合は、該当する値と理由を伝えて再入力を求めます。ユーザーの値を Python/eval のソース文字列に埋め込んではいけません。環境変数を通じて渡してください(モード 2 を参照)。
簡易手順: .adlc/init-options.json に有効な team_ai_directives パスがすでに含まれている場合は、モード 4(設定済み)に進みます。再クローン、パスの再指定、ひな形の再作成は行いません。
モード一覧
| # | モード | タイミング | 詳細 |
|---|---|---|---|
| 1 | GitHub からクローン | チームにディレクティブリポジトリがすでにある | references/mode-clone.md |
| 2 | 既存のローカルパスを指定 | ディレクティブのディレクトリがローカルにすでにある | references/mode-local.md |
| 3 | 空のディレクティブをひな形から作成 | チームをゼロから立ち上げる | references/mode-scaffold.md |
| 4 | 設定済み | 既存の連携を確認/検証する | references/mode-configured.md |
モード 1:GitHub からクローンする
詳しい手順は references/mode-clone.md を参照してください。
モード 2:既存のローカルパスを指定する
詳しい手順は references/mode-local.md を参照してください。
モード 3:空のチーム AI ディレクティブを新規作成する
詳しい手順は references/mode-scaffold.md を参照してください。
モード 4:設定済みの場合
詳しい手順は references/mode-configured.md を参照してください。
モード選択フロー
-
確認:4 つの選択肢をユーザーに提示します。
How would you like to set up team-ai-directives? 1) Clone from GitHub — Clone an existing repository 2) Point to existing local path — Use a team AI directives you already have 3) Scaffold new empty team AI directives — Create a fresh neutral team AI directives 4) Already configured — Check existing configuration -
提示:選択されたモードで何が行われるかを説明し、詳細を示します。
-
確認:実行前にユーザーに確認を求めます。
-
書き込み/実行:選択されたモードのセットアップを実行します。
セットアップ後の設定
いずれかのモードが正常に完了したら、プロジェクト設定を更新します。
team_ai_directivesを.adlc/init-options.jsonに書き込みます。- 簡易ヘルスチェックを実行して、チーム AI ディレクティブにアクセスできることを確認します。
{TEAM_AI_DIRECTIVES}/context_modules/constitution.mdが存在する{TEAM_AI_DIRECTIVES}/.skills.jsonが存在し、有効な JSON である
.gitignoreの規則(許可リスト形式。以下の「Gitignore 規則の確認」ステップを参照)を確認します。- プロジェクトレベルの
AGENTS.mdディレクティブを挿入します。コマンドの全容と管理対象セクションの仕様については、references/post-setup-agents.mdを参照してください。 - MCP 設定をインストールします。マージの詳細については、
references/post-setup-mcp.mdを参照してください。
Gitignore 規則の確認
.gitignore が ADLC の許可リストに従っていることを確認します。新しい team setup では、チームモデルが依存する追跡対象の .adlc/ アーティファクトが隠れてしまうため、.adlc/ 全体を無視する規則を決して残してはいけません。
.gitignoreに単独の.adlc/規則がある場合は、その規則と競合する.adlc/*および!.adlc/...の行を R7 許可リストに置き換えます。.adlc/*、.adlc/evals/results/、.adlc/memory/*、.adlc/team-learn-report.md、.adlc/team-levelup-report.md、graphify-out/を無視し、!.adlc/init-options.json、!.adlc/workspace.yml、!.adlc/drafts/、!.adlc/evals/、!.adlc/memory/、!.adlc/memory/evals/、!.adlc/memory/evals/holdout.jsonを再度対象に含めます。正規の規則リストは、ワークスペーススキルのscripts/bash/paths.sh(GITIGNORE_RULES_ALLOWLIST。scripts/powershell/paths.ps1にも同じ内容があります)に記載されています。- エージェントのインストール対象に関する規則も無視されていることを確認します(
.agents/、.opencode/、.claude/、.cursor/、.codex/、.gemini/、.qwen/、.devin/、.tabnine/、skills-lock.json、.skills.json、.mcp.json、.events.json、.pytest_cache/、.ruff_cache/)。 - 無関係な(ADLC 以外の)規則は削除せず、不足している許可リストの規則だけを追加します。
- 追跡対象のレガシーファイルは引き続き機能します。許可リストが適用されるのは未追跡ファイルのみのため、切り替え前の移行は不要です。
よくある誤った理由付け
| 誤った理由付け | それが誤りである理由 | 代わりに行うこと |
|---|---|---|
| 「手動でクローンすればいいだけです。」 | 手動でクローンすると .adlc/init-options.json の設定が省かれるため、エージェントがチーム AI ディレクティブを見つけられません。 | モード 1 を使用してください。クローンと設定の両方を行います。 |
| 「チーム AI ディレクティブのディレクトリはすでにあるので、それを使えばいいです。」 | ディレクトリに必要なファイルがなく不完全だったり、設定に接続されていなかったりする場合があります。 | モード 2 を使用してください。構成を検証し、設定エントリーを作成します。 |
| 「ファイルをいくつか手作業で作ればいいです。」 | 足りないファイルがあると、ヘルスチェックやエージェントによる検出に失敗します。 | モード 3 を使用してください。構成が有効な必須ファイル 10 個をすべて作成します。 |
| 「すでに設定されているはずです。」 | パスが古くなっていたり、移動されていたり、環境変数が削除済みのディレクトリを指していたりする場合があります。 | モード 4 を使用してください。既存の設定を検証します。 |
| 「チーム名なしでひな形を作っても問題ありません。」 | チーム名は README.md で使用されます。名前が空欄だとチーム AI ディレクティブが匿名になり、監査しにくくなります。 | モード 3 では必ずチーム名を指定してください。 |
注意すべき点
- 既存のディレクトリへのクローン — 上書きを防ぐため、モード 1 では保存先がすでに存在する場合に処理を拒否します。
- 存在しないパスを指定する — モード 2 では、処理を進める前にパスの存在を確認します。
- 必要なディレクトリに書き込み権限がない状態で足場を作成する — モード 3 では
mkdir -pでディレクトリを作成しますが、権限エラーが発生すると失敗します。事前に権限を確認してください。 team_ai_directivesの設定を書き込まない —init-options.jsonにこのフィールドがないと、エージェントはチーム AI ディレクティブを見つけられません。init-options.jsonで相対パスを使う — 作業ディレクトリが変わっても設定を移植できるよう、必ず絶対パスに解決してください。- モード 3 で
git initを省略する — git を使用できない状態で作成されたチーム AI ディレクティブは、/team-levelup(ブランチ/コミット/PR のフロー)で使用できません。モード 3 ではgit initが自動的に実行されます。省略した場合は、/team-levelupの実行前に手動でgit initを実行してください。 - プロジェクトレベルの AGENTS.md への挿入を省略する — プロジェクトの
AGENTS.mdに `` 管理セクションがないと、イベントに対応していないエージェントには、セッション開始時にチームコンテキストを読み込む指示がありません。.adlc/init-options.jsonの設定だけでは不十分です。この設定は、チーム AI ディレクティブの場所をスキルに伝えますが、エージェントに確認を促すものはありません。(イベントに対応しているエージェントの場合、セッション開始フックがいずれにしてもオリエンテーションを挿入しますが、AGENTS.md は引き続きフォールバックとして機能し、「使用中のチームコンテキスト」出力契約の情報源になります。) - ユーザー入力を Python/シェルのソース文字列に埋め込む — パスは環境変数(
os.environ)経由で渡してください。$ABSOLUTE_PATHを Python のワンライナーに文字列補間する方法は、コマンドインジェクションの原因になります。 - モード 1 で
https://以外の URL をクローンする —file:///ssh:///その他のスキームは拒否してください。クローンされたコンテンツは後でエージェントが読み込むため、信頼できるリポジトリのみをクローンしてください。 - MCP 設定のインストールを省略する —
.mcp.jsonのサーバーは設定されないままになり、プロジェクトからチーム指定の MCP サーバーにアクセスできません。 - パスやチーム名にシェルのメタ文字を許容する —
mkdir/git commit/ヒアドキュメントに埋め込む前に検証してください(「入力の検証」を参照)。 - ユーザーの辞退をエラーとして扱う — セットアップを辞退することは正当な結果です。正常に終了し、ユーザーが辞退したことを
team-bootに伝え、team_ai_directives: nullのオプトアウトマーカーを提示してください(ビルドモードのみ)。 - 計画/読み取り専用モードでオプトアウトマーカーを書き込む — オプトアウトを永続化するには書き込みが必要です。計画モードでは辞退はセッション中のみ有効となり、セットアップは延期されます。
検証
- チーム AI ディレクティブのディレクトリが、設定されたパスに存在します。
-
{TEAM_AI_DIRECTIVES}/context_modules/constitution.mdが存在します。 -
{TEAM_AI_DIRECTIVES}/context_modules/rules/が存在します。 -
{TEAM_AI_DIRECTIVES}/context_modules/personas/が存在します。 -
{TEAM_AI_DIRECTIVES}/context_modules/examples/が存在します。 -
{TEAM_AI_DIRECTIVES}/CDR.mdが存在します。 -
{TEAM_AI_DIRECTIVES}/.skills.jsonが存在し、有効な JSON です。 -
.adlc/init-options.jsonに、絶対パスを指定するteam_ai_directivesフィールドが含まれています。 -
.gitignoreがレイアウトの許可リストに従っています(.adlc/全体を無視する設定がなく、追跡対象の例外!.adlc/init-options.json、!.adlc/workspace.yml、!.adlc/drafts/、!.adlc/evals/、!.adlc/memory/evals/holdout.jsonが含まれています)。 - プロジェクトレベルの
AGENTS.mdが存在し、イベントフックの認識に関する注記、フォールバックのteam-boot呼び出し、および Team Context in Use の出力規約を含む、`` 管理セクションが含まれています。 - (モード 3 のみ)
{TEAM_AI_DIRECTIVES}内でgit rev-parse --is-inside-work-treeが成功します。 -
team-repairのフェーズ 0 であるteam-verifyを実行すると、7 項目すべてのチェックに合格します。 - ユーザーが指定したすべてのパス/URL/チーム名が入力検証に合格しています(シェルのメタ文字がなく、クローン URL が
https://です)。 - モード 2 では環境変数を介して
team_ai_directivesを書き込みました($ABSOLUTE_PATHを Python ソースに展開していません)。 -
{TEAM_AI_DIRECTIVES}/.mcp.jsonが存在する場合、宣言されたmcpServersがプロジェクトの設定に正常にマージされ、解決されていない環境変数が明示されています。 - (
team-bootによってモデルが呼び出された場合)ユーザーが辞退すると、いずれのモードも実行せずに正常終了します。永続的なオプトアウトの選択肢が提示され、team_ai_directives: nullが書き込まれるのはビルドモードのみです。
設定
TEAM_AI_DIRECTIVES— チーム AI ディレクティブへのパス(.adlc/init-options.jsonの設定を上書きします)。.adlc/init-options.json—team_ai_directivesフィールドを含む、プロジェクトレベルの設定ファイルです。- デフォルトのフォールバック:プロジェクトルートからの相対パス
team-ai-directives/。 team-helpers.sh/team-helpers.ps1— スキャフォールディングとパス解決に使用する共有スクリプトです。
12-Factor との整合性
要素 XI(ディレクティブをコードとして管理)— バージョン管理されたチームディレクティブのリポジトリを確立します。