← Commit history

Initial commit: app/prose-lint

Ray ·5a998ff97f ·2mo ago
2 files changed +120
README.mdadded+59
@@ -0,0 +1,59 @@+# Prose Lint++The deterministic house-style linter for Adom copy. It flags em-dashes and the+tics that make AI-written text read as AI-written, so anything we ship (READMEs,+wiki pages, release notes, chat announcements, UI strings) sounds like a person+wrote it.++`prose-lint` is the mechanical half of the house style. The judgment half lives in+the `prose-style` skill; read that for *how* to rewrite what this flags.++## Install++```+adom-wiki install adom/prose-lint+```++Ships as part of `adom/core`, so a normal Adom workstation already has it. Needs+Node 16+ (already present on Adom containers).++## Usage++```+prose-lint README.md                  # lint one or more files+prose-lint docs/*.md                   # globs+cat page.md | prose-lint               # or stdin+prose-lint --fix README.md             # apply safe 1:1 word swaps in place+prose-lint --strict page.md            # fail on ANY finding, not just em-dashes+prose-lint --json page.md              # { status, data, hints[] } for machines+```++Exit codes: `0` clean or soft-only, `1` hard findings (em-dashes / spaced `--`),+`2` usage error. `--strict` makes any finding fail (useful in CI / publish gates).++## What it flags++<!-- prose-lint-disable (the table below quotes the banned words on purpose) -->++| Severity | Rule | Example |+|---|---|---|+| hard | em-dash, en-dash-in-prose, spaced `--` | `a game-changer — really` |+| warn | tell-words | delve, seamless, robust, leverage, utilize, showcase, in-depth, myriad |+| warn | boilerplate cadence | "it's not just X, it's Y", "in today's world", "when it comes to", "plays a pivotal role" |+| info | filler | "in order to", "a variety of", empty intensifiers |++<!-- prose-lint-enable -->++It is markdown- and code-aware. It will not flag a `--flag` in a code span, a+number range like `2-5 V`, a URL, or YAML front matter, so it is safe over mixed+prose + code files.++## Wiring it into a publish flow++Run it non-blocking before publishing and show the findings:++```sh+prose-lint page.md || true   # advisory: print findings, never abort the publish+```++Or gate hard in CI with `--strict` when you want zero tolerance.
page.jsonadded+61
@@ -0,0 +1,61 @@+{+  "slug": "prose-lint",+  "title": "Prose Lint",+  "type": "app",+  "version": "0.1.0",+  "description": "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.",+  "tags": [+    "cli",+    "lint",+    "writing",+    "house-style"+  ],+  "dependencies": {},+  "discovery_triggers": [+    "lint this copy",+    "remove em-dashes",+    "does this sound AI-written",+    "check my prose",+    "make this read less AI",+    "prose lint"+  ],+  "discovery_pitch": "Reach for prose-lint before shipping any user-facing copy — READMEs, wiki pages, release notes, UI strings — to catch em-dashes and AI-tells deterministically.",+  "sample_prompts": [+    {+      "label": "Lint a wiki page",+      "prompt": "run prose-lint on readme.md before I publish it"+    },+    {+      "label": "De-AI some copy",+      "prompt": "this paragraph sounds AI-written, check it with prose-lint"+    }+  ],+  "metadata": {+    "activate": {+      "kind": "bridge",+      "skill": "prose-lint",+      "requires": [+        "node"+      ],+      "verbPrefixes": [+        "prose-lint"+      ]+    }+  },+  "scripts": {+    "install": "./install.sh",+    "uninstall": "./uninstall.sh"+  },+  "hero": {+    "type": "billboard",+    "headline": "Prose Lint",+    "subhead": "No em-dashes. No AI slop. Deterministic.",+    "screenshot": "docs/hero.png"+  },+  "visibility": "public",+  "org": "adom",+  "author": {+    "name": "Ray",+    "email": "[email protected]"+  }+}\ No newline at end of file