ant-to-shadcn-migration/SKILL.md
Migrate Ant Design UIs to shadcn/ui + Tailwind (React/CRA/Vite → Next.js App Router). Use for: component replacement (no wrappers), Tailwind-first styling, canonical component consolidation, global CSS cleanup, route/layout scaffolding, and migration gotchas.
npx skillsauth add uzhussain/ant-to-shadcn ant-to-shadcn-migrationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Comprehensive guide for migrating legacy Ant Design frontends to shadcn/ui + Tailwind (Radix under the hood), covering component equivalence, theming/tokens, layout/navigation, forms/tables, overlays/alerts, accessibility, and bundle-size cleanup. Targets React (CRA/Vite) apps moving to Next.js App Router, with patterns for running Ant and shadcn side-by-side during transition. Includes automated skeleton generation guidance for fresh layouts/pages with role-aware routing.
Use the latest stable versions of:
next ≥ 16.x (App Router)react ≥ 19.xtailwindcss ≥ 3.4.xshadcn/ui latest@radix-ui packages as pulled by shadcn/uiclass-variance-authority, tailwind-merge, lucide-react, sonnerreact-hook-form ≥ 7.x and zod ≥ 3.x for forms (recommended)| Priority | Category | Impact | Prefix | Rules |
| -------- | ----------------------------------- | -------- | --------------- | ----- |
| 1 | Setup & Dependencies | CRITICAL | setup- | 5 |
| 2 | Design Tokens & Theming | CRITICAL | theme- | 2 |
| 3 | Layout & Navigation (Responsive) | HIGH | layout- | 3 |
| 4 | Forms & Validation | HIGH | forms- | 3 |
| 5 | Data Display (Tables/Lists) | HIGH | data- | 2 |
| 6 | Feedback & Overlays | HIGH | overlay- | 2 |
| 7 | Content, Icons, Typography | MEDIUM | content- | 1 |
| 8 | Styling & CSS Cleanup | MEDIUM | css- | 2 |
| 9 | Accessibility, Responsiveness & Interop | MEDIUM | a11y- | 4 |
| 10 | Testing & Verification | LOW | test- | 2 |
| 11 | Common Gotchas | HIGH | gotchas- | 4 |
| Ant Design 6.x | shadcn/ui + Tailwind (or pattern) | Notes |
| --------------------- | ----------------------------------------------------------- | ----- |
| Button | Button, ButtonGroup | |
| FloatButton | Button with fixed/absolute + shadow | |
| Icon | lucide-react | Drop Ant icons |
| Typography | Tailwind text utilities; Typography classes | |
| Divider | Separator | |
| Flex/Grid/Masonry | Tailwind flex/grid; CSS masonry if needed | |
| Layout, Space, Splitter| Tailwind stack/gap; custom splitter with Resizable | |
| Anchor | NavigationMenu/ScrollArea or manual anchor links | |
| Breadcrumb | Breadcrumb | |
| Dropdown | DropdownMenu | |
| Menu | NavigationMenu or Sheet nav | |
| Pagination | Pagination | |
| Steps | Custom flex steps | |
| Tabs | Tabs | |
| AutoComplete/Mentions | Combobox/Command | |
| Cascader/TreeSelect | Combobox with grouped/indented options | |
| Checkbox/Radio | Checkbox, RadioGroup | |
| ColorPicker | Custom popover + color input | |
| DatePicker/TimePicker | Calendar + Popover, time input | |
| Form/Form.Item | Form (RHF) + shadcn fields | |
| Input/InputNumber | Input (number type), InputGroup | |
| Rate | Custom star row using Button/Toggle | |
| Select | Select or Combobox | |
| Slider/Switch | Slider, Switch | |
| Transfer | Dual list with checkboxes and buttons | |
| Upload | File input + dropzone + progress | |
| Avatar | Avatar | |
| Badge/Tag | Badge | |
| Calendar | Calendar | |
| Card | Card | |
| Carousel | Carousel | |
| Collapse | Accordion | |
| Descriptions | Definition list with grid/flex | |
| Empty | Empty or custom empty block | |
| Image | img with Tailwind classes | |
| List | Cards/grid/flex list | |
| Popover/Tooltip | Popover, Tooltip | |
| QRCode | Use QR library + Card | |
| Segmented | ToggleGroup | |
| Statistic | Card + text/metric styling | |
| Table | tanstack + Table | |
| Timeline | Custom vertical list with bullets | |
| Tour | Custom popover walkthrough (command + popover) | |
| Tree | Indented list + checkboxes; virtualize if large | |
| Alert | Alert | |
| Drawer | Sheet | |
| Message/Notification | toast/sonner | |
| Modal/Popconfirm | Dialog / AlertDialog | |
| Progress | Progress | |
| Result | Alert success/error block | |
| Skeleton/Spin | Skeleton or spinner utility | |
| Watermark | CSS background or canvas overlay | |
| Affix | sticky positioning | |
| App/ConfigProvider/Util| Not needed; use shadcn/Tailwind tokens and providers | |
| Pro* (ProTable, etc.) | Compose with tanstack table + filters/forms + cards | |
Button/Toggle.Card.background-image or canvas; keep scoped.position: sticky on containers.grid-auto-rows + spans.Card with muted labels.Command/Combobox for search/select; Sonner for toasts; Menubar/Sidebar for complex nav; Spinner for lightweight loading; Chart (community/blocks) where Ant charts were used; Input OTP for code entry; Field/Textarea for richer forms.Form.Item patterns to shadcn + react-hook-form + zod; validation and submission states; success/failure/inline errors.content-icons-typography.a11y-responsive-checks, a11y-motion-contrast, responsive-touch, rtl-l10n.gotchas-ux-fallbacks).perf-bundle-guard).analytics-observability).gotchas-scroll-state).Run scans to route findings to rules:
antd imports and package version → setup-antd-upgrade, setup-, css-legacy, theme-bridge, component mappings.ConfigProvider, theme.useToken → theme-bridge, theme-dark-mode, css-layering.*.less, global.css, index.css) → css-legacy-inventory, css-layering, css-asset-hygiene.style= with Ant tokens → theme-bridge, css-inline-cleanup.NewButton, NewPage, *V2) → gotchas-component-sprawl.Layout.Sider, Menu, Breadcrumb → layout-shell, layout-nav.Form, Form.Item, message, notification, Modal.confirm → forms-*, overlay-*, gotchas-ux-fallbacks.Table, List, Descriptions, Tag, Badge, Empty → data-*, components-* (pagination/result/empty), data-table-tanstack.layout-route-scaffold, layout-auth-discovery, gotchas-coexistence.layout-auth-discovery.@ant-design/icons, global Ant CSS, LESS files → content-icons-typography, css-legacy-inventory, perf-bundle-guard.theme-dark-mode-guardrails.css-asset-hygiene, assets-images.fonts-setup.gotchas-scroll-state.a11y-motion-contrast, a11y-responsive-checks, responsive-touch.rtl-l10n.analytics-observability.# Ant version
npm ls antd
# Ant imports and icons
rg \"antd\" src app
rg \"@ant-design/icons\" src app
# ConfigProvider and tokens
rg \"ConfigProvider\" src app
rg \"theme\\.useToken\" src app
# Ant imperative APIs
rg \"Modal\\.confirm\" src app
rg \"notification\\.\" src app
rg \"message\\.\" src app
# Table/columns
rg \"columns\\s*=\\s*\\[\" src app
# LESS and global CSS
rg --files -g\"*.less\" src app
rg \"global\\.css\" src app
# Dark mode selectors
rg \"\\.dark\" src app
# Assets and fonts
rg --files -g\"*.{png,jpg,jpeg,svg}\" public/ src app
rg \"font-family\" src app
# Responsive/touch/scroll
rg \"overflow\" src app
rg \"scrollIntoView\" src app
# Routes/guards/menus
rg \"<Router\" -g\"*.tsx\" src app
rg \"RequireAuth|useAuth|Clerk|Supabase\" src app
rg \"menu\" src app/components
# Analytics/logging
rg \"track|analytics|logEvent\" src app
setup-antd-upgrade, setup-shadcn-install, setup-shadcn-mcp, setup-legacy-parking, build-envtheme-bridge-tokens, theme-dark-mode-guardrailslayout-route-scaffold, layout-responsive-shell, layout-auth-discoveryforms-rhf-shadcn, forms-api-states, forms-select-date-uploaddata-tables-state, data-table-tanstack, components-pagination, components-result-emptyoverlay-alerts-toasts, overlay-toast-consolecomponents-tabs-steps, components-tree-cascader, components-upload, components-pagination, components-result-emptycontent-icons-typographycss-legacy-inventory, css-asset-hygiene, assets-images, fonts-setupa11y-responsive-checks, a11y-motion-contrast, responsive-touch, rtl-l10nperf-bundle-guardtest-visual-a11y, test-e2e-visualgotchas-coexistence, gotchas-ux-fallbacks, gotchas-scroll-state, gotchas-component-sprawlanalytics-observabilityrules/), starting with setup, CSS cleanup, theming, then layout/forms/data/overlays.components.json and use npx shadcn@latest for additions.development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.
development
Run, watch, debug, and extend OpenClaw QA testing with qa-lab and qa-channel. Use when Codex needs to execute the repo-backed QA suite, inspect live QA artifacts, debug failing scenarios, add new QA scenarios, or explain the OpenClaw QA workflow. Prefer the live OpenAI lane with regular openai/gpt-5.4 in fast mode; do not use gpt-5.4-pro or gpt-5.4-mini unless the user explicitly overrides that policy.
development
End-to-end Parallels smoke, upgrade, and rerun workflow for OpenClaw across macOS, Windows, and Linux guests. Use when Codex needs to run, rerun, debug, or interpret VM-based install, onboarding, gateway smoke tests, latest-release-to-main upgrade checks, fresh snapshot retests, or optional Discord roundtrip verification under Parallels.