Skip to content

feat: Scope weekly report to core repos #57

Description

@rubambiza

Summary

Scope the weekly GitHub org report to the curated core repos (config/core-repos.txt) instead of discovering every repo in the org.

Problem

The weekly report cron runs report.py --org rossoctl, and report.py discovers repos via gh repo list rossoctl — every repo in the org, archived and non-core alike. The org has since adopted a core-repo allowlist (config/core-repos.txt), exposed to shell programs through get_core_repos() / is_core_repo() in the shared library. The report is the only automation surface that still ignores the allowlist, so it reports on repos nobody is committing to maintain.

Proposal

Two layers, mirroring the scanner/fixer convention (a .sh wrapper in scripts/ sources the shared library, then shells out to the tool):

  1. Report generator (agent-skills): add an optional --repos flag (owner-qualified names) to report.py and epic-tracker.py. When present, use exactly those repos and skip org-wide discovery; when absent, behavior is unchanged (backward compatible). report.py passes --repos through to epic-tracker.py so Active Epics is scoped consistently. The scripts stay OpenClaw-agnostic — they know nothing about the allowlist or the host.
  2. Wrapper (automation): new scripts/weekly-report.sh that sources the shared library, resolves the org via load_org_profile, gets the list via get_core_repos, and invokes the generator with --org <org> --repos <core repos>. The weekly-report cron switches to calling this wrapper.

This keeps core-repos.txt (via the shared library) the single source of truth for "which repos"; the report follows the allowlist with no code change if it grows or shrinks.

Non-goals

Acceptance

  • With --repos present, the report body and Active Epics reflect only the repos in core-repos.txt; no gh repo list call is made.
  • With --repos absent, report.py / epic-tracker.py output is unchanged (org-wide).
  • weekly-report.sh follows the existing program-wrapper conventions and sources the shared library for the repo set.
  • The weekly-report cron invokes the wrapper and posts a core-scoped report.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions