用途
solid-nextjs 用于在 Next.js 项目中应用 SOLID 设计原则,关注模块化结构、源文件体积上限、接口分离与 JSDoc 注释等代码质量要求。它不是介绍 Next.js 框架 API 的功能型技能,官方说明明确指出框架 API 本身应参考 nextjs-16 及其同类技能。
主要能力
- 按 SOLID 的五个原则分别提供参考指南:
- 单一职责:在 FUSE_SOLID_MAX_LINES 限制内按职责拆分、组件组合模式、页面与 Server Action 示例。
- 开闭原则:通过组合而非修改来扩展,含插件架构、多实现的 Provider 模式、适配器与策略模式。
- 里氏替换:契约一致性与行为子类型,异常与返回类型契约,LSP 合规测试。
- 接口隔离:按角色划分接口,避免臃肿契约,面向客户端的接口。
- 依赖倒置:构造函数注入、工厂创建模式、IoC 容器、便于测试的 mock。
- 提供 references/templates/ 下可复制的模板,官方列出的包括:Server Component(含数据获取)、带 hooks 的 Client Component、带依赖注入的 service、带状态的 React hook、TypeScript 接口、带持久化的 Zustand store、带校验的 Server Action、API Route Handler、Zod 校验 schema、工厂模式、适配器模式、自定义错误类、测试模板、鉴权中间件、Prisma 单例、功能/全局国际化、数据库查询(Prisma 7)。
使用方式与工作流
官方文档对使用流程提出强制要求:
- 编码前先研究与查证:先用 Context7 查询 Next.js/React 官方文档,再用 Exa 按当前年份搜索最新趋势,查看当年 Vercel 博客新特性,并核对 Next.js 16 兼容的包版本。搜索示例包括 “Next.js [feature] YYYY best practices”“React 19 [component] YYYY”“TypeScript [pattern] YYYY”“Prisma 7 [feature] YYYY”。
- 代码库分析:理解项目结构、阅读现有相关文件以沿用既有模式、识别命名与代码风格、理解数据流与依赖。
- DRY 检查:先用 Grep 搜索相似函数或逻辑,检查 modules/cores/lib/、modules/cores/components/、modules/cores/hooks/ 等共享位置;已有相似代码则复用扩展,被 2 个以上功能使用的代码直接放到 modules/cores/,重复 3 次以上的逻辑抽为共享辅助函数;新建文件后运行 npx jscpd ./src --threshold 3。
- 实现前并行启动三个代理:fuse-ai-pilot:explore-codebase(分析项目结构与既有模式)、fuse-ai-pilot:research-expert(核实技术栈最新文档)、mcp__context7__query-docs(检查集成兼容性)。实现完成后运行 fuse-ai-pilot:sniper 做验证。
关键规则
- 源文件不得超过 FUSE_SOLID_MAX_LINES,该 hook 的上限是唯一权威;内聚度下降时按职责拆分:页面委托给模块、组件通过组合、每个关注点一个 Server Action。
- 模块化架构参见 references/architecture-patterns.md 中的功能模块与 cores 目录结构。
- 导出必须写 JSDoc,示例格式包含 @param、@returns、@throws。
- 接口必须分离:modules/auth/src/ 下 interfaces/ 只放类型,services/ 与 components/ 不放类型。
禁止事项
官方列出的禁止项包括:不先查文档就写代码、不经核对当年文档就使用过时 API、源文件超过 FUSE_SOLID_MAX_LINES、在组件文件中定义接口、在 app/ 页面中写业务逻辑、在组件中直接访问数据库、模块导入另一模块(cores 除外)、默认使用 'use client'、用 useEffect 做数据获取、导出缺少 JSDoc、使用 any 类型、使用 barrel exports,以及未经 Grep 搜索就复制已有工具/辅助函数或复制粘贴逻辑块而非抽取共享函数。
适用场景与限制
适用于采用 Next.js 并希望以 SOLID 原则约束模块划分、文件规模、接口与依赖方向的项目,也适合需要可复制模板快速搭建组件、服务、Action、校验与数据访问层的团队。限制方面:该技能是横切代码质量规范,不提供 Next.js 框架 API 教程;FUSE_SOLID_MAX_LINES 的具体数值、相关 hook 与代理的实际实现细节官方资料暂未提供;实际收费、价格与平台支持情况暂未提供。