shieldcn-badges
Create polished shieldcn README badges, badge groups, charts, headers, sponsors grids, and…
Build React Native and Expo UIs with PanelUI — adding components, theming, composing overlays and forms, and debugging why something is unstyled. Applies when working in an Expo or React Native project that has panelui-native installed or a panelui.json, when the user mentions
$ npx -y skills add panel-ui/PanelUI --skill panelui --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/paneluiContext preview
The summary Claude sees to decide when to auto-load this skill.
Build React Native and Expo UIs with PanelUI — adding components, theming, composing overlays and forms, and debugging why something is unstyled. Applies when working in an Expo or React Native project that has panelui-native installed or a panelui.json, when the user mentions
name: panelui description: Build React Native and Expo UIs with PanelUI — adding components, theming, composing overlays and forms, and debugging why something is unstyled. Applies when working in an Expo or React Native project that has panelui-native installed or a panelui.json, when the user mentions PanelUI, or when they ask for a bottom sheet, dialog, chart, chat transcript, form or any other screen UI in React Native. license: MIT compatibility: Expo SDK 57+ and React Native 0.86, with Uniwind (Tailwind CSS v4 for React Native) and Reanimated. Not for the web — these components are React Native only. metadata: author: Khalid Abdi version: 0.111.0 allowed-tools: Bash(npx panelui-cli@latest *), Bash(pnpm dlx panelui-cli@latest *), Bash(bunx panelui-cli@latest *)
A React Native component library for Expo, styled with Tailwind CSS through Uniwind and animated on the UI thread with Reanimated. Pure TypeScript, no native modules, runs in Expo Go.
> **Run every CLI command with the project's own runner** — `npx panelui-cli@latest`, > `pnpm dlx panelui-cli@latest` or `bunx panelui-cli@latest`, matching its `packageManager`. > Examples below use `npx`.
If the user says nothing is styled, `className` does nothing, the screen is blank, or Uniwind cannot find `--color-background`: **go straight to [setup.md](./setup.md)**. There is no error for this and it is a wrong path in `metro.config.js` almost every time. Do not start reading component code.
There are two ways in and they are both fully supported, so **do not assume**:
npx panelui-cli@latest mcp # the MCP server, if the agent supports it
or, without MCP, read `package.json` and look for `panelui.json`:
| What you find | What it means | How to import | | --- | --- | --- | | `panelui-native` in dependencies | The package. The default. | `import { Button } from 'panelui-native'` | | A `panelui.json` | Source copied into the repo, owned and editable | `import { Button } from '@/components/ui/button'` | | Both | Normal — the package, with one component forked | Whichever the file is |
If neither is there, the project has not installed it: `npx create-panelui-app@latest` for a new app, or [setup.md](./setup.md) for an existing one. Do not hand-write component source into a project that has not been set up — nothing will be styled, and the reason will not be obvious.
1. **Look before you build.** [components.md](./components.md) lists every one of them, and there are more than a hundred. Search it before writing custom UI — a "custom" sheet, picker, chart or chat transcript is almost always one that exists. 2. **Read the props from this skill, not from memory.** Every component has a file at `components/<slug>.md` with its anatomy, every prop with its type and default, its variants and its parts, generated from the library's TypeScript. Read the one you are about to use. A remembered prop name usually is not right, and nothing here needs a network request. 3. **Compose the parts.** A settings screen is `Frame` + `Frame.Panel` + `Frame.Row`. A chat is `MessageScroller` + `Message`. [recipes.md](./recipes.md) has those screens written out. Reach for a compound part before a `View`. 4. **Never hardcode a colour.** Every colour is a semantic token — `bg-card`, `text-muted-foreground`, `border-border`. A literal breaks all six themes at once.
Each links to a file with wrong/right pairs.
already knows, and `dark:` does not resolve at all inside the named themes.
before compiles to nothing — no error, no warning, the element silently loses the property.
it Dialog, BottomSheet, Popover, Select and Toast mount and never appear.
`Select.Content`. Using one outside throws with the part's name.
conditionally render an overlay to close it — it has an exit animation to finish.
`Animated` puts the work back on the JS thread, which is the thing this library is for.
has to come from the container.
dies in native code where a JS `try` cannot catch it.
Six themes in three families — Panel, Moon, Grass — each in light and dark. A family sets its own **radius scale** as well as its palette, so switching one changes the shape of the UI too. Switch at runtime with `useThe
Repo: panel-ui/PanelUI
Create polished shieldcn README badges, badge groups, charts, headers, sponsors grids, and…
Design an original app logo — a compact mascot or symbol that stays readable at 32 × 32 and…
Build React web UIs with PanelUI's web collection — adding its components from the shadcn…