Skip to main content

Offline-first GitHub issue and pull request health reports for open-source maintainers.

Project description

Maintainer Pulse

Maintainer Pulse turns GitHub issue and pull request data into a short, actionable maintenance report. It is built for open-source maintainers who need to answer:

  • What should I review before the next release?
  • Which pull requests are stuck?
  • Which issues have not received a maintainer response?
  • What can a new contributor safely pick up?

The tool is offline-first. You can run it against exported GitHub JSON without a token, or fetch live issue and pull request data from the GitHub API.

CI Package Maintainer Pulse

Maintainer Pulse terminal preview

Features

  • Release blocker, stuck pull request, stale item, first-response, and quick-win queues.
  • Markdown, HTML, JSON, and CSV output.
  • Reusable GitHub Action for scheduled reports.
  • No runtime dependencies.
  • Deterministic scoring that can be reviewed and changed by maintainers.
  • GitHub Actions CI and fixture-based tests.

Install

From GitHub:

python -m pip install git+https://github.com/alibert99/oss-maintainer-pulse.git

From a local checkout:

python -m pip install .

For local development:

python -m venv .venv
source .venv/bin/activate
python -m pip install -e ".[dev]"
pytest

Usage

Analyze an exported GitHub issues payload:

maintainer-pulse example/project \
  --input examples/github_items.json \
  --output maintainer-pulse-report.md

Fetch live data from GitHub:

export GITHUB_TOKEN=github_pat_your_token_here
maintainer-pulse octo-org/octo-repo --format html --output report.html

Generate machine-readable output:

maintainer-pulse octo-org/octo-repo --format json

Generate spreadsheet-friendly output:

maintainer-pulse octo-org/octo-repo --format csv --output maintainer-pulse-report.csv

See examples/sample-report.md for a generated report. See examples/sample-report.csv for spreadsheet-friendly output.

GitHub Action

Run Maintainer Pulse weekly and upload a report artifact:

name: Maintainer Pulse

on:
  workflow_dispatch:
  schedule:
    - cron: "17 9 * * 1"

permissions:
  contents: read
  issues: read
  pull-requests: read

jobs:
  report:
    runs-on: ubuntu-latest
    steps:
      - uses: alibert99/oss-maintainer-pulse@v0.1.4
        id: pulse
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          output: maintainer-pulse-report.md
      - uses: actions/upload-artifact@v7
        with:
          name: maintainer-pulse-report
          path: ${{ steps.pulse.outputs.report-path }}

See docs/github-action.md for all inputs.

Distribution

Output Queues

Maintainer Pulse groups work into five queues:

  • release_blockers: open issues and pull requests with labels such as security, regression, critical, release, p0, or p1.
  • stuck_pull_requests: pull requests idle for at least seven days or labeled for review.
  • response_debt: open items with zero comments and at least three idle days.
  • stale_items: open items idle beyond the configured stale threshold.
  • quick_wins: small contributor-friendly issues labeled good first issue, help wanted, documentation, or starter.

CSV output includes one row per queued item with the queue name, item number, type, state, labels, author, comment count, idle days, age days, timestamps, and URL.

Project Status

This project is alpha. The CLI and report fields may change as maintainers test it against real repositories.

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

oss_maintainer_pulse-0.1.4.tar.gz (14.2 kB view details)

Uploaded Source

Built Distribution

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

oss_maintainer_pulse-0.1.4-py3-none-any.whl (13.4 kB view details)

Uploaded Python 3

File details

Details for the file oss_maintainer_pulse-0.1.4.tar.gz.

File metadata

  • Download URL: oss_maintainer_pulse-0.1.4.tar.gz
  • Upload date:
  • Size: 14.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for oss_maintainer_pulse-0.1.4.tar.gz
Algorithm Hash digest
SHA256 5895351ae830d85f044afac97f1eaef306061dfe5077e8aad3346c6422c6a89a
MD5 9da54c411d14bb256dc1b9a1bed25814
BLAKE2b-256 ae26ee3ebddd2a149f117acb8b8f966e26361992d4434ae26f2cfd3cf13af5e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for oss_maintainer_pulse-0.1.4.tar.gz:

Publisher: publish-pypi.yml on alibert99/oss-maintainer-pulse

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

File details

Details for the file oss_maintainer_pulse-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for oss_maintainer_pulse-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 3fb33fd19ed83b6c58f0883b1967b25f420340db6a6266e671e7e1978c69b429
MD5 859afbd3e4b613ef4780f1745112061c
BLAKE2b-256 6d5a1f252bed6cd0567a2d23e8046f6c0e501ad46c450d90ea3d8026dbfaa22b

See more details on using hashes here.

Provenance

The following attestation bundles were made for oss_maintainer_pulse-0.1.4-py3-none-any.whl:

Publisher: publish-pypi.yml on alibert99/oss-maintainer-pulse

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