TIP
GitHub: https://github.com/Fission-AI/OpenSpec · Лицензия MIT · Node.js 20.19.0+
Для старта | примерно 15 минут | Вы освоите ключевые концепции OpenSpec (Delta Specs, граф зависимостей артефактов), процесс инициализации, workflow OPSX (propose → apply → archive), а также параллельное управление множественными изменениями
Обзор проекта
Сначала признаем одну вещь: сталкивались ли вы с таким, когда используете AI-программирующий ассистент — чатитесь, и AI начинает править то, что вы изначально не планировали менять; или вы меняете контекст диалога, и AI полностью забывает, о чём говорилось раньше; или каждый раз, когда просите AI написать новую функцию, полученное вообще не совпадает с тем, что вам нужно.
Эти проблемы не в том, что AI слишком глупый, а в том, что** требования никогда не были «подписаны и зафиксированы»**. Они существуют только в истории чата — а пространство для свободного творчества AI слишком велико.
OpenSpec делает всё предельно просто: прежде чем вы начнёте писать код, заставьте человека и AI согласовать спецификацию, а затем AI действует по этой спецификации. Его разработала Fission-AI; он поддерживает 20+ AI-инструментов для программирования (Claude Code, Cursor, Windsurf и т. п.) и по сути добавляет AI-программирующему ассистенту лёгкий слой управления спецификациями.
Целевая аудитория
- Разработчики, которые ежедневно используют AI-программирующие ассистенты
- Инженеры, которые в командной работе мучаются из‑за того, что человек и AI по‑разному понимают требования
- Продакт-менеджеры, которые хотят получать более контролируемый результат от AI
Ключевые зависимости и окружение
- Node.js 20.19.0+
TIP
Пользователям macOS рекомендуется управлять версиями Node с помощью nvm: одной командой переключение версии — nvm install 20 && nvm use 20
Полное дерево структуры проекта
openspec/
├── specs/ # текущие спецификации поведения системы (по доменам)
│ └── <domain>/spec.md
├── changes/ # предложения изменений (по папке на каждое изменение)
│ ├── <change-name>/
│ │ ├── proposal.md # мотивация + рамки + подход/решение
│ │ ├── specs/ # Delta-спецификации (ADDED/MODIFIED/REMOVED)
│ │ │ └── <domain>/spec.md
│ │ ├── design.md # технический дизайн
│ │ └── tasks.md # чек-лист проверки реализации
│ └── archive/ # архивная история
└── config.yaml # конфигурация проекта (опционально)
Пошагово
Шаг 1: Глобальная установка OpenSpec
npm install -g @fission-ai/openspec@latest
После установки проверьте:
openspec --version
# 1.2.0
WARNING
Версия Node.js должна быть >= 20.19.0; для более старых версий появится SyntaxError. Если столкнулись с этой проблемой — сначала обновите Node: nvm install 20 && nvm use 20
Шаг 2: Инициализация проекта
Перейдите в каталог вашего проекта и выполните команду инициализации:
cd your-project
openspec init
Эта команда делает три вещи:
- Создаёт структуру каталога
openspec/ - Генерирует AI-файлы умений в
.claude/(чтобы ассистент распознавал команды вида/opsx:*) - Спрашивает, хотите ли вы создать конфигурационный файл проекта
config.yaml(опционально — для внедрения контекста проекта)
После завершения инициализации в вашем проекте появятся такие папки:
openspec/
├── specs/ # текущие спецификации поведения системы (пустой каталог, ждёт заполнения)
├── changes/ # директория предложений изменений (пустой каталог)
└── config.yaml # конфигурация проекта (если вы выбрали создание)
Шаг 3: Включение расширенного workflow OPSX
Только что установленный OpenSpec по умолчанию работает в режиме core; доступны всего 4 команды: propose, explore, apply, archive. Если вы хотите использовать полноценный workflow (включая new, continue, ff, verify, bulk-archive и т. п.), выполните:
openspec config profile
# выбрать expanded или full
openspec update
openspec update пересоздаст AI-файлы умений на основе выбранного profile, чтобы в диалогах с AI можно было использовать больше команд.
TIP
Не уверены, какой сейчас profile? Запустите openspec config show.
Шаг 4: Создайте первое изменение — добавим тёмный режим
Теперь заставим AI помочь создать изменение. Возьмём пример: «добавить тёмный режим в приложение» — просто скажите AI:
/opsx:propose add-dark-mode
AI автоматически создаст 4 файла Artifact в openspec/changes/add-dark-mode/:
openspec/changes/add-dark-mode/
├── proposal.md # зачем это изменение? рамки? подход?
├── specs/
│ └── ui/spec.md # Delta-спецификация для UI
├── design.md # как спроектировать техническое решение?
└── tasks.md # что именно нужно сделать? шаг за шагом
proposal.md выглядит так (AI генерирует автоматически; вы с AI можете вместе править):
# Proposal: Add Dark Mode
## Intent
Пользователь просит добавить тёмный режим, чтобы снизить усталость глаз при использовании ночью.
## Scope
- Добавить в настройках кнопку переключения темы
- Поддерживать определение системных предпочтений
- Сохранять предпочтение в localStorage
## Approach
Использовать CSS-переменные для тем, а состояние управлять через React Context.
specs/ui/spec.md — это ключевая Delta-спецификация в формате ниже:
# Delta for UI
## ADDED Requirements
### Requirement: Theme Selection
СИСТЕМА SHALL позволит пользователю переключаться между светлой и тёмной темами.
#### Сценарий: ручное переключение
- GIVEN Пользователь находится на любой странице
- WHEN Пользователь нажимает кнопку переключения темы
- THEN Тема меняется сразу, а предпочтение сохраняется между сессиями
#### Сценарий: системное предпочтение
- GIVEN У пользователя нет сохранённых предпочтений
- WHEN Приложение загружается
- THEN Используется цветовая схема по умолчанию, заданная системой
TIP
Суть Delta-спецификации — «изменение»: она описывает только то, что добавляется, изменяется и удаляется. При архивировании эти Delta будут объединены в основной файл спецификаций.
tasks.md — чек-лист реализации:
# Tasks
## 1. Theme Infrastructure
- [ ] 1.1 Создать ThemeContext (состояние light/dark)
- [ ] 1.2 Добавить определения CSS-переменных для цветов
- [ ] 1.3 Реализовать сохранение в localStorage
## 2. UI Components
- [ ] 2.1 Создать компонент ThemeToggle
- [ ] 2.2 Добавить кнопку переключения на страницу настроек
- [ ] 2.3 Добавить быстрый переключатель в Header
## 3. Styling
- [ ] 3.1 Определить палитру для тёмной темы
- [ ] 3.2 Сделать так, чтобы существующие компоненты использовали CSS-переменные
Шаг 5: Выполнение задач реализации
После подтверждения, что спецификация корректна, запускаем реализацию:
/opsx:apply
AI будет проверять задачи из tasks.md по одной: выполняет — ставит галочку. Вы заметите, что поведение AI изменилось: он больше не «вольничает», а строго продвигается по порядку, заданному tasks.md. Если в процессе реализации выяснится, что в дизайне есть проблема, можно прямо изменить design.md, а затем снова продолжить apply — AI подхватит автоматически.
Шаг 6: Проверка и архивирование изменения
Проверка (опционально, но рекомендуется):
/opsx:verify
AI проверит вашу реализацию по трём измерениям:
| Измерение | Что проверяется |
|---|---|
| Completeness | все ли задачи из tasks.md выполнены? покрыты ли сценарии из спецификации? |
| Correctness | соответствует ли реализация намерению спецификации? учтены ли пограничные случаи? |
| Coherence | отражены ли дизайнерские решения из design.md в коде? |
Архивирование:
/opsx:archive
Архивирование выполнит две вещи:
- Объединит Delta-спецификации с основной спецификацией
openspec/specs/ui/spec.md - Переместит папку изменений в
openspec/changes/archive/2026-04-11-add-dark-mode/
После завершения архивирования обновятся файлы спецификаций системы, и у вас появится полностью оформленная история изменений.
Шаг 7: Параллельное управление множественными изменениями
В реальной разработке часто приходится прерываться, чтобы решить другие вопросы. OpenSpec поддерживает параллельные изменения:
# Предположим, вы делаете add-dark-mode, и вдруг нужно исправить bug
/opsx:new fix-login-redirect
# Нормально заканчиваем исправление bug
/opsx:ff
/opsx:apply
/opsx:archive
# Возвращаемся к предыдущей работе по тёмному режиму
/opsx:apply add-dark-mode
Когда вы завершите несколько изменений, архивируйте их вместе:
/opsx:bulk-archive
OpenSpec автоматически обнаружит конфликты спецификаций (оба изменения правят specs/ui/) и объединит их в правильном порядке по времени.
Шаг 8: Настройка Schema
Workflow OPSX в OpenSpec основан на Schema: вы можете полностью настроить типы Artifact и отношения зависимостей. Например, вы хотите workflow «сначала исследование, затем предложение»:
# создать новый schema на основе дефолтного
openspec schema fork spec-driven research-first
Структура сгенерированного Schema:
openspec/schemas/research-first/
├── schema.yaml
└── templates/
├── research.md
├── proposal.md
└── tasks.md
Соответствующий граф зависимостей теперь такой:
research ──► proposal ──► tasks
В schema.yaml определите:
# openspec/schemas/research-first/schema.yaml
name: research-first
artifacts:
- id: research
generates: research.md
requires: []
- id: proposal
generates: proposal.md
requires: [research]
- id: tasks
generates: tasks.md
requires: [proposal]
TIP
Размещайте Schema в каталоге проекта openspec/schemas/ — он будет версионироваться вместе с проектом, и все участники команды смогут использовать один и тот же workflow.
Шаг 9: Быстрый справочник по популярным CLI-командам
# Инициализация
openspec init
# Обновление AI-файлов умений (нужно выполнять после каждого апгрейда или смены profile)
openspec update
# Просмотр текущей конфигурации
openspec config show
# Переключение profile workflow
openspec config profile
# Просмотр активных изменений
openspec list
# Просмотр деталей конкретного изменения
openspec show add-dark-mode
# Проверка формата
openspec validate add-dark-mode
# Интерактивный Dashboard
openspec view
# Управление Schema
openspec schemas # список доступных schema
openspec schema which --all # посмотреть источник schema
openspec schema validate my-schema # проверить schema
Устранение типовых проблем
1. AI не находит команду /opsx:propose
Это самая частая проблема. После выполнения openspec init ассистенту AI нужно перезагрузить файлы умений. Выполните:
openspec update
Затем заново откройте диалог. Если AI всё равно не распознаёт команды, вручную проверьте, существует ли каталог .claude/.
2. openspec init сообщает об ошибке версии Node.js
node --version
# подтвердите, что >= 20.19.0
# если версия слишком низкая — обновите через nvm
nvm install 20 && nvm use 20
3. Конфликт при объединении Delta-спецификаций
При выполнении /opsx:bulk-archive, если два изменения правят один и тот же файл спецификации, OpenSpec обнаружит это и сообщит вам. По умолчанию используется объединение по времени; если нужно обработать вручную:
# сначала отдельно архивировать одно
/opsx:archive fix-login-redirect
# затем архивировать другое
/opsx:archive add-dark-mode
4. Ошибка загрузки пользовательского Schema
Обычно причина — синтаксическая ошибка в schema.yaml. Проверьте так:
openspec schema validate my-schema
Частые ошибки: неверные отступы YAML и ссылка в artifact-поле requires на несуществующий ID (циклическая зависимость).
5. Формат сгенерированных AI спецификаций не соответствует требованиям
Можно добавить правила в openspec/config.yaml:
rules:
specs:
- Описывайте каждый сценарий в формате GIVEN/WHEN/THEN
- В каждом Requirement должен быть как минимум один Scenario
Эти правила будут внедрены в инструкции для генерации спецификаций AI.
6. Во время /opsx:apply AI пропускает некоторые задачи
Прямо скажите AI:
Пожалуйста, выполняйте задачи в порядке из tasks.md. Задание 1.3 ещё не завершено — не пропускайте.
Fluid-особенность OpenSpec позволяет вам в любой момент редактировать Artifact: после правки tasks.md запустите apply снова — AI продолжит с места, на котором остановился.
Дополнительное чтение / направления развития
Подробно о формате Delta Specs: у ADDED/MODIFIED/REMOVED три типа изменений со своей семантикой — ADDED добавляет новые требования, MODIFIED заменяет существующие, REMOVED удаляет устаревшие требования. Понимание правил их объединения — ключ к тому, чтобы эффективно использовать OpenSpec.
Сравнение OPSX и Legacy workflow: OpenSpec v1.x использует Legacy workflow (/openspec:proposal), а начиная с v1.2 продвигается OPSX. Главная разница: Legacy строго phase-locked (всё есть или всё отсутствует), а OPSX fluid (можно редактировать любые Artifact в любой момент).
Руководство по подключению 20+ AI-инструментов: OpenSpec генерирует файлы умений через каталог .claude/skills/ и совместим с популярными инструментами вроде Claude Code, Cursor, Windsurf, Copilot и т. д. См. docs/supported-tools.md.
Интеграция с командным Slack: корпоративные команды могут обратиться по [email protected] за поддержкой в выделенном канале Slack — особенно подходит для сценариев, где вместе работает много людей, и нужен процесс управления спецификациями и их ревью.
Глубокая настройка конфигурации проекта: кроме context и rules, можно через config.yaml задать дефолтный Schema и внедрить информацию о техстеке проекта (например, фреймворк тестирования, стандарты стиля кода), чтобы генерируемые AI спецификации сильнее соответствовали вашему реальному проекту.