chore(claude): agents view readiness — cleanup, .worktreeinclude, workflow #497
No reviewers
Labels
No labels
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
Fable 5 ревью
feedback/max
generative
GG-форсайт
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
вторичка
ИРД
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#497
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "chore/agents-view-readiness"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Подготовка для перехода на
claude agents(Agent View) как daily-driver workflow вместо одиночной session + subagent spawning. Это 2026 фича Claude Code — dashboard для управления 3-5 background sessions одновременно, каждая в своей worktree.Changes
1.
scripts/cleanup-merged-worktrees.sh(new, executable)Удаляет worktrees чьи branches уже merged в
forgejo/main. Safe — используетgit merge-base --is-ancestor, не трогает unmerged WIP. Для cron weekly или ручного запуска после merge bursts.Текущая утилизация (до merge этого PR): 102 worktrees, 14GB в
.claude/worktrees/. После одного прогона script'а удалил 3 (только non-squash-merged). 99 worktrees остаются — это unmerged WIP или squash-merged (где local SHA не ancestor remote main). Aggressive cleanup (по возрасту + Forgejo PR API check) — отдельным future PR если станет критично.2.
.worktreeinclude(new)Список gitignored файлов которые auto-копируются в каждую новую worktree (Anthropic feature):
backend/.env,backend/.env.runtime— иначе backend не стартанётfrontend/.env.local— иначе API_BASE_URL отсутствует.mcp.json— иначе Obsidian MCP не подключитсяБез этого каждая background session = broken environment.
3.
.claude/rules/git-pr.mdupdatesНовая MANDATORY workflow — default через
claude --bg --name Xbackground session:forgejo/mainчерезworktree.baseRef: freshв settings)Foreground (
git checkout -b feat/X forgejo/main) — fallback для ad-hoc / интерактивных fixes.Session naming MANDATORY:
--name "<type>-<scope>-<detail>"(kebab-case ≤30). Resume:claude --resume X. Filter в agent view: type prefix в input.Polling section обновлён — preferred path = agent view row status (no manual loop), foreground fallback = Skill loop с MCP.
Новая секция
Multi-session workflow (Agent View)— параллелизм budget (3-5),Ctrl+Tpin для long-running, deprecation manualgit worktree add, weekly cleanup script reference.Local-only (NOT in this PR)
.claude/settings.jsonдополнен:baseRef: freshисправляет первопричину PR #494 (новые ветки создавались от текущей stale-сессии вместо main).bgIsolation: worktreeявно фиксирует Anthropic-2026 default — каждая background session ест в собственной worktree, main checkout не трогается.Файл gitignored как личная preference (per team-shared
.gitignorerule).Test plan
claude agentsоткрыть → dispatch test sessionclaude --bg --name test-agents-view "echo hello"→ row появится → peek → attach → детач (←)worktree.baseRef: freshверификация: создать новую background session → checkgit -C .claude/worktrees/agent-XXX log --oneline -1→ должен начинаться отforgejo/mainSHA, не от текущей session-веткиcleanup-merged-worktrees.shre-run weekly когда.claude/worktrees/>100 dirsOut of scope (deferred)
--is-ancestorпропускает squash-mergedNotes
Pure infrastructure / docs. No app code touched. Не триггерит deploy.yml.
Подготовка к переходу на 'claude agents' dashboard как daily driver: - scripts/cleanup-merged-worktrees.sh: removes worktrees whose branch is ancestor of forgejo/main. Run weekly via cron or manually after merge bursts. Safe — skips unmerged branches and current worktree. - .worktreeinclude: copies .env files + .mcp.json into every new worktree (otherwise backend/frontend/MCP fail to start in fresh worktrees Claude creates for background sessions). - .claude/rules/git-pr.md: - new MANDATORY workflow: default 'claude --bg --name X' background session (auto worktree, auto baseRef=fresh) vs foreground fallback - session naming convention (--name kebab-case) - polling section: preferred (agents view row status ●) vs foreground fallback (Skill loop) - new 'Multi-session workflow (Agent View)' section: parallelism budget, Ctrl+T pin, deprecated 'manual git worktree add', weekly cleanup ref Local-only (not in this PR): - .claude/settings.json: worktree.{baseRef:fresh, bgIsolation:worktree} (gitignored as personal preference) Pre-cleanup state: 102 worktrees / 14GB. After: 99 / 14GB — only 3 squash- merged branches removed via safe --is-ancestor check; 99 retained as unmerged WIP. Aggressive cleanup (by age + Forgejo PR check) — future PR.Merged via deep-code-reviewer — verdict APPROVE (MINOR nits, non-blocking).
Security:
.worktreeincludecontains only path patterns (no secret values). Parent.gitignorelines 25-29 (.env,.env.local,.env.runtime,.mcp.json) + line 56 (.claude/worktrees/) ensure copied files remain ignored even when reached via worktree paths.Cleanup script safety:
git merge-base --is-ancestorcorrectly skips unmerged WIP, force-pushed orphans, and squash-merged branches. Skips main worktree and detached HEADs.--forceon remove is required because supervisor locks worktrees — acceptable since only merged branches are touched.git-pr.md updates: consistent with existing memory (
feedback_use_loop_skill_for_pr_pollingpreserved as foreground fallback,feedback_no_self_reviewexternal window flow unchanged). Default workflow nowclaude --bg --name <type-scope-detail>.Nits (low, can land in next chore PR):
set -eonly —set -euo pipefailis more defensiveREMOVED/KEPTcounters incremented in subshell (piped while loop) won't propagate to parent — cosmetic, never printed--forceon a merged-but-locally-uncommitted worktree will discard those uncommitted changes — extremely unlikely scenario (work is already in main), but worth agit status --porcelaincheck pre-remove if you want extra paranoiadwa разаtypo, soft-hyphens inweekly cron