Files
vtube/CLAUDE.md
goboss a10a0bb790 docs: add ONBOARDING.md — user-facing first-launch guide
- What Claude auto-loads (CLAUDE.md, MEMORY.md, global rules)
- 7 open questions developer needs to answer (random JS, 8112 GA, test.*, 8081 status, etc.)
- Task type examples (A: site change, B: backlog item, C: audit, D: documentation)
- External services to potentially configure (Telegram, CF, monitoring)
- Common pitfalls (no make-work, no manual tmux kill, no /home/nosfortube/)
2026-04-30 21:44:56 +00:00

104 lines
6.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.
# tubev
Multi-site adult tube infrastructure — **frontend-only** scope (templates / CSS / JS). Backend (OpenResty + Lua) — у розробника, не в нашому доступі.
## Repo
- **Origin:** `git@gdev.hserver.cloud:ovtube/vtube.git`
- **goboss checkout:** `/home/w4/goboss/tubev/`
- **Bot worktrees:** `/home/w4/<bot>/tubev/` (gocc1-4)
- **Branch:** `main`
- **Push policy:** **goboss пушить immediately after commit** (default). Боти комітять локально → write report → goboss робить review + push. Винятки (multi-step refactor у процесі / diff >50 LOC / WIP) — у **[docs/GIT_WORKFLOW.md § When to push](docs/GIT_WORKFLOW.md#when-to-push-default--exceptions)**
## Сайти (live, prod source)
14 портів у `/home/w4/backup_<port>/` (mirror з `/home/nosfortube/frontend_<port>/`). Повна таблиця: **[docs/SITES.md](docs/SITES.md)**.
## Stack
- Templates: **etlua** (Lua templating, OpenResty environment)
- CSS: критичний inline `views/css/css_*.etlua` + deferred `static/css/`
- JS: `static/js/{c2, auth, comment, profile_index, main, ...}.{js,min.js}`
- Video player: `static/videojs-v10/`
## Workflow (де що правити)
1. **Edit:** `~/backup_<port>/views/` (наша зона; кожен порт = окремий git repo)
2. **Sync:** `~/backup_<port>/sync.sh` копіює з prod (`/home/nosfortube/frontend_<port>/`) → backup. Деталі: **[docs/SYNC_WORKFLOW.md](docs/SYNC_WORKFLOW.md)**
3. **Push to prod:** через git remote → developer-side. **goboss НЕ пушить**, тільки локальні коміти у власному worktree
4. **`/home/nosfortube/`** — це prod, читати можна, **писати — НІКОЛИ**
## Команди
```bash
~/start-devs.sh boss # старт goboss
~/start-devs.sh gocc # старт gocc1-4
~/bin/trigger-bots [gocc{N}] # тригер нової task
~/bin/restart-bots [gocc{N}] # повний reset (kill+start+wait+trigger)
~/bin/clear-bots [gocc{N}] # /clear context (topic switch)
git pull --rebase # ЗАВЖДИ перед роботою у backup_<port>/
```
## Команда (ролі ботів)
| Бот | Tool access | Domain |
|-----|-------------|--------|
| **goboss** | All | Planner + dispatch (не push до prod, тільки local commits) |
| **gocc1** | Read-only | Code audit + regression |
| **gocc2** | Read-only | Test gap + endpoint smoke |
| **gocc3** | Edit/Write/commit (no push) | Frontend writer (templates/CSS/UI) |
| **gocc4** | Edit/Write/commit (no push) | Architect/refactor (services/lib/scripts) |
**2 read-only + 2 writer** — read-only safety net, писателі паралельно.
Деталі: **[docs/roles/](docs/roles/)** | Workflow rules: **[docs/BOT_WORKFLOW.md](docs/BOT_WORKFLOW.md)**
## Правила (КРИТИЧНІ)
### No make-work
**НЕ давати ботам задачі з пустого в порожнє.** Кожен dispatch має конкретну причину: новий audit area, conkretne виявлений bug, follow-up з reportу. Якщо нема такої причини — bot пише `[bot] Чекаю.` і чекає. Cross-audit / regression test / research **тільки коли є concrete trigger**.
### No-touch zones
- `/home/nosfortube/` — production source, READ ONLY
- `/etc/nginx/`, `/var/www/` — server configs, поза scope
- Backend Lua код розробника — нема доступу
### Refactor vs Cleanup vs Bug-fix vs Feature
Чітко розрізняти. Деталі: **[docs/REFACTOR_RULES.md](docs/REFACTOR_RULES.md)**.
### Recommendations not plans
Виявлені refactor/security/cleanup candidates → **[docs/RECOMMENDATIONS.md](docs/RECOMMENDATIONS.md)** як **рекомендації**, не план. Робимо ТІЛЬКИ коли розробник скаже. goboss періодично нагадує про unprocessed items.
### No hardcodes у нових патчах
Перш ніж писати літерал (URL, домен, GA ID, magic number) — `grep` чи вже є у `views/config/` чи аналогічному місці. Існує — import/include. Нема — додай як параметр у `views/config/site.lua` (якщо буде створено) і потім use.
### Docs upkeep — meta-rule
**Якщо ти витратив >5 хвилин шукаючи інформацію про інфраструктуру / команди / шляхи / hooks / scripts — це signal що документація не покриває цю area.** Після того як знайшов відповідь:
1. Додай знайдену інформацію у відповідний doc файл (як правило `docs/INFRASTRUCTURE.md` для systemic / Operational, інше — у domain doc)
2. Додай пункт у [docs/RECOMMENDATIONS.md](docs/RECOMMENDATIONS.md) як D# (DOC) item якщо потрібен ширший update
3. Не дай наступним сесіям повторити пошук
## Doc Index
| Файл | Призначення |
|------|-------------|
| **[docs/ONBOARDING.md](docs/ONBOARDING.md)** | Для **юзера** — що Claude auto-loads, відкриті питання до developer, як давати команди |
| **[docs/INFRASTRUCTURE.md](docs/INFRASTRUCTURE.md)** | Мапа `/home/w4/`: bin, scripts, comms, hooks, sessions, memory + cheatsheet |
| **[docs/GIT_WORKFLOW.md](docs/GIT_WORKFLOW.md)** | Repo `vtube`, push process, bot commits → goboss push |
| **[docs/SITES.md](docs/SITES.md)** | Таблиця 14 портів × домен × cluster × outlier flags |
| **[docs/SYNC_WORKFLOW.md](docs/SYNC_WORKFLOW.md)** | Як sync.sh у backup_<port>/ працює, 2 парадигми |
| **[docs/MODULES.md](docs/MODULES.md)** | Карта `views/modules/*.etlua` × presence × DEL_/test/deprecated flags |
| **[docs/REFACTOR_RULES.md](docs/REFACTOR_RULES.md)** | Що таке REFACTOR vs CLEANUP vs BUG vs FEATURE |
| **[docs/RECOMMENDATIONS.md](docs/RECOMMENDATIONS.md)** | Backlog refactor/cleanup/security candidates як рекомендації |
| **[docs/BOT_WORKFLOW.md](docs/BOT_WORKFLOW.md)** | Bot dispatch + reporting + escalation rules |
| **[docs/roles/](docs/roles/)** | Ролі gocc1-4 |
Файли наповнюємо/оновлюємо по мірі знахідок. CLAUDE.md = тонкий entry-point + index.
## Communication
- Українською, коротко, по суті
- Боти приймають **ТІЛЬКИ від `goboss:`**
- TIMESTAMP формат: `[bot YYYY-MM-DD HH:MM] Task ID: XXX`
- Task vs Report Task ID порівнюються **рядково**, не по змісту
- Signal через PostToolUse hook автоматично після Write `~/comms/{bot}-report.md`