Community编程与开发github.com

hasaneks/web-craft-arch

React Web 应用(Next.js App Router 或 React + Vite)的架构与集成规则:服务器与客户端组件边界、统一 API 层与类型化错误模型、状态所有权、react-hook-form + Zod(含服务端错误字段映射)、状态边界(loading.tsx、error.tsx、Suspense)、i18n 架构(区域注册、解析顺序、URL 策略、请求作用域区域、目录、工具包与日期区域)、RTL 逻辑属性、认证、XSS、CSRF、密钥与缓存隔离。

web-craft-arch 是什么?

本技能提供了一套针对 React Web 应用(支持 Next.js App Router 和 React + Vite)的全面架构规则与集成指南。它规定了服务器与客户端组件的严格边界、统一的 API 层和类型化错误模型、以及清晰的状态所有权策略,确保代码的可维护性和安全性。技能涵盖了表单处理(react-hook-form + Zod)、页面状态边界(loading、error、Suspense)、国际化(i18n)架构(包括区域注册、解析顺序、URL 策略和目录加载)、右到左(RTL)布局逻辑、认证与安全(XSS、CSRF、缓存隔离)以及主题管理。此外,还提供了针对 shadcn/ui、Ant Design、Material UI 等主流 UI 工具包和 Next.js、Vite 等框架的适配器参考,以及如何与 OpenAPI 后端协作的指导,能够帮助 AI 代码生成工具在构建真实应用时生成符合生产级要求的代码。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/hasaneks/web-craft/tree/HEAD/skills/web-craft-arch

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Web 应用架构

先阅读 web-craft。只加载任务所需的参考文献;仅加载所选工具包和框架对应的适配器。

映射

主题参考文献
服务器与客户端组件、BFF、环境变量与密钥边界references/server-client.md
API 层、错误模型、状态所有权、表单、乐观更新、URL 状态references/data-forms.md
加载、错误和未找到边界、重试、离线、骨架屏计时references/states.md
i18n:注册表、解析、URL、目录、格式化、后端请求头references/i18n.md
RTL、逻辑属性、方向性图标、Portalreferences/rtl.md
认证、授权、XSS、CSRF、Cookie、缓存隔离、个人数据references/auth-security.md
主题:用户偏好与应用主题、系统变化、无闪烁references/theming.md
公开页面的 SEOreferences/seo.md
GEO:在 AI 搜索和助手中的可见性references/geo.md
Next.js App Router 适配器references/fw-next.md
React + Vite 适配器references/fw-vite.md
shadcn/ui 适配器references/kit-shadcn.md
Ant Design 适配器references/kit-antd.md
Material UI 适配器references/kit-mui.md
与 node-craft(或任何 OpenAPI)后端配合references/node-craft-contract.md
官方来源与审查日期references/sources.md

全局适用的规则

  1. 按需划分边界。 组件成为客户端组件是因为它需要交互性、浏览器 API 或客户端状态,而不是默认如此。保持交互式孤岛尽可能小。切勿将仅服务器代码、ORM 客户端或密钥导入客户端代码;公共环境变量不是密钥。
  2. 单一 API 层。 一个 fetch 客户端,一个以稳定代码和状态为键的类型化错误模型,一种认证行为。功能模块不得自行构建 fetch 和重试逻辑。服务端数据存在于查询/缓存层,全局客户端状态存在于小型存储或上下文中,表单状态存在于表单工具中,本地 UI 状态存在于组件中。模拟源通过配置在开发和测试时切换,绝不通过修改功能代码实现;不可信的响应在运行时解析。
  3. 表单。 使用 react-hook-form + Zod,除非项目采用了其他工具。配置 mode: 'onTouched'、reValidateMode: 'onChange',聚焦并滚动到第一个错误,通过 setError 处理服务端字段错误,错误后保留值,阻止重复提交。服务端是验证的权威。
  4. 状态有边界。 路由级别的加载和错误边界,以及在数据流处添加本地 Suspense;一个有问题的部件不会导致整个页面空白。
  5. i18n 是架构。 使用真实的引擎,区域注册表(BCP 47 标签、方向、目录、显示名称),默认英文回退(除非另有选择),服务端请求作用域的区域,服务端和客户端使用相同的初始区域,按区域和命名空间加载目录,从应用区域映射工具包和日期区域。
  6. 安全在服务端。 后端负责授权。对任何渲染的 HTML 进行清理。基于 Cookie 的会话需要 CSRF 保护。个人响应绝不能放入共享缓存;区域和用户相关的响应需要变化缓存键。
  7. 公开页面应可被找到。 在服务端渲染区域正确的元数据,每个语言有唯一的 canonical URL,仅对真实替代页面添加 hreflang 交替链接,站点地图,与可见内容匹配的结构化数据。GEO 以此为起点:可索引、可引用的内容和明确的 AI 爬虫策略。不提供排名或引用保证。
  8. 工具包是适配的,而非包裹的。 主题和令牌来自产品的设计决策。仅当需要重复的产品行为或固定 API 时,才包裹工具包组件。不要在工具包自身的过渡效果上叠加第二个动画系统。

完成标准

应用 web-craft → 完成,此外:没有客户端代码包包含密钥或仅服务器模块;两个并发的不同区域或不同用户的请求不会混用数据;首次渲染使用正确的语言和主题;每个声称支持的工具包/框架组合都已实际检查过。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

相关技能