
standup
Facilitate a read-only standup across git worktrees, branches, or PRs to compare changes and produce one consolidation plan.
- Installs
- 3.4K
- Last 24h
- +15
- Trending rank
- #7032
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/thedotmack/claude-mem --skill standup- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads standup automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
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> --jsonActive = 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
prserrors (nogh/ 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 ispr-<number>) in a standup group chat. Read<skill-dir>/agent-brief.mdand play your part by it. The room is~/.claude-mem/STANDUP.md; speak withnode "<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 usesgh 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
AskUserQuestionfor 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.
| 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.
FAQ
What does the standup skill do?
Facilitate a read-only standup across git worktrees, branches, or PRs to compare changes and produce one consolidation plan.
How do I install standup?
Run npx skills add https://github.com/thedotmack/claude-mem --skill standup in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/standup/ (personal) or .claude/skills/standup/ (project).
Which AI agents can use standup?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is standup safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains standup?
It is published by thedotmack in thedotmack/claude-mem. It has 3,388 recorded installs.
More from thedotmack/claude-mem
mem-search
thedotmack/claude-mem
This skill should be used when the user asks to "search memory", "what do you remember about X", "check claude-mem", "mem search", "find past observations", "what did we do last session", or wants prior-session context about a project, decision, file, or task. Searches the user's Claude-Mem (cmem.ai) memory.
smart-explore
thedotmack/claude-mem
Token-optimized structural code search using tree-sitter AST parsing. Use instead of reading full files when you need to understand code structure, find functions, or explore a codebase efficiently.
make-plan
thedotmack/claude-mem
Create a detailed, phased implementation plan with documentation discovery. Use when asked to plan a feature, task, or multi-step implementation — especially before executing with do.
do
thedotmack/claude-mem
Execute a phased implementation plan using subagents. Use when asked to execute, run, or carry out a plan — especially one created by make-plan.
timeline-report
thedotmack/claude-mem
Generate a "Journey Into [Project]" narrative report analyzing a project's entire development history from claude-mem's timeline. Use when asked for a timeline report, project history analysis, development journey, or full project report.
knowledge-agent
thedotmack/claude-mem
Build and query AI-powered knowledge bases from claude-mem observations. Use when users want to create focused "brains" from their observation history, ask questions about past work patterns, or compile expertise on specific topics.
Popular code quality & workflow skills
grill-me
mattpocock/skills
A relentless interview to sharpen a plan or design.
improve-codebase-architecture
mattpocock/skills
Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.
handoff
mattpocock/skills
Compact the current conversation into a handoff document for another agent to pick up.
domain-modeling
mattpocock/skills
Build and sharpen a project's domain model. Use when discussing codebase terminology, writing or editing a GLOSSARY.md, or recording or editing an ADR.
codebase-design
mattpocock/skills
Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary.
diagnosing-bugs
mattpocock/skills
Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.