position について
positionは、継続的なチーム内ポジションのプロファイルを読み込み、定義されたセッション開始手順を実行します。チーム体制で作業するエージェント向けで、一時的に割り当てる役割とは区別されます。
主な機能
- 01ポジションプロファイルの読み込み
- 02任意の手引きと決定記録の参照
- 03定義された起動手順の実行
- 04中断したセッションの再開
- 05ポジションの切り替え
活用シーン
- 01指定されたチームメンバーとしてセッションを開始
- 02作業セッションのコンテキストを復元
- 03ポジション固有の起動手順を適用
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ camacho/ ai-skills --skill positionインストール後、Claude Code で/positionを入力して読み込まれたか確認します。
詳細
/position — チーム内の役職をセッションに読み込む
/position <name> は、チームメイトの汎用ブートストラップスキルです。ai-workspace/team/<name>.md から役職プロフィールを読み込み、そのプロフィールで定義されたブートストラップ手順を実行します。独自の /tpm を置き換えるもので、存在する場合の /tpm は一方向の拒否契約を追加する薄いラッパーとして /position tpm を呼び出します。詳しくは後述の「ラッパースキル」を参照してください。
役職とロール
- 役職 = チームメイトのセッションごとに一度読み込まれる、持続的なアイデンティティです。
ai-workspace/team/<name>.mdに置かれます。例:tpm、software-engineer、technical-editor、architect。 - ロール =
/taskのステップで割り当てられる、単発のアクティビティです。ai-workspace/agents/<name>.mdに置かれます。例:implementer、code-reviewer、test-writer、explorer。
/position が扱うのは役職のみです。単発のロールを割り当てるには、お使いのツールのサブエージェント割り当て機能を使用してください。Claude Code の場合:Agent({subagent_type: <role-name>})。Codex/Cursor の場合は、同等の割り当て方法についてプロジェクトの AGENTS.md §Agent Roles を参照してください。
1. 役職を解決する
NAME="<arg>"
PROFILE="ai-workspace/team/${NAME}.md"
STATE_DIR="ai-workspace/team/${NAME}"
事前確認:$PROFILE が存在しない場合は、次のメッセージを表示して拒否します。
ai-workspace/team/<name>.mdに役職<name>が見つかりません。利用可能な役職は、ls ai-workspace/team/*.mdを実行して一覧表示してください。(代わりに単発のサブエージェントロールを割り当てるには、お使いのツールのロール割り当て機能を使用してください。Claude Code の場合:Agent({subagent_type: <role>})。)
自動的にブートストラップしてはいけません。ファイルがない場合は、環境の確認が必要であることを示しています。
2. プロフィールと状態を読み込む
次の順序で読み込みます。まずすべてのファイルをコンテキストに読み込んでから、推論します。読みながら要約してはいけません。
$PROFILE(必須)— 役職のアイデンティティ、作業上の合意事項、判断ルール、トリガー、アンチパターン、ライフサイクルフック。${STATE_DIR}/PLAYBOOK.md(存在する場合)— 役職の運用マニュアル。${STATE_DIR}/DECISIONS.md(存在する場合)— 役職の追記専用の判断ログ。
ほとんどの役職には兄弟状態ディレクトリがありません。状態を保持する役職(現在は tpm のみ)だけが該当します。ディレクトリがない場合、このスキルは状態の読み込みを黙ってスキップします。
3. ライブ状態を再生成する(プロフィールで指定されている場合)
役職のプロフィール本文には、セッション開始時にライブ状態を再生成するかどうか、またその方法が記載されています。よくあるパターンは次のとおりです。
- TPM:
gh project item-list+git worktree list+gh pr list - Software-engineer:
#generalチャットの末尾を確認し、セッションを再開する場合は.branch-context.mdを読み込む - Technical-editor:レビュー依頼を確認するため、
#generalチャットの末尾を確認する
プロフィールの ## Session lifecycle / Session start セクションに記載された手順に忠実に従ってください。再生成手順はこのスキルでは定めません。手順はプロフィールに従います。
4. 役職を確認して引き受ける
読み込みとブートストラップの後に、次を行います。
- 確認する:
Position '<name>' loaded. Following profile session-start instructions. - セッション終了まで役職を維持する。プロフィールのルールに従い、エージェントとして
@<name>の立場で動作します。 - チャットハンドル(役職のチャット基盤がオンラインの場合):プロフィールで指定された登録メッセージを投稿します。
5. --resume フラグ(任意)
/position <name> --resume は、中断したセッションの再開を示します。
- 役職プロフィールの再開時の規約に従い、
.branch-context.mdがあれば読み込みます - 登録チャットへの投稿をスキップします(役職はすでにチームに知られているとみなします)
- 前のセッションで中断した箇所から再開します
プロフィールに再開時の動作が定義されていない場合、--resume は何もせず、黙って処理されます。
6. 役職を切り替える
/position <other> を再度呼び出すことで、セッション中に役職を切り替えられます。直近の役職が優先されます。以前の役職のプロフィールルールは解除されます。例外: tpm の役職には一方向の拒否契約があり(インストールされている場合は /tpm ラッパースキルによって適用されます)、独自のルールに従い、セッション途中で TPM から別の役職に切り替えることは拒否されます。
アンチパターン
| アンチパターン | なぜ誤りなのか |
|---|---|
/position のために ai-workspace/agents/ から読み込む | そこはロールのディレクトリ(サブエージェント)です。ポジションは team/ にあります。 |
| 存在しないポジションを自動でブートストラップする | 拒否することが契約です。ポジションは事前に定義されている必要があります。 |
| 状態ディレクトリなしでプロファイルだけを簡易読み込みする | 状態を持つポジションには両方が必要です。状態を省略すると継続性が損なわれます。 |
| 読み込み時にプロファイルを要約する | まず読み込み、その後に推論します。これは /tpm v0 の契約と同じです。 |
/position <subagent-role> を有効な形式として扱う(例:/position implementer) | ロールはポジションではありません。拒否し、ツールのロールディスパッチ機構に誘導します(Claude Code:Agent({subagent_type: <role>}))。 |
呼び出し形式
/position <name>— ポジションを読み込み、ブートストラップを実行します/position <name> --resume— 同様に実行しますが、プロファイルで定義されている場合は再開のセマンティクスを適用します
ラッパースキル
ポジションには、/position にポジション固有のライフサイクル動作を追加する、対応するラッパースキルが付属する場合があります。ラッパーは任意です。/position <name> は常に直接使用できます。同じスキルリポジトリ内でラッパーが /position とともにインストールされている場合は、対象のポジションでラッパーを優先してください(汎用ローダーでは対応できない、ポジション固有の契約を処理します)。
例:/tpm(別のスキルとして提供されている場合)は tpm ポジションのラッパーです。これは /position tpm を呼び出し、一方向の拒否契約を追加します。環境に /tpm がインストールされていない場合は、/position tpm を直接使用してください。ポジションはラッパーなしでも問題なく読み込まれますが、拒否契約の適用はありません。
クイックリファレンス
| 手順 | アクション | 失敗時 |
|---|---|---|
| 1 | team/<name>.md を解決する | 利用可能なポジション一覧を示して拒否します |
| 2 | プロファイルと状態ディレクトリを読み込む | ディレクトリが存在しない場合は、状態を黙ってスキップします |
| 3 | プロファイルに従ってライブ状態を再生成する | — |
| 4 | 受け付けたことを伝え、ポジションを維持する | — |
| 5 | --resume が指定されていれば、それに従う | プロファイルに再開のセマンティクスがなければ何もしません |
| 6 | 再呼び出し時にポジションを切り替える | 一方向のポジション(tpm)では拒否します |