Миграция на OPSX
Это руководство поможет вам перейти от устаревшего рабочего процесса OpenSpec к OPSX. Миграция спроектирована так, чтобы быть максимально плавной: ваша текущая работа сохраняется, а новая система предоставляет больше гибкости.
Что меняется?
OPSX заменяет старый жестко фиксированный по фазам рабочий процесс на гибкий подход, основанный на действиях. Вот ключевые изменения:
| Аспект | Устаревший | OPSX |
|---|---|---|
| Команды | /openspec:proposal, /openspec:apply, /openspec:archive | По умолчанию: /opsx:propose, /opsx:explore, /opsx:apply, /opsx:update, /opsx:sync, /opsx:archive (дополнительные команды расширенного рабочего процесса) |
| Рабочий процесс | Создание всех артефактов одновременно | Создание поэтапно или все сразу — на ваш выбор |
| Возврат назад | Неудобные контрольные точки фаз | Естественный — обновляйте любой артефакт в любое время |
| Кастомизация | Фиксированная структура | На основе схемы, полностью настраиваемая |
| Конфигурация | CLAUDE.md с маркерами + project.md | Чистая конфигурация в openspec/config.yaml |
Изменение философии: Работа не является линейной. OPSX перестает делать вид, что это так.
Перед началом
Ваши существующие данные в безопасности
Процесс миграции разработан с учётом сохранения данных:
- Активные изменения в
openspec/changes/— Полностью сохраняются. Вы можете продолжить работу с ними с помощью команд OPSX. - Архивированные изменения — Не изменяются. Ваша история остаётся нетронутой.
- Основные спецификации в
openspec/specs/— Не изменяются. Это ваш источник истины. - Ваше содержимое в CLAUDE.md, AGENTS.md и т.д. — Сохраняется. Удаляются только маркерные блоки OpenSpec; всё, что вы написали, остаётся.
Что будет удалено
Только файлы, управляемые OpenSpec, которые заменяются:
| Что | Почему |
|---|---|
| Устаревшие каталоги/файлы slash-команд | Заменены новой системой skills |
openspec/AGENTS.md | Устаревший триггер рабочего процесса |
Маркеры OpenSpec в CLAUDE.md, AGENTS.md и т.д. | Больше не нужны |
Расположение устаревших команд по инструментам (примеры — ваш инструмент может отличаться):
- Claude Code:
.claude/commands/openspec/ - Cursor:
.cursor/commands/openspec-*.md - Devin Desktop, ранее Windsurf:
.windsurf/workflows/openspec-*.md - Cline:
.clinerules/workflows/openspec-*.md - Roo:
.roo/commands/openspec-*.md - GitHub Copilot:
.github/prompts/openspec-*.prompt.md(только расширения IDE; не поддерживается в Copilot CLI) - Codex: OpenSpec теперь использует канонический путь
.agents/skills/openspec-*. ФайлыSKILL.md, управляемые OpenSpec, в бывшем пути.codex/skillsсогласуются только после появления замен; пользовательские файлы и расходящиеся копии остаются на месте. Если дерево.agentsбез маркеров уже содержит skills OpenSpec, OpenSpec сохраняет существующий рендеринг Codex ($openspec-*) или универсальный (/openspec-*), вместо того чтобы угадывать из устаревшего каталога. Выберитеcodexявно с помощьюopenspec init, чтобы переключить владельца. Очистка устаревших prompt-файлов по-прежнему нацелена только на разрешённые OpenSpec имена файлов в$CODEX_HOME/promptsили~/.codex/prompts. - И другие (Augment, Continue, Amazon Q и т.д.)
Миграция определяет, какие инструменты у вас настроены, и очищает их устаревшие файлы.
Список удалений может показаться длинным, но это все файлы, которые OpenSpec изначально создал. Ваше собственное содержимое никогда не удаляется.
Что требует вашего внимания
Один файл требует ручной миграции:
openspec/project.md — Этот файл не удаляется автоматически, так как может содержать контекст проекта, который вы написали. Вам нужно:
- Оценить его содержимое
- Переместить полезный контекст в
openspec/config.yaml(см. рекомендации ниже) - Удалить файл, когда будете готовы
Почему мы внесли это изменение:
Старый project.md был пассивным — агенты могли его прочитать, могли не прочитать, могли забыть прочитанное. Мы обнаружили, что надёжность была непостоянной.
Новый контекст в config.yaml активно внедряется в каждый запрос планирования OpenSpec. Это означает, что ваши соглашения о проекте, технологический стек и правила всегда присутствуют, когда ИИ создаёт артефакты. Более высокая надёжность.
Компромисс:
Поскольку контекст внедряется в каждый запрос, вам нужно быть лаконичным. Сосредоточьтесь на том, что действительно важно:
- Технологический стек и ключевые соглашения
- Непринятые ограничения, о которых ИИ нужно знать
- Правила, которые часто игнорировались ранее
Не переживайте из-за идеальности. Мы всё ещё изучаем, что работает лучше всего, и будем улучшать механизм внедрения контекста по мере экспериментов.
Запуск миграции
Обе команды openspec init и openspec update обнаруживают устаревшие файлы и направляют вас через один и тот же процесс очистки. Используйте ту, которая подходит для вашей ситуации:
- Новые установки по умолчанию используют профиль
core(propose,explore,apply,update,sync,archive). - Мигрированные установки сохраняют ваши ранее установленные рабочие процессы, записывая профиль
customпри необходимости.
Использование openspec init
Выполните это, если вы хотите добавить новые инструменты или перенастроить, какие инструменты настроены:
openspec initКоманда init обнаруживает устаревшие файлы и направляет вас через очистку:
Upgrading to the new OpenSpec
OpenSpec now uses agent skills, the emerging standard across coding
agents. This simplifies your setup while keeping everything working
as before.
Files to remove
No user content to preserve:
• .claude/commands/openspec/
• openspec/AGENTS.md
Files to update
OpenSpec markers will be removed, your content preserved:
• CLAUDE.md
• AGENTS.md
Needs your attention
• openspec/project.md
We won't delete this file. It may contain useful project context.
The new openspec/config.yaml has a "context:" section for planning
context. This is included in every OpenSpec request and works more
reliably than the old project.md approach.
Review project.md, move any useful content to config.yaml's context
section, then delete the file when ready.
? Upgrade and clean up legacy files? (Y/n)Что происходит, когда вы говорите «да»:
- Устаревшие каталоги slash-команд удаляются
- Маркеры OpenSpec удаляются из
CLAUDE.md,AGENTS.mdи т.д. (ваше содержимое остаётся) openspec/AGENTS.mdудаляется- Новые skills устанавливаются в
.claude/skills/ - Создаётся
openspec/config.yamlс базовой схемой
Использование openspec update
Выполните это, если вы просто хотите мигрировать и обновить ваши существующие инструменты до последней версии:
openspec updateКоманда update также обнаруживает и очищает устаревшие артефакты, а затем обновляет сгенерированные skills/commands в соответствии с вашим текущим профилем и настройками доставки.
Непроактивные / CI-окружения
Для скриптовой миграции:
openspec init --force --tools claudeФлаг --force пропускает запросы и автоматически принимает очистку.
Это включает очистку prompt-файлов Codex, управляемых OpenSpec, в глобальном каталоге prompt Codex. Очистка нацелена только на разрешённые OpenSpec имена устаревших prompt-файлов Codex, удаляет их только после появления замен .agents/skills/openspec-*, и сохраняет все остальные файлы.
Миграция project.md в config.yaml
Старый openspec/project.md был свободным markdown-файлом для контекста проекта. Новый openspec/config.yaml структурирован и — что критично — внедряется в каждый запрос планирования, так что ваши соглашения всегда присутствуют, когда ИИ работает.
До (project.md)
# Project Context
This is a TypeScript monorepo using React and Node.js.
We use Jest for testing and follow strict ESLint rules.
Our API is RESTful and documented in docs/api.md.
## Conventions
- All public APIs must maintain backwards compatibility
- New features should include tests
- Use Given/When/Then format for specificationsПосле (config.yaml)
schema: spec-driven
context: |
Tech stack: TypeScript, React, Node.js
Testing: Jest with React Testing Library
API: RESTful, documented in docs/api.md
We maintain backwards compatibility for all public APIs
rules:
proposal:
- Include rollback plan for risky changes
specs:
- Use Given/When/Then format for scenarios
- Reference existing patterns before inventing new ones
design:
- Include sequence diagrams for complex flowsКлючевые различия
| project.md | config.yaml |
|---|---|
| Свободный markdown | Структурированный YAML |
| Один блок текста | Отдельный контекст и правила для каждого артефакта |
| Непонятно, когда используется | Контекст появляется во ВСЕХ артефактах; правила — только в соответствующих |
| Нет выбора схемы | Явное поле schema: задаёт рабочий процесс по умолчанию |
Что оставить, что убрать
При миграции будьте избирательны. Спросите себя: «Нужно ли ИИ это для каждого запроса планирования?»
Хорошие кандидаты для context:
- Технологический стек (языки, фреймворки, базы данных)
- Ключевые архитектурные паттерны (monorepo, микросервисы и т.д.)
- Непринятые ограничения («мы не можем использовать библиотеку X, потому что...»)
- Критические соглашения, которые часто игнорируются
Переместите в rules:
- Форматирование, специфичное для артефакта («используйте Given/When/Then в specs»)
- Критерии ревью («предложения должны включать планы отката»)
- Они появляются только для соответствующего артефакта, делая другие запросы легче
Полностью исключите
- Общие лучшие практики, которые ИИ уже знает
- Развёрнутые объяснения, которые можно суммировать
- Исторический контекст, не влияющий на текущую работу
Шаги миграции
Создайте config.yaml (если он ещё не создан при init):
yamlschema: spec-drivenДобавьте ваш контекст (будьте лаконичны — это попадает в каждый запрос):
yamlcontext: | Your project background goes here. Focus on what the AI genuinely needs to know.Добавьте правила для каждого артефакта (необязательно):
yamlrules: proposal: - Your proposal-specific guidance specs: - Your spec-writing rulesУдалите project.md, когда переместите всё полезное.
Не переусложняйте. Начните с основного и итерируйте. Если вы заметите, что ИИ пропускает что-то важное, добавьте это. Если контекст кажется раздутым, сократите его. Это живой документ.
Нужна помощь? Используйте этот промпт
Если вы не уверены, как дистиллировать ваш project.md, спросите вашего ИИ-ассистента:
I'm migrating from OpenSpec's old project.md to the new config.yaml format.
Here's my current project.md:
[paste your project.md content]
Please help me create a config.yaml with:
1. A concise `context:` section (this gets injected into every planning request, so keep it tight—focus on tech stack, key constraints, and conventions that often get ignored)
2. `rules:` for specific artifacts if any content is artifact-specific (e.g., "use Given/When/Then" belongs in specs rules, not global context)
Leave out anything generic that AI models already know. Be ruthless about brevity.ИИ поможет вам определить, что является существенным, а что можно сократить.
Новые команды
Доступность команд зависит от профиля:
По умолчанию (профиль core):
| Команда | Назначение |
|---|---|
/opsx:propose | Создать изменение и сгенерировать артефакты планирования за один шаг |
/opsx:explore | Обсудить идеи без структуры |
/opsx:apply | Реализовать задачи из tasks.md |
/opsx:update | Пересмотреть артефакты планирования изменения и сохранить их согласованность |
/opsx:sync | Слить delta-спецификации в основные спецификации |
/opsx:archive | Завершить и архивировать изменение |
Расширенный рабочий процесс (пользовательский выбор):
| Команда | Назначение |
|---|---|
/opsx:new | Начать новый каркас изменения |
/opsx:continue | Создать следующий артефакт (по одному) |
/opsx:ff | Быстрое продвижение — создать артефакты планирования сразу |
/opsx:verify | Проверить, что реализация соответствует спецификациям |
/opsx:bulk-archive | Архивировать несколько изменений сразу |
/opsx:onboard | Руководимый сквозной процесс онбординга |
Включите расширенные команды с помощью openspec config profile, затем выполните openspec update.
Соответствие команд от устаревших
| Устаревшая | Эквивалент OPSX |
|---|---|
/openspec:proposal | /opsx:propose (по умолчанию) или /opsx:new, затем /opsx:ff (расширенный) |
/openspec:apply | /opsx:apply |
/openspec:archive | /opsx:archive |
Новые возможности
Эти возможности являются частью набора команд расширенного рабочего процесса.
Постепенное создание артефактов:
/opsx:continueСоздаёт один артефакт за раз на основе зависимостей. Используйте это, когда вы хотите просмотреть каждый шаг.
Режим исследования:
/opsx:exploreОбсудите идеи с партнёром перед принятием изменения.
Понимание новой архитектуры
От фиксированных фаз к гибкости
Устаревший процесс заставлял линейное продвижение:
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ PLANNING │ ───► │ IMPLEMENTING │ ───► │ ARCHIVING │
│ PHASE │ │ PHASE │ │ PHASE │
└──────────────┘ └──────────────┘ └──────────────┘
If you're in implementation and realize the design is wrong?
Too bad. Phase gates don't let you go back easily.OPSX использует действия, а не фазы:
┌───────────────────────────────────────────────┐
│ ACTIONS (not phases) │
│ │
│ new ◄──► continue ◄──► apply ◄──► archive │
│ │ │ │ │ │
│ └──────────┴───────────┴─────────────┘ │
│ any order │
└───────────────────────────────────────────────┘Граф зависимостей
Артефакты образуют ориентированный граф. Зависимости являются активаторами, а не шлюзами:
proposal
(root node)
│
┌─────────────┴─────────────┐
│ │
▼ ▼
specs design
(requires: (requires:
proposal) proposal)
│ │
└─────────────┬─────────────┘
│
▼
tasks
(requires:
specs, design)Когда вы запускаете /opsx:continue, он проверяет, что готово, и предлагает следующий артефакт. Вы также можете создавать несколько готовых артефактов в любом порядке.
Skills и команды
Устаревшая система использовала файлы команд, специфичные для инструментов:
.claude/commands/openspec/
├── proposal.md
├── apply.md
└── archive.mdOPSX использует развивающийся стандарт skills:
.claude/skills/
├── openspec-explore/SKILL.md
├── openspec-new-change/SKILL.md
├── openspec-continue-change/SKILL.md
├── openspec-apply-change/SKILL.md
└── ...Skills распознаются во многих инструментах ИИ-кодирования и предоставляют более полные метаданные.
Codex в OPSX поддерживает только skills. OpenSpec больше не генерирует пользовательские файлы подсказок для Codex; вместо этого используйте сгенерированные директории .agents/skills/openspec-*.
Продолжение существующих изменений
Ваши текущие изменения бесшовно работают с командами OPSX.
У вас есть активное изменение из устаревшего рабочего процесса?
/opsx:apply add-my-featureOPSX читает существующие артефакты и продолжает с того места, где вы остановились.
Хотите добавить дополнительных артефактов к существующему изменению?
/opsx:continue add-my-featureПоказывает, что готово к созданию на основе уже существующего.
Нужно увидеть статус?
openspec status --change add-my-featureНовая система конфигурации
Структура config.yaml
# Обязательно: Схема по умолчанию для новых изменений
schema: spec-driven
# Необязательно: Контекст проекта (макс 50КБ)
# Внедряется во все инструкции артефактов
context: |
Your project background, tech stack,
conventions, and constraints.
# Необязательно: Правила для каждого артефакта
# Внедряется только в соответствующие артефакты
rules:
proposal:
- Include rollback plan
specs:
- Use Given/When/Then format
design:
- Document fallback strategies
tasks:
- Break into 2-hour maximum chunksРазрешение схемы
При определении, какую схему использовать, OPSX проверяет по порядку:
- Флаг CLI:
--schema <name>(наивысший приоритет) - Метаданные изменения:
.openspec.yamlв директории изменения - Конфигурация проекта:
openspec/config.yaml - По умолчанию:
spec-driven
Доступные схемы
| Схема | Артефакты | Лучше всего для |
|---|---|---|
spec-driven | proposal → specs → design → tasks | Большинство проектов |
Список всех доступных схем:
openspec schemasПользовательские схемы
Создайте свой собственный рабочий процесс:
openspec schema init my-workflowИли ответвите существующую:
openspec schema fork spec-driven my-workflowСмотрите Кастомизация для подробностей.
Устранение неполадок
"Legacy files detected in non-interactive mode"
Вы работаете в CI или среде без интерактивного режима. Используйте:
openspec init --forceКоманды не появляются после миграции
Перезапустите вашу IDE. Skills обнаруживаются при запуске.
"Unknown artifact ID in rules"
Проверьте, что ключи в rules: соответствуют идентификаторам артефактов вашей схемы:
- spec-driven:
proposal,specs,design,tasks
Запустите это, чтобы увидеть допустимые идентификаторы:
openspec schemas --jsonКонфигурация не применяется
- Убедитесь, что файл находится в
openspec/config.yaml(не.yml) - Проверьте синтаксис YAML
- Изменения конфигурации вступают в силу немедленно — перезапуск не требуется
project.md не перенесён
Система намеренно сохраняет project.md, потому что он может содержать ваш пользовательский контент. Просмотрите его вручную, перенесите полезные части в config.yaml, затем удалите.
Хотите увидеть, что будет очищено?
Запустите init и отклоните запрос очистки — вы увидите полную сводку обнаружения без внесения каких-либо изменений.
Краткий справочник
Файлы после миграции
project/
├── openspec/
│ ├── specs/ # Unchanged
│ ├── changes/ # Unchanged
│ │ └── archive/ # Unchanged
│ └── config.yaml # NEW: Project configuration
├── .claude/
│ └── skills/ # NEW: OPSX skills
│ ├── openspec-propose/ # default core profile
│ ├── openspec-explore/
│ ├── openspec-apply-change/
│ ├── openspec-update-change/
│ ├── openspec-sync-specs/
│ ├── openspec-archive-change/
│ └── ... # expanded profile adds new/continue/ff/etc.
├── CLAUDE.md # OpenSpec markers removed, your content preserved
└── AGENTS.md # OpenSpec markers removed, your content preservedЧто удалено
.claude/commands/openspec/— заменено на.claude/skills/openspec/AGENTS.md— устарелоopenspec/project.md— перенесите вconfig.yaml, затем удалите- Блоки маркеров OpenSpec в
CLAUDE.md,AGENTS.mdи др.
Шпаргалка команд
/opsx:propose Start quickly (default core profile)
/opsx:apply Implement tasks
/opsx:archive Finish and archive
# Expanded workflow (if enabled):
/opsx:new Scaffold a change
/opsx:continue Create next artifact
/opsx:ff Create planning artifactsПолучение помощи
- Discord: discord.gg/YctCnvvshC
- GitHub Issues: github.com/Fission-AI/OpenSpec/issues
- Документация: docs/opsx.md — полный справочник OPSX