Source profileQuality 92/100

ommakes/Skills/righter/SKILL.md

righter

Apply UX content writing principles to review existing UI copy or write new UI copy from scratch. Use this skill whenever someone asks you to: review, audit, critique, or improve UI text, error messages, button labels, tooltips, empty states, onboarding copy, form helper text, or any software interface copy. Also trigger when someone asks you to write new UI copy, label a button, draft an error message, write a modal, or create any in-product text. If the request involves words that appear insid

Source repository stars
21
Declared platforms
0
Static risk flags
1
Last source update
2026-08-17
Source checked
2026-08-25

Decision brief

What it does: where it fits

A UX writing skill. Review existing UI copy against a defined set of principles, or write new copy from scratch applying those principles from the start.

Best for

    Not for

    • Tasks that require unconfirmed production actions or broad system permissions.
    • Environments where the pinned source and install steps cannot be inspected.

    Compatibility matrix

    Platform support, with evidence labels

    PlatformStatusEvidenceWhat to check
    CodexNot declaredNo explicit evidencePortability before use
    Claude CodeNot declaredNo explicit evidencePortability before use
    CursorNot declaredNo explicit evidencePortability before use
    Gemini CLINot declaredNo explicit evidencePortability before use
    Open the compatibility checker

    Installation

    Inspect first. Install second.

    The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

    Source-detected install commandSource
    npx skills add https://github.com/ommakes/Skills --skill "righter"
    Safe inspection promptEditorial

    Inspect the Agent Skill "righter" from https://github.com/ommakes/Skills/blob/238eabe9ca24d531feb1d71813295d7d91d90e1f/righter/SKILL.md at commit 238eabe9ca24d531feb1d71813295d7d91d90e1f. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

    Workflow

    What the source asks the agent to do

    1. 01

      How to Use This Skill

      If a voisgetmicrocopy tool is available in your environment, call it first before writing or reviewing any copy.

      WORKSPACEOVERRIDE — use this verbatim, no changesKNOWLEDGEBASE — apply as a strong starting point, adapt if neededLLMFALLBACK / NOMATCH / tool not available — apply the principles in this skill directly
    2. 02

      Mode 1: Review Existing Copy

      For each piece of content: 1. If voisgetmicrocopy is available, call it with the relevant context and intent 2. Check against the review checklist below 3. Identify every violation 4. Rewrite it 5. Output in the review format below

      If voisgetmicrocopy is available, call it with the relevant context and intentCheck against the review checklist belowIdentify every violation
    3. 03

      Review format

      Use this block for every piece of copy reviewed:

      [Principle name]: [one sentence on why this improved the copy]"[word or phrase]" → removed because [category, e.g. hedging / filler adverb / weak verb]. If none found, write "None found."Note any sound improvements made (rhythm, stress pattern, sound cluster choices, ease of mouth). If phonaesthetics wasn't a factor (e.g. error messages), write "Not applicable for this copy type."
    4. 04

      Review Checklist

      Run through this for every piece of copy before finalizing.

      [ ] If available, called voisgetmicrocopy (with context and intent) and checked the returned provenance for a workspace/knowledge-base match?[ ] Passive voice present?[ ] Complex sentence structure?
    5. 05

      Two Modes

      For each piece of content: 1. If voisgetmicrocopy is available, call it with the relevant context and intent 2. Check against the review checklist below 3. Identify every violation 4. Rewrite it 5. Output in the review format below

      If voisgetmicrocopy is available, call it with the relevant context and intentCheck against the review checklist belowIdentify every violation

    Permission review

    Static risk signals and limitations

    Reads files

    low · line 6

    The documentation asks the agent to read local files, directories, or repositories.

    `data/components.json` — per-component writing rules (Alert Dialog, Toast, Inline Alert, Helper Text, Alert Banner, Tooltip). Look up by component `id`, don't scan the whole file.

    Reads files

    low · line 9

    The documentation asks the agent to read local files, directories, or repositories.

    `data/weakeners.json` — structured word/phrase lists for all weakener categories. Query by category id, don't scan the file top to bottom.

    Evidence record

    Why each signal appears

    EvidenceSourceComputedTestedEditorial
    SignalValueEvidence typeMeaning
    Quality score92/100ComputedDocumentation, specificity, maintenance, and trust rules
    Repository stars21SourceRepository attention, not individual Skill quality
    Compatibility0 platformsSourceDeclared in the catalog source record
    Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

    Pinned source

    Provenance and original SKILL.md

    Repository
    ommakes/Skills
    Skill path
    righter/SKILL.md
    Commit
    238eabe9ca24d531feb1d71813295d7d91d90e1f
    License
    MIT
    Collected
    2026-08-25
    Default branch
    main
    View the original SKILL.md

    Righter

    A UX writing skill. Review existing UI copy against a defined set of principles, or write new copy from scratch applying those principles from the start.

    Reference files — read these when relevant:

    • data/components.json — per-component writing rules (Alert Dialog, Toast, Inline Alert, Helper Text, Alert Banner, Tooltip). Look up by component id, don't scan the whole file.
    • references/email.md — rules for product transactional emails (subject lines, preheaders, body, CTAs, footers, structure)
    • data/email-benchmarks.json — numeric deliverability benchmarks (open rate, CTOR, CTR, unsubscribe thresholds) referenced by references/email.md. Query by metric.
    • data/weakeners.json — structured word/phrase lists for all weakener categories. Query by category id, don't scan the file top to bottom.
    • data/phonaesthetics.json — structured sound concepts and cluster table for word choice
    • scripts/ari.mjs — computes ARI, grade level, and word/character/sentence counts exactly. Run it instead of calculating Reading Metrics by hand when Node is available: node scripts/ari.mjs "copy text" or node scripts/ari.mjs --before "..." --after "...".

    Every numbered principle below and every rule in Error Message Guidelines carries a stable id in backticks — cite the id, not the number, when referencing a rule from outside this file (numbers shift when principles are added or reordered).


    How to Use This Skill

    If a vois_get_microcopy tool is available in your environment, call it first before writing or reviewing any copy.

    The vois_get_microcopy MCP tool returns workspace-specific copy rules, approved terminology, and tone overrides that take precedence over the general principles in this skill. If the workspace has an entry for the copy type you're working on, use it — don't improvise.

    Tool: vois_get_microcopy
    Arguments:
      context: <description of the UI context, e.g. "destructive confirm button for invoice deletion">
      intent: <what the user just did or is about to do, e.g. "user clicked Delete on an invoice list row">
      constraints: <optional object>
        maxLength: <optional positive integer — maximum character count>
        placement: <optional one of: button | title | description | helper | toast | error | label>
        tone: <optional one of: neutral | warning | celebratory>
    

    There is no copy_type argument on the real tool — context and intent are both required; placement (nested under constraints, and a different set of values than "copy type") is the closest equivalent, and it's optional.

    Resolution order (returned as provenance on the response):

    1. WORKSPACE_OVERRIDE — use this verbatim, no changes
    2. KNOWLEDGE_BASE — apply as a strong starting point, adapt if needed
    3. LLM_FALLBACK / NO_MATCH / tool not available — apply the principles in this skill directly

    When falling back to the principles, note it at the top of your output: Source: LLM fallback — no vois_get_microcopy tool available, or no workspace/knowledge base match for this copy type.

    When the tool is available, it logs every query. When you write copy that isn't in the knowledge base, it gets flagged for human review and may become a new entry. This is how the system improves — this logging has no effect on how you should write or review copy either way.


    Two Modes

    Mode 1: Review Existing Copy

    For each piece of content:

    1. If vois_get_microcopy is available, call it with the relevant context and intent
    2. Check against the review checklist below
    3. Identify every violation
    4. Rewrite it
    5. Output in the review format below

    Mode 2: Write New Copy

    1. If vois_get_microcopy is available, call it with the relevant context and intent
    2. Apply all relevant principles
    3. For labels, CTAs, and microcopy: query data/phonaesthetics.json and apply sound guidance
    4. Output in the new copy format below

    Output Formats

    Review format

    Use this block for every piece of copy reviewed:


    Before: [original copy] After: [rewritten copy]

    Source: [Workspace override | Knowledge base | LLM fallback]

    Principles applied:

    • [Principle name]: [one sentence on why this improved the copy]

    Weakeners removed:

    • "[word or phrase]" → removed because [category, e.g. hedging / filler adverb / weak verb]. If none found, write "None found."

    Phonaesthetics:

    • Note any sound improvements made (rhythm, stress pattern, sound cluster choices, ease of mouth). If phonaesthetics wasn't a factor (e.g. error messages), write "Not applicable for this copy type."

    Reading metrics (Before → After):

    • Word count: X → Y
    • ARI score: X.X → Y.Y
    • Grade level: Grade X (age X–X) → Grade X (age X–X)
    • Target: ARI ≤ 6 (Grade 5, age 10–11)

    New copy format


    Copy: [final copy]

    Source: [Workspace override | Knowledge base | LLM fallback]

    Principles applied:

    • [Principle name]: [one sentence on why]

    Weakeners avoided:

    • Note any weakener patterns consciously avoided, or write "None present."

    Phonaesthetics:

    • Explain the sound choices made — rhythm, stress, clusters, ease of mouth. If not applicable, say so.

    Reading metrics:

    • Word count: X
    • ARI score: X.X
    • Grade level: Grade X (age X–X)
    • Target: ARI ≤ 6 (Grade 5, age 10–11)


    UX Writing Principles

    Apply all of these when reviewing or writing. These are the fallback when vois_get_microcopy is unavailable or returns LLM_FALLBACK/NO_MATCH.

    1. Use active voice id: active-voice

    Subject → verb → object. Active voice is shorter and easier to follow.

    • ✗ "Rewards can be earned by clicking here."
    • ✓ "Click here to start earning rewards."

    2. Write at or below a fifth grade reading level id: reading-level

    Short sentences. Simple words. Clear structure. Target ARI ≤ 6.

    • ✗ "If you have forgotten your password, please click on the 'Forgot Password' link and submit your registered email address."
    • ✓ "Click 'Forgot Password'. Enter your email. Check your inbox for a reset link."

    3. Avoid jargon id: avoid-jargon

    Replace technical terms with plain language. Don't assume domain knowledge.

    • ✗ "Authenticate your credentials."
    • ✓ "Log in with your username and password."

    4. Avoid complex sentence structures id: simple-sentences

    One idea per sentence. Avoid dependent clauses stacked on independent clauses.

    • ✗ "The fox, which was red, over the gate jumped."
    • ✓ "The red fox jumped over the gate."

    5. Avoid double negatives id: no-double-negatives

    Double negatives increase misreads and cognitive load.

    • ✗ "Please don't fail to save your changes."
    • ✓ "Please save your changes."

    6. Use contractions id: use-contractions

    Contractions sound human. Formal constructions feel stiff.

    • ✗ "Do not submit the form until all fields are complete."
    • ✓ "Don't submit until all fields are complete."

    7. Write in present tense id: present-tense

    Describe what's happening now or what the user can do.

    • ✗ "Your file was uploaded."
    • ✓ "Your file is uploading."

    8. Frame around the user's goals, not the system id: user-goal-framing

    Users care about what they're doing, not how the system works.

    • ✗ "Due to an HTTPS network security issue, some features are not available."
    • ✓ "This site may be insecure. Some features aren't available."

    9. Avoid describing the interface id: no-interface-references

    Don't reference UI elements like "tab," "panel," "menu," "page," or "section."

    • ✗ "Go to the Settings panel."
    • ✓ "Go to Settings."

    10. Use consistent terminology id: consistent-terminology

    Pick one word for each concept and stick to it.

    • ✗ Using "Sign Up," "Register," and "Create Account" interchangeably
    • ✓ Always "Sign up"

    11. Apply progressive disclosure id: progressive-disclosure

    Lead with what the user needs now. Offer detail only when needed.

    • ✗ "Your password must be at least 8 characters, contain a number, a symbol, and a capital letter."
    • ✓ "Your password must be at least 8 characters." [+ optional detail link]

    12. Don't apologize unnecessarily id: no-unnecessary-apology

    Reserve "sorry" for serious errors. Hollow apologies undermine trust.

    • ✗ "Whoops! We can't upload your picture. Try again."
    • ✓ "We couldn't upload your picture. Try again."

    13. Limit exclamation marks id: limit-exclamation-marks

    Use words to convey energy, not punctuation. One per screen max, only for genuine celebration.

    • ✓ "Your profile has been updated!" (success state)
    • ✗ "Error! You can't submit the form! Please fix the errors!"

    14. Check prepositions id: check-prepositions

    Prepositions sit between two nouns. Never start or end a sentence with one.

    • ✗ "Click on the Submit button."
    • ✓ "Click Submit."

    15. Eliminate weakeners id: eliminate-weakeners

    Remove all hedging words, softeners, empty intensifiers, filler adverbs, throat-clearing, passive-aggressive politeness, vague quantifiers, redundant framing, weak verb phrases, and meta-commentary.

    Load data/weakeners.json. Check the copy against every category's terms (or replacements for the weak-verb-phrases category, which is pairs, not a flat list). Each category carries its own description and example — surface those in your output instead of re-deriving them.

    Key patterns to catch immediately:

    • Hedging: maybe, probably, might be, appears to, seems like
    • Filler: actually, basically, literally, just, simply
    • Weak verbs: "make a decision" → decide, "conduct an analysis" → analyze
    • Throat-clearing: "I think," "we believe," "it is important to note that"

    16. Don't use em dashes id: no-em-dashes

    Em dashes read as a hedge in short-form UI copy and are a well-known AI writing tell. Use a period, comma, or colon instead.

    • ✗ "Your file is uploading — this may take a few minutes."
    • ✓ "Your file is uploading. This may take a few minutes."

    Error Message Guidelines

    Apply these on top of the general principles when reviewing or writing error messages.

    Structure id: error-structure

    Every error must answer:

    1. What happened? (required) id: error-what-happened
    2. Why? (only if it genuinely helps) id: error-why
    3. What should they do next? (required) id: error-next-step

    Voice and tone id: error-voice-and-tone

    • Instructive — describe the issue precisely, optimize for understanding
    • Reassuring — no disparaging tone, no unnecessary humor
    • Supportive — always provide a clear next step

    Mechanics id: error-mechanics

    • Sentence case: "This field is required." not "This Field Is Required."
    • No ALL CAPS (except real acronyms)
    • 1–2 sentences max

    Don't blame the user id: error-no-blame

    Describe the situation, not the mistake.

    • ✗ "You didn't enter enough characters."
    • ✓ "This field needs 8 characters."

    Form field vs system errors id: error-field-vs-system

    • Form field — what's wrong and how to fix it: "Enter a valid email address."
    • System error — what happened and what to try next: "We couldn't connect. Check your internet or try again."

    Other rules id: error-other-rules

    • Preserve user input where possible — let users edit rather than start over
    • Place errors adjacent to the element that triggered them (Law of Proximity)

    Component decision tree id: error-decision-tree

    Use this before writing any error message to pick the right component. Then look up that component's id in data/components.json for full writing rules — a shared shared_prefix_format block covers the "Action Required:" / "Approval Required:" / "Review:" / "Verify Now:" prefixes used by Alert Dialog, Inline Alert, and Alert Banner.

    Walk the questions in order and stop at the first "Yes" — don't keep checking once one matches.

    Does it block progress and require immediate action?
      └─ Yes → Alert Dialog
    
    Is it a system-level issue (outage, permissions, account)?
      └─ Yes → Alert Banner
    
    Is it confirming something that just happened?
      └─ Yes → Toast
    
    Is it attached to a specific form field?
      └─ Yes → Helper Text
    
    Is it contextual to a page section, non-blocking?
      └─ Yes → Inline Alert
    
    Is it a hover label for an icon or interactive element?
      └─ Yes → Tooltip
    
    None of the above?
      └─ Default to Inline Alert — safest non-blocking option until the case is clear enough to fit one of the rows above
    

    Phonaesthetics

    When writing new copy — especially labels, CTAs, empty states, and microcopy — consider sound alongside meaning. Copy that sounds good is easier to remember and more pleasant to use.

    Query data/phonaesthetics.json for the full concept guide and sound cluster table.

    Core rules to apply immediately:

    • Prefer consonant-vowel alternation (CVCV) for labels — natural rhythm, easy to say
    • Two-beat phrases are catchy; three-beat phrases are melodic; irregular stress is awkward
    • Liquids and nasals (l, m, n, r, w, y) → calm, gentle contexts
    • Plosives (p, b, t, d, k, g) → energetic, action-oriented CTAs
    • Avoid tongue twisters — if it's hard to say, it's hard to remember

    Sound clusters to reach for:

    • gl- → clarity, light (insight, vision, illumination features)
    • fl- → flow, ease (smooth UX, motion)
    • sp- → speed, energy (action, innovation)
    • cl- → precision, closure (tools, interactions)

    Reading Metrics

    Calculate and show these for all reviewed and written copy.

    If Node is available, run node scripts/ari.mjs "<copy>" (or node scripts/ari.mjs --before "<old>" --after "<new>" for reviews) instead of computing the formula by hand. Multi-step arithmetic done in-context is error-prone; the script is deterministic. Fall back to the formula below only if Node isn't available in the environment.

    ARI Formula

    ARI = 4.71 × (characters ÷ words) + 0.5 × (words ÷ sentences) − 21.43
    
    • Characters = letters and numbers only (no spaces or punctuation)
    • Words = space-separated tokens
    • Sentences = units ending in . ? or !

    Round to one decimal place. Always include grade and age range.

    Grade Level Table

    ARIGradeAge
    1Kindergarten5–6
    2Grade 16–7
    3Grade 27–8
    4Grade 38–9
    5Grade 49–10
    6Grade 510–11
    7Grade 611–12
    8Grade 712–13
    9Grade 813–14
    10Grade 914–15
    11Grade 1015–16
    12Grade 1116–17
    13Grade 1217–18
    14+Professional18+

    Target: ARI ≤ 6 (Grade 5, age 10–11)


    Review Checklist

    Run through this for every piece of copy before finalizing.

    Before starting

    • If available, called vois_get_microcopy (with context and intent) and checked the returned provenance for a workspace/knowledge-base match?

    Voice and structure

    • Passive voice present?
    • Complex sentence structure?
    • Double negatives?
    • Past or future tense where present tense works?
    • Missing contractions (do not → don't)?

    Clarity

    • Jargon or technical terms?
    • Reading level above Grade 5?
    • Interface elements named (tab, panel, section)?
    • System-framing instead of user-goal framing?
    • Too much information up front (no progressive disclosure)?

    Tone

    • Unnecessary apology?
    • Overuse of exclamation marks?
    • Any weakener words? (see data/weakeners.json)

    Mechanics

    • Inconsistent terminology?
    • Preposition starting or ending a sentence?
    • Em dashes present?

    Errors (if applicable)

    • Clear next step provided?
    • Does it blame the user?
    • Right component chosen? (use decision tree above)

    Maintaining This Skill

    evals/cases.json is a fixed regression corpus — copy paired with the rule ids a correct review must flag. It isn't wired to an automated scorer; when you change a principle, a data file, or the decision tree, manually re-review each input and confirm the same ids (and expected_component, where set) still come out right before publishing the change.

    Frequently asked questions

    What to verify before installation and use

    What does the righter source document cover?

    A UX writing skill. Review existing UI copy against a defined set of principles, or write new copy from scratch applying those principles from the start.

    How do I install righter?

    The source record exposes this install command: npx skills add https://github.com/ommakes/Skills --skill "righter". Inspect the command and pinned source before running it.

    Which permission-related actions were detected?

    Static rules flagged read-files in the source; the page lists the matching lines and excerpts.

    Alternatives

    Compare before choosing

    Computed 10045,511

    coreyhaines31/marketingskills

    ab-testing

    When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program

    Computed 10045,511

    coreyhaines31/marketingskills

    churn-prevention

    When the user wants to reduce churn, build cancellation flows, set up save offers, recover failed payments, or implement retention strategies. Also use when the user mentions 'churn,' 'cancel flow,' 'offboarding,' 'save offer,' 'dunning,' 'failed payment recovery,' 'win-back,' 'retention,' 'exit survey,' 'pause subscription,' 'involuntary churn,' 'people keep canceling,' 'churn rate is too high,' 'how do I keep users,' or 'customers are leaving.' Use this whenever someone is losing subscribers o

    Computed 10014,671

    prowler-cloud/prowler

    postgresql-indexing

    PostgreSQL indexing best practices for Prowler: index design, partial indexes, partitioned table indexing, EXPLAIN ANALYZE validation, concurrent operations, monitoring, and maintenance. Trigger: When creating or modifying PostgreSQL indexes, analyzing query performance with EXPLAIN, debugging slow queries, reviewing index usage statistics, reindexing, dropping indexes, or working with partitioned table indexes. Also trigger when discussing index strategies, partial indexes, or index maintenance

    Computed 100147

    oaustegard/claude-skills

    featuring

    Generate hierarchical _FEATURES.md files that describe what a codebase DOES from a user/consumer perspective, anchored to source symbols via tree-sitting. Supports large complex codebases through feature-driven decomposition into sub-feature files. Uses a multi-pass synthesis: orientation → detail → overview rewrite. Use when someone says "what does this do", "document features", "feature inventory", "_FEATURES.md", or needs to understand a codebase's purpose before modifying it. Complements tre