Pre-commit/pre-PR verification for ASP.NET Core projects: dotnet build, Roslyn analyzers, test coverage, vulnerability scanning, and format check. Produces READY/NOT READY report.
How this skill is triggered — by the user, by Claude, or both
Slash command
/everything-claude-code:aspnetcore-verificationThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Pre-commit and pre-deployment verification checklist for ASP.NET Core projects.
Pre-commit and pre-deployment verification checklist for ASP.NET Core projects.
dotnet build --configuration Release 2>&1 | tail -20
Expected: Build succeeded. with 0 errors, 0 warnings (if TreatWarningsAsErrors is enabled)
Fail criteria:
error CS compilation errorsCS8600, CS8602, CS8603)CS4014 — fire-and-forget)# Check formatting without modifying
dotnet format --verify-no-changes 2>&1
# Run static analysis
dotnet build /p:RunAnalyzersDuringBuild=true 2>&1 | grep -E "warning|error" | head -20
Expected: No changes were found for format, 0 analyzer warnings
Common issues:
ArgumentNullException.ThrowIfNulldotnet test --configuration Release \
--collect:"XPlat Code Coverage" \
--results-directory ./TestResults \
--verbosity minimal 2>&1 | tail -20
Expected: All tests pass, 80%+ line coverage
# Generate coverage report
reportgenerator \
-reports:TestResults/**/coverage.cobertura.xml \
-targetdir:TestResults/coverage-report \
-reporttypes:TextSummary
cat TestResults/coverage-report/Summary.txt
Fail criteria:
# Check for vulnerable NuGet packages
dotnet list package --vulnerable --include-transitive 2>&1
# Check for outdated packages
dotnet list package --outdated 2>&1 | head -20
Expected: No critical or high severity vulnerabilities
# Scan for hardcoded secrets (manual check)
grep -rn --include="*.cs" --include="*.json" \
-E "(password|secret|api_key|apikey)\s*=\s*[\"'][^\"']{8,}" \
src/ | grep -vi "test\|example\|placeholder"
dotnet format --verify-no-changes --verbosity diagnostic 2>&1 | head -30
Expected: No changes were found.
If not clean, auto-fix:
dotnet format
git diff --stat
git diff --stat HEAD~1
git diff HEAD~1 -- '*.cs' | head -100
Manual checklist:
Console.WriteLine in non-test code (use ILogger<T>).Result or .Wait() on async callsCancellationToken passed to all async calls# Find async anti-patterns
grep -rn --include="*.cs" "\.Result\b\|\.Wait()" src/
# Find Console.Write in production code
grep -rn --include="*.cs" "Console\." src/ | grep -v test
# Find swallowed exceptions
grep -rn --include="*.cs" -A2 "catch.*Exception" src/ | grep -B1 "^--\|{ }$\|{ }\|^\s*}\s*$"
# Check for missing CancellationToken
grep -rn --include="*.cs" "async Task" src/ | grep -v "CancellationToken"
After running all phases, produce this report:
=== VERIFICATION REPORT ===
Date: [timestamp]
Branch: [branch name]
Phase 1 - Build: ✅ PASS / ❌ FAIL
Phase 2 - Analyzers: ✅ PASS / ❌ FAIL
Phase 3 - Tests: ✅ PASS (N tests) / ❌ FAIL (N failures)
Phase 3 - Coverage: ✅ PASS (XX%) / ❌ FAIL (XX% < 80%)
Phase 4 - Security: ✅ PASS / ⚠️ WARNING (N issues) / ❌ FAIL
Phase 5 - Format: ✅ PASS / ❌ FAIL
Phase 6 - Manual: ✅ PASS / ⚠️ NEEDS REVIEW
Status: ✅ READY FOR PR / ❌ NOT READY
Issues to resolve:
- [list blocking issues]
Warnings (non-blocking):
- [list warnings]
===========================
READY: All phases pass, no blockers NOT READY: Any phase fails with ❌
npx claudepluginhub jed1978/everything-claude-codeCreates bite-sized, testable implementation plans from specs or requirements, with file structure and task decomposition. Activates before coding multi-step tasks.