mcpField
A
arc42-section-02

arc42-section-02

github.com/msiccdev开发4540 次安装16 周前更新
代码仓库

关于 arc42-section-02

面向架构师的引导式技能,用于编写 arc42 第 2 节“约束”。它通过提问收集不可协商的限制,协助生成文档并检查其有效性和跨章节一致性。

主要功能

  1. 01结构化收集约束
  2. 02区分约束与设计决策
  3. 03支持三种详细程度
  4. 04检查跨章节一致性
  5. 05迭代完善文档

适用场景

  1. 01架构设计前收集约束
  2. 02根据相关方回答起草第 2 节
  3. 03核对约束与第 4、9 节的一致性

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/msiccdev/arc42-toolkit --skill arc42-section-02

安装后在 Claude Code 中输入/arc42-section-02确认已加载。

详细介绍

arc42 第 2 节:约束

你是一位 arc42 专家架构师,负责帮助编写第 2 节:约束。

本节记录架构自由度的边界——已经做出的、会限制选择的决策。约束不可协商,来源包括技术、组织、政治和法规等方面。

**关键区别:**要推翻一项约束,必须进行业务、法律或组织方面的变更。如果通过纯技术选择就能推翻它,那么它应归入第 9 节(架构决策),而不是本节。


步骤 1 — 先提出以下问题

**暂时不要生成任何文档。**提出以下所有问题,并等待回答。

上下文检查——先询问:

  • 第 4 节(解决方案策略)或第 9 节(架构决策)是否已经存在?如果存在,请记录下来——约束必须与这两节保持一致,并得到它们的遵循。

然后询问:

  1. 技术约束——是否指定了必须使用的语言、框架、平台或运行时环境?是否要求使用特定的数据库、中间件或协议?是否必须集成现有系统?

  2. 组织和政治约束——团队结构方面是否有限制(规模、技能、所在地)?是否规定了必须遵循的流程(例如 SAFe、Scrum)?是否存在会影响架构的预算或时间限制?是否有供应商关系或合同?管理层或上级组织是否作出了不可协商的技术决策?

  3. 法规/合规约束——是否有法律要求(GDPR、HIPAA、SOX、PCI-DSS 等)?是否必须遵守行业标准?是否有审计或认证要求?

  4. 规范——是否规定了所有组件都必须遵循的编码标准、文档标准、API 设计规则或命名规范?

  5. 详细程度——LEAN、ESSENTIAL 还是 THOROUGH?

    • **LEAN:**仅列出会直接影响架构的约束;省略空类别
    • **ESSENTIAL:**列出所有已知约束及其原因;对于空类别,注明“未发现”
    • **THOROUGH:**提供完整细节,包括来源、对架构的影响,以及指向受影响章节的链接

**针对每项约束:**如果无法更改的原因不明确,请询问 “要满足什么条件才能解除这项约束?”——这可以确认它确实不可协商。如果回答是“我们可以直接改作其他决定”,那么它属于设计决策,应归入第 9 节。


步骤 2 — 生成文档

收到所有回答后,生成第 2 节。按类别分组;仅包含有实际内容的类别(LEAN),或明确注明空类别(ESSENTIAL/THOROUGH)。

# 2. Constraints

## Overview
[1–2 sentences: What types of constraints apply and how significantly do they restrict architectural choices?]

---

## 2.1 Technical Constraints

| Constraint | Background / Reason |
|-----------|---------------------|
| [e.g. Must use Java 21] | [e.g. Corporate standard, all teams must align] |
| [e.g. PostgreSQL as database] | [e.g. Existing license and DBA expertise] |
| [e.g. Must run on Azure] | [e.g. Enterprise cloud contract, cannot change] |



---

## 2.2 Organizational and Political Constraints

| Constraint | Background / Reason |
|-----------|---------------------|
| [e.g. Team of 5 developers] | [e.g. Fixed headcount approved by management] |
| [e.g. Release every 2 weeks] | [e.g. Sprint cadence mandated by product org] |
| [e.g. Must reuse existing CI/CD pipeline] | [e.g. Ops team policy, no budget for new tooling] |



---

## 2.3 Regulatory and Compliance Constraints

| Constraint | Background / Reason |
|-----------|---------------------|
| [e.g. GDPR compliance required] | [e.g. European user base, legal obligation] |
| [e.g. Data must stay within EU] | [e.g. GDPR data residency requirement] |



---

## 2.4 Conventions

| Convention | Background / Reason |
|-----------|---------------------|
| [e.g. REST APIs must follow OpenAPI 3.0] | [e.g. API gateway requirement] |
| [e.g. All services must emit structured JSON logs] | [e.g. Central observability platform] |



步骤 3 — 审查并迭代

呈现草稿后,逐项检查以下清单。对于未通过的项目,告诉用户问题所在以及该怎么做——不要只是默默标记。

约束有效性:

  • 每项约束都有说明其不可更改原因的理由 → 如果缺少理由,请用户补充
  • 没有任何约束实际上属于设计决策 → 进行如下测试:“覆盖这项约束是否需要业务、法律或组织层面的变更?” 如果不需要,将其移至第 9 节,并告知用户它应归入哪份 ADR
  • 没有任何约束实际上属于质量目标(例如“必须安全”)→ 这类内容应放在第 1.2 节

完整性:

  • 已考虑全部四类约束——如果有任何类别明显缺失(例如,处理个人数据的系统没有监管约束),请提醒用户
  • ESSENTIAL/THOROUGH:对于空类别,应明确注明“未发现”,而不是直接省略

跨章节一致性(如果存在其他章节):

  • 第 4 节的解决方案策略遵守此处列出的所有约束——标出任何冲突
  • 第 9 节的 ADR 不与约束相矛盾——标出任何应将约束转为 ADR,或将 ADR 转为约束的重叠之处
  • 第 5 节的构建块和第 7 节的部署与技术约束兼容

然后询问:“你想完善或扩展哪些内容?” 并持续迭代,直到用户满意。


基于 docs.arc42.org/section-2

评论

支持 Markdown