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.
← Commit history
install.sh+17−7@@ -1,16 +1,26 @@-#!/bin/sh+#!/bin/bash set -e -# Symlink the CLI into ~/.local/bin so `prose-lint` is on PATH. Symlinking (not-# copying) means a reinstall/update never leaves a stale binary behind — the link-# always points at the current module dir.+PKG_DIR="$(cd "$(dirname "$0")" && pwd)"++# 1. Symlink the CLI onto PATH. Symlinking (not copying) means a reinstall/update+# never leaves a stale binary behind. BIN_DIR="${HOME}/.local/bin" mkdir -p "$BIN_DIR"-chmod +x "$PWD/bin/prose-lint" 2>/dev/null || true-ln -sfn "$PWD/bin/prose-lint" "$BIN_DIR/prose-lint"+chmod +x "$PKG_DIR/bin/prose-lint" 2>/dev/null || true+ln -sfn "$PKG_DIR/bin/prose-lint" "$BIN_DIR/prose-lint"++# 2. Deliver the skill so Claude/Codex discover it (same pattern as core skills).+SKILLS_DIR="${HOME}/.claude/skills"+mkdir -p "$SKILLS_DIR/prose-lint"+[ -f "$PKG_DIR/SKILL.md" ] && cp "$PKG_DIR/SKILL.md" "$SKILLS_DIR/prose-lint/SKILL.md"+if [ -d "${HOME}/.codex/skills" ]; then+ mkdir -p "${HOME}/.codex/skills/prose-lint"+ [ -f "$PKG_DIR/SKILL.md" ] && cp "$PKG_DIR/SKILL.md" "${HOME}/.codex/skills/prose-lint/SKILL.md"+fi if ! command -v node >/dev/null 2>&1; then- echo "prose-lint installed, but 'node' was not found on PATH — the CLI needs Node 16+ to run."+ echo "prose-lint installed, but 'node' was not found on PATH. The CLI needs Node 16+ to run." else echo "prose-lint installed -> $BIN_DIR/prose-lint" fi
package.json+3−2@@ -2,7 +2,7 @@ "slug": "prose-lint", "title": "Prose Lint", "type": "app",- "version": "0.1.0",+ "version": "0.1.1", "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",@@ -50,5 +50,6 @@ "headline": "Prose Lint", "subhead": "No em-dashes. No AI slop. Deterministic.", "screenshot": "docs/hero.png"- }+ },+ "changelog": "0.1.1: deliver the SKILL.md into ~/.claude/skills (and ~/.codex/skills) on install, so the skill actually surfaces to agents. 0.1.0 shipped a stub install.sh that did not." }
page.json+3−2@@ -2,7 +2,7 @@ "slug": "prose-lint", "title": "Prose Lint", "type": "app",- "version": "0.1.0",+ "version": "0.1.1", "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",@@ -57,5 +57,6 @@ "author": { "name": "Ray", "email": "[email protected]"- }+ },+ "changelog": "0.1.1: deliver the SKILL.md into ~/.claude/skills (and ~/.codex/skills) on install, so the skill actually surfaces to agents. 0.1.0 shipped a stub install.sh that did not." }
uninstall.sh+1−1@@ -1,6 +1,6 @@ #!/bin/sh set -e- BIN_DIR="${HOME}/.local/bin" [ -L "$BIN_DIR/prose-lint" ] && rm -f "$BIN_DIR/prose-lint"+rm -rf "${HOME}/.claude/skills/prose-lint" "${HOME}/.codex/skills/prose-lint" 2>/dev/null || true echo "prose-lint uninstalled"