layered-architecture
分层架构约束——展示层 / 应用层 / 领域层 / 基础设施层的职责边界与单向依赖规则。当新增模块、评审分层越界、或拆分 monolith 时触发。 触发词:分层架构、依赖倒置、干净架构、六边形架构、hexagonal、层级约束、依赖方向。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
分层架构约束——展示层 / 应用层 / 领域层 / 基础设施层的职责边界与单向依赖规则。当新增模块、评审分层越界、或拆分 monolith 时触发。 触发词:分层架构、依赖倒置、干净架构、六边形架构、hexagonal、层级约束、依赖方向。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
用 citty + @clack/prompts 构建 Node.js CLI 的端到端工作流,覆盖命令路由、参数 schema、 终端交互、异步任务 UI 与 ESM 发布。触发词:citty、clack、prompts、CLI、命令行、子命令、 交互式、spinner、defineCommand、runMain、ESM 发布。
构建、扩展或调试 CodeMirror 6 浏览器代码编辑器,覆盖状态事务、扩展原语、 装饰、Compartment、语言包、补全诊断、主题、React 集成与 CM5→CM6 迁移。 触发词:CodeMirror 6、CM6、@codemirror/、EditorView、StateField、 Lezer、@uiw/react-codemirror。
使用 @pierre/diffs 与 @pierre/trees 构建代码审查、PR 视图、IDE 文件树、Merge Conflict 解决器。 覆盖 React/Vanilla API、虚拟化、Worker Pool、SSR、Shadow DOM 主题、CodeMirror 集成。 触发词:pierre、diff 渲染、文件树、PR 视图、merge conflict。
GitHub 仓库运营 + npm 包 tag 触发发布的一体化工作流。覆盖 issue/PR 分诊、CI 排障、 安全告警,以及 npm publish(provenance / scoped)+ 自动 GitHub Release(CHANGELOG 段落注入)。 触发词:github、gh、release、publish、tag、npm、provenance、changelog、triage、ci broken、版本发布。
为长跑 AI Coding 任务(Codex /goal、Claude Code、Cursor、Kiro autopilot)构建可审计、 不假完成、抗漂移的提示词。激活后先澄清需求、自动加载 AGENTS.md / 当前 spec / lessons.md, 再产出 5 段式 goal 与长跑健康守则。触发词:goal、写 goal、长任务、长跑、ralph。
使用 Mantine 组件库构建 React UI。涵盖核心组件选型、主题定制、Styles API、 布局模式、表单处理、日期选择器、图表、日程组件、通知系统、模态框管理、 Spotlight 搜索、文件上传、轮播、富文本编辑与 50+ hooks。 触发词:Mantine、UI 组件、主题配置、Styles API、DatePicker、Schedule、 Heatmap、通知、模态框、表单布局、Spotlight、Dropzone、Carousel、hooks。
| name | layered-architecture |
| type | architecture-rule |
| description | 分层架构约束——展示层 / 应用层 / 领域层 / 基础设施层的职责边界与单向依赖规则。当新增模块、评审分层越界、或拆分 monolith 时触发。 触发词:分层架构、依赖倒置、干净架构、六边形架构、hexagonal、层级约束、依赖方向。 |
| version | 1.0.0 |
| author | specforge |
依赖方向只能向内。 外层依赖内层,内层绝不依赖外层。违反这一条,分层架构就退化成「命名好看的大泥球」。
| 层级 | 职责 | 典型产物 |
|---|---|---|
| 展示层 (Presentation) | 适配外部世界:HTTP 路由、CLI、UI、RPC 入口 | Controller、Route、CLI Command |
| 应用层 (Application) | 用例编排:事务边界、跨领域对象协调、权限/审计 | Service、UseCase、CommandHandler |
| 领域层 (Domain) | 业务核心:实体、值对象、领域服务、领域事件 | Entity、ValueObject、DomainService |
| 基础设施层 (Infrastructure) | 外部依赖实现:数据库、消息队列、第三方 API、文件系统 | Repository 实现、Adapter |
Presentation → Application → Domain ← Infrastructure
↑
(接口在 Domain 声明,实现在 Infrastructure 注入)
| 动作 | 判定 | 说明 |
|---|---|---|
| Controller 调用 Repository | ❌ 越界 | 必须经过 Application 层编排 |
| Domain 实体直接调用 HTTP Client | ❌ 越界 | 通过 Port + Adapter 注入 |
Domain 引用 ORM 注解(如 JPA @Entity) | ⚠️ 妥协 | 如必须,限定在仓储映射对象,不污染聚合根 |
| Application 返回数据库实体 | ❌ 越界 | 返回 DTO / VO,隔离领域模型 |
| Infrastructure 调用 Application Service | ❌ 越界 | 反向依赖,改为事件发布或领域事件订阅 |
| 横向层间引用(同层模块互相污染) | ⚠️ 慎用 | 优先通过领域事件或抽象接口解耦 |
若采用六边形架构,对应关系:
| 四层模型 | 六边形 |
|---|---|
| Presentation | Driving Adapter(驱动适配器) |
| Application | Application Core 用例 |
| Domain | Application Core 实体/聚合 |
| Infrastructure | Driven Adapter(被驱动适配器) |
端口(Port)就是 Domain / Application 定义的接口;适配器(Adapter)是 Infrastructure / Presentation 实现。
src/
presentation/
application/
domain/
infrastructure/
src/
order/
presentation/
application/
domain/
infrastructure/
payment/
presentation/
application/
domain/
infrastructure/
经验:超过 5 个领域时改为水平分包;单领域用垂直分包避免早期过度设计。
| 能力 / 实现 | Java (Spring Boot) | Python | Go | Node.js (NestJS) |
|---|---|---|---|---|
| 依赖注入 | Spring @Service / @Repository | dependency-injector / 手动注入 | 手动注入 / wire | @Injectable() + DI 容器 |
| 展示层 | @RestController | FastAPI APIRouter | net/http + chi/gin | @Controller |
| 应用层 | @Service + @Transactional | 纯类 + unit-of-work | 纯函数 / struct | Service + @Transactional |
| 领域层 | Entity/VO POJO | dataclass / pydantic | struct | class + pure function |
| 基础设施层 | JPA Repository / Feign | SQLAlchemy / httpx | GORM / sqlc | TypeORM / Prisma / undici |
| 依赖倒置 | Interface + @Component | Protocol / ABC | interface | Interface + DI Token |
placeOrder 而非 insertOrder)。| 反模式 | 问题 | 修正 |
|---|---|---|
| 贫血领域模型 | 领域层只有 getter/setter,逻辑散落 | 把与实体相关的不变量与行为归还 Domain |
| Service 胖得像神 | 所有业务都往 Service 塞 | 按用例拆分;把规则归还领域对象 |
| 跨层大实体 | Entity 同时带持久化 + 序列化注解 | 区分领域实体与持久化对象 / DTO |
| Utility 类反噬 | 各种 Helper 静态类横跨层级 | 改为领域服务或应用服务,明确所属层 |
| 直接使用框架异常 | Domain 抛出 HTTP 异常 | Domain 抛业务异常,Presentation 层做映射 |