aaronontheweb/dotnet-skills/slopwatch-2
- community
Checking that the SKILL.md file is still in the repository.
Use Slopwatch to detect LLM reward hacking in .NET code changes. Run after every code modification to catch disabled tests, suppressed warnings, empty catch blocks, and other shortcuts that mask real problems.
Install
npx vskill@latest install aaronontheweb/dotnet-skills/slopwatch-2SKILL.md
Slopwatch: LLM Anti-Cheat for .NET
When to Use This Skill
Use this skill constantly. Every time an LLM (including Claude) makes changes to:
- C# source files (.cs)
- Project files (.csproj)
- Props files (Directory.Build.props, Directory.Packages.props)
- Test files
Run slopwatch to validate the changes don't introduce "slop."
What is Slop?
"Slop" refers to shortcuts LLMs take that make tests pass or builds succeed without actually solving the underlying problem. These are reward hacking behaviors - the LLM optimizes for apparent success rather than real fixes.
Common Slop Patterns
| Pattern | Example | Why It's Bad | |
|---|---|---|---|
| Disabled tests | [Fact(Skip="flaky")] | Hides failures instead of fixing them | |
| Warning suppression | #pragma warning disable CS8618 | Silences compiler without fixing issue | |
| Empty catch blocks | catch (Exception) { } | Swallows errors, hides bugs | |
| Arbitrary delays | await Task.Delay(1000); | Masks race conditions, makes tests slow | |
| Project-level suppression | <NoWarn>CS1591</NoWarn> | Disables warnings project-wide | |
| CPM bypass | Version="1.0.0" inline | Undermines central package management |
Never accept these patterns. If an LLM introduces slop, reject the change and require a proper fix.
Installation
As a Local Tool (Recommended)
Add to .config/dotnet-tools.json:
Then restore:
As a Global Tool
First-Time Setup: Establish a Baseline
Before using slopwatch on an existing project, create a baseline of current issues:
Why baseline? Legacy code may have existing issues. The baseline ensures slopwatch only catches new slop being introduced, not pre-existing technical debt.
Usage During LLM Sessions
After Every Code Change
Run slopwatch after any LLM-generated code modification:
When Slopwatch Flags an Issue
Do not ignore it. Instead:
- Understand why the LLM took the shortcut
- Request a proper fix - be specific about what's wrong
- Verify the fix doesn't introduce different slop
Updating the Baseline (Rare)
Only update the baseline when slop is truly justified and documented:
Justification examples:
- Third-party library forces a pattern (e.g., must suppress specific warning)
- Intentional delay for rate limiting (not test flakiness)
- Generated code that can't be modified
Document why in a code comment when updating baseline.
Claude Code Hook Integration
Add slopwatch as a hook to automatically validate every edit. Create or update .claude/settings.json:
The --hook flag:
- Only analyzes git dirty files (fast, even on large repos)
- Outputs errors to stderr in readable format
- Blocks the edit on warnings/errors (exit code 2)
- Claude sees the error and can fix it immediately
CI/CD Integration
Add slopwatch to your CI pipeline as a quality gate:
GitHub Actions
Azure Pipelines
Detection Rules
| Rule | Severity | What It Catches | |
|---|---|---|---|
| SW001 | Error | Disabled tests (Skip=, Ignore, #if false) | |
| SW002 | Warning | Warning suppression (#pragma warning disable, SuppressMessage) | |
| SW003 | Error | Empty catch blocks that swallow exceptions | |
| SW004 | Warning | Arbitrary delays in tests (Task.Delay, Thread.Sleep) | |
| SW005 | Warning | Project file slop (NoWarn, TreatWarningsAsErrors=false) | |
| SW006 | Error | CPM bypass (VersionOverride, inline Version attributes) |
Configuration
Create .slopwatch/config.json to suppress a rule for specific paths, with a justification:
Use -c or --config to point at a config file elsewhere, and --exclude to leave paths out of analysis entirely:
Strict Mode (Recommended for LLM Sessions)
For maximum protection during LLM coding sessions, fail on warnings as well as errors:
The Philosophy: Zero Tolerance for New Slop
- Baseline captures legacy - Existing issues are acknowledged but isolated
- New slop is blocked - Any new shortcut fails the build/edit
- Exceptions require justification - If you must update baseline, document why
- LLMs are not special - The same rules apply to human and AI-generated code
The goal is to prevent the gradual accumulation of technical debt that occurs when LLMs optimize for "make the test pass" rather than "fix the actual problem."
Quick Reference
When to Override (Almost Never)
The only valid reasons to update baseline or disable a rule:
| Scenario | Action | Required | |
|---|---|---|---|
| Third-party forces pattern | Update baseline | Code comment explaining why | |
| Generated code (not editable) | Add to exclude list | Document in config | |
| Intentional rate limiting delay | Update baseline | Code comment, not in test | |
| Legacy code cleanup | One-time baseline update | PR description |
Invalid reasons:
- "The test is flaky" → Fix the flakiness
- "The warning is annoying" → Fix the code
- "It works on my machine" → Fix the race condition
- "We'll fix it later" → Fix it now
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/slopwatch/SKILL.md
Popularity
- Repository stars
- 907
- Repository forks
- 81
- 7-day trend score
- 34
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 5 May 2026, 5 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/aaronontheweb/dotnet-skills/slopwatch-2)