Agent skill

Write Better Error Messages

by vvedantb in vvedantb/eva

Review, critique, rewrite, or design product error messages and error-handling UX.

MITAuto-check passed

Install Write Better Error Messages

skills CLI
$ npx skills add vvedantb/eva --skill write-better-error-messages -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install vvedantb/eva write-better-error-messages --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/vvedantb/eva.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/write-better-error-messages .claude/skills/write-better-error-messages && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
write-better-error-messages
GitHub stars
101
Used in
1 other repo
Token cost
~1.8k tokens
SKILL.md length
900 words
Files
1
Skills in repo
23
Repo updated
First seen
Licence
MIT

At a glance

Review, critique, rewrite, or design product error messages and error-handling UX.

  • Works in 5 steps: What happened? → Why did it happen, at the most useful… → What was not affected, if anything needs… → …
  • Codex is asked to improve validation errors
  • SKILL.md covers Attribution, Core Test, Avoid and Prefer, plus 4 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Write Better Error Messages is an agent skill from vvedantb/eva. Review, critique, rewrite, or design product error messages and error-handling UX. Use when Codex is asked to improve validation errors, server failure messages, empty/failure states, toast/dialog copy, support escalation paths, or error-message inventories so users understand what happened, what was not affected, and what to do next.

Its SKILL.md is about 1.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The repository describes itself as: Orchestrate sandboxed agents that run in the cloud while you work. The licence is MIT.

When your agent uses it

  • Codex is asked to improve validation errors
  • Server failure messages
  • Empty/failure states
  • Toast/dialog copy

Example prompts

  • “/write-better-error-messages”

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. What happened?
  2. Why did it happen, at the most useful level of detail the product can honestly provide?
  3. What was not affected, if anything needs reassurance?
  4. What can the user do now?
  5. What can they do if that does not work?

What it can do on your machine

Read from SKILL.md and the folder at commit a5a4df2. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • wix-ux.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Write Better Error Messages loads about 1.8k tokens when it runs. Until then it costs about 91 tokens; SKILL.md has 900 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~91
When it runs · the whole SKILL.md, loaded when a task matches
~1.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from vvedantb/eva at commit a5a4df2, republished under its MIT licence (© vvedantb). 900 words, ~1,761 tokens.

Download SKILL.mdSave it as .claude/skills/write-better-error-messages/SKILL.md (or your agent's skills folder).
name
write-better-error-messages
description
Review, critique, rewrite, or design product error messages and error-handling UX. Use when Codex is asked to improve validation errors, server failure messages, empty/failure states, toast/dialog copy, support escalation paths, or error-message inventories so users understand what happened, what was not affected, and what to do next.

Write Better Error Messages

Use this skill to make error messages specific, calm, accountable, and useful.

Attribution

This skill is adapted from Jenni Nadler's Wix UX article "When life gives you lemons, write better error messages", published by Wix UX. It incorporates the article's guidance and the lessons shown in its annotated screenshots: the bad-message modal, the improved-message modal, the generic-vs-unclear comparison, and the error-inventory board.

Core Test

Before writing or approving an error message, answer:

  1. What happened?
  2. Why did it happen, at the most useful level of detail the product can honestly provide?
  3. What was not affected, if anything needs reassurance?
  4. What can the user do now?
  5. What can they do if that does not work?

If the product cannot answer these questions, treat it as a product or engineering gap, not only a copy problem.

Avoid

  • Do not use cutesy or casual tone when the stakes are high. Avoid "Oops", "Whoops", "Uh oh", "Yikes", and jokes for flows involving money, publishing, work continuity, account access, data, or user trust.
  • Do not blame the user. Focus on the problem and the recovery path.
  • Do not blame third parties when the user is operating inside your product. Prefer "We're having trouble connecting to [service]" over "[service] is not responding."
  • Do not expose implementation details unless they help the user act. Replace terms like "fetch", "credentials denied", "500", or "unknown exception" with the outcome and next step.
  • Do not ship "Something went wrong" when the system knows more. A generic fallback is acceptable only when no specific diagnosis is available, and even then it should include a next step or escape route.
  • Do not confuse "specific" with "clear." A message can mention permissions, tokens, scopes, or settings and still be unclear if the user cannot tell what to do.

Prefer

  • State the result first: "We couldn't connect your account", "Your image was not uploaded", or "Your changes were saved, but the email was not sent."
  • Explain why when possible: "because the file is larger than 25 MB", "because your session expired", or "because of an issue on our end."
  • Reassure users about preserved work: "Your draft is saved", "Your billing settings were not changed", or "No one has been invited yet."
  • Give a concrete next step: "Try connecting again", "Choose a file under 25 MB", "Sign in again", or "Check that pop-ups are allowed."
  • Provide a way out when the user may be blocked: link to support, a help article, retry, cancel, save draft, download data, or contact Customer Care.
  • Use "please" sparingly for empathy in serious or unrecoverable situations, not as filler.

Rewrite Workflow

  1. Identify the context and stakes: user goal, surface, data at risk, whether the user can recover, and whether the error blocks the flow.
  2. Map the cause with engineering/product if needed: trigger, frequency, known causes, affected state, and realistic fixes.
  3. Classify the current message:
    • Generic: hides available information, such as "Something went wrong and this action could not be completed."
    • Unclear: tries to explain but leaves the user unsure what to do, such as "Make sure you allow the requested permissions and try again."
    • Jargon-heavy: names internal mechanics rather than user-visible outcomes.
    • Blaming: points at the user or an integration instead of owning the experience.
    • Tone mismatch: too cute, dramatic, or casual for the stakes.
  4. Draft using this shape:
    • Title: user-visible outcome.
    • Body: concise cause plus reassurance, if relevant.
    • Action: primary recovery step.
    • Escape: support/help path if retrying may fail.
  5. Remove any sentence that does not help the user understand, recover, or trust the product.
  6. Verify the final copy against the Core Test.
Show full SKILL.md (293 more words)Show less

Screenshot-Derived Patterns

Use these patterns from the article's screenshots when reviewing UI copy:

  • Bad annotated modal: "Whoops! Something went wrong" plus a third-party blame statement, technical wording about fetching data, and "Try again later." Diagnose this as tone mismatch, blame shifting, jargon, and a too-generic next step.
  • Good annotated modal: "Unable to connect your account" plus "Your changes were saved", an honest cause on the product side, "Please try connecting again", and a Customer Care fallback. Use this as the target structure: outcome, reassurance, cause, next step, escape route.
  • Generic vs unclear comparison: "Something went wrong..." is generic because it says almost nothing; "Make sure you allow the requested permissions..." is unclear because it uses confusing language without telling users where or how to act. Fix both with specific context and an actionable recovery path.
  • Inventory screenshot: a board or spreadsheet should track message, trigger, owner, priority, error type, frequency, blocked flow, due date, status, and final copy. Error cleanup is cross-functional work, not only UX writing.

Inventory And Review

For a batch of errors, create or update a small inventory:

FieldPurpose
Current messageThe exact user-facing copy.
TriggerWhat condition shows it.
Cause known?Whether engineering can identify the reason.
FrequencyHow often users hit it.
Blocking?Whether it prevents task completion.
Affected stateWhat changed, failed, or was preserved.
OwnerProduct, engineering, design, or writing owner.
Proposed copyRevised title/body/actions.
Follow-upInstrumentation, design change, support link, or backend fix.

Prioritize errors that happen often or block users from completing important flows. Revisit launched errors after real usage data is available, especially for new products that shipped with broad fallback messages.

Output Format

When rewriting for the user, prefer:

markdown
Current: "..."
Issue: Generic / unclear / jargon / blame / tone mismatch / missing next step
Rewrite:
Title: ...
Body: ...
Primary action: ...
Fallback: ...
Reasoning: ...

Keep the reasoning short and grounded in what changed for the user.

© vvedantb, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/write-better-error-messages of vvedantb/eva.

Open the folder on GitHubat commit a5a4df2

Used in 1 other repository

We found 2 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in vvedantb/eva, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Write Better Error Messages next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Write Better Error Messages compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Write Better Error Messages this skillvvedantb/eva1011 repos~1.8kAutomated safety check: PassMIT
Messages Opsaffaan-m/ECC275k1 repos~724Automated safety check: PassMIT
Design Critiquepaperclipai/paperclip99k—~1.2kAutomated safety check: PassMIT
Better Interfacetrycompai/crm11k—~2kAutomated safety check: PassMIT
Critique Theaternexu-io/open-design100k—~640Automated safety check: PassApache-2.0
Channel Message Flowsopenclaw/openclaw392k1 repos~306Automated safety check: PassMIT

Similar skills

  • Messages Ops

    affaan-m/ECC

    Evidence-first live messaging workflow for ECC. An agent skill from affaan-m/ECC.

    275k GitHub starsUsed in 1 repo~724 tokens
    Productivity & AutomationAuto-check passed
  • Design Critique

    paperclipai/paperclip

    Give a structured product design critique — user job clarity, hierarchy, affordance, error states, accessibility, and consistency — focused on what to change, in what order, and why.

    99k GitHub stars~1.2k tokensUpdated today
    Media & CreativeAuto-check passed
  • Better Interface

    trycompai/crm

    User-invoked, cross-discipline interface review that coordinates better-accessibility, better-layout, better-writing, better-typography, better-colors, and better-ui.

    11k GitHub stars~2k tokensUpdated 27 days ago
    Frontend & DesignAuto-check passed
  • Critique Theater

    nexu-io/open-design

    Five-dimension design quality review — score the artifact against craft, brand, accessibility, and copy, then fix what falls short before handing it over.

    100k GitHub stars~640 tokensUpdated today
    Frontend & DesignAuto-check passed
  • Channel Message Flows

    openclaw/openclaw

    A skill your agent uses when running QA Lab channel message flow evidence.

    392k GitHub starsUsed in 1 repo~306 tokens
    Auto-check passed
  • Commit Message Storyteller

    github/awesome-copilot

    Official

    Analyzes git diffs or staged changes and generates narrative commit messages that explain WHY a change was made, not just what changed — following Conventional Commits format.

    40k GitHub starsUsed in 1 repo~1.3k tokens
    DevelopmentAuto-check passed

More from vvedantb/eva

All 23 skills in this repo
  • Eva Feature Demo

    vvedantb/eva

    Record a real agent-browser screencast of one eva feature being used end to end, convert it to an X-ready mp4, and write a tweet for it.

    101 GitHub stars~3.3k tokensUpdated yesterday
    Auto-check passed
  • Animate

    vvedantb/eva

    Build an animation from scratch, making the decisions in the order that determines whether it feels right — should it animate at all, what purpose, which tool, which properties, which curve and…

    101 GitHub starsUsed in 6 repos~2.9k tokens
    Auto-check passed
  • Design and build Convex components with clear boundaries, isolated state, and app-facing wrappers.

    101 GitHub stars~3.3k tokensUpdated yesterday
    Auto-check passed
  • Grab a single clean HD screenshot of a new eva feature from the real running app (Playwright at deviceScaleFactor 2, 1280 layout captured crisp at 2560×1440, dev overlays hidden) and write a tweet…

    101 GitHub stars~3.2k tokensUpdated yesterday
    Auto-check: notes
  • Code Structure

    vvedantb/eva

    A skill your agent uses when multiple workflows duplicate the same operational logic, when deciding what belongs in actions vs shared services, or when refactoring repeated operational blocks across…

    101 GitHub starsUsed in 2 repos~1.1k tokens
    Auto-check passed
  • Eva Launch Video

    vvedantb/eva

    Produce polished, mobile-friendly product demo videos of the eva app with Remotion — 1280×720, snappy beat-synced hard cuts, lo-fi music that swells on every cut, and footage captured from the REAL…

    101 GitHub stars~2.7k tokensUpdated yesterday
    Auto-check passed

Questions about Write Better Error Messages

What does Write Better Error Messages do?

Review, critique, rewrite, or design product error messages and error-handling UX. Write Better Error Messages is an agent skill from vvedantb/eva. Review, critique, rewrite, or design product error messages and error-handling UX.

When should I use Write Better Error Messages?

Write Better Error Messages fits situations like: Codex is asked to improve validation errors; server failure messages; empty/failure states; toast/dialog copy.

How do I install Write Better Error Messages in Claude Code?

Run `npx skills add vvedantb/eva --skill write-better-error-messages -a claude-code`. Or copy the skill folder (.agents/skills/write-better-error-messages in vvedantb/eva) into .claude/skills/write-better-error-messages in your project. Claude Code loads it when a task matches its description.

How do I install Write Better Error Messages in Codex?

Run `npx skills add vvedantb/eva --skill write-better-error-messages -a codex`. Or copy the skill folder (.agents/skills/write-better-error-messages in vvedantb/eva) into .agents/skills/write-better-error-messages in your project. Codex loads it when a task matches its description.

Can I use Write Better Error Messages in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add vvedantb/eva --skill write-better-error-messages -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/write-better-error-messages, .gemini/skills/write-better-error-messages, .github/skills/write-better-error-messages and .opencode/skills/write-better-error-messages in your project.

What does Write Better Error Messages need to run?

SKILL.md names no scripts, command-line tools or credentials: Write Better Error Messages is instructions for the agent only.

Does Write Better Error Messages access the network?

SKILL.md names 1 domain. As links in the text: wix-ux.com. This is read from the text; nothing was executed.

Is Write Better Error Messages safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Write Better Error Messages use?

Write Better Error Messages is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Write Better Error Messages use?

About 1.8k tokens (SKILL.md is roughly 7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Write Better Error Messages?

Skills that share tags, products or a category with Write Better Error Messages: Messages Ops (affaan-m/ECC, 275k stars), Design Critique (paperclipai/paperclip, 99k stars), Better Interface (trycompai/crm, 11k stars) and Critique Theater (nexu-io/open-design, 100k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Write Better Error Messages?

vvedantb (a GitHub user) maintains it in vvedantb/eva, which has 101 GitHub stars. The repository holds 23 skills in this directory. The repository was last updated on October 8, 2026.

Source: vvedantb/eva on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.