DORA and velocity metrics for GitHub repositories.
| Subcommand | Description |
|---|---|
metrics velocity |
PR velocity metrics - merge cadence, review turnaround, cycle time |
metrics dora |
DORA metrics - deploy frequency, lead time, failure rate, MTTR |
Show PR velocity metrics - merge cadence, review turnaround, cycle time.
dobbe metrics velocity [OPTIONS]
metrics velocity analyzes pull request activity for a GitHub repository over a configurable time period. It computes merge cadence (how often PRs land), average review turnaround (time from open to first review), and end-to-end cycle time (time from first commit to merge). Results can be rendered as a table, JSON, or markdown, and optionally sent to Slack or Jira.
┌─────────────────────────────────────────────┐
│ dobbe metrics velocity --target org/repo │
└──────────────────────┬──────────────────────┘
│
v
┌─────────────────────────────────────────────┐
│ Resolve target │
│ --target flag > CWD auto-detect > config │
│ default_org │
└──────────────────────┬──────────────────────┘
│
v
┌─────────────────────────────────────────────┐
│ Validate target format │
│ Must be OWNER/REPO (contains "/") │
└──────────────────────┬──────────────────────┘
│
v
┌─────────────────────────────────────────────┐
│ Generate velocity report │
│ - Fetch PR data via GitHub API │
│ - Compute merge cadence │
│ - Compute review turnaround │
│ - Compute cycle time │
│ - Period: 30d / 90d / 1y │
└──────────────────────┬──────────────────────┘
│
v
┌─────────────────────────────────────────────┐
│ Build MetricsReport (velocity section) │
│ - Captures velocity data or error │
└──────────────────────┬──────────────────────┘
│
v
┌─────────────────────────────────────────────┐
│ Render output │
│ --format table (default) / json / markdown │
│ --output file (optional) │
└──────────────────────┬──────────────────────┘
│
v
┌─────────────────────────────────────────────┐
│ Optional: Notify │
│ --notify slack -> post to --channel │
│ --notify jira -> create tickets │
└─────────────────────────────────────────────┘
| Option | Type | Default | Description |
|---|---|---|---|
--target / -t |
str |
- | Org/repo to analyze (OWNER/REPO). Env: DOBBE_ORG |
--period / -p |
str |
30d |
Time period: 30d, 90d, 1y |
--format / -f |
str |
table |
Output format: table, json, markdown. Env: DOBBE_FORMAT |
--output |
str |
- | Write output to file instead of stdout |
--notify |
str |
- | Send report to platform (slack, jira) |
--channel |
str |
- | Notification channel (e.g., #engineering) |
--quiet / -q |
bool |
False |
Suppress progress output, only show final result |
When --target is not provided, metrics velocity attempts to detect the repository from the current working directory by reading the git remote. If detection fails (e.g., you are not inside a git repo), it falls back to the default_org value in your configuration file.
The resolved target must be in OWNER/REPO format. Org-only values are rejected.
dobbe metrics velocity --target acme/web-app
cd ~/projects/api
dobbe metrics velocity --period 90d
dobbe metrics velocity --target acme/web-app --format json --output velocity.json
dobbe metrics velocity --target acme/web-app --notify slack --channel "#engineering"
dobbe metrics velocity --target acme/web-app --quiet --format json --output velocity.json
Show DORA metrics - deploy frequency, lead time, change failure rate, MTTR.
dobbe metrics dora [OPTIONS]
metrics dora computes the four key DORA (DevOps Research and Assessment) metrics for a GitHub repository: deployment frequency, lead time for changes, change failure rate, and mean time to recovery (MTTR). These are the industry-standard indicators of software delivery performance. Results can be rendered as a table, JSON, or markdown, and optionally sent to Slack or Jira.
┌─────────────────────────────────────────────┐
│ dobbe metrics dora --target org/repo │
└──────────────────────┬──────────────────────┘
│
v
┌─────────────────────────────────────────────┐
│ Resolve target │
│ --target flag > CWD auto-detect > config │
│ default_org │
└──────────────────────┬──────────────────────┘
│
v
┌─────────────────────────────────────────────┐
│ Validate target format │
│ Must be OWNER/REPO (contains "/") │
└──────────────────────┬──────────────────────┘
│
v
┌─────────────────────────────────────────────┐
│ Generate full metrics report │
│ - Fetch PR + deployment data via GitHub API │
│ - Deploy frequency │
│ - Lead time for changes │
│ - Change failure rate │
│ - Mean time to recovery (MTTR) │
│ - Period: 30d / 90d / 1y │
└──────────────────────┬──────────────────────┘
│
v
┌─────────────────────────────────────────────┐
│ Build MetricsReport (velocity + dora) │
│ - Includes both velocity and DORA sections │
└──────────────────────┬──────────────────────┘
│
v
┌─────────────────────────────────────────────┐
│ Render output │
│ --format table (default) / json / markdown │
│ --output file (optional) │
└──────────────────────┬──────────────────────┘
│
v
┌─────────────────────────────────────────────┐
│ Optional: Notify │
│ --notify slack -> post to --channel │
│ --notify jira -> create tickets │
└─────────────────────────────────────────────┘
| Option | Type | Default | Description |
|---|---|---|---|
--target / -t |
str |
- | Org/repo to analyze (OWNER/REPO). Env: DOBBE_ORG |
--period / -p |
str |
30d |
Time period: 30d, 90d, 1y |
--format / -f |
str |
table |
Output format: table, json, markdown. Env: DOBBE_FORMAT |
--output |
str |
- | Write output to file instead of stdout |
--notify |
str |
- | Send report to platform (slack, jira) |
--channel |
str |
- | Notification channel (e.g., #engineering) |
--quiet / -q |
bool |
False |
Suppress progress output, only show final result |
When --target is not provided, metrics dora attempts to detect the repository from the current working directory by reading the git remote. If detection fails (e.g., you are not inside a git repo), it falls back to the default_org value in your configuration file.
The resolved target must be in OWNER/REPO format. Org-only values are rejected.
dobbe metrics dora --target acme/web-app
cd ~/projects/api
dobbe metrics dora --period 1y
dobbe metrics dora --target acme/web-app --format markdown --output dora-report.md
dobbe metrics dora --target acme/web-app --notify slack --channel "#engineering"
Both subcommands follow the same resolution order:
--target flag (or DOBBE_ORG environment variable)auto_detect_repo() (reads the git remote of the current directory)default_org from config fileIf none of these produce a value, the command exits with an error. If the resolved value does not contain / (i.e., is not OWNER/REPO format), the command exits with a format error.
The output format follows a similar cascade:
--format flag (or DOBBE_FORMAT environment variable)default_format from config filetableWhen --notify is specified, the command discovers available MCP servers and extra tools from the configuration, serializes the report as JSON, and delegates delivery to the notifier module. Supported platforms are slack and jira.