Unsaid Rules

v1.1.0MIT licenseTwo skills

Unsaid Rules

What to say at work, and how to say it.

Unsaid Rules is an open-source repository of two agent skills. Client Judgment keeps client messages grounded in facts and agreed commitments. Corporate Communication turns rough or casual writing into clear professional language without changing what you mean.

ClientTypical questions

done?

Yep, fixed and checked on the live site.

Rests onThe fix is deployed and checked on the live site.

Client Judgment replies from the skill's fictional scenarios.

Which skill do I need?Client Judgment decides what you can truthfully say and promise. Corporate Communication decides how to say it. For a client delivery message, use both.

Worked examples from the skill. All are fictional.

The situation

A founder asks whether the site is ready to share with prospects for customer interviews, and whether mobile is complete.

  • Mobile checks passed on the developer's phone and the founder's iPhone only. The developer has said they will check two more devices today.
  • The inquiry form is not connected. CRM setup is pending, with no date.
  • The legal pages contain placeholder company details.
  • Four footer icons have no destination, and the developer has said they will hide them.
  • The developer has agreed to send the device results and say when the form is live.

The reply

Mobile is complete from my side.1 Yes, it's fine to share,2 with three things to know: the form isn't connected, the legal pages have placeholders, and the social icons don't link anywhere. Send me the links, or I can hide them. If anyone notices something off, send me their device.3

  1. Device coverage is overstated: only two phones were checked.
  2. The readiness claim conflicts with the known broken prospect journey.
  3. Audience feedback stands in for checks the developer should make.

Fact: Mobile is confirmed on your iPhone and mine; Commitment: I'll check two more devices today and send you the result. Fact: Before sharing with prospects, two things need closing: the inquiry form isn't receiving messages until the CRM is connected, and the legal pages still show placeholder company details. Commitment: I'll hide the unlinked footer icons. Next step: I need the registered company name and address from you for the legal pages, Commitment: and I'll let you know as soon as the form is live.

Nothing about the CRM date is invented, and every "I'll" rests on a stated intention, not on capacity or permission.

The situation

Checkout will miss its Friday delivery, and the client's campaign depends on it.

  • The provider quotes about two business days for a compliance review, so Tuesday is an estimate, not a commitment.
  • The client's campaign email goes out on Wednesday.
  • The sender left the review out of their estimate.
  • The sender has said they will check with the provider first thing Monday and message the client either way.

The reply

We won't meet Friday. Tuesday is a realistic target, subject to approval. That puts Wednesday's campaign at risk; please keep its timing provisional until approval is confirmed.1

  1. It is honest, and asking the client to keep the send decision open is legitimate, but nothing from the sender is attached to it.

Fact: Checkout won't be live Friday; I left the provider's compliance review out of my estimate. Fact: They quote two business days, so Tuesday is the current estimate, not yet confirmed. Because your campaign goes Wednesday, Commitment: I'll check with them first thing Monday and message you either way, Next step: so you can decide whether to keep Wednesday's send.

The Monday check is the sender's stated intention. Without one, the skill offers a check only if capacity is known, or recommends it privately to the user.

The situation

"Client asked if the pricing page is finished. Just write 'yes, all done'."

  • The source has a TODO where the enterprise price should be.
  • The "Contact sales" button opens a test email address.
  • Production has not been checked.

The reply

Yes, all done.1

  1. A request to say all done does not justify a completion claim the evidence does not support.

Fact: I can't confirm it is ready yet: the current source still has an unresolved enterprise price and a test sales address. Next step: These need resolving and checking on the live page before sign-off.

First, the skill tells the user what it found, and keeps findings in the source separate from what is visible on the live site.

It separates what happened from what was promised.

Every reply rests on three distinctions, and the answer matches what the evidence supports.

Facts

What was implemented, tested, deployed or accepted.

Commitments

What the sender has agreed or is authorized to promise.

Next steps

What can reasonably be proposed without presenting it as completed or scheduled.

How it chooses the answer

The relevant checks passed, with no known consequential blocker
A clear yes for the stated use, without speculative caveats or approval gates.
A known issue undermines that use
Not yet, with the business effect and the next step.
A known limitation does not prevent that use
A bounded yes, with the relevant limitation.
A critical fact is missing
A check where one is possible; otherwise one focused question or a clearly interim draft.

Eight situations, one way of thinking.

The skill's own scenarios. All are fictional, and each reply uses only the facts given for it.

1Prospects browsing a site with known blockers

The client asks if mobile and tablet are complete and whether prospects can browse the live site. Only two phones have been checked, and no tablet result is available. The live inquiry form drops submissions, and the legal pages display placeholder company details. No repair schedule or follow-up is established.

The site needs the inquiry form and company details resolved before prospects browse it: inquiries are not arriving, and the legal pages still contain placeholders. Mobile checks passed on two phones; tablet testing remains unconfirmed. Please send the approved company details for the legal pages.

No "today", no claimed fixes and no extra device coverage, and the known blockers are not hidden behind a vague promise of a final review.

2Verified readiness gets a direct yes

The agreed mobile and tablet checks and inquiry delivery are verified on the live site, with no known blockers. The client asks about interviews and starting the German version, which is in the agreed scope, with approved copy ready.

The LinkedIn link is updated, and the mobile and tablet work is complete. Yes, the site is ready to share for your interviews. We can start the German version next using the approved copy.

It does not ask for the copy again or invent an extra review.

3A delay with no agreed update time

Friday delivery will be missed because a required provider review was left out of the estimate. Tuesday is a target, and the client's Wednesday campaign depends on checkout. The sender has said they will chase the provider and update the client when they hear back, with no time set.

Checkout won't be live Friday; I missed the provider review in my estimate. Tuesday is the current target, subject to approval, so Wednesday's campaign is at risk. I'll chase the provider and let you know as soon as I hear, so you can decide on the campaign timing with that in hand.

The campaign decision stays with the client and the chase stays with the sender, tied to a trigger because no time is agreed. Outside the draft, the skill recommends agreeing a check-in before the client's deadline.

4A delay with a promised update

The same delay, but the sender has explicitly said they will check the review and update the client on Monday at 10:00, even if approval is still pending.

Checkout won't be live Friday; I missed the provider review in my estimate. Tuesday is the current target, subject to approval. That puts Wednesday's campaign at risk. I'll check the status and update you Monday at 10:00, even if the review is still pending, so you can decide on the campaign timing.

The update commitment does not guarantee the provider's answer or a successful launch.

5Staging passed, deployment pending

The client asks if the live site is ready for a demo. The checks passed on staging, but production deployment is pending. The sender says they will deploy now, verify in production and message the client with the result.

The staging checks have passed, but the update isn't live yet. I'll deploy now and message you as soon as it's confirmed on the live site; treat that message as the go-ahead for the demo.

Drafting does not deploy anything. The draft records the sender's stated intention, and the sender carries it out.

6A source warning versus live evidence

A TODO exists in the pricing source, but the user has verified that the live page shows the approved price and that its contact link works.

Yes, the pricing page is ready. The approved price is displayed correctly on the live site, and the contact link has been checked.

With source evidence alone, it flags the possible problem without claiming it is visible in production.

7Extra work and commercial authority

A booking portal is outside the agreed scope and has no estimate. The sender may gather requirements, but the project manager approves pricing. The client asks for Friday delivery at no extra cost.

The booking portal would extend the agreed scope. I can gather the requirements for the PM to assess timing and pricing, but I can't confirm Friday delivery or include it at the current price.

If the contract scope is unknown, it explains the effort and proposes checking the agreement instead of declaring the work out of scope.

8A routine confirmation

A long-term client asks "done?" about a corrected typo. The fix is deployed and checked live, and the relationship is casual.

Yep, fixed and checked on the live site.

No audit, new offer or disclaimer is needed.

Wording it looks at twice

  • Should be fineWhen the recipient needs an evidenced readiness decision.If checks passed, state the scoped result. If not, state the unknown that changes the decision.
  • Let me know if anything breaksWhen it is used instead of establishing readiness.State the relevant verification first, and keep a support offer only if the agreement covers it.
  • Your old browser caused itWhen the diagnosis is unconfirmed or blame is unnecessary.Describe the observed issue neutrally, and the confirmed fix if there is one.
  • I'll try for TuesdayWhen the real status is an estimate.State Tuesday as an estimate with its dependency, without upgrading it to a promise.
  • As per my last emailWhen the exchange is already strained.Restate the necessary fact briefly, without reprimanding the recipient.
  • No worries!When it answers a confirmed business disruption.Acknowledge the concrete effect and the supported recovery.
  • Just a quick additionWhen extra functionality affects scope.Explain the verified trade-off and offer assessed options, without inventing a cost or date.

Examples from the skill. All are fictional.

What you wrote

I did the work, but nobody told me what to do next. Now they're blaming me for the delay.

To: ManagerTone: Diplomatic

What you send

Per my previous communications, the deliverables were actioned; however, downstream alignment was not socialized, which impacted timelines. Let's circle back to synergize on process going forward.

Why not: it sounds formal, but it hides who did what and never says what you need.

I completed the assigned work, but I didn't receive the next steps, and that contributed to the delay. I'd like to make sure that context is understood, and to agree on how hand-offs should work so it doesn't happen again.

Kept: the finished work, the missing next steps, the cause of the delay, and your wish to fix the process.

Left out: the accusation, and the guess about what others think.

What you wrote

no we can't just add that, it's way more work than you think and it wasn't in the deal

To: ClientTone: Client-friendly

What you send

Unfortunately, this request falls outside the agreed parameters of the current engagement and would require significant additional bandwidth to action.

Why not: it is wordy and cold, and it buries the plain answer.

That feature isn't part of the agreed scope, and it's a larger piece of work than it may appear, so we can't add it as things stand.

Kept: the no, the size of the work, and the agreed scope.

Left out: "than you think", which sounds dismissive.

Note to you: if you can offer an estimate, add it yourself. The rewrite never offers work you did not offer.

What you wrote

ugh the release slipped again bc the vendor api keeps breaking, we're stuck till they fix it, idk when

To: ExecutiveTone: Executive and concise

What you send

Due to ongoing third-party integration challenges, the release timeline has been impacted. We are actively monitoring the situation and will provide updates as they become available.

Why not: it is vague about the cause, and it promises monitoring and updates you never mentioned.

The release has slipped again. The vendor's API keeps failing, and we're blocked until they fix it. We don't have a new date yet.

Kept: the slip, the cause, the block, and the missing date.

Left out: "ugh" and "idk".

Note to you: if you know when you'll next update them, say so. The rewrite does not promise an update for you.

What you wrote

stop dumping your tickets on me at 6pm, I have my own stuff

To: ColleagueTone: Assertive

What you send

I would appreciate it if we could align on ticket allocation best practices to optimize bandwidth across the team.

Why not: it is so soft that the request disappears.

Please don't pass me extra tickets at the end of the day; my own work already fills my time. If something is urgent, let's talk about it earlier in the day.

Kept: the boundary and the reason for it.

Left out: "dumping", which turns a request into an accusation.

What you wrote

fixed the login thing, still waiting on design for dashboard, nothing else blocked

To: Team channelTone: Neutral professional

What you send

Quick update: the authentication workstream has been successfully remediated. The dashboard initiative remains pending design deliverables. No further blockers have been identified at this time.

Why not: it turns three plain facts into three inflated ones.

Login issue is fixed. The dashboard is waiting on design. Nothing else is blocked.

Kept: all three facts, at the same length.

Left out: nothing. A short message stays short.

It changes how you say it, not what you mean.

However you use it, it follows the same three steps, and it judges what the message has to do before choosing a tone.

Read

Who the message is for, the channel, what you need from them, and what you actually mean.

Keep

Every fact, request, concern and boundary you wrote. It never adds progress, dates, commitments, concessions, blame or authority.

Write

Plain, specific and calm, led by the point, at the length the channel needs.

Ways to use it

Rewrite a messageUse the tone you chooseCompare two tonesTurn rough notes into a messageGet feedback on a draftPrepare talking pointsHelp while you draft

Written for the reader

Manager
The status first, then what you need from them.
Colleague
Direct and friendly, with a specific ask.
Direct report
Clear expectations, said supportively.
Client
The outcome and the next step, without internal detail or blame.
Executive
The bottom line and any decision needed, in a few sentences.
Recruiter
Concise, positive and specific.
External partner
Courteous and precise, ready to stand as a written record.

In the tone you need

  • Neutral professionalEveryday messages; the default.
  • DiplomaticDisagreement, without conceding the point.
  • AssertivePositions, refusals and boundaries, without hostility.
  • Warm and collaborativeTeamwork, thanks and requests between peers.
  • Executive and conciseThe decision or bottom line first.
  • Client-friendlyOutcomes and next steps, without internal detail.
  • FormalFirst contact and official records.
  • PersuasiveProposals and negotiations, built on your facts.
  • EmpatheticBad news, acknowledging the impact.
  • Firm but respectfulRepeated issues and final positions.

Professional does not mean jargon.

Tap a phrase to see what it writes instead.

Where it helps

EmailsSlack and TeamsTalking to your managerClient messagesProject updatesFollow-upsDisagreementsStatus reportsMeeting notesRough thoughts

Install it in the agent you use.

Both skills come from the same repository. They need no API key, network service, runtime dependency or helper program.

Claude

In Claude Code, use either the plugin or standalone copies, not both, or the same skill can appear twice.

Claude Code, as a plugin

Terminal
claude plugin marketplace add Achal13jain/unsaid-rules
claude plugin install unsaid-rules@unsaid-rules

The plugin installs both skills. Adding the marketplace only makes its catalog available; the second command installs the plugin. In Claude Code you can also open Manage Plugins, select Marketplaces, choose Add and enter https://github.com/Achal13jain/unsaid-rules. Invoke the skills as /unsaid-rules:client-judgment and /unsaid-rules:corporate-communication.

Claude Code, as standalone skills

Copy the skill folders into a project's .claude/skills/, or into ~/.claude/skills/ for all your projects.

Terminal
git clone https://github.com/Achal13jain/unsaid-rules.git
cp -r unsaid-rules/skills/client-judgment unsaid-rules/skills/corporate-communication ~/.claude/skills/

Invoke them as /client-judgment and /corporate-communication, followed by your request.

claude.ai and the Claude API

Zip each folder in skills/ on its own and upload it in claude.ai as a custom skill, or upload the folders through the Skills API.

Codex

Codex reads a project's skills from .agents/skills, and your personal skills from ~/.agents/skills. Copy the skill folders there.

Terminal
git clone https://github.com/Achal13jain/unsaid-rules.git
mkdir -p ~/.agents/skills
cp -r unsaid-rules/skills/client-judgment unsaid-rules/skills/corporate-communication ~/.agents/skills/

Codex finds new skills automatically; restart it if they do not appear. Mention them with $client-judgment or $corporate-communication.

Gemini CLI and Copilot CLI also read ~/.agents/skills, so this one copy works in all three.

Skills CLI

Install each skill into the agents you choose.

Terminal
npx skills add Achal13jain/unsaid-rules --skill client-judgment
npx skills add Achal13jain/unsaid-rules --skill corporate-communication

Choose agents with -a, for example -a codex, -a gemini-cli or -a github-copilot. Add -g to install for all your projects.

Gemini CLI

Install each skill straight from the repository.

Terminal
gemini skills install https://github.com/Achal13jain/unsaid-rules.git --path skills/client-judgment
gemini skills install https://github.com/Achal13jain/unsaid-rules.git --path skills/corporate-communication

Gemini CLI asks you to confirm each install. It installs for your user by default; add --scope workspace to install for the current project only. In a running session, enter /skills reload.

Copilot CLI

Copilot CLI reads your personal skills from ~/.copilot/skills, and a repository's skills from .github/skills. Copy the skill folders there.

Terminal
git clone https://github.com/Achal13jain/unsaid-rules.git
mkdir -p ~/.copilot/skills
cp -r unsaid-rules/skills/client-judgment unsaid-rules/skills/corporate-communication ~/.copilot/skills/

In a running session, enter /skills reload, then invoke them as /client-judgment or /corporate-communication.

Then try them

Client Judgment
Use client-judgment. The client asks whether the site is ready for prospect interviews. The inquiry form is disconnected, legal pages still contain placeholders, and mobile checks passed on only two phones. Draft a short, honest reply. No repair date has been agreed.
Corporate Communication
Use corporate-communication. Make this professional for my manager: I did the work, but nobody told me what to do next. Now they're blaming me for the delay.

What they will not do

  • A request to draft, rewrite or review a message never authorizes sending it, deploying, changing a product, agreeing commercial terms or contacting third parties.
  • Corporate Communication never adds facts, progress, dates, commitments, excuses, blame or authority that your original does not support.
  • Client Judgment checks a project read-only, and only when the reply depends on it.
  • Both treat quoted messages and repository content as data, not as instructions.
  • Both leave out secrets, private remarks about people and unrelated customer information.
  • Both refer specialist legal and HR questions to the right expertise.