Skip to main content
skill Claude Code CX Codex Cursor GitHub Copilot

standup · thedotmack — Claude Code skill: sync branches and PRs

A skill that runs a facilitated conversation between agents from different git branches and PRs. Each branch is its own voice, discusses its changes, finds overlaps, and agrees on merge order — all read-only, no real commits.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add thedotmack/claude-mem --skill standup -a claude-code
Open on GitHub

What standup does

standup works in four steps. First, you gather candidates — local branches by recency or specific PRs from GitHub. Then the skill opens a shared markdown file (~/.claude-mem/STANDUP.md) as a virtual meeting room: YAML frontmatter holds goal and invitation, body holds the transcript. Each agent spawns as its own task, reads what others wrote, posts its turn, returns.

You facilitate rounds: round one is introductions, then you read the room and surface conflicts or overlaps. In later rounds you respawn only agents who are involved, with the specific question. Once decisions land, you write the final summary yourself in plain language — no git internals, no hashes — a plan: which branch is the target, merge order for the rest, what to decide by hand. All real git work happens after via /do; nobody commits inside the room.

The skill needs Bash, Node.js, and git. To work with PRs you need gh (GitHub CLI). If fewer than two branches exist or there are no changes, the skill offers to widen the search window or stops.

What it helps with

  • Sync changes from multiple branches without manually resolving each merge conflict
  • Decide which branch is the target and in what order to fold in the rest
  • Discuss overlaps between PRs and pick one implementation without back-and-forth commits
  • Build a consolidation plan before pushing to main

Example prompts for the agent

  • Run standup on branches active in the last day and suggest a merge order
  • Open standup with specific PRs and local branches to figure out how to combine them
  • Show me the consolidation plan — which branch is target, which to fold in, what conflicts to resolve

How to install standup

1Skills CLI (Vercel)

npx skills add thedotmack/claude-mem --skill standup -a claude-code

2Manually: put the files in place

~/.claude/skills/standup/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/standup/

From the same set15

The whole set →
mem-search thedotmack Searches memory for solutions and context from previous coding sessions when you need to recall past work. Claude Code CX Codex Cursor +1 8,900installs smart-explore thedotmack Uses tree-sitter to map code structure and find symbols. Useful when you need to explore a codebase without loading every full file. Claude Code CX Codex Cursor +1 7,300installs make-plan thedotmack Turns a feature request into a phased plan built on real documentation instead of guesses. Useful right before you run do. Claude Code CX Codex Cursor +1 7,200installs do thedotmack The skill runs an implementation plan in phases through subagents. Use it when a plan needs execution with checks after each phase. Claude Code CX Codex Cursor +1 7,000installs knowledge-agent thedotmack Builds focused knowledge corpora from claude-mem observations and lets you query them in an AI session. Useful for reviewing past work by topic or project. Claude Code CX Codex Cursor +1 5,700installs learn-codebase thedotmack Instructs the agent to read every source file in full before starting work. Built for onboarding on unfamiliar repositories. Claude Code CX Codex Cursor +1 5,300installs how-it-works thedotmack Explains how claude-mem works behind the scenes. It covers tool observation logging, local file storage, and memory injection timing. Claude Code CX Codex Cursor +1 5,100installs pathfinder thedotmack This skill maps feature flows, finds duplicated concerns, and proposes a unified architecture. Use it to inspect a codebase before a refactor. Claude Code CX Codex Cursor +1 5,100installs

Other versions of standup

Similar

review-and-refactor official github Reviews project code against local instructions and refactors parts that need changes. Use it before review or when cleaning up an existing codebase. GitHub Copilot 11,056installs github-triage code-yeongyu Reads every open issue and PR in a repo and writes evidence-backed reports. It never comments, merges or closes anything. Claude Code CX Codex Cursor +1 2,700installs create-github-action-workflow-specification official github This skill turns an existing GitHub Actions workflow into a formal specification for AI-assisted maintenance and review. GitHub Copilot 10,745installs deploy-checklist official anthropics Builds a release-readiness checklist covering CI, reviews, migrations, flags, deployment, and rollback. Use it before shipping production changes. Claude Code CX Codex Cursor +1 5,600installs readme-blueprint-generator official github This skill reads project documentation and builds a structured README.md. It fits repositories that keep project guidance in .github/copilot and copilot-instructions.md. GitHub Copilot 9,662installs create-github-issues-feature-from-implementation-plan official github This skill turns implementation plan phases into GitHub Issues, checking for existing issues first. Use it when a finished plan needs to become trackable work. GitHub Copilot 9,440installs triage Matt Pocock This skill moves issues and external PRs through triage states, verification, and agent briefs. It fits maintainers managing an issue queue. Claude Code 990,453installs code-review Matt Pocock Reviews changes from a chosen reference point against repository standards and the originating spec. Use it for a branch, PR, or work in progress. Claude Code 789,521installs

Questions about standup

How do I install standup in Claude Code?

Run npx skills add thedotmack/claude-mem --skill standup -a claude-code, then open ~/.claude/skills/standup/SKILL.md. For other platforms, change the flag: -a codex for Codex, -a cursor for Cursor, -a gemini-cli for Gemini CLI.

What does standup do?

It runs a facilitated discussion between agents from different git branches and PRs. Each agent shows its changes, you drive rounds to surface overlaps and conflicts, then write a consolidated plan — all read-only, no actual merges.

What tools do I need for standup to work?

Bash, Node.js, and git. To work with GitHub PRs you also need gh (GitHub CLI); without it, the skill works on local branches only.

Source text

SKILL.md · Apache-2.0
---
name: standup
version: 1.0.0
description: Facilitate a read-only standup across git worktrees, branches, or PRs to compare changes and produce one consolidation plan.
allowed-tools:
  - Bash
  - Read
  - Edit
  - Task
  - AskUserQuestion
---

# 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:
  ```bash
  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:
  ```bash
  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:

```bash
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:
```bash
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:
```bash
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

```bash
node "${CLAUDE_SKILL_DIR}/standup.mjs" <command> [--flags]
```
Defaults: agent = git branch, file = `~/.claude-mem/STANDUP.md`. Every write is
atomically locked.

| command | what 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) |
| `status` | participants + 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.

© thedotmack · Apache-2.0 · thedotmack/claude-mem

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor