| name | anti-slop-design |
| description | Anti-AI-slop design guard for websites/SaaS landing, presentation decks (PPT), dashboards/admin UI, and marketing/UI copy. Detects and blocks the AI-generated look before generation and audits it after: purple/gradient palettes, gradient text, Inter/Geist single-font pages, side-stripe cards, card-in-card, icon-tile 3-col grids, centered-hero macrostructure, fabricated metrics, emoji icons, over-animation, buzzword copy. Runs a clarify->context->plan->run->audit->revise flow with a two-phase audit gate (pre-emit self-critique + binary slop checklist) and hands Korean copy rewriting to humanize-korean. Triggers: 'AI ํฐ ์ ๋๊ฒ', 'slop ์ ๊ฑฐ', 'anti-slop', '๋์์ธ ๊ฐ์ฌ', '๋๋ฉ/๋ฑ/๋์๋ณด๋/์นดํผ ๋์์ธ', 'enterprise ๋์์ธ', 'make it not look AI-generated', 'audit this design', even when this skill is not named. |
anti-slop-design
Hermes Agent Compatibility
When this skill is loaded through Hermes as anti-slop-design:anti-slop-design, map Claude/Codex tool names to Hermes tools:
| Claude/Codex term | Hermes tool |
|---|
| Read | read_file |
| AskUserQuestion | clarify |
| Skill | skill_view (list available via skills_list) |
Treat $ARGUMENTS as the natural-language arguments supplied when the user asks Hermes to load the skill. Plugin-provided skills are explicit opt-in loads in Hermes; use skill_view("anti-slop-design:anti-slop-design") (or ask Hermes to load that qualified skill) rather than relying on bare text.
์น/SaaS ๋๋ฉ, ๋ฐํ ๋ฑ(PPT), ๋์๋ณด๋/admin UI, ๋ง์ผํ
ยทUI ์นดํผ๋ฅผ ๋ง๋ค๊ฑฐ๋ ๊ฐ์ฌยท๊ฐ์ ํ ๋ "AI๊ฐ ๋ง๋ ํฐ(slop)"๋ฅผ ์์ฑ ์ ์ ์ฐจ๋จํ๊ณ ์์ฑ ํ์ ๊ฐ์ฌํ๋ enterprise anti-slop guard.
ํต์ฌ ๋ช
์ : slop = ๋ธ๋ฆฌํ์ ๋ฌด๊ดํ๊ฒ ๋์ค๋ ๊ธฐ๋ณธ๊ฐ(default-not-choice). ๋ชจ๋ ํ์ ์ "์ด๊ฑด ์ด ๋ธ๋ฆฌํ๋ฅผ ์ํ ์ ํ์ธ๊ฐ, ์๋ฌด ๋ธ๋ฆฌํ์๋ ๋์ฌ ์ ํ์ธ๊ฐ"๋ก ํ์๋๋ค. ์ยทํฐํธยท๋ ์ด์์์ด "์์๊ฐ"๊ฐ ์๋๋ผ "์ ํ์ธ๊ฐ"๋ฅผ ๋ณธ๋ค.
์ธ์ ์ฐ๋
- ์ 4๊ฐ artifact๋ฅผ ์๋ก ๋ง๋ค ๋(์์ฑ ์ Phase A + ์์ฑ ํ Phase B ๊ฒ์ดํธ).
- ๊ธฐ์กด ์ฐ์ถ๋ฌผ์ ๊ฐ์ฌ/๊ฐ์ ํ ๋("์ด ๋๋ฉ AI ํฐ ๋๋์ง ๋ด์ค", "๋ฑ slop ์ก์์ค").
- ์นดํผ์ AI ํฐ๋ฅผ ๋ค๋ฃฐ ๋ โ ์๋ฌธ์ ์์ฒด ํ์งยท์ค์ฝ์ด๋ง, ํ๊ตญ์ด ์ฌ์์ฑ์ humanize-korean์ ์์.
์ ํ๋ ๊ฒ (scope)
- ๋์์ธ "์์ฑ๊ธฐ"๊ฐ ์๋๋ค. ๋ฐฉํฅยท๊ตฌ์กฐยท๊ฒ์ดํธ๋ฅผ ์ ๊ณตํ๊ณ , ์ค์ ๊ตฌํ์ ํธ์ถ์(๋๋ frontend-design, ppt-master, taste-skill ๋ฑ)๊ฐ ํ๋ค.
- ์คํํ detection ์์ง/ํธ์ง ์ฐจ๋จ hook ์์ โ ๋ฆฌํฌํธยท๊ถ๊ณ ๋ง ํ๋ค.
- ๋ฑ ๋น๋ ์คํ(md->SVG->pptx)์ ๊ธฐ์กด ๋๊ตฌ(ppt-master/codex-image)๊ฐ ํ๋ค. ๋จ ์์ฑ ์ผ๊ด์ฑยท๋ฉํ ์ ๊ฒ์ฆ ๋ฐฉ๋ฒ๋ก (per-slide ๋ณ๋ ฌ + BUILDKIT, ๋ ๋ ๊ฒ์ฆ ํจ์ )์ anti-slop ์๊ด์ผ๋ก ํฌํจ โ
references/slop-taxonomy.md ยง3 PPT lane.
- ๋ธ๋๋ ์ยทํฐํธ๋ฅผ ๊ธฐ์ต์ผ๋ก ์ถ์ธกํ์ง ์๋๋ค. ์๋ฃ ์์ผ๋ฉด ์ฝ๊ณ , ์์ผ๋ฉด
references/house-style.md ๊ธฐ๋ณธ๊ฐ, ๊ทธ๋๋ ์์ผ๋ฉด placeholder๋ก ๋๊ณ ์ฌ์ฉ์์๊ฒ ๋ฌป๋๋ค.
ํ๋ฆ (clarify -> context -> plan -> audit(A) -> run -> audit(B) -> revise)
1. Clarify
artifact ์ข
๋ฅ(web / ppt / dashboard / copy), ์ฒญ์ค, ๋ธ๋๋, ๊ฒฐ์ ๋งฅ๋ฝ์ ์๋ณ. ๋ชจํธํ๋ฉด AskUserQuestion ๋ฐ 'interview skill'์ ํตํด ์ขํ๋ค. ์๋ ๊ฐ์ ๊ธ์ง.
2. Context
- ํด๋น lane ๊ท์น(
references/slop-taxonomy.md์ lane ์น์
) + references/house-style.md + references/slop-taxonomy.md์ VISUAL/STRUCTURAL์ ๋ก๋.
- ์นดํผ๊ฐ ๋ฒ์๋ฉด
references/copy-rules.md๋ ๋ก๋.
- ๋ธ๋๋ ์๋ฃ(logo/palette/์คํฌ๋ฆฐ์ท) ์์ผ๋ฉด ์ฝ์ด brand-spec์ ์ก๊ณ , ์์ผ๋ฉด house-style ๊ธฐ๋ณธ๊ฐ. ์์ ์ง์ด๋ด์ง ์๋๋ค.
3. Plan
- "clean / modern / professional" ๊ฐ์ ๋ชจํธํ ๋ฐฉํฅ ๊ธ์ง. ๊ตฌ์ฒด์ ๋ฐฉํฅ 1๊ฐ๋ฅผ ๊ณ ๋ฅธ๋ค(์: enterprise editorial / technical minimal / research-lab calm / operator dashboard).
- ์ ๋ณด ์๊ณ(primary/secondary/tertiary)๋ฅผ ๋จผ์ ์ ์.
- ์๊ฐ ์ฐ์ถ๋ฌผ์ ๋ฐฉํฅ์ 2~3๊ฐ ์ ์ํ๊ณ ์ฌ์ฉ์๊ฐ ํ1(show-don't-tell). ํ ์๋ง ๋ฐ์ง ์๋๋ค.
4. Audit gate โ Phase A (์์ฑ ์ )
Plan์ 6์ถ์ผ๋ก ์ฑ์ ํด emit ์ ์ ํต๊ณผ์ํจ๋ค(์์ธ โ ์๋ "Audit gate (2๋จ๊ณ)"์ Phase A).
5. Run
ํ1 ๋ฐฉํฅ + lane ๊ท์น + house-style ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ฐ์ถ(๋๋ ํธ์ถ์์๊ฒ ์ ๋ฌํ spec ์์ฑ). ๋ชจ๋ ban์๋ escape hatch: ๋ธ๋ฆฌํ์ ๋ช
์ ์๊ตฌ๊ฐ ํญ์ ์ด๊ธด๋ค(๋ธ๋๋๊ฐ ๋ณด๋ผ์์ด๋ฉด ๋ณด๋ผ ํ์ฉ, ์ฒญ์ค์ด ์ด๋ฆฐ์ด๋ฉด emoji ํ์ฉ ๋ฑ). ์์ธ๋ฅผ ์ฐ๋ฉด ๊ทธ ์ค์ ์ด์ ๋ฅผ ๋ช
์.
6. Audit gate โ Phase B (๋ฉํ ์ )
์๋ 12ํญ๋ชฉ binary ์ฒดํฌ๋ฆฌ์คํธ(ํ์, ์์ธ โ ์๋ "Audit gate (2๋จ๊ณ)"์ Phase B). ์นดํผ ํฌํจ ์ ์๋ฌธ์ references/copy-rules.md๋ก ํ์งยท์ค์ฝ์ด๋งํ๊ณ , ํ๊ตญ์ด ์ฐ๋ฌธ ์ฌ์์ฑ์ humanize-korean:humanize-korean(fast ๋ชจ๋)๋ก ํธ๋์คํ ํ final.md ๋ณธ๋ฌธ๋ง ํ์ํ๋ค.
7. Revise
๊ฒ์ดํธ์ ๊ฑธ๋ฆฐ ํญ๋ชฉ์ ๊ณ ์น ๋ค ์ต์ข
ํ. ์ถ๋ ฅ์ ํญ์ ๋ค์์ ํฌํจ:
- ์ฌ์ฉํ design direction (๊ตฌ์ฒด ๋ช
์นญ)
- ์ ๋ณด ์๊ณ
- ์ ์ฉํ anti-slop ๊ฒฐ์ (๋ฌด์์ ์ ํผํ๋)
- ์ฐ์ถ๋ฌผ(๋๋ ๊ตฌํ spec)
- ๋จ์ ๋ฆฌ์คํฌ / trade-off
- ๊ฒ์ดํธ ๊ฒฐ๊ณผ โ Phase A 6์ถ ์ ์(์ต์ ์ถ ํฌํจ)์ Phase B 12ํญ๋ชฉ ์ค ๊ฑธ๋ ธ๋ ํญ๋ชฉยท์์ ๋ด์ฉ(๋ชจ๋ no์์ผ๋ฉด ๊ทธ๋๋ก ๋ช
์)
Audit gate (2๋จ๊ณ)
Phase A = ํ๋ฆ 4๋ฒ(Plan ์งํ, Run ์ด์ ) ยท Phase B = ํ๋ฆ 6๋ฒ(Run ์ดํ, ๋ฉํ ์ ).
Phase A โ ์์ฑ ์ self-critique (๋๊ตฌ ๋ถํ์, ์ต๊ณ ๋ ๋ฒ๋ฆฌ์ง)
self-similarity probe: "๋น์ทํ ๋ธ๋ฆฌํ๋ฅผ ๋จธ๋ฆฟ์์ผ๋ก ์ฒ๋ฆฌํ์ ๋ ๋์ฌ ์ ํ๊ณผ ๊ฐ์๊ฐ? ๊ฐ๋ค๋ฉด ๊ทธ๊ฑด ์ด ๋ธ๋ฆฌํ๋ฅผ ์ํ ์ ํ์ด ์๋๋ค โ ๊ต์ฒดํ๊ณ ๋ฌด์์ ์ ๋ฐ๊ฟจ๋์ง ์ ๋๋ค."
์ด์ด์ plan์ 6์ถ 1~5์ ์ผ๋ก ์ฑ์ . ํ ์ถ์ด๋ผ๋ 3 ๋ฏธ๋ง์ด๋ฉด emit ์ ์ 1ํ ์์ :
- Philosophy โ "์"/๊ด์ ์ด ์๋, ์๋๋ฉด ๊ทธ๋ฅ ๋ ์ด์์์ธ๊ฐ?
- Hierarchy โ 2์ด ์์ primary/secondary/tertiary๊ฐ ์ฝํ๋?
- Specificity โ ์ด ๋ธ๋ฆฌํ์ฒ๋ผ ๋ณด์ด๋, ์๋ฌด-ํ์ด์ง์ฒ๋ผ ๋ณด์ด๋?
- Restraint โ ๋ชจ๋ ์์๊ฐ ์ ๊ฐ์ ํ๋? (Chanel "์
์ธ์๋ฆฌ ํ๋ ๋นผ๊ธฐ")
- Variety โ ์ง์ ์ฐ์ถ๋ฌผ๊ณผ ๊ตฌ์กฐ์ ์ผ๋ก ๋ค๋ฅธ๊ฐ? (์๋ง ๋ฐ๊พผ ๊ฑด ๋ถ์ธ์ )
- Honesty โ ์ง์ด๋ธ metric/testimonial/logo๊ฐ 0์ธ๊ฐ?
๋ฃจํ ์ข
๋ฃ ํด๋ฆฌ์คํฑ: "2ํ ์์ ์ ์ ์, 3ํ๋ฉด ๋์์ธ์ด ์๋๋ผ ๋ธ๋ฆฌํ๊ฐ ํ๋ฆฐ ๊ฒ." 3ํ์งธ๋ฉด ๋ฉ์ถ๊ณ ๋ธ๋ฆฌํ๋ฅผ ๋ค์ ๋ฌป๋๋ค.
Phase B โ ๋ฉํ ์ binary ์ฒดํฌ๋ฆฌ์คํธ
12ํญ๋ชฉ, ๋ชจ๋ ๋ต์ด "no"์ฌ์ผ ํต๊ณผ. ํ๋๋ผ๋ "yes" = ๊ณ ์น๋ค(๋ฉํ ๊ธ์ง). ๊ฐ ํญ๋ชฉ์ detector + fix ์.
| # | tell (๋ต์ด "no"์ฌ์ผ ํจ) | fix |
|---|
| 1 | purple/rainbow/mesh gradient, ๋๋ gradient text? | flat committed accent, bg-clip:text ๊ธ์ง |
| 2 | ๋จ์ผ ๊ณผ์ฉ font(Inter/Roboto/Geist/Space Grotesk)/one-font ํ์ด์ง, ๋๋ italic serif/display ํค๋(h1-h6/hero/stat โ hallmark "top AI tell")? | display+body ์๋์ pairing, ํค๋๋ roman weight |
| 3 | side-stripe card / card-in-card / icon-tile-above-heading 3-col grid / glassmorphism-as-defaultยท๋ชฉ์ ์๋ shadow? | bgยทweight ๋๋น, stripe ์ ๊ฑฐ, ์นด๋ ๋ณ์ฃผ, shadow๋ elevation ์๋ฏธ ์์ ๋๋ง |
| 4 | cream-default / #0D1117-neon / ์์ #000ยท#fff base? | anchor hue๋ก tintํ committed palette |
| 5 | full-viewport centered hero / ์ ๋ถ centered? | centered ์์ <=2, ๋น๋์นญ ๋์
|
| 6 | ์ฅ์์ฉ 01/02/03 ๋ฒํธ / ๋ชจ๋ ์น์
์ eyebrow chip? | ์ค์ sequence์ผ ๋๋ง, ๋ด์ฉ์ encode |
| 7 | generic Hero->3 features->testimonials->CTA->footer ๊ณจ๊ฒฉ? | ๋ธ๋ฆฌํ ํน์ macrostructure |
| 8 | ์ง์ด๋ธ metric / ๊ฐ์ง testimonial / placeholder๋ช
(Acme/Jane Doe), ๋๋ hero๊ฐ big-number+small-label+๋ณด์กฐstat ํ
ํ๋ฆฟ(์ค์์น๋ผ๋)? | ์ค์ ์์น+์ค์ narrative, ๋ผ๋ฒจ๋ placeholder, ๋๋ ์ง๋ฌธ |
| 9 | emoji as icon / icon library ํผ์ฉ? | ํ๋์ real icon set |
| 10 | ์๊ทธ๋ฆผ figurative SVG / ์ฌ๊ทธ๋ฆฐ browserยทphoneยทterminal chrome? | ์ค์ screenshot ๋๋ ํ์ placeholder |
| 11 | over-animation / transition-all / ๊ท ์ผ hover:scale / prefers-reduced-motion ์์? | ํ๋์ orchestrated moment + reduced-motion |
| 12 | copy: buzzword / "Not X, it's Y" ๋๋น / throat-clearing / ์ง์ด๋ธ specifics? | ์ง์ ์ง์ ํ ํ๊ตญ์ด๋ humanize-korean๋ก |
numeric floor sweep (์๋๊ฒ์ฆ ๊ฐ๋ฅ) โ ์ธ๋ถ 8ํญ๋ชฉ(contrastยท๋ณธ๋ฌธ ํฐํธยทtype-scaleยทline-lengthยทline-heightยท์ ์ยทtouch targetยทaccent footprint)๊ณผ ์ ํํ ์์น๋ references/slop-taxonomy.md ยง4 Numeric floor sweep ํ์์ ํ์ธํ๋ค(์๋ "reference ๋ก๋ฉ ๊ฐ์ด๋"์ ์ค๋ณต ๊ธ์ง ์ ์ฑ
๊ณผ ๋์ผํ๊ฒ ๋ณธ๋ฌธ์ ์์ฝ๋ง ๋๋ค).
gate mechanics
- Phase A ์ฃผ๊ด ํ๋จ์ Phase B ์ฒดํฌ๋ฆฌ์คํธ๋ณด๋ค ๋จผ์ ํ์ฑํ๋ค(์ฒดํฌ๋ฆฌ์คํธ๊ฐ ๋นํ์ anchoringํ์ง ์๋๋ก).
- ์ฐ์ถ๋ฌผ์ self-describing ์คํฌํ(
<!-- anti-slop: A-pass ยท contrast ok ยท 1-12 no -->)๋ฅผ ๋ฐ๋์ ๋จ๊ธด๋ค โ Phase A/B๊ฐ ์ค์ ๋ก ์คํ๋๋ค๋ ์ ์ผํ ์ฌํ ์ฆ๊ฑฐ์ด๋ฏ๋ก ์๋ต ๊ธ์ง.
- ๋ชจ๋ ban์ escape hatch ๋ณด์ โ "๋ธ๋ฆฌํ์ ๋ช
์ ์๊ตฌ๊ฐ ํญ์ ์ด๊ธด๋ค". ์์ธ๋ ์ธ๋ผ์ธ์ผ๋ก ์ฌ์ ํ๊ธฐ.
reference ๋ก๋ฉ ๊ฐ์ด๋
| ์ํฉ | ๋ก๋ |
|---|
| ๋ชจ๋ ์๊ฐ ์์
| references/slop-taxonomy.md (VISUAL + STRUCTURAL) |
| lane๋ณ ๊ท์น | references/slop-taxonomy.md์ web / ppt / dashboard ์น์
|
| ์นดํผ ํฌํจ | references/copy-rules.md (+ ํ๊ตญ์ด๋ humanize-korean ํธ๋์คํ) |
| ๊ธฐ๋ณธ ์ ์๊ฐ | references/house-style.md |
์์ธํ detector ๋ชฉ๋กยท์์นยท์์๋ ๋ณธ๋ฌธ์ ์ค๋ณตํ์ง ๋ง๊ณ reference์์ progressive disclosure๋ก ๊ฐ์ ธ์จ๋ค.
humanize-korean ํธ๋์คํ (์นดํผ)
- ๊ฒฝ๊ณ: anti-slop-design = ์๊ฐ/๊ตฌ์กฐ + ์๋ฌธ ์นดํผ ํ์งยท์ค์ฝ์ด๋ง ์์ . humanize-korean = ํ๊ตญ์ด ์ฐ๋ฌธ ์ฌ์์ฑ ์์ .
- ํธ์ถ: ํ๊ตญ์ด ์นดํผ ์ฌ์์ฑ์ด ํ์ํ๋ฉด
humanize-korean:humanize-korean์ ํธ์ถ(๊ธฐ๋ณธ fast ๋ชจ๋, >=8000์ ๋๋ ์ ๋ฐ ํ์ ์ strict). ์ถ๋ ฅ final.md์ ๋ณธ๋ฌธ๋ง ํ์(HTML ์ฃผ์ ๋ฉํ ์ ์ธ).
- register: ์ฐ์ถ๋ฌผ(ํนํ ๋ฑ)์ ๋ฐํ ๋งฅ๋ฝ(๊ฐ์ฐ/ํ์ /ํผ์น)์ ํค์ค๋งค๋๋ฅผ ๋ง์ถฐ humanizeํ๋ค โ ํ์ /์ ๋ฌธ๊ฐ ์ฒญ์ค์ด๋ฉด ์ ์ฐฉ ๊ธฐ์ ์ฉ์ด๋ฅผ ์ ์ง(์ฒซ ๋ฑ์ฅ 1ํ ํ๊ธ ๋ณ๊ธฐ)ํ๊ณ ๊ตฌ์ด์ฒด๋ก ํํํํ์ง ์๋๋ค(
copy-rules.md ยง1).
- fallback (ํ์):
humanize-korean์ ์ด marketplace์ ๋ฒ๋ค๋์ง ์์ ์ธ๋ถ ์์กด์ด๋ค. ๋ฏธ์ค์น ํ๊ฒฝ(๋๋ Codex)์์๋ ํธ์ถ์ด ์์ด๋ lane์ด ์ค๋จ๋์ง ์๊ฒ graceful degrade โ copy-rules.md์ ํ๊ตญ์ด ์นดํผ ์์น์ผ๋ก ์ง์ ์๋ ์ฌ์์ฑํ๊ณ , humanize-korean์ด ์์ผ๋ฉด ๊ทธ์ชฝ์ ์ฐ์ ํ๋ค. ์์กด์ hard-require ํ์ง ์๋๋ค.
- ๊ธ์ง: stop-slop๋ฅ ๋ฌด๋ ์ ๋๊ธ์ง(๋ถ์ฌ ์ ๋ฉด๊ธ์ง, em-dash ์ ๋ฉด๊ธ์ง, 3ํญ๋ชฉ ๋ฆฌ์คํธ ๊ธ์ง)๋ฅผ ํ๊ตญ์ด๋ก ๋ณต์ ํ์ง ์๋๋ค โ ์ ์ญ ๊ฐ์ด๋ยทhumanize-korean์ ํ๊ตญ์ด ์นํ ์ํ ์คํ ์ค๋ฅผ ๋ฐ๋ฅธ๋ค.