| name | analytics-repo-pruning |
| description | Flag archived or inactive repos in PatternFly Analytics repos.json for removal. Use when auditing tracked codebases or pruning stale entries from analytics. |
Analytics repo pruning
Keep PatternFly Analytics from tracking archived repositories and repos with no meaningful code activity past a configurable threshold (default 730 days).
Plugin placement
This skill lives under pf-workshop as cross-repo / analytics inventory work (repository health and maintenance).
Input
- File:
repos.json (project root or path the user supplies). Expect a top-level repos array; each entry has git (clone URL) and name (display label).
Outcomes
For every row, assign one bucket:
| Bucket | Meaning |
|---|
| archived | Host marks the project archived / read-only |
| stale | Last code activity is before the cutoff |
| could not verify | Auth failure, network, or unsupported host—not the same as stale |
| active | Neither archived nor stale |
Use the host’s best signal for real code activity (e.g. last push to the default branch), not noisy metadata-only updates. Field names and API notes: reference.md.
How to work
- Read
repos.json and collect all git URLs with their name.
- For each URL, determine host (GitHub, GitLab including private instances, or other).
- Query the host using whatever authenticated access the user’s environment already provides (host CLI, REST with tokens, etc.). Prefer a deterministic per-repo lookup; if one path fails, try another before giving up.
- Do not treat auth or network failures as “stale”—bucket those as could not verify with a short reason.
- Produce the report below. Do not remove or edit
repos.json entries unless the user explicitly asks.
Edge cases
- 404 / moved / renamed: Flag for manual verification; do not assume delete.
- Forks and mirrors: Same rules; stale mirrors may still be poor analytics targets.
- Unknown hosts: could not verify with explanation—not stale.
Optional script
For a repeatable local run, execute the bundled Bash script scripts/analytics-repo-pruning.sh next to this skill. Requires jq and either gh or curl (typically pre-installed). Pass the path to repos.json; optional --days <n> and --json. Does not modify repos.json.
Report format
Use markdown with:
- Threshold (days) and run date
- Archived — table: name, git, notes
- Stale — table: name, git, last activity (and which field was used)
- Could not verify — table: name, git, reason
- Active — brief count or one-line summary
Good output: Clear buckets, honest “unknown,” timestamps tied to named fields, no silent edits to the JSON file.
Bad output: Calling repos stale because API calls failed, or pruning the list without explicit user consent.
Additional resources
- reference.md — host APIs, fields, encoding, and CLI patterns