communication-structure
Skill2 starsChanged 27 days agoMITView on GitHub
Use BEFORE sending any human-facing message (PR body, issue/PR comment, status update, reply) or producing a report, plan, doc, summary or table. Forces BLUF, one ask, core value only, zero AI-slop before you draft. Skip for chat with the user.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- remigiusz-antczak/deep-code-reviewword for word, first seen Oct 16, 2026
Other versions1 project uses a version of this.
Word for word · 1
- remigiusz-antczak/deep-code-review★ 2100% same
Edited · 0
None found.
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository12 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- agentic-ceoSkill
- agentic-deliverySkill
- business-opsSkill
- contributionSkill
- deep-code-reviewSkill
- growth-analyticsSkill
- idea-criticSkill
- positioningSkill
- product-discoverySkill
- product-output-safetySkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
14 rules. About 0 are common, 12 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈12
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 34
Key figure line: When the source gives a deciding figure, one line Key figure: <figure> <what it measures> states it exactly as the source …
- Distinctive: line 35
Add nothing the source lacks: No number, date, owner, recommendation, rationale, command or promise the author did not give.
- Distinctive: line 59
No effort counts ("12 tasks", PRs, "% complete") and no "coming next week".
- Distinctive: line 92
Read line 1 alone. Does it stand as the whole message?
- Distinctive: line 94
Every paragraph after the first changes what the reader does, or it's cut.
- Very specific: line 95
Every number, date and name is in the source.
- Distinctive: line 102
Before: "So I looked into why the dashboard was showing no data.
- Distinctive: line 105
After: "Deploy succeeded; the dashboard is empty because the nightly sync never ran after it.
- Distinctive: line 109
Before: "Thanks for looking!
- Distinctive: line 110
After: "Empty state: skeleton loader (matches the app) vs.
- Distinctive: line 115
Before: "12 tasks done, 40 PRs merged.
- Distinctive: line 116
After: "The export button works for customers: verified-on-the-dashboard export page.
- Distinctive: line 121
Before: "Strong progress — we've closed the vast majority of the open items." After: "<closed> / <total> backlog items closed.
- Distinctive: line 122
After: "<closed> / <total> backlog items closed.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Communication structure
Governs the structure of anything a human reads without you there to
narrate it — a message (PR body, issue/PR comment, status update, reply) or a
deliverable (a report, plan, doc, summary, table). Same prose-voice boundary as
idea-critic: persisted artifacts stay normal English, never compressed chat
shorthand. This is about shape and length, not vocabulary. Lookup table:
INDEX.md; read it instead of opening references blindly.
The rule
- BLUF. Line 1 is the answer: the outcome, the number, the ask, in 30 words or fewer. Everything after it is support the reader can skip without losing the decision. No greeting, background or "This PR..." opener.
- One decision, explicit. An ask names its owner and date when the source
gives them ("Dana, please pick A or B by Tuesday"), addressed to the reader;
with none given, leave them out; stand-ins ("owner unassigned") fail
comms_lint.py. A message ends on the ask. A PR body asks in its own words; "Reply A or B" is for messages, never PRs. - Name the options in the ask. Line 1 names each option by what it is ("hire temp paralegals, outsource, or delay"), never by a bare letter, with the owner and the date the source gives.
- Key figure line. When the source gives a deciding figure, one line
Key figure: <figure> <what it measures>states it exactly as the source does, near the top. - Add nothing the source lacks. No number, date, owner, recommendation,
rationale, command or promise the author did not give. Keep an author's lean at
its stated strength ("leaning B", not "I recommend B"); with no view given, name the
options and who decides. A derived figure shows its basis; an unknown is
named ("insert overhead: not measured").
comms_lint.py --sourcechecks this. - Per-artifact shape and budget. Status update, PR body, release note, decision
memo or executive summary, incident summary, README section, comment, meeting notes: read
references/artifact-templates.mdbefore you draft.comms_lint.py --kind <kind> --file <draft>scores each rule and prints the exact fix (exit 1 = below the bar). The operating layer'sagentic-delivery/scripts/comms_guard.pyhook runs it before a PR or tracker write and warns; it never blocks. - Send-ready, complete. Full sentences a reader can act on as written: no
<placeholder>, no note to the sender (word count, "owner/deadline" remark), no emoji beyond ✅/⏳ marks. Length follows the facts the reader needs; the reference budgets are lint ceilings, not targets, and cutting never drops a source fact. - Scannable. Bold the one load-bearing sentence. Short paragraphs. A list only when every item is parallel and load-bearing; keep the 1-2 open questions that change the decision and push the rest to the doc or PR.
- Their next action, not your process. Drop how you worked; keep every option, trade-off, cost and reason the source states, since those are what the reader decides on.
- A stakeholder-facing update states verified present-tense outcomes only: what works on the surface they use, in plain value terms, checked there before you write it (✅ = verified, names where; ⏳ = pending; neutral facts unmarked). No effort counts ("12 tasks", PRs, "% complete") and no "coming next week".
- Status updates for leadership (tracker project updates, issue status comments,
owner hand-offs) use a fixed seven-part structure. Read
references/leadership-status-update.md;scripts/status_update_lint.pychecks it. - Status vocabulary: merged, deployed, verified-on-
<page>are distinct. "live", "shipped to users" and "done" claim the last one and need averified-on-<page>orjourney:reference nearby; else say "merged" or "deployed, unverified".scripts/status_vocab_lint.py --file <update.md>flags the rest. - Numbers over adjectives. "40s to 6s" beats "significantly faster." A
headline metric states the exact measured value and the exact target on the
same line (
X / Y,X of Y), computed at report time, never rounded toward the desired outcome. Only descriptive language ("mostly," "on track") with no paired numbers is incomplete. If the exact number is unknown, say so.
Deliverables, not just messages
The message rules apply to a deliverable (report, plan, doc, table) except the 30-second cap: it is as long as its content requires and no longer. BLUF still comes first, every section earns its place, and Cut on sight applies in full: no filler, no restated prompt, no marketing adjectives, no summary-of-the-summary. This is the suite's no-slop output contract; other skills link to it.
Cut on sight
"You're right" / "great point." Hedges ("it depends", "I think maybe", "could potentially") — but keep material uncertainty: "the sync may not have run; its log is unavailable" is evidence, not a hedge. Cut the reflexive qualifier, never the honest unknown. Restating the question. Filler adjectives ("comprehensive", "robust", "seamless"). A summary of the summary. Take a position only if the author gave one; if two are live, name both and who decides.
Sanity check
- Read line 1 alone. Does it stand as the whole message? If not, promote it.
- Count the asks. More than one → split, or pick the one that blocks the reader.
- Every paragraph after the first changes what the reader does, or it's cut.
- Every number, date and name is in the source. Run
comms_lint.py. - To test a draft as a reader, run
scripts/reader_check.pywith a question set fromevals/reader-checks.json(decision, headline figure, costs and consequence answerable from the text alone).
Before → After
Status update. Before: "So I looked into why the dashboard was showing no data. I checked a few things... I think the nightly sync job isn't running after a deploy... Not 100% sure, but running it manually should fix it — let me know if you want me to try." After: "Deploy succeeded; the dashboard is empty because the nightly sync never ran after it. Running it now. Please confirm production, not staging, today."
PR body. Before: "Thanks for looking! There are kind of two ways to go on the empty state..." After: "Empty state: skeleton loader (matches the app) vs. a 'no data yet' message (clearer for new users). Wen, please pick one." (the author's lean, if any, stays as stated; no invented recommendation, date or stand-in)
Stakeholder update. Before: "12 tasks done, 40 PRs merged. The export button is live. Saved filters ship next week." After: "The export button works for customers: verified-on-the-dashboard export page. Saved filters: no date promised." (effort counts and the promise are dropped; an unchecked claim is flagged in the lead, never asserted)
Progress status, exact vs. flattering.
Before: "Strong progress — we've closed the vast majority of the open items."
After: "<closed> / <total> backlog items closed. Owner-blocked ones listed
below." (the source's counts replace the brackets; if it gives none, say the count is unknown)
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

