К основному содержанию
скилл CX Codex

software-patterns — скилл для Claude Code: выбор архитектурных

Помогает выбрать паттерн под конкретную проблему: связанность, отказоустойчивость, границы сервисов. Пригодится, когда код трудно тестировать или сервисы вызывают друг друга по кругу.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add bobmatnyc/claude-mpm-skills --skill software-patterns -a claude-code
Открыть на GitHub

Что делает software-patterns

Скилл не даёт каталог паттернов для заучивания. Он ведёт по дереву решений: сначала определяешь класс проблемы, потом смотришь, какой паттерн её закрывает. Базовые — внедрение зависимостей и сервис-ориентированная архитектура, их советует применять по умолчанию. Ситуативные — репозиторий, доменные события, слой антикоррупции, circuit breaker — подключаются, когда появился конкретный симптом.

Внутри шесть справочных файлов: foundational-patterns.md, situational-patterns.md, anti-patterns.md, decision-trees.md, examples.md и code-smell-signals.md. Последний сопоставляет низкоуровневые запахи кода — большие switch, вложенные циклы, переприсваивание параметров, высокая связанность — с архитектурной проблемой и паттерном, который её лечит. Примеры даны псевдокодом без привязки к языку.

Есть раздел с красными флагами. Если тянет добавить все паттерны сразу или оправдать решение фразой «это best practice», скилл останавливает и просит назвать конкретную проблему. Поэтому для проекта без признаков связанности он ничего не изменит — и это нормально.

Какие задачи решает

  • развязать классы, которые сами создают свои зависимости
  • вынести работу с базой за границу сервиса
  • разорвать цикл вызовов между сервисами через доменные события
  • защитить систему от каскадных отказов внешнего API
  • отделить чужой API от своей модели данных слоем антикоррупции

Примеры запросов агенту

  • код тяжело тестировать, потому что сервисы создают зависимости сами — какой паттерн применить?
  • сервис A вызывает B, B вызывает C, C снова вызывает A. как разорвать цикл?
  • внешний API меняет поля и ломает наш код. что поставить между ними?

Как установить software-patterns

1Через Skills CLI (Vercel)

npx skills add bobmatnyc/claude-mpm-skills --skill software-patterns -a claude-code

2Вручную: положить файлы

~/.claude/skills/software-patterns/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/software-patterns/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о software-patterns

Как установить software-patterns в Claude?

Выполни npx skills add bobmatnyc/claude-mpm-skills --skill software-patterns -a claude-code. После этого файл скилла окажется в ~/.claude/skills/software-patterns/SKILL.md.

Что делает software-patterns?

Сравнивает компромиссы архитектурных паттернов и рекомендует подходящий под твою проблему: внедрение зависимостей, SOA, репозиторий, доменные события, circuit breaker, слой антикоррупции.

Скилл сам вызывает модель?

Нет, у него стоит disable-model-invocation: true и user-invocable: false. Он подключается как справочник, а не как отдельная команда.

Исходный текст

SKILL.md · MIT
---
name: software-patterns
description: "Compare tradeoffs and recommend architectural patterns — dependency injection, service-oriented architecture, repository, domain events, circuit breaker, and anti-corruption layer. Use when choosing between design patterns, planning microservices boundaries, evaluating system design alternatives, or asking 'which pattern should I use' for a specific coupling or resilience problem."
user-invocable: false
disable-model-invocation: true
version: 1.1.0
updated: "2026-06-15"
languages: all
progressive_disclosure:
  entry_point:
    summary: "Compare tradeoffs and recommend architectural patterns for coupling, resilience, and boundary problems"
    when_to_use: "When choosing between design patterns, planning microservices, evaluating dependency injection vs service locator, or deciding how to decouple services"
    quick_start: "1. Identify the problem class 2. Check decision tree 3. Apply foundational patterns (DI+SOA) 4. Layer situational patterns as needed"
  references:
    - foundational-patterns.md
    - situational-patterns.md
    - anti-patterns.md
    - decision-trees.md
    - examples.md
    - code-smell-signals.md
tags:
  - architecture
  - patterns
  - design-patterns
  - dependency-injection
  - service-oriented-architecture
  - microservices
  - system-design
---

# Software Patterns Primer

## Overview

Architectural patterns solve specific structural problems. This skill provides a decision framework for when to apply each pattern, not a catalog to memorize.

**Core philosophy:** Patterns solve problems. No problem? No pattern needed.

## When to Use This Skill

Activate when:
- Designing a new system or major feature
- Adding external service integrations
- Code becomes difficult to test or modify
- Services start calling each other in circles
- Failures in one component cascade to others
- Business logic scatters across multiple locations

## Pattern Hierarchy

### Foundational (Apply by Default)

These patterns provide the structural foundation for maintainable systems. Apply unless you have specific reasons not to.

| Pattern | Problem Solved | Signal to Apply |
|---------|---------------|-----------------|
| **Dependency Injection** | Tight coupling, untestable code | Classes instantiate their own dependencies |
| **Service-Oriented Architecture** | Monolithic tangles, unclear boundaries | Business logic scattered, no clear ownership |

**DI quick example — before and after:**

```python
# BEFORE: tight coupling, hard to test
class OrderService:
    def __init__(self):
        self.db = PostgresDatabase()       # concrete dependency
        self.mailer = SmtpMailer()         # concrete dependency

# AFTER: dependencies injected, easily testable
class OrderService:
    def __init__(self, db: Database, mailer: Mailer):
        self.db = db
        self.mailer = mailer
# In tests: OrderService(db=FakeDatabase(), mailer=FakeMailer())
```

### Situational (Apply When Triggered)

These patterns address specific problems. Don't apply preemptively.

| Pattern | Problem Solved | Signal to Apply |
|---------|---------------|-----------------|
| **Repository** | Data access coupling | Services know about database details |
| **Domain Events** | Circular dependencies, temporal coupling | Service A calls B calls C calls A |
| **Anti-Corruption Layer** | External system coupling | External API changes break your code |
| **Circuit Breaker** | Cascading failures | One slow service takes down everything |

→ [Foundational Patterns Detail](references/foundational-patterns.md)
→ [Situational Patterns Detail](references/situational-patterns.md)

## Quick Decision Tree

```
Is code hard to test?
├─ Yes → Apply Dependency Injection
└─ No → Continue

Is business logic scattered?
├─ Yes → Apply Service-Oriented Architecture
└─ No → Continue

Do services know database details?
├─ Yes → Apply Repository Pattern
└─ No → Continue

Do services call each other in cycles?
├─ Yes → Apply Domain Events
└─ No → Continue

Does external API change break your code?
├─ Yes → Apply Anti-Corruption Layer
└─ No → Continue

Does one slow service break everything?
├─ Yes → Apply Circuit Breaker
└─ No → Current patterns sufficient
```

→ [Complete Decision Trees](references/decision-trees.md)

## Implementation Priority

When starting a new system:

1. **First:** Establish DI container/pattern
2. **Second:** Define service boundaries (SOA)
3. **Third:** Add Repository for data access
4. **Then:** Layer situational patterns as problems emerge

When refactoring existing system:

1. **First:** Identify the specific pain point
2. **Second:** Apply the minimal pattern that solves it
3. **Third:** Validate improvement before adding more

## Navigation

### Pattern Details
- **[Foundational Patterns](references/foundational-patterns.md)**: DI and SOA implementation guides, when to deviate
- **[Situational Patterns](references/situational-patterns.md)**: Repository, Domain Events, ACL, Circuit Breaker details

### Decision Support
- **[Decision Trees](references/decision-trees.md)**: Complete flowcharts for pattern selection
- **[Anti-Patterns](references/anti-patterns.md)**: Common misapplications and how to recognize them
- **[Code-Smell Signals](references/code-smell-signals.md)**: Low-level code smells (large switches, nested loops, parameter reassignment, high complexity/coupling) mapped to the architectural problems they signal and the pattern that fixes each — derived from CAST Highlight `_multi` quality indicators (https://doc.casthighlight.com/)

### Implementation
- **[Examples](references/examples.md)**: Language-agnostic pseudocode for each pattern combination

## Red Flags - STOP

STOP when:
- "Let me add all these patterns upfront" → Apply only what solves current problems
- "This pattern is best practice" → Best practice for what problem?
- "We might need this later" → YAGNI - add when needed
- "Service Locator is simpler" → Hidden dependencies cause testing pain
- "I'll just call this service directly" → Consider if events would decouple better
- "External API is stable, no need for ACL" → APIs always change eventually

**ALL of these mean: STOP. Identify the specific problem first.**

## Integration with Other Skills

- **test-driven-development**: DI enables testability; TDD validates pattern application
- **systematic-debugging**: Clear boundaries (SOA) simplify debugging
- **root-cause-tracing**: Well-structured services have clearer call chains

## Pattern Combinations

Common effective combinations:

| Scenario | Patterns |
|----------|----------|
| New microservice | DI + SOA + Repository |
| External API integration | DI + ACL + Circuit Breaker |
| Event-driven system | DI + SOA + Domain Events |
| Data-heavy application | DI + SOA + Repository + Unit of Work |

---

**Remember:** Patterns exist to solve problems. Start with the problem, not the pattern.

© bobmatnyc · MIT · bobmatnyc/claude-mpm-skills

Похожие скиллы

Всё по теме «Бэкенд и API» →
architect-review sickn33 Скилл для случаев, когда агенту нужно оценить архитектуру целиком: риски, компромиссы, план проверки. CX Codex +1 1 300установок golang-design-patterns samber Скилл подсказывает идиоматичные Go-паттерны для API, жизненного цикла ресурсов, graceful shutdown и архитектуры. Пригодится при проектировании и ревью кода. CX Codex +1 42 100установок design-patterns-implementation aj-geddes Помогает агенту подобрать паттерн под архитектурную задачу: Singleton, Factory, Observer, Strategy и другие. Пригодится при рефакторинге и разборе ревью. CX Codex +1 595установок design-patterns rtk-ai Подбирает архитектурные паттерны Rust для CLI-модулей фильтрации RTK. Помогает структурировать парсеры вывода, конфигурации и работу с ресурсами. CX Codex +1 1 900установок cloud-design-patterns официальный github Скилл для GitHub Copilot с 42 паттернами проектирования распределённых систем. Пригодится, когда проектируешь или разбираешь архитектуру облачной нагрузки. 2 200установок rust-patterns affaan-m Задаёт правила идиоматичного Rust: управление владением, типизированные ошибки, сопоставление с образцом и трейты. Пригодится при написании, рефакторинге и ревью Rust-кода. CX Codex +1 5 100установок

Из того же набора65

kubernetes Плейбук по работе с Kubernetes: подсказывает, как безопасно выкатывать сервисы, ставить пробы и разбирать сбои через kubectl. CX Codex +1 383установок systematic-debugging Скилл ведёт агента от воспроизведения ошибки до проверки исправления. Пригодится, когда причина сбоя или неожиданного поведения неясна. CX Codex +1 382установок vue Скилл по Vue 3 для ИИ-агента: Composition API, реактивность, однофайловые компоненты, Vue Router, Pinia, TypeScript и Vite. Пригодится, когда агент пишет фронтенд на Vue. CX Codex +1 381установок api-documentation Набор правил, по которым агент пишет докстринги, JSDoc, Godoc и описания эндпоинтов. Пригодится, когда API документируют в нескольких агентах и текст расползается. CX Codex +1 379установок nextjs-v16 Скилл ведёт миграцию проекта на Next.js 16: асинхронные request API, opt-in кеширование через "use cache" и Turbopack. Пригодится, когда обновляете существующее приложение. CX Codex +1 371установок testing-anti-patterns Скилл помогает находить ошибки в тестах: проверки поведения моков, тестовые методы в продакшене и неполные заглушки. CX Codex +1 368установок vercel-deployments-builds Описывает жизненный цикл деплоя на Vercel: сборки, превью, фазы релиза и откат. Пригодится, когда настраиваешь вывод сборки или контролируешь релизы. CX Codex +1 368установок stacked-prs Скилл учит агента собирать цепочки зависимых pull request'ов: каждая ветка растёт из предыдущей, а не из main. Пригодится, когда большую фичу разбили на этапы. CX Codex +1 362установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой