Use when composing a Matrix announcement — skill release, version bump, weekly digest, breaking-change heads-up, postmortem, RFC, multi-skill pipeline summary, or any agent-authored room post longer than a single line. Trigger before any matrix-send call that produces structured content. Companion to matrix-communication.
Content rules for Matrix announcements. matrix-communication does the sending.
The five rules
One headline, one purpose.
formatted_body in the HTML subset, not Markdown.body is the plaintext fallback — clients aren't required to parse Markdown.
Lists beat paragraphs. Enumerable items — findings, projects, failures, tickets — are a <ul>, however long each runs. A bold-led paragraph is emphasis, not structure.
Wrap code — and name the thing itself. Commands, paths, versions, IDs, env vars in <code>; multi-line in <pre><code class="language-…">. Name the identifier, not a category standing in for it (html-subset.md).
Layout > words → render an HTML card to PNG. Comparisons, dashboards and multi-row tables die in formatted_body.
Type tags (pick one — never stack)
New skill first release · Release feature version · Patch bugfix-only · Digest weekly roundup · Heads-up breaking change or deprecation · Postmortem incident · Findings investigation or audit · RFC proposal seeking feedback
Findings reports group by category of finding, never by who was wrong (structure.md).
Glyphs
One leading glyph at most. Never trailing decoration, multi-emoji ladders, 🚀, or 🎉. Approved: 🤖 bot · 📦 release · 🔧 tooling · 🛡 security · ⚠️ heads-up · 📋 digest · 🔬 RFC · 🚑 hotfix · 🔥 postmortem · 🔎 findings · ✨ new capability (sparingly).
Pre-send checklist
One-line title at 1280px, opening with the change — not "we're excited to".
URLs wrapped in <a>, destination as text.
Every entity is a link: issue keys (even mid-sentence), versions → release page, MRs/PRs (project/path!N / org/repo#N), pipelines, commits. Status updates: one item per line, linked key first, blank lines between.
Rules 3–5 applied: list structure, code wrapped, one glyph at most.
Findings headings name the category, not the person.
body reads standalone, not stripped HTML.
m.notice for unattended automation, m.text otherwise; no @room unless it is an outage.
Under 3000 chars, or threaded; image card if layout-heavy.
References
In references/:
html-subset.md — allowed/banned tags, data-mx-*, naming the identifier
structure.md — skeleton, length budget, m.text vs m.notice, how to send
text-templates.md · templates/ · gallery.html — skeletons, HTML cards, preview
1---2name: matrix-announcement3description: Use when composing a Matrix announcement — skill release, version bump, weekly digest, breaking-change heads-up, postmortem, RFC, multi-skill pipeline summary, or any agent-authored room post longer than a single line. Trigger before any matrix-send call that produces structured content. Companion to matrix-communication.4license: (MIT AND CC-BY-SA-4.0). See LICENSE-MIT and LICENSE-CC-BY-SA-4.05---67# Matrix Announcement89Content rules for Matrix announcements. `matrix-communication` does the sending.1011## The five rules12131. **One headline, one purpose.**142. **`formatted_body` in the HTML subset, not Markdown.** `body` is the plaintext fallback — clients aren't required to parse Markdown.153. **Lists beat paragraphs.** Enumerable items — findings, projects, failures, tickets — are a `<ul>`, however long each runs. A bold-led paragraph is emphasis, not structure.164. **Wrap code — and name the thing itself.** Commands, paths, versions, IDs, env vars in `<code>`; multi-line in `<pre><code class="language-…">`. Name the identifier, not a category standing in for it (`html-subset.md`).175. **Layout > words → render an HTML card to PNG.** Comparisons, dashboards and multi-row tables die in `formatted_body`.1819## Type tags (pick one — never stack)2021`New skill` first release · `Release` feature version · `Patch` bugfix-only · `Digest` weekly roundup · `Heads-up` breaking change or deprecation · `Postmortem` incident · `Findings` investigation or audit · `RFC` proposal seeking feedback2223Findings reports group by category of finding, never by who was wrong (`structure.md`).2425## Glyphs2627One leading glyph at most. **Never** trailing decoration, multi-emoji ladders, 🚀, or 🎉. Approved: 🤖 bot · 📦 release · 🔧 tooling · 🛡 security · ⚠️ heads-up · 📋 digest · 🔬 RFC · 🚑 hotfix · 🔥 postmortem · 🔎 findings · ✨ new capability (sparingly).2829## Pre-send checklist3031- [ ] One-line title at 1280px, opening with the change — not "we're excited to".32- [ ] URLs wrapped in `<a>`, destination as text.33- [ ] Every entity is a link: issue keys (even mid-sentence), versions → release page, MRs/PRs (`project/path!N` / `org/repo#N`), pipelines, commits. Status updates: one item per line, linked key first, blank lines between.34- [ ] Rules 3–5 applied: list structure, code wrapped, one glyph at most.35- [ ] Findings headings name the category, not the person.36- [ ] `body` reads standalone, not stripped HTML.37- [ ] `m.notice` for unattended automation, `m.text` otherwise; no `@room` unless it is an outage.38- [ ] Under 3000 chars, or threaded; image card if layout-heavy.3940## References4142In `references/`:4344- `html-subset.md` — allowed/banned tags, `data-mx-*`, naming the identifier45- `structure.md` — skeleton, length budget, `m.text` vs `m.notice`, **how to send**46- `glyphs.md` · `anti-patterns.md` — glyph table; wall-of-text, emoji ladder, mention storm47- `image-cards.md` — chromium → upload → `m.image`48- `threading.md` — threads, mentions, edits, redactions49- `text-templates.md` · `templates/` · `gallery.html` — skeletons, HTML cards, preview
Run npx skillmds@latest add netresearch/matrix-announcement in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Use when composing a Matrix announcement — skill release, version bump, weekly digest, breaking-change heads-up, postmortem, RFC, multi-skill pipeline summary, or any agent-authored room post longer than a single line. Trigger before any matrix-send call that produces structured content. Companion to matrix-communication. It is listed under DevOps & Infra on SkillMD.
This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free. This skill is licensed under (MIT AND CC-BY-SA-4.
netresearch (@netresearch) published this skill. Their other Agent Skills are listed on their SkillMD profile.