关于 feature-arch
面向 React 团队和编码 Agent 的功能导向架构指南,提供优先级规则及项目专属架构蓝图,涵盖功能边界、导入、状态归属与迁移步骤。
主要功能
- 01涵盖 8 类的 43 条规则
- 02项目专属架构蓝图
- 03功能边界与导入规范
- 04状态和数据归属规划
- 05按文件制定迁移计划
适用场景
- 01规划 React 应用的目标结构
- 02定义功能 API 与导入边界
- 03审查架构违规问题
- 04准备分步架构迁移
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill feature-arch安装后在 Claude Code 中输入/feature-arch确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
AGENTS.mdmetadata.jsonREADME.mdassets/templates/_template.mdfeature-arch-target.md.templatereferences/_blueprint-process.md_sections.mdbound-event-based-communication.mdbound-feature-isolation.mdbound-feature-scoped-routing.mdbound-feature-size.mdbound-interface-contracts.mdbound-minimize-shared-state.mdfcomp-colocate-styles.mdfcomp-composition-over-props.mdfcomp-container-presentational.mdfcomp-error-boundaries.mdfcomp-props-as-data-boundary.mdfcomp-single-responsibility.mdfquery-avoid-n-plus-one.mdfquery-colocate-with-feature.mdfquery-feature-scoped-keys.mdfquery-parallel-fetching.mdfquery-server-component-fetching.mdfquery-single-responsibility.mdfstate-context-sparingly.mdfstate-feature-scoped-stores.mdfstate-lift-minimally.mdfstate-reset-on-unmount.mdfstate-server-state-separation.md详细介绍
基于功能的架构最佳实践
全面的架构指南,介绍如何按功能组织 React 应用,以支持独立团队进行可扩展的开发。包含 8 个类别共 43 条规则,按影响从关键(目录结构、导入)到渐进式(命名约定)排序。在实际项目中调用此技能时,它会生成一份针对该项目的蓝图,并以这些规则为每项决策提供依据。
主要产出:目标架构蓝图
Agent 在实际项目中调用此技能时,交付物是一份 Markdown 文件,保存至 docs/architecture/FEATURE-ARCH-TARGET.md(或仓库现有的文档位置)。蓝图包含:
- 项目背景 — 框架、状态库、路由模型、当前结构。
- 已识别的功能 — 与用户确认,并从路由、文档、openspec 和代码集群中提取。
- 目标目录树 — 使用实际路径,而非伪目录树。
- 各功能的公共 API — 每个
index.ts的确切具名导出。 - 导入边界矩阵 — 功能关系的 N×N 表格(
allowed/forbidden/via app/via events)。 - 状态与数据所有权 — 各功能对应的服务端状态和客户端状态所有者。
- 跨功能通信策略 — 组合、事件或共享切片,并说明理由。
- 编号迁移计划 — 文件级移动/创建/删除步骤,并估算 S/M/L 工作量。
- 人工合规检查清单 — 用于代码审查和“完成定义”。
- 待解决问题 — 迁移前需要人工决策的事项。
每个部分都会引用下方管理相关决策的具体规则,确保蓝图是此技能的投影,而非另一个并行的权威来源。
Agent 如何生成蓝图
遵循 references/_blueprint-process.md 中的流程。概要:
- 收集背景信息(package.json、src/ 目录树、README、CLAUDE.md、openspec/)。
- 从路由、文档和代码集群中识别候选功能。
- 通过
AskUserQuestion与用户确认功能列表。 - 记录明确决策(分层模型、通信机制、状态/路由所有者)。
- 填写 assets/templates/feature-arch-target.md.template — 将每个
{{placeholder}}替换为项目中的实际值。 - 移交:打印路径、概述功能数/步骤数、列出最重要的 3 项风险,并建议下一步行动。同一轮中不要开始执行迁移步骤。
对于非常小的项目(源文件少于约 10 个),改为生成一页的初始结构,并注明应在第 2–3 个功能出现后再制定完整蓝图。
适用场景
在以下情况下参考这些指南:
- 项目要求制定基于功能的目标架构(生成蓝图)。
- 创建新功能或模块。
- 组织项目目录结构。
- 设置导入规则和边界。
- 实施数据获取模式。
- 组合来自多个功能的组件。
- 审查代码中的架构违规。
按优先级划分的规则类别
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 目录结构 | 关键 | struct- |
| 2 | 导入与依赖 | 关键 | import- |
| 3 | 模块边界 | 高 | bound- |
| 4 | 数据获取 | 高 | fquery- |
| 5 | 组件组织 | 中高 | fcomp- |
| 6 | 状态管理 | 中 | fstate- |
| 7 | 测试策略 | 中 | test- |
| 8 | 命名约定 | 低 | name- |
快速参考
1. 目录结构(关键)
struct-feature-folders- 按功能组织,而非按技术类型组织struct-feature-self-contained- 使功能保持自包含struct-shared-layer- 共享层仅用于真正通用的代码struct-flat-hierarchy- 保持目录层级扁平struct-optional-segments- 仅包含必要的部分struct-app-layer- 将应用层与功能分开struct-domain-folders- 在大型项目中将功能归入不同领域
2. 导入与依赖(关键)
import-unidirectional-flow- 强制采用单向导入流程import-no-cross-feature- 禁止跨功能导入import-public-api- 仅通过公共 API 导出import-avoid-barrel-files- 避免通过深层 barrel 文件重新导出import-path-aliases- 使用一致的路径别名import-type-only- 类型仅使用类型导入
3. 模块边界(高)
bound-feature-isolation- 强制功能隔离bound-interface-contracts- 定义明确的接口契约bound-feature-scoped-routing- 将路由范围限定在功能相关内容内bound-minimize-shared-state- 尽量减少功能间的共享状态bound-event-based-communication- 使用事件进行跨功能通信bound-feature-size- 确保功能规模适当
4. 数据获取(高)
fquery-single-responsibility- 使查询函数各司其职fquery-colocate-with-feature- 将数据获取代码与功能放在一起fquery-parallel-fetching- 并行获取彼此独立的数据fquery-avoid-n-plus-one- 避免 N+1 查询模式fquery-feature-scoped-keys- 使用功能范围限定的查询键fquery-server-component-fetching- 在服务端组件层获取数据
5. 组件组织(中高)
fcomp-single-responsibility- 遵循组件单一职责原则fcomp-composition-over-props- 优先使用组合,而非逐层传递 propsfcomp-container-presentational- 分离容器与展示职责fcomp-props-as-data-boundary- 使用 props 作为功能边界fcomp-colocate-styles- 将样式与组件放在一起fcomp-error-boundaries- 使用功能级错误边界
6. 状态管理(中)
fstate-feature-scoped-stores- 将状态存储限定在功能范围内fstate-server-state-separation- 将服务端状态与客户端状态分开fstate-lift-minimally- 仅在必要时提升状态fstate-context-sparingly- 谨慎使用 context 管理功能状态fstate-reset-on-unmount- 在卸载时重置功能状态
7. 测试策略(中)
test-colocate-with-feature- 将测试与功能放在一起test-feature-isolation- 独立测试各项功能test-shared-utilities- 创建功能专用的测试工具test-integration-at-app-layer- 在应用层编写集成测试
8. 命名约定(低)
name-feature-naming- 使用领域驱动的功能名称name-file-conventions- 使用一致的文件命名约定name-descriptive-exports- 使用描述性导出名称
使用方法
阅读各个参考文件,了解详细说明和代码示例:
- Blueprint 流程 - 如何推导出适用于特定项目的目标架构
- Blueprint 模板 - Agent 用于生成最终状态文档的模板
- 章节定义 - 类别结构和影响级别
- 规则模板 - 用于添加新规则的模板
- 各项规则:
references/{prefix}-{slug}.md
相关技能
- 功能规划请参阅
feature-spec技能 - 数据获取请参阅
tanstack-query技能 - React 组件模式请参阅
react-19技能
完整汇编文档
如需查看包含所有展开规则的完整指南:AGENTS.md
评论
支持 Markdown