Connect SonarQube to your agent for automated code quality monitoring.

Install

mkdir -p .claude/skills/sonar-integrate && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/12667" && unzip -o skill.zip -d .claude/skills/sonar-integrate && rm skill.zip

Installs to .claude/skills/sonar-integrate

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Installs sonarqube-cli if not already installed, authenticates, and integrates SonarQube with the current agent (installs analysis hooks & SonarQube MCP Server). Use when the user wants to set up SonarQube integration or asks to configure SonarQube.
249 chars✓ has a “when” trigger
Intermediate

Key capabilities

  • Install sonarqube-cli if not present
  • Update sonarqube-cli to the latest version
  • Authenticate with SonarQube Cloud or self-hosted server
  • Integrate SonarQube with the current agent (MCP Server, secrets-scanning hooks)
  • Configure SonarQube for current project only or globally

How it works

The skill checks for and updates sonarqube-cli, guides the user through authentication, and then integrates SonarQube by configuring the MCP Server and relevant hooks for the specific agent.

Inputs & outputs

You give it
User request to set up or configure SonarQube integration
You get back
Installed/updated sonarqube-cli, authenticated SonarQube connection, and agent-specific integration (MCP Server, hooks)

When to use sonar-integrate

  • Setting up SonarQube integration
  • Configuring code quality hooks
  • Automating static analysis setup

About this skill

Integrate SonarQube

Guide the user through installing sonarqube-cli (if needed), updating it to the latest version when already installed, authenticating, and completing agent-specific integration. Assume SonarQube itself is already set up; this skill only wires the assistant.

Instructions

Interaction rule: for every finite decision, always present predefined selector options (single-choice or multi-choice as appropriate) instead of asking for free-form text. If the user gives an invalid answer, re-show the same selector.

Step 1 — Check for sonarqube-cli and update it

Check if sonar is available on the PATH by running which sonar (macOS/Linux) or Get-Command sonar (Windows) yourself.

If found:

  1. Run sonar self-update yourself and wait for it to finish.
    • If it succeeds: briefly tell the user the CLI is up to date (or was upgraded), then go to Step 2.
    • If it fails: show the relevant output, suggest they run sonar self-update manually (e.g. offline or network issues), then still continue to Step 2 if sonar remains usable — do not block the rest of the flow unless the binary is missing or broken.

If not found: pick the platform-appropriate install command from the table below, show it to the user, and ask for explicit confirmation before running it. Do not execute the command until the user confirms.

PlatformInstall command
macOS / Linuxcurl -o- https://raw.githubusercontent.com/SonarSource/sonarqube-cli/refs/heads/master/user-scripts/install.sh | bash
Windows (PS)irm https://raw.githubusercontent.com/SonarSource/sonarqube-cli/refs/heads/master/user-scripts/install.ps1 | iex

If the user confirms: run the command yourself using a shell command. After it finishes, re-run the PATH check (which sonar or Get-Command sonar) yourself to verify before continuing.

If the user declines: stop the skill and ask the user to install sonarqube-cli manually and then re-invoke the sonar-integrate skill.


Step 2 — Check authentication status

Run sonar auth status yourself using a shell command.

If already authenticated: note the connected server and organisation from the output, then skip directly to Step 4.

If not authenticated: proceed to Step 3.


Step 3 — Authenticate (sonar auth login)

This step requires user interaction — do not run it yourself.

First determine the connection type using a single-choice selector with these options:

  1. SonarQube Cloud - EU (default)
  2. SonarQube Cloud - US
  3. Self-hosted SonarQube Server

Do not ask an open-ended text question for this decision.

Collect:

ScenarioInformation needed
SonarQube Cloud — EU (default)organization key (e.g. my-org)
SonarQube Cloud — USorganization key + confirm US region (https://sonarqube.us)
SonarQube Serverserver URL (e.g. https://sonarqube.yourcompany.com)

Build the login command and show it to the user:

ScenarioCommand
SonarQube Cloud — EUsonar auth login -o <org-key>
SonarQube Cloud — USsonar auth login -o <org-key> -s https://sonarqube.us
SonarQube Serversonar auth login -s <server-url>

Tell the user:

"Run the command below — it will open your browser to log in. The token is stored securely in your system keychain and never appears in this chat."

Wait for the user to confirm they logged in, then run sonar auth status yourself to verify before continuing.


Step 4 — Agent-specific integration

Pick exactly one branch below based on which agent you are. Do not run the other branches.

  • Claude Code -> 4.a
  • Copilot CLI -> 4.b
  • Cursor, Gemini CLI, or Codex -> 4.c

4.a — Claude Code (sonar integrate claude)

Run sonar integrate claude, which configures the SonarQube MCP Server, secrets-scanning hooks, and any other supported integration the CLI applies.

It wires MCP (for skills like sonar-quality-gate, sonar-analyze, sonar-coverage, sonar-duplication, sonar-dependency-risks) and secrets-scanning hooks into the user’s Claude Code config. When available, SonarQube Agentic Analysis hooks are also installed.

Ask the user using a single-choice selector with these options:

  1. Current project only (default)
  2. Global (all projects)

Do not ask an open-ended text question for this decision.

Then run the appropriate command yourself using a shell command, and adding --non-interactive:

ScenarioCommand
Project-onlysonar integrate claude --non-interactive
Globalsonar integrate claude --global --non-interactive

4.b — Copilot CLI (sonar integrate copilot)

Run sonar integrate copilot, which configures the SonarQube MCP Server, secrets-scanning hooks, and any other supported integration the CLI applies.

It wires MCP (for skills like sonar-quality-gate, sonar-analyze, sonar-coverage, sonar-duplication, sonar-dependency-risks) and secrets-scanning hooks into the user’s Copilot CLI config.

Ask the user using a single-choice selector with these options:

  1. Current project only (default)
  2. Global (all projects)

Do not ask an open-ended text question for this decision.

Then run the appropriate command yourself using a shell command, and adding --non-interactive:

ScenarioCommand
Project-onlysonar integrate copilot --non-interactive
Globalsonar integrate copilot --global --non-interactive

4.c — Cursor, Gemini CLI, and Codex

These agents start the SonarQube MCP Server via sonar run mcp, which handles container runtime detection (Docker, Podman, Nerdctl) and authentication automatically. Authentication was handled in Steps 2–3.

Confirm that integration is ready — the MCP server will start automatically when the agent reads its config (mcp.json for Cursor, and Codex; gemini-extension.json for Gemini CLI).


Summary message

After all steps complete, print a summary:

✅ SonarQube integration is ready.

  sonarqube-cli:     updated via sonar self-update
  Authentication:    token stored in system keychain
  MCP Server:        configured (restart the agent session if tools do not appear)

You can verify at any time with:  sonar auth status
To refresh CLI + wiring later:    invoke the sonar-integrate skill again

If path 4.a (Claude Code) was taken, add this line to the summary:

  Secrets scanning:  hooks registered via sonar integrate claude

If path 4.b (Copilot CLI) was taken, add this line to the summary:

  Secrets scanning:  hooks registered via sonar integrate copilot

If sonarqube-cli was freshly installed in Step 1, replace the sonarqube-cli summary line with sonarqube-cli: installed.

If sonar self-update failed in Step 1, adjust the summary: omit the sonarqube-cli line or state that the CLI was not updated and suggest sonar self-update in a terminal.

If any other step failed, note it clearly and suggest the corrective action.

When not to use it

  • When SonarQube itself is not set up
  • When the user does not want to integrate SonarQube

Limitations

  • Assumes SonarQube itself is already set up
  • Requires user confirmation before running install commands
  • Requires user interaction for `sonar auth login`

How it compares

This skill automates the entire SonarQube integration process, from CLI installation to authentication and agent-specific configuration, providing a simplify setup compared to manual steps.

Compared to similar skills

sonar-integrate side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
sonar-integrate (this skill)03moReviewIntermediate
equilateral-agents59moNo flagsIntermediate
ark-vulnerability-fixer14moReviewAdvanced
github-code-review132moReviewAdvanced

Try saying

Example prompts that trigger this skill in your AI assistant.

Search skills

Search the agent skills registry