New to Claude Skills? Learn how to install them →

thedotmack on GitHub

Standup

Free

Consolidate branch changes in a collaborative chat.

Get this skill

Free · Opens the source repo

What Standup does

The Standup skill facilitates a structured conversation among multiple git worktrees and pull requests (PRs) to consolidate changes into a single plan. This is particularly useful for teams that are working on different branches or PRs and need to reconcile their work before merging. By creating a shared markdown chat, each branch or PR is represented as an agent that can discuss its changes, overlaps, and conflicts in a read-only format. The facilitator drives the conversation, ensuring that all agents contribute to the discussion and that decisions are made collectively.

To initiate a standup, users can fill the chat room with active worktrees or PRs, either by recency or by manually selecting specific branches. Once the room is open, agents introduce their branches and discuss their current states, which allows for a clear understanding of each branch's contributions. The facilitator then leads the conversation through rounds, addressing any conflicts or overlaps that arise. This methodical approach helps teams avoid miscommunication and ensures that all perspectives are considered before finalizing a merge plan.

The final output is a summation that translates technical details into plain language, making it accessible for team members who may not be familiar with the intricacies of git. This skill is ideal for development teams that require a collaborative environment to make informed decisions about merging changes from multiple sources. By using Standup, teams can streamline their workflow and reduce the risk of conflicts during the merging process.

When to use it

Use Standup when you have multiple branches or PRs that need to be reconciled into a single plan before merging.

When not to use it

This skill is not suitable for simple merges or when only one branch is involved, as it is designed for collaborative discussions among multiple agents.

What you can build with it

Team Merging Changes

A team has several branches with overlapping changes and needs to discuss the best way to merge them into the main branch.

Resolving Conflicts

During a development cycle, multiple PRs have been created that conflict with each other, requiring a collaborative discussion to resolve.

Planning Future Work

A team wants to align their efforts across different branches and ensure that everyone is on the same page regarding the next steps.

How to install Standup

View source

1. Install with the skills CLI

npx skills add thedotmack/claude-mem/standup --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by thedotmack

standup — facilitate a group chat between branch-agents

You're the facilitator. Each of the user's git worktrees (and any PRs they pick) joins a shared markdown chat as its own agent, and the agents reconcile their scattered work into ONE consolidated worktree. You convene the room, run the conversation in rounds, and carry the outcome back — the reconciling happens in the chat, between the agents.

The room is one shared file (default ~/.claude-mem/STANDUP.md): YAML front matter holds the goal + prompt; the body is the transcript. Writes are atomically locked, so agents speak at once. It is read-only — agents decide how the merge should go; nobody commits or merges inside the room. Real git work happens afterward via /do.

1. Fill the room

Two ways, mixable:

  • By recency (common) — worktrees active in a window:

    node "${CLAUDE_SKILL_DIR}/standup.mjs" worktrees --since <1h|4h|24h|7d|all> --json
    

    Active = a commit or an uncommitted/staged/untracked edit in the window. If the user didn't name a window, offer 1h / 4h / 24h / 7d / all.

  • By hand — specific branches and/or open PRs:

    node "${CLAUDE_SKILL_DIR}/standup.mjs" worktrees --json   # local branches
    node "${CLAUDE_SKILL_DIR}/standup.mjs" prs --json         # open PRs (via gh)
    

    Show one numbered list (worktrees + PRs, with age/title); their reply is the "checkbox." If prs errors (no gh / not GitHub), carry on worktrees-only.

Zero or one candidate isn't a standup — say so, offer to widen, stop. Otherwise echo the roster to confirm before you start.

2. Open the room

Set a goal + prompt that invite a conversation, not one-shot status reports:

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. Run it as rounds

You drive the turns — if agents watch-loop on their own the room can stall with nothing decided. Each agent speaks once per round (read → post → return); you read between rounds and bring back whoever's still needed.

Spawned agents don't inherit CLAUDE_SKILL_DIR, so resolve it once and paste the real path into each brief:

echo "${CLAUDE_SKILL_DIR}"

Round 1 — intros (everyone, one Task message so they run together). Brief each:

You're <branch> (a PR is pr-<number>) in a standup group chat. Read <skill-dir>/agent-brief.md and play your part by it. The room is ~/.claude-mem/STANDUP.md; speak with node "<skill-dir>/standup.mjs" post …, catch up with … read. Get your bearings (cd "<path>", git log --oneline origin/main..HEAD, git status --short, git diff --stat origin/main...HEAD; a PR uses gh pr view/diff <number>), then post ONE turn: your branch, its real state, and how it should fold in. Read-only. Then return.

Reconcile. Once they've returned, read the room and list the open items — overlaps, conflicts, competing implementations, undecided target/order. None? Skip to the close.

Resolution rounds (cap ~4). Per open item, re-spawn only the agents it implicates, with the specific question. Tell them to read --since <their-name> first, then post their position and --agree if convinced. read again, update the list. Repeat.

Close — you always write it. Stop when the list is empty, you hit the cap, or an agent errors (note "didn't report," don't block). Then write the SUMMATION yourself — don't wait for an agent to volunteer. Write it as plain prose a human can skim, not a field dump: which worktree is the target and why, the merge order in a sentence, and what's left for the human:

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. Brief the human in plain language

This is the payoff — don't hand them the raw SUMMATION, translate it. A human who didn't watch the room should understand the outcome without decoding paths, line counts, or commit hashes. Lead with the answer, then the few choices only they can make:

  • What you found — one plain line per branch: who has real code, who's just docs, who's empty.
  • The plan — target + merge order in a sentence or two.
  • Their call — only the decisions a human must make (which implementation wins, what to drop, anything risky), as concrete questions. Use AskUserQuestion for the clear-cut ones.

Keep git internals out unless they ask. Once they've settled the open calls, hand the plan to /do to perform the merges — don't merge anything yourself outside /do.

CLI

node "${CLAUDE_SKILL_DIR}/standup.mjs" <command> [--flags]

Defaults: agent = git branch, file = ~/.claude-mem/STANDUP.md. Every write is atomically locked.

commandwhat it does
worktrees [--since 4h] [--json]worktrees newest-first; --since N{m,h,d,w} keeps those active in the window
prs [--since 4h] [--json]open GitHub PRs (via gh) newest-first
open --goal "…" --prompt "…" [--force]create the room (--force rotates an old one aside)
join [--message "…"]add yourself + say Hello
post --message "…" [--agree "…"]append a turn
agree --deliverable "…"append an AGREE turn
watch [--timeout SEC] [--interval SEC]block until someone else posts, print it (exit 2 on timeout)
read [--tail N] [--since AGENT]print the chat (or only turns after AGENT's last)
statusparticipants + AGREEs + consensus check
summation --text "…"write the SUMMATION, flip status: agreed

Each spawned agent plays its turns by agent-brief.md (bundled here) — the playbook for being one voice in the room.

Frequently asked questions about Standup

Similar skills