Skip to content

Latest commit

 

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Open330 Repo Pulse Logo

Open330 Repo Pulse

Scan GitHub organization repositories and detect maintenance risk in seconds

Rust 2024 Reqwest Clap Serde MIT License

Quick Start ->

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.

Features

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).

Supported Formats

Format Use Case
table Human-friendly terminal triage output
markdown Paste into issues, PRs, and docs
json Feed CI jobs and automation tooling

Sort Modes

Mode Behavior
health Prioritize at-risk repositories first
updated Show most recently pushed repositories first
name Stable alphabetical ordering

CLI Options

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)

Export Presets

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

Keyboard Shortcuts

Action Shortcut
Repeat previous command + Enter
Search command history Ctrl+R
Interrupt current scan Ctrl+C
Clear terminal Ctrl+L

Architecture

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

Tech Stack

Layer Technology
Language Rust (edition 2024)
CLI clap
HTTP reqwest (blocking + rustls)
Serialization serde + serde_json
Time handling chrono
Error handling anyhow

Quick Start

# 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.md

Run Tests

cargo test

Typecheck & Lint

cargo check
cargo clippy --all-targets --all-features -- -D warnings
cargo fmt --check

Build

cargo build --release

Deploy

No server deployment is required. For team distribution:

  1. Build release binary: cargo build --release
  2. Publish source to GitHub
  3. Optionally install locally with cargo install --path .

Environment note: GITHUB_TOKEN is optional for public scans, and mandatory when --include-private is used.

Acknowledgements

  • GitHub REST API for repository metadata.
  • Rust CLI ecosystem (clap, reqwest, serde, chrono, anyhow) for fast, reliable tooling.

License

MIT


Built for maintainers who need a fast, scriptable repository health pulse.

About

Rust CLI to scan GitHub org repositories and score maintenance health.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages