# 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: `onfire7777/pre-pr` (Agent Skill)
- Install (CLI): `npx skillmds@latest add onfire7777/pre-pr`
- Raw SKILL.md: https://api.skillmd.com/api/skills/onfire7777/pre-pr/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: Unspecified
- Author: onfire7777 (https://skillmd.com/u/onfire7777)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/onfire7777/pre-pr

---

## 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:

```bash
roslynator fix $PROJECT_PATH
```

Then verify compilation:

```bash
dotnet build $PROJECT_PATH
```

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

## Step 2: Run Tests

```bash
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

```bash
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

```bash
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

