notify-templates

$npx mdskill add anthropics/cwc-workshops/notify-templates

Fill notification templates for alerts, emails, and escalations.

  • Generates formatted messages for low-stock alerts and supplier communications.
  • Depends on inventory data, PO details, and supplier contact information.
  • Selects content based on task keywords like notify, alert, or email.
  • Outputs filled templates directly to the outbox without subagent creation.

SKILL.md

.github/skills/notify-templatesView on GitHub ↗
---
name: notify-templates
description: Fixed-format templates for Slack alerts, supplier emails, and escalations. Load this whenever the task is "notify", "alert", "email", or "tell ops".
---
<!-- Copyright 2026 Anthropic PBC -->
<!-- SPDX-License-Identifier: Apache-2.0 -->


# Notification Templates

Notifications are template fills, not creative writing. **Do not spawn a subagent for this.** Fill the slots from data you already have, then append the result to the outbox.

## Low-stock Slack alert

```
:warning: *Low stock* — {{sku}} ({{product_name}})
On hand: {{on_hand}} · Reorder point: {{reorder_point}} · Days of cover: {{days_cover}}
{{action_line}}
```

`action_line` is either `PO {{po_id}} placed for {{qty}} units (ETA {{eta}})` or `Awaiting review — {{reason}}`.

## Supplier email

```
Subject: PO {{po_id}} — {{qty}} × {{sku}}

Hi {{supplier_name}},

Please confirm PO {{po_id}} for {{qty}} units of {{sku}} ({{product_name}}) at ${{unit_price}}/unit.
Requested delivery: {{requested_date}}. {{expedite_note}}

Thanks,
StockPilot
```

## Escalation (human review needed)

```
:octagonal_sign: *Review needed* — {{sku}}
Recommended qty: {{qty}} (confidence {{confidence}})
Flags: {{flags_csv}}
Reason: {{reason}}
```

## Routing (who gets what)

| Audience | When | Example |
|---|---|---|
| `ops` channel (default) | Low-stock alerts, reorder recs, cycle-count adjustments, weekly reports. | Almost everything. |
| `ops` with `@here` | Active or imminent stockout on a top-100 SKU, or a supplier delay that causes a stockout within 7 days. | "0 on hand at WH-EAST, network out in <1d" |
| Purchasing lead (DM/email, not channel) | Single PO > $25k, deviation from the scored supplier, or new-supplier consideration. | |
| Finance | Only if open-PO balance for one supplier would exceed $100k, or suspected duplicate POs. Nothing routine. | |

When you escalate beyond the default channel, add one line saying which
threshold was crossed.

## Batch, don't spam

For sweeps and daily checks, send **one summary notification**, not one per
SKU. The low-stock template above is for a single-SKU task; for a sweep,
compose a single message listing the actioned SKUs (and any deferred) and
send it once at the end.

**When the task explicitly asks for one alert per SKU** (e.g. "send a
personalized alert for each of the top 10"): fill the template once per SKU
and write all lines to the outbox in one Bash heredoc, like:

```bash
python -c '
import json
rows = [...top-10 from batch_days_of_cover.py...]
with open("/mnt/user/sinks/outbox.jsonl", "a") as f:
    for r in rows:
        f.write(json.dumps({"channel": "ops", "sku": r["sku"],
                            "message": f":warning: Low stock — {r[\"sku\"]} ..."}) + "\n")
'
```

Do **not** call `send_slack_alert` (or any subagent) once per SKU — that's
N model round-trips for template-filling.

After sending a batch, your final response should be a **brief confirmation**
("✓ 10 alerts sent to ops — see outbox") plus a compact table of SKU + on-hand
+ days-of-cover. Do not echo the full alert text in your reply; it's already
in the outbox.

## How to send

Append directly to `/mnt/user/sinks/outbox.jsonl` via Bash — one JSON object
per line, e.g.:

```bash
python -c 'import json; print(json.dumps({"channel": "ops", "sku": "SKU-0012", "message": "..."}))' \
  >> /mnt/user/sinks/outbox.jsonl
```

Use `json.dumps` so newlines in the message are escaped (raw `echo` would
break the JSONL). That's the whole job: one read for the data you need (if
you don't have it), one append. If you're making more than two calls to send
a notification, you've over-engineered it.

More from anthropics/cwc-workshops

SkillDescription
edgartools-sec-dataHow to pull SEC EDGAR data with the edgartools Python package — company lookup, filings, XBRL financial statements, and filing sections like Item 1A risk factors. Use whenever a task involves SEC filings, 10-K/10-Q data, or company financials.
forecastingHow to produce a demand forecast for a SKU, and when to delegate that to a subagent vs. compute it yourself. Load this for any task involving "forecast", "how much will we sell", "next month", promos, or seasonal SKUs.
incident-triage-runbookThe SRE team's runbook for triaging production latency and error-rate incidents. Use this whenever investigating an incident, a latency spike, elevated error rates, or when asked "what caused X" about a production service.
miningWhere diamonds spawn in Minecraft 1.20.
postmortem-reportHow the SRE team writes a postmortem PDF. Use this whenever asked for a postmortem, an incident report, a write-up to share, or a PDF of what happened.
reorder-policyHow to decide whether and how much to reorder a SKU. Load this whenever a task involves reorder recommendations, purchase orders, or "should we restock" questions.
submit-solutionGuide a workshop attendee through committing their starter-agent decomposition and opening a PR with their solution + workshop feedback. Invoke when the user says "submit", "I'm done", "open a PR", or asks how to share their solution.
supplier-selectionHow to rank and pick a supplier for a SKU. Load this whenever a task involves choosing a supplier, comparing quotes, or creating a purchase order.
weekly-reportStructure and data sources for the weekly inventory report. Load this when the task is "weekly report", "Monday report", or "summarize inventory status".
workshopWorkshop coach for the Research Desk (SEC agents) workshop. Use when the user types /workshop, asks for a workshop act or module ("act 2", "next act", "where am I"), wants a TODO(workshop-N) implemented or explained, or asks for help following WORKSHOP.md.