] [-v]
+
+Required:
+ -h GitLab host (e.g. gitlab.example.com)
+ -u Webhook endpoint URL to receive POSTs
+ -s Webhook secret token (used for signature verification)
+
+Authentication (one of):
+ -t Access token (PAT, project, group or OAuth). If omitted, \$GITLAB_TOKEN is used
+ -A Auth header to use. Default detects:
+ PAT → "PRIVATE-TOKEN"
+ anything else → "Authorization: Bearer"
+
+Scope (choose one):
+ -p Project ID or full path (e.g. 42 or group/app)
+ -g Group ID or full path, recurse through all subgroups & projects
+
+Options:
+ -v Verbose output (show individual project IDs in final summary)
+EOF
+ exit 1
+}
+
+HOST="" HOOK_URL="" HOOK_SECRET=""
+TOKEN="${GITLAB_TOKEN:-}" AUTH_HEADER=""
+PROJECT="" GROUP="" VERBOSE=false
+
+while getopts "h:u:s:t:A:p:g:v" opt; do
+ case "$opt" in
+ h) HOST=$OPTARG ;;
+ u) HOOK_URL=$OPTARG ;;
+ s) HOOK_SECRET=$OPTARG ;;
+ t) TOKEN=$OPTARG ;;
+ A) AUTH_HEADER=$OPTARG ;;
+ p) PROJECT=$OPTARG ;;
+ g) GROUP=$OPTARG ;;
+ v) VERBOSE=true ;;
+ *) usage ;;
+ esac
+done
+
+# Mandatory checks
+[[ -z $HOST || -z $HOOK_URL || -z $HOOK_SECRET ]] && usage
+[[ -n $PROJECT && -n $GROUP ]] && usage
+[[ -z $PROJECT && -z $GROUP ]] && usage
+
+# Token handling
+if [[ -z $TOKEN ]]; then
+ echo "[ERROR] No access token provided. Use -t or set \$GITLAB_TOKEN" >&2
+ exit 1
+fi
+
+# Choose header if not forced
+if [[ -z $AUTH_HEADER ]]; then
+ if [[ $TOKEN == glpat-* || $TOKEN == "PAT-"* ]]; then
+ AUTH_HEADER="PRIVATE-TOKEN"
+ else
+ AUTH_HEADER="Authorization: Bearer"
+ fi
+fi
+
+API="https://${HOST}/api/v4"
+CURL_BASE=(curl -sSf --header "${AUTH_HEADER}: ${TOKEN}")
+
+# Track processed projects to avoid duplicates
+declare -A PROCESSED_PROJECTS
+# Track projects where webhooks were successfully added
+WEBHOOK_PROJECTS=()
+# Track projects where webhooks already existed
+EXISTING_WEBHOOK_PROJECTS=()
+# Progress counters
+TOTAL_PROJECTS_FOUND=0
+PROJECTS_PROCESSED=0
+
+##############################################################################
+# Helpers
+##############################################################################
+url_encode() {
+ local string="$1"
+ # URL encode the string using printf and sed
+ printf '%s' "$string" | sed 's/\//%2F/g; s/ /%20/g; s/@/%40/g; s/:/%3A/g; s/#/%23/g; s/?/%3F/g; s/&/%26/g; s/=/%3D/g; s/+/%2B/g'
+}
+
+# Function to handle paginated API calls
+fetch_paginated() {
+ local url=$1
+ local page=1
+ local per_page=100
+
+ while true; do
+ local paginated_url="${url}?per_page=${per_page}&page=${page}"
+
+ # Add existing query params if they exist
+ if [[ "$url" == *"?"* ]]; then
+ paginated_url="${url}&per_page=${per_page}&page=${page}"
+ fi
+
+ local response
+ response=$("${CURL_BASE[@]}" "$paginated_url" 2>/dev/null) || {
+ echo "[ERROR] Failed to fetch page $page from $url" >&2
+ return 1
+ }
+
+ # Check if response is empty array or null
+ if [[ "$response" == "[]" || "$response" == "null" ]]; then
+ break
+ fi
+
+ # Extract results from current page
+ local page_results
+ page_results=$(echo "$response" | jq -r '.[].id' 2>/dev/null) || {
+ echo "[ERROR] Failed to parse JSON response from page $page" >&2
+ return 1
+ }
+
+ # If no results on this page, we're done
+ if [[ -z "$page_results" ]]; then
+ break
+ fi
+
+ # Count projects found and show progress
+ local page_count
+ page_count=$(echo "$page_results" | wc -l)
+ TOTAL_PROJECTS_FOUND=$((TOTAL_PROJECTS_FOUND + page_count))
+ echo "[PROGRESS] Found $page_count projects on page $page (total: $TOTAL_PROJECTS_FOUND)" >&2
+
+ # Output page results
+ echo "$page_results"
+
+ # If we got less than per_page results, we're on the last page
+ local item_count
+ item_count=$(echo "$response" | jq '. | length' 2>/dev/null) || 0
+ if [[ "$item_count" -lt "$per_page" ]]; then
+ break
+ fi
+
+ ((page++))
+ done
+}
+
+create_hook() {
+ local pid=$1
+
+ # Skip if already processed
+ if [[ -n "${PROCESSED_PROJECTS[$pid]:-}" ]]; then
+ return 0
+ fi
+
+ # Mark as processed
+ PROCESSED_PROJECTS[$pid]=1
+ PROJECTS_PROCESSED=$((PROJECTS_PROCESSED + 1))
+
+ local encoded_pid
+ # URL encode if pid is not purely numeric
+ if [[ $pid =~ ^[0-9]+$ ]]; then
+ encoded_pid=$pid
+ else
+ encoded_pid=$(url_encode "$pid")
+ fi
+
+ # Check if webhook already exists
+ local existing_webhooks
+ existing_webhooks=$("${CURL_BASE[@]}" "${API}/projects/${encoded_pid}/hooks" 2>/dev/null) || {
+ echo "[ERROR] Failed to fetch existing webhooks for project $pid" >&2
+ return 1
+ }
+
+ # Check if our webhook URL already exists
+ if echo "$existing_webhooks" | jq -e --arg url "$HOOK_URL" '.[] | select(.url == $url)' >/dev/null 2>&1; then
+ [[ "$VERBOSE" == "true" ]] && echo "[INFO] Webhook already exists for project: $pid" >&2
+ EXISTING_WEBHOOK_PROJECTS+=("$pid")
+ return 0
+ fi
+
+ [[ "$VERBOSE" == "true" ]] && echo "[INFO] Adding webhook to project: $pid" >&2
+
+ "${CURL_BASE[@]}" --request POST \
+ --data-urlencode "url=${HOOK_URL}" \
+ --data "token=${HOOK_SECRET}" \
+ --data "push_events=true" \
+ --data "note_events=true" \
+ --data "issues_events=true" \
+ --data "merge_requests_events=true" \
+ --data "enable_ssl_verification=true" \
+ "${API}/projects/${encoded_pid}/hooks" \
+ >/dev/null
+
+ # Track successful webhook creation
+ WEBHOOK_PROJECTS+=("$pid")
+}
+
+traverse_group() {
+ local gid=$1
+ local encoded_gid
+ # URL encode if gid is not purely numeric
+ if [[ $gid =~ ^[0-9]+$ ]]; then
+ encoded_gid=$gid
+ else
+ encoded_gid=$(url_encode "$gid")
+ fi
+
+ # projects (includes nested sub-groups) - with pagination
+ while IFS= read -r pid; do
+ [[ -n "$pid" ]] && create_hook "$pid"
+ done < <(
+ fetch_paginated "${API}/groups/${encoded_gid}/projects?include_subgroups=true"
+ )
+
+ # recurse explicit subgroups (older GitLab) - with pagination
+ while IFS= read -r sg; do
+ [[ -n "$sg" ]] && traverse_group "$sg"
+ done < <(
+ fetch_paginated "${API}/groups/${encoded_gid}/subgroups"
+ )
+}
+
+##############################################################################
+# Main
+##############################################################################
+echo "[INFO] Starting webhook processing..." >&2
+
+if [[ -n $PROJECT ]]; then
+ echo "[INFO] Processing single project: $PROJECT" >&2
+ create_hook "$PROJECT"
+else
+ echo "[INFO] Processing group and subgroups: $GROUP" >&2
+ traverse_group "$GROUP"
+fi
+
+echo "[INFO] Finished processing all projects" >&2
+
+# Print final summary
+total_projects=$((${#WEBHOOK_PROJECTS[@]} + ${#EXISTING_WEBHOOK_PROJECTS[@]}))
+
+if [[ $total_projects -eq 0 ]]; then
+ echo "[INFO] No projects were processed"
+else
+ if [[ ${#WEBHOOK_PROJECTS[@]} -gt 0 ]]; then
+ if [[ "$VERBOSE" == "true" ]]; then
+ echo "[INFO] Webhooks installed successfully on ${#WEBHOOK_PROJECTS[@]} project(s):"
+ for pid in "${WEBHOOK_PROJECTS[@]}"; do
+ echo " - Project ID: $pid"
+ done
+ else
+ echo "[INFO] Webhooks installed successfully on ${#WEBHOOK_PROJECTS[@]} project(s)"
+ fi
+ fi
+
+ if [[ ${#EXISTING_WEBHOOK_PROJECTS[@]} -gt 0 ]]; then
+ if [[ "$VERBOSE" == "true" ]]; then
+ echo "[INFO] Webhooks already existed on ${#EXISTING_WEBHOOK_PROJECTS[@]} project(s):"
+ for pid in "${EXISTING_WEBHOOK_PROJECTS[@]}"; do
+ echo " - Project ID: $pid"
+ done
+ else
+ echo "[INFO] Webhooks already existed on ${#EXISTING_WEBHOOK_PROJECTS[@]} project(s)"
+ fi
+ fi
+
+ echo "[INFO] Total projects processed: $total_projects"
+fi
diff --git a/static/img/faq/add-repository.png b/static/img/faq/add-repository.png
new file mode 100644
index 00000000..e69c4a7c
Binary files /dev/null and b/static/img/faq/add-repository.png differ
diff --git a/static/img/faq/coderabbit-github-menu.png b/static/img/faq/coderabbit-github-menu.png
new file mode 100644
index 00000000..c599ca95
Binary files /dev/null and b/static/img/faq/coderabbit-github-menu.png differ
diff --git a/static/img/faq/github-app-settings.png b/static/img/faq/github-app-settings.png
new file mode 100644
index 00000000..ff120953
Binary files /dev/null and b/static/img/faq/github-app-settings.png differ
diff --git a/static/img/faq/gitlab-webhook.png b/static/img/faq/gitlab-webhook.png
new file mode 100644
index 00000000..a233f902
Binary files /dev/null and b/static/img/faq/gitlab-webhook.png differ
diff --git a/static/img/faq/seat-assignment.png b/static/img/faq/seat-assignment.png
new file mode 100644
index 00000000..073194be
Binary files /dev/null and b/static/img/faq/seat-assignment.png differ
diff --git a/static/img/faq/select-repos.png b/static/img/faq/select-repos.png
new file mode 100644
index 00000000..1c1222ff
Binary files /dev/null and b/static/img/faq/select-repos.png differ
diff --git a/static/img/getting-started/billing-history.png b/static/img/getting-started/billing-history.png
new file mode 100644
index 00000000..8fd36af6
Binary files /dev/null and b/static/img/getting-started/billing-history.png differ
diff --git a/static/img/getting-started/change-plan.png b/static/img/getting-started/change-plan.png
new file mode 100644
index 00000000..e41f00ce
Binary files /dev/null and b/static/img/getting-started/change-plan.png differ
diff --git a/static/img/getting-started/change-seats.png b/static/img/getting-started/change-seats.png
new file mode 100644
index 00000000..cc736ac5
Binary files /dev/null and b/static/img/getting-started/change-seats.png differ
diff --git a/static/img/getting-started/download-invoice.png b/static/img/getting-started/download-invoice.png
new file mode 100644
index 00000000..5451693d
Binary files /dev/null and b/static/img/getting-started/download-invoice.png differ
diff --git a/static/img/getting-started/edit-subscription.png b/static/img/getting-started/edit-subscription.png
new file mode 100644
index 00000000..065d0cc2
Binary files /dev/null and b/static/img/getting-started/edit-subscription.png differ
diff --git a/static/img/getting-started/manage-subscription.png b/static/img/getting-started/manage-subscription.png
new file mode 100644
index 00000000..1234acf9
Binary files /dev/null and b/static/img/getting-started/manage-subscription.png differ
diff --git a/static/img/getting-started/quickstart-comment.png b/static/img/getting-started/quickstart-comment.png
new file mode 100644
index 00000000..9813172b
Binary files /dev/null and b/static/img/getting-started/quickstart-comment.png differ
diff --git a/static/img/getting-started/subscription-page.png b/static/img/getting-started/subscription-page.png
new file mode 100644
index 00000000..8fb90f96
Binary files /dev/null and b/static/img/getting-started/subscription-page.png differ
diff --git a/static/img/getting-started/updated-permissions.png b/static/img/getting-started/updated-permissions.png
new file mode 100644
index 00000000..37ef9038
Binary files /dev/null and b/static/img/getting-started/updated-permissions.png differ
diff --git a/static/img/guides/agentic-thought-chain.png b/static/img/guides/agentic-thought-chain.png
new file mode 100644
index 00000000..1fd49a55
Binary files /dev/null and b/static/img/guides/agentic-thought-chain.png differ
diff --git a/static/img/guides/chat-example.png b/static/img/guides/chat-example.png
new file mode 100644
index 00000000..3acb40e1
Binary files /dev/null and b/static/img/guides/chat-example.png differ
diff --git a/static/img/guides/chat-learnings-use.png b/static/img/guides/chat-learnings-use.png
new file mode 100644
index 00000000..f1b3a2f1
Binary files /dev/null and b/static/img/guides/chat-learnings-use.png differ
diff --git a/static/img/guides/chat-script-execution.png b/static/img/guides/chat-script-execution.png
new file mode 100644
index 00000000..4cd29f97
Binary files /dev/null and b/static/img/guides/chat-script-execution.png differ
diff --git a/static/img/guides/create-issue-agentic.png b/static/img/guides/create-issue-agentic.png
new file mode 100644
index 00000000..a7ad04ae
Binary files /dev/null and b/static/img/guides/create-issue-agentic.png differ
diff --git a/static/img/guides/create-issue-inline.png b/static/img/guides/create-issue-inline.png
new file mode 100644
index 00000000..873df82f
Binary files /dev/null and b/static/img/guides/create-issue-inline.png differ
diff --git a/static/img/guides/example-report-1.png b/static/img/guides/example-report-1.png
new file mode 100644
index 00000000..d88931a5
Binary files /dev/null and b/static/img/guides/example-report-1.png differ
diff --git a/static/img/guides/example-report-2.png b/static/img/guides/example-report-2.png
new file mode 100644
index 00000000..98a54896
Binary files /dev/null and b/static/img/guides/example-report-2.png differ
diff --git a/static/img/guides/feature-planning.png b/static/img/guides/feature-planning.png
new file mode 100644
index 00000000..017d3e4b
Binary files /dev/null and b/static/img/guides/feature-planning.png differ
diff --git a/static/img/guides/gitlab-issue-chat.png b/static/img/guides/gitlab-issue-chat.png
new file mode 100644
index 00000000..0b6a1f69
Binary files /dev/null and b/static/img/guides/gitlab-issue-chat.png differ
diff --git a/static/img/guides/high-level-docs.png b/static/img/guides/high-level-docs.png
new file mode 100644
index 00000000..702c5dee
Binary files /dev/null and b/static/img/guides/high-level-docs.png differ
diff --git a/static/img/guides/linked-issue.png b/static/img/guides/linked-issue.png
new file mode 100644
index 00000000..ba585890
Binary files /dev/null and b/static/img/guides/linked-issue.png differ
diff --git a/static/img/guides/marketing-posts.png b/static/img/guides/marketing-posts.png
new file mode 100644
index 00000000..ce607fd4
Binary files /dev/null and b/static/img/guides/marketing-posts.png differ
diff --git a/static/img/guides/open-source-support.png b/static/img/guides/open-source-support.png
new file mode 100644
index 00000000..14c35530
Binary files /dev/null and b/static/img/guides/open-source-support.png differ
diff --git a/static/img/guides/path-filters.png b/static/img/guides/path-filters.png
new file mode 100644
index 00000000..9f398a51
Binary files /dev/null and b/static/img/guides/path-filters.png differ
diff --git a/static/img/guides/score-card-report-result.png b/static/img/guides/score-card-report-result.png
new file mode 100644
index 00000000..15b51539
Binary files /dev/null and b/static/img/guides/score-card-report-result.png differ
diff --git a/static/img/guides/score-card-result-comment.png b/static/img/guides/score-card-result-comment.png
new file mode 100644
index 00000000..1ea43248
Binary files /dev/null and b/static/img/guides/score-card-result-comment.png differ
diff --git a/static/img/guides/score-card-trigger-comment.png b/static/img/guides/score-card-trigger-comment.png
new file mode 100644
index 00000000..2f690948
Binary files /dev/null and b/static/img/guides/score-card-trigger-comment.png differ
diff --git a/static/img/guides/where-score-report-prompt-go.png b/static/img/guides/where-score-report-prompt-go.png
new file mode 100644
index 00000000..3b26a1f1
Binary files /dev/null and b/static/img/guides/where-score-report-prompt-go.png differ
diff --git a/static/img/integrations/azure-access-token.png b/static/img/integrations/azure-access-token.png
index 9ce2b44b..2b3111b1 100644
Binary files a/static/img/integrations/azure-access-token.png and b/static/img/integrations/azure-access-token.png differ
diff --git a/static/img/integrations/bitbucket-app-password-modal.png b/static/img/integrations/bitbucket-app-password-modal.png
new file mode 100644
index 00000000..fd6c556b
Binary files /dev/null and b/static/img/integrations/bitbucket-app-password-modal.png differ
diff --git a/static/img/integrations/bitbucket-app-password-page.png b/static/img/integrations/bitbucket-app-password-page.png
new file mode 100644
index 00000000..c9e25cbe
Binary files /dev/null and b/static/img/integrations/bitbucket-app-password-page.png differ
diff --git a/static/img/integrations/bitbucket-app-password-permissions.png b/static/img/integrations/bitbucket-app-password-permissions.png
new file mode 100644
index 00000000..7e27e6af
Binary files /dev/null and b/static/img/integrations/bitbucket-app-password-permissions.png differ
diff --git a/static/img/integrations/bitbucket-webhook.png b/static/img/integrations/bitbucket-webhook.png
new file mode 100644
index 00000000..687c9b78
Binary files /dev/null and b/static/img/integrations/bitbucket-webhook.png differ
diff --git a/static/img/integrations/login-self-hosted-github.png b/static/img/integrations/login-self-hosted-github.png
index 99f511c6..35e76ed1 100644
Binary files a/static/img/integrations/login-self-hosted-github.png and b/static/img/integrations/login-self-hosted-github.png differ
diff --git a/static/img/integrations/logo.png b/static/img/integrations/logo.png
new file mode 100644
index 00000000..18eb4911
Binary files /dev/null and b/static/img/integrations/logo.png differ
diff --git a/static/img/integrations/self-hosted-github-host-url.png b/static/img/integrations/self-hosted-github-host-url.png
index b8224720..2cb6d671 100644
Binary files a/static/img/integrations/self-hosted-github-host-url.png and b/static/img/integrations/self-hosted-github-host-url.png differ
diff --git a/static/img/knowledge-base/code-guidelines.png b/static/img/knowledge-base/code-guidelines.png
new file mode 100644
index 00000000..638a656f
Binary files /dev/null and b/static/img/knowledge-base/code-guidelines.png differ
diff --git a/static/img/reference/path-instructions.png b/static/img/reference/path-instructions.png
new file mode 100644
index 00000000..adcb5884
Binary files /dev/null and b/static/img/reference/path-instructions.png differ
diff --git a/static/img/tools/az-devops-pipeline.png b/static/img/tools/az-devops-pipeline.png
new file mode 100644
index 00000000..b06dafab
Binary files /dev/null and b/static/img/tools/az-devops-pipeline.png differ
diff --git a/static/img/tools/circle-cicd.png b/static/img/tools/circle-cicd.png
new file mode 100644
index 00000000..9af6cf95
Binary files /dev/null and b/static/img/tools/circle-cicd.png differ
diff --git a/static/img/tools/docker-build-cicd.png b/static/img/tools/docker-build-cicd.png
new file mode 100644
index 00000000..01e6ed58
Binary files /dev/null and b/static/img/tools/docker-build-cicd.png differ
diff --git a/static/img/tools/gitlab-advanced-security.png b/static/img/tools/gitlab-advanced-security.png
new file mode 100644
index 00000000..94dc3d75
Binary files /dev/null and b/static/img/tools/gitlab-advanced-security.png differ
diff --git a/static/img/tools/gitlab-cicd.png b/static/img/tools/gitlab-cicd.png
new file mode 100644
index 00000000..0f9c029f
Binary files /dev/null and b/static/img/tools/gitlab-cicd.png differ
diff --git a/static/img/tools/java-cicd.png b/static/img/tools/java-cicd.png
new file mode 100644
index 00000000..b90ec904
Binary files /dev/null and b/static/img/tools/java-cicd.png differ
diff --git a/static/img/tools/kubernetes-cicd.png b/static/img/tools/kubernetes-cicd.png
new file mode 100644
index 00000000..3b8beb53
Binary files /dev/null and b/static/img/tools/kubernetes-cicd.png differ
diff --git a/static/img/tools/npm-cicd.png b/static/img/tools/npm-cicd.png
new file mode 100644
index 00000000..f0402362
Binary files /dev/null and b/static/img/tools/npm-cicd.png differ
diff --git a/static/img/tools/python-cicd.png b/static/img/tools/python-cicd.png
new file mode 100644
index 00000000..cab40924
Binary files /dev/null and b/static/img/tools/python-cicd.png differ
diff --git a/static/img/tools/semgrep-cicd.png b/static/img/tools/semgrep-cicd.png
new file mode 100644
index 00000000..261cfb5e
Binary files /dev/null and b/static/img/tools/semgrep-cicd.png differ
diff --git a/static/img/tools/terraform-cicd.png b/static/img/tools/terraform-cicd.png
new file mode 100644
index 00000000..ede7a0c2
Binary files /dev/null and b/static/img/tools/terraform-cicd.png differ
diff --git a/static/schema/schema.v2.json b/static/schema/schema.v2.json
index 53e51713..67d98b12 100644
--- a/static/schema/schema.v2.json
+++ b/static/schema/schema.v2.json
@@ -82,6 +82,8 @@
"zh",
"crh-UA",
"crh",
+ "cs-CZ",
+ "cs",
"nb",
"no",
"nl-NL",
@@ -91,7 +93,19 @@
"fa-IR",
"sv-SE",
"de-LU",
- "fr-FR"
+ "fr-FR",
+ "bg-BG",
+ "bg",
+ "he-IL",
+ "he",
+ "hi-IN",
+ "hi",
+ "vi-VN",
+ "vi",
+ "th-TH",
+ "th",
+ "bn-BD",
+ "bn"
],
"default": "en-US",
"description": "Set the language for reviews by using the corresponding ISO language code."
@@ -211,6 +225,11 @@
"default": true,
"description": "Suggest reviewers based on the changes in the pull request in the walkthrough."
},
+ "auto_assign_reviewers": {
+ "type": "boolean",
+ "default": false,
+ "description": "Automatically assign suggested reviewers to the pull request"
+ },
"poem": {
"type": "boolean",
"default": true,
@@ -243,7 +262,7 @@
"type": "string"
},
"default": [],
- "description": "Specify file patterns to exclude or include for a review. Accepts glob patterns. Example: !dist/**, src/**"
+ "description": "Specify file patterns to include or exclude in a review using glob patterns (e.g., !dist/**, src/**). These patterns also apply to 'git sparse-checkout', including specified patterns and ignoring excluded ones (starting with '!') when cloning the repository."
},
"path_instructions": {
"type": "array",
@@ -256,7 +275,7 @@
},
"instructions": {
"type": "string",
- "maxLength": 3000,
+ "maxLength": 20000,
"description": "Provides specific additional guidelines for code review based on file paths."
}
},
@@ -271,6 +290,11 @@
"default": true,
"description": "Abort the in-progress review if the pull request is closed or merged."
},
+ "disable_cache": {
+ "type": "boolean",
+ "default": false,
+ "description": "Disable caching of code and dependencies. This will force CodeRabbit to download the code and dependencies fresh from the repository each time."
+ },
"auto_review": {
"type": "object",
"properties": {
@@ -332,6 +356,19 @@
"additionalProperties": false,
"default": {},
"description": "Docstrings | Options for generating Docstrings for your PRs/MRs."
+ },
+ "unit_tests": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "default": true,
+ "description": "Unit Tests | Allow CodeRabbit to generate unit tests for PRs/MRs."
+ }
+ },
+ "additionalProperties": false,
+ "default": {},
+ "description": "Unit Tests | Options for generating unit tests for your PRs/MRs."
}
},
"additionalProperties": false,
@@ -348,6 +385,7 @@
"items": {
"type": "string"
},
+ "default": [],
"description": "List of rules directories."
},
"util_dirs": {
@@ -355,6 +393,7 @@
"items": {
"type": "string"
},
+ "default": [],
"description": "List of utils directories."
},
"essential_rules": {
@@ -372,7 +411,8 @@
}
},
"additionalProperties": false,
- "description": "Enable ast-grep | ast-grep is a code analysis tool that helps you to find patterns in your codebase using abstract syntax trees patterns. | v0.31.1"
+ "default": {},
+ "description": "Enable ast-grep | ast-grep is a code analysis tool that helps you to find patterns in your codebase using abstract syntax trees patterns. | v0.38.6"
},
"shellcheck": {
"type": "object",
@@ -393,7 +433,7 @@
"enabled": {
"type": "boolean",
"default": true,
- "description": "Enable Ruff | Ruff is a Python linter and code formatter. | Enable Ruff integration. | v0.8.2"
+ "description": "Enable Ruff | Ruff is a Python linter and code formatter. | Enable Ruff integration. | v0.12.2"
}
},
"additionalProperties": false,
@@ -423,10 +463,10 @@
},
"timeout_ms": {
"type": "number",
- "maximum": 300000,
+ "maximum": 900000,
"minimum": 0,
"default": 90000,
- "description": "Time in milliseconds to wait for all GitHub Checks to conclude."
+ "description": "Time in milliseconds to wait for all GitHub Checks to conclude. Default 90 seconds, max 15 minutes (900000ms)."
}
},
"additionalProperties": false,
@@ -446,6 +486,7 @@
"items": {
"type": "string"
},
+ "default": [],
"description": "IDs of rules to be enabled. The rule won't run unless 'level' is set to a level that activates the rule."
},
"disabled_rules": {
@@ -453,6 +494,7 @@
"items": {
"type": "string"
},
+ "default": [],
"description": "IDs of rules to be disabled. Note: EN_UNPAIRED_BRACKETS, and EN_UNPAIRED_QUOTES are always disabled."
},
"enabled_categories": {
@@ -460,6 +502,7 @@
"items": {
"type": "string"
},
+ "default": [],
"description": "IDs of categories to be enabled."
},
"disabled_categories": {
@@ -467,6 +510,7 @@
"items": {
"type": "string"
},
+ "default": [],
"description": "IDs of categories to be disabled. Note: TYPOS, TYPOGRAPHY, and CASING are always disabled."
},
"enabled_only": {
@@ -534,7 +578,7 @@
"enabled": {
"type": "boolean",
"default": true,
- "description": "Enable PHPStan | PHPStan requires [config file](https://phpstan.org/config-reference#config-file) in your repository root. Please ensure that this file contains the `paths:` parameter. | v2.0.3"
+ "description": "Enable PHPStan | PHPStan requires [config file](https://phpstan.org/config-reference#config-file) in your repository root. Please ensure that this file contains the `paths:` parameter. | v2.1.17"
},
"level": {
"type": "string",
@@ -560,13 +604,39 @@
"default": {},
"description": "PHPStan is a tool to analyze PHP code."
},
+ "phpmd": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "default": true,
+ "description": "Enable PHPMD | PHPMD is a tool to find potential problems in PHP code. | v2.15.0"
+ }
+ },
+ "additionalProperties": false,
+ "default": {},
+ "description": "PHPMD is a tool to find potential problems in PHP code."
+ },
+ "phpcs": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "default": true,
+ "description": "Enable PHP CodeSniffer | PHP CodeSniffer is a PHP linter and coding standard checker. | v3.7.2"
+ }
+ },
+ "additionalProperties": false,
+ "default": {},
+ "description": "PHP CodeSniffer is a PHP linter and coding standard checker."
+ },
"golangci-lint": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"default": true,
- "description": "Enable golangci-lint | golangci-lint is a fast linters runner for Go. | Enable golangci-lint integration. | v1.62.2"
+ "description": "Enable golangci-lint | golangci-lint is a fast linters runner for Go. | Enable golangci-lint integration. | v1.64.8"
},
"config_file": {
"type": "string",
@@ -583,7 +653,7 @@
"enabled": {
"type": "boolean",
"default": true,
- "description": "Enable YAMLlint | YAMLlint is a linter for YAML files. | Enable YAMLlint integration. | v1.35.1"
+ "description": "Enable YAMLlint | YAMLlint is a linter for YAML files. | Enable YAMLlint integration. | v1.37.1"
}
},
"additionalProperties": false,
@@ -596,7 +666,7 @@
"enabled": {
"type": "boolean",
"default": true,
- "description": "Enable Gitleaks | Gitleaks is a secret scanner. | Enable Gitleaks integration. | v8.21.2"
+ "description": "Enable Gitleaks | Gitleaks is a secret scanner. | Enable Gitleaks integration. | v8.27.2"
}
},
"additionalProperties": false,
@@ -622,7 +692,7 @@
"enabled": {
"type": "boolean",
"default": true,
- "description": "Enable detekt | detekt is a static code analysis tool for Kotlin files. | v1.23.7"
+ "description": "Enable detekt | detekt is a static code analysis tool for Kotlin files. | v1.23.8"
},
"config_file": {
"type": "string",
@@ -646,13 +716,26 @@
"default": {},
"description": "ESLint is a static code analysis tool for JavaScript files."
},
+ "flake8": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "default": true,
+ "description": "Enable Flake8 | Flake8 is a Python linter that wraps PyFlakes, pycodestyle and Ned Batchelder's McCabe script. | v7.2.0"
+ }
+ },
+ "additionalProperties": false,
+ "default": {},
+ "description": "Flake8 is a Python linter that wraps PyFlakes, pycodestyle and Ned Batchelder's McCabe script."
+ },
"rubocop": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"default": true,
- "description": "Enable RuboCop | RuboCop is a Ruby static code analyzer (a.k.a. linter ) and code formatter. | v1.69.1"
+ "description": "Enable RuboCop | RuboCop is a Ruby static code analyzer (a.k.a. linter ) and code formatter. | v1.76.1"
}
},
"additionalProperties": false,
@@ -665,7 +748,7 @@
"enabled": {
"type": "boolean",
"default": true,
- "description": "Enable Buf | Buf offers linting for Protobuf files. | v1.47.2"
+ "description": "Enable Buf | Buf offers linting for Protobuf files. | v1.55.1"
}
},
"additionalProperties": false,
@@ -678,7 +761,7 @@
"enabled": {
"type": "boolean",
"default": true,
- "description": "Enable Regal | Regal is a linter and language server for Rego. | v0.29.2"
+ "description": "Enable Regal | Regal is a linter and language server for Rego. | v0.35.1"
}
},
"additionalProperties": false,
@@ -691,7 +774,7 @@
"enabled": {
"type": "boolean",
"default": true,
- "description": "Enable actionlint | is a static checker for GitHub Actions workflow files. | v1.7.4"
+ "description": "Enable actionlint | is a static checker for GitHub Actions workflow files. | v1.7.7"
}
},
"additionalProperties": false,
@@ -704,7 +787,7 @@
"enabled": {
"type": "boolean",
"default": true,
- "description": "Enable PMD | PMD is an extensible multilanguage static code analyzer. It’s mainly concerned with Java. | v7.8.0"
+ "description": "Enable PMD | PMD is an extensible multilanguage static code analyzer. It’s mainly concerned with Java. | v7.15.0"
},
"config_file": {
"type": "string",
@@ -721,7 +804,7 @@
"enabled": {
"type": "boolean",
"default": true,
- "description": "Enable Cppcheck | Cppcheck is a static code analysis tool for the C and C++ programming languages. | v2.10-2"
+ "description": "Enable Cppcheck | Cppcheck is a static code analysis tool for the C and C++ programming languages. | v2.17.1"
}
},
"additionalProperties": false,
@@ -734,7 +817,7 @@
"enabled": {
"type": "boolean",
"default": true,
- "description": "Enable Semgrep | Semgrep is a static analysis tool designed to scan code for security vulnerabilities and code quality issues. | Enable Semgrep integration. | v1.99.0"
+ "description": "Enable Semgrep | Semgrep is a static analysis tool designed to scan code for security vulnerabilities and code quality issues. | Enable Semgrep integration. | v1.122.0"
},
"config_file": {
"type": "string",
@@ -751,17 +834,165 @@
"enabled": {
"type": "boolean",
"default": true,
- "description": "Enable CircleCI | CircleCI tool is a static checker for CircleCI config files. | v0.1.31151"
+ "description": "Enable CircleCI | CircleCI tool is a static checker for CircleCI config files. | v0.1.32638"
}
},
"additionalProperties": false,
"default": {},
"description": "CircleCI tool is a static checker for CircleCI config files."
+ },
+ "clippy": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "default": true,
+ "description": "Enable Clippy | Clippy is a collection of lints to catch common mistakes and improve your Rust code. | Enable Clippy integration."
+ }
+ },
+ "additionalProperties": false,
+ "default": {},
+ "description": "Clippy is a collection of lints to catch common mistakes and improve your Rust code."
+ },
+ "sqlfluff": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "default": true,
+ "description": "Enable SQLFluff | SQLFluff is an open source, dialect-flexible and configurable SQL linter. | v3.4.1"
+ }
+ },
+ "additionalProperties": false,
+ "default": {},
+ "description": "SQLFluff is an open source, dialect-flexible and configurable SQL linter."
+ },
+ "prismaLint": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "default": true,
+ "description": "Enable Prisma Schema linting | Prisma Schema linting helps maintain consistent and error-free schema files | v0.10.2"
+ }
+ },
+ "additionalProperties": false,
+ "default": {},
+ "description": "Configuration for Prisma Schema linting to ensure schema file quality"
+ },
+ "pylint": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "default": true,
+ "description": "Enable Pylint | Pylint is a Python static code analysis tool. | v3.3.7"
+ }
+ },
+ "additionalProperties": false,
+ "default": {},
+ "description": "Pylint is a Python static code analysis tool."
+ },
+ "oxc": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "default": true,
+ "description": "Enable Oxlint | Oxlint is a JavaScript/TypeScript linter for OXC written in Rust. | v0.16.10"
+ }
+ },
+ "additionalProperties": false,
+ "default": {},
+ "description": "Oxlint is a JavaScript/TypeScript linter for OXC written in Rust."
+ },
+ "shopifyThemeCheck": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "default": true,
+ "description": "Enable Shopify Theme Check | A linter for Shopify themes that helps you follow Shopify theme & Liquid best practices | cli 3.77.1 | theme 3.58.2"
+ }
+ },
+ "additionalProperties": false,
+ "default": {},
+ "description": "Configuration for Shopify Theme Check to ensure theme quality and best practices"
+ },
+ "luacheck": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "default": true,
+ "description": "Enable Lua code linting | Luacheck helps maintain consistent and error-free Lua code | v1.2.0"
+ }
+ },
+ "additionalProperties": false,
+ "default": {},
+ "description": "Configuration for Lua code linting to ensure code quality"
+ },
+ "brakeman": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "default": true,
+ "description": "Enable Brakeman | Brakeman is a static analysis security vulnerability scanner for Ruby on Rails applications. | v7.0.2"
+ }
+ },
+ "additionalProperties": false,
+ "default": {},
+ "description": "Brakeman is a static analysis security vulnerability scanner for Ruby on Rails applications. | v7.0.2"
+ },
+ "dotenvLint": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "default": true,
+ "description": "Enable dotenv-linter | dotenv-linter is a tool for checking and fixing .env files for problems and best practices | v3.3.0"
+ }
+ },
+ "additionalProperties": false,
+ "default": {},
+ "description": "dotenv-linter is a tool for checking and fixing .env files for problems and best practices"
+ },
+ "htmlhint": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "default": true,
+ "description": "Enable HTMLHint | HTMLHint is a static code analysis tool for HTML files. | Enable HTMLHint integration. | v1.5.0"
+ }
+ },
+ "additionalProperties": false,
+ "description": "HTMLHint is a static code analysis tool for HTML files.",
+ "default": {}
+ },
+ "checkmake": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "default": true,
+ "description": "Enable checkmake | checkmake is a linter for Makefiles. | v0.2.2"
+ }
+ },
+ "additionalProperties": false,
+ "default": {},
+ "description": "checkmake is a linter for Makefiles."
}
},
"additionalProperties": false,
"description": "Tools that provide additional context to code reviews.",
"default": {}
+ },
+ "pre_merge_checks": {
+ "type": "object",
+ "additionalProperties": {},
+ "default": {}
}
},
"additionalProperties": false,
@@ -819,7 +1050,40 @@
"opt_out": {
"type": "boolean",
"default": false,
- "description": "Opt out | Opt out of all knowledge base features."
+ "description": "Opt Out | Disable all knowledge base features that require data retention. If you opt out after opting in, all of your existing knowledge base data will be removed from the system."
+ },
+ "web_search": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "default": true,
+ "description": "Web Search | Enable the web search integration."
+ }
+ },
+ "additionalProperties": false,
+ "default": {}
+ },
+ "code_guidelines": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "default": true,
+ "description": "Enabled | Enable CodeRabbit to enforce your organization's coding standards during reviews."
+ },
+ "filePatterns": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "default": [],
+ "description": "File Patterns | Specify files for your coding guideline documents in this section. CodeRabbit will scan these files to understand your team's standards and apply them during code reviews. Multiple files supported. File names are case-sensitive. Common files like: (**/.cursorrules, .github/copilot-instructions.md, **/CLAUDE.md, **/GEMINI.md, **/.cursor/rules/*, **/.windsurfrules, **/.clinerules/*, **/.rules/*, **/AGENT.md) are included by default."
+ }
+ },
+ "additionalProperties": false,
+ "default": {},
+ "description": "CodeRabbit will analyse and learn from your organization's code guidelines, which you can mention in the file patterns section. These guidelines will then be used to conduct thorough code reviews."
},
"learnings": {
"type": "object",
@@ -905,9 +1169,184 @@
},
"additionalProperties": false,
"default": {}
+ },
+ "code_generation": {
+ "type": "object",
+ "properties": {
+ "docstrings": {
+ "type": "object",
+ "properties": {
+ "language": {
+ "type": "string",
+ "enum": [
+ "de",
+ "de-DE",
+ "de-AT",
+ "de-CH",
+ "en",
+ "en-US",
+ "en-AU",
+ "en-GB",
+ "en-CA",
+ "en-NZ",
+ "en-ZA",
+ "es",
+ "es-AR",
+ "fr",
+ "fr-CA",
+ "fr-CH",
+ "fr-BE",
+ "nl",
+ "nl-BE",
+ "pt-AO",
+ "pt",
+ "pt-BR",
+ "pt-MZ",
+ "pt-PT",
+ "ar",
+ "ast-ES",
+ "ast",
+ "be-BY",
+ "be",
+ "br-FR",
+ "br",
+ "ca-ES",
+ "ca",
+ "ca-ES-valencia",
+ "ca-ES-balear",
+ "da-DK",
+ "da",
+ "de-DE-x-simple-language",
+ "el-GR",
+ "el",
+ "eo",
+ "fa",
+ "ga-IE",
+ "ga",
+ "gl-ES",
+ "gl",
+ "it",
+ "ja-JP",
+ "ja",
+ "km-KH",
+ "km",
+ "ko-KR",
+ "ko",
+ "pl-PL",
+ "pl",
+ "ro-RO",
+ "ro",
+ "ru-RU",
+ "ru",
+ "sk-SK",
+ "sk",
+ "sl-SI",
+ "sl",
+ "sv",
+ "ta-IN",
+ "ta",
+ "tl-PH",
+ "tl",
+ "tr",
+ "uk-UA",
+ "uk",
+ "zh-CN",
+ "zh",
+ "crh-UA",
+ "crh",
+ "cs-CZ",
+ "cs",
+ "nb",
+ "no",
+ "nl-NL",
+ "de-DE-x-simple-language-DE",
+ "es-ES",
+ "it-IT",
+ "fa-IR",
+ "sv-SE",
+ "de-LU",
+ "fr-FR",
+ "bg-BG",
+ "bg",
+ "he-IL",
+ "he",
+ "hi-IN",
+ "hi",
+ "vi-VN",
+ "vi",
+ "th-TH",
+ "th",
+ "bn-BD",
+ "bn"
+ ],
+ "default": "en-US",
+ "description": "Set the language for docstrings by using the corresponding ISO language code."
+ },
+ "path_instructions": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "path": {
+ "type": "string",
+ "description": "File path glob pattern. Example: **/*.js"
+ },
+ "instructions": {
+ "type": "string",
+ "maxLength": 20000,
+ "description": "Provides additional guidelines for docstring generation based on file paths."
+ }
+ },
+ "required": ["path", "instructions"],
+ "additionalProperties": false
+ },
+ "default": [],
+ "description": "Path Instructions | Provide additional guidelines for docstring generation based on file paths."
+ }
+ },
+ "additionalProperties": false,
+ "default": {
+ "path_instructions": []
+ },
+ "description": "Settings related to the generation of docstrings."
+ },
+ "unit_tests": {
+ "type": "object",
+ "properties": {
+ "path_instructions": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "path": {
+ "type": "string",
+ "description": "File path glob pattern. Example: **/*.js"
+ },
+ "instructions": {
+ "type": "string",
+ "maxLength": 20000,
+ "description": "Provides additional guidelines for unit test generation based on file paths."
+ }
+ },
+ "required": ["path", "instructions"],
+ "additionalProperties": false
+ },
+ "default": [],
+ "description": "Unit Test Generation | Provide additional guidelines for unit test generation based on file paths."
+ }
+ },
+ "additionalProperties": false,
+ "default": {
+ "path_instructions": []
+ },
+ "description": "Settings related to the generation of unit tests."
+ }
+ },
+ "additionalProperties": false,
+ "default": {}
}
},
- "additionalProperties": false
+ "additionalProperties": true
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
pFad - Phonifier reborn
Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy