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

108 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Рабочий процесс OpenSpec
OpenPencil использует [OpenSpec](https://github.com/Fission-AI/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 | <kbd>⌘</kbd><kbd>G</kbd> / <kbd>⇧</kbd><kbd>⌘</kbd><kbd>G</kbd>, сортировка по позиции |
| 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/`
## Формат спецификаций
Каждый файл спецификации следует единообразной структуре:
```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 # Пересоздать навыки/промпты
```