Old CLAUDE.md was 700 lines — exceeded Anthropic 200-line recommendation,
adherence degraded under context pressure.
Refactor per research findings:
- CLAUDE.md 700 -> 97 lines (essential only, pointers to rules)
- .claude/rules/{backend,frontend,sql,git-pr,deploy}.md (NEW, path-scoped)
- ~/.claude/CLAUDE.md (NEW, 21 lines) — personal cross-project prefs
- memory/ — deleted 12 feedback files promoted to proper layer (CLAUDE.md
rules table, .claude/rules/, ~/.claude/CLAUDE.md). 7 remaining = workflow
details.
- .gitignore: !.claude/agents/, !.claude/rules/ exceptions
Total auto-loaded per session: 97 (CLAUDE.md) + 21 (~/.claude) = 118 lines
vs prior 700. Rules in .claude/rules/ load only when matching paths touched.
Resolves conflict no_self_review vs pre_push_review: now single rule in
git-pr.md Review workflow section (pre-push = local lint; post-push =
external Claude window posting as lekss361).
Code-reviewer feedback applied:
- paths: frontmatter added to git-pr.md
- Auto-merge scope blocked-list now includes .claude/rules/*.md changes
to prevent self-extending rules without human approval.
Co-authored-by: lekss361 <claudestars@proton.me>
48 lines
1.9 KiB
Markdown
48 lines
1.9 KiB
Markdown
---
|
||
paths:
|
||
- docker-compose*.yml
|
||
- Caddyfile
|
||
- .github/workflows/**
|
||
- scripts/setup-*.sh
|
||
---
|
||
|
||
# Deploy conventions
|
||
|
||
## GHA path triggers
|
||
|
||
- `backend/**`, `frontend/**`, `Caddyfile`, `docker-compose.prod.yml`, `data/sql/*.sql` → `deploy.yml` (main stack)
|
||
- `docker-compose.obsidian.yml`, `scripts/setup-couchdb.sh` → `deploy-obsidian.yml`
|
||
- `docs/**` alone → НЕ триггерит деплой
|
||
|
||
## После изменения .env на VPS
|
||
|
||
```bash
|
||
docker compose up -d --force-recreate --no-deps <service>
|
||
```
|
||
|
||
`docker compose restart` НЕ перечитывает `env_file`.
|
||
|
||
## Caddyfile
|
||
|
||
Bind-mounted → нужен явный `caddy reload` после изменения. `deploy.yml` делает автоматически после `compose up -d`.
|
||
|
||
## Sentry release tracking
|
||
|
||
`SENTRY_RELEASE=$IMAGE_TAG` пишется в `backend/.env.runtime` на VPS через `sed` — **не** полная перезапись файла (там user-managed `COUCHDB_PASSWORD` и пр.).
|
||
|
||
## VPS git state
|
||
|
||
`deploy.yml` делает `git reset --hard origin/main` → любые ручные правки в `/opt/gendesign` стираются. `.env`-файлы выживают (в `.gitignore`).
|
||
|
||
## DB migrations через deploy
|
||
|
||
`data/sql/NN_*.sql` применяются **до** `compose up -d`. Если SQL падает → deploy останавливается (exit 1), containers не обновляются.
|
||
|
||
Diagnose: GHA log "Apply DB migrations". См. `.claude/rules/sql.md` для migration order.
|
||
|
||
## Запреты
|
||
|
||
- ❌ Менять `env_file` секреты в `docker-compose*.yml` — секреты через VPS `.env` файлы
|
||
- ❌ Полностью перезаписывать `.env.runtime` — только `sed` для конкретных переменных
|
||
- ❌ `git pull` на VPS вручную — deploy.yml уже делает `git reset --hard`
|
||
- ❌ Hardcode tags / SHA в compose files — `${IMAGE_TAG}` через env
|