Part of #72 (Phase 1).
Replace $ORG + core-repos.txt with per-repo {owner, name} tuples throughout automation/ scripts. This is the foundational change that unblocks every later phase.
Scope
scripts/org.sh: add repoman_get_repos() reading ~/.repoman/repos.json and emitting owner/name pairs. get_core_repos() becomes a thin wrapper that loads repos.json if present and falls back to $ORG + core-repos.txt if not.
link-health-scanner.sh, link-health-fixer.sh, dep-bump-scanner.sh, dep-bump-fixer.sh: replace the for repo_dir in "$REPOS_DIR"/*/ loop with iteration over the --repos owner/name ... arg list.
Companion (agent-skills)
The matching change on the report side is rossoctl/agent-skills#37 (carry {owner, name} through report.py, drop the cross-owner rejection). It is paired with this phase.
Backward compatibility
Scripts still accept --org + bare --repos names. The new owner/name form is additive. A deployer with no repos.json sees no change.
Assisted-By: Claude Code
Part of #72 (Phase 1).
Replace
$ORG+core-repos.txtwith per-repo{owner, name}tuples throughoutautomation/scripts. This is the foundational change that unblocks every later phase.Scope
scripts/org.sh: addrepoman_get_repos()reading~/.repoman/repos.jsonand emittingowner/namepairs.get_core_repos()becomes a thin wrapper that loadsrepos.jsonif present and falls back to$ORG+core-repos.txtif not.link-health-scanner.sh,link-health-fixer.sh,dep-bump-scanner.sh,dep-bump-fixer.sh: replace thefor repo_dir in "$REPOS_DIR"/*/loop with iteration over the--repos owner/name ...arg list.Companion (agent-skills)
The matching change on the report side is rossoctl/agent-skills#37 (carry
{owner, name}throughreport.py, drop the cross-owner rejection). It is paired with this phase.Backward compatibility
Scripts still accept
--org+ bare--reposnames. The newowner/nameform is additive. A deployer with norepos.jsonsees no change.Assisted-By: Claude Code