
Write Ui Module Readme
- 10 installs
- 33.3k repo stars
- Updated August 5, 2026
- remix-run/remix
Helps with documentation tasks during AI-assisted development.
About
write-ui-module-readme is a Claude Code skill for documentation. It helps solo builders move faster with AI-assisted coding.
- write-ui-module-readme
- Documentation
- AI-coding skill
Write Ui Module Readme by the numbers
- 10 all-time installs (skills.sh)
- +1 installs in the week ending Aug 4, 2026 (Skillselion tracking)
- Ranked #1,137 of 1,879 Documentation skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/remix-run/remix --skill write-ui-module-readmeAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 10 |
|---|---|
| repo stars | ★ 33.3k |
| Last updated | August 5, 2026 |
| Repository | remix-run/remix ↗ |
What it does
Helps with documentation tasks during AI-assisted development.
Files
Write UI Module Readme
Overview
Write module README files for packages/ui/src/lib/* as practical usage guides for agents and developers.
Optimize for fast, correct adoption:
- show the canonical usage first
- explain each exported
module.*value briefly - document the important behavior guarantees
- avoid implementation-history dumps and internal type walkthroughs
These are module docs for UI primitives, not package-level READMEs.
Workflow
1. Read the module source first.
- Identify the actual public exports and their roles.
- Confirm the behavior from code, not memory.
2. Read nearby tests and demos.
- Pull behavior notes from tests.
- Reuse the most realistic example shape from a demo when available.
3. Document the module as it exists today.
- Do not describe planned APIs.
- Do not document internal coordinators, private state, or workaround history unless they are part of the public contract.
4. Keep the README short and scannable.
- Prefer short paragraphs and flat bullets.
- Use one strong canonical example instead of multiple weak snippets.
Recommended Structure
Use this structure unless the module needs something more specific:
1. # ModuleName 2. One or two sentences: what it is, what it is for, and what it is not for 3. ## Usage 4. ## \module.\*\` or equivalent export reference 5. ## Behavior Notes 6. ## When To Use Something Else` when the primitive sits below higher-level widgets
Usage Section
Lead with a copy-pasteable example that shows the real shape of usage.
- Prefer production-shaped UI over toy snippets.
- Use the actual exported API names.
- Show the minimum surrounding structure needed to use the primitive correctly.
- If the module composes with other first-party UI helpers, show that composition.
For popup-style primitives, the example should usually show:
- trigger
- surface/root
- one or two meaningful controls inside
- dismissal or completion path
Export Reference
After the example, explain the role of each important exported value in a few lines each.
For example:
module.context: what shared coordination it providesmodule.button(...): what it registers or activatesmodule.surface(): what it turns the host intomodule.dismiss(): how it closes or finalizesmodule.change: what event it emits and the useful event fields
Keep this section focused on:
- what it does
- where to apply it
- key arguments or options
- observable behavior
Do not turn this into a full API dump.
Behavior Notes
Document the behaviors that matter when composing with the primitive:
- focus movement
- dismissal rules
- anchoring rules
- keyboard behavior
- multi-trigger behavior
- any important guarantees tested in the module suite
This section should save a reader from opening the implementation just to answer “what happens when...?”
Scope Rules
- Treat the primary audience as an agent or developer trying to use the primitive correctly.
- Prefer usage guidance over architecture explanation.
- Name public events and useful event fields, but avoid deep event-class internals unless necessary.
- Do not document private classes, internal coordinators, or helper mixins unless the README is specifically for that helper.
- Do not pad the README with generic accessibility or popover theory the agent already knows.
Good Patterns
- “Use
popoverdirectly for custom floating panels like filters or view options.” - “Wrap triggers and the surface in
popover.context.” - “The opener that started the current session controls anchoring and focus return.”
- “Do not use this as the final consumer-facing primitive for menus or comboboxes.”
Checklist
- Did you read the module source first?
- Did you confirm behavior from tests or demos?
- Does the README start with a realistic usage example?
- Does it explain each important exported value briefly?
- Does it include behavior notes that matter in practice?
- Does it avoid internal implementation detail and historical debugging context?
- Would an agent know how to use the primitive correctly without opening the source?