Package Exports
- gitlab-mr-ai
- gitlab-mr-ai/dist/main.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (gitlab-mr-ai) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
gitlab-mr-ai
AI-powered CLI tool to generate GitLab Merge Request summaries using Google Gemini.
Generate clear, structured summaries for your GitLab merge requests โ fully automated and CI/CD-friendly. This CLI tool analyzes diffs from your MR and uses Gemini to generate a concise description and key file changes.
๐ Table of Contents
๐ Installation
npm install -g gitlab-mr-ai
# or use npx without install
npx gitlab-mr-ai generate --mr 123
๐ป Usage (Local)
mr-ai generate --mr <merge-request-id> [options]
Example:
mr-ai generate --mr 927 --output console
To load environment variables locally, you can:
# using dotenv-cli (recommended for simplicity)
npm install -g dotenv-cli
dotenv -e .env -- mr-ai generate --mr 927
# or with native bash
source .env && mr-ai generate --mr 927
โ๏ธ Usage (GitLab CI/CD)
๐ก You can configure GitLab CI/CD to run this tool automatically or manually on merge requests.
Example .gitlab-ci.yml
job:
mr-summary:
stage: quality-gate
image: node:20
script:
- npx gitlab-mr-ai generate --mr "$CI_MERGE_REQUEST_IID" --output post
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
when: manual
๐งฉ CLI Parameters
Below is a list of CLI flags supported by mr-ai
, including what they do and when to use them.
Flag | Alias | Required | Description |
---|---|---|---|
--mr |
-m |
โ Yes | Merge request IID to summarize |
--template |
-t |
โ No | Template name (standard , bug-fix , general ) or file path to .md |
--prompt |
-p |
โ No | Custom prompt file path (.txt ) for Gemini |
--output |
-o |
โ No | console , file , or post (default: console ) |
Flag Descriptions
--mr
,-m
(required)
The Merge Request IID (internal ID visible in the GitLab URL, like/merge_requests/123
). This is used to fetch the diff and identify which MR to summarize.--template
,-t
Optional. Specifies which Markdown template to use. You can:- Pass a built-in template name:
standard
,bug-fix
, orgeneral
- Or pass a file path to a custom template, e.g.
./my-template.md
- Pass a built-in template name:
--prompt
,-p
Optional. Specify a custom prompt file (.txt
) to send to Gemini. If not provided, a default prompt will be used.--output
,-o
Optional. Defines where the generated summary goes:console
(default): print to terminalfile
: write tomr-summary-<mrId>.md
post
: update the MR's description directly in GitLab
# Basic usage (console output)
mr-ai generate --mr 1010
# Use general template explicitly
mr-ai generate --mr 1010 --template general
# Use external template & prompt, write to file
mr-ai generate --mr 1010 --template ./my-template.md --prompt ./my-prompt.txt --output file
# Post directly to GitLab MR
mr-ai generate --mr 1010 --output post
๐ง Branch & Ticket Detection
If no --template
is provided, the CLI tries to auto-detect based on your branch name:
fix/123-title
โ usesbug-fix.md
feat/PL-456-feature
โ usesstandard.md
- Otherwise โ fallback to
general.md
Ticket ID is also auto-detected and injected into the template:
#123
for numeric branchesPL-456
if prefixed
๐ General Usage & Fallbacks
You do not need to follow any branch naming convention.
To disable smart detection and use the general fallback always:
mr-ai generate --mr 9001 --template general
Alternatively, if you prefer to keep smart detection off by default, you can:
- Use a generic or unmatched branch name (e.g.
feature/login-screen
) - Pass the
--template general
flag explicitly in every usage (recommended for general use cases)
Fallbacks will:
- Use the
general.md
template if format isn't recognized - Skip ticket injection if none detected
- Still render valid output from Gemini
You can also:
- Provide your own Markdown template (
--template ./custom.md
) - Provide your own prompt (
--prompt ./custom.txt
)
๐ Environment Variables
โ When running in GitLab CI/CD, these variables should be configured under Settings โ CI/CD โ Variables. You do not need to manually export them in the pipeline script.
Set via .env
or CI variables:
Key | Required | Description |
---|---|---|
GEMINI_API_KEY |
โ | Google Generative AI API key |
GITLAB_TOKEN |
โ | GitLab personal access token (project read/write) |
GITLAB_PROJECT_ID |
โ | GitLab project numeric ID |
GITLAB_API_URL |
โ | GitLab API URL (default: https://gitlab.com/api/v4 ) |
GEMINI_MODEL |
โ | Gemini model ID (default: gemini-1.5-flash ) |
๐งผ Troubleshooting
Missing required env variable:
โ Missing required .env variables: GEMINI_API_KEY, GITLAB_TOKEN
โก๏ธ Check your .env
or CI settings
Template not found:
โ Failed to read template at ./custom.md
โก๏ธ Make sure the file path exists and is valid