关于 system-design
面向架构师和开发者的系统设计技能,用于规划系统或重要功能。它涵盖需求梳理、组件拆分、方案权衡、设计文档和检查清单。
主要功能
- 01梳理功能与非功能需求
- 02拆分系统组件
- 03比较架构方案权衡
- 04生成结构化设计文档
- 05执行架构审查检查
适用场景
- 01从零设计系统或重要功能
- 02编写架构决策记录(ADR)
- 03审查可扩展性与可靠性
- 04规划单体拆分或迁移
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ s-hiraoku/ synapse-a2a --skill system-design安装后在 Claude Code 中输入/system-design确认已加载。
详细介绍
系统设计
指导架构决策并生成结构化设计文档。
适用场景
- 从零开始设计新系统或主要功能
- 评估不同架构方案之间的权衡
- 创建架构决策记录(ADR)
- 审查现有架构在可扩展性、可靠性或可维护性方面的问题
- 拆分单体应用或规划迁移
工作流
步骤 1:明确需求
开始设计前,先收集以下信息:
- 功能需求 —— 系统必须实现什么?
- 非功能需求 —— 性能、可用性、安全性和成本约束
- 范围边界 —— 哪些内容明确不在范围内?
- 现有约束 —— 当前技术栈、团队技能和时间安排
在继续之前,请用户澄清任何含糊的需求。
步骤 2:识别组件
将系统拆分为以下组件:
- 数据存储 —— 有哪些数据?如何访问?
- 服务 / 模块 —— 逻辑工作单元有哪些?
- 接口 —— 组件如何通信?(API、事件、共享数据库、文件)
- 外部依赖 —— 第三方服务、API、基础设施
步骤 3:评估备选方案
对于每项重要决策,至少记录 2 个选项:
| 标准 | 选项 A | 选项 B |
|---|---|---|
| 复杂度 | ... | ... |
| 可扩展性 | ... | ... |
| 运维成本 | ... | ... |
| 团队熟悉度 | ... | ... |
给出一个选项作为建议,并清楚说明理由。
步骤 4:生成设计文档
输出结构化设计文档:
# Design: <Title>
## Context
[Problem statement and motivation]
## Requirements
- Functional: ...
- Non-functional: ...
## Architecture
[Component diagram or description]
## Key Decisions
| Decision | Choice | Rationale |
|----------|--------|-----------|
| ... | ... | ... |
## Data Model
[Schema or entity relationships]
## API Surface
[Key endpoints or interfaces]
## Risks & Mitigations
| Risk | Impact | Mitigation |
|------|--------|------------|
| ... | ... | ... |
## Open Questions
- ...
步骤 5:检查清单
定稿前,请确认:
- 每个组件只负责一项职责
- 模块之间不存在循环依赖
- 已识别并处理故障模式
- 明确了数据一致性模型(强一致性与最终一致性)
- 已定义安全边界
- 已规划可观测性要点(日志、指标、链路追踪)
原则
- 从简单开始 —— 只有在需求要求时才增加复杂性
- 明确权衡 —— 每项选择都有代价;请将其记录下来
- 为变化而设计 —— 接口应保持稳定,实现应可替换
- 分离关注点 —— 数据、逻辑和呈现不应相互纠缠
- 优雅地处理失败 —— 针对局部故障进行设计,而不只是考虑正常情况
评论
支持 Markdown