author-message
Skill0 starsChanged 14 days agoMITView on GitHub
Draft outbound prose posted on the user's behalf — PR descriptions, PR review comments, Slack messages, Linear and Notion comments or issue bodies, commit messages. Use this BEFORE writing any message to an external service, not after. Produces a draft that leads with the conclusion and holds supporting detail in reserve.
In this repository16 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- skills/create-repo/CLAUDE.mdCLAUDE.md
- author-e2eSkill
- code-reviewSkill
- create-repoSkill
- deploy-awsSkill
- do-fixesSkill
- do-workSkill
- plan-reviewSkill
- plan-workSkill
- setup-agent-skillsSkill
- solve-take-homeSkill
- start-workSkill
- super-workSkill
- sync-guidanceSkill
- wtfSkill
The file
We split this skill into the rules it gives an agent
3 rules. About 0 are common, 3 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 33
Do not add a closing summary, a restatement, or a sign-off.
- Distinctive: line 41
Test plans and verification narration where CI already reports it
- Distinctive: line 90
Read the draft once and ask: what is the reader supposed to do after reading this?
≈ “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
Author an outbound message
You are about to post something a human will read. Draft it here first.
The rule
Give the reader the decision and enough to act on it. Everything else is available if they ask.
Selection, not compression
The failure this skill exists to prevent is not long sentences. It is including everything you know. Shortening the prose while keeping every point produces a dense wall that is harder to read, not easier.
So do not compress. Cut whole points. The test for each one:
Would this detail change what the reader does next?
No → it does not go in the message. It stays available; you can answer if asked.
Corollary: never restate what the reader already has open. On a PR, the code is on screen. In a thread, the thread is above. In a ticket, the description is right there. Re-narrating it costs the reader time and tells them nothing.
Default shape
- The decision, finding, or ask — one sentence, first.
- Why, if the reader could not infer it — one or two sentences.
- Stop.
Do not add a closing summary, a restatement, or a sign-off.
Cut these, always
- Rationale chains and the path you took to the answer ("I looked at X, then found Y, which led to Z")
- Alternatives you considered and rejected, unless the reader is being asked to weigh in on the choice
- Restating the diff, the file list, or what the code plainly shows
- Research, sourcing, or process narration — the reader wants the conclusion, not the method
- Test plans and verification narration where CI already reports it
- Preamble ("Just wanted to flag…"), and status ladders (
✅ Done,🚀 Shipped) - Stacked hedges. One calibration word is enough.
Keep these
- The decision, finding, or ask
- Whatever the reader needs in order to disagree with you — if you cut the grounds for objection, you have not been concise, you have been evasive
- Anything genuinely not recoverable from the artifact the reader is looking at
- Non-obvious constraints, gotchas, or blast radius
Short, not clipped
Concise means fewer points, not compressed writing. Write complete sentences. Spell out terms. No arrow chains (A → B → fails), no invented shorthand, no hyphen-stacked compounds. If forced to choose between short and clear, choose clear.
Per surface
PR description. If the repo has its own PR template or create-pr guidance, that wins — follow it and apply the selection rule within it. Otherwise: the problem in one sentence, the fix in one sentence, and why it works in one or two. No bullet summary of files touched. No test plan section.
PR review comment. Three sentences is the default, six the ceiling. State what the code should do differently and why. A comment explaining a decision states the decision and the reason — not the investigation behind it. If a point needs more than six sentences, it is a conversation, not a comment: say the short version and offer to go deeper.
Slack. One short paragraph. Lead with what you need from them or what they need to know. No preamble. If it needs sections and headers, it is a doc — write the doc and link it.
Linear / Notion comment. Same as a PR comment. Ticket bodies carry more, but state the ask before the background.
Commit message. One short paragraph: what was wrong and the fix. No consequence chains, no Result: / Symptom: sections, no bullet list of every place the bug surfaced.
Examples
PR comment explaining a tentative choice
BAD:
I went with the token-bucket approach here rather than a sliding window. I looked at three options: a fixed window counter, which is simplest but allows a 2x burst at the boundary; a sliding window log, which is exact but needs per-request storage that grows with traffic; and a token bucket, which approximates well with O(1) state. Given that our traffic pattern shows bursts around the top of the hour, the boundary problem with fixed windows would have been a real issue in practice. The sliding window log would have worked but the memory profile concerned me at our current request volume, and it would have meant adding a Redis dependency we don't currently have in this service. So token bucket seemed like the best tradeoff, though I'm open to revisiting if we see accuracy problems.
GOOD:
Token bucket rather than a sliding window, mainly to avoid adding a Redis dependency here. Tentative — happy to revisit if the accuracy is off.
Slack message reporting a finding
BAD:
Hey! I wanted to give you an update on the investigation into the latency spike. I started by looking at the Datadog traces for the affected window and noticed that p99 was elevated across all endpoints, not just the ones we'd initially suspected. That pointed away from a specific code path, so I checked the RDS metrics next and found that read IOPS were saturated starting at 14:20 UTC. Digging into the query performance data, the culprit appears to be the new report export, which is doing a full table scan on
loan_events. I think we should add an index, but wanted to check with you first.
GOOD:
The latency spike is the new report export doing a full table scan on
loan_events— saturated read IOPS from 14:20 UTC. Suggest adding an index; want me to?
Note what the good versions keep: the conclusion, and enough for the reader to push back. Both drop the investigation entirely.
Before you post
Read the draft once and ask: what is the reader supposed to do after reading this? If a sentence does not serve that, delete it.
Then post it. Do not append the detail you just cut.
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.

