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

mediator-pattern — скилл для Claude Code: посредник между компонентами

Скилл объясняет паттерн «посредник»: компоненты общаются через одну точку, а не напрямую. Пригодится, когда связей между объектами стало слишком много.

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

Что делает mediator-pattern

Скилл учит агента паттерну mediator: запросы проходят через центральный объект, который передаёт их дальше по назначению. В JavaScript посредником часто выступает обычный объект или функция. Компоненты при этом не знают друг о друге — только о посреднике.

Внутри есть разбор на примере чатрума: класс ChatRoom логирует сообщения, а User отправляет их через него, не обращаясь к другим пользователям. Второй пример — цепочка middleware в Express.js: колбэки получают req, res и next, правки в req видны по всей цепочке. Отдельно описано, когда паттерн не нужен: при малом числе участников, при риске превратить посредника в «божественный объект» и когда хватает observer или pub-sub.

Скилл срабатывает на файлы **/*.js и **/*.ts. Установка идёт через npx skills add или gh skill install — сам скилл ничего не запускает и не требует ключей. Смежные темы — module-pattern и singleton-pattern.

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

  • развязать компоненты, которые сейчас дёргают друг друга напрямую
  • собрать цепочку middleware с общим доступом к запросу
  • объяснить агенту, когда посредник превращается в god object
  • выбрать между посредником и pub-sub для конкретного модуля
  • показать на примере чатрума, как выглядит центральная точка связи

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

  • Помоги переписать этот модуль на паттерн mediator, чтобы компоненты не знали друг о друге
  • Собери цепочку middleware для Express, которая добавляет заголовок и логирует его дальше
  • Стоит ли здесь использовать mediator или хватит observer? Разбери мой код

Как установить mediator-pattern

1Через Skills CLI (Vercel)

npx skills add PatternsDev/skills --skill mediator-pattern -a claude-code

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

~/.claude/skills/mediator-pattern/SKILL.md

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

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

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

command-pattern Обучает агента паттерну «Команда» для JavaScript и TypeScript. Помогает разделить вызов операции и её выполнение, настроить очередь задач или историю отмены. CX Codex +1 645установок singleton-pattern Обучает реализации паттерна «Одиночка» в JavaScript и TypeScript для создания единого экземпляра класса. Пригодится при настройке общих ресурсов или глобальной конфигурации. CX Codex +1 637установок observer-pattern Скилл объясняет паттерн наблюдателя и подсказывает агенту, как строить слабосвязанную подписку на события в JS и TS. CX Codex +1 638установок factory-pattern Учит агента создавать объекты через фабричные функции. Пригодится, когда логика создания объектов зависит от конфигурации или окружения. CX Codex +1 634установок module-pattern Обучает ИИ-агента делить JavaScript и TypeScript на изолированные модули через ES2015. Помогает скрыть внутренние переменные и настроить чистый экспорт. CX Codex +1 631установок islands-architecture Скилл объясняет паттерн островной архитектуры и частичной гидратации. Пригодится, когда страница почти вся статичная, а интерактив нужен точечно. CX Codex +1 624установок provider-pattern Учит агента выносить общие данные в React Context и раздавать их через Provider, когда пропсы приходится тянуть через десяток компонентов. CX Codex +1 620установок proxy-pattern Скилл объясняет паттерн Proxy в JavaScript: перехват чтения и записи свойств объекта, валидация и логирование. Пригодится, когда агенту нужно править такой код. CX Codex +1 612установок

Похожие

express-typescript Mindrally Правила для агента, который пишет API на Express.js и TypeScript: структура проекта, middleware, валидация и безопасность. CX Codex +1 1 400установок dotnet-design-pattern-review официальный github Проверяет выбранный C#/.NET-код на применение паттернов проектирования и предлагает правки без изменения файлов. Подходит для ревью архитектуры проекта. 11 609установок nodejs-express-server aj-geddes Скилл для сборки Express.js-серверов: маршруты, цепочки middleware, JWT-аутентификация, подключение к базе. Пригодится, когда пишете REST API на Node.js. CX Codex +1 3 300установок pattern-library Owl-Listener Скилл оформляет повторяющиеся UX-решения как записи паттернов: от проблемы и решения до примеров, доступности и связанных паттернов. CX Codex +1 2 100установок koa-typescript Mindrally Задаёт агенту правила разработки API на Koa.js и TypeScript: слоистая модель middleware, async/await, структура проекта. CX Codex +1 704установок bun-hono-integration secondsky Скилл подсказывает агенту, как строить API на Hono под Bun: маршруты, middleware, валидация через Zod, RPC-клиент. Пригодится, когда проект уже крутится на Bun. CX Codex +1 452установок

Рядом в теме «Языки программирования»

Все скиллы по теме «Языки программирования» →

Вопросы о mediator-pattern

Как установить mediator-pattern в Claude?

Выполните npx skills add PatternsDev/skills --skill mediator-pattern -a claude-code. Файл скилла окажется в ~/.claude/skills/mediator-pattern/SKILL.md.

Что делает mediator-pattern?

Описывает паттерн «посредник»: компоненты отправляют запросы в центральный объект, а тот передаёт их нужным обработчикам. Внутри — примеры на чатруме и middleware Express.js.

Когда этот паттерн лучше не брать?

Скилл прямо перечисляет случаи: мало участников и прямая связь проще, посредник рискует стать монолитным объектом, либо observer и pub-sub уже дают нужную развязку.

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

SKILL.md · MIT
---
name: mediator-pattern
description: Teaches the mediator pattern for centralized component communication. Use when multiple components need to communicate and direct coupling between them creates complexity or tight dependencies.
paths:
  - "**/*.js"
  - "**/*.ts"
license: MIT
metadata:
  author: patterns.dev
  version: "1.1"
related_skills:
  - "module-pattern"
  - "singleton-pattern"
---

# Mediator/Middleware Pattern

The mediator pattern makes it possible for components to interact with each other through a central point: the mediator. Instead of directly talking to each other, the mediator receives the requests, and sends them forward! In JavaScript, the mediator is often nothing more than an object literal or a function.

You can compare this pattern to the relationship between an air traffic controller and a pilot. Instead of having the pilots talk to each other directly, which would probably end up being quite chaotic, the pilots talk the air traffic controller. The air traffic controller makes sure that all planes receive the information they need in order to fly safely, without hitting the other airplanes.

## When to Use

- Use this when multiple objects need to communicate but direct many-to-many relationships would be chaotic
- This is helpful for implementing middleware chains (e.g., Express.js middleware)

## When NOT to Use

- When direct communication between two components is simpler and the system has few participants
- When the mediator itself becomes a monolithic "god object" that's hard to maintain
- When event-driven patterns (observer/pub-sub) provide sufficient decoupling without a central coordinator

## Instructions

- Create a central mediator that processes requests and forwards them to the appropriate handlers
- Use the middleware pattern to chain processing functions that can modify requests/responses
- Keep individual components unaware of each other; they only know about the mediator

## Details

Although we're hopefully not controlling airplanes in JavaScript, we often have to deal with multidirectional data between objects. The communication between the components can get rather confusing if there is a large number of components.

Instead of letting every object talk directly to the other objects, resulting in a many-to-many relationship, the object's requests get handled by the mediator. The mediator processes this request, and sends it forward to where it needs to be.

A good use case for the mediator pattern is a chatroom! The users within the chatroom won't talk to each other directly. Instead, the chatroom serves as the mediator between the users.

```js
class ChatRoom {
  logMessage(user, message) {
    const time = new Date();
    const sender = user.getName();

    console.log(`${time} [${sender}]: ${message}`);
  }
}

class User {
  constructor(name, chatroom) {
    this.name = name;
    this.chatroom = chatroom;
  }

  getName() {
    return this.name;
  }

  send(message) {
    this.chatroom.logMessage(this, message);
  }
}
```

We can create new users that are connected to the chat room. Each user instance has a `send` method which we can use in order to send messages.

### Case Study

[Express.js](https://expressjs.com) is a popular web application server framework. We can add callbacks to certain routes that the user can access.

Say we want add a header to the request if the user hits the root `'/'`. We can add this header in a middleware callback.

```js
const app = require("express")();

app.use("/", (req, res, next) => {
  req.headers["test-header"] = 1234;
  next();
});
```

The `next` method calls the next callback in the request-response cycle. We'd effectively be creating a chain of middleware functions that sit between the request and the response, or vice versa.

Let's add another middleware function that checks whether the `test-header` was added correctly. The change added by the previous middleware function will be visible throughout the chain.

```js
const app = require("express")();

app.use(
  "/",
  (req, res, next) => {
    req.headers["test-header"] = 1234;
    next();
  },
  (req, res, next) => {
    console.log(`Request has test header: ${!!req.headers["test-header"]}`);
    next();
  }
);
```

Perfect! We can track and modify the request object all the way to the response through one or multiple middleware functions.

Every time the user hits a root endpoint `'/'`, the two middleware callbacks will be invoked.

The middleware pattern makes it easy for us to simplify many-to-many relationships between objects, by letting all communication flow through one central point.

## Source

- [patterns.dev/vanilla/mediator-pattern](https://patterns.dev/vanilla/mediator-pattern)

### References

- [Docs - Express](https://expressjs.com)
- [Mediator Pattern - OO Design](https://www.oodesign.com/mediator-pattern.html)

© patterns.dev · MIT · PatternsDev/skills

Смотрите также

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

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