release: dev → main #54

Merged
Eleboba merged 62 commits from dev into main 2026-10-22 17:50:43 +03:00
3 changed files with 84 additions and 1 deletions
Showing only changes of commit 74aabba5dc - Show all commits
+12
View File
@@ -1,5 +1,16 @@
# CLAUDE.md — Руководство для Claude Code # CLAUDE.md — Руководство для Claude Code
## ⚡ ПЕРВОЕ ДЕЙСТВИЕ В КАЖДОЙ СЕССИИ
```bash
set -a; . ./.env 2>/dev/null; set +a
```
`SOURCECRAFT_TOKEN` — токен SourceCraft API (секрет — **в чат не печатать**). Репозиторий:
[`rogachevegorushka/tgit`](https://sourcecraft.dev/rogachevegorushka/tgit). API → [`docs/dev/SOURCECRAFT_API.md`](docs/dev/SOURCECRAFT_API.md).
---
## Что мы строим ## Что мы строим
Telegram-бот (учебный проект НИУ ВШЭ, курс Python): принимает `.py`-файлы, коммитит их в отдельный Telegram-бот (учебный проект НИУ ВШЭ, курс Python): принимает `.py`-файлы, коммитит их в отдельный
@@ -30,6 +41,7 @@ Telegram-бот (учебный проект НИУ ВШЭ, курс Python): п
| [`docs/QUESTIONS_IDEAS.md`](docs/QUESTIONS_IDEAS.md) | Открытые вопросы, бэклог идей | | [`docs/QUESTIONS_IDEAS.md`](docs/QUESTIONS_IDEAS.md) | Открытые вопросы, бэклог идей |
| [`docs/dev/WORKFLOW.md`](docs/dev/WORKFLOW.md) | Регламент: ветки, коммиты, PR, жизненный цикл задачи | | [`docs/dev/WORKFLOW.md`](docs/dev/WORKFLOW.md) | Регламент: ветки, коммиты, PR, жизненный цикл задачи |
| [`docs/dev/ISSUE_TEMPLATE.md`](docs/dev/ISSUE_TEMPLATE.md) | Шаблон тела issue | | [`docs/dev/ISSUE_TEMPLATE.md`](docs/dev/ISSUE_TEMPLATE.md) | Шаблон тела issue |
| [`docs/dev/SOURCECRAFT_API.md`](docs/dev/SOURCECRAFT_API.md) | SourceCraft API: curl-шпаргалка (issue, метки, PR) |
--- ---
+71
View File
@@ -0,0 +1,71 @@
# SourceCraft API — шпаргалка
Справочник: [методы](https://sourcecraft.dev/portal/docs/en/api-ref/index.md) ·
[интерактивный](https://api.sourcecraft.tech/docs/index.html) ·
[swagger.json](https://api.sourcecraft.tech/sourcecraft.swagger.json)
```bash
set -a; . ./.env; set +a # SOURCECRAFT_TOKEN
R=https://api.sourcecraft.tech/repos/rogachevegorushka/tgit
H="Authorization: Bearer $SOURCECRAFT_TOKEN"
alias curl='curl --retry 4 --retry-all-errors --retry-delay 2'
J="Content-Type: application/json"
```
> В CI вместо личного токена — предопределённая переменная `SOURCECRAFT_TOKEN`.
## Подводные камни
- Соединение с `api.sourcecraft.tech` иногда рвётся (`curl: (35)`, пустой ответ) — отсюда `--retry`. Перед повторным POST проверить, не создалась ли сущность.
- `color` у метки — hex **без** `#` (`"ff7f0e"`), иначе `400 ValidationError`.
- Ответы-списки кладут элементы в разные ключи: `/issues` → `issues`, `/labels` репо → `items`, метки issue → `labels`.
- Issue адресуется номером (`issues/1`), метка — slug'ом (`size/0.5` → `size-0-5`).
- Тело issue — поле `description` (не `body`); тело комментария — `body`.
- Длинный markdown удобнее собрать в JSON-файл и передать `--data @file.json`.
## Issues
```bash
# список / одна
curl -s -H "$H" "$R/issues"
curl -s -H "$H" "$R/issues/1"
# создать (status_slug: open | inProgress | paused | closed | declined | duplicate)
curl -s -X POST -H "$H" -H "$J" "$R/issues" --data @issue.json
# issue.json: {"title": "...", "description": "...", "label_slugs": ["bot","feature","size-1"], "status_slug": "open"}
# обновить (описание, статус, исполнитель)
curl -s -X PATCH -H "$H" -H "$J" "$R/issues/1" -d '{"status_slug":"closed"}'
# комментарий
curl -s -X POST -H "$H" -H "$J" "$R/issues/1/comments" -d '{"body":"текст"}'
# метки issue: POST — добавить, PUT — заменить, DELETE — убрать
curl -s -X POST -H "$H" -H "$J" "$R/issues/1/labels" -d '{"slugs":["ci"]}'
# связь между issue
curl -s -X POST -H "$H" -H "$J" "$R/issues/2/issue_links" --data @link.json
```
## Метки репозитория
```bash
curl -s -H "$H" "$R/labels"
curl -s -X POST -H "$H" -H "$J" "$R/labels" -d '{"name":"size/1","slug":"size-1","color":"a0a0a0"}'
```
Заведены: зоны `bot` `ci` `infra` `llm` `docs` · типы `feature` `fix` `refactor` · размеры `size/0.5` `size/1` `size/2`.
## Pull requests
```bash
# создать PR в dev
curl -s -X POST -H "$H" -H "$J" "$R/pulls" --data @pr.json
# pr.json: {"title": "...", "description": "...", "source_branch": "feat/2-x", "target_branch": "dev", "publish": true}
curl -s -H "$H" "$R/pulls/1"
curl -s -H "$H" "$R/pulls/1/merge-checks"
# мерж (rebase | squash, delete_branch)
curl -s -X POST -H "$H" -H "$J" "$R/pulls/1/merge" -d '{"delete_branch": true}'
```
+1 -1
View File
@@ -2,7 +2,7 @@
## Откуда задачи ## Откуда задачи
- Только из Issues на SourceCraft. Нет issue → завести → потом код. - Только из Issues на SourceCraft. Нет issue → завести → потом код. API: [`SOURCECRAFT_API.md`](SOURCECRAFT_API.md).
- Атрибуты issue: исполнитель, метка зоны (`bot` / `ci` / `infra` / `llm` / `docs`), - Атрибуты issue: исполнитель, метка зоны (`bot` / `ci` / `infra` / `llm` / `docs`),
тип (`feature` / `fix` / `refactor` / `docs`), размер (`size/0.5` ≈ 2ч · `size/1` ≈ 4ч · `size/2` ≈ 1д). тип (`feature` / `fix` / `refactor` / `docs`), размер (`size/0.5` ≈ 2ч · `size/1` ≈ 4ч · `size/2` ≈ 1д).
- Тело — по [`ISSUE_TEMPLATE.md`](ISSUE_TEMPLATE.md). - Тело — по [`ISSUE_TEMPLATE.md`](ISSUE_TEMPLATE.md).