Канон документов, каталог задач и OpenSpec
docs/ по канону 12: паспорт с целью проекта, архитектура сегодняшнего устройства, схема хранилища, модель угроз, конвенции кода, журнал ревью. Конвенции перенесены из jellybit; места, где код им не следует, помечены строкой «Расхождение» как объявленный долг. tasks/ с роадмапом: две достигнутые цели, две запланированные (веб и многопользовательский режим), два направления (все форматы, долгие записи) и пять задач в беклоге. openspec/config.yaml — маршрутизатор с адресами документов, спек пока нет. CLAUDE.md переписан по форме канона: инварианты с severity, семантика гейта, запреты с путями. Taskfile получил task gate.
This commit is contained in:
@@ -4,9 +4,72 @@ version: '3'
|
||||
|
||||
vars:
|
||||
PROJECT: "transcriber"
|
||||
# База диффа для шагов, которым нужна разница с основной веткой.
|
||||
BASE: '{{.BASE | default "origin/master"}}'
|
||||
# Пути скриптов проверки. Умолчания — канонические пути маркетплейса, чтобы
|
||||
# переустановка плагина не меняла Taskfile. Шаги независимы: каждый ловит
|
||||
# дрейф своего каталога, и выпадение одного не подменяется другим.
|
||||
DOCS_PY: '{{.DOCS_PY | default "~/.claude/plugins/marketplaces/av-dev-skills/av-dev-docs/skills/canon/scripts/docs.py"}}'
|
||||
TASKS_PY: '{{.TASKS_PY | default "~/.claude/plugins/marketplaces/av-dev-skills/av-dev-tasks/skills/tasks/scripts/tasks.py"}}'
|
||||
OPENSPEC_PY: '{{.OPENSPEC_PY | default "~/.claude/plugins/marketplaces/av-dev-skills/av-dev-code/skills/openspec/scripts/openspec.py"}}'
|
||||
|
||||
tasks:
|
||||
|
||||
gate:
|
||||
desc: 'Все проверки разом. База диффа: task gate BASE=<rev>'
|
||||
cmds:
|
||||
- go build ./...
|
||||
- go vet ./...
|
||||
- |
|
||||
unformatted=$(gofmt -l .)
|
||||
if [ -n "$unformatted" ]; then
|
||||
echo "$unformatted"
|
||||
echo "gofmt: файлы выше не отформатированы"
|
||||
exit 1
|
||||
fi
|
||||
- go test ./...
|
||||
- golangci-lint run
|
||||
- task: docs
|
||||
- task: tasks
|
||||
- task: openspec
|
||||
|
||||
docs:
|
||||
desc: 'Раскладка docs/ против канона'
|
||||
cmds:
|
||||
# Шаг обязан краснеть внятно, если скрипта нет, а не пропускаться молча.
|
||||
- |
|
||||
py=$(eval echo {{.DOCS_PY}})
|
||||
if [ ! -f "$py" ]; then
|
||||
echo "docs.py не найден: $py"
|
||||
echo "поставь плагин av-dev-docs либо задай путь: task docs DOCS_PY=<путь>"
|
||||
exit 1
|
||||
fi
|
||||
python3 "$py" check --base {{.BASE}}
|
||||
|
||||
tasks:
|
||||
desc: 'Согласованность каталога задач'
|
||||
cmds:
|
||||
- |
|
||||
py=$(eval echo {{.TASKS_PY}})
|
||||
if [ ! -f "$py" ]; then
|
||||
echo "tasks.py не найден: $py"
|
||||
echo "поставь плагин av-dev-tasks либо задай путь: task tasks TASKS_PY=<путь>"
|
||||
exit 1
|
||||
fi
|
||||
python3 "$py" check --dir tasks
|
||||
|
||||
openspec:
|
||||
desc: 'Форма openspec/config.yaml'
|
||||
cmds:
|
||||
- |
|
||||
py=$(eval echo {{.OPENSPEC_PY}})
|
||||
if [ ! -f "$py" ]; then
|
||||
echo "openspec.py не найден: $py"
|
||||
echo "поставь плагин av-dev-code либо задай путь: task openspec OPENSPEC_PY=<путь>"
|
||||
exit 1
|
||||
fi
|
||||
python3 "$py" check --dir .
|
||||
|
||||
# Контракт роли app_image (pet-project-server): собрать полный образ и затегать
|
||||
# его $BUILD_ID. Деплой целиком: `inv pl -- transcriber` в pet-project-server.
|
||||
image:
|
||||
|
||||
Reference in New Issue
Block a user