Skill

anti-slop

Kill generic AI patterns before they ship — filler prose, over-commenting, defensive over-engineering, unnecessary abstractions, emoji headers. Apply on any UI, copy, or code that will be read by a human, including comments and READMEs.

Category
core
Version
0.1.0
License
MIT
Status
active
Length
72 lines
Source
skills/core/anti-slop/SKILL.md

Install and discovery

npx --yes --package @youcisla/agent-foundry agent-foundry-install

After the installer runs, this record is available as anti-slop. See the docs for harness roots and verification steps.

Contents

Anti-Slop

Generic AI output has tells. Catch them before the user does.

Procedure

The five categories

  1. Filler prose. "It's worth noting that...", "In this implementation, we...", "Let me explain how this works..." — delete on sight. If a sentence doesn't add information, cut it.
  2. Over-commenting. Code that explains what it does (// loop through array above for (const x of arr)). The code is the comment. Comments should explain why, not what.
  3. Defensive over-engineering. Try/catches around things that can't throw. Null checks on values that just got validated. Validation of external API inputs you control. If a failure mode can't happen, don't code for it.
  4. Unnecessary abstractions. Helper functions called once. Config objects for two settings. Factory classes with one implementation. If it's only used once, inline it.
  5. Emoji headers. "🚀 Quick Start", "✨ Features", "💡 Tip" — emoji in docs screams "AI wrote this." Strip them.

The test

Before declaring done, read your output and ask: "If a human wrote this, would their coworker assume they were trying too hard?"

If yes, cut.

When in doubt

Show your output to a fresh pair of eyes (a subagent with no context). If they say "this is generic AI," trust them and rewrite.

When to skip

  • The user is asking for a specific style and slop is what they want (rare, but it happens — internal brainstorming, first drafts).
  • The output is throwaway (a debug print, a test).

Worked example

One review note, before and after the five categories.

Before
  // Loop over each row and push it into the result array
  // It's worth noting that this implementation is straightforward.
  for (const row of rows) result.push(row);

After
  for (const row of rows) result.push(row);

Anti-patterns

  • A sentence that restates the heading without adding information.
  • A comment that narrates the next line of code.
  • A helper, config object, or factory used once.
  • Emoji headings or "Get started in seconds" filler.

Verification Checklist

  • [ ] Every sentence adds information or a decision. (step 1)
  • [ ] Comments explain why, not what. (step 2)
  • [ ] No abstraction exists without a second caller. (step 4)
  • [ ] No emoji headers or marketing filler remain. (step 5)
  • [ ] Error handling covers failures that can actually happen. (step 3)