33 lines
2.6 KiB
Markdown
33 lines
2.6 KiB
Markdown
# sfm
|
||
|
||
## Что это
|
||
{{ОДНИМ АБЗАЦЕМ: что делает система, для кого, главный сценарий.}}
|
||
|
||
## Стек и ограничения
|
||
- {{Язык, сборка, тесты — например: Python 3.12, uv, pytest.}}
|
||
- {{Жёсткие ограничения среды исполнения — без чего код не должен собираться.}}
|
||
|
||
## Архитектура
|
||
- `src/core/` (или {{ваш путь}}) — чистая логика без зависимостей от фреймворка/платформы. Покрывается тестами полностью.
|
||
- `src/{{adapter}}/` — тонкая обёртка над платформой. Тестируется руками или интеграционно.
|
||
- {{Ключевые интерфейсы/порты между ними, если есть.}}
|
||
|
||
## Команды
|
||
- `{{npm test / pytest}}` — весь набор тестов. Зелёным считается только весь набор.
|
||
- `{{npm run build / ...}}` — сборка.
|
||
- `{{npm run dev / ...}}` — локальный запуск.
|
||
|
||
## Тесты
|
||
- Golden-тесты: `tests/fixtures/<name>.*` + эталон `<name>.expected.*`. Внешние сервисы в тестах мокаются.
|
||
- {{Где лежит тестовое окружение (vault, БД, песочница).}}
|
||
|
||
## Первая подсистема
|
||
{{Что делается первым и почему. Тестовая инфраструктура — Task 1 первого плана.}}
|
||
|
||
## OpenSpec и superpowers
|
||
- Вход в любую задачу — superpowers:brainstorming. Skills openspec-propose и openspec-explore сами по себе не запускать.
|
||
- Когда brainstorming классифицировал задачу как architectural, структуру change создать через `openspec new change <id>` (или `/opsx:propose <id>`), а содержимое proposal.md, specs/ и design.md написать по итогам brainstorming. tasks.md из OpenSpec не заполнять — задачи живут в плане superpowers.
|
||
- `/opsx:apply` не использовать: исполнение идёт через writing-plans и SDD/executing-plans.
|
||
- `openspec archive <id>` — после merge PR, как часть чеклиста закрытия.
|
||
- Хук require-plan защищает любой каталог `src/` на любой глубине. Если код лежит иначе — перечислить каталоги (префиксы от корня, по одному в строке) в `.claude/code-paths`.
|