tribunal-kit 3.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/.agent/ARCHITECTURE.md +99 -99
  2. package/.agent/GEMINI.md +52 -52
  3. package/.agent/agents/accessibility-reviewer.md +187 -220
  4. package/.agent/agents/ai-code-reviewer.md +199 -233
  5. package/.agent/agents/backend-specialist.md +215 -238
  6. package/.agent/agents/code-archaeologist.md +161 -181
  7. package/.agent/agents/database-architect.md +184 -207
  8. package/.agent/agents/debugger.md +191 -218
  9. package/.agent/agents/dependency-reviewer.md +103 -136
  10. package/.agent/agents/devops-engineer.md +218 -238
  11. package/.agent/agents/documentation-writer.md +201 -221
  12. package/.agent/agents/explorer-agent.md +160 -180
  13. package/.agent/agents/frontend-reviewer.md +160 -194
  14. package/.agent/agents/frontend-specialist.md +248 -237
  15. package/.agent/agents/game-developer.md +48 -52
  16. package/.agent/agents/logic-reviewer.md +116 -149
  17. package/.agent/agents/mobile-developer.md +200 -223
  18. package/.agent/agents/mobile-reviewer.md +162 -195
  19. package/.agent/agents/orchestrator.md +181 -211
  20. package/.agent/agents/penetration-tester.md +157 -174
  21. package/.agent/agents/performance-optimizer.md +183 -203
  22. package/.agent/agents/performance-reviewer.md +178 -211
  23. package/.agent/agents/product-manager.md +142 -162
  24. package/.agent/agents/product-owner.md +6 -25
  25. package/.agent/agents/project-planner.md +142 -162
  26. package/.agent/agents/qa-automation-engineer.md +225 -242
  27. package/.agent/agents/security-auditor.md +174 -194
  28. package/.agent/agents/seo-specialist.md +193 -213
  29. package/.agent/agents/sql-reviewer.md +161 -194
  30. package/.agent/agents/supervisor-agent.md +184 -203
  31. package/.agent/agents/swarm-worker-contracts.md +17 -17
  32. package/.agent/agents/swarm-worker-registry.md +46 -46
  33. package/.agent/agents/test-coverage-reviewer.md +160 -193
  34. package/.agent/agents/test-engineer.md +0 -21
  35. package/.agent/agents/type-safety-reviewer.md +175 -208
  36. package/.agent/patterns/generator.md +9 -9
  37. package/.agent/patterns/inversion.md +12 -12
  38. package/.agent/patterns/pipeline.md +9 -9
  39. package/.agent/patterns/reviewer.md +13 -13
  40. package/.agent/patterns/tool-wrapper.md +9 -9
  41. package/.agent/rules/GEMINI.md +63 -63
  42. package/.agent/scripts/compress_skills.py +167 -0
  43. package/.agent/scripts/consolidate_skills.py +173 -0
  44. package/.agent/scripts/deep_compress.py +202 -0
  45. package/.agent/scripts/minify_context.py +80 -0
  46. package/.agent/scripts/security_scan.py +1 -1
  47. package/.agent/scripts/strip_tribunal.py +41 -0
  48. package/.agent/skills/agent-organizer/SKILL.md +92 -126
  49. package/.agent/skills/agentic-patterns/SKILL.md +0 -70
  50. package/.agent/skills/ai-prompt-injection-defense/SKILL.md +126 -160
  51. package/.agent/skills/api-patterns/SKILL.md +123 -215
  52. package/.agent/skills/api-security-auditor/SKILL.md +143 -177
  53. package/.agent/skills/app-builder/SKILL.md +326 -50
  54. package/.agent/skills/app-builder/templates/SKILL.md +13 -15
  55. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +16 -16
  56. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +22 -22
  57. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +18 -18
  58. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +20 -20
  59. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +17 -17
  60. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +18 -18
  61. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +21 -21
  62. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +19 -19
  63. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +26 -26
  64. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +26 -26
  65. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +19 -19
  66. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +18 -18
  67. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +20 -20
  68. package/.agent/skills/appflow-wireframe/SKILL.md +87 -121
  69. package/.agent/skills/architecture/SKILL.md +82 -252
  70. package/.agent/skills/authentication-best-practices/SKILL.md +139 -173
  71. package/.agent/skills/bash-linux/SKILL.md +120 -154
  72. package/.agent/skills/behavioral-modes/SKILL.md +8 -69
  73. package/.agent/skills/brainstorming/SKILL.md +428 -104
  74. package/.agent/skills/building-native-ui/SKILL.md +143 -174
  75. package/.agent/skills/clean-code/SKILL.md +323 -360
  76. package/.agent/skills/code-review-checklist/SKILL.md +0 -62
  77. package/.agent/skills/config-validator/SKILL.md +107 -141
  78. package/.agent/skills/csharp-developer/SKILL.md +468 -528
  79. package/.agent/skills/database-design/SKILL.md +104 -369
  80. package/.agent/skills/deployment-procedures/SKILL.md +111 -145
  81. package/.agent/skills/devops-engineer/SKILL.md +295 -332
  82. package/.agent/skills/devops-incident-responder/SKILL.md +79 -113
  83. package/.agent/skills/doc.md +5 -5
  84. package/.agent/skills/documentation-templates/SKILL.md +19 -63
  85. package/.agent/skills/edge-computing/SKILL.md +123 -157
  86. package/.agent/skills/extract-design-system/SKILL.md +100 -134
  87. package/.agent/skills/framer-motion-expert/SKILL.md +111 -855
  88. package/.agent/skills/frontend-design/SKILL.md +151 -499
  89. package/.agent/skills/game-design-expert/SKILL.md +71 -105
  90. package/.agent/skills/game-engineering-expert/SKILL.md +88 -122
  91. package/.agent/skills/geo-fundamentals/SKILL.md +89 -124
  92. package/.agent/skills/github-operations/SKILL.md +279 -314
  93. package/.agent/skills/gsap-expert/SKILL.md +119 -826
  94. package/.agent/skills/i18n-localization/SKILL.md +104 -138
  95. package/.agent/skills/intelligent-routing/SKILL.md +159 -127
  96. package/.agent/skills/lint-and-validate/SKILL.md +8 -52
  97. package/.agent/skills/llm-engineering/SKILL.md +344 -357
  98. package/.agent/skills/local-first/SKILL.md +120 -154
  99. package/.agent/skills/mcp-builder/SKILL.md +84 -118
  100. package/.agent/skills/mobile-design/SKILL.md +213 -219
  101. package/.agent/skills/motion-engineering/SKILL.md +184 -0
  102. package/.agent/skills/nextjs-react-expert/SKILL.md +99 -698
  103. package/.agent/skills/nodejs-best-practices/SKILL.md +498 -559
  104. package/.agent/skills/observability/SKILL.md +293 -330
  105. package/.agent/skills/parallel-agents/SKILL.md +88 -122
  106. package/.agent/skills/performance-profiling/SKILL.md +217 -254
  107. package/.agent/skills/plan-writing/SKILL.md +84 -118
  108. package/.agent/skills/platform-engineer/SKILL.md +89 -123
  109. package/.agent/skills/playwright-best-practices/SKILL.md +128 -162
  110. package/.agent/skills/powershell-windows/SKILL.md +112 -146
  111. package/.agent/skills/python-patterns/SKILL.md +7 -35
  112. package/.agent/skills/python-pro/SKILL.md +148 -754
  113. package/.agent/skills/react-specialist/SKILL.md +123 -827
  114. package/.agent/skills/readme-builder/SKILL.md +15 -85
  115. package/.agent/skills/realtime-patterns/SKILL.md +269 -304
  116. package/.agent/skills/red-team-tactics/SKILL.md +10 -51
  117. package/.agent/skills/rust-pro/SKILL.md +623 -701
  118. package/.agent/skills/seo-fundamentals/SKILL.md +120 -154
  119. package/.agent/skills/server-management/SKILL.md +156 -190
  120. package/.agent/skills/shadcn-ui-expert/SKILL.md +172 -206
  121. package/.agent/skills/skill-creator/SKILL.md +18 -58
  122. package/.agent/skills/sql-pro/SKILL.md +579 -633
  123. package/.agent/skills/supabase-postgres-best-practices/SKILL.md +28 -68
  124. package/.agent/skills/swiftui-expert/SKILL.md +142 -176
  125. package/.agent/skills/systematic-debugging/SKILL.md +84 -118
  126. package/.agent/skills/tailwind-patterns/SKILL.md +516 -576
  127. package/.agent/skills/tdd-workflow/SKILL.md +103 -137
  128. package/.agent/skills/test-result-analyzer/SKILL.md +33 -73
  129. package/.agent/skills/testing-patterns/SKILL.md +512 -573
  130. package/.agent/skills/trend-researcher/SKILL.md +30 -71
  131. package/.agent/skills/ui-ux-pro-max/SKILL.md +0 -41
  132. package/.agent/skills/ui-ux-researcher/SKILL.md +51 -91
  133. package/.agent/skills/vue-expert/SKILL.md +127 -866
  134. package/.agent/skills/vulnerability-scanner/SKILL.md +354 -269
  135. package/.agent/skills/web-accessibility-auditor/SKILL.md +159 -193
  136. package/.agent/skills/web-design-guidelines/SKILL.md +17 -61
  137. package/.agent/skills/webapp-testing/SKILL.md +111 -145
  138. package/.agent/skills/whimsy-injector/SKILL.md +58 -132
  139. package/.agent/skills/workflow-optimizer/SKILL.md +28 -68
  140. package/.agent/workflows/api-tester.md +151 -151
  141. package/.agent/workflows/audit.md +127 -138
  142. package/.agent/workflows/brainstorm.md +110 -110
  143. package/.agent/workflows/changelog.md +112 -112
  144. package/.agent/workflows/create.md +124 -124
  145. package/.agent/workflows/debug.md +165 -189
  146. package/.agent/workflows/deploy.md +180 -189
  147. package/.agent/workflows/enhance.md +128 -151
  148. package/.agent/workflows/fix.md +114 -135
  149. package/.agent/workflows/generate.md +12 -4
  150. package/.agent/workflows/migrate.md +160 -160
  151. package/.agent/workflows/orchestrate.md +168 -168
  152. package/.agent/workflows/performance-benchmarker.md +114 -123
  153. package/.agent/workflows/plan.md +173 -173
  154. package/.agent/workflows/preview.md +80 -80
  155. package/.agent/workflows/refactor.md +161 -183
  156. package/.agent/workflows/review-ai.md +101 -129
  157. package/.agent/workflows/review.md +116 -116
  158. package/.agent/workflows/session.md +94 -94
  159. package/.agent/workflows/status.md +79 -79
  160. package/.agent/workflows/strengthen-skills.md +138 -139
  161. package/.agent/workflows/swarm.md +179 -179
  162. package/.agent/workflows/test.md +189 -211
  163. package/.agent/workflows/tribunal-backend.md +93 -113
  164. package/.agent/workflows/tribunal-database.md +94 -115
  165. package/.agent/workflows/tribunal-frontend.md +95 -118
  166. package/.agent/workflows/tribunal-full.md +92 -133
  167. package/.agent/workflows/tribunal-mobile.md +94 -119
  168. package/.agent/workflows/tribunal-performance.md +109 -133
  169. package/.agent/workflows/ui-ux-pro-max.md +122 -143
  170. package/package.json +1 -1
  171. package/.agent/skills/api-patterns/api-style.md +0 -42
  172. package/.agent/skills/api-patterns/auth.md +0 -24
  173. package/.agent/skills/api-patterns/documentation.md +0 -26
  174. package/.agent/skills/api-patterns/graphql.md +0 -41
  175. package/.agent/skills/api-patterns/rate-limiting.md +0 -31
  176. package/.agent/skills/api-patterns/response.md +0 -37
  177. package/.agent/skills/api-patterns/rest.md +0 -40
  178. package/.agent/skills/api-patterns/security-testing.md +0 -122
  179. package/.agent/skills/api-patterns/trpc.md +0 -41
  180. package/.agent/skills/api-patterns/versioning.md +0 -22
  181. package/.agent/skills/app-builder/agent-coordination.md +0 -71
  182. package/.agent/skills/app-builder/feature-building.md +0 -53
  183. package/.agent/skills/app-builder/project-detection.md +0 -34
  184. package/.agent/skills/app-builder/scaffolding.md +0 -118
  185. package/.agent/skills/app-builder/tech-stack.md +0 -40
  186. package/.agent/skills/architecture/context-discovery.md +0 -43
  187. package/.agent/skills/architecture/examples.md +0 -94
  188. package/.agent/skills/architecture/pattern-selection.md +0 -68
  189. package/.agent/skills/architecture/patterns-reference.md +0 -50
  190. package/.agent/skills/architecture/trade-off-analysis.md +0 -77
  191. package/.agent/skills/brainstorming/dynamic-questioning.md +0 -360
  192. package/.agent/skills/database-design/database-selection.md +0 -43
  193. package/.agent/skills/database-design/indexing.md +0 -39
  194. package/.agent/skills/database-design/migrations.md +0 -48
  195. package/.agent/skills/database-design/optimization.md +0 -36
  196. package/.agent/skills/database-design/orm-selection.md +0 -30
  197. package/.agent/skills/database-design/schema-design.md +0 -56
  198. package/.agent/skills/frontend-design/animation-guide.md +0 -331
  199. package/.agent/skills/frontend-design/color-system.md +0 -329
  200. package/.agent/skills/frontend-design/decision-trees.md +0 -418
  201. package/.agent/skills/frontend-design/motion-graphics.md +0 -306
  202. package/.agent/skills/frontend-design/typography-system.md +0 -363
  203. package/.agent/skills/frontend-design/ux-psychology.md +0 -1116
  204. package/.agent/skills/frontend-design/visual-effects.md +0 -383
  205. package/.agent/skills/intelligent-routing/router-manifest.md +0 -65
  206. package/.agent/skills/mobile-design/decision-trees.md +0 -516
  207. package/.agent/skills/mobile-design/mobile-backend.md +0 -491
  208. package/.agent/skills/mobile-design/mobile-color-system.md +0 -420
  209. package/.agent/skills/mobile-design/mobile-debugging.md +0 -122
  210. package/.agent/skills/mobile-design/mobile-design-thinking.md +0 -357
  211. package/.agent/skills/mobile-design/mobile-navigation.md +0 -458
  212. package/.agent/skills/mobile-design/mobile-performance.md +0 -767
  213. package/.agent/skills/mobile-design/mobile-testing.md +0 -356
  214. package/.agent/skills/mobile-design/mobile-typography.md +0 -433
  215. package/.agent/skills/mobile-design/platform-android.md +0 -666
  216. package/.agent/skills/mobile-design/platform-ios.md +0 -561
  217. package/.agent/skills/mobile-design/touch-psychology.md +0 -537
  218. package/.agent/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +0 -312
  219. package/.agent/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +0 -240
  220. package/.agent/skills/nextjs-react-expert/3-server-server-side-performance.md +0 -490
  221. package/.agent/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +0 -264
  222. package/.agent/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +0 -581
  223. package/.agent/skills/nextjs-react-expert/6-rendering-rendering-performance.md +0 -432
  224. package/.agent/skills/nextjs-react-expert/7-js-javascript-performance.md +0 -684
  225. package/.agent/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +0 -150
  226. package/.agent/skills/vulnerability-scanner/checklists.md +0 -121
@@ -1,206 +1,172 @@
1
- ---
2
- name: shadcn-ui-expert
3
- description: shadcn/ui mastery. Installation, customization via tailwind.config, component extraction, state management with Radix Primitives, theme variables (CSS custom properties), dark mode implementations, and overriding default designs. Use when building or modifying shadcn/ui components in React/Next.js projects.
4
- allowed-tools: Read, Write, Edit, Glob, Grep
5
- version: 2.0.0
6
- last-updated: 2026-04-02
7
- applies-to-model: gemini-2.5-pro, claude-3-7-sonnet
8
- ---
9
-
10
- # shadcn/ui Expert — Component Architecture Mastery
11
-
12
- > shadcn/ui is NOT a component library. It is a collection of re-usable components that you copy and paste into your apps.
13
- > You own the code. You own the styling. You own the accessibility.
14
-
15
- ---
16
-
17
- ## 1. Core Architecture
18
-
19
- shadcn/ui leverages two layers:
20
- 1. **Radix UI Primitives**: Headless, fully accessible functionality (Focus management, ARIA, Keyboard nav).
21
- 2. **Tailwind CSS**: The styling layer mapped over the headless components.
22
-
23
- ```typescript
24
- // BAD: Re-inventing the wheel for accessibility
25
- const Select = ({ options }) => {
26
- const [open, setOpen] = useState(false)
27
- return <div onClick={() => setOpen(!open)}>...</div> // Breaks keyboard/screen readers
28
- }
29
-
30
- // GOOD: Using shadcn (Radix under the hood)
31
- import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"
32
-
33
- export function MySelect() {
34
- return (
35
- <Select>
36
- <SelectTrigger className="w-[180px]">
37
- <SelectValue placeholder="Theme" />
38
- </SelectTrigger>
39
- <SelectContent>
40
- <SelectItem value="light">Light</SelectItem>
41
- <SelectItem value="dark">Dark</SelectItem>
42
- </SelectContent>
43
- </Select>
44
- )
45
- }
46
- ```
47
-
48
- ---
49
-
50
- ## 2. Component Modification (You Own The Code)
51
-
52
- Do not treat `components/ui/*` as an immutable black box. You are *supposed* to modify them.
53
-
54
- ### Adding Variants via `cva` (Class Variance Authority)
55
-
56
- ```typescript
57
- import { cva, type VariantProps } from "class-variance-authority"
58
-
59
- // Adding a new "ghost-rounded" variant to the Button component
60
- const buttonVariants = cva(
61
- "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors...",
62
- {
63
- variants: {
64
- variant: {
65
- default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
66
- destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
67
- outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
68
- // YOUR CUSTOM VARIANT:
69
- "ghost-rounded": "bg-transparent hover:bg-accent hover:text-accent-foreground rounded-full px-6",
70
- },
71
- size: {
72
- default: "h-9 px-4 py-2",
73
- sm: "h-8 rounded-md px-3 text-xs",
74
- lg: "h-10 rounded-md px-8",
75
- icon: "h-9 w-9",
76
- },
77
- },
78
- defaultVariants: {
79
- variant: "default",
80
- size: "default",
81
- },
82
- }
83
- )
84
- ```
85
-
86
- ---
87
-
88
- ## 3. Theming & Dark Mode (CSS Variables)
89
-
90
- shadcn/ui manages themes explicitly through CSS custom properties (variables), not Tailwind config hardcoding.
91
-
92
- ```css
93
- /* app/globals.css */
94
- @layer base {
95
- :root {
96
- --background: 0 0% 100%;
97
- --foreground: 222.2 84% 4.9%;
98
- --card: 0 0% 100%;
99
- --card-foreground: 222.2 84% 4.9%;
100
- --primary: 221.2 83.2% 53.3%;
101
- --primary-foreground: 210 40% 98%;
102
- /* ... */
103
- --radius: 0.5rem;
104
- }
105
-
106
- .dark {
107
- --background: 222.2 84% 4.9%;
108
- --foreground: 210 40% 98%;
109
- --card: 222.2 84% 4.9%;
110
- --primary: 217.2 91.2% 59.8%;
111
- /* ... */
112
- }
113
- }
114
- ```
115
-
116
- Implementation with Tailwind v4 CSS-first configuration:
117
- ```css
118
- /* Note how standard colors map directly to the CSS vars */
119
- @theme {
120
- --color-background: hsl(var(--background));
121
- --color-foreground: hsl(var(--foreground));
122
- --color-primary: hsl(var(--primary));
123
- --color-primary-foreground: hsl(var(--primary-foreground));
124
- --radius-lg: var(--radius);
125
- --radius-md: calc(var(--radius) - 2px);
126
- --radius-sm: calc(var(--radius) - 4px);
127
- }
128
- ```
129
-
130
- ---
131
-
132
- ## 4. Using the `cn` Utility
133
-
134
- The `cn` utility combines `clsx` (conditional classes) and `tailwind-merge` (fixing class conflicts).
135
-
136
- ```typescript
137
- import { clsx, type ClassValue } from "clsx"
138
- import { twMerge } from "tailwind-merge"
139
-
140
- export function cn(...inputs: ClassValue[]) {
141
- return twMerge(clsx(inputs))
142
- }
143
-
144
- // ❌ BAD: String concatenation breeds conflicts
145
- // hover:bg-blue-500 will fail if className contains hover:bg-red-500 earlier
146
- const className = `px-4 py-2 bg-blue-500 hover:bg-blue-600 ${props.className}`
147
-
148
- // ✅ GOOD: cn resolves conflicts correctly
149
- const className = cn("px-4 py-2 bg-blue-500 hover:bg-blue-600", props.className)
150
- ```
151
-
152
- ---
153
-
154
- ## 5. Next.js App Router Integration
155
-
156
- ### Modals / Dialogs inside Server Components
157
- Radix primitives (Dialog, Select, etc.) utilize React context and side effects. They must be Client Components.
158
-
159
- ```typescript
160
- // BAD: Server Component trying to use a shadcn Dialog directly with state
161
- export default function Page() {
162
- const [open, setOpen] = useState(false); // ERROR
163
- return <Dialog open={open}>...</Dialog>
164
- }
165
-
166
- // GOOD: Extract the interactive part to a Client Component
167
- import { MyDialogComponent } from "./MyDialogComponent" // "use client" inside
168
-
169
- export default async function Page() {
170
- const data = await fetchDb(); // Server Component fetches data
171
- return <MyDialogComponent data={data} /> // Passes data to interactive client component
172
- }
173
- ```
174
-
175
- ---
176
-
177
- ## 🤖 LLM-Specific Traps (shadcn/ui)
178
-
179
- 1. **Treating it like an NPM Package:** AI asks to run `npm install shadcn-ui`. It's `npx shadcn@latest add [component]`. Components live in your tree (`components/ui`), not in `node_modules`.
180
- 2. **Missing the `cn` utility:** AI writes generic template literals for className overrides, guaranteeing Tailwind specificity conflicts. Always import and wrap overrides in `cn()`.
181
- 3. **Hardcoding Colors:** AI writes `bg-blue-500` inside standard components. shadcn demands semantic variables: `bg-primary`, `bg-accent`, `text-muted-foreground`.
182
- 4. **Server Component Conflicts:** AI inserts interactive shadcn components (Dialog, Tabs, Accordion) directly into Next.js Server Components without creating a `"use client"` wrapper boundary.
183
- 5. **Radix Primitive Ignorance:** AI attempts to pass `onClick` or `onChange` to headless wrapper elements like `<Select>` instead of `<SelectValue>` or tracking state properly via the `onValueChange` prop of the root component.
184
- 6. **Forgetting `asChild`:** When wrapping existing buttons or links in shadcn Triggers, AI forgets the `asChild` prop, resulting in invalid HTML (e.g., `<button><button>click</button></button>`).
185
- 7. **Modifying `node_modules/@radix-ui`:** AI tries to fix Radix a11y bugs by editing node_modules. Modify your local wrappers in `components/ui`, never Radix internals.
186
- 8. **Broken Form Integration:** AI tries to manually string together standard React state with shadcn inputs. You MUST use `<Form>`, `<FormField>`, `<FormItem>`, and `react-hook-form` logic for proper shadcn forms.
187
- 9. **Tailwind Class Order:** AI doesn't understand that `tailwind-merge` resolves conflicts from left to right. Overriding classes must be passed at the *end* of the `cn()` arguments.
188
- 10. **Theme Variable Format:** AI writes `--primary: #3b82f6`. shadcn/ui CSS custom properties are strictly HSL scalar values WITHOUT the `hsl()` wrapper inside the root definition: `--primary: 221.2 83.2% 53.3%;`.
189
-
190
- ---
191
-
192
- ## 🏛️ Tribunal Integration
193
-
194
- ### ✅ Pre-Flight Self-Audit
195
- ```
196
- ✅ Are interactive shadcn components safely inside "use client" boundaries?
197
- ✅ Are classes merged dynamically using the `cn()` utility?
198
- ✅ Are colors utilizing standard semantic vars (`bg-primary`) rather than hardcoded colors?
199
- ✅ Did I remember the `asChild` prop when wrapping links/buttons in Triggers?
200
- ✅ Are forms correctly using `react-hook-form` via the `<Form>` and `<FormField>` components?
201
- ✅ Are CSS theme root variables using raw HSL scalar values?
202
- ✅ Am I modifying the local `components/ui/*` files if new variants are needed?
203
- ✅ Have I respected Radix a11y primitives (not inventing my own onClick focus handling)?
204
- ✅ Are component variants properly declared using `cva`?
205
- ✅ Did I pass user-supplied `className` props at the END of the `cn()` function to allow overrides?
206
- ```
1
+ ---
2
+ name: shadcn-ui-expert
3
+ description: shadcn/ui mastery. Installation, customization via tailwind.config, component extraction, state management with Radix Primitives, theme variables (CSS custom properties), dark mode implementations, and overriding default designs. Use when building or modifying shadcn/ui components in React/Next.js projects.
4
+ allowed-tools: Read, Write, Edit, Glob, Grep
5
+ version: 2.0.0
6
+ last-updated: 2026-04-02
7
+ applies-to-model: gemini-2.5-pro, claude-3-7-sonnet
8
+ ---
9
+
10
+ # shadcn/ui Expert — Component Architecture Mastery
11
+
12
+ ---
13
+
14
+ ## 1. Core Architecture
15
+
16
+ shadcn/ui leverages two layers:
17
+ 1. **Radix UI Primitives**: Headless, fully accessible functionality (Focus management, ARIA, Keyboard nav).
18
+ 2. **Tailwind CSS**: The styling layer mapped over the headless components.
19
+
20
+ ```typescript
21
+ // BAD: Re-inventing the wheel for accessibility
22
+ const Select = ({ options }) => {
23
+ const [open, setOpen] = useState(false)
24
+ return <div onClick={() => setOpen(!open)}>...</div> // Breaks keyboard/screen readers
25
+ }
26
+
27
+ // GOOD: Using shadcn (Radix under the hood)
28
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"
29
+
30
+ export function MySelect() {
31
+ return (
32
+ <Select>
33
+ <SelectTrigger className="w-[180px]">
34
+ <SelectValue placeholder="Theme" />
35
+ </SelectTrigger>
36
+ <SelectContent>
37
+ <SelectItem value="light">Light</SelectItem>
38
+ <SelectItem value="dark">Dark</SelectItem>
39
+ </SelectContent>
40
+ </Select>
41
+ )
42
+ }
43
+ ```
44
+
45
+ ---
46
+
47
+ ## 2. Component Modification (You Own The Code)
48
+
49
+ Do not treat `components/ui/*` as an immutable black box. You are *supposed* to modify them.
50
+
51
+ ### Adding Variants via `cva` (Class Variance Authority)
52
+
53
+ ```typescript
54
+ import { cva, type VariantProps } from "class-variance-authority"
55
+
56
+ // Adding a new "ghost-rounded" variant to the Button component
57
+ const buttonVariants = cva(
58
+ "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors...",
59
+ {
60
+ variants: {
61
+ variant: {
62
+ default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
63
+ destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
64
+ outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
65
+ // YOUR CUSTOM VARIANT:
66
+ "ghost-rounded": "bg-transparent hover:bg-accent hover:text-accent-foreground rounded-full px-6",
67
+ },
68
+ size: {
69
+ default: "h-9 px-4 py-2",
70
+ sm: "h-8 rounded-md px-3 text-xs",
71
+ lg: "h-10 rounded-md px-8",
72
+ icon: "h-9 w-9",
73
+ },
74
+ },
75
+ defaultVariants: {
76
+ variant: "default",
77
+ size: "default",
78
+ },
79
+ }
80
+ )
81
+ ```
82
+
83
+ ---
84
+
85
+ ## 3. Theming & Dark Mode (CSS Variables)
86
+
87
+ shadcn/ui manages themes explicitly through CSS custom properties (variables), not Tailwind config hardcoding.
88
+
89
+ ```css
90
+ /* app/globals.css */
91
+ @layer base {
92
+ :root {
93
+ --background: 0 0% 100%;
94
+ --foreground: 222.2 84% 4.9%;
95
+ --card: 0 0% 100%;
96
+ --card-foreground: 222.2 84% 4.9%;
97
+ --primary: 221.2 83.2% 53.3%;
98
+ --primary-foreground: 210 40% 98%;
99
+ /* ... */
100
+ --radius: 0.5rem;
101
+ }
102
+
103
+ .dark {
104
+ --background: 222.2 84% 4.9%;
105
+ --foreground: 210 40% 98%;
106
+ --card: 222.2 84% 4.9%;
107
+ --primary: 217.2 91.2% 59.8%;
108
+ /* ... */
109
+ }
110
+ }
111
+ ```
112
+
113
+ Implementation with Tailwind v4 CSS-first configuration:
114
+ ```css
115
+ /* Note how standard colors map directly to the CSS vars */
116
+ @theme {
117
+ --color-background: hsl(var(--background));
118
+ --color-foreground: hsl(var(--foreground));
119
+ --color-primary: hsl(var(--primary));
120
+ --color-primary-foreground: hsl(var(--primary-foreground));
121
+ --radius-lg: var(--radius);
122
+ --radius-md: calc(var(--radius) - 2px);
123
+ --radius-sm: calc(var(--radius) - 4px);
124
+ }
125
+ ```
126
+
127
+ ---
128
+
129
+ ## 4. Using the `cn` Utility
130
+
131
+ The `cn` utility combines `clsx` (conditional classes) and `tailwind-merge` (fixing class conflicts).
132
+
133
+ ```typescript
134
+ import { clsx, type ClassValue } from "clsx"
135
+ import { twMerge } from "tailwind-merge"
136
+
137
+ export function cn(...inputs: ClassValue[]) {
138
+ return twMerge(clsx(inputs))
139
+ }
140
+
141
+ // ❌ BAD: String concatenation breeds conflicts
142
+ // hover:bg-blue-500 will fail if className contains hover:bg-red-500 earlier
143
+ const className = `px-4 py-2 bg-blue-500 hover:bg-blue-600 ${props.className}`
144
+
145
+ // ✅ GOOD: cn resolves conflicts correctly
146
+ const className = cn("px-4 py-2 bg-blue-500 hover:bg-blue-600", props.className)
147
+ ```
148
+
149
+ ---
150
+
151
+ ## 5. Next.js App Router Integration
152
+
153
+ ### Modals / Dialogs inside Server Components
154
+ Radix primitives (Dialog, Select, etc.) utilize React context and side effects. They must be Client Components.
155
+
156
+ ```typescript
157
+ // BAD: Server Component trying to use a shadcn Dialog directly with state
158
+ export default function Page() {
159
+ const [open, setOpen] = useState(false); // ERROR
160
+ return <Dialog open={open}>...</Dialog>
161
+ }
162
+
163
+ // GOOD: Extract the interactive part to a Client Component
164
+ import { MyDialogComponent } from "./MyDialogComponent" // "use client" inside
165
+
166
+ export default async function Page() {
167
+ const data = await fetchDb(); // Server Component fetches data
168
+ return <MyDialogComponent data={data} /> // Passes data to interactive client component
169
+ }
170
+ ```
171
+
172
+ ---
@@ -1,68 +1,28 @@
1
- ---
2
- name: skill-creator
3
- description: Meta-agent specialized in expanding the framework's procedural knowledge by creating new, highly-structured SKILL.md files.
4
- allowed-tools: Read, Write, Edit, Glob, Grep
5
- version: 1.0.0
6
- last-updated: 2026-03-30
7
- applies-to-model: claude-3-7-sonnet, gemini-2.5-pro
8
- ---
9
-
10
- # Skill Creator
11
-
12
- You are a Meta-Agent tasked with defining the capabilities of future AI agents by creating rigorous `SKILL.md` files.
13
-
14
- ## Designing a Skill
15
-
16
- When asked to generate a new skill, strictly follow this layout:
17
-
18
- 1. **Frontmatter**: Must include `name`, `description` (short, punchy), and `allowed-tools`.
19
- 2. **Title & Identity**: A clear markdown `# Title` and an introductory paragraph specifying the agent's persona.
20
- 3. **Core Directives**: 3-5 rigid bullet points explaining the specific techniques, rules, or anti-patterns for the domain.
21
- 4. **Execution Rules**: How the agent must behave (e.g., verifying inputs prior to writing code, mandatory formatting).
22
-
23
- ## Crucial Principle
24
- Make the skill files actionable. Abstract advice ("be efficient", "write good code") wastes context window. Define what "good" means by providing strict code constraints (e.g., "Max line length is 100", "Never use global state without an ADR").
25
-
26
- When you render the file, ensure it is written to `.agent/skills/<skill-name>/SKILL.md`.
27
-
28
-
29
1
  ---
30
-
31
- ## 🤖 LLM-Specific Traps
32
-
33
- AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
34
-
35
- 1. **Over-engineering:** Proposing complex abstractions or distributed systems when a simpler approach suffices.
36
- 2. **Hallucinated Libraries/Methods:** Using non-existent methods or packages. Always `// VERIFY` or check `package.json` / `requirements.txt`.
37
- 3. **Skipping Edge Cases:** Writing the "happy path" and ignoring error handling, timeouts, or data validation.
38
- 4. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
39
- 5. **Silent Degradation:** Catching and suppressing errors without logging or re-raising.
40
-
2
+ name: skill-creator
3
+ description: Meta-agent specialized in expanding the framework's procedural knowledge by creating new, highly-structured SKILL.md files.
4
+ allowed-tools: Read, Write, Edit, Glob, Grep
5
+ version: 1.0.0
6
+ last-updated: 2026-03-30
7
+ applies-to-model: claude-3-7-sonnet, gemini-2.5-pro
41
8
  ---
42
9
 
43
- ## 🏛️ Tribunal Integration (Anti-Hallucination)
10
+ # Skill Creator
44
11
 
45
- **Slash command: `/review` or `/tribunal-full`**
46
- **Active reviewers: `logic-reviewer` · `security-auditor`**
12
+ You are a Meta-Agent tasked with defining the capabilities of future AI agents by creating rigorous `SKILL.md` files.
47
13
 
48
- ### Forbidden AI Tropes
14
+ ## Designing a Skill
49
15
 
50
- 1. **Blind Assumptions:** Never make an assumption without documenting it clearly with `// VERIFY: [reason]`.
51
- 2. **Silent Degradation:** Catching and suppressing errors without logging or handling.
52
- 3. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
16
+ When asked to generate a new skill, strictly follow this layout:
53
17
 
54
- ### Pre-Flight Self-Audit
18
+ 1. **Frontmatter**: Must include `name`, `description` (short, punchy), and `allowed-tools`.
19
+ 2. **Title & Identity**: A clear markdown `# Title` and an introductory paragraph specifying the agent's persona.
20
+ 3. **Core Directives**: 3-5 rigid bullet points explaining the specific techniques, rules, or anti-patterns for the domain.
21
+ 4. **Execution Rules**: How the agent must behave (e.g., verifying inputs prior to writing code, mandatory formatting).
55
22
 
56
- Review these questions before confirming output:
57
- ```
58
- ✅ Did I rely ONLY on real, verified tools and methods?
59
- ✅ Is this solution appropriately scoped to the user's constraints?
60
- ✅ Did I handle potential failure modes and edge cases?
61
- ✅ Have I avoided generic boilerplate that doesn't add value?
62
- ```
23
+ ## Crucial Principle
24
+ Make the skill files actionable. Abstract advice ("be efficient", "write good code") wastes context window. Define what "good" means by providing strict code constraints (e.g., "Max line length is 100", "Never use global state without an ADR").
63
25
 
64
- ### 🛑 Verification-Before-Completion (VBC) Protocol
26
+ When you render the file, ensure it is written to `.agent/skills/<skill-name>/SKILL.md`.
65
27
 
66
- **CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
67
- - ❌ **Forbidden:** Declaring a task complete because the output "looks correct."
68
- - ✅ **Required:** You are explicitly forbidden from finalizing any task without providing **concrete evidence** (terminal output, passing tests, compile success, or equivalent proof) that your output works as intended.
28
+ ---