team-update-aggregator
Aggregate weekly team member updates from local .md/.txt files into a people-centric status report for managers. Organizes content by person (not by project): progress, plans, blockers, capacity, and manager flags. Use when preparing for 1-on-1s, weekly team reviews, or building
What it does
Team Update Aggregator
This skill reads weekly update files from your team members and compiles them into a single people-centric status report — organized by person, not by project. Each team member gets a dedicated section with progress, next-week plans, blockers, capacity notes, and manager attention flags. Output: team-status-YYYY-MM-DD.md.
Key difference from weekly-digest-synthesizer: This skill answers "How is each person doing?" — not "What's happening on each project?"
Input:
- Folder path or list of
.md/.txtfiles with team member updates - One file per person, or one file with multiple H2/H3 sections per person
- Optional: report date (defaults to today)
Output:
team-status-YYYY-MM-DD.md— structured people-centric team report
Language Detection
Detect the user's language from their message:
- If Russian (or contains Cyrillic): respond in Russian
- If English (or other Latin-script language): respond in English
- If ambiguous: respond in the language of the trigger phrase used
Instructions
Step 1: Validate Input
-
Determine input source from the user's message:
- Folder path → scan all
.mdand.txtfiles in that folder - List of files → use those files directly
- No path provided → scan the current working directory for
.mdand.txtfiles
- Folder path → scan all
-
Verify files exist and are readable:
- If no files found: stop. Report "No .md or .txt files found at [path]. Provide a folder path or list of files to process."
- If a specific file path does not exist: stop. Report "File not found: [path]. Check the path and try again."
-
Check for unsupported file formats:
- If user provides only
.docx,.xlsx,.pdf, or similar: stop. Report "Unsupported file types. This skill processes .md and .txt files only."
- If user provides only
-
Check if all files are empty:
- If all files have no readable content: stop. Report "All files are empty. No report generated."
-
Determine report date:
- If user specifies a date → use that date in output filename
- If not specified → use today's date (YYYY-MM-DD format)
Step 2: Identify Team Members
For each file, determine the owner (team member name):
- From filename:
anna.md,ivan-petrov.md,john_smith.md→ extract name, normalise to "Anna", "Ivan Petrov", "John Smith" - From H1 heading: first
# Namein the file body → use as owner - From explicit field: line starting with
Name:,Who:,Person:,От:,Автор:→ use value as owner - Multi-person file: if file contains multiple
## Nameor### Namesections → split into one owner per section - Not identified: if none of the above applies → assign owner as "Unknown — [filename]"; add flag "Owner not identified"
Step 3: Extract Content per Person
For each identified owner, extract:
- Progress: completed tasks, shipped items, closed tickets, decisions made — bullets or prose
- Next week plans: what they plan to work on next (if mentioned); mark "Not mentioned" if absent
- Blockers: anything described as blocking, waiting-on, stuck, or unresolved
- Capacity / OOO: explicit mentions of being overloaded, on leave, sick, or at partial capacity
- Manager flags: mark ⚠️ when any of these signals appear:
- Stress, burnout, frustration, or morale language
- Overload without mitigation
- Blocker unresolved for implied 1+ week
- Explicit request for help or escalation
- Out of office / sick (for visibility)
Handle sparse content:
- Empty section: include person with empty progress; add note "No updates provided"
- Only blockers, no progress: include both; add flag "No progress reported"
Step 4: Detect Cross-Team Signals
Across all extracted content:
- Shared blockers: same blocker mentioned by 2+ people → flag in Cross-Team section
- Dependencies: person A is waiting on person B → capture as dependency pair
- Unowned action items: action items without a named owner → collect in Cross-Team table
- Large team: if 10+ people in report → add note "Large team: [N] members — review for completeness"
Step 5: Check for Existing Output File
- Check if
team-status-[date].mdalready exists in the working directory:- If yes: ask user — "File team-status-[date].md already exists. Overwrite or save as team-status-[date]-v2.md?"
- Wait for response before writing
Step 6: Write Report
- Write
team-status-YYYY-MM-DD.mdusing the Output Format below - Populate all sections; mark any empty field explicitly (e.g., "None", "Not mentioned")
- Report in chat: "Report saved: team-status-[date].md — [N] members, [N] blockers, [N] flags"
Output Format
# Team Status — [Date]
**Members:** [N] | **Updates compiled:** [N] files | **Flags:** [N]
[Note if large team: "Large team: N members — review for completeness"]
---
## Summary
[2–4 sentences: overall team health, key achievements, main blockers, who needs manager attention]
**Flags requiring attention:** [Name — reason, or "None"]
---
## Team Members
### [Full Name]
- **Progress:** [completed work, 1–3 bullets]
- **Next week:** [plans or "Not mentioned"]
- **Blockers:** [blockers or "None"]
- **Capacity:** [Normal / Overloaded / Partial / OOO — if mentioned; omit if not]
- **Manager flags:** [⚠️ flag description or "—"]
### [Next Person...]
---
## Cross-Team
### Shared Blockers
- [Blocker mentioned by 2+ people — names]
### Dependencies
- [Person A] waiting on [Person B] — [what for]
### Unowned Action Items
| Action | Mentioned by | Source File |
|--------|-------------|-------------|
| [action] | [name] | [filename] |
---
## Files Processed
Files included: [list]
Files with no updates: [list or "None"]
Unknown owners: [list of files where owner was not identified, or "None"]
Field rules:
- Manager flags: apply ⚠️ only to explicit signals from the text; do not infer from absence of updates alone
- Capacity: use explicit markers only (overloaded, can't keep up, on leave, sick); do not interpret implicitly
- Summary: write from extracted content — do not invent progress or add assumptions
Edge Cases
- One file, multiple people (H2/H3 sections with names): Split by section, create one entry per person
- File with no identifiable owner: Assign "Unknown — [filename]"; add flag "Owner not identified"
- Person sent only a blocker, no progress: Include both; add flag "No progress reported"
- Out of office / sick mentioned: Add ⚠️ flag "OOO" and note in Summary
- 10+ members: Add "Large team" note at report header; proceed normally
Negative Cases
- No files found: Stop. Report "No .md or .txt files found at [path]."
- Unsupported file types only: Stop. Report "Unsupported file types. Convert to .md or .txt first."
- All files empty: Stop. Report "All files are empty. No report generated."
- Output file already exists: Ask before overwriting; offer
-v2alternative
Capabilities
Install
Quality
deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 7 github stars · SKILL.md body (7,013 chars)