From qlty-skills
Set up and troubleshoot Qlty code coverage reporting in CI pipelines. Use this skill when users want to add coverage uploads to CI (GitHub Actions, CircleCI), integrate Qlty coverage into a project, configure coverage merging or coverage tags for monorepos, fix coverage upload issues (format errors, 0% coverage, path validation failures), or use qltysh/qlty-action/coverage. Supports Python, JavaScript, TypeScript, Go, Ruby, Java, Kotlin, PHP, Elixir, .NET, and Swift. Do NOT use for Qlty static analysis (qlty check, qlty.toml), writing tests, or general CI/CD changes unrelated to coverage.
npx claudepluginhub qltysh/qlty-skills --plugin qlty-skillsThis skill uses the workspace's default tool permissions.
You are a senior software engineer setting up code coverage reporting in CI for this project using Qlty Cloud. Work through these three phases sequentially.
Verifies tests pass on completed feature branch, presents options to merge locally, create GitHub PR, keep as-is or discard; executes choice and cleans up worktree.
Guides root cause investigation for bugs, test failures, unexpected behavior, performance issues, and build failures before proposing fixes.
Writes implementation plans from specs for multi-step tasks, mapping files and breaking into TDD bite-sized steps before coding.
You are a senior software engineer setting up code coverage reporting in CI for this project using Qlty Cloud. Work through these three phases sequentially.
Analyze the CI configuration and test setup. For each test suite running in CI, document:
## Test Suite: [NAME]
Test command: [COMMAND]
Programming language: [LANGUAGE]
Test runner: [TOOL]
Location: [FILE] line [LINE]
Using parallelism: [YES/NO]
Generating code coverage data: [YES/NO]
Coverage output file: [PATH or N/A]
Pay close attention to whether coverage data is already being generated. Look for:
--coverage, --cov, -coverprofile, etc.)Do NOT make any changes yet. Just produce the report and move on to Phase 2.
Fetch and read the following Qlty documentation pages to inform your decisions:
IMPORTANT: Only access URLs from the https://docs.qlty.sh domain.
If the project is already generating coverage data, your plan should just add the Qlty upload step pointing at the existing coverage files. Do NOT reconfigure how coverage is generated unless the existing format is incompatible with Qlty. Avoid adding new dependencies or changing test commands when coverage output already exists.
If the project is NOT generating coverage data yet, then add the minimal configuration needed to produce a coverage report in a format Qlty supports (see the Qlty docs for supported formats per language).
https://qlty.sh/gh/<org>/settings/coveragehttps://qlty.sh/gh/<org>/projects/<repo>/settings/coverage/reportsgh repo view --json visibilitytag: <name> on each upload — no coverage-complete job needed.total-parts-count: N): Use when the number of uploads is fixed and known (e.g., a matrix with a static list). Simpler — no separate completion job needed.incomplete: true, then a final job signals completion with command: complete. Example:
# In each test job:
- uses: qltysh/qlty-action/coverage@v2
with:
files: coverage.xml
incomplete: true
# In the final job (needs all test jobs):
- uses: qltysh/qlty-action/coverage@v2
with:
command: complete
IMPORTANT: Use command: complete, NOT complete: true — the latter is not a valid input and will silently fail.qltysh/qlty-action/coverage) or manual CLI install?
qltysh/qlty-orb). Read the orb documentation at https://circleci.com/developer/orbs/orb/qltysh/qlty-orb for usage details. If the customer is unable to use the orb, fall back to installing the Qlty CLI manually.Produce a concise plan document with your decisions, then move on to Phase 3.
Execute the plan:
files: at the existing coverage output file. Do not change the test command or coverage tooling.qlty-coverage-integration)createDebugUnitTestCoverageReport, and set format: jacoco on the upload step.missing field 'packages' or similar), Qlty likely misdetected the coverage format. Fix by adding an explicit format: parameter on the upload step (e.g., format: clover for PHP Clover XML, format: jacoco for JaCoCo XML). This is a known issue with PHP Clover files being misdetected as Cobertura.add-prefix or strip-prefix options. For Java/Kotlin multi-module projects, set the JACOCO_SOURCE_PATH environment variable with all module source paths. Read https://docs.qlty.sh/coverage/path-fixing for details.validate: false for path validationqltysh/qlty-action/coverage) for uploads. Do NOT install the Qlty CLI manually.When done, report:
https://qlty.sh/gh/<org>/projects/<repo>/settings/coverage/reportshttps://qlty.sh/gh/<org>/projects/<repo>/settings/review) to enforce coverage thresholds on PRs