Applies UX writing practice to interface copy such as buttons, errors, forms and onboarding, using four quality standards and accessibility guidance.

MITAuto-check passedWriting & Content

Install UX Writing

skills CLI
$ npx skills add content-designer/ux-writing-skill --skill ux-writing -a claude-code

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

GitHub CLI
$ gh skill install content-designer/ux-writing-skill ux-writing --agent claude-code

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

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

Facts

Skill name
ux-writing
GitHub stars
224
Used in
1 other repo
Token cost
~3.8k tokens
SKILL.md length
1,768 words
Files
28 (incl. references)
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Applies UX writing practice to interface copy such as buttons, errors, forms and onboarding, using four quality standards and accessibility guidance.

  • Works in 4 steps: Purposeful → Concise → Conversational → …
  • Writing button labels, error messages and success messages
  • SKILL.md covers When to Use This Skill, Core UX Writing Principles, UX Text Patterns and Voice and Tone, plus 5 more sections
  • Runs Shell scripts from its folder

What it does

This skill guides the agent in writing and auditing interface copy, from buttons, labels and titles to error messages, notifications, empty states, onboarding and help text. Everything is held to four standards: purposeful, concise, conversational and clear. Practical rules include sentence case, active imperative verbs for buttons, front-loading important information, plain language aimed at a 7th-grade reading level for general audiences and 10th for professional ones, and active voice about 85% of the time.

It also covers conversational flows, voice and tone guidelines, tone adaptation, consistency audits and review of existing UI strings. The package includes reference materials, examples, a Figma integration doc and a build script that produces a zip of the skill. It is written for Claude, Codex and Cursor, and a note says it works with the Codex CLI or IDE, not with ChatGPT.

When your agent uses it

  • Writing button labels, error messages and success messages
  • Editing existing UI text for clarity and reading level
  • Designing onboarding or empty-state copy
  • Auditing product copy for consistency
  • Setting voice and tone guidelines for a product

Example prompts

  • “Rewrite these error messages for the signup form so they say what went wrong and how to fix it.”
  • “Write the microcopy for the empty state of the projects page.”
  • “Audit the strings in src/locales/en.json for consistency and reading level.”
  • “Define a voice and tone guide for a budgeting app.”

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Purposeful
  2. Concise
  3. Conversational
  4. Clear

What it can do on your machine

Read from SKILL.md and the folder at commit 98cacde. 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

    Ships script files (Shell, from the files we listed), which the agent can run.

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

  • Network

    No URLs in SKILL.md.

    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

UX Writing loads about 3.8k tokens when it runs, and up to ~11k if it reads all its reference files. Until then it costs about 206 tokens; SKILL.md has 1,768 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~206
When it runs · the whole SKILL.md, loaded when a task matches
~3.8k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~11k

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 content-designer/ux-writing-skill at commit 98cacde, republished under its MIT licence (© content-designer). 1,768 words, ~3,829 tokens.

Download SKILL.mdSave it as .claude/skills/ux-writing/SKILL.md (or your agent's skills folder). This skill also uses 27 other files; get the full folder from GitHub.
name
ux-writing
description
Create user-centered, accessible interface copy (microcopy) for digital products including buttons, labels, error messages, notifications, forms, onboarding, empty states, success messages, and help text. Use when writing or editing any text that appears in apps, websites, or software interfaces, designing conversational flows, establishing voice and tone guidelines, auditing product content for consistency and usability, reviewing UI strings, or improving existing interface copy. Applies UX writing best practices based on four quality standards — purposeful, concise, conversational, and clear. Includes accessibility guidelines, research-backed benchmarks (sentence length, comprehension rates, reading levels), expanded error patterns, tone adaptation frameworks, and comprehensive reference materials.

UX Writing

Write clear, concise, user-centered interface copy (UX text/microcopy) for digital products and experiences. This skill provides frameworks, patterns, and best practices for creating text that helps users accomplish their goals.

Compatible with: Claude, Codex, Cursor, and other agents that support the agent skills specification.

Note: This skill works with Codex CLI/IDE, not ChatGPT. ChatGPT cannot install or use skills.

When to Use This Skill

Use this skill when:

  • Writing interface copy (buttons, labels, titles, messages, forms)
  • Editing existing UX text for clarity and effectiveness
  • Creating error messages, notifications, or success messages
  • Designing conversational flows or onboarding experiences
  • Establishing voice and tone for a product
  • Auditing product content for consistency and usability

Core UX Writing Principles

The Four Quality Standards

Every piece of UX text should be:

  1. Purposeful — Helps users or the business achieve goals
  2. Concise — Uses the fewest words possible without losing meaning
  3. Conversational — Sounds natural and human, not robotic
  4. Clear — Unambiguous, accurate, and easy to understand
Key Best Practices

Conciseness

  • Use 40-60 characters per line maximum
  • Every word must have a job
  • Break dense text into scannable chunks
  • Front-load important information

Clarity

  • Use plain language (7th grade reading level for general, 10th for professional)
  • Avoid jargon, idioms, and technical terms
  • Use consistent terminology throughout
  • Choose meaningful, specific verbs

Conversational Tone

  • Write how you speak
  • Use active voice 85% of the time
  • Include prepositions and articles
  • Avoid robotic phrasing

User-Centered

  • Focus on user benefits, not features
  • Anticipate and answer user questions
  • Use second-person ("you") language
  • Match user's language and mental models

UX Text Patterns

Apply these common patterns for interface elements.

Titles
  • Purpose: Orient users to where they are
  • Format: Noun phrases, sentence case
  • Types: Brand titles, content titles, category titles, task titles
  • Examples: "Account settings", "Your library", "Create new post"
  • Purpose: Enable users to take action
  • Format: Active imperative verbs, sentence case
  • Pattern: [Verb] [object]
  • Examples: "Save changes", "Delete account", "View details"
  • Avoid: Generic labels like "OK", "Submit", "Click here"
Error Messages
  • Purpose: Explain problem and provide solution
  • Format: Empathetic, clear, actionable
  • Pattern: [What failed]. [Why/context]. [What to do].

Error Message Types

Validation Errors (Inline)

  • Show as user completes field or on blur
  • Brief, specific guidance to correct input
  • Pattern: [Field] [specific requirement]
  • Examples:
    • "Email must include @"
    • "Password must be at least 8 characters"
    • "Choose a date in the future"
  • Timing: Real-time or on field exit
  • Location: Below or beside the field

System Errors (Modal/Banner)

  • Show when backend operations fail
  • Explain what happened and why
  • Pattern: [Action failed]. [Likely cause]. [Recovery step].
  • Examples:
    • "Payment failed. Your card was declined. Try a different payment method."
    • "Couldn't save changes. Connection lost. Reconnect and try again."
    • "Upload failed. File is too large. Choose a file under 10MB."
  • Timing: Immediately after failure
  • Location: Modal dialog or prominent banner

Blocking Errors (Full-screen)

  • Prevent continued use until resolved
  • Clear explanation of blocker and resolution
  • Pattern: [What's blocked]. [Why]. [Specific action needed].
  • Examples:
    • "Update required. This version is no longer supported. Update now to continue."
    • "Subscription expired. Your account is paused. Renew subscription to restore access."
    • "Verification needed. Confirm your email to access features. Check your inbox."
  • Timing: On app launch or feature access
  • Location: Full screen or large modal

Permission Errors

  • Explain benefit before requesting permission
  • Pattern: [User benefit]. [Permission needed].
  • Examples:
    • "Get notified when orders ship. Enable notifications."
    • "Find nearby stores. Allow location access."
    • "Back up your photos. Grant storage permission."
  • Timing: When feature is first used
  • Location: In context of the feature

What to Avoid

  • Technical codes without explanation ("Error 403")
  • Blame language ("invalid input", "illegal character")
  • Robotic tone ("An error has occurred")
  • Dead ends (error with no recovery path)
  • Vague causes ("Something went wrong")
Success Messages
  • Purpose: Confirm action completion
  • Format: Past tense, specific, encouraging
  • Pattern: [Action] [result/benefit]
  • Examples: "Changes saved", "Email sent", "Profile updated"
Empty States
  • Purpose: Guide users when content is absent
  • Types: First-use, user-cleared, error/no results
  • Format: Explanation + CTA to populate
  • Example: "No messages yet. Start a conversation to connect with your team."
Form Fields
  • Labels: Clear noun phrases describing input ("Email address", "Phone number")
  • Instructions: Verb-first, explain why information is needed
  • Placeholder: Use sparingly, only for standard inputs like "name@example.com"
  • Helper text: Static, on-demand, or automatic based on importance
Notifications
  • Purpose: Deliver timely, valuable information
  • Types: Action-required (intrusive), Passive (less intrusive)
  • Format: Verb-first title + contextual description
  • Example: "Update required. Install the latest version to continue."

Voice and Tone

Voice (Consistent Brand Personality)

Voice is the consistent personality of the product. Establish voice using:

  • Concepts: 3-5 key brand principles/values
  • Voice characteristics: Descriptive adjectives for each concept
  • Do/Don't examples: Concrete examples showing voice in action

See references/voice-chart-template.md for creating a voice chart.

Tone (Adaptive to Context)

Tone is how voice adapts to specific situations. While voice remains constant, tone shifts based on user context and emotional state.

Tone Variables

  • Purpose: Why user is seeing this text (information, action, confirmation)
  • Context: What user is trying to do (learning, completing task, recovering from error)
  • Emotional state: How user likely feels (frustrated, excited, confused, cautious)
  • Stakes: Impact of the action (low: changing theme, high: deleting account)

Tone Adaptation by User Emotional State

Frustrated (errors, failures, blockers)

  • Empathetic and solution-focused
  • Acknowledge the problem without blame
  • Provide clear recovery path
  • Example: "Payment failed. Your card was declined. Try a different payment method."

Confused (first use, complex features)

  • Patient and explanatory
  • Break down steps clearly
  • Provide context and guidance
  • Example: "Connect your bank to see spending insights. We'll guide you through it."

Confident (routine tasks, return visits)

  • Efficient and direct
  • Minimal explanation
  • Quick confirmation
  • Example: "Saved"

Cautious (high-stakes actions, data loss)

  • Serious and transparent
  • Clear consequences
  • Respectful of user's decision
  • Example: "Delete account? You'll lose all data and this can't be undone."

Successful (completions, achievements)

  • Positive and encouraging
  • Proportional to achievement
  • Brief celebration
  • Example: "Profile updated. Your changes are live."

Tone Adaptation by Content Type

Error messages: Empathetic, reassuring, solution-focused

  • Never blame user
  • Explain what happened
  • Provide clear next step

Success messages: Positive, specific, encouraging

  • Confirm what happened
  • Proportional to action importance
  • Brief and clear

Instructions: Clear, direct, helpful

  • Front-load key action
  • Explain why when needed
  • Use simple steps

Onboarding: Inviting, encouraging, concise

  • Welcome without overwhelming
  • Focus on value
  • Celebrate early wins

Confirmations: Serious, transparent, respectful

  • Clear about consequences
  • No manipulation
  • Easy to back out

Empty states: Hopeful, actionable, guiding

  • Explain why it's empty
  • Provide clear next action
  • Keep encouraging tone

Editing Process

Edit UX text in four phases:

Show full SKILL.md (706 more words)Show less
Phase 1: Purposeful
  • Does text help user achieve their goal?
  • Does text serve business objectives?
  • Is value to user clear?
  • Are concerns anticipated and addressed?
Phase 2: Concise
  • Remove unnecessary words
  • Combine redundant information
  • Ensure every word earns its space
  • Front-load important concepts
Phase 3: Conversational
  • Read aloud—would you say this?
  • Use active voice (unless passive is clearer)
  • Include natural connecting words
  • Avoid corporate jargon
Phase 4: Clear
  • Use specific, accurate verbs
  • Maintain consistent terminology
  • Test readability (Hemingway Editor, Flesch-Kincaid)
  • Ensure unambiguous meaning

Workflow

  1. Understand context

    • User goals and needs
    • Business objectives
    • Technical constraints
    • Emotional state of user
  2. Draft content

    • Start with conversation (what would you say?)
    • Apply appropriate pattern
    • Consider voice and tone
    • Front-load important information
  3. Edit iteratively

    • Phase 1: Purposeful
    • Phase 2: Concise
    • Phase 3: Conversational
    • Phase 4: Clear
  4. Test and measure

    • Review with team
    • Test with users when possible
    • Measure task completion, comprehension
    • Iterate based on feedback

Accessibility in UX Writing

Writing accessible content ensures all users, including those using assistive technology, can understand and interact with your product.

Core Accessibility Principles

Screen Reader Optimization

  • Label all interactive elements explicitly ("Submit form" not just "Submit")
  • Write descriptive link text ("Read pricing details" not "Click here")
  • Structure error messages to work with screen readers (error + field label read together)
  • Use ARIA labels when visual context isn't sufficient

Cognitive Accessibility

  • Target 8-14 words per sentence (8 words = 100% comprehension, 14 words = 90%)
  • Break complex information into scannable chunks
  • Use clear headings and logical hierarchy
  • Provide consistent, predictable patterns

Multi-Modal Communication

  • Don't rely on color alone to convey meaning
  • Pair visual indicators with text ("Error: Email required" with red icon)
  • Provide text alternatives for icons and images
  • Ensure sufficient color contrast (WCAG AA minimum: 4.5:1)

Plain Language for All

  • Target 7th-8th grade reading level for general audience
  • Define technical terms when first used
  • Avoid idioms, metaphors, and cultural references
  • Use common, everyday words
Accessible Pattern Examples

Buttons

  • ❌ Poor: "Submit" (context missing for screen readers)
  • ✅ Good: "Submit application"

Links

  • ❌ Poor: "Click here for more information"
  • ✅ Good: "Read our privacy policy"

Error Messages

  • ❌ Poor: Red text showing "Invalid"
  • ✅ Good: "Error: Email must include @" (with error icon)

Form Labels

  • ❌ Poor: Placeholder-only fields
  • ✅ Good: Visible label + optional placeholder

UX Text Benchmarks

Use these research-backed metrics to create effective UX text.

Sentence Length Targets

By Content Type

  • Buttons/CTAs: 2-4 words ideal, 6 word maximum
  • Titles: 3-6 words, 40 characters maximum
  • Error messages: 12-18 words (including solution)
  • Instructions: 20 words maximum, 14 ideal
  • Body copy: 15-20 words per sentence average
  • Notifications: 10-15 words for title + body

Comprehension Rates

  • 8 words or fewer: 100% user comprehension
  • 14 words or fewer: 90% user comprehension
  • 25 words: Maximum before significant comprehension drop
Character and Line Length

Optimal Ranges

  • Line length: 40-60 characters for maximum readability
  • Button labels: 15-25 characters
  • Page titles: 30-50 characters
  • Notification titles: 35-45 characters
Reading Level Guidelines

By Audience

  • General public: 7th-8th grade (Flesch-Kincaid)
  • Professional tools: 9th-10th grade
  • Technical products: 10th-11th grade
  • Specialized fields: 11th-12th grade (only when necessary)

Testing Tools

  • Hemingway Editor: Highlights complex sentences
  • Readable.com: Provides multiple readability scores
  • Microsoft Word: Built-in Flesch-Kincaid scoring

Common Mistakes to Avoid

  • Using passive voice excessively
  • Generic button labels ("Submit", "OK")
  • Blaming users in error messages
  • Overly clever humor in serious contexts
  • Inconsistent terminology
  • Hidden instructions or explanations
  • System-oriented language vs. user language
  • Too many words (not concise enough)
  • Robotic, corporate tone
  • Relying on color alone for meaning
  • Writing inaccessible link text ("Click here")

Quick Reference

Sentence case: "Save your changes" (not "Save Your Changes")
Active imperative for buttons: "Delete account" (not "Account deletion")
User-focused: "Save time with shortcuts" (not "We offer shortcuts")
Specific verbs: "Delete" (not "Remove" when permanently deleting)
Front-loaded: "Password must be 8 characters" (not "Must be 8 characters for your password")

Resources

This skill includes:

  • references/accessibility-guidelines.md: Comprehensive guide to writing accessible UX text for all users
  • references/voice-chart-template.md: Template for creating a product voice chart
  • references/content-usability-checklist.md: Comprehensive checklist for evaluating UX text quality
  • references/patterns-detailed.md: Extended examples of UX text patterns in different voices
  • examples/real-world-improvements.md: Before/after transformations with detailed analysis and scoring
  • templates/error-message-template.md: Fillable template for writing effective error messages
  • templates/empty-state-template.md: Guide for creating helpful empty states
  • templates/onboarding-flow-template.md: Framework for designing clear onboarding experiences
  • docs/figma-integration.md: Guide for using this skill with Figma MCP (Claude Code, Codex, and Cursor)

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

Files

SKILL.md and 27 other files (references) in the repository root of content-designer/ux-writing-skill.

  • SKILL.md
  • .gitattributes
  • .github/workflows/auto-rebuild-skill.yml
  • .github/workflows/build-skill.yml
  • .github/workflows/main.yml
  • .gitignore
  • CHANGELOG.md
  • CONTRIBUTING.md
  • LICENSE
  • README.md
  • VERSIONING.md
  • build-skill.sh
  • claude-ux-writing-skill-demo.mp4
  • codex-ux-writing-skill-demo.mp4
  • dist/ux-writing-skill.zip
  • docs/figma-integration.md
  • examples
  • … and 11 more

Open the folder on GitHubat commit 98cacde

Used in 1 other repository

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

Compare with similar skills

UX Writing 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.

UX Writing compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
UX Writing this skillcontent-designer/ux-writing-skill2241 repos~3.8kAutomated safety check: PassMIT
Content Style Guidemohitagw15856/pm-claude-skills1.4k—~1kAutomated safety check: PassMIT
Color Auditrome-os/rome743—~2.7kAutomated safety check: PassMIT
Nbj Write Clearlydaniel-p-green/nbj-write-clearly117—~1.1kAutomated safety check: PassMIT
Readable ContentOwl-Listener/inclusive-design-skills105—~883Automated safety check: PassMIT
Ieee Figure TableCloudWave818/ieee-skills359—~1kAutomated safety check: PassMIT

Similar skills

  • Content Style Guide

    mohitagw15856/pm-claude-skills

    Create a content style guide / voice & tone guide so everyone writes consistently.

    1.4k GitHub stars~1k tokensUpdated yesterday
    Writing & ContentAuto-check passed
  • Color Audit

    rome-os/rome

    Audit a design system's color palette against measurable color-science disciplines — WCAG/APCA contrast of declared token pairs, perceptual (OKLCH) ramp uniformity, color-blindness safety of…

    743 GitHub stars~2.7k tokensUpdated today
    Frontend & DesignAuto-check passed
  • Nbj Write Clearly

    daniel-p-green/nbj-write-clearly

    Drafts, revises, and audits reader-first technical and product documentation.

    117 GitHub stars~1.1k tokensUpdated 1 mo ago
    Writing & ContentAuto-check passed
  • Readable Content

    Owl-Listener/inclusive-design-skills

    Write and structure content for diverse reading abilities and cognitive styles.

    105 GitHub stars~883 tokensUpdated 4 mo ago
    Writing & ContentAuto-check passed
  • Ieee Figure Table

    CloudWave818/ieee-skills

    Audit, redesign, generate, and improve IEEE manuscript figures, tables, captions, result presentation, plotting scripts, visual polish, hybrid Python/R plus vector-editor workflows…

    359 GitHub stars~1k tokensUpdated 1 mo ago
    Data & AnalyticsAuto-check passed
  • Blog Persona

    AgriciDaniel/claude-blog

    Create and manage writing personas with NNGroup 4-dimension tone framework (Funny-Serious, Formal-Casual, Respectful-Irreverent, Enthusiastic-Matter-of-fact).

    2.3k GitHub starsUsed in 1 repo~2.3k tokens
    Writing & ContentAuto-check passed

Works with

Questions about UX Writing

What does UX Writing do?

Applies UX writing practice to interface copy such as buttons, errors, forms and onboarding, using four quality standards and accessibility guidance. This skill guides the agent in writing and auditing interface copy, from buttons, labels and titles to error messages, notifications, empty states, onboarding and help text. Everything is held to four standards: purposeful, concise, conversational and clear.

When should I use UX Writing?

UX Writing fits situations like: writing button labels, error messages and success messages; editing existing UI text for clarity and reading level; designing onboarding or empty-state copy; auditing product copy for consistency.

How do I install UX Writing in Claude Code?

Run `npx skills add content-designer/ux-writing-skill --skill ux-writing -a claude-code`. Or copy the skill folder (the content-designer/ux-writing-skill repository) into .claude/skills/ux-writing in your project. Claude Code loads it when a task matches its description.

How do I install UX Writing in Codex?

Run `npx skills add content-designer/ux-writing-skill --skill ux-writing -a codex`. Or copy the skill folder (the content-designer/ux-writing-skill repository) into .agents/skills/ux-writing in your project. Codex loads it when a task matches its description.

Can I use UX Writing 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 content-designer/ux-writing-skill --skill ux-writing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ux-writing, .gemini/skills/ux-writing, .github/skills/ux-writing and .opencode/skills/ux-writing in your project.

What does UX Writing need to run?

Going by SKILL.md and its folder, UX Writing needs a shell for the scripts in its folder.

Does UX Writing access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is UX Writing 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 UX Writing use?

UX Writing is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does UX Writing use?

About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 7.7k tokens, read only when the agent opens those files.

What are the alternatives to UX Writing?

Skills that share tags, products or a category with UX Writing: Content Style Guide (mohitagw15856/pm-claude-skills, 1.4k stars), Color Audit (rome-os/rome, 743 stars), Nbj Write Clearly (daniel-p-green/nbj-write-clearly, 117 stars) and Readable Content (Owl-Listener/inclusive-design-skills, 105 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains UX Writing?

content-designer (a GitHub user) maintains it in content-designer/ux-writing-skill, which has 224 GitHub stars. The repository was last updated on May 26, 2026.

Source: content-designer/ux-writing-skill on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.