Not in the top 1,000 by GitHub stars
marcosnovo/unslop-design
An agent skill (Claude Code, Codex, Cursor, Copilot, Gemini CLI...) that makes your app or site stop looking AI-generated: 64 numbered design fixes, scripts that score your UI from 0 to 100 (example: 26 → 100), and a before/after you approve.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → cc2bdb80c00d
No earlier version was observed for comparison.
Heat
Insufficient historyNot enough history yet to measure heat. It appears after a few days of data.
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
How it works
unslop-design
When your agent uses it
Review and redesign an app or website UI to strip out the "slop" (decorative accent color, gradients, glows, noisy badges, emoji as icons, eyeballed spacing, greetings as titles, Title Case, flat hierarchy, repeated numbers) with a system (spacing, type, color roles, elevation) and an orchestrated process: inventory from recordings or screenshots, grayscale pass, parallel product-designer reviewers, a published winning proposal, devs per area, audits and a PR. Covers SwiftUI, Compose and web (dashboards, landing pages, Tailwind), with scripts that scan the code and measure the rendered page. Use it when asked to "review the design", "make it look less AI", "unslop", "polish this screen", "design review", "winning proposal", "audit this dashboard", or when given videos or screenshots of an app or site asking for feedback or a redesign. Also use it to start a design system (spacing, type, palette, shadow scales) or to audit tokens, contrast or consistency across screens.
What it loads into context
Frontmatter
262 tokensAlways available to the agent
SKILL.md
1,792 tokensWhen the skill is activated
Reference documents
17,385 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Principles (non-negotiable)
- Any agent (Claude Code, Codex, Cursor, Copilot, Gemini…)
- Working agreement (defaults)
- Short flow
- If the project already has its own design skill
Scripts executed separately
install.shscripts/slop-scan.pyscripts/validate.pyscripts/web-audit.mjs
Files
.github/ISSUE_TEMPLATE/config.ymlasset27 bytes.github/ISSUE_TEMPLATE/feedback.ymlasset537 bytes.github/ISSUE_TEMPLATE/new-fix.ymlasset807 bytes.gitignoreasset38 bytesCHANGELOG.mddoc3,344 bytesCONTRIBUTING.mddoc1,122 bytesLICENSEasset1,068 bytesREADME.mddoc17,184 bytesSKILL.mdcore7,340 bytesagents/openai.yamlasset360 bytesassets/hero.pngasset912,783 bytesassets/process.pngasset55,185 bytesassets/process.svgasset2,153 bytesassets/refil-mapa.gifasset1,094,315 bytesassets/refil-perfil.gifasset1,244,618 bytesassets/social-preview.pngasset234,643 bytesassets/videos/refil-mapa.mp4asset1,115,116 bytesassets/videos/refil-perfil.mp4asset1,181,755 bytesassets/web-before-after.pngasset336,573 byteschecklist.mddoc18,203 bytesexamples/dashboard-after.htmlasset11,446 bytesexamples/dashboard-before.htmlasset5,026 bytesinstall.shruns3,850 bytesplatforms.mddoc3,636 bytesprocess.mddoc8,001 bytesreferences.mddoc7,029 bytesscripts/slop-scan.pyruns7,783 bytesscripts/validate.pyruns1,927 bytesscripts/web-audit.mjsruns17,489 bytesspec-card.mddoc1,923 bytesweb.mddoc6,523 bytes
Read SKILL.md
# Unslop design
Three parts: **what to fix** (`checklist.md`, each fix with its reason),
**how to orchestrate it** (`process.md`, rounds with reviewers and devs in
parallel) and **cases and sources** (`references.md`: the before/afters
that shaped this skill and a map of *Refactoring UI*). The spec card every
reviewer fills is in `spec-card.md`. Per-platform notes
(SwiftUI, Compose, web, widgets, watch, car) live in `platforms.md`; websites,
web apps and dashboards have their own playbook in `web.md`. Read the one
you need, not all of them.
Two scripts measure instead of guessing:
- `python3 scripts/slop-scan.py <paths>` — slop patterns in source (web,
SwiftUI, Compose) with file, line and fix number. Standard library only.View the complete source on GitHubSkills included
- unslop-design
Repository facts
- License
- MIT
- Created
- Nov 3, 2026
- Last pushed
- Nov 5, 2026
- Forks
- 0
- Open issues
- 0
- Project activity
- Active
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 6, 2026
- No broad tool permissions
- 4 dangerous shell commandsin 2 files: install.sh:4 README.md:67
- 37 network referencesin 5 files: README.md:22 install.sh:2 SKILL.md:6 and 2 more
- No hidden or obfuscated text
- No instruction overrides
- 4 executable scriptsin 4 files: install.sh:1 scripts/slop-scan.py:1 scripts/validate.py:1 and 1 more
- No access to secrets
- No requests to vote in Hot
Show all 45 signals by file
README.md
- Network accessline 22
<p align="center"><sub>Real screenshots of <a href="https://refil.app">Refil</a>, same screen and city, before and after running the skill.</sub></p> - Network accessline 24
<p align="center"> <img alt="Claude Code skill" src="https://img.shields.io/badge/Claude%20Code-skill-111111"> - Network accessline 25
<img alt="Claude Code skill" src="https://img.shields.io/badge/Claude%20Code-skill-111111"> - Network accessline 26
<img alt="Codex skill" src="https://img.shields.io/badge/Codex-skill-111111"> - Network accessline 27
<img alt="Agent Skills standard" src="https://img.shields.io/badge/Agent%20Skills-SKILL.md-111111"> - Network accessline 28
<img alt="SwiftUI · Compose · Web" src="https://img.shields.io/badge/SwiftUI%20·%20Compose%20·%20Web-111111"> - Network accessline 29
<img alt="MIT license" src="https://img.shields.io/badge/license-MIT-111111"> - Dangerous shell operationline 67
curl -fsSL https://raw.githubusercontent.com/marcosnovo/unslop-design/main/install.sh | bash - Network accessline 67
curl -fsSL https://raw.githubusercontent.com/marcosnovo/unslop-design/main/install.sh | bash - Network accessline 94
git clone https://github.com/marcosnovo/unslop-design ~/.claude/skills/unslop-design - Network accessline 105
Kiro: `.kiro/skills/`) and commit it, so your team and cloud sessions get it too. - **[skills CLI](https://github.com/vercel-labs/skills):** - Network accessline 106
it too. - **[skills CLI](https://github.com/vercel-labs/skills):** `npx skills add marcosnovo/unslop-design -g`. - Network accessline 107
- **[skills CLI](https://github.com/vercel-labs/skills):** `npx skills add marcosnovo/unslop-design -g`. - **claude.ai, Claude desktop or ChatGPT:** download `unslop-design.zip` - Network accessline 108
`npx skills add marcosnovo/unslop-design -g`. - **claude.ai, Claude desktop or ChatGPT:** download `unslop-design.zip` from the [latest release](https://github.com/marcosnovo/unslop-design/releases/latest) - Network accessline 109
- **claude.ai, Claude desktop or ChatGPT:** download `unslop-design.zip` from the [latest release](https://github.com/marcosnovo/unslop-design/releases/latest) and upload it as a skill (Claude: Settings → Capabilities → Skills). - Network accessline 110
from the [latest release](https://github.com/marcosnovo/unslop-design/releases/latest) - Network accessline 128
python3 scripts/slop-scan.py src/ # gradients, glows, emoji, arbitrary values, raw colors… with file:line and fix # node scripts/web-audit.mjs http://localhost:3000 # the rendered page at 390/768/1280 px - Network accessline 129
node scripts/web-audit.mjs http://localhost:3000 # the rendered page at 390/768/1280 px - Network accessline 304
Nothing in the rules: all of them read the same `SKILL.md` (the open [Agent Skills](https://agentskills.io) format); Codex also reads - Network accessline 305
[Agent Skills](https://agentskills.io) format); Codex also reads - Network accessline 348
- *[Refactoring UI](https://www.refactoringui.com/)* by Adam Wathan and - Network accessline 349
Steve Schoger, the source of many of the system rules. - Built while redesigning [Refil](https://refil.app), a fuel price app for iOS and Android. - Network accessline 350
- Built while redesigning [Refil](https://refil.app), a fuel price app for
SKILL.md
assets/process.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="210" viewBox="0 0 1200 210" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Inter, Helvetica, Arial, sans-serif">
install.sh
- Executable scriptline 1
#!/usr/bin/env bash - Network accessline 2
# Install unslop-design for every coding agent found on this machine. # # curl -fsSL https://raw.githubusercontent.com/marcosnovo/unslop-design/main/install.sh | bash - Network accessline 3
# # curl -fsSL https://raw.githubusercontent.com/marcosnovo/unslop-design/main/install.sh | bash # - Dangerous shell operationline 4
# curl -fsSL https://raw.githubusercontent.com/marcosnovo/unslop-design/main/install.sh | bash - Network accessline 4
# curl -fsSL https://raw.githubusercontent.com/marcosnovo/unslop-design/main/install.sh | bash - Network accessline 15
NAME=unslop-design REPO=${UNSLOP_REPO:-https://github.com/marcosnovo/unslop-design} - Network accessline 16
REPO=${UNSLOP_REPO:-https://github.com/marcosnovo/unslop-design} - Dangerous shell operationline 63
if ours "$target"; then echo " $agent: $target"; run rm -rf "$target" - Dangerous shell operationline 67
if ours "$MAIN"; then echo " main copy: $MAIN"; run rm -rf "$MAIN" - Network accessline 80
echo " cloning into $MAIN (Codex, Cline, Zed)" run mkdir -p "$(dirname "$MAIN")" run git clone --quiet --depth 1 "$REPO" "$MAIN" - Network accessline 81
run mkdir -p "$(dirname "$MAIN")" run git clone --quiet --depth 1 "$REPO" "$MAIN" [ "$DRY" = 1 ] || touch "$MAIN/$MARK" - Network accessline 82
run git clone --quiet --depth 1 "$REPO" "$MAIN"
scripts/slop-scan.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/validate.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/web-audit.mjs
- Executable scriptline 1
#!/usr/bin/env node
web.md
- Network accessline 41
npm i -D playwright # once, if the project doesn't have it node scripts/web-audit.mjs http://localhost:3000/dashboard --out unslop-audit - Network accessline 42
node scripts/web-audit.mjs http://localhost:3000/dashboard --out unslop-audit - Network accessline 43
node scripts/web-audit.mjs http://localhost:3000/dashboard --dark --widths 1280
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Signal confidence: 44 facts
- Network access in prose of documentationREADME.md:22Low confidence
- Network access in prose of documentationREADME.md:24Low confidence
- Network access in prose of documentationREADME.md:25Low confidence
- Network access in prose of documentationREADME.md:26Low confidence
- Network access in prose of documentationREADME.md:27Low confidence
- Network access in prose of documentationREADME.md:28Low confidence
- Network access in prose of documentationREADME.md:29Low confidence
- Dangerous shell operation in code of documentationREADME.md:67Low confidence
- Network access in code of documentationREADME.md:67Low confidence
- Network access in code of documentationREADME.md:94Low confidence
- Network access in prose of documentationREADME.md:105Low confidence
- Network access in prose of documentationREADME.md:106Low confidence
- Network access in prose of documentationREADME.md:107Low confidence
- Network access in prose of documentationREADME.md:108Low confidence
- Network access in prose of documentationREADME.md:109Low confidence
- Network access in prose of documentationREADME.md:110Low confidence
- Network access in code of documentationREADME.md:128Low confidence
- Network access in code of documentationREADME.md:129Low confidence
- Network access in prose of documentationREADME.md:304Low confidence
- Network access in prose of documentationREADME.md:305Low confidence
- Network access in prose of documentationREADME.md:348Low confidence
- Network access in prose of documentationREADME.md:349Low confidence
- Network access in prose of documentationREADME.md:350Low confidence
- Network access in the frontmatter of the SKILL.mdSKILL.md:6Low confidence
- Network access in the frontmatter of the SKILL.mdSKILL.md:7Low confidence
- Network access in the frontmatter of the SKILL.mdSKILL.md:8Low confidence
- Executable script in code of a file that runsinstall.sh:1High confidence
- Network access in a comment of a file that runsinstall.sh:2Low confidence
- Network access in a comment of a file that runsinstall.sh:3Low confidence
- Dangerous shell operation in a comment of a file that runsinstall.sh:4Low confidence
- Network access in a comment of a file that runsinstall.sh:4Low confidence
- Network access in code of a file that runsinstall.sh:15High confidence
- Network access in code of a file that runsinstall.sh:16High confidence
- Dangerous shell operation in code of a file that runsinstall.sh:63High confidence
- Dangerous shell operation in code of a file that runsinstall.sh:67High confidence
- Network access in code of a file that runsinstall.sh:80High confidence
- Network access in code of a file that runsinstall.sh:81High confidence
- Network access in code of a file that runsinstall.sh:82High confidence
- Executable script in code of a file that runsscripts/slop-scan.py:1High confidence
- Executable script in code of a file that runsscripts/validate.py:1High confidence
- Executable script in code of a file that runsscripts/web-audit.mjs:1High confidence
- Network access in code of documentationweb.md:41Low confidence
- Network access in code of documentationweb.md:42Low confidence
- Network access in code of documentationweb.md:43Low confidence
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.