Skip to content

Рабочий процесс OpenSpec

OpenPencil использует OpenSpec для разработки на основе спецификаций. Спецификации — это источник истины о том, что делает система.

Структура

openspec/
├── specs/              # Источник истины: как система работает сейчас
│   ├── scene-graph/
│   │   └── spec.md
│   ├── canvas-rendering/
│   │   └── spec.md
│   ├── auto-layout/
│   │   └── spec.md
│   └── ...             # Всего 19 спецификаций возможностей
├── changes/            # Предлагаемые изменения (один каталог на изменение)
│   └── archive/        # Завершённые изменения
└── config.yaml         # Опциональная конфигурация

Текущие спецификации

ВозможностьОписание
scene-graphХранение в плоском Map, CRUD, проверка попадания
canvas-renderingКонвейер отрисовки CanvasKit WASM
canvas-navigationПанорамирование, масштабирование, инструмент «Рука»
selection-manipulationВыделение кликом/рамкой, перемещение, масштабирование, поворот
undo-redoПаттерн обратных команд
text-editingИнструмент «Текст», Paragraph API, загрузка шрифтов
pen-toolМодель векторных сетей, кривые Безье
auto-layoutYoga WASM flexbox, переключение через Shift+A
figma-clipboardДвусторонний бинарный Kiwi-буфер обмена
fig-importКонвейер импорта .fig файлов
kiwi-codecБинарный кодек Kiwi, разреженные ID полей
editor-uiПанели Vue 3, панель инструментов, палитра цветов
snap-guidesПривязка к краям/центрам, с учётом поворота
rulersЛинейки на холсте, подсветка выделения
group-ungroupG / G, сортировка по позиции
desktop-appTauri v2, строка меню macOS
testingPlaywright E2E, юнит-тесты bun:test
scrub-inputВвод чисел перетаскиванием
toolingVite 7, oxlint, oxfmt, tsgo, VitePress

Рабочий процесс

1. Предложить изменение

/opsx:propose add-dark-mode

Создаёт каталог openspec/changes/add-dark-mode/ с:

  • proposal.md — зачем и какие изменения
  • design.md — технический подход
  • specs/ — дельта-спецификации (ADDED/MODIFIED/REMOVED требования)
  • tasks.md — чеклист реализации

2. Реализовать

/opsx:apply

Выполнение задач из tasks.md с отметкой выполненных пунктов.

3. Архивировать

/opsx:archive
  • Объединяет дельта-спецификации с openspec/specs/ (базовые спецификации)
  • Перемещает изменение в openspec/changes/archive/

Формат спецификаций

Каждый файл спецификации следует единообразной структуре:

markdown
# capability-name Specification

## Purpose
Однострочное описание назначения этой возможности.

## Requirements

### Requirement: Name
Описание с использованием SHALL/MUST для нормативных требований.

#### Scenario: Name
- **WHEN** условие
- **THEN** ожидаемый результат

Каждое требование содержит хотя бы один сценарий. Сценарии — это потенциальные тест-кейсы.

Команды CLI

sh
openspec list                    # Список активных изменений
openspec show <name>             # Показать детали изменения
openspec status --change <name>  # Статус артефактов
openspec archive <name>          # Архивировать завершённое изменение
openspec update                  # Пересоздать навыки/промпты

Released under the MIT License.