| license | Apache-2.0 |
| name | make_copy_and_media_human |
| description | Review and rewrite copy, web UI, slides, READMEs, marketing pages, and generated imagery to strip AI-isms — Claudeisms, GPT-isms, Codexisms, Geminisms, and the v0/Lovable design look — producing a line-item fix plan as static HTML. Use before shipping any outward-facing text or design, when something "reads like AI", or when auditing a property for machine tells. NOT for grammar/spell checking, SEO optimization, plagiarism detection, or detecting whether a third party used AI (this is an editing skill, not a forensics tool). |
| allowed-tools | Read,Write,Edit,Bash,Grep,Glob,WebFetch |
| argument-hint | [file-or-directory] [--out report.html] [--findings findings.json] [--json findings.json] |
| metadata | {"provenance":{"kind":"first-party","owners":["port-daddy"],"scope":"public"},"authorship":{"maintainers":["port-daddy"]},"category":"Writing & Editing","tags":["humanize","copy-editing","ai-isms","design-review","voice"],"pairs-with":[{"skill":"port-daddy-marketing-copy","reason":"that skill drafts portdaddy.dev copy in the house voice; this skill audits the draft for machine tells before publish"},{"skill":"port-daddy-expository-writer","reason":"that skill drafts long-form concept/tutorial prose; this skill catches the cadence and structure tells that voice guide alone won't"},{"skill":"web-design-expert","reason":"that skill produces the visual design; this skill hunts the v0/Lovable generated-look tells (defaults, glassmorphism, indigo) in the result"}],"io-contract":{"kind":"deliverable","consumes":["[Truncated]","[Truncated]"],"produces":["[Truncated]","[Truncated]","[Truncated]"]}} |
Make Copy and Media Human
Strip the machine accent from anything outward-facing. The skill catalogs the tells — per model dialect and per medium — detects them with a two-layer pipeline, strikes them, and hands back a line-item fix plan as a self-contained static HTML report.
Philosophy
AI output has an accent. Not one accent — dialects: Claude's staccato and em-dashes, GPT's service voice and emoji headers, Gemini's caveat stacks, Codex's narrating comments, and the v0/Lovable visual register of Inter, indigo, and glassmorphism. Humans clock these in seconds even when they can't name them. The fix is never "paraphrase it" — it is to find each tell, understand why a person wouldn't have produced it, and make the decision a person would have made.
Two laws bind this skill:
- No keyword-list NLP. Phrase-level tropes are judged by the model against a rubric, never by substring lists over free text. The script layer measures only structural signals: densities, variances, ratios, codepoints, hex values, font names — values you control or can count.
- The output must pass its own review. The report template uses Georgia/Menlo, an oxide-red accent, ≥14px text, no emoji, no indigo. If this skill's own artifacts look generated, nothing it says is credible.
Decision Tree
flowchart TD
A[Input received] --> B{What medium?}
B -->|prose / README / blog / email| C[Structural pass: scripts/humanize_review.py]
B -->|web UI / CSS / JSX| D[Markup pass: colors, fonts, tokens, emoji-in-chrome]
B -->|slide deck| E[Export text + notes, treat as prose + layout review]
B -->|image / hero art| F[LLM-judge only: references/visual-design-tells.md rubric]
C --> G[Model judge pass against references/catalog.json]
D --> G
E --> G
F --> G
G --> H{Findings?}
H -->|yes| I[Write findings.json, merge: humanize_review.py --findings]
H -->|no| J[Report clean — say so plainly, no certificate theater]
I --> K[Static HTML report: struck text + rewrite per line item]
K --> L{User wants fixes applied?}
L -->|yes| M[Apply rewrites file-by-file, re-run to verify]
L -->|no| N[Deliver report, stop]
Process
1. Scope the input
Identify medium and stakes. A tweet gets the judge pass only; a marketing site gets both layers plus a render check. For decks (.pptx/Keynote), dump text and speaker notes first (python-pptx), review as prose, then review the visual idiom separately.
2. Run the structural layer
python3 scripts/humanize_review.py FILE [FILE...] --out report.html --json structural.json
Detects (measurable signals only): em-dash density >1.2/100w, staccato fragment share, uniform sentence length, zero contractions, broetry line-break runs, heading spam, bullet colonization, bold-label-colon grids, unattributed blockquotes, arrow chains, emoji-as-structure, AI-default hex accents (#6366F1 family), AI-default typefaces (Inter/Geist/Sora/Manrope/Space Grotesk), glassmorphism/rounded-2xl/gradient token repetition, emoji inside UI chrome.