Skip to content

WorkBright/codepulse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Codepulse

Gem Version Build

Measure how fast your team picks up and merges pull requests. Powered by the GitHub CLI.

Installation

Prerequisites

  1. Ruby 3.0+
  2. GitHub CLIInstall and authenticate:
    gh auth login

Install from RubyGems

gem install codepulse

Install from source

git clone https://github.com/WorkBright/codepulse.git
cd codepulse
gem build codepulse.gemspec
gem install codepulse-*.gem

Usage

# In a git repo (auto-detects owner/repo)
codepulse

# Or specify explicitly
codepulse owner/repo

Options

Option Description Default
-s, --state STATE open, closed, or all all
-l, --limit COUNT Max PRs to fetch auto
--business-days DAYS PRs from last N business days 7
--date-range RANGE Date range (YYYY-MM-DD..YYYY-MM-DD)
--details Show individual PR table (sorted by slowest pickup) off
--gh-command PATH Custom gh executable path gh

Examples

# Summary for current repo (last 7 business days)
codepulse

# Summary for specific repo
codepulse rails/rails

# With individual PR details
codepulse rails/rails --details

# Last 30 business days, limit 50 PRs
codepulse rails/rails --business-days 30 --limit 50

# Metrics for a specific date range
codepulse rails/rails --date-range 2025-10-01..2025-12-31

Output

======================================================================================
  Codepulse PR Metrics Report | Last 7 business days (Dec 16 - Dec 24)
  rails/rails
======================================================================================

  Pickup time:    Time from PR creation to first reviewer response (business days)
  Time to merge:  Time from PR creation to merge (business days)
  PR size:        Net lines changed (additions - deletions)
  Files changed:  Number of files modified in the PR

--------------------------------------------------------------------------------------
  SUMMARY (18 PRs with pickup, 3 awaiting pickup, 2 merged without pickup)
--------------------------------------------------------------------------------------

  Average pickup time:  4h 23m
  Median pickup time:   2h 15m
  Fastest pickup time:  8m
  Slowest pickup time:  2d 5h

  ...

What is calculated

  • Pickup time: Time from PR creation to first non-author response (business days, excludes US holidays)
  • Time to merge: Time from PR creation to merge (business days, excludes US holidays)
  • PR size: Net lines (additions − deletions) and files changed
  • Stats: Average, median, p95 (when 50+ PRs), fastest, slowest

Filters

  • Default 7 business days: Only analyzes recent PRs
  • Closed unmerged PRs excluded: Abandoned PRs are filtered out
  • Bots ignored: Copilot, GitHub Actions, and other bot reviewers don't count as pickup
  • US holidays excluded: Federal holidays are not counted as business days

Development

# Run local version without installing (picks up your changes immediately)
bin/codepulse owner/repo

# Run tests
rake test

# Lint
rubocop

# Build and install locally
rake install

# Release new version (bumps tag, pushes to git and RubyGems)
rake release

License

MIT

About

Github PR Metrics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages