pre-pr

Run mandatory pre-PR quality checks for .NET projects before creating a pull request. Use before creating any PR, or when the user says "prepare for PR", "pre-PR checks", or "quality gate".

SKILL.md

GitHub

Prerequisites

Check that required tools are available:

which roslynator
which quickdup

If roslynator is not found:

dotnet tool install -g roslynator.dotnet.cli

If quickdup is not found:

  • Pinned source install: go install github.com/asynkron/Asynkron.QuickDup/cmd/quickdup@v0.5.2

About

This is a mandatory quality gate to run before creating any pull request in a .NET project. It ensures code is analyzed, compiles cleanly, tests pass, duplication is checked, and code is formatted — in that order.

Do NOT skip any steps. Do NOT create a PR if any step fails. Iterate until all checks pass.

Determine Paths

If $ARGUMENTS is provided, use it as the project/solution path. Otherwise, look for a .sln or .csproj in the current directory.

Also determine the source directory for quickdup scanning (typically src/ or the project root).

Step 1: Roslynator Fix

Run static analysis and auto-fix code issues:

roslynator fix $PROJECT_PATH

Then verify compilation:

dotnet build $PROJECT_PATH

If build fails: Fix the issues and rerun roslynator before proceeding.

Step 2: Run Tests

dotnet test $PROJECT_PATH

Handle failures:

  • Flaky tests: Rerun to confirm
  • Broken tests: Fix before proceeding
  • All tests MUST pass before moving to step 3

Step 3: Check for Code Duplication

quickdup -path $SOURCE_DIR -ext .cs -select 0..20 -min 2 -exclude ".g.,.generated."

If new duplications are found:

  1. Refactor to eliminate duplications (see /quickdup for refactoring patterns)
  2. Go back to Step 1 (roslynator fix)
  3. Repeat until no new duplications

Step 4: Format Code

dotnet format $PROJECT_PATH

Step 5: Final Verification

Confirm all checks passed:

  • Roslynator fix applied
  • Code compiles cleanly
  • All tests pass
  • No new code duplications
  • Code formatted

Step 6: Create PR

Only after ALL checks pass, create the pull request.

Important

  • Do NOT skip any steps
  • Do NOT create PR if any step fails
  • Steps are ordered intentionally — roslynator before build, build before test, duplication check may loop back to step 1
  • Iterate until all checks pass