Skip to content
Back to skills

Standup

ASecurity

Round up a quick status pulse from every installed agent — each reports in ≤3 lines, strictly from its own role's seat, where the {{project.name}} code stands and where it's headed. Discovers the roster at runtime, fans out one read-only parallel wave, and prints a compact digest — no fixes, no board writes.

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 19, 2026
ai-agentsgo

Security analysis

A100/100

Scanned September 19, 2026

npx -y skills add dustinkeeton/wafflestack --skill standup --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Standup?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Standup
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/dustinkeeton-standup-wafflestack/badge)](https://www.skillsdirectory.com/skills/dustinkeeton-standup-wafflestack)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: standup
description: Round up a quick status pulse from every installed agent — each reports in ≤3 lines, strictly from its own role's seat, where the {{project.name}} code stands and where it's headed. Discovers the roster at runtime, fans out one read-only parallel wave, and prints a compact digest — no fixes, no board writes.
user-invocable: true
argument-hint: "[optional focus area]"
---

# Team Standup

Ask every **installed** agent for a quick, role-scoped read on the codebase, then print one compact digest. This is a **read-only pulse**: a single parallel wave of agents, each reporting from its own seat — no fixes, no file edits, no board writes, no task chains.

Unlike `audit` and `docs` (fixed rosters run through a serial task chain), standup **discovers its roster at runtime** and fans out **once, with no barriers**. It follows the `audit` skill's *Spawn-and-collect contract* minus the task chain — one wave, no barriers.

## Step 1: Enumerate the roster (dynamic — never hard-coded)

Glob the harness **agents** directory — the `agents/` directory beside `{{harness.skillsDir}}` (take `{{harness.skillsDir}}`, swap the trailing `skills` segment for `agents`, and match `*.md`). Under Claude that resolves to `.claude/agents/*.md`; under codex and agents-dir, to `.agents/agents/*.md`.

For each matched file, parse the YAML frontmatter and capture:

- `name` — the agent's `subagent_type`, used to spawn it
- `description` — its role, used to remind it of its seat and to label its digest block

Sort the files alphabetically by `name`; this is the **roster order** used for both spawning and the digest. Skip any file whose frontmatter has no `name`. Do **not** fall back to a hard-coded roster, the `waffle.lock.json` `files` map, or a config table — the glob reflects what is actually rendered into this repo.

**Empty roster** → if no agent files are found, report "No installed agents to round up." and stop.

## Step 2: Round-up — one parallel read-only wave

Spawn **every** rostered agent in a **single message** — one `Agent` call each, all in that one message — so they run concurrently as one wave (the contract's spawn step, with no chain behind it). Do **not** create a team and do **not** create tasks: this skill has no coordination barriers and no side effects. (`run_in_background: true` is fine for a large roster; the point is that the whole wave goes out at once.)

Give each agent `subagent_type: "<name>"` and this prompt, filling in `<name>`, `<description>`, and the focus clause:

> **Standup — `<name>`.** You are the `<name>` agent (<description>). Give an **extremely brief** status pulse on the {{project.name}} codebase **strictly from your own role's perspective** — the view from your seat, nothing else.
>
> - **≤3 lines total.** No preamble, no headings, no sign-off.
> - First line(s): where the code **stands** in your area right now. Final line: where it's **headed** — what you'd flag or expect next.
> - **Stay in your lane.** A PM talks backlog and priorities; a docs agent talks doc drift; a planner talks sprint/tracking health; a QA agent talks test health. **No cross-role commentary.**
> - This is **read-only**. Read whatever you need, but do **not** edit files, apply fixes, create tasks, or write to any board.
> - Output **only** your ≤3-line report. It IS your return value — not a message to anyone; do not call `SendMessage` or `TaskUpdate`.
> <focus clause>

**Focus clause** — when `$ARGUMENTS` is provided, append this line to the prompt: `> - Focus your read on: $ARGUMENTS (still strictly within your role).` Otherwise omit it.

**Collect via return values** — the contract's collection clause, with no report-back leg. Most specialists are "silent" — they carry no `SendMessage`/`TaskUpdate` tools — so never wait on a message or a task update from them. Each agent's **final message is its report**: read it directly from the returned tool result as the agent completes.

## Step 3: Digest

Once every agent has returned, assemble one compact standup — **one block per agent, in roster order**:

```
## Standup — {{project.name}}

**`<name>`** — <role in a few words>
<the agent's ≤3-line report>

**`<next-name>`** — …
```

- Preserve roster (alphabetical) order.
- **Truncate** any over-long reply to its first 3 lines (append ` …` when cut) so one chatty agent can't blow up the digest.
- If an agent failed or returned nothing, show `**<name>** — (no report)` and move on — one silent agent never blocks the round-up.

Print the digest and stop. **No board writes, no file edits, no follow-up tasks** — the pulse is the whole deliverable.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…