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

principle-separate-before-serializing-shared-state: скилл Claude Code

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

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add backnotprop/pstack --skill principle-separate-before-serializing-shared-state -a claude-code
Открыть на GitHub

Что делает principle-separate-before-serializing-shared-state

Параллельная запись в общий файл, ветку или объект состояния часто приводит к гонкам данных, которые трудно воспроизвести. Этот скилл формулирует чёткое правило: вместо добавления мьютексов или инструкций нужно убрать саму общую точку записи. Каждому исполнителю выделяется собственный файл, ключ или каталог, а объединение данных переносится на этап чтения. Например, два процесса пишут в indexer-state.json и metrics-state.json, а не в общий state.json.

Структурная сериализация через lockfile, последовательные фазы, модель одного писателя или CAS подключается только тогда, когда один общий объект записи неизбежен. Требование «нам нужен лок» скилл предлагает считать признаком сомнительной архитектуры, а не ответом по умолчанию.

В метаданных скилла задан параметр disable-model-invocation: true. Из-за этого агент не вызывает его динамически как инструмент, а использует как постоянное архитектурное ограничение при работе с кодом.

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

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

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

  • Проверь архитектуру параллельных воркеров по principle-separate-before-serializing-shared-state и раздели state.json
  • Примени правило principle-separate-before-serializing-shared-state для организации записи логов индексатора

Как установить principle-separate-before-serializing-shared-state

1Через Skills CLI (Vercel)

npx skills add backnotprop/pstack --skill principle-separate-before-serializing-shared-state -a claude-code

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

~/.claude/skills/principle-separate-before-serializing-shared-state/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/principle-separate-before-serializing-shared-state/

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

Вопросы о principle-separate-before-serializing-shared-state

Как установить principle-separate-before-serializing-shared-state в Claude Code?

Выполните в терминале команду npx skills add backnotprop/pstack --skill principle-separate-before-serializing-shared-state -a claude-code.

Зачем нужен этот скилл?

Он задаёт архитектурный принцип: при параллельной работе агентов нужно сначала изолировать изменяемые данные (например, отдельные файлы вместо одного общего), а блокировки применять только как крайнюю меру.

Что означает параметр disable-model-invocation: true в этом скилле?

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

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

SKILL.md · MIT
---
name: principle-separate-before-serializing-shared-state
description: "Apply when concurrent actors might write to the same file, branch, key, or state object. Eliminate the sharing first; serialize structurally only when one shared writer is a real invariant."
disable-model-invocation: true
---

# Separate Before Serializing Shared State

When concurrent actors might share mutable state, first ask whether they need the same mutable object. If not, eliminate the sharing. When sharing is real, enforce serialization structurally: lockfiles, sequential phases, exclusive ownership. Instructions and conventions are not concurrency control.

**Why:** Concurrent writes to shared state create race conditions that are intermittent, hard to reproduce, and expensive to debug.

**Pattern:**
1. **Identify shared mutable state** (files both read and write, branches both push to, APIs both define and consume).
2. **Default: eliminate the shared write target.** Ask: do these actors need one canonical object, or are they publishing independent facts? Give each actor its own owned file, key, branch, or state directory, and merge only at the read/reporting boundary. Two workers writing their own `lastX` field into one `state.json` is still shared mutation. `indexer-state.json` + `metrics-state.json` is not.
3. **Only when one shared write target is a real invariant, serialize access structurally** (lockfiles, sequential phases, single-writer actor, or atomic compare-and-swap). Treat "we need a lock" as a design smell to check, not as the default answer.

© backnotprop · MIT · backnotprop/pstack

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

Всё по теме «Код-ревью и рефакторинг» →
compose-state-and-effects chrisbanes Скилл помогает проектировать и проверять владение состоянием в Jetpack Compose. Он распределяет стейт по уровням и подбирает эффекты под их жизненный цикл. CX Codex +1 1 100установок zustand-state-management Mindrally Задаёт правила архитектуры сторов Zustand в React и TypeScript: от нарезки слайсов до SSR и тестов. Помогает избежать лишних ререндеров и ошибок гидратации. CX Codex +1 959установок legend-state-best-practices LegendApp Скилл задаёт правила работы с @legendapp/state: где хранить состояние, как подписываться и что делать с персистентностью. Пригодится при рефакторинге и аудите реактивного кода. CX Codex +1 475установок state-management agent-skills Скилл с готовыми паттернами TanStack Query v5 и Zustand v5: запросы, кеш, мутации, оптимистичные обновления и клиентские сторы. CX Codex +1 783установок frontend-state-management aj-geddes Скилл для работы с состоянием фронтенда: подсказывает, как организовать Redux, MobX, Zustand или Context API в приложении. CX Codex +1 480установок cmux-architecture manaflow-ai Скилл задаёт правила разделения кода cmux на пакеты Swift, инверсии зависимостей и многопоточности Swift 6. Помогает переносить модули без циклических связей. CX Codex +1 4 900установок

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

no-comments Скилл находит и удаляет бесполезные комментарии в коде, а спорные случаи выносит на ваше решение. Пригодится при чистке диффа перед ревью. CX Codex +1 5 200установок teach Скилл объясняет код и архитектуру простыми словами без лишней воды. Он запускает субагенты how и why, собирая устройство механизма и причины решений в один связный ответ. CX Codex +1 5 100установок tdd Скилл заставляет агента сначала написать падающий тест на баг, а потом править код. Включается только когда тест дешёвый и очевидный. CX Codex +1 5 100установок principle-experience-first Скилл-принцип, который смещает приоритет при продуктовых и UX-решениях в сторону пользователя. Пригодится, когда спорят о скоупе фич. CX Codex +1 5 100установок principle-attack-the-premise Скилл помогает проверить общую предпосылку после нескольких неудачных исправлений. Он нужен, когда новые фиксы проходят тот же барьер и снова ломаются. CX Codex +1 5 100установок principle-foundational-thinking Набор принципов на этап до написания логики: выбрать типы и структуры данных, навести порядок в каркасе, проверить общее состояние у конкурентных акторов. CX Codex +1 5 100установок correct Находит повторяющиеся ошибки агентов в репозитории и устраняет их через архитектуру, типы или линтеры. Пригодится, когда ИИ раз за разом наступает на одни и те же грабли. CX Codex +1 4 200установок benchmark-checklist Скилл задаёт агенту список вопросов, которые нужно закрыть доказательствами из прогона, прежде чем докладывать об ускорении или регрессии. CX Codex +1 4 100установок

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

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