CI/CD & Automation Advanced
Multi-Repo Batch Operations
Run Claude across multiple repositories in a single automated sweep
Command
$ "color:#7C5CFC">for repo in repo1 repo2 repo3; "color:#7C5CFC">do "color:#7C5CFC">echo "=== $repo ===" ("color:#7C5CFC">cd "$repo" && CLAUDECODE="" "color:#7C5CFC">claude -p \ "Summarize recent changes and flag any issues" \ "color:#d97757">--output-format json \ "color:#d97757">--max-budget-usd 0.50 \ "color:#d97757">--no-session-persistence \ "color:#d97757">--permission-mode bypassPermissions) "color:#7C5CFC">done
Response
=== repo1 ===
{ "result": "3 files changed in auth module...", "total_cost_usd": 0.12 }
=== repo2 ===
{ "result": "No significant changes...", "total_cost_usd": 0.04 } Parsing Code
059669">">const repos = [059669059669">">'repo1', 059669059669">">'repo2', 059669059669">">'repo3']; 059669">">for (059669">">const repo 059669">">of repos) { 059669">">const data = JSON.parse(execFileSync(059669059669">">'claude', [ 059669059669">">'-p', 059669059669">">'Summarize changes', 059669059669">">'--output-format', 059669059669">">'json', 059669059669">">'--no-session-persistence', 059669059669">">'--permission-mode', 059669059669">">'bypassPermissions' ], { cwd: repo, encoding: 059669059669">">'utf-8', env: { ...process.env, CLAUDECODE: 059669059669">">'' } })); console.log(059669">`${repo}: $${data.total_cost_usd}`); }
Gotchas
! Each repo runs in its own cwd — CLAUDE.md is read per-repo
! Use --no-session-persistence for batch operations to avoid disk pollution