Skip to main content

AI-powered code review CLI for GitLab MRs — learns your style, reviews like you.

Project description

Sensei

AI-powered code review CLI for GitLab Merge Requests. Sensei learns your review style from past comments and applies it consistently to new MRs using Claude as the review engine.

What it does

  1. Learns your style — Scrapes your past GitLab review comments, analyzes tone/priorities/patterns, and builds a reusable style profile.
  2. Reviews MRs — Fetches diffs, reads full file context, and generates review comments that match your voice.
  3. Posts intelligently — Must-fix issues go inline on the exact line. Nits get grouped into one summary comment. Test coverage gaps get a single consolidated table.

Prerequisites

  • Python 3.9+
  • Claude Code CLI installed and authenticated
  • A GitLab personal access token with api scope

Install

From PyPI:

pip install sensei-review

Or from source:

git clone https://github.com/pulkit004/sensei.git && cd sensei
python -m venv .venv && source .venv/bin/activate
pip install -e .

Setup

# Initialize with your GitLab credentials
sensei init --pat <your-gitlab-pat>

# Learn your review style (scrapes last 365 days of comments)
sensei learn

Config is stored at ~/.sensei/ with restricted permissions (0600).

Usage

# Review an MR
sensei review https://gitlab.com/org/project/-/merge_requests/123

# Dry run (preview without posting)
sensei review https://gitlab.com/org/project/-/merge_requests/123 --dry-run

After review, you're prompted to approve (post to GitLab), edit (save to file for manual editing), or discard.

Comment types

Type Confidence How it's posted
Must-fix >= 90% Inline on the exact diff line
Nit 80-89% Grouped into one summary comment
Test gap any Consolidated into a single test coverage table

Comments below 80% confidence are dropped.

Project rules

Sensei loads rules from multiple sources (in order):

  1. ~/.sensei/rules/{org_project}.md — Per-project rules you write
  2. CLAUDE.md — From the repo being reviewed
  3. .claude/rules.md — From the repo
  4. CODING_PRINCIPLES.md — From the repo

How the review works

Each file is reviewed in two phases:

  1. Code review — Bugs, type safety, naming, architecture, security
  2. Silent failure hunting — Only runs if the diff has error handling patterns (try/catch, optional chaining, etc.)

Files are reviewed in parallel (up to 8 concurrent workers, configurable batch size).

Development

source .venv/bin/activate
pip install -e ".[dev]"
pytest tests/ -v          # Run tests
pytest tests/ -v -x       # Stop on first failure

Project structure

src/sensei/
  cli.py            # Click CLI commands
  config.py         # ~/.sensei config management
  gitlab_client.py  # GitLab API (diffs, file content, posting comments)
  reviewer.py       # Review prompts, parsing, consolidation
  learner.py        # Style profile learning from past comments
  formatter.py      # Comment formatting for terminal and GitLab
tests/              # Unit and integration tests

License

MIT — see LICENSE for details.

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

sensei_review-0.1.0.tar.gz (20.2 kB view details)

Uploaded Source

Built Distribution

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

sensei_review-0.1.0-py3-none-any.whl (17.6 kB view details)

Uploaded Python 3

File details

Details for the file sensei_review-0.1.0.tar.gz.

File metadata

  • Download URL: sensei_review-0.1.0.tar.gz
  • Upload date:
  • Size: 20.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.0

File hashes

Hashes for sensei_review-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c007a9fdc961c05c1e817095fea6e0d2780e626a51c5c0a56a328042bcf69502
MD5 461c37181bc5e7c5fb5d2009a7e4082b
BLAKE2b-256 80f6e3ce10dfe5cad63368a78795254216dc1f139940c775cc43d20f05e392fb

See more details on using hashes here.

File details

Details for the file sensei_review-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: sensei_review-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 17.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.0

File hashes

Hashes for sensei_review-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 92a3b46b6edc8b48c9288a46a2d7b84213416f49874bf19c52f91dcbfe1b9310
MD5 46ada0082081d397c9783a8f3035ef69
BLAKE2b-256 d0bd3db98ce65338fe9e9b24ccac61bd58319d5d11943986e86bb6e123433752

See more details on using hashes here.

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