Skip to main content

Infer CODEOWNERS from git history with confidence scoring, knowledge graphs, expertise decay detection, bus factor analysis, and team topology inference. CI-native.

Project description

checkowners

CI PyPI PyPI downloads Python versions License: MIT

Infer CODEOWNERS from git history with confidence scoring, a knowledge graph, expertise decay detection, bus factor analysis, team topology inference, review load balancing, and onboarding paths. Pure git, no LLMs. CI-native: structured JSON output, GITHUB_OUTPUT integration, composite GitHub Action.

Ownership is not binary. checkOwners is the first CODEOWNERS tool that treats it as a confidence-scored spectrum and surfaces the second-order risks (bus factor, expertise decay, team topology) that come with it.

How it works

flowchart LR
    Git[Git history] --> Analyze[analyze]
    Analyze --> State[(state.json)]
    State --> Generate[generate]
    State --> Drift[drift]
    State --> Bus[bus-factor]
    State --> Decay[decay]
    State --> Topology[topology]
    State --> Balance[balance]
    State --> Onboard[onboard]
    Generate --> CO[CODEOWNERS]
    Drift --> CI[CI output]

Installation

pip install checkowners               # core CLI
pip install "checkowners[graph]"      # adds networkx-backed graph / topology / onboard

Quick start

# Confidence-scored ownership inference
checkowners analyze

# Write CODEOWNERS with owners ranked by expertise confidence
checkowners generate

# Compare inferred vs current CODEOWNERS, ranked by confidence delta
checkowners drift

# Validate syntax (no git access)
checkowners validate

All commands accept --json and persist their results to ~/.checkowners/state.json so downstream commands can reuse the analysis.

Commands

Command What it does
checkowners analyze Infer ownership with confidence scores, bus factor, decay warnings
checkowners generate Write CODEOWNERS, ordered by confidence; optional inline annotations
checkowners print Print inferred ownership to stdout
checkowners validate Validate existing CODEOWNERS syntax
checkowners drift Compare inferred vs current; severity + max confidence delta
checkowners notify POST drift to a webhook gated by severity_threshold
checkowners sync Generate CODEOWNERS and commit the result
checkowners expertise <path> Per-path expertise ranking
checkowners decay Detect dormant owners; recommend transfers
checkowners graph [--export dot] Render the contributor / file / team graph
checkowners bus-factor [<path>] [--all] Per-path bus factor with backup-reviewer suggestions
checkowners topology Infer team boundaries from commit co-occurrence
checkowners balance Detect overloaded reviewers and propose rebalancing
checkowners onboard <path> Generate a learning path from broad-ownership to deep-expertise files

Documentation

  • docs/USAGE.md: full configuration reference, confidence scoring formula, drift severity tiers, GitHub Actions integration, comparison table.
  • docs/FAQ.md: identity (usernames vs emails, teams + subteams), GitHub API access, file locations, tuning, troubleshooting.
  • docs/CONTRIBUTING.md: dev setup, commands, conventional commits, code conventions, PR workflow.
  • docs/CHANGELOG.md: release history.

License

MIT

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

checkowners-0.3.0.tar.gz (63.0 kB view details)

Uploaded Source

Built Distribution

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

checkowners-0.3.0-py3-none-any.whl (38.1 kB view details)

Uploaded Python 3

File details

Details for the file checkowners-0.3.0.tar.gz.

File metadata

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

File hashes

Hashes for checkowners-0.3.0.tar.gz
Algorithm Hash digest
SHA256 07cbb09cd40a42ec54e5054fd4caaa8fff5adb49baa320e656b4827c3b0106ce
MD5 a9aa3b170550a21ad38081037b100e81
BLAKE2b-256 92ae079ba14db2fcdbbd38b12cef86508aef371175e60ab7c3225f83d249d6af

See more details on using hashes here.

Provenance

The following attestation bundles were made for checkowners-0.3.0.tar.gz:

Publisher: publish.yml on smusali/checkowners

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

File details

Details for the file checkowners-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: checkowners-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 38.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for checkowners-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8ecd34f6580b55ed3660ec44e5f703c25c854906c85a7091164b60f49326e7eb
MD5 b02575f2fcb0494fe05e5368b63fc8ce
BLAKE2b-256 a4c9914065075011db880bb5908ef6cb056da3c46a749c485a57ce9a9259cf36

See more details on using hashes here.

Provenance

The following attestation bundles were made for checkowners-0.3.0-py3-none-any.whl:

Publisher: publish.yml on smusali/checkowners

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