Files
tsl-devkit/skills/thirdparty/ui-ux-pro-max/data/stacks/shadcn.csv
T
csh 3d83740f88 Squashed 'docs/standards/playbook/' changes from c3f8137..25d895d
25d895d 🐛 fix(gitea_workflow): clean up temp repos after job steps
2bc3b11 🐛 fix(gitea_workflow): clean up temporary repo dirs in workflows
98c3f30 📝 docs(agent_rules): allow plan execution on current branch
16c7230 📝 docs(prompts): define custom verify layering
8efc4dd 🐛 fix(skills): quote commit-message description
bc8498f 🐛 fix(ci): install tomli for gitea tests
55cda3b 🐛 fix(tests): report missing toml parser clearly
c0729c7 🐛 fix(playbook): import Optional for cli compatibility
63e24bf 📦 deps(skills): sync thirdparty skills
d2f9356 🐛 fix(ci): isolate gitea workflow repos
588b81d 🐛 fix(ci): inline gitea workflow bootstrap
e0b1c3a ♻️ refactor(skills): standardize first-party skill contracts
2c5050d ♻️ refactor(skills): rename repo skills source dir
f049dfb 📦 deps(skills): drop duplicate first-party superpowers skills
234b335  feat(workflow): add superpowers planning and execution state tracking
c1702a6 📝 docs(markdown): format tracked markdown and drop stale templates
2325409 📝 docs(markdown): clarify optional markdownlint usage
214c44e 🔧 chore(markdown): add markdownlint baseline and lint fixes
a22b324 📝 docs(templates): add execution and memory-bank prompt templates
223a797 📝 docs(templates): update README for Claude Code and current features
4ac8672 📝 docs: simplify README + platform-agnostic tools + auto-create local rules
2431c9d 📝 docs: add claude_md config and use cross-platform paths
d64b248 📝 docs: fix README.md inaccuracies and add Claude Code info
c8d6bf2 🐛 fix(playbook): use relative paths in CLAUDE.md when not at project root
6518f0f  feat(playbook): auto-create CLAUDE.md with path discovery
6ec9a45  feat(skills): add skill_link symlink support + platform-agnostic prompt
9f8b6b5 📝 docs: update README and config example for Claude Code support
79cff6c 📝 docs(skills): add Claude Code platform support
452c6f5  feat(playbook): auto-inject AGENTS.md into CLAUDE.md
e1dbf3c 🐛 fix(skills): remove dual-path from commit-message skill
f3a7259 🔧 chore(ci): use prepare_repo.sh in both workflows
da08212 🔧 chore(ci): extract prepare_repo.sh and clean up workflows
7ade85e 🗑️ remove(tsl): drop syntax_book/, data/ source and build script
f94dba0 ♻️ refactor(skills): update playbook.py and tests for thirdparty/ layout
b3df412 ♻️ refactor(skills): separate thirdparty skills into thirdparty/ subdirectory
64950e7 📦 deps(skills): sync thirdparty skills
a2e3cb0  feat(playbook): add no_backup deploy controls
8609d59 🐛 fix(docs): repair reference catalog source links
956da11 🐛 fix(playbook): publish hidden ci test fixes
3f67754 📦 deps(skills): sync thirdparty skills
08ca87b 📦 deps(skills): add karpathy thirdparty sync
96b705b 📝 docs(tsl): rebuild canonical syntax and routing manual
3ed5052 📦 deps(skills): sync thirdparty skills
60108dd 📦 deps(skills): sync thirdparty skills
da85d4e 🐛 fix(thirdparty): prune nested project snapshots
a2a697e 📦 deps(skills): sync thirdparty skills
9df610a 🐛 fix(thirdparty): exclude duplicated superpowers skills
33dd5bb 🐛 fix(thirdparty): preserve optional manifest fields
91b0ea7 🐛 fix(thirdparty): preserve manifest during snapshot update
2e26f98 🔧 chore(thirdparty): generalize skills sync pipeline
5b9c1e3 📦 deps(skills): sync superpowers
2f2d34a 📝 docs(readme): normalize subtree command spacing
62db7db 🐛 fix(ci): serialize superpowers update and sync
3463223 🐛 fix(ci): use literal superpowers sync paths
48f6de8 📦 deps(skills): sync superpowers
4b23529 🔧 chore(ci): merge superpowers update and sync workflow
a56d75b 📦 deps(skills): sync superpowers
84bcefa 🔧 chore(ci): use ci[bot] commit author name
00a07e5 📦 deps(skills): sync superpowers
7b84daf 🐛 fix(templates): enforce main loop progress tracking
51373d7 🔧 chore(ci): automate superpowers sync workflow
eaaa39c 🐛 fix(ci): prevent stale superpowers sync from restoring skills block
79755c6 📦 deps(skills): sync superpowers
836d878 📦 deps(skills): sync superpowers
8216c9f 📦 deps(skills): sync superpowers
9439505 🐛 fix(playbook): address reported repo issues

git-subtree-dir: docs/standards/playbook
git-subtree-split: 25d895d8b3f56624ccfe99ad7289e9eb49e0f316
2026-05-24 13:04:14 +08:00

16 KiB

1NoCategoryGuidelineDescriptionDoDon'tCode GoodCode BadSeverityDocs URL
21SetupUse CLI for installationInstall components via shadcn CLI for proper setupnpx shadcn@latest add component-nameManual copy-paste from docsnpx shadcn@latest add buttonCopy component code manuallyHighhttps://ui.shadcn.com/docs/cli
32SetupInitialize project properlyRun init command to set up components.json and globals.cssnpx shadcn@latest init before adding componentsSkip init and add components directlynpx shadcn@latest initnpx shadcn@latest add button (without init)Highhttps://ui.shadcn.com/docs/installation
44ThemingUse CSS variables for colorsDefine colors as CSS variables in globals.css for themingCSS variables in :root and .darkHardcoded color values in componentsbg-primary text-primary-foregroundbg-blue-500 text-whiteHighhttps://ui.shadcn.com/docs/theming
55ThemingFollow naming conventionUse semantic color names with foreground patternprimary/primary-foreground secondary/secondary-foregroundGeneric color names--primary --primary-foreground--blue --light-blueMediumhttps://ui.shadcn.com/docs/theming
66ThemingSupport dark modeInclude .dark class styles for all custom CSSDefine both :root and .dark color schemesOnly light mode colors.dark { --background: 240 10% 3.9%; }No .dark class stylesHighhttps://ui.shadcn.com/docs/dark-mode
711DialogUse Dialog for modal contentDialog component for overlay modal windowsDialog for confirmations forms detailsAlert for modal content<Dialog><DialogContent><Alert> styled as modalHighhttps://ui.shadcn.com/docs/components/dialog
812DialogHandle dialog state properlyUse open and onOpenChange for controlled dialogsControlled state with useStateUncontrolled with default open only<Dialog open={open} onOpenChange={setOpen}><Dialog defaultOpen={true}>Mediumhttps://ui.shadcn.com/docs/components/dialog
913DialogInclude proper dialog structureUse DialogHeader DialogTitle DialogDescriptionComplete semantic structureMissing title or description<DialogHeader><DialogTitle><DialogDescription><DialogContent><p>Content</p></DialogContent>Highhttps://ui.shadcn.com/docs/components/dialog
1016FormUse Form with react-hook-formIntegrate Form component with react-hook-form for validationuseForm + Form + FormField patternCustom form handling without Form<Form {...form}><FormField control={form.control}><form onSubmit={handleSubmit}>Highhttps://ui.shadcn.com/docs/components/form
1117FormUse FormField for inputsWrap inputs in FormField for proper labeling and errorsFormField + FormItem + FormLabel + FormControlInput without FormField wrapper<FormField><FormItem><FormLabel><FormControl><Input><Input onChange={...}>Highhttps://ui.shadcn.com/docs/components/form
1218FormDisplay form messagesUse FormMessage for validation error displayFormMessage after FormControlCustom error text without FormMessage<FormControl><Input/></FormControl><FormMessage/><Input/>{error && <span>{error}</span>}Mediumhttps://ui.shadcn.com/docs/components/form
1319FormUse Zod for validationDefine form schema with Zod for type-safe validationzodResolver with form schemaManual validation logiczodResolver(formSchema)validate: (values) => { if (!values.email) }Mediumhttps://ui.shadcn.com/docs/components/form
1420SelectUse Select for dropdownsSelect component for option selectionSelect for choosing from listNative select element<Select><SelectTrigger><SelectContent><select><option>Mediumhttps://ui.shadcn.com/docs/components/select
1521SelectStructure Select properlyInclude Trigger Value Content and ItemsComplete Select structureMissing SelectValue or SelectContent<SelectTrigger><SelectValue/></SelectTrigger><SelectContent><SelectItem><Select><option>Highhttps://ui.shadcn.com/docs/components/select
1625TableInclude proper table structureUse TableHeader TableBody TableRow TableCellSemantic table structureMissing thead or tbody<TableHeader><TableRow><TableHead><Table><TableRow> without headerHighhttps://ui.shadcn.com/docs/components/table
1726DataTableUse DataTable for complex tablesCombine Table with TanStack Table for featuresDataTable pattern for sorting filtering paginationCustom table implementationuseReactTable + Table componentsCustom sort filter pagination logicMediumhttps://ui.shadcn.com/docs/components/data-table
1827TabsUse Tabs for content switchingTabs component for tabbed interfacesTabs for related content sectionsCustom tab implementation<Tabs><TabsList><TabsTrigger><TabsContent><div onClick={() => setTab(...)}Mediumhttps://ui.shadcn.com/docs/components/tabs
1929AccordionUse Accordion for collapsibleAccordion for expandable content sectionsAccordion for FAQ settings panelsCustom collapse implementation<Accordion><AccordionItem><AccordionTrigger><div onClick={() => setOpen(!open)}>Mediumhttps://ui.shadcn.com/docs/components/accordion
2032ToastAdd Toaster to layoutInclude Toaster component in root layout<Toaster /> in app layoutToaster in individual pagesapp/layout.tsx: <Toaster />page.tsx: <Toaster />Highhttps://ui.shadcn.com/docs/components/sonner
2136DropdownMenuUse DropdownMenu for actionsDropdownMenu for action lists and context menusDropdownMenu for user menu actionsPopover for action lists<DropdownMenu><DropdownMenuTrigger><DropdownMenuContent><Popover> for menu actionsMediumhttps://ui.shadcn.com/docs/components/dropdown-menu
2237DropdownMenuGroup menu itemsUse DropdownMenuGroup and DropdownMenuSeparatorOrganized menu with separatorsFlat list of items<DropdownMenuGroup><DropdownMenuItem><DropdownMenuSeparator><DropdownMenuItem> without organizationLowhttps://ui.shadcn.com/docs/components/dropdown-menu
2339TooltipAdd TooltipProviderWrap app or section in TooltipProviderTooltipProvider at app levelTooltipProvider per tooltip<TooltipProvider><App/></TooltipProvider><Tooltip><TooltipProvider>Highhttps://ui.shadcn.com/docs/components/tooltip
2442AlertDialogUse AlertDialog for confirmsAlertDialog for destructive action confirmationAlertDialog for delete confirmationsDialog for confirmations<AlertDialog><AlertDialogTrigger><AlertDialogContent><Dialog> for delete confirmationHighhttps://ui.shadcn.com/docs/components/alert-dialog
2543AlertDialogInclude action buttonsUse AlertDialogAction and AlertDialogCancelStandard confirm/cancel patternCustom buttons in AlertDialog<AlertDialogCancel>Cancel</AlertDialogCancel><AlertDialogAction><Button>Cancel</Button><Button>Confirm</Button>Mediumhttps://ui.shadcn.com/docs/components/alert-dialog
2645SidebarWrap in SidebarProviderUse SidebarProvider for sidebar state managementSidebarProvider at layout levelSidebar without provider<SidebarProvider><Sidebar></SidebarProvider><Sidebar> without providerHighhttps://ui.shadcn.com/docs/components/sidebar
2746SidebarUse SidebarTriggerInclude SidebarTrigger for mobile toggleSidebarTrigger for responsive toggleCustom toggle button<SidebarTrigger/><Button onClick={() => toggleSidebar()}>Mediumhttps://ui.shadcn.com/docs/components/sidebar
2847ChartUse Chart for data vizChart component with Recharts integrationChart component for dashboardsDirect Recharts without wrapper<ChartContainer config={chartConfig}><ResponsiveContainer><BarChart>Mediumhttps://ui.shadcn.com/docs/components/chart
2949ChartUse ChartTooltipApply ChartTooltip for interactive chartsChartTooltip with ChartTooltipContentRecharts Tooltip directly<ChartTooltip content={<ChartTooltipContent/>}/><Tooltip/> from rechartsLowhttps://ui.shadcn.com/docs/components/chart
3050BlocksUse blocks for scaffoldingStart from shadcn blocks for common layoutsnpx shadcn@latest add dashboard-01Build dashboard from scratchnpx shadcn@latest add login-01Custom login page from scratchMediumhttps://ui.shadcn.com/blocks
3151BlocksCustomize block componentsModify copied block code to fit needsEdit block files after installationUse blocks without modificationCustomize dashboard-01 layoutUse dashboard-01 as-isLowhttps://ui.shadcn.com/blocks
3253A11yMaintain focus managementDialog Sheet handle focus automaticallyLet components manage focusCustom focus handling<Dialog> traps focusdocument.querySelector().focus()Highhttps://ui.shadcn.com/docs/components/dialog
3356PerformanceLazy load dialogsDynamic import for heavy dialog contentReact.lazy for dialog contentImport all dialogs upfrontconst HeavyContent = lazy(() => import('./Heavy'))import HeavyContent from './Heavy'Medium