Skip to main content
AIDiveForge AIDiveForge
📣

Standup Note Synthesizer

Productivity & Ops · by AIDiveForge · Apr 20, 2026 · Beginner

Combine team standup notes while preserving blockers and ownership.

Get a team digest with blockers first, then progress and next actions.

Free · 2 KB · SKILL.md, instructions and example files. Provide dated notes and participant names.

A worked example

A small example to try before using your own data.

Input

{
  "Maya": {
    "done": "API validation",
    "next": "Integration test",
    "blocker": "Waiting for Leo’s fixture"
  },
  "Leo": {
    "done": "Fixture draft",
    "next": "Review fixture",
    "blocker": null
  }
}

Expected result

Blocker: Maya’s integration test is waiting on Leo’s fixture. Progress: API validation is complete; Leo has a fixture draft. Next: Leo reviews the fixture, then Maya runs integration tests. No delivery date was supplied.

What to check: A fixture draft is not a delivered fixture; preserve both people’s status and the dependency.

Limits: This is a status digest, not authorization to assign new work or send messages.

Worked example included. Model-specific performance and vendor compatibility have not been benchmarked.

Installation options and other formats

Install this skill

An agent skill starts with SKILL.md. The ZIP also includes its examples and any helper scripts. Drop the file into your tool of choice — or pick a different format if you use Cursor, Windsurf, Copilot, or something else.

Download SKILL.md
python3 - <<'ADF_SKILL_INSTALL'
import hashlib, io, os, stat, tempfile, urllib.request, zipfile
from pathlib import Path, PurePosixPath
folder = "standup-note-synthesizer"
root = Path(os.environ.get('ADF_SKILL_ROOT', str(Path.home() / '.claude' / 'skills'))).expanduser()
destination = root / folder
if destination.exists() or destination.is_symlink():
    raise SystemExit('An installation already exists. Back it up and merge the ZIP deliberately.')
root.mkdir(parents=True, exist_ok=True)
request = urllib.request.Request("https://aidiveforge.com/skill/standup-note-synthesizer.zip", headers={'User-Agent': 'AIDiveForge-Resource-Installer/1.0 (+https://aidiveforge.com/skills/)'})
with urllib.request.urlopen(request, timeout=30) as response:
    data = response.read(8 * 1024 * 1024 + 1)
if len(data) > 8 * 1024 * 1024 or hashlib.sha256(data).hexdigest() != "5bed7955f17daeaf7214c80be161256ad229f4bb1396469bef7b6e1a5b3cacda":
    raise SystemExit('The download did not match this reviewed bundle. No files were installed.')
with zipfile.ZipFile(io.BytesIO(data)) as archive, tempfile.TemporaryDirectory(prefix='.adf-skill-', dir=root) as temporary:
    members = archive.infolist()
    if len(members) > 100 or sum(m.file_size for m in members) > 16 * 1024 * 1024:
        raise SystemExit('Unexpected archive size')
    for member in members:
        name = PurePosixPath(member.filename)
        if name.is_absolute() or '..' in name.parts or not name.parts or name.parts[0] != folder or '\\' in member.filename or stat.S_ISLNK(member.external_attr >> 16):
            raise SystemExit('Unsafe archive entry; nothing was installed')
        target = Path(temporary).joinpath(*name.parts)
        if member.is_dir():
            target.mkdir(parents=True, exist_ok=True)
        else:
            target.parent.mkdir(parents=True, exist_ok=True)
            with target.open('xb') as stream:
                stream.write(archive.read(member))
    staged = Path(temporary) / folder
    if not (staged / 'SKILL.md').is_file() or destination.exists() or destination.is_symlink():
        raise SystemExit('The skill could not be installed without replacing existing data')
    os.rename(staged, destination)
print('Installed the complete skill folder:', destination)
ADF_SKILL_INSTALL

Claude Code: ~/.claude/skills/standup-note-synthesizer/SKILL.md. Codex: ~/.codex/skills/standup-note-synthesizer/SKILL.md. Keep the complete ZIP folder when helper scripts are included.

🧠 Why it works

A fixture draft is not a delivered fixture; preserve both people’s status and the dependency.

⚙️ How it works

  1. Keep each person’s completed work, next work and blockers distinct.
  1. Group related work without collapsing different owners or turning plans into completed work.
  1. Surface blockers with the stated dependency and owner; mark missing owners explicitly.
  1. Identify contradictions or stale status that needs clarification rather than choosing a convenient version.
  1. Return a concise digest with links or note locators when supplied.

Description

Get a team digest with blockers first, then progress and next actions.

Provide dated notes and participant names.

Limits: This is a status digest, not authorization to assign new work or send messages.

Recommended Use

Tools and workflow packs this skill pairs well with. Forge picks are auto-generated from category + capability signals; Community picks are added by people who've used the pairing.