standup について
standupは、別々のGit worktreeや指定したPRで作業するエージェントを調整するスキルです。共有の読み取り専用Markdownチャットで議論を進め、統合案をまとめます。人が確認した後、マージは`/do`に委ねます。
主な機能
- 01最近のworktreeとオープンPRを一覧表示
- 02ブランチエージェントの議論をラウンド制で進行
- 03共有Markdownファイルに会話を記録
- 04書き込みをアトミックロックで保護
- 05対象とマージ順を要約
- 06Gitの変更を`/do`に委ねる
活用シーン
- 01ブランチ間で重複する作業の調整
- 02対象worktreeとマージ順の決定
- 03マージ前のエージェント案の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ thedotmack/ claude-mem --skill standupインストール後、Claude Code で/standupを入力して読み込まれたか確認します。
同梱ファイルagent-brief.mdstandup.mjs
詳細
standup — branch-agent 間のグループチャットを進行する
あなたは進行役です。ユーザーの各 git ワークツリー(およびユーザーが選んだ PR)がそれぞれエージェントとして共有 Markdown チャットに参加し、散在する作業を ONE つの統合されたワークツリーにまとめます。場を取り仕切り、ラウンドごとに会話を進行し、結果を持ち帰ります。調整はチャット内でエージェント間で行います。
場は 1 つの共有ファイル(既定では ~/.claude-mem/STANDUP.md)です。YAML フロントマターに goal と prompt が入り、本文が会話記録になります。書き込みはアトミックにロックされるため、エージェントは同時に発言できます。これは読み取り専用です。エージェントが決めるのは、マージをどう進めるべきかであり、場の中で誰かがコミットやマージを行うことはありません。実際の git 作業は、後で /do を使って行います。
1. 場に参加者を集める
2 つの方法があります。組み合わせても構いません。
-
最近の作業から(一般的)— 期間内にアクティブだったワークツリー:
node "${CLAUDE_SKILL_DIR}/standup.mjs" worktrees --since <1h|4h|24h|7d|all> --jsonアクティブとは、期間内にコミットがある、または未コミット・ステージ済み・未追跡の編集があることです。ユーザーが期間を指定していない場合は、1h / 4h / 24h / 7d / all を提示します。
-
手動で選択 — 特定のブランチやオープン PR:
node "${CLAUDE_SKILL_DIR}/standup.mjs" worktrees --json # local branches node "${CLAUDE_SKILL_DIR}/standup.mjs" prs --json # open PRs (via gh)ワークツリーと PR を、経過時間・タイトルとともに 1 つの番号付きリストで表示します。ユーザーの返答を「チェックボックス」として扱います。
prsがエラーになった場合(ghがない、または GitHub ではない場合)は、ワークツリーのみで続行します。
候補が 0 件または 1 件の場合、スタンドアップは成立しません。その旨を伝え、対象を広げるか尋ねて終了します。それ以外の場合は、開始前に参加者一覧を提示して確認します。
2. 場を開く
単発の状況報告ではなく、会話を促す goal と prompt を設定します。
node "${CLAUDE_SKILL_DIR}/standup.mjs" open --force --agent facilitator \
--goal "Collapse these branches/PRs into ONE consolidated worktree: what each changed, where they overlap, which becomes the target, and the merge order." \
--prompt "Facilitated rounds. Round 1: introduce your branch and its state. Then resolve the conflicts the facilitator surfaces, round by round, until the room lands on one concrete plan (target worktree + merge order + conflict resolutions). Read-only: decide, don't merge. Register AGREE when you back the plan."
3. ラウンドごとに進行する
ターンを進行します。エージェント自身に監視ループをさせると、何も決まらないまま場が停滞することがあります。各エージェントは 1 ラウンドにつき 1 回発言します(読み取り → 投稿 → 復帰)。ラウンドの間に読み返し、まだ必要なエージェントを呼び戻します。
起動したエージェントには CLAUDE_SKILL_DIR が引き継がれないため、一度解決し、実際のパスを各エージェントへの指示に貼り付けます。
echo "${CLAUDE_SKILL_DIR}"
ラウンド 1 — 自己紹介(全員に 1 つの Task メッセージを送り、同時に実行させます)。 各エージェントへの指示:
あなたはスタンドアップのグループチャットに参加する
<branch>(PR の場合はpr-<number>)です。<skill-dir>/agent-brief.mdを読み、その指示に従って役割を果たしてください。場は~/.claude-mem/STANDUP.mdです。node "<skill-dir>/standup.mjs" post …で発言し、… readで状況を確認してください。まず状況を把握します(cd "<path>"、git log --oneline origin/main..HEAD、git status --short、git diff --stat origin/main...HEAD。PR の場合はgh pr view/diff <number>)。次に、ブランチ、その実際の状態、どのように取り込むべきかを 1 回のターンで投稿してください。読み取り専用です。その後、戻ってください。
調整。 エージェントが戻ったら、場を read し、未解決項目(重複、競合、競合する実装、未決定の対象/順序)を列挙します。何もなければ、終了に進みます。
解決ラウンド(最大約 4 回)。 未解決項目ごとに、関係するエージェントだけを、その項目についての具体的な質問とともに再起動します。まず read --since <their-name> を実行してから、自分の立場を投稿し、納得できた場合は --agree を付けるよう伝えます。再度 read し、一覧を更新します。これを繰り返します。
終了 — 必ずあなたが記録します。 未解決項目がなくなった場合、上限に達した場合、またはエージェントがエラーになった場合(「報告なし」と記録し、進行を妨げない)に終了します。その後、SUMMATION をあなた自身で記録します。エージェントが自発的に書くのを待ってはいけません。項目を並べるだけではなく、人がざっと読める平易な文章で、どのワークツリーを対象にするかとその理由、マージ順を 1 文で、そして人間に残された作業を書きます。
node "${CLAUDE_SKILL_DIR}/standup.mjs" summation --agent facilitator \
--text "Build on <worktree> — it's the only one with real code. Layer <branch>'s changes on top, then drop in the doc-only branches; skip <empty branch>. Your call before it's safe: <the one or two real decisions>. Done when it all sits in <target> and builds clean."
4. 人間に平易な言葉で説明する
ここが重要なところです。生の SUMMATION をそのまま渡すのではなく、翻訳してください。 その場にいなかった人でも、パスや行数、コミットハッシュを読み解かずに結果を理解できるようにします。まず結論を伝え、その後、人間だけが決められる少数の選択肢を提示してください。
- 分かったこと — ブランチごとに簡潔な一文で説明します。実際のコードがあるのはどれか、ドキュメントだけなのはどれか、空なのはどれかを示します。
- 計画 — 対象とマージ順を1、2文で示します。
- 判断してもらうこと — 人間が決める必要のある事項(どの実装を採用するか、何を削除するか、リスクのある事項など)だけを、具体的な質問として提示します。明確に答えが決まる質問には
AskUserQuestionを使ってください。
聞かれない限り、git の内部情報は出さないでください。未決事項が決まったら、マージを実行する計画を /do に渡してください。/do の外で自分でマージしてはいけません。
CLI
node "${CLAUDE_SKILL_DIR}/standup.mjs" <command> [--flags]
既定値:agent = git branch、file = ~/.claude-mem/STANDUP.md。書き込みはすべて、ロックを取得してアトミックに行われます。
| コマンド | 動作 |
|---|---|
worktrees [--since 4h] [--json] | worktree を新しい順に表示します。--since N{m,h,d,w} を指定すると、その期間内にアクティブだったものに絞り込みます |
prs [--since 4h] [--json] | GitHub のオープン中の PR を(gh 経由で)新しい順に表示します |
open --goal "…" --prompt "…" [--force] | 会議室を作成します(--force を指定すると、古い会議室を別の場所に移して作成します) |
join [--message "…"] | 自分を参加者に追加し、挨拶を投稿します |
post --message "…" [--agree "…"] | 発言を追加します |
agree --deliverable "…" | AGREE 発言を追加します |
watch [--timeout SEC] [--interval SEC] | 他の人が投稿するまで待機して、投稿内容を表示します(タイムアウト時は終了コード 2) |
read [--tail N] [--since AGENT] | チャットを表示します(または、AGENT の最後の発言以降の発言だけを表示します) |
status | 参加者、AGREE、合意状況の確認結果を表示します |
summation --text "…" | SUMMATION を書き込み、status: agreed に切り替えます |
起動された各エージェントは、agent-brief.md(ここに同梱)に従って発言します。これは、会議室で一人の声として参加するための手引きです。