Проект · плагин Claude Code · Open source · MIT

Brownspec: spec-driven для brownfield-кодбаз

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

Установка · Claude Code

Поставить и начать

Два шага в Claude Code — и плагин доступен. После init он один раз пробегает ваш код и записывает конвенции. Дальше на каждое изменение — три команды.

init · один разspec / design / tasks · на каждое изменениеинтервью возобновляется
Открыть на GitHub ↗
/plugin marketplace add yknnv/brownspec
/plugin install brownspec@brownspec

/brownspec:init            # раз на репо
/brownspec:spec ""  # интервью → spec.md
/brownspec:design          # blast radius → design.md
/brownspec:tasks           # деплойится по шагам → tasks.md
  • После init отредактируйте .brownspec/policies.md руками — этот файл плагин трогать не имеет права
  • Каждая фаза пишет на диск после каждого ответа: интервью переживает разрыв сессии
01 — ТЕЗИС

Тулинг предполагает пустой репозиторий. Ваш — не пустой.

GREENFIELD-ИНСТРУМЕНТЫ

Spec-driven разработка сошлась на трёх артефактах — requirements, design, tasks — по хорошим причинам. Что типовое тулинг предполагает: пустой репозиторий. Опишите, что хотите, — получите спецификацию, сгенерируйте код.

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

BROWNSPEC

Те же три артефакта, но для системы, которая уже работает. Что вокруг них устроено иначе:

  • Конвенции читаются из кода вместо декларации в форме
  • Design несёт blast radius изменения с провенансом
  • Правила организации живут в файле, который плагин переписывать не имеет права

Тезис маленький: спецификацию исправить — пять минут. Код, который агент уже написал, — нет.

02 — КАК ЭТО РАБОТАЕТ

Три артефакта на диске

Каждая фаза дописывает файл после каждого ответа. Прервать интервью и вернуться позже — норма.

/spec

Интервью → spec.md

Шесть вопросов, а не форма на сорок полей: спрашивается только то, чего репозиторий не может ответить сам. Плюс список политик, которых изменение касается.

/design

Blast radius → design.md

Что изменение затрагивает: файлы, публичные контракты, потребители, миграции, откат. С провенансом — где именно в коде это увидели.

/tasks

Шаги → tasks.md

Упорядоченные шаги, каждый деплойится отдельно. Без «сначала месяц не деплоим, потом релизим всё разом».

03 — СРАВНЕНИЕ

Чем отличается от Spec Kit и Kiro

Если проект стартует с нуля — используйте Spec Kit или Kiro. Первая фаза Brownspec — чтение кода, которого ещё нет.

Предполагает greenfield Читает ваши конвенции Blast radius Регуляторные профили
GitHub Spec Kit данетнетнет
Kiro (spec mode) частичнонетнетнет
Brownspec нетдада, с провенансомда, opt-in
04 — СДЕЛАТЬ ПО УМОЛЧАНИЮ

Чтобы плагин срабатывал сам, а не по памяти

Правила Brownspec стреляют, когда вы просите спеку. Они не стреляют, когда вы говорите «сделай это». Именно так задачи обычно и приходят.

Если хотите, чтобы spec-first был поведением по умолчанию, а не тем, что нужно вспомнить, — впишите правило в CLAUDE.md:

  • Задайте порог. «Всё через Brownspec» стреляет по опечаткам. Порог: публичный контракт, схема БД или больше одного модуля.
  • Явно опишите fire-и. Что запускает /brownspec:spec/brownspec:design/brownspec:tasks, а что — «просто сделать».
  • Явно опишите opt-out. «Просто сделай» на задаче выше порога — не значит «сделай». Значит «сказать, что нужна спека, и назвать команду».
## Specs

Изменение публичного контракта, схемы БД или
больше одного модуля идёт через Brownspec:
/brownspec:spec → /brownspec:design → /brownspec:tasks,
дальше — реализация по tasks.md.

Ниже порога — багфикс, правка копирайта, рефакторинг
внутри одного модуля — пишите код.

Если запрос «просто сделай» и изменение выше порога:
не начинайте. Скажите, что нужна спека, и назовите
команду.
05 — РЕГУЛЯТОРНЫЕ ПРОФИЛИ

152-ФЗ — только когда сами включите

В комплекте — публичные регуляции. Ничего не включается по умолчанию.

ЧТО ЛЕЖИТ В КОРОБКЕ

Профиль policies/ru/152-fz-pdn.md: семь правил про персональные данные под российским законом. Каждое — триггер, который фаза spec может сопоставить, требование и факты, которые спека обязана указать.

Дальше — GDPR. Как только релиз готов, добавится тем же способом.

КАК ВКЛЮЧАЕТСЯ

Профиль применяется только когда вы перечислили его в своей policies.md в списке profiles:. Пока не перечислили — плагин ведёт себя так, будто профиля не существует: ни вопросов, ни разделов в спеке, ни упоминаний в выводе.

Brownspec маршрутизирует, а не сертифицирует. Вывод — «изменение затрагивает PDN-03, поэтому в спеке нужны такие-то факты». Судить, соответствует ли реализация закону, будет ваш DPO или юрист, не плагин.

06 — FAQ

Частые вопросы

Что Brownspec делает такого, чего не делает Spec Kit или Kiro?
Spec Kit и Kiro предполагают чистый лист: опишите, что хотите, — получите спецификацию, сгенерируйте код. Brownspec, наоборот, специфицирует изменение работающей системы: читает конвенции из вашего кода вместо расспросов, кладёт в design blast radius, и держит регуляторные правила в отдельном файле, который сам плагин трогать не имеет права.
Что такое blast radius в design.md?
Явный список того, что затрагивает изменение: файлы, модули, публичные контракты, потребители, миграции данных. С провенансом — то есть с ссылками на код, из которого вывод сделан. Design перестаёт быть красивой картинкой и становится списком точек, где что-то может сломаться.
Почему conventions.md и policies.md — разные файлы?
conventions.md плагин генерирует и свободно перегенерирует. policies.md пишут люди — безопасность, архитектура — и плагин его никогда не переписывает. Смешать эти два файла — значит однажды получить регенерацию, которая тихо удалила контроль безопасности и оставила правдоподобно выглядящий документ.
Как включить профиль 152-ФЗ?
Ничего не включается автоматически. После /brownspec:init в вашем .brownspec/policies.md перечислите под profiles: тот, который нужен: ru/152-fz-pdn. Пока не перечислили — плагин ведёт себя так, будто профиля не существует: ни вопросов, ни разделов в спеке. Профиль маршрутизирует, но не сертифицирует: он указывает на статьи, а не заменяет юриста.
Как это ставить и с чего начинать?
В Claude Code: /plugin marketplace add yknnv/brownspec, затем /plugin install brownspec@brownspec. Один раз на репо: /brownspec:init — плагин пробегает код и записывает conventions.md. Потом на каждое изменение: /brownspec:spec «описание задачи»/brownspec:design/brownspec:tasks. Каждое интервью пишет на диск после каждого ответа, так что прерваться можно в любой момент.
Мне это подойдёт, если у меня новый проект?
Скорее нет. Первая фаза Brownspec — чтение кода, которого ещё нет. Для greenfield берите Spec Kit или Kiro. Brownspec отрабатывает свои затраты, когда код уже есть, у него есть потребители и его нельзя сломать.