Настройка
OpenSpec предоставляет три уровня настройки:
| Уровень | Что делает | Лучше всего подходит для |
|---|---|---|
| Конфигурация проекта | Установка значений по умолчанию, внедрение контекста/правил | Большинства команд |
| Пользовательские схемы | Определение собственных артефактов рабочего процесса | Команд с уникальными процессами |
| Глобальные переопределения | Общий доступ к схемам во всех проектах | Продвинутых пользователей |
Конфигурация проекта
Файл openspec/config.yaml — самый простой способ настроить OpenSpec для вашей команды. Он позволяет:
- Установить схему по умолчанию — пропускайте
--schemaв каждой команде - Внедрить контекст проекта — ИИ будет видеть ваш технологический стек, соглашения и т.д.
- Добавить правила для артефактов — пользовательские правила для определенных артефактов
Быстрая настройка
bash
openspec initЭта команда интерактивно проведет вас через создание конфигурации. Или создайте ее вручную:
yaml
# openspec/config.yaml
schema: spec-driven
context: |
Технологический стек: TypeScript, React, Node.js, PostgreSQL
Стиль API: RESTful, документирован в docs/api.md
Тестирование: Jest + React Testing Library
Мы ценим обратную совместимость для всех публичных API
rules:
proposal:
- Включить план отката
- Указать затронутые команды
specs:
- Использовать формат Given/When/Then
- Ссылаться на существующие паттерны перед изобретением новыхКак это работает
Схема по умолчанию:
bash
# Без конфигурации
openspec new change my-feature --schema spec-driven
# С конфигурацией - схема выбирается автоматически
openspec new change my-featureВнедрение контекста и правил:
При генерации любого артефакта ваш контекст и правила внедряются в промпт ИИ:
xml
<context>
Технологический стек: TypeScript, React, Node.js, PostgreSQL
...
</context>
<rules>
- Включить план отката
- Указать затронутые команды
</rules>
<template>
[Встроенный шаблон схемы]
</template>- Контекст появляется во ВСЕХ артефактах
- Правила появляются ТОЛЬКО для соответствующего артефакта
Порядок разрешения схемы
Когда OpenSpec нужна схема, она проверяется в следующем порядке:
- Флаг CLI:
--schema <имя> - Метаданные изменения (
.openspec.yamlв папке изменения) - Конфигурация проекта (
openspec/config.yaml) - Значение по умолчанию (
spec-driven)
Пользовательские схемы
Когда конфигурации проекта недостаточно, создайте собственную схему с полностью пользовательским рабочим процессом. Пользовательские схемы находятся в директории openspec/schemas/ вашего проекта и версионируются вместе с кодом.
text
your-project/
├── openspec/
│ ├── config.yaml # Конфигурация проекта
│ ├── schemas/ # Здесь хранятся пользовательские схемы
│ │ └── my-workflow/
│ │ ├── schema.yaml
│ │ └── templates/
│ └── changes/ # Ваши изменения
└── src/Разветвление существующей схемы
Самый быстрый способ настройки — разветвить встроенную схему:
bash
openspec schema fork spec-driven my-workflowЭто скопирует всю схему spec-driven в openspec/schemas/my-workflow/, где вы сможете ее свободно редактировать.
Что вы получите:
text
openspec/schemas/my-workflow/
├── schema.yaml # Определение рабочего процесса
└── templates/
├── proposal.md # Шаблон для артефакта proposal
├── spec.md # Шаблон для спецификаций
├── design.md # Шаблон для дизайна
└── tasks.md # Шаблон для задачТеперь отредактируйте schema.yaml для изменения рабочего процесса или отредактируйте шаблоны для изменения того, что генерирует ИИ.
Создание схемы с нуля
Для полностью нового рабочего процесса:
bash
# Интерактивно
openspec schema init research-first
# Неинтерактивно
openspec schema init rapid \
--description "Рабочий процесс быстрой итерации" \
--artifacts "proposal,tasks" \
--defaultСтруктура схемы
Схема определяет артефакты в вашем рабочем процессе и их взаимозависимости:
yaml
# openspec/schemas/my-workflow/schema.yaml
name: my-workflow
version: 1
description: Пользовательский рабочий процесс моей команды
artifacts:
- id: proposal
generates: proposal.md
description: Начальный документ предложения
template: proposal.md
instruction: |
Создайте предложение, объясняющее ПОЧЕМУ необходимы эти изменения.
Сосредоточьтесь на проблеме, а не на решении.
requires: []
- id: design
generates: design.md
description: Технический дизайн
template: design.md
instruction: |
Создайте документ дизайна, объясняющий КАК реализовать изменения.
requires:
- proposal # Невозможно создать дизайн, пока не существует proposal
- id: tasks
generates: tasks.md
description: Чеклист реализации
template: tasks.md
requires:
- design
apply:
requires: [tasks]
tracks: tasks.mdКлючевые поля:
| Поле | Назначение |
|---|---|
id | Уникальный идентификатор, используемый в командах и правилах |
generates | Имя выходного файла (поддерживает шаблоны типа specs/**/*.md) |
template | Файл шаблона в директории templates/ |
instruction | Инструкции ИИ для создания этого артефакта |
requires | Зависимости — какие артефакты должны существовать первыми |
Шаблоны
Шаблоны — это файлы markdown, которые направляют ИИ. Они внедряются в промпт при создании соответствующего артефакта.
markdown
<!-- templates/proposal.md -->
## Почему
<!-- Объясните мотивацию для этих изменений. Какую проблему они решают? -->
## Что изменится
<!-- Опишите, что изменится. Будьте конкретны относительно новых возможностей или модификаций. -->
## Влияние
<!-- Затронутый код, API, зависимости, системы -->Шаблоны могут включать:
- Заголовки разделов, которые ИИ должен заполнить
- HTML-комментарии с инструкциями для ИИ
- Примеры форматов, показывающие ожидаемую структуру
Валидация вашей схемы
Перед использованием пользовательской схемы проверьте ее:
bash
openspec schema validate my-workflowЭто проверит:
- Синтаксис
schema.yamlкорректен - Все указанные шаблоны существуют
- Нет циклических зависимостей
- Идентификаторы артефактов валидны
Использование вашей пользовательской схемы
После создания используйте вашу схему с помощью:
bash
# Укажите в команде
openspec new change feature --schema my-workflow
# Или установите как схему по умолчанию в config.yaml
schema: my-workflowОтладка разрешения схемы
Не уверены, какая схема используется? Проверьте с помощью:
bash
# Посмотрите, откуда разрешается конкретная схема
openspec schema which my-workflow
# Выведите список всех доступных схем
openspec schema which --allВывод покажет,来自 ли она из вашего проекта, пользовательской директории или пакета:
text
Schema: my-workflow
Source: project
Path: /path/to/project/openspec/schemas/my-workflowПримечание: OpenSpec также поддерживает схемы уровня пользователя в
~/.local/share/openspec/schemas/для общего доступа между проектами, но рекомендуется использовать схемы уровня проекта вopenspec/schemas/, так как они версионируются вместе с вашим кодом.
Примеры
Рабочий процесс быстрой итерации
Минимальный рабочий процесс для быстрых итераций:
yaml
# openspec/schemas/rapid/schema.yaml
name: rapid
version: 1
description: Быстрая итерация с минимальными накладными расходами
artifacts:
- id: proposal
generates: proposal.md
description: Быстрое предложение
template: proposal.md
instruction: |
Создайте краткое предложение для этих изменений.
Сосредоточьтесь на том, что и почему, пропустите детальные спецификации.
requires: []
- id: tasks
generates: tasks.md
description: Чеклист реализации
template: tasks.md
requires: [proposal]
apply:
requires: [tasks]
tracks: tasks.mdДобавление артефакта проверки
Разветвите схему по умолчанию и добавьте шаг проверки:
bash
openspec schema fork spec-driven with-reviewЗатем отредактируйте schema.yaml, чтобы добавить:
yaml
- id: review
generates: review.md
description: Чеклист проверки перед реализацией
template: review.md
instruction: |
Создайте чеклист проверки на основе дизайна.
Включите соображения по безопасности, производительности и тестированию.
requires:
- design
- id: tasks
# ... существующая конфигурация задач ...
requires:
- specs
- design
- review # Теперь задачи также требуют проверкиСмотрите также
- Справочник по CLI: Команды схем - Полная документация по командам