跳到正文
cccskills
免费在 GitHub 公开

architecture-design

When the user needs to design or evaluate system architecture — service boundaries, data models, API contracts, infrastructure topology, database selection, or dependency analysis. Also activate for "design the system", "how should I architect this", "monolith vs microservices", or architecture decision records.

中文简介正在准备中。当前显示原文说明。

集成工具Redis

实测评分 未实测

查看安装方法

包含的文件(1)

  • SKILL.md8.3 KB

SKILL.md(原文)

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

Architecture Design

When to Use

  • Starting a new product or major feature that needs system design
  • Choosing between monolith, modular monolith, microservices, or event-driven patterns
  • Selecting a database (SQL vs NoSQL vs specialized) for a new project
  • Analyzing dependencies for circular references, coupling issues, or outdated packages
  • Creating architecture diagrams (Mermaid, PlantUML, ASCII) for documentation or review
  • Writing Architecture Decision Records (ADRs) for technical choices
  • Evaluating scalability bottlenecks or planning capacity

Context Required

From startup-context: product description, tech stack, current state (prototype/beta/scaling), team size, expected scale (users, requests/sec, data volume). If missing, ask:

  • What does this system need to do? (core use cases)
  • What scale are you targeting? (users, requests/sec, data size)
  • What is your team size and backend experience level?
  • Are there hard constraints? (compliance, latency, budget, existing infra)

Workflow

  1. Gather requirements — Identify functional requirements (use cases), non-functional requirements (latency, throughput, availability, consistency), and constraints (budget, team size, compliance).
  2. Run architecture assessment — Analyze the existing project structure to detect current patterns (MVC, layered, hexagonal, microservices indicators), code organization issues (god classes, mixed concerns), and layer violations.
  3. Analyze dependencies — Examine the dependency tree for circular dependencies, coupling scores, and outdated packages across npm, Python, Go, or Rust projects.
  4. Select architecture pattern — Use the decision workflows below to match team size, deployment needs, and data boundaries to the right pattern. For most early-stage startups, recommend modular monolith.
  5. Select database — Match data characteristics, scale requirements, and consistency needs to the appropriate database technology using the selection workflow below.
  6. Design data model — Produce an ER diagram in Mermaid. Define entity ownership: which module/service writes, others read via API.
  7. Define API contracts — Specify key endpoints with method, path, request/response shapes, and error codes. Version from day one.
  8. Generate architecture diagram — Produce a Mermaid C4 or flowchart diagram showing components, data stores, external services, and communication patterns.
  9. Write ADRs — Document key decisions using the ADR format below.
  10. Identify risks — Call out single points of failure, data consistency risks, and scaling bottlenecks with mitigations.

Output Format

Deliver a structured architecture document with these sections:

  • Requirements Summary — Functional, non-functional, and constraints
  • Architecture Assessment — Detected pattern with confidence, issues, recommendations
  • System Diagram — Mermaid C4 or flowchart (component, layer, or deployment view)
  • Domain Model — Mermaid ER diagram with entity ownership
  • Module Boundaries — Table: Module, Responsibility, Owns Data, Exposes API
  • API Contracts — Key endpoints with method, path, request/response shapes
  • ADRs — Architecture Decision Records for key choices
  • Dependency Analysis — Total deps, coupling score, circular deps, outdated packages
  • Risks & Mitigations — Table: Risk, Impact, Likelihood, Mitigation

Frameworks & Best Practices

Architecture Pattern Selection

Team SizeRecommended Starting Point
1-3 developersModular monolith
4-10 developersModular monolith or service-oriented
10+ developersConsider microservices
RequirementRecommended Pattern
Rapid MVP developmentModular Monolith
Independent team deploymentMicroservices
Complex domain logicDomain-Driven Design
High read/write ratio differenceCQRS
Audit trail requiredEvent Sourcing
Third-party integrationsHexagonal / Ports & Adapters

Default for early startups: Modular monolith with clear module boundaries that can be extracted later. Microservices add operational overhead that kills small teams.

Monolith vs Microservices Checklist

Choose Monolith when: team is small (<10), domain boundaries are unclear, rapid iteration is the priority, shared database is acceptable.

Choose Microservices when: teams can own services end-to-end, independent deployment is critical, different scaling requirements per component, domain boundaries are well understood.

Hybrid approach: Start monolith. Extract a service only when a module has significantly different scaling needs, a team needs independent deployment, or technology constraints require separation.

Database Selection

Structured data with relationships or ACID needs points to SQL. Flexible/evolving schema or document-oriented data points to NoSQL. Quick reference: PostgreSQL (default for most apps), MongoDB (document store), Redis (caching/sessions), DynamoDB (serverless auto-scaling), TimescaleDB (time-series), CockroachDB/Spanner (global distribution).

ADR Format

Use five fields: Status (Proposed/Accepted/Deprecated/Superseded), Context (what prompted the decision), Decision (what was chosen and why), Consequences (trade-offs and remaining risks), Alternatives considered (what else was evaluated and why it lost).

Key Design Principles

  • Every entity has a clear owner (one module writes, others read via API)
  • Use UUIDs for primary keys if multi-service or future extraction is likely
  • Version APIs from day one (/v1/resource); paginate all list endpoints (cursor-based preferred)
  • Consistent error shapes: { "error": { "code": "...", "message": "..." } }
  • Design write operations for idempotency (idempotency keys)
  • Synchronous calls (HTTP/gRPC) for queries needing immediate confirmation; async events for notifications, analytics, and cross-service data sync
  • Avoid distributed transactions — use sagas or eventual consistency

Related Skills

  • tech-stack-eval — Chain when choosing specific technologies for the architecture
  • security-review — Chain to review the architecture for threat vectors before implementation
  • code-review — Chain after implementation to verify code matches architectural intent

Examples

Prompt: "I'm building a SaaS project management tool. 3 engineers. How should I architect it?"

Good output snippet:

Given your team of 3 and early stage, I recommend a modular monolith.
Domain modules:

1. Auth Module — user accounts, roles, sessions
2. Projects Module — workspaces, projects, permissions
3. Tasks Module — tasks, assignments, comments, activity log
4. Notifications Module — email digests, in-app notifications

Each module gets its own DB schema (auth.*, projects.*) and communicates
through internal function calls with typed interfaces — not HTTP. This
gives you service-like boundaries without deployment complexity.

Architecture Assessment:
  Detected pattern: Layered Architecture (confidence: 85%)
  ✓ controllers/  - Presentation layer
  ✓ services/     - Business logic layer
  ✓ repositories/ - Data access layer

Prompt: "Should we use WebSockets or SSE for real-time collaboration?"

Good output snippet:

## ADR-001: Use WebSockets for Real-Time Collaboration
- Status: Proposed
- Context: Document editor needs sub-200ms latency for cursor positions
  and concurrent edits across 2-50 users per document.
- Decision: WebSockets via Socket.io with Redis pub/sub for horizontal
  scaling. SSE only supports server-to-client; we need bidirectional
  communication for operational transforms.
- Consequences: Adds WebSocket infrastructure (sticky sessions or Redis
  adapter), ~2KB memory per connection. Team needs OT/CRDT knowledge.
- Alternatives: SSE + POST (simpler but higher edit latency),
  Firebase Realtime DB (vendor lock-in, cost at scale).

评价

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

评论

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

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

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

0 / 1000 字

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

同一仓库的技能

When the user wants to apply to startup accelerators, incubators, or fellowship programs. Also use when the user mentions "YC application", "Techstars", "accelerator", or "apply to programs".

中文简介正在准备中。当前显示原文说明。

shawnpang/startup-founder-skills3682026年3月17日 更新

When the user needs to write a monthly or quarterly investor update, prepare a board deck, or communicate company progress to stakeholders.

中文简介正在准备中。当前显示原文说明。

shawnpang/startup-founder-skills3682026年3月17日 更新

When the user needs to identify at-risk accounts, understand why customers are leaving, reduce churn rate, build health scores, design save plays, or create win-back campaigns.

中文简介正在准备中。当前显示原文说明。

shawnpang/startup-founder-skills3682026年3月17日 更新

When the user needs to set up or improve CI/CD pipelines — GitHub Actions, GitLab CI, deployment automation, or says "set up CI", "automate deployment", "add tests to pipeline", "fix my build".

中文简介正在准备中。当前显示原文说明。

shawnpang/startup-founder-skills3682026年3月17日 更新

When the user asks for a code review, shares code for feedback, or says "review this", "check my code", "what's wrong with this". Also activate when reviewing a pull request or diff.

中文简介正在准备中。当前显示原文说明。

shawnpang/startup-founder-skills3682026年3月17日 更新

When a founder needs to write cold emails or LinkedIn messages to prospects, partners, or investors. Activate when the user mentions cold email, outbound, prospecting, LinkedIn outreach, or needs help getting replies from people who don't know them.

中文简介正在准备中。当前显示原文说明。

shawnpang/startup-founder-skills3682026年3月17日 更新

查看 shawnpang 的全部技能

报告此技能的问题