sonar-analyze
Analyze a file for quality and security issues using SonarQube
Find files with code duplications in a SonarQube project and inspect duplication blocks for a file (project key optional when MCP integration already defines the default project)
$ npx -y skills add SonarSource/sonarqube-agent-plugins --skill sonar-duplication --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/sonar-duplicationContext preview
The summary Claude sees to decide when to auto-load this skill.
Find files with code duplications in a SonarQube project and inspect duplication blocks for a file (project key optional when MCP integration already defines the default project)
name: sonar-duplication description: Find files with code duplications in a SonarQube project and inspect duplication blocks for a file (project key optional when MCP integration already defines the default project) argument-hint: "[project-key?] [--pr id] [--page-size n] [--page n] [--file key]" allowed-tools: Read, Grep, Bash(docker ps:*), Bash(podman ps:*), Bash(nerdctl ps:*), Bash(sonar:*)
List files that contain duplicated code in a SonarQube project, then drill into **duplication blocks** for a specific file when needed.
sonar-duplication # all duplicated files in the current project (auto-paginated) sonar-duplication my-project # duplicated files in a specific project sonar-duplication my-project --pr 42 # same, on a pull request sonar-duplication my-project --page-size 100 --page 2 # single page of results (manual pagination) sonar-duplication my-project --file src/auth/login.py # duplication detail for one file
This skill requires the SonarQube MCP Server to be configured and the tools `mcp__sonarqube__search_duplicated_files` and `mcp__sonarqube__get_duplications` to be available in your session.
**Before proceeding**, verify the tools are accessible. If they are not, try the `sonar api` CLI fallback in Step 3 before giving up — don't invent other CLI commands (e.g. `sonar mcp call` or `sonar duplication` do not exist).
**If the CLI fallback also fails (for example `sonar` not installed/authenticated, or no project key can be resolved), narrow down the cause** — check whether the `sonarqube` MCP server is enabled in this agent's configuration.
Either way, show the user:
> Unable to reach the SonarQube MCP Server, or project key not found. > > **Possible causes:** > - MCP server not registered — invoke the sonar-integrate skill to configure the SonarQube MCP Server, then restart the agent session > - Container runtime not running — the SonarQube MCP Server runs inside a container (Docker, Podman, or Nerdctl); start your container runtime, then restart the agent session > - Credentials not configured — invoke the sonar-integrate skill > - Project key is wrong or no default project in MCP config — pass an explicit key, or verify `sonar-project.properties` / re-run the sonar-integrate skill for this project
Then ask the user (yes/no) whether to run the sonar-integrate skill now. Briefly explain what it does: it checks the SonarQube setup on their machine — installing or updating `sonarqube-cli` and verifying authentication — and re-configures the integration for this agent, including the SonarQube MCP server and secrets-scanning hooks. If they confirm, invoke the sonar-integrate skill yourself and follow it end-to-end in this session, then ask the user to ensure a container runtime (Docker, Podman, or Nerdctl) is running and to restart the agent session so the new MCP tools become available; if they decline, stop.
MCP tools sometimes **do not require** `projectKey` after the sonar-integrate skill has stored the default project for this workspace. Resolve a key only when you must pass it (tool schema requires it, or the user targets another project):
| Flag | Meaning | | ----------------- | ------------------------------------------------------------------------------------------------------------ | | `--pr <id>` | Pull request context (maps to `pullRequest`) | | `--page-size <n>` | Results per page for **manual** pagination only; integer 1–500 (maps to `pageSize`) | | `--page <n>` | Page number for **manual** pagination; starts at **1** (maps to `pageIndex`) | | `--file <key>` | Skip the duplicated-files list; fetch duplication blocks for this file (maps to `key` in `get_duplications`) |
**Pagination rule:** By default, call `search_duplicated_files` **without** `pageSize` or `pageIndex` so the MCP server auto-fetches every page of duplicated files (up to **10,000** files). Use `pageSize` and `pageIndex` only when the user asks for a specific page or wants to limit page size. If the user supplies `--page-size` but not `--page`, use `pageIndex` **1**.
Call `mcp__sonarqube__search_duplicated_files`.
**Default (auto-fetch all pages):**
Include **`projectKey` only if** you resolved one in Step 1 **and** the tool requires it; otherwise omit it.
{
"projectKey": "<only-if-required>",
"pullRequest": "<id>"
}Omit `pullRequest` when `--pr` was not given. Omit `pageSize` and `pageIndex` entirely so all duplicated files are retrieved automatically. Omit `projectKey` from the payl
Made by Sonar SonarQube is the AI code quality and security verification platform used by millions of developers to catch bugs, vulnerabilities, and leaked secrets.
Analyze a file for quality and security issues using SonarQube
Find files with low test coverage and inspect uncovered lines in a SonarQube project (project key optional when MCP integration…
Search for software composition analysis (SCA) dependency risks in a SonarQube project (project key optional when MCP integration…
Fix a specific SonarQube issue in code by rule key and location
Installs sonarqube-cli if not already installed, authenticates, and integrates SonarQube with the current agent (installs…
Search and filter SonarQube issues for a project, branch, or pull request via sonarqube-cli (`-p` is always required on the CLI;…