mcpField
S
standup

standup

github.com/thedotmackエージェントワークフロー104.0k3.4k 回インストール今日更新
リポジトリ

standup について

standupは、別々のGit worktreeや指定したPRで作業するエージェントを調整するスキルです。共有の読み取り専用Markdownチャットで議論を進め、統合案をまとめます。人が確認した後、マージは`/do`に委ねます。

主な機能

  1. 01最近のworktreeとオープンPRを一覧表示
  2. 02ブランチエージェントの議論をラウンド制で進行
  3. 03共有Markdownファイルに会話を記録
  4. 04書き込みをアトミックロックで保護
  5. 05対象とマージ順を要約
  6. 06Gitの変更を`/do`に委ねる

活用シーン

  1. 01ブランチ間で重複する作業の調整
  2. 02対象worktreeとマージ順の決定
  3. 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(ここに同梱)に従って発言します。これは、会議室で一人の声として参加するための手引きです。

コメント