Scan GitHub organization repositories and detect maintenance risk in seconds
Repo Pulse fetches repositories from a GitHub organization, scores each repo's maintenance health, and outputs actionable reports in table, Markdown, or JSON format.
You are an AI agent working on open330-repo-pulse, a Rust 2024 CLI that
scans GitHub organization repositories, scores maintenance health, and emits
table/Markdown/JSON reports for triage and automation workflows.
Clone https://github.com/Open330/open330-repo-pulse and help improve scoring,
add output integrations, or tune risk heuristics for large organizations.
Organization Scan -- Pull repositories from any GitHub organization through the REST API with optional private repository support via --include-private + GITHUB_TOKEN.
Risk Scoring -- Calculate health scores (0-100) using activity recency, repository metadata quality, archive status, and engagement signal.
Status Buckets -- Classify each repository as healthy, watch, or stale so maintainers can prioritize action quickly.
Multi-Format Output -- Render reports as readable terminal tables, Markdown for issues/docs, or JSON for automation pipelines.
Display Filters -- Focus triage output with --status and --max-results while keeping scan-level summary context.
CI Quality Gates -- Use --fail-on watch|stale to make automation fail fast when at-risk repositories are detected.
Report Export -- Save rendered output directly to a file using --output-file for artifact pipelines.
Richer Context Columns -- Include default branch and fork count in tabular output, while notes flags key context such as archived/private repositories and metadata gaps.
Deterministic Sorting -- Sort by health, update recency, or repository name depending on the workflow.
Safe Defaults -- Defaults tuned for org-level triage: --org open330, --max-repos 100, --stale-days 45 (inclusive stale boundary).
| Format | Use Case |
|---|---|
table |
Human-friendly terminal triage output |
markdown |
Paste into issues, PRs, and docs |
json |
Feed CI jobs and automation tooling |
| Mode | Behavior |
|---|---|
health |
Prioritize at-risk repositories first |
updated |
Show most recently pushed repositories first |
name |
Stable alphabetical ordering |
| Option | Default | Description |
|---|---|---|
--org |
open330 |
Target GitHub organization |
--max-repos |
100 |
Maximum repositories to fetch |
--stale-days |
45 |
Inclusive stale threshold in days (>= is stale) |
--format |
table |
Output format: table, markdown, json |
--sort |
health |
Sort mode: health, updated, name |
--include-private |
false |
Include private repositories (requires non-empty GITHUB_TOKEN) |
--status |
(none) | Filter displayed repositories by healthy, watch, or stale |
--max-results |
(none) | Limit displayed repository rows |
--output-file |
(none) | Write rendered report output to a file path |
--fail-on |
none |
Exit non-zero when watch/stale conditions are met (none, watch, stale) |
| Preset | Command |
|---|---|
| Default org triage | cargo run -- |
| Weekly markdown report | cargo run -- --format markdown --sort health |
| Automation JSON feed | cargo run -- --format json --sort updated |
| Multi-org scan | cargo run -- --org rust-lang --max-repos 80 --stale-days 60 |
| Stale-only top 20 triage | cargo run -- --status stale --max-results 20 --sort health |
| CI quality gate (fail on watch/stale) | cargo run -- --format json --fail-on watch |
| Persist report artifact | cargo run -- --format markdown --output-file ./repo-pulse.md |
| Action | Shortcut |
|---|---|
| Repeat previous command | ↑ + Enter |
| Search command history | Ctrl+R |
| Interrupt current scan | Ctrl+C |
| Clear terminal | Ctrl+L |
open330-repo-pulse/
├── assets/
│ └── logo.svg # README logo
├── src/
│ ├── main.rs # CLI argument parsing and execution flow
│ ├── lib.rs # Module exports
│ ├── github.rs # GitHub REST client + pagination
│ ├── report.rs # Health scoring, classification, sorting, tests
│ └── output.rs # Table/Markdown/JSON rendering
└── Cargo.toml # Rust dependencies and package metadata
| Layer | Technology |
|---|---|
| Language | Rust (edition 2024) |
| CLI | clap |
| HTTP | reqwest (blocking + rustls) |
| Serialization | serde + serde_json |
| Time handling | chrono |
| Error handling | anyhow |
# Clone
git clone https://github.com/Open330/open330-repo-pulse.git
cd open330-repo-pulse
# Run with defaults (scans open330)
cargo run --
# Scan another org and emit markdown report
cargo run -- --org rust-lang --max-repos 80 --stale-days 60 --format markdown --sort updated
# Include private repositories (requires token scope)
export GITHUB_TOKEN=ghp_your_token
cargo run -- --org Open330 --include-private --format table
# Show only stale repositories and fail CI if any stale repos exist
cargo run -- --status stale --max-results 25 --fail-on stale
# Write output to a markdown artifact file
cargo run -- --format markdown --output-file ./artifacts/repo-pulse.mdcargo testcargo check
cargo clippy --all-targets --all-features -- -D warnings
cargo fmt --checkcargo build --releaseNo server deployment is required. For team distribution:
- Build release binary:
cargo build --release - Publish source to GitHub
- Optionally install locally with
cargo install --path .
Environment note: GITHUB_TOKEN is optional for public scans, and mandatory when --include-private is used.
- GitHub REST API for repository metadata.
- Rust CLI ecosystem (
clap,reqwest,serde,chrono,anyhow) for fast, reliable tooling.
MIT
Built for maintainers who need a fast, scriptable repository health pulse.