Skip to main content
skill CX Codex

verify · codewithmukesh — Claude Code skill: what it does, how to install

Runs a .NET project check before review, covering builds, tests, security, formatting, and changed files.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add codewithmukesh/dotnet-claude-kit --skill verify -a claude-code
Open on GitHub

What verify does

This skill runs a sequential 7-phase check for .NET projects. It covers the build, analyzer diagnostics, antipattern detection, tests, package vulnerabilities, formatting, and git diff review.

It uses dotnet build for compilation, dotnet test for tests, and dotnet format --verify-no-changes to check formatting. Diagnostic and antipattern phases call the Roslyn MCP tools get_diagnostics and detect_antipatterns. Each phase reports PASS, WARN, or FAIL.

A build or test failure stops the remaining phases because later results would not be meaningful. Roslyn checks require MCP access, so its connection is worth checking before a full run.

What it helps with

  • check a .NET build before review
  • find new analyzer warnings
  • detect async void and sync-over-async calls
  • scan packages for vulnerabilities
  • review git diff for unintended changes

Example prompts for the agent

  • /verify
  • Run all checks before I create a PR.
  • Which verification phases should run after a dependency update?

How to install verify

1Skills CLI (Vercel)

npx skills add codewithmukesh/dotnet-claude-kit --skill verify -a claude-code

2Manually: put the files in place

~/.claude/skills/verify/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/verify/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about verify

How do I install verify in Claude Code?

Run npx skills add codewithmukesh/dotnet-claude-kit --skill verify -a claude-code, then repeat npx skills add codewithmukesh/dotnet-claude-kit --skill verify -a claude-code. The skill is placed at ~/.claude/skills/verify/SKILL.md.

What does verify do?

It runs 7 verification phases for .NET code, from builds and tests to security scanning, format checks, and diff review. Every phase returns PASS, WARN, or FAIL.

Why does verify stop after a build or test failure?

Build and test are critical phases. When either one fails, the skill stops the pipeline so the issue can be fixed before later checks run.

Source text

SKILL.md · MIT
---
name: verify
description: >
  Run a comprehensive 7-phase verification pipeline for .NET projects: build,
  analyzers, antipattern detection, tests, security, formatting, and diff
  review. Each phase produces PASS/FAIL with actionable output and the pipeline
  short-circuits on critical failures. Also the authority on verification
  strategy: which phases to run for a given change, quality gates, and
  fix-and-retry loops. Use when: "verify", "check everything", "is this ready",
  "pre-PR check", "run all checks", "quality gate", "verification strategy",
  "which checks should run", or after completing a feature or refactor.
---

# /verify -- 7-Phase Verification Pipeline

## What

Runs a sequential, 7-phase verification pipeline that catches issues at every level --
from compiler errors to subtle antipatterns to formatting drift. Each phase produces
an explicit PASS, WARN, or FAIL with details. "It looks fine" is not a verification
result; a table of statuses is. Critical failures (Phase 1 build, Phase 4 tests)
short-circuit the pipeline because later phases cannot produce meaningful results
on broken code.

The pipeline answers one question: **"Is this code ready for review?"**

| Phase | Tool | What It Catches | Critical |
|-------|------|-----------------|----------|
| 1. Build | `dotnet build` | Compilation errors, missing references | Yes |
| 2. Diagnostics | `get_diagnostics` (MCP) | New analyzer warnings, nullability issues | FAIL on new errors |
| 3. Antipatterns | `detect_antipatterns` (MCP) | async void, sync-over-async, `DateTime.Now`, more | No |
| 4. Tests | `dotnet test` | Failing tests, regressions | Yes |
| 5. Security | `dotnet list package --vulnerable` + scan | Secrets, SQL injection, missing auth, vulnerable packages | FAIL on critical/high |
| 6. Format | `dotnet format --verify-no-changes` | Style drift, formatting inconsistencies | No |
| 7. Diff Review | `git diff` analysis | Accidental changes, debug leftovers, TODOs | No |

## When

- After completing a feature, bug fix, or major refactor
- Before creating a pull request -- non-negotiable, full pipeline
- After merging upstream changes or updating dependencies
- When the user says "verify", "check everything", "is this ready", "run all checks"
- As the final step before marking a task complete

### Which Phases to Run

Full pipeline is the default. For scoped changes, run a subset:

| Scenario | Phases | Notes |
|----------|--------|-------|
| Feature complete / Pre-PR / new endpoint | All 7 | No shortcuts |
| Bug fix | 1, 2, 4 | Add a test first if none covers it |
| After refactor | 1, 2, 3, 4 | Correctness focus; add 5-7 if security-sensitive |
| Dependency update | 1, 4, 5 | Build, tests, vulnerability scan |
| Config or test-only change | 1, 4 | Build and test |
| Formatting only | 6 | Format check is sufficient |

When in doubt, run all 7. Extra phases cost minutes; a missed security issue costs
days of incident response. Never cherry-pick phases because a change "looks safe".

## How

### Phase 1: Build (CRITICAL -- short-circuits)

```bash
dotnet build --no-restore --verbosity quiet
```

- If the build fails, STOP. Report errors and fix before continuing -- nothing
  downstream is meaningful on code that does not compile.
- Capture the warning count even on PASS; new warnings are tracked in Phase 2.
- Output: PASS (0 errors) or FAIL (with error list)

### Phase 2: Diagnostics

Use the Roslyn MCP `get_diagnostics` tool, scoped to changed files/projects
(full solution for cross-cutting changes). Compare against baseline -- flag only
NEW warnings introduced by the current changes. Common findings: CS8600/CS8602
(nullability), CS0219 (unused variable).

Output: PASS (0 new) / WARN (new warnings) / FAIL (new errors). Treat new
warnings as work -- today's CS8600 is next month's production NullReferenceException.

### Phase 3: Antipattern Detection

Use the Roslyn MCP `detect_antipatterns` tool on changed files (full project for
broad changes). Catches: `async void`, sync-over-async (`.Result`,
`.GetAwaiter().GetResult()`), `new HttpClient()`, `DateTime.Now`/`UtcNow` instead
of `TimeProvider`, broad `catch (Exception)`, string interpolation in logging,
missing `CancellationToken`, EF read queries without `AsNoTracking`.

Output: PASS (0 findings) / WARN (findings) / FAIL (critical antipatterns)

### Phase 4: Tests (CRITICAL -- short-circuits)

```bash
dotnet test --no-build --verbosity quiet
```

- Full suite, or scoped to affected test projects for large solutions.
- Any failing test is a FAIL -- no exceptions. Stop and fix before later phases.
- If no test project exists: SKIP with a recommendation to add tests.

Output: PASS (all green) or FAIL (failing test names + error messages)

### Phase 5: Security Scan

```bash
dotnet list package --vulnerable --include-transitive
```

Then review changed files for: hardcoded secrets/connection strings/API keys,
SQL injection (raw SQL without parameterization), missing `[Authorize]` on
endpoints that need it, permissive CORS, missing input validation, disabled
HTTPS or certificate validation.

Output: PASS / WARN (medium/low findings) / FAIL (critical/high vulnerabilities)

### Phase 6: Format Check

```bash
dotnet format --verify-no-changes --verbosity quiet
```

Reports drift without auto-fixing. To resolve, run `dotnet format` and include
the changes in the commit. If no `.editorconfig` exists, note it as a recommendation.

Output: PASS / WARN (with file list)

### Phase 7: Diff Review

Analyze `git diff --stat` and `git diff` (staged + unstaged) for:
- Accidental or unrelated file changes (`.vs/`, `bin/`, `obj/`, `.env`, secrets)
- Debug leftovers (`Console.WriteLine`, `#if DEBUG` in production paths)
- Unresolved TODO/HACK/FIXME markers
- Scope mismatch -- changes must match the task/PR description

Output: PASS (clean, matches intent) / WARN (with findings)

### Fix-and-Retry Loop

A single pass rarely produces all-green. The loop is the point:

1. **IDENTIFY** -- which phase failed, and the specific error
2. **FIX** -- make the minimal change that resolves it
3. **RE-RUN** -- from Phase 1 if the fix changed code; otherwise from the failed phase
4. **REPEAT** -- until all phases pass, or an issue needs user input

### Final Summary

```
## Verification Results

| Phase | Result | Details |
|-------|--------|---------|
| 1. Build | PASS | 0 errors, 0 warnings |
| 2. Diagnostics | PASS | 0 new diagnostics |
| 3. Antipatterns | WARN | 1 missing CancellationToken |
| 4. Tests | PASS | 47 passed, 0 failed |
| 5. Security | PASS | No findings |
| 6. Format | PASS | Clean |
| 7. Diff Review | WARN | 1 TODO marker found |

**Verdict: READY FOR REVIEW** (with 2 non-blocking warnings)
```

Verdicts: **READY FOR REVIEW** (all PASS, or only non-blocking WARNs) or
**NEEDS FIXES** (any FAIL, with specific remediation steps). For pre-PR runs,
include the verification report in the PR description.

## Example

```
User: /verify

Claude: Running 7-phase verification pipeline...

Phase 1: Build ............ PASS (0 errors)
Phase 2: Diagnostics ...... PASS (0 new warnings)
Phase 3: Antipatterns ..... WARN
  - src/Features/Orders/CreateOrder.cs:42 -- DateTime.Now usage, use TimeProvider
Phase 4: Tests ............ PASS (23 passed, 0 failed, 0 skipped)
Phase 5: Security ......... PASS
Phase 6: Format ........... PASS
Phase 7: Diff Review ...... PASS

Verdict: READY FOR REVIEW (1 non-blocking warning)

Recommendation: Replace DateTime.Now with TimeProvider on line 42 before
merging. Not blocking, but it will fail the antipattern check in CI.
```

## Related

- `/build-fix` -- Auto-fix build errors when Phase 1 fails
- `/code-review` -- Multi-dimensional review once verification passes
- `/health-check` -- Whole-project graded assessment (beyond this change set)

© codewithmukesh · MIT · codewithmukesh/dotnet-claude-kit

Similar skills

Everything for Testing and QA →

verify by other authors comes first.

verify react Validates code changes against React repository requirements before committing. Runs Prettier, linter, Flow type checks, and tests. CX Codex +1 1,200installs verify Yeachan-Heo Turns "it should work" into evidence you can read: which check ran, what passed, and what stayed unverified. CX Codex +1 647installs find-untested-sources dotnet Finds source files lacking corresponding tests using static AST parsing without project builds. Useful for coding agents before generating new test suites. CX Codex +1 3,100installs openspec-verify-change openspec Verifies that code implementations match OpenSpec specs, tasks, and design documents before archiving. Useful for validation before finalizing changes. CX Codex +1 3,500installs audit-verify-explain-grade-5 MengTo This skill makes the agent audit a change, back every claim with evidence, and then explain the result in plain language. Handy when you review someone else's fix or a test report. CX Codex +1 1,400installs ponytail-review DietrichGebert ponytail-review reviews a change beyond the diff, checking connected code, bugs, risks, load, tests, speed, and unnecessary code. Use it for PRs and commits. CX Codex +1 57,000installs ponytail-audit DietrichGebert It audits a repository and ranks bugs, risks, and redundant code in a one-shot report. Use it when you need a review without code changes. CX Codex +1 45,400installs code-review-excellence Seth Hobson This skill guides pull request reviews, catches logic and security issues, and helps teams give specific feedback. Use it for review standards or developer mentoring. CX Codex 30,193installs

From the same set46

ddd A skill that teaches the agent Domain-Driven Design tactical patterns for .NET: aggregates, value objects, domain events, strongly-typed IDs and aggregate repositories. CX Codex +1 2,900installs clean-architecture A skill that lays out .NET code across four projects, keeps dependencies pointing inward, and shows where use case handlers belong. CX Codex +1 3,000installs code-review Multi-dimensional .NET code review: Roslyn MCP catches antipatterns and diagnostics, manual review covers the risky paths first. CX Codex +1 2,800installs project-setup Recommends .NET tech stack defaults for databases, auth, caching, and messaging. Helps pick stack defaults or review dependencies before writing code. CX Codex +1 2,800installs instinct-system Captures code patterns, user corrections, and project findings in separate stores. Use it when an agent needs to retain lessons from recurring work. CX Codex +1 2,800installs container-publish Builds OCI images straight from dotnet publish /t:PublishContainer, no Dockerfile involved. Useful when a .NET 10 app has to ship as a container and land in a registry. CX Codex +1 2,800installs workflow-mastery Workflow guide and configurations for .NET development in Claude Code. It introduces parallel sessions via git worktrees, verification loops, and context budgeting. CX Codex +1 2,800installs aspire Guides .NET Aspire setup for local service orchestration, resource wiring, and service discovery. Use it when working with AppHost or shared service defaults. CX Codex +1 2,800installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor