Analyzes delivery state and drafts audience-calibrated status communications. Use when asked to "write a status update", "draft a project update", "write the weekly update", "how are we tracking", or "summarize delivery health for stakeholders".
Assess delivery state across workstreams and/or produce status communications calibrated to a specific audience. Status updates tell the reader where things stand — not what was done. Activity is evidence; assessment is the point.
Any form of delivery data:
The input does not need to be organized. This skill synthesizes.
This skill operates in two modes. The PM selects the mode through how they invoke it.
Assess the delivery state. Surface risks, blockers, dependencies, and velocity concerns. Produce an internal assessment the PM uses to decide what to communicate and where to intervene.
Triggered by: "assess delivery," "what's at risk," "analyze this sprint," "how are we tracking," or any request that asks for an assessment without a communication artifact.
Analyze first (same process as Analyze mode), then produce a status communication calibrated to the specified audience. The analysis happens internally; the output is the comm.
Triggered by: "write the VP update," "draft a status update for the team," "send the weekly update," or any request that asks for a communication artifact. Requires an audience — if none specified, ask: "Who is this status update for?"
Default: If the mode is ambiguous, ask: "Do you want an assessment of where things stand, or a status update drafted for a specific audience?"
Applies to Draft mode only. Analyze mode produces an internal assessment — intake adds no value there.
A status update without a clear top-line message becomes a list of things that happened. Confirm what the PM most wants the reader to take away.
Rich input (audience named, delivery data provided, key message clear): Confirm and proceed. Example: "Status update for [audience]. Leading with [key takeaway]. Drafting now."
Moderate input (audience and data present, but no clear top-line message): Ask one targeted question:
Thin input (delivery data dumped with "write an update"): The existing audience ask fires first. Once audience is established, if the key message is unclear:
Based on the delivery data, here's the top-line message I'd lead with — tell me if this is right:
- Lead: "[Inferred assessment — e.g., 'Sprint is on track overall, but the payments integration is at risk of slipping by 3 days']"
- Emphasis for [audience]: [What this audience most needs to hear — risk, progress, an ask]
Should I lead with that, or is there something more important to surface?
Absorb all delivery data before assessing. Understand what was planned, what happened, what changed, and what's coming. If a previous status update is included, note what was flagged then so you can track whether it's resolved.
Read these files:
references/communication-quality.md — Quality criteria for the output (both modes produce communication)references/sprint-planning.md — Sprint health indicators and what they signalreferences/pm-smell-test.md — Check for smells 4 (audience mismatch), 6 (activity reported as progress), and 12 (risk buried or absent)references/audience-registers.md — Per-audience communication register for calibrating tone, depth, and framingreferences/pushback-and-negotiation.md — For risk framing and scope trade-off communicationreferences/agent-readable-output.md — Agent Block format and shared enum vocabularyIf company/norms/communication.md exists and is substantive, read it for status update conventions — who receives updates, how often, what format, what's expected.
If company/norms/team-process.md exists and is substantive, read it for sprint cadence and process context.
If company/facts/team.md exists and is substantive, read it for team structure, stakeholders, and who cares about what.
If company/facts/product.md exists and is substantive, read it for product landscape context.
If any of these files exist but are still stub templates, treat them as unavailable and say so in the output.
If no substantive company context is available, proceed — note the absence in the output.
For each workstream or body of work in the input:
Look for what the data implies but doesn't state:
What was planned vs. what's actually happening? If sprint goals were stated, assess progress toward the goals — not just task completion. If a previous status update exists, note what changed: risks that materialized, blockers that resolved, new issues that emerged.
Check for:
Output the assessment using the Analyze Mode format below. Include recommended actions — what should the PM do next based on this assessment?
Populate the Agent Block from the completed assessment:
overall_status: matches the Overall Status enumactive_blocker_count: count of Blocked items in the Workstream Status tableat_risk_workstream_count: count of At Risk items in the Workstream Status tablemax_timeline_impact_days: the largest timeline impact stated across all Risks entries (use 0 if none)escalation_needed: Yes if any Blocker entry has "Escalation needed: Yes"Identify the audience from the invocation. Calibrate:
| Audience | Lead with | Detail level | Include |
|---|---|---|---|
| VP / Leadership | Overall assessment + top risks | Summary — strategic, not operational | What you need from them |
| Team | Sprint progress + blockers | Detailed — operational, actionable | What's next, what's changed |
| Cross-functional | What they need to know + what they need to do | Interface-level — their dependencies and asks | Timeline impacts on shared work |
| Stakeholders | Progress toward commitments + risks to timeline | Mid-level — informed, not overwhelmed | When the next update comes |
If the PM's input or invocation signals urgency, crunch, incident, or high-stakes context (launch week, production issue, tight deadline, org-wide reprioritization):
## Delivery Assessment: [Sprint/Period]
### Overall Status: [On Track / At Risk / Blocked]
[1-2 sentence summary. Why this assessment.]
<!-- AGENT BLOCK -->
```yaml
agent_block:
skill: status-update
overall_status: [On Track / At Risk / Blocked]
active_blocker_count: [integer]
at_risk_workstream_count: [integer]
max_timeline_impact_days: [integer — 0 if no impact]
escalation_needed: [Yes / No]
```
<!-- /AGENT BLOCK -->
---
### Workstream Status
| Workstream | Status | Key Issue | Owner |
|------------|--------|-----------|-------|
| [Workstream 1] | [On Track / At Risk / Blocked / Complete] | [Primary issue or "Tracking well"] | [Who] |
| [Workstream 2] | ... | ... | ... |
---
### Risks
1. **[Risk]** — Severity: [High / Medium / Low]. Timeline impact: [X days/sprint]. Mitigation: [What would help].
2. **[Risk]** — ...
---
### Blockers
1. **[Blocker]** — Owner: [Who]. Duration: [How long blocked]. Escalation needed: [Yes / No].
---
### Dependencies
| Dependency | Owner | Due | Status |
|------------|-------|-----|--------|
| [What] | [Who] | [When] | [On track / At risk / Overdue] |
---
### Changes Since Last Update
- [What shifted since the last assessment — or "First assessment, no prior baseline"]
---
### Recommended Actions
- [What the PM should do next based on this assessment]
- [Conversations to have, escalations to make, scope decisions to consider]
> **Context note:** [State which substantive company files were loaded, which files were absent, and which files existed but were stub templates and therefore skipped. Note what the assessment might miss without that context.]
```
### Draft Mode
```markdown
## Status Update: [Sprint/Period] — [Audience]
### Summary
[Overall delivery state in 2-3 sentences. Lead with the assessment — on track, at risk, or blocked. Why.]
---
### What Needs Attention
- **[Risk or blocker]** — [Impact. What's being done. What help is needed.]
- **[Risk or blocker]** — [...]
---
### What's On Track
- [Workstream/item — brief status and what's expected next]
- [...]
---
### Key Wins
- [Completed items that matter to this audience — not just anything that got done]
---
### Needs From You
- [Specific asks to this audience. If none, omit this section entirely.]
---
### Next Week
- [What to expect in the next update cycle]
> **Context note:** [State which substantive company files were loaded, which files were absent, and which files existed but were stub templates and therefore skipped. Note that audience calibration was based on the stated or inferred audience.]
Draft mode only. After producing the artifact, write it to knowledge/status-updates/ using the naming convention: YYYY-MM-DD-period-status.md, where YYYY-MM-DD is today's date and period is a lowercase hyphenated slug derived from the sprint or time period named in the update. Report the saved file path in the conversation. Analyze mode output is ephemeral — do not save it.