Show HN: Lazy-clean Keep coding agents from overengineering Developer JustasMonkev released lazy-clean, a standalone skill package for coding agents that injects a YAGNI-based "lazy-senior-dev" ruleset at session and subagent start and runs a heuristic slop checker on every TypeScript/JavaScript file Claude writes or edits. The package ships five wiring tiers, with only the Claude Code and Codex tiers running the checker automatically via hooks/lazy-clean.json; OpenCode, Cursor, Copilot, and AGENTS.md readers get the ruleset without automation. The rulesets cover TypeScript, JavaScript, Java, Python, Ruby, Rust, and Go, while the bundled zero-dependency checker remains TS/JS-only and reads source text rather than invoking the compiler. One skill package for coding agents: write the least code that works, then delete the slop that crept in anyway. - While writing — a lazy-senior-dev ruleset YAGNI ladder, risk gate is injected at session start, into subagents, and adjustable via /lazy commands. - After writing — a heuristic slop checker runs on every TS/JS file Claude writes or edits, and hands findings back as review context. A renamed hard fork of two upstream projects; this package is standalone and self-contained. For upstream comparisons and selective ports, follow the update procedure https://github.com/JustasMonkev/lazy-clean/blob/main/skills/lazy-clean/references/upstream-updates.md and record the reviewed revisions and local differences in UPSTREAM.md https://github.com/JustasMonkev/lazy-clean/blob/main/UPSTREAM.md . Same ruleset, five levels of wiring — pick whatever your agent supports. | Tier | Platforms | What you get | Files | |---|---|---|---| | Full hooks | Claude Code, Codex | Compact ruleset injected at session and subagent start, /lazy level switching, slop-check auto-run after every Write/Edit | hooks/lazy-clean.json via .claude-plugin/plugin.json and .codex-plugin/plugin.json | | Plugin | OpenCode | Ruleset injected every turn plus eight slash commands | .opencode/ + opencode.json + hooks/ + skills/ — the plugin loads the shared builder from hooks/ , so copying only .opencode/ gives you a plugin that fails to load | | Rules file | Cursor, Copilot | Always-on ruleset for all seven supported languages; run the TS/JS-only checker by hand after TS/JS changes | .cursor/rules/lazy-clean.mdc , .github/copilot-instructions.md | | AGENTS.md | Everything else that reads it — Codex, Zed, Amp, Jules | The compact ruleset plus the post-edit checker step | AGENTS.md | | Skills only | Anything that reads ~/.claude/skills | Every skill on demand, no automation | skills/ | Only the Claude Code and Codex tiers run the checker automatically. Everywhere else run it yourself, from wherever the skills live — node ~/.claude/skills/slop-check/scripts/check.mjs