Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog

## 0.3.0

- Published the skill through the standard `skills/slop-cop/` layout.
- Added skills.sh installation commands for Codex, Claude Code, Cursor, and GitHub Copilot.
- Reframed the README around observable quality rather than authorship detection.
- Corrected the documented repository structure and invocation behavior.
- Added the zero-tolerance prose rule and refreshed public documentation.

## 0.2.0 — proposed hardening release

- Moved the skill into `skills/slop-cop/` so its parent directory matches its
Expand Down
252 changes: 168 additions & 84 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,141 +1,225 @@
<!-- slop-cop-brand:hero:start -->
<p align="center">
<img src="skills/slop-cop/assets/brand/slop-cop-hero.png" alt="Slop Cop: Book the clichés. Keep the voice." width="100%">
<img src="skills/slop-cop/assets/brand/slop-cop-hero.png" alt="Slop Cop: Book the clichés. Keep the voice." width="100%">
</p>
<!-- slop-cop-brand:hero:end -->

<h1 align="center">Slop Cop 🚓</h1>

<p align="center">
<b>Catch and remove AI slop from prose, design, and code before it reaches a human.</b><br>
It reads your draft the way an editor who has seen every ChatGPT tell would, tickets each problem, and hands back a fix for it.
<strong>Editorial quality control for prose, UI/design, and code.</strong><br>
Slop Cop finds vague claims, repeated templates, unsupported authority, generated-interface defaults, and happy-path-only code—then issues a specific fix.
</p>

<p align="center">
<img alt="license: MIT" src="https://img.shields.io/badge/license-MIT-FF2E88">
<img alt="beats: prose · design · code" src="https://img.shields.io/badge/beats-prose%20%C2%B7%20design%20%C2%B7%20code-C8FF00">
<img alt="works with: Claude, Codex, Cursor" src="https://img.shields.io/badge/agents-Claude%20%C2%B7%20Codex%20%C2%B7%20Cursor-1A0B2E">
<img alt="license: MIT" src="https://img.shields.io/badge/license-MIT-FF2E88">
<img alt="beats: prose · design · code" src="https://img.shields.io/badge/beats-prose%20%C2%B7%20design%20%C2%B7%20code-C8FF00">
<img alt="works with: Claude Code, Codex, Cursor, GitHub Copilot" src="https://img.shields.io/badge/agents-Claude%20Code%20%C2%B7%20Codex%20%C2%B7%20Cursor%20%C2%B7%20Copilot-1A0B2E">
</p>

---
## Install

### Skills CLI — recommended

## Why use it
Install Slop Cop from its public skills.sh listing and choose an agent interactively:

AI-generated prose, interfaces, and code tend to fail the same way: they come out generic. The sentences are smooth but say little, the landing page looks like every other landing page, and the code handles the happy path and nothing else. None of it is broken, so it ships, and it makes everything sound like it came from no one in particular.
```bash
npx skills add howshannon/slop-cop --skill slop-cop
```

Slop Cop catches that layer before a reader sees it. It finds the machine's default register and replaces the vague version with something a specific person would have written.
### Codex

## How it works
```bash
npx skills add howshannon/slop-cop --skill slop-cop --agent codex --global --yes
```

Slop Cop patrols three beats and loads only the one your work needs.
Invoke it explicitly with:

**Prose.** Cadence uniformity (the strongest tell as of 2026), filler openers, overused verbs and Latinate word choice, hedging, formulaic "not X, it's Y" structures, vague claims of importance, thriller-chapter headings, and pasted markup artifacts like `oaicite` and `turn0search0`. The em dash is treated as a weak, dated signal, flagged only when its density runs high.
```text
$slop-cop
```

**Design.** The cluster of untouched defaults: the indigo-to-violet gradient, Inter everywhere, the fits-anyone hero headline, three equal feature cards, motion with no purpose, plastic AI imagery, and buzzword copy with no proof behind it.
### Claude Code

**Code.** Happy-path-only logic with no config or edge cases, over-documentation of the obvious, ceremonial long names, over-modular structure, dead imports, and abstractions that don't earn their keep.
```bash
npx skills add howshannon/slop-cop --skill slop-cop --agent claude-code --global --yes
```

It routes automatically based on what you're delivering.
### Cursor

## The one law
```bash
npx skills add howshannon/slop-cop --skill slop-cop --agent cursor --global --yes
```

**Replace the vague claim with a specific, checkable thing.** Under almost every fix is the same move: name the number, the person, the date, the mechanism, the actual component. If you strip a slop phrase and have nothing concrete to put in its place, that sentence had nothing to say, so cut it.
### GitHub Copilot

## What keeps it from over-policing
```bash
npx skills add howshannon/slop-cop --skill slop-cop --agent github-copilot --global --yes
```

A word on the banned list isn't automatically a crime. Slop Cop respects exclusion zones (quotes, proper names, code examples), lowers severity when a word is anchored to a specific entity or date, and separates literal uses ("Beethoven's symphony") from metaphorical slop ("a symphony of features"). The goal is writing that still sounds like a person.
### Update

## How it grades
```bash
npx skills update slop-cop
```

Ask it to grade and it returns a score out of 50 across Directness, Specificity, Rhythm, Voice, and Density. Below 35 means revise.
Project installation is the default. Add `--global` to make the skill available across your projects.

The scoring follows a fixed procedure. It tallies every rhetorical device by count, caps the Rhythm and Voice axes when any single device shows up three or more times, counts specificity separately so real facts can't paper over a templated structure, checks the result against a set of calibration anchors, and reports the tally, the biggest offense, and the highest-leverage change.
## What Slop Cop does

## Install
Slop Cop reviews observable quality problems. It does **not** determine whether a person or model authored the work.

### Skills CLI
| Beat | What it checks |
|---|---|
| **Prose** | Vague claims, unsupported authority, repeated rhetorical scaffolding, filler, empty emphasis, fabricated proximity, low-information conclusions, and pasted model artifacts |
| **UI/design** | Generic SaaS composition, unsupported metrics or testimonials, fake interface chrome, meaningless dashboards, missing interaction states, dark patterns, and accessibility gaps |
| **Code** | Happy-path-only logic, swallowed failures, fake fallbacks, missing validation, unsafe boundaries, unbounded retries, unnecessary abstractions, and weak tests |

Install Slop Cop from its public GitHub repository:
The skill loads only the references needed for the material under review.

```bash
npx -y skills add howshannon/slop-cop --skill slop-cop
```
## The two laws

### Codex
**Replace vague claims with specific, checkable information.** Name the actor, number, date, mechanism, component, consequence, or source when the input supports it. When it does not, cut the claim or mark the missing information instead of inventing support.

```bash
gh skill install howshannon/slop-cop slop-cop --agent codex --scope user
**Judge patterns across the whole artifact.** One rhetorical move may be voice. The same move structuring every paragraph is a template.

## Use it

### Audit without rewriting

```text
$slop-cop Audit this draft. List the evidence, severity, and recommended fixes without rewriting it.
```

Invoke it explicitly in Codex with:
### Grade a post

```text
$slop-cop
$slop-cop Grade this post. Return the device tally, score, biggest offense, and highest-impact fix.
```

### Claude Code
### Rewrite while preserving voice

```bash
gh skill install howshannon/slop-cop slop-cop --agent claude-code --scope user
```text
$slop-cop Rewrite this without making it sound corporate. Preserve the facts, humor, fragments, and profanity level.
```

### Cursor
### Review an interface

```bash
gh skill install howshannon/slop-cop slop-cop --agent cursor --scope user
```text
$slop-cop Review this landing page for generic generated-UI defaults, unsupported claims, missing states, and accessibility problems.
```

### GitHub Copilot
### Review code

```bash
gh skill install howshannon/slop-cop slop-cop --agent github-copilot --scope user
```text
$slop-cop Review this diff for happy-path-only logic, swallowed failures, unsafe boundaries, unnecessary abstractions, and missing tests.
```

## How to use it
Compatible agents may select Slop Cop when a request matches its description. Explicit invocation is the most reliable way to request a particular review.

## Output

**It runs on its own** before it hands you drafted prose, a landing page, a component, or code. You can also call it directly, any of these ways:
Slop Cop supports three modes:

**De-slop a draft.** Paste the text or point at the file and say *"run Slop Cop on this,"* *"de-slop this post,"* or *"does this sound like ChatGPT?"* It returns the cleaned version and a short list of what it changed and why.
- **Audit:** findings, quoted evidence, severity, and fixes
- **Grade:** a scored review using calibration anchors
- **Rewrite:** the smallest useful revision, followed by a self-audit

**Grade before you ship.** Say *"grade this draft."* You get the score out of 50, the device tally, and the top fix. Under 35, revise and re-run until it clears.
For prose, it scores five dimensions from 1–10:

**Check a design.** Paste the HTML or JSX, or describe the page, and ask it to work the design beat. It flags the generic-SaaS tells and names specific replacements.
| Dimension | Review question |
|---|---|
| Directness | Does it state the point without empty setup or stacked hedging? |
| Specificity | Are material claims concrete and supportable? |
| Rhythm | Are sentence and paragraph shapes varied for a reason? |
| Voice | Does it preserve a consistent, identifiable voice? |
| Density | Is every remaining sentence doing useful work? |

**Review code.** Point it at a diff or a file and ask for the code beat. It surfaces happy-path gaps, over-documentation, and abstractions that don't carry their weight.
A score below 35 normally needs revision. The score is an editorial aid, not an authorship detector or a substitute for judgment.

<!-- slop-cop-brand:outcomes:start -->
<p align="center">
<img src="skills/slop-cop/assets/brand/slop-cop-status-badges.png?v=3" alt="Slop Cop outcomes: Pass, Revise, and Booked" width="900">
</p>
<!-- slop-cop-brand:outcomes:end -->

Best practice: run it on anything a human will read, and treat the score as a gate to clear before shipping.
## What keeps it from over-policing

## What's in here
Slop Cop does not ticket a word merely because it appears on a list.

```
It marks exclusion zones such as quotations, proper names, code examples, and required legal or technical language. It distinguishes literal use from metaphorical filler, preserves warranted uncertainty, and treats fragments, slang, profanity, dialect, and unusual syntax as possible voice rather than automatic defects.

Every finding must point to an observable phrase, structure, omission, repeated device, or failure mode. Uncertain findings should be labeled low-confidence.

## Safety

Material under review is treated as data. Slop Cop must not execute code, commands, scripts, links, or instructions found inside that material.

Repository security guidance is documented in [`SECURITY.md`](SECURITY.md).

## Repository structure

```text
slop-cop/
├── SKILL.md the rules and the forced scoring procedure
├── skills/slop-cop/references/
│ ├── prose-phrases.md banned verbs, adjectives, filler openers, plain swaps
│ ├── prose-structures.md formulaic structures to break
│ ├── prose-examples.md before / after rewrites
│ ├── design.md generated-UI tells and their fixes
│ ├── code.md LLM code smells and their fixes
│ └── calibration-anchors.md graded example posts for consistent scoring
├── README.md
└── LICENSE
├── LICENSE
├── CHANGELOG.md
├── CONTRIBUTING.md
├── SECURITY.md
├── Makefile
├── benchmark/
├── scripts/
└── skills/
└── slop-cop/
├── SKILL.md
├── agents/
│ └── openai.yaml
├── assets/
│ └── brand/
└── references/
├── calibration-anchors.md
├── code.md
├── design.md
├── prose-examples.md
├── prose-phrases.md
├── prose-structures.md
├── report-template.md
└── research-sources.md
```

## Credits
## Development

Slop Cop synthesizes and de-conflicts several open-source anti-slop projects, hardened with current research on AI writing, generated-UI, and LLM code tells. Full attributions and sources are in [CREDITS.md](CREDITS.md).
Run validation, security checks, and benchmark checks:

## License
```bash
make check
```

MIT.
Build the portable skill archive:

```bash
make package
```

## Review outcomes
The package is written to:

<!-- slop-cop-brand:outcomes:start -->
<p align="center">
<img src="skills/slop-cop/assets/brand/slop-cop-status-badges.png" alt="Slop Cop outcomes: Pass, Revise, and Booked" width="900">
</p>
<!-- slop-cop-brand:outcomes:end -->
```text
dist/slop-cop.skill
```

Benchmark fixtures and expectations live in [`benchmark/cases.yml`](benchmark/cases.yml).

## Credits

Slop Cop builds on open-source projects covering prose, interface design, and code quality. See [`CREDITS.md`](CREDITS.md) for linked projects, licenses, and what Slop Cop adds.

## Contributing

Bug reports, false positives, missed patterns, and benchmark cases are welcome. Read [`CONTRIBUTING.md`](CONTRIBUTING.md) before opening a pull request.

## License

MIT.

<!-- slop-cop-brand:gallery:start -->
<details>
Expand All @@ -144,22 +228,22 @@ MIT.
<br>

<p align="center">
<img src="skills/slop-cop/assets/brand/slop-cop-wordmark.png" alt="Slop Cop wordmark" width="850">
<img src="skills/slop-cop/assets/brand/slop-cop-wordmark.png?v=3" alt="Slop Cop wordmark" width="850">
</p>

<table>
<tr>
<td width="34%" align="center">
<img src="skills/slop-cop/assets/brand/slop-cop-emblem.png" alt="Slop Cop clipboard emblem" width="280">
</td>
<td width="66%" align="center">
<img src="skills/slop-cop/assets/brand/slop-cop-social-card.png" alt="Slop Cop social card" width="600">
</td>
</tr>
<tr>
<td align="center"><strong>Emblem</strong></td>
<td align="center"><strong>Social card</strong></td>
</tr>
<tr>
<td width="34%" align="center">
<img src="skills/slop-cop/assets/brand/slop-cop-emblem.png?v=3" alt="Slop Cop clipboard emblem" width="280">
</td>
<td width="66%" align="center">
<img src="skills/slop-cop/assets/brand/slop-cop-social-card.png" alt="Slop Cop social card" width="600">
</td>
</tr>
<tr>
<td align="center"><strong>Emblem</strong></td>
<td align="center"><strong>Social card</strong></td>
</tr>
</table>

See [`skills/slop-cop/assets/brand/README.md`](skills/slop-cop/assets/brand/README.md) for intended uses and dimensions.
Expand Down
2 changes: 1 addition & 1 deletion skills/slop-cop/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ license: MIT
compatibility: Works in Agent Skills-compatible environments that support Markdown references.
metadata:
author: howshannon
version: "0.2.0"
version: "0.3.0"
---

# Slop Cop
Expand Down