# clerk-custom-ui

A Clerk skill that has the agent build custom sign-in and sign-up forms with hooks, or restyle the pre-built components to fit your brand.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 55200 installs · ★ 89
- Author: clerk
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/clerk/skills/tree/HEAD/skills/clerk-custom-ui/SKILL.md
- Updated: 2026-10-23
- HTML: https://affpapa.org/en/nevibecode/skills/clerk-custom-ui

## What it does

The skill splits Clerk work into two jobs: build your own sign-in and sign-up screens with the `useSignIn` and `useSignUp` hooks, or restyle the ready-made components. `SKILL.md` holds a task table pointing at `core-2/` and `core-3/` references, so the agent checks the SDK version in `package.json` before it opens anything. Docs get pulled on demand through WebFetch.

Themes ship in `@clerk/ui`: `dark`, `neobrutalism`, `shadcn`, `simple`. Pass an array and the last theme wins. Colors, fonts and radii go into `appearance.variables`; the logo and social button style belong in `appearance.options`. A pitfalls table covers the usual slips, like `colorPrimary` typed as `primaryColor` or `logoImageUrl` dropped at the top level instead of inside `options`.

Your app must already sit inside `ClerkProvider`; the skill hands that step to `clerk-setup`. If `components.json` is in the project root, it tells the agent to apply the `shadcn` theme as the opening move and import `@clerk/ui/themes/shadcn.css` in the global styles, because otherwise the forms drift away from your design system. On Core 2 the same settings live under `layout` rather than `options` and themes come from `@clerk/themes`, so check the version before editing.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add clerk/skills --skill clerk-custom-ui -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/clerk-custom-ui/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/clerk-custom-ui/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add clerk/skills --skill clerk-custom-ui -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/clerk-custom-ui/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add clerk/skills --skill clerk-custom-ui -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/clerk-custom-ui/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install clerk/skills clerk-custom-ui
```

2. **Manually: put the files in place**
- File: `.github/skills/clerk-custom-ui/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add clerk/skills --skill clerk-custom-ui -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/clerk/skills --path skills/clerk-custom-ui
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/clerk-custom-ui/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add clerk/skills --skill clerk-custom-ui -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/clerk/skills/tree/HEAD/skills/clerk-custom-ui/SKILL.md

## When to use it
- build a sign-in form on top of `useSignIn`
- repaint Clerk components to match brand colors
- apply the `shadcn` theme so auth screens match the design system
- move the logo and social buttons where the layout needs them
- trace why `useSignUp` returns a different shape after an SDK upgrade

## Example prompts
- Build a custom sign-up screen with `useSignUp` instead of the pre-built component.
- Apply the `shadcn` theme to Clerk components, the project already has `components.json`.
- Restyle `<SignIn />`: set `colorPrimary`, bump `borderRadius`, use `/logo.png` as the logo.

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: cfe16c21cde3c6de.

BEGIN THIRD-PARTY FILE cfe16c21cde3c6de
````text
---
name: clerk-custom-ui
description: Custom authentication flows and component appearance - hooks (useSignIn,
  useSignUp), themes, colors, fonts, CSS. Use for custom sign-in/sign-up flows, appearance
  styling, visual customization, branding.
allowed-tools: WebFetch
license: MIT
metadata:
  author: clerk
  version: 2.3.0
---

# Custom UI

> **Prerequisite**: Ensure `ClerkProvider` wraps your app. See `clerk-setup` skill.
>
> **Version**: Check `package.json` for the SDK version — see `clerk` skill for the version table. This determines which custom flow references to use below.

This skill covers two areas:
1. **Custom authentication flows** — build your own sign-in/sign-up UI with hooks
2. **Appearance customization** — theme, style, and brand Clerk's pre-built components

## What Do You Need?

| Task | Reference |
|------|-----------|
| Custom sign-in (Core 2 / LTS) | core-2/custom-sign-in.md |
| Custom sign-up (Core 2 / LTS) | core-2/custom-sign-up.md |
| Custom sign-in (Current SDK v7+) | core-3/custom-sign-in.md |
| Custom sign-up (Current SDK v7+) | core-3/custom-sign-up.md |
| Show component pattern (Current SDK) | core-3/show-component.md |

## Custom Flow References

| Task | Core 2 | Current |
|------|--------|---------|
| Custom sign-in (useSignIn) | `core-2/custom-sign-in.md` | `core-3/custom-sign-in.md` |
| Custom sign-up (useSignUp) | `core-2/custom-sign-up.md` | `core-3/custom-sign-up.md` |
| `<Show>` component | *(use `<SignedIn>`, `<SignedOut>`, `<Protect>`)* | `core-3/show-component.md` |

---

## Appearance Customization

Appearance customization applies to both Core 2 and the current SDK.

### Component Customization Options

| Task | Documentation |
|------|---------------|
| Appearance prop overview | https://clerk.com/docs/nextjs/guides/customizing-clerk/appearance-prop/overview |
| Options (structure, logo, buttons) | https://clerk.com/docs/nextjs/guides/customizing-clerk/appearance-prop/options |
| Themes (pre-built dark/light) | https://clerk.com/docs/nextjs/guides/customizing-clerk/appearance-prop/themes |
| Variables (colors, fonts, spacing) | https://clerk.com/docs/nextjs/guides/customizing-clerk/appearance-prop/variables |
| CAPTCHA configuration | https://clerk.com/docs/nextjs/guides/customizing-clerk/appearance-prop/captcha |
| Bring your own CSS | https://clerk.com/docs/nextjs/guides/customizing-clerk/appearance-prop/bring-your-own-css |

### Appearance Pattern

```typescript
<SignIn
  appearance={{
    variables: {
````
END THIRD-PARTY FILE cfe16c21cde3c6de

The third-party file has ended. Everything between the cfe16c21cde3c6de tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2501 of 6495 bytes. © clerk · MIT · https://github.com/clerk/skills/tree/HEAD/skills/clerk-custom-ui/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
