Prepare structured meeting agendas and pre-reads from task board, artifacts, and team context
Use this skill when tasked with preparing for a meeting, review session, planning workshop, or any structured discussion. This skill gathers context from the task board, artifact registry, and agent mail to produce a ready-to-use agenda with time boxes, decision items, pre-read materials, and an action items template.
# Meeting Agenda: [Title]
**Date:** YYYY-MM-DD
**Time:** HH:MM - HH:MM (N minutes)
**Facilitator:** [name]
**Attendees:** [list]
## Agenda
| # | Topic | Owner | Time | Objective |
|---|-------|-------|------|-----------|
| 1 | ... | ... | N min | Inform / Discuss / Decide |
## Decision Items
- [ ] D1: [decision description] — Owner: [name]
## Pre-Read Materials
| Document | Location | Why to Read |
|----------|----------|-------------|
| ... | ... | ... |
## Action Items (to be filled during meeting)
| # | Action | Owner | Due | Status |
|---|--------|-------|-----|--------|
| A1 | | | | |
echo "=== Task Board Summary ==="
ALL_TASKS=$(bash /home/shared/scripts/task.sh list 2>/dev/null)
echo "$ALL_TASKS" > /tmp/meeting-tasks.json
echo "$ALL_TASKS" | jq '
{
total: length,
by_status: (group_by(.status) | map({status: .[0].status, count: length})),
in_progress: [.[] | select(.status == "in_progress") | {id: .id, subject: .subject, owner: .owner}],
blocked: [.[] | select(.status == "pending" and (.blocked_by | length) > 0) | {id: .id, subject: .subject, blocked_by: .blocked_by}],
failed: [.[] | select(.status == "failed") | {id: .id, subject: .subject, owner: .owner}],
recently_completed: [.[] | select(.status == "completed") | {id: .id, subject: .subject, owner: .owner}]
}
' 2>/dev/null
echo ""
echo "=== Recent Artifacts ==="
ARTIFACTS=$(bash /home/shared/scripts/artifact.sh list 2>/dev/null)
echo "$ARTIFACTS" > /tmp/meeting-artifacts.json
echo "$ARTIFACTS" | jq '
sort_by(.registered_at) | reverse | .[0:10] |
.[] | {path: .path, description: .description, producer: .producer}
' 2>/dev/null
echo ""
echo "=== Unread Mail ==="
mail -f ~/Maildir -H 2>/dev/null | tail -20
echo ""
echo "=== Team Roster ==="
for agent_home in /home/*/; do
agent=$(basename "$agent_home")
[ "$agent" = "shared" ] && continue
ROLE=$(getent passwd "$agent" 2>/dev/null | cut -d: -f5)
echo " $agent ($ROLE)"
done
echo ""
echo "=== Events (last 20) ==="
EVENTS_FILE="/home/shared/events.jsonl"
if [ -f "$EVENTS_FILE" ]; then
tail -20 "$EVENTS_FILE" | jq -c '{ts: .timestamp, type: .type, agent: .agent, msg: .message}' 2>/dev/null
fi
python3 <<'PYEOF'
import json
# Load context