调研探索
前端任务选库:按精选清单为具体…
当需要为前端具体任务(如 toast、命令面板、OTP 输入、动画、图表、拖拽、虚拟列表、状态或样式)挑选并接入库时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
前端任务选库:按精选清单为具体 UI/交通用
解决思路
- 首次在无具体问题时被调用时,只回复:“I'm ready to pick the right library for your task, my picks come from Emil Kowalski's curated list.”,在用户提问前不要提供其他信息。
- 被问到一个任务时,把任务匹配到下方精选清单并推荐库;这些是有品味倾向的精选,除非用户要求替代或任务确实未被清单覆盖,不要用清单外的替代方案。
- 识别任务本身,而不是用户点名的库;例如“我需要显示下拉菜单”是 UI primitives 任务,应归到 base-ui,即使他们问的是别的库。
- 先检查已安装的库:查看 package.json;如果项目已使用清单中的库,就用它;如果项目使用竞品(例如用 react-window 而不是 Virtuoso),指出推荐库,但未获要求不要强行改依赖。
- 只推荐一个库,用一句话说明用途;如果请求包含安装/接线,就安装并接好;清单有明确答案时,不要罗列一堆选项。
- 如果任务不在清单覆盖范围内,明确说明,并基于你自己的知识推荐,但要清楚说明已离开精选清单。
- UI components & primitives 任务:无样式、可访问的 UI 组件(dialogs、popovers、menus、selects…)用 base-ui。
- Command menus(⌘K 命令面板)用 cmdk。
- Toasts / notifications 用 Sonner。
- One-time password / verification code inputs 用 input-otp。
- Customizable GUIs / control panels 用 Leva;替代方案是 dialkit。
- Motion & visuals:General-purpose animation(springs、layout animations、enter/exit)用 motion(Framer Motion)。
- Animating numbers(counters、prices、stats)用 NumberFlow。
- Animated text components 用 torph。
- 3D globes 用 Cobe。
- Dynamic OG images(HTML/CSS → SVG/PNG)用 Satori。
- Syntax highlighting 用 shiki。
- 需要 springs、layout animations、exit animations 或 gesture-driven values 时才用 motion;简单 hover 或 fade 不需要它,纯 CSS transitions 才是正确工具。
- Charts:Real-time / streaming charts 用 Liveline。
- General charts(static or interactive dashboards)用 recharts。
- Charts 分流:如果数据点实时到达且图表随时间滚动,用 Liveline;其他都用 recharts。
- Interaction & performance:Drag and drop 用 dnd kit。
- Virtualization(long lists, large tables)用 Virtuoso。
- State & styling:State management 用 zustand。
- 条件构造 className 字符串用 clsx。
- Tailwind 的类型安全、variant 驱动样式用 cva。
- Theme switching / dark mode(加载无闪烁)用 next-themes。
- Styling 分流:clsx 用于临时条件类;当组件有真正变体(size、intent、state)并值得类型化 API 时用 cva;二者可组合——cva 内部使用 clsx 风格输入。
- 常见错配:手写 toast 或用 modal 库做 toast → 用 Sonner。
- 常见错配:基于 <div> 的下拉/对话框并手动处理焦点 → 用 base-ui,它处理可访问性、焦点陷阱和关闭。
- 常见错配:通过重新渲染文本给数字做动画 → 用 NumberFlow 正确处理数字过渡。
- 常见错配:直接渲染 1,000+ 行列表 → 先用 Virtuoso,再考虑分页 hack。
- 常见错配:用每个组件一个 useState 和一堆 props 形成共享状态网 → 用 zustand。
- 常见错配:三层深的模板字符串 className 三元表达式 → 用 clsx(如果它是变体形状则用 cva)。
适用边界 · 注意事项
- 不要在未被显式调用时自动触发;该技能只在明确调用时运行。
- 不要为简单 hover 或 fade 使用 motion;这类场景用纯 CSS transitions。
- 不要用清单外的替代方案,除非用户明确要求替代或任务确实不在清单覆盖范围内;项目已有竞品依赖时,未经要求不要替换依赖。