app
Prose Lint
Public Made by Adomby adom
Deterministic house-style linter for Adom copy. Flags em-dashes and the tics that make AI-written text read as AI-written (tell-words, boilerplate cadence, filler), with line:col, plain-language suggestions, --fix for safe swaps, and a --json envelope. Markdown/code-aware: never flags a --flag in a code span, a number range, or a URL.
<!doctype html><html><head><meta charset="utf-8"><style>
* { margin:0; padding:0; box-sizing:border-box; }
html,body { width:1200px; height:750px; }
body { background:#0a0e13; color:#e9eef5; font-family:-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
overflow:hidden; position:relative; }
.glow { position:absolute; inset:0;
background:radial-gradient(900px 500px at 82% 18%, rgba(0,230,220,.16), transparent 60%),
radial-gradient(760px 520px at 12% 92%, rgba(188,140,255,.16), transparent 60%); }
.wrap { position:absolute; inset:0; display:flex; flex-direction:column; justify-content:center; padding:76px 84px; }
.kicker { font-size:19px; letter-spacing:.32em; text-transform:uppercase; font-weight:700;
background:linear-gradient(90deg,#00e6dc,#58a6ff 55%,#bc8cff); -webkit-background-clip:text; background-clip:text; color:transparent; }
h1 { font-size:104px; font-weight:800; letter-spacing:-.03em; margin:14px 0 6px; line-height:.98; }
h1 .dot { color:#00e6dc; }
.sub { font-size:34px; font-weight:600; color:#aeb9c6; }
.accent { height:7px; width:230px; border-radius:6px; margin:26px 0 34px;
background:linear-gradient(90deg,#00e6dc,#58a6ff 55%,#bc8cff); }
.card { position:absolute; right:70px; bottom:70px; width:640px; background:#0f151d; border:1px solid #1e2a37;
border-radius:16px; box-shadow:0 40px 90px rgba(0,0,0,.55); overflow:hidden; font-family:'SF Mono',ui-monospace,Menlo,Consolas,monospace; }
.bar { height:38px; background:#131b25; border-bottom:1px solid #1e2a37; display:flex; align-items:center; gap:8px; padding:0 14px; }
.bar i { width:12px; height:12px; border-radius:50%; display:inline-block; }
.bar .r{background:#ff5f57}.bar .y{background:#febc2e}.bar .g{background:#28c840}
.bar span{margin-left:10px; font-size:14px; color:#7d8b9a}
.body { padding:20px 22px; font-size:19px; line-height:1.85; }
.body .path{color:#7d8b9a}
.hard{color:#ff6b6b; font-weight:700}
.warn{color:#febc2e}
.ok{color:#00e6dc; font-weight:700}
.rule{color:#8aa0b4}
</style></head><body>
<div class="glow"></div>
<div class="wrap">
<div class="kicker">Adom House Style</div>
<h1>prose<span class="dot">-</span>lint</h1>
<div class="accent"></div>
<div class="sub">No em-dashes.<br>No AI slop.<br>Deterministic.</div>
</div>
<div class="card">
<div class="bar"><i class="r"></i><i class="y"></i><i class="g"></i><span>prose-lint README.md</span></div>
<div class="body">
<div><span class="path">README:1:48</span> <span class="warn">warn</span> <span class="rule">[tell-word]</span> "game-changer"</div>
<div><span class="path">README:1:61</span> <span class="hard">HARD</span> <span class="rule">[em-dash]</span> em-dash in prose</div>
<div><span class="path">README:3:12</span> <span class="warn">warn</span> <span class="rule">[cadence]</span> "in today's world"</div>
<div style="margin-top:10px"> </div>
<div class="ok">OK: 1 hard, 2 tell. Fix before shipping.</div>
</div>
</div>
</body></html>