跳到正文
cccskills
免费在 GitHub 公开中文介绍

architecture-decision-records

将重要技术选型和系统设计决策整理为架构决策记录(ADR),记录背景、约束、备选方案、理由及影响,并关联相关记录、维护索引和跟踪决策状态。

原文查看原文说明

Comprehensive patterns for creating, maintaining, and managing Architecture Decision Records (ADRs) that capture the context and rationale behind significant technical decisions.

实测评分 未实测

查看安装方法

适用场景

  • 记录框架或数据库的选型理由
  • 比较不同设计方案的利弊
  • 向新成员介绍过去的决策
  • 记录新决策如何替代旧决策

中文介绍

功能

此技能帮助团队把重要的技术选型和系统设计决策整理成架构决策记录(ADR)。记录内容包括做出决策的背景、约束条件、考虑过的方案、最终决定、选择理由,以及可能产生的正面和负面影响。它提供多种记录方式,包括内容较完整的 MADR 格式、简短记录,以及用于讨论提案的 RFC 格式。还可以为相关 ADR 添加链接、整理记录索引,并跟踪“已接受”“已弃用”或“已被取代”等状态。

适用场景

选择框架或数据库、与团队比较设计方案、回顾以往决策,或向新成员说明选型经过时,可以使用此技能。它面向重要的设计决策,不适用于记录小型实现细节或日常维护工作。

使用示例

  • “根据这些数据库候选方案和约束,整理采用理由与顾虑,并写成 ADR。”
  • “创建一份取代旧决策的 ADR,并整理相关记录和索引。”

注意事项

对于已经接受的记录,建议创建新的 ADR 来取代它,而不是改写原记录。自动化示例使用 adr-tools。生成的文档不能代替针对具体环境的验证或专业人员审核。

本介绍由 AI(OpenAI Codex)根据公开的 SKILL.md 撰写。准确的规格请查看下方原文。

文档检查

AI 根据 SKILL.md 的内容检查了需要注意的操作和使用前提。评分只依据实际运行的结果(实测对比)。

安全性发送数据、删除文件、执行命令等是否有说明
A良好主要操作是编写记录,并建议用新 ADR 替代已接受的记录。
安装难易度所需工具和 API 密钥是否少且有说明
A良好未说明必需的安装条件;自动化示例中出现 `adr-tools`。

不计入评分。 由 AI(OpenAI Codex)于 2026年10月24日 评估。仅供参考,安装前请同时查看原文。

如果您认为评估有误,请申请复核

请写明哪一项有误以及原因。无需登录。我们会对照 SKILL.md 重新评估,并在此处更新结果。

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

包含的文件(1)

  • SKILL.md13.6 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Architecture Decision Records

Comprehensive patterns for creating, maintaining, and managing Architecture Decision Records (ADRs) that capture the context and rationale behind significant technical decisions.

Use this skill when

  • Making significant architectural decisions
  • Documenting technology choices
  • Recording design trade-offs
  • Onboarding new team members
  • Reviewing historical decisions
  • Establishing decision-making processes

Do not use this skill when

  • You only need to document small implementation details
  • The change is a minor patch or routine maintenance
  • There is no architectural decision to capture

Instructions

  1. Capture the decision context, constraints, and drivers.
  2. Document considered options with tradeoffs.
  3. Record the decision, rationale, and consequences.
  4. Link related ADRs and update status over time.

Core Concepts

1. What is an ADR?

An Architecture Decision Record captures:

  • Context: Why we needed to make a decision
  • Decision: What we decided
  • Consequences: What happens as a result

2. When to Write an ADR

Write ADRSkip ADR
New framework adoptionMinor version upgrades
Database technology choiceBug fixes
API design patternsImplementation details
Security architectureRoutine maintenance
Integration patternsConfiguration changes

3. ADR Lifecycle

Proposed → Accepted → Deprecated → Superseded
              ↓
           Rejected

Templates

Template 1: Standard ADR (MADR Format)

# ADR-0001: Use PostgreSQL as Primary Database

## Status

Accepted

## Context

We need to select a primary database for our new e-commerce platform. The system
will handle:
- ~10,000 concurrent users
- Complex product catalog with hierarchical categories
- Transaction processing for orders and payments
- Full-text search for products
- Geospatial queries for store locator

The team has experience with MySQL, PostgreSQL, and MongoDB. We need ACID
compliance for financial transactions.

## Decision Drivers

* **Must have ACID compliance** for payment processing
* **Must support complex queries** for reporting
* **Should support full-text search** to reduce infrastructure complexity
* **Should have good JSON support** for flexible product attributes
* **Team familiarity** reduces onboarding time

## Considered Options

### Option 1: PostgreSQL
- **Pros**: ACID compliant, excellent JSON support (JSONB), built-in full-text
  search, PostGIS for geospatial, team has experience
- **Cons**: Slightly more complex replication setup than MySQL

### Option 2: MySQL
- **Pros**: Very familiar to team, simple replication, large community
- **Cons**: Compare version-specific JSON, full-text and spatial capabilities against measured requirements; MySQL includes full-text indexes and spatial features.

### Option 3: MongoDB
- **Pros**: Flexible schema, native JSON, horizontal scaling
- **Cons**: Multi-document transactions are supported on qualifying modern deployments; assess their overhead and topology constraints,
  team has limited experience, requires schema design discipline

## Decision

We will use **PostgreSQL 15** as our primary database.

## Rationale

PostgreSQL provides the best balance of:
1. **ACID compliance** essential for e-commerce transactions
2. **Capabilities** (built-in full-text search/JSONB plus the PostGIS extension) reduce
   infrastructure complexity
3. **Team familiarity** with SQL databases reduces learning curve
4. **Mature ecosystem** with excellent tooling and community support

The slight complexity in replication is outweighed by the reduction in
additional services (no separate Elasticsearch needed).

## Consequences

### Positive
- Single database handles transactions, search, and geospatial queries
- Reduced operational complexity (fewer services to manage)
- Strong consistency guarantees for financial data
- Team can leverage existing SQL expertise

### Negative
- Need to learn PostgreSQL-specific features (JSONB, full-text search syntax)
- Vertical scaling limits may require read replicas sooner
- Some team members need PostgreSQL-specific training

### Risks
- Full-text search may not scale as well as dedicated search engines
- Mitigation: Design for potential Elasticsearch addition if needed

## Implementation Notes

- Use JSONB for flexible product attributes
- Implement connection pooling with PgBouncer
- Set up streaming replication for read replicas
- Use pg_trgm extension for fuzzy search

## Related Decisions

- ADR-0002: Caching Strategy (Redis) - complements database choice
- ADR-0005: Search Architecture - may supersede if Elasticsearch needed

## References

- [PostgreSQL JSON Documentation](https://www.postgresql.org/docs/current/datatype-json.html)
- [PostgreSQL Full Text Search](https://www.postgresql.org/docs/current/textsearch.html)
- Internal: Performance benchmarks in `/docs/benchmarks/database-comparison.md`

Template 2: Lightweight ADR

# ADR-0012: Adopt TypeScript for Frontend Development

**Status**: Accepted
**Date**: 2024-01-15
**Deciders**: @alice, @bob, @charlie

## Context

Our React codebase has grown to 50+ components with increasing bug reports
related to prop type mismatches and undefined errors. PropTypes provide
runtime-only checking.

## Decision

Adopt TypeScript for all new frontend code. Migrate existing code incrementally.

## Consequences

**Good**: Catch type errors at compile time, better IDE support, self-documenting
code.

**Bad**: Learning curve for team, initial slowdown, build complexity increase.

**Mitigations**: TypeScript training sessions, allow gradual adoption with
`allowJs: true`.

Template 3: Y-Statement Format

# ADR-0015: API Gateway Selection

In the context of **building a microservices architecture**,
facing **the need for centralized API management, authentication, and rate limiting**,
we decided for **Kong Gateway**
and against **AWS API Gateway and custom Nginx solution**,
to achieve **vendor independence, plugin extensibility, and team familiarity with Lua**,
accepting that **we need to manage Kong infrastructure ourselves**.

Template 4: ADR for Deprecation

# ADR-0020: Deprecate MongoDB in Favor of PostgreSQL

## Status

Accepted (Supersedes ADR-0003)

## Context

ADR-0003 (2021) chose MongoDB for user profile storage due to schema flexibility
needs. Since then:
- MongoDB's multi-document transactions remain problematic for our use case
- Our schema has stabilized and rarely changes
- We now have PostgreSQL expertise from other services
- Maintaining two databases increases operational burden

## Decision

Deprecate MongoDB and migrate user profiles to PostgreSQL.

## Migration Plan

1. **Phase 1** (Week 1-2): Create PostgreSQL schema, dual-write enabled
2. **Phase 2** (Week 3-4): Backfill historical data, validate consistency
3. **Phase 3** (Week 5): Switch reads to PostgreSQL, monitor
4. **Phase 4** (Week 6): Remove MongoDB writes, decommission

## Consequences

### Positive
- Single database technology reduces operational complexity
- ACID transactions for user data
- Team can focus PostgreSQL expertise

### Negative
- Migration effort (~4 weeks)
- Risk of data issues during migration
- Lose some schema flexibility

## Lessons Learned

Document from ADR-0003 experience:
- Schema flexibility benefits were overestimated
- Operational cost of multiple databases was underestimated
- Consider long-term maintenance in technology decisions

Template 5: Request for Comments (RFC) Style

# RFC-0025: Adopt Event Sourcing for Order Management

## Summary

Propose adopting event sourcing pattern for the order management domain to
improve auditability, enable temporal queries, and support business analytics.

## Motivation

Current challenges:
1. Audit requirements need complete order history
2. "What was the order state at time X?" queries are impossible
3. Analytics team needs event stream for real-time dashboards
4. Order state reconstruction for customer support is manual

## Detailed Design

### Event Store

OrderCreated { orderId, customerId, items[], timestamp } OrderItemAdded { orderId, item, timestamp } OrderItemRemoved { orderId, itemId, timestamp } PaymentReceived { orderId, amount, paymentId, timestamp } OrderShipped { orderId, trackingNumber, timestamp }


### Projections

- **CurrentOrderState**: Materialized view for queries
- **OrderHistory**: Complete timeline for audit
- **DailyOrderMetrics**: Analytics aggregation

### Technology

- Event Store: EventStoreDB (purpose-built, handles projections)
- Alternative considered: Kafka + custom projection service

## Drawbacks

- Learning curve for team
- Increased complexity vs. CRUD
- Need to design events carefully (immutable once stored)
- Storage growth (event retention and privacy/deletion requirements need an explicit policy)

## Alternatives

1. **Audit tables**: Simpler; temporal queries depend on which history and ordering are captured
2. **CDC from existing DB**: Complex, doesn't change data model
3. **Hybrid**: Event source only for order state changes

## Unresolved Questions

- [ ] Event schema versioning strategy
- [ ] Retention policy for events
- [ ] Snapshot frequency for performance

## Implementation Plan

1. Prototype with single order type (2 weeks)
2. Team training on event sourcing (1 week)
3. Full implementation and migration (4 weeks)
4. Monitoring and optimization (ongoing)

## References

- [Event Sourcing by Martin Fowler](https://martinfowler.com/eaaDev/EventSourcing.html)
- [EventStoreDB Documentation](https://www.eventstore.com/docs)

ADR Management

Directory Structure

docs/
├── adr/
│   ├── README.md           # Index and guidelines
│   ├── template.md         # Team's ADR template
│   ├── 0001-use-postgresql.md
│   ├── 0002-caching-strategy.md
│   ├── 0003-mongodb-user-profiles.md  # [DEPRECATED]
│   └── 0020-deprecate-mongodb.md      # Supersedes 0003

ADR Index (README.md)

# Architecture Decision Records

This directory contains Architecture Decision Records (ADRs) for [Project Name].

## Index

| ADR | Title | Status | Date |
|-----|-------|--------|------|
| 0001 | Use PostgreSQL as Primary Database | Accepted | 2024-01-10 |
| 0002 | Caching Strategy with Redis | Accepted | 2024-01-12 |
| 0003 | MongoDB for User Profiles | Deprecated | 2023-06-15 |
| 0020 | Deprecate MongoDB | Accepted | 2024-01-15 |

## Creating a New ADR

1. Copy `template.md` to `NNNN-title-with-dashes.md`
2. Fill in the template
3. Submit PR for review
4. Update this index after approval

## ADR Status

- **Proposed**: Under discussion
- **Accepted**: Decision made, implementing
- **Deprecated**: No longer relevant
- **Superseded**: Replaced by another ADR
- **Rejected**: Considered but not adopted

Automation (adr-tools)

# Install adr-tools
brew install adr-tools

# Initialize ADR directory
adr init docs/adr

# Create new ADR
adr new "Use PostgreSQL as Primary Database"

# Supersede an ADR
adr new -s 3 "Deprecate MongoDB in Favor of PostgreSQL"

# Generate table of contents
adr generate toc > docs/adr/README.md

# Link related ADRs
adr link 2 "Complements" 1 "Is complemented by"

Review Process

## ADR Review Checklist

### Before Submission
- [ ] Context clearly explains the problem
- [ ] All viable options considered
- [ ] Pros/cons balanced and honest
- [ ] Consequences (positive and negative) documented
- [ ] Related ADRs linked

### During Review
- [ ] At least 2 senior engineers reviewed
- [ ] Affected teams consulted
- [ ] Security implications considered
- [ ] Cost implications documented
- [ ] Reversibility assessed

### After Acceptance
- [ ] ADR index updated
- [ ] Team notified
- [ ] Implementation tickets created
- [ ] Related documentation updated

Best Practices

Do's

  • Write ADRs early - Before implementation starts
  • Keep them short - 1-2 pages maximum
  • Be honest about trade-offs - Include real cons
  • Link related decisions - Build decision graph
  • Update status - Deprecate when superseded

Don'ts

  • Don't change accepted ADRs - Write new ones to supersede
  • Don't skip context - Future readers need background
  • Don't hide failures - Rejected decisions are valuable
  • Don't be vague - Specific decisions, specific consequences
  • Don't forget implementation - ADR without action is waste

Resources

Limitations

  • Use this skill only when the task clearly matches the scope described above.
  • Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
  • Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.

All decisions, benchmarks, dates and staffing/timelines in these templates are fictional examples, not evidence about the user's project. Mark new proposals Proposed until authorized deciders accept them. Review deployment-specific vendor capabilities before comparing options, record uncertainty, and require a rollback/reconciliation design for dual writes. Review ADR index output before replacing a hand-maintained README.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

00-andruia-consultant

免费有简介

通过检查代码、目标和限制,评估新的或现有的 AI 项目;核对可用目录中的技能后提出建议,并制定包含依赖关系、完成条件和检查方式的任务清单与实施计划。

  • 规划新 AI 项目的启动
  • 梳理现有项目的技术问题
  • 从可用目录中挑选技能
sickn33/agentic-awesome-skills4.8万2026年10月24日 更新

007

免费有简介

检查代码和基础设施中的安全风险,梳理潜在威胁并规划防护改进。涵盖 OWASP 检查、攻击与防御验证及事件响应;操作范围需获明确授权,并结合具体环境验证结果。

  • 审查代码和基础设施安全
  • 用 STRIDE 或 PASTA 梳理威胁
  • 规划安全配置加固
sickn33/agentic-awesome-skills4.8万2026年10月24日 更新

10-andruia-skill-smith

免费有简介

将重复任务整理成 Andru.ia 技能,明确输入、输出、示例和限制;编写 `SKILL.md`,检查目录结构和验证要求,并准备供审阅的拉取请求。

  • 把重复工作整理成技能
  • 改进现有技能的示例或限制
  • 验证技能并准备拉取请求
sickn33/agentic-awesome-skills4.8万2026年10月24日 更新

项目行业确定后,整理行业背景、可能适用的法规、用户熟悉的界面模式、技术选择和风险,并区分已核实事实、假设及待专家确认的事项。

  • 设计前调查行业特有要求
  • 核对目标地区的法规
  • 研究用户熟悉的界面设计
sickn33/agentic-awesome-skills4.8万2026年10月24日 更新

2slides-ppt-generator

免费有简介

通过 2slides API 将文本、提纲或文档制作为演示稿,可参考图片风格、选择主题、添加人工智能旁白,并导出幻灯片图片或音频。

  • 将文本或提纲制作成演示稿
  • 把文档摘要整理成幻灯片
  • 参考图片风格设计幻灯片
sickn33/agentic-awesome-skills4.8万2026年10月24日 更新

360-feedback-system

免费有简介

规划360度评估或同伴反馈流程,并根据已确认的需求创建空白答复台账。可生成字段一致的CSV、SQL、JSON Schema或Notion属性映射,并将可见范围与评分配置分开整理。

  • 设计匿名同伴反馈流程
  • 创建答复记录CSV台账
  • 统一SQL与JSON Schema字段
sickn33/agentic-awesome-skills4.8万2026年10月24日 更新

查看 sickn33 的全部技能

报告此技能的问题