designing-systems

Frame design problems and document architecture decisions as ADRs.

Updated Mar 2, 2026
One-click install
npx skills add https://github.com/maestria-co/ai-playbook --skill designing-systems-maestria-co
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: designing-systems
Source: https://github.com/maestria-co/ai-playbook/tree/main/skills/designing-systems
Command: npx skills add https://github.com/maestria-co/ai-playbook --skill designing-systems-maestria-co

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Makes a system design or technology decision and documents it as an Architecture Decision Record (ADR). Use when: introducing a new technology or service, designing a new system component (schema, API contract, service boundary), refactoring at non-trivial scale, or resolving competing technical approaches. Do not use when: the decision is an implementation detail within an already-decided approach, a naming convention choice, or a one-off decision with obvious rationale.

Core Features & Use Cases

  • Provide a structured, auditable record of architectural decisions to prevent relitigations.
  • Guide teams through problem framing, option analysis, and rationale, with clear ADR artifacts.
  • Supports updating or superseding prior ADRs to reflect evolving decisions and maintain traceability.

Quick Start

Follow Step 1 through Step 4 to document the decision as an ADR under .context/decisions/.

Frequently Asked Questions about designing-systems

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I document architecture decisions to prevent team relitigations?

Document architecture decisions by creating an Architecture Decision Record (ADR) that frames the problem, evaluates viable options, and justifies the chosen approach. This provides a structured, auditable record under .context/decisions/ to prevent relitigating resolved technical debates.

When should I write an ADR for system design?

Write an ADR when introducing a new technology or service, designing system components like schema or API contracts, refactoring at non-trivial scale, or resolving competing technical approaches. Do not use it for implementation details, naming conventions, or one-off decisions with obvious rationale.

What should be included in an Architecture Decision Record?

An Architecture Decision Record should include the context of the design problem, the chosen decision, evaluated options, the rationale justifying the approach, and the resulting consequences. This structure ensures the technical reasoning is auditable and traceable.

How do I update or supersede a prior ADR when technology decisions change?

Update or supersede prior ADRs to reflect evolving decisions and maintain traceability. By documenting the new context, options, and rationale in a new Architecture Decision Record, teams keep an auditable history of why previous technical approaches were replaced.

Does this approach work for documenting API contract and service boundary decisions?

Yes, documenting API contracts and service boundaries is a primary use case for an ADR. Framing the design problem, evaluating service boundary options, and recording the rationale provides clear architectural guidance for system design.

What is the best way to evaluate competing technical approaches during a refactor?

The best way to evaluate competing technical approaches during a non-trivial refactor is to frame the design problem, evaluate at least two viable options, and justify the chosen approach in an Architecture Decision Record to ensure the reasoning is auditable.