Skip to content

docs: split uniwind skill#583

Merged
Brentlok merged 2 commits into
mainfrom
split-skill
Jun 17, 2026
Merged

docs: split uniwind skill#583
Brentlok merged 2 commits into
mainfrom
split-skill

Conversation

@Brentlok

@Brentlok Brentlok commented Jun 17, 2026

Copy link
Copy Markdown
Contributor

Summary by CodeRabbit

  • Documentation
    • Reorganized the Uniwin skill overview with a new “Reference Routing” section and workflow checklist, including a pointer to the related NativeWind migration skill
    • Added/expanded nine Uniwind reference guides: Setup, Component Bindings, Theming, Styling Patterns, CSS & Utilities, Integrations, Variants & Selectors, Uniwin Pro, and Troubleshooting

@jpudysz

jpudysz commented Jun 17, 2026

Copy link
Copy Markdown
Collaborator

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jun 17, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai

coderabbitai Bot commented Jun 17, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: c1de8dd5-0d26-4d43-b696-ecd6dd77c823

📥 Commits

Reviewing files that changed from the base of the PR and between 907dce6 and 915496e.

📒 Files selected for processing (1)
  • skills/uniwind/references/troubleshooting.md
✅ Files skipped from review due to trivial changes (1)
  • skills/uniwind/references/troubleshooting.md

📝 Walkthrough

Walkthrough

The monolithic skills/uniwind/SKILL.md (which contained a complete inline reference) is replaced by a slim routing index that delegates readers to eight new focused reference files added under skills/uniwind/references/: setup, theming, styling-patterns, component-bindings, css-and-utilities, variants-and-selectors, integrations, pro, and troubleshooting.

Changes

Uniwind Skill Documentation Restructure

Layer / File(s) Summary
SKILL.md routing index
skills/uniwind/SKILL.md
Title shortened to "Uniwind"; ~2184 lines of inline reference content removed and replaced with a Reference Routing section that maps tasks to the new references/*.md files, a Workflow checklist, and a Related Skills note.
Setup reference
skills/uniwind/references/setup.md
New file documenting installation, global.css creation, Metro/Vite config options (withUniwindConfig, cssEntryFile, extraThemes, etc.), TypeScript .d.ts generation, Expo Router placement, Tailwind IntelliSense settings, and monorepo @source usage.
Theming reference
skills/uniwind/references/theming.md
New file covering dark: quick setup, scalable CSS-variable theming, custom themes, Theme API (Uniwind.setTheme/currentTheme/hasAdaptiveThemes), ScopedTheme, LayoutDirection, useCSSVariable/getCSSVariable, runtime variable updates, @theme static, OKLCH, and Display P3 colors.
Styling patterns reference
skills/uniwind/references/styling-patterns.md
New file documenting withUniwind and useResolveClassNames for third-party components, safe dynamic className construction, tailwind-variants (tv) usage, cn() deduplication utility, and the Tailwind ! important modifier priority rules.
Component bindings reference
skills/uniwind/references/component-bindings.md
New file with per-component mapping tables from {prop}ClassName to RN props, the accent- prefix pattern for non-style color props, excluded-component notes, and JSX usage examples with wrong/correct accent- comparisons.
CSS functions and utilities reference
skills/uniwind/references/css-and-utilities.md
New file covering device-aware CSS functions (hairlineWidth(), fontScale(), pixelRatio(), light-dark()), custom CSS classes in global.css, @utility directive use cases, @theme directive, RN font constraints, platform font overrides, and gradient usage with expo-linear-gradient.
Variants and selectors reference
skills/uniwind/references/variants-and-selectors.md
New file documenting platform selectors, data selectors (data-[prop=value]:), interactive state variants, responsive breakpoints with custom breakpoint guidance, and safe area utility classes (p-safe/m-safe/inset-safe) with Uniwind Free vs Pro setup differences.
Integrations reference
skills/uniwind/references/integrations.md
New file covering React Navigation theming via useResolveClassNames, UI kit compatibility (HeroUI Native, react-native-reusables, Gluestack, Lucide, FlashList), semantic token guidance, supported vs unsupported CSS classes for RN, and extra Uniwind utilities.
Pro features reference
skills/uniwind/references/pro.md
New file documenting Pro pricing, installation, Reanimated animations (animate-*, uw-* entering/exiting presets, layout transitions, property transitions), shadow tree updates and diagnostics, group variants, experimental default styles, Suspense support, native insets, and ThemeTransitionPreset theme transitions.
Troubleshooting reference
skills/uniwind/references/troubleshooting.md
New file providing a Setup Diagnostics checklist, a symptom/cause/fix table for common and Pro-specific failures, a selective resolver snippet for unstable_enablePackageExports, a detailed FAQ, MCP Server note, and a Related Skills pointer.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • uni-stack/uniwind#433: Added the comprehensive inline reference that this PR replaces with the new references/*.md routing structure in the same skills/uniwind/SKILL.md file.
  • uni-stack/uniwind#559: Directly edits skills/uniwind/SKILL.md to refine Pro/diagnostics guidance — the same file this PR restructures into a routing index.
  • uni-stack/uniwind#541: Documents experimental.defaultStyles, the same Pro feature now covered in the new skills/uniwind/references/pro.md.

Suggested reviewers

  • jpudysz

Poem

🐇 Hippity hop, the docs grew too long,
So I split them apart where each topic belongs.
Setup and theming now each have a home,
Pro features and troubleshooting no longer roam.
Eight tidy references, neat in a row —
A rabbit's best work, all ready to go! ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately reflects the primary change: splitting the Uniwind skill documentation into multiple reference files with a restructured main document.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch split-skill

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (4)
skills/uniwind/references/setup.md (1)

64-64: ⚡ Quick win

Clarify when Vite configuration is needed.

Line 64 conditions the Vite section on "If user has storybook setup", but the configuration shown is not Storybook-specific. This phrasing risks causing users without Storybook to skip this section even if they use Vite in their project. Clarify whether Vite configuration is:

  • Required for all projects that use Vite
  • Optional/recommended for Storybook specifically
  • Or a different scenario entirely
📝 Suggested clarification

Replace line 64 with one of these options:

Option 1 (if Vite is needed for any Vite user):

-If user has storybook setup, add extra vite config:
+If your project uses Vite (e.g., for Storybook or a web companion app), add this config:

Option 2 (if this is Storybook-specific):

-If user has storybook setup, add extra vite config:
+For Storybook setups using Vite, add this config:
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/uniwind/references/setup.md` at line 64, The conditional statement "If
user has storybook setup, add extra vite config:" on line 64 is ambiguous and
risks causing users without Storybook to skip this section even if they need
Vite configuration. Replace this line with clearer wording that explicitly
specifies whether the Vite configuration is required for all projects using
Vite, is optional/recommended specifically for Storybook users, or applies to a
different scenario. The revised condition should remove any ambiguity about
which users need to follow the configuration section that follows.
skills/uniwind/references/pro.md (2)

301-303: ⚖️ Poor tradeoff

Expand Suspense support explanation.

The explanation is vague: "keeps the C++ shadow entries alive" and "when the tree unsuspends, styles are already up to date" do not clearly describe the mechanism. Users may not understand why this prevents stale theme flashes or when this behavior is triggered. Consider explaining: (1) that Uniwind tracks theme/runtime state independently of React's suspend/unsuspend lifecycle, and (2) that style updates are queued and applied on unsuspend.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/uniwind/references/pro.md` around lines 301 - 303, The Suspense
Support section explanation is too vague about the mechanism preventing stale
theme flashes. Expand the explanation in this section to clarify that Uniwind
independently tracks theme and runtime state separate from React's
suspend/unsuspend lifecycle, and that style updates are queued during the
suspension period and then applied when the tree unsuspends. This will help
users understand both the "why" (preventing flashes) and the "when" (during and
after suspension) of this behavior.

98-110: ⚖️ Poor tradeoff

Explain component auto-swap detection mechanism.

The document states "Components auto-swap to Animated versions when animation classes detected," but does not explain the detection mechanism or edge cases. When are classes "detected" — at compile time, parse time, or runtime? What happens if animation classes are added dynamically? Can detection be disabled or customized?

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/uniwind/references/pro.md` around lines 98 - 110, Expand the
documentation in the auto-swap components section to explain the detection
mechanism in detail. Clarify when the auto-swap detection occurs (compile-time,
parse-time, or runtime), specify what constitutes "animation classes detected"
(e.g., which specific class names trigger the swap), document how the system
handles dynamically added animation classes, and note whether this auto-swap
behavior can be disabled, customized, or configured. Add this information as a
detailed explanation paragraph before or after the components table to provide
developers with complete understanding of how and when the auto-swap mechanism
is triggered.
skills/uniwind/references/troubleshooting.md (1)

74-90: ⚡ Quick win

Clarify when culori selective resolver is needed.

The selective resolver code (line 81) includes both 'uniwind' and 'culori' in the module check. Is culori always required, or only when using certain color features? The comment should clarify whether this is a mandatory requirement or an optional safety measure. Consider adding a note explaining when culori support is needed.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@skills/uniwind/references/troubleshooting.md` around lines 74 - 90, Add
clarification to the selective resolver documentation in the
unstable_enablePackageExports section to explain when culori support is needed.
Include a comment or note above or within the resolveRequest function that
specifies whether culori is always required in the module check, or if it should
only be included when using specific color features. If culori is optional,
provide guidance on when developers should include it versus when they can
safely remove it from the moduleName check that includes both 'uniwind' and
'culori'.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@skills/uniwind/references/troubleshooting.md`:
- Around line 121-166: The FAQ section contains multiple references to "above"
sections that have been moved to separate documentation files during the skill
split. Replace all instances of "above" phrasing (such as "See the **Fonts**
section above", "See the **Data Selectors** section above", "See the
**Gradients** section above", "See the **Safe Area Utilities** section above",
and "See the **UI Kit Compatibility** section above") with explicit cross-file
markdown links that point to the correct reference files: `css-and-utilities.md`
for Fonts and Gradients, `variants-and-selectors.md` for Data Selectors and Safe
Area Utilities, `integrations.md` for UI Kit Compatibility, and `theming.md` for
Theming. Use markdown link syntax (e.g.,
`[filename](./filename.md#section-anchor)`) instead of "above" phrasing to
provide clear navigation across the split documentation structure.
- Line 72: In the troubleshooting table within the Pro component styles row,
locate the cell containing the truncated property name "experimental.defaul..."
and replace it with the complete and correct property name
"experimental.defaultStyles: true" to ensure the configuration instruction is
fully visible and accurate in the documentation.

---

Nitpick comments:
In `@skills/uniwind/references/pro.md`:
- Around line 301-303: The Suspense Support section explanation is too vague
about the mechanism preventing stale theme flashes. Expand the explanation in
this section to clarify that Uniwind independently tracks theme and runtime
state separate from React's suspend/unsuspend lifecycle, and that style updates
are queued during the suspension period and then applied when the tree
unsuspends. This will help users understand both the "why" (preventing flashes)
and the "when" (during and after suspension) of this behavior.
- Around line 98-110: Expand the documentation in the auto-swap components
section to explain the detection mechanism in detail. Clarify when the auto-swap
detection occurs (compile-time, parse-time, or runtime), specify what
constitutes "animation classes detected" (e.g., which specific class names
trigger the swap), document how the system handles dynamically added animation
classes, and note whether this auto-swap behavior can be disabled, customized,
or configured. Add this information as a detailed explanation paragraph before
or after the components table to provide developers with complete understanding
of how and when the auto-swap mechanism is triggered.

In `@skills/uniwind/references/setup.md`:
- Line 64: The conditional statement "If user has storybook setup, add extra
vite config:" on line 64 is ambiguous and risks causing users without Storybook
to skip this section even if they need Vite configuration. Replace this line
with clearer wording that explicitly specifies whether the Vite configuration is
required for all projects using Vite, is optional/recommended specifically for
Storybook users, or applies to a different scenario. The revised condition
should remove any ambiguity about which users need to follow the configuration
section that follows.

In `@skills/uniwind/references/troubleshooting.md`:
- Around line 74-90: Add clarification to the selective resolver documentation
in the unstable_enablePackageExports section to explain when culori support is
needed. Include a comment or note above or within the resolveRequest function
that specifies whether culori is always required in the module check, or if it
should only be included when using specific color features. If culori is
optional, provide guidance on when developers should include it versus when they
can safely remove it from the moduleName check that includes both 'uniwind' and
'culori'.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 1cbe2c17-7377-4d70-8149-d8f6c0ab228e

📥 Commits

Reviewing files that changed from the base of the PR and between f23e849 and 907dce6.

📒 Files selected for processing (10)
  • skills/uniwind/SKILL.md
  • skills/uniwind/references/component-bindings.md
  • skills/uniwind/references/css-and-utilities.md
  • skills/uniwind/references/integrations.md
  • skills/uniwind/references/pro.md
  • skills/uniwind/references/setup.md
  • skills/uniwind/references/styling-patterns.md
  • skills/uniwind/references/theming.md
  • skills/uniwind/references/troubleshooting.md
  • skills/uniwind/references/variants-and-selectors.md

Comment thread skills/uniwind/references/troubleshooting.md
Comment thread skills/uniwind/references/troubleshooting.md Outdated
@Brentlok Brentlok merged commit af3e7bf into main Jun 17, 2026
2 checks passed
@Brentlok Brentlok deleted the split-skill branch June 17, 2026 11:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants