openpencil/packages/docs/ru/development/openspec.md
Danila Poyarkov 1ecc20e1ec Use <kbd> for keyboard shortcuts across all docs
Wrap all keyboard shortcut references in <kbd> tags in user guide,
reference, and development docs across all 7 locales (en, de, es,
fr, it, pl, ru). Tables, inline prose, and parenthetical hints.
2026-03-08 12:48:02 +03:00

4.8 KiB
Raw Blame History

Рабочий процесс 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-layout Yoga WASM flexbox, переключение через Shift+A
figma-clipboard Двусторонний бинарный Kiwi-буфер обмена
fig-import Конвейер импорта .fig файлов
kiwi-codec Бинарный кодек Kiwi, разреженные ID полей
editor-ui Панели Vue 3, панель инструментов, палитра цветов
snap-guides Привязка к краям/центрам, с учётом поворота
rulers Линейки на холсте, подсветка выделения
group-ungroup ⌘G / ⇧⌘G, сортировка по позиции
desktop-app Tauri v2, строка меню macOS
testing Playwright E2E, юнит-тесты bun:test
scrub-input Ввод чисел перетаскиванием
tooling Vite 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/

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

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

# capability-name Specification

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

## Requirements

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

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

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

Команды CLI

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