Skip to main content

A CLI tool that analyzes GitHub repository health and generates quality reports.

Project description

RepoPulse

CI CodeQL PyPI version Python License: MIT

RepoPulse is a Python CLI that scans GitHub repositories (or a local folder) and produces a practical health report: score out of 100, pass/warn/fail checks, and actionable recommendations.

It is built for developers who want a quick quality review from the terminal, and for maintainers who want a small tool in CI, release prep, or issue triage.

Name
Install from PyPI repopulse-cli
CLI command repopulse
Python import repopulse

Important: Do not run pip install repopulse. That installs an unrelated package on PyPI. Always use repopulse-cli.

Install (for users)

pip install repopulse-cli
repopulse --help

Upgrade:

pip install -U repopulse-cli

Optional isolated environment (recommended if other tools pin different dependency versions):

python -m venv .venv
# Windows PowerShell:
.\.venv\Scripts\Activate.ps1
# macOS / Linux:
# source .venv/bin/activate
pip install repopulse-cli

From a GitHub Release wheel (if you prefer not to use PyPI):

pip install https://github.com/3ssiri/RepoPulse/releases/download/v0.3.3/repopulse_cli-0.3.3-py3-none-any.whl

Full install notes: INSTALLATION.md.

Quick start

# Local directory (offline — no GitHub API)
repopulse scan .

# Public GitHub repository
repopulse scan https://github.com/psf/requests

# Specific branch or tag (no local checkout)
repopulse scan https://github.com/psf/requests/tree/main
repopulse scan https://github.com/psf/requests --ref v2.32.0

# CI gate
repopulse scan https://github.com/username/repository --fail-under 75 --format summary --quiet

# Compare two refs or checkouts
repopulse compare \
  https://github.com/owner/repo/tree/main \
  https://github.com/owner/repo/tree/feature/pr-42 \
  --fail-on-regression

# Preview GitHub issues from fail/warn checks
repopulse create-issues https://github.com/owner/repo --dry-run

Private repos: pass --token or set GITHUB_TOKEN. Details: USAGE.md.

Features (current)

Scanning

  • Scan public GitHub repositories by URL.
  • Scan a local directory offline: repopulse scan . (no API, no rate limits).
  • Scan a specific branch, tag, or commit via URL (/tree/<ref>, /releases/tag/<tag>) or --ref.
  • Scan private repositories with --token or GITHUB_TOKEN.
  • Shared check pipeline for remote and local sources.

Reports and output

  • Score out of 100 with grades (Excellent → Critical).
  • Rich terminal table (default).
  • Formats: table, summary, markdown, json, issues.
  • Export Markdown (--export) and write any format to a file (--output).
  • Stable JSON contract (schema_version 1.0) — see docs/json-schema.md.
  • Richer Markdown: pass/warn/fail counts, attention sections, applied config.

Compare

  • repopulse compare <baseline> <target> — local paths and/or GitHub URLs.
  • Per-side refs: tree URLs or --baseline-ref / --target-ref.
  • Formats: table, markdown, json, summary.
  • CI gate: --fail-on-regression (exit code 2 if score drops or any check regresses).

Issues and automation

  • --format issues — paste-ready Markdown for fail/warn checks.
  • repopulse create-issues — open real GitHub issues (--dry-run or --yes).
  • CI example: examples/github-action-repopulse.yml.
  • Optional config .repopulse.yml with profiles: strict, library, docs, release.

Safety

  • Detects common sensitive file names (.env, keys, credentials) without printing file contents.
  • Advisory dependency and security baseline checks (recommendations; do not change the 100-point score by default).

Commands

Command Purpose
repopulse scan <url-or-path> Health report for one repository or folder.
repopulse compare <baseline> <target> Diff two health reports.
repopulse create-issues <url-or-path> Create GitHub issues from fail/warn checks.

Configuration

RepoPulse reads .repopulse.yml from the current directory when present, or via --config:

repopulse scan . --config examples/repopulse.yml
profile: release   # optional: strict | library | docs | release
fail_under: 90
disabled_checks:
  - activity
weights:
  tests: 25
  github_actions: 20

Ready-made profiles: examples/profiles/.

Scoring (default weights)

Check Points
README Quality 20
License 10
.gitignore 10
Tests 15
GitHub Actions 15
Recent Activity 10
Sensitive Files 10
Project Structure 5
Package Scripts 5
Score Grade
90–100 Excellent
75–89 Good
60–74 Fair
40–59 Weak
0–39 Critical

Dependency and security baseline checks are advisory: they add recommendations without changing the scored total.

Full check reference: docs/checks.md.

Example output

RepoPulse Health Report for psf/requests
Score: 91 / 100 - Excellent

Checks
README Quality      PASS   16/20
License             PASS   10/10
.gitignore          PASS   10/10
Tests               WARN   12/15
GitHub Actions      PASS   15/15

Install for contributors / from source

git clone https://github.com/3ssiri/RepoPulse.git
cd RepoPulse
pip install -e ".[dev]"
pytest

See CONTRIBUTING.md and INSTALLATION.md.

Documentation

Doc Contents
INSTALLATION.md PyPI, wheel, source, tokens, troubleshooting
USAGE.md All commands, flags, CI, config, exit codes
REQUIREMENTS.md Runtime and dev dependencies
docs/checks.md What each check evaluates
docs/json-schema.md JSON report contract
docs/PUBLISHING.md Releases and PyPI publishing (maintainers)
docs/roadmap.md Product roadmap
ARCHITECTURE.md How the code is structured
CHANGELOG.md Version history
README.ar.md Arabic summary
README.es-ES.md Spanish summary

Requirements

  • Python 3.11+
  • Network access to api.github.com for remote scans
  • GitHub token for private repos, higher rate limits, or create-issues --yes

Contributing

Contributions are welcome. Keep checks independent, return CheckResult, and add focused tests.

See CONTRIBUTING.md.

License

MIT — see LICENSE.

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

repopulse_cli-0.3.3.tar.gz (46.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

repopulse_cli-0.3.3-py3-none-any.whl (40.3 kB view details)

Uploaded Python 3

File details

Details for the file repopulse_cli-0.3.3.tar.gz.

File metadata

  • Download URL: repopulse_cli-0.3.3.tar.gz
  • Upload date:
  • Size: 46.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for repopulse_cli-0.3.3.tar.gz
Algorithm Hash digest
SHA256 b51cdbfa9cc8c09524d8106df430da13d29f5ea15419a4e2cdd0ddecb82f2c1e
MD5 61a750bbdaa115d8aa24b3392acea734
BLAKE2b-256 dc6cc57f9c54faba29b12c694fa7885cbff31da54e4b00dc070223239d614947

See more details on using hashes here.

Provenance

The following attestation bundles were made for repopulse_cli-0.3.3.tar.gz:

Publisher: release.yml on 3ssiri/RepoPulse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file repopulse_cli-0.3.3-py3-none-any.whl.

File metadata

  • Download URL: repopulse_cli-0.3.3-py3-none-any.whl
  • Upload date:
  • Size: 40.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for repopulse_cli-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 3911e235c7127a1b499d578d36314165306fd466ea678f7bd02bde88758c8908
MD5 861c59f2b17a016ce61d1e099f71d407
BLAKE2b-256 fb66030354cd18a637eb1f6dcc97075ae270879367c8f1aaa4bd2f51568a7962

See more details on using hashes here.

Provenance

The following attestation bundles were made for repopulse_cli-0.3.3-py3-none-any.whl:

Publisher: release.yml on 3ssiri/RepoPulse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page