pilcrow ¶
pilcrow turns the LLM in your AI harness into the editor it should be. A prose linter and harness skill anchored in classical style guides (Strunk, Williams, Zinsser, Pinker, Orwell, King): mechanical checks for what regex catches, LLM-judged ones for what it can't. Docs and catalog: pilcrow.ink.
Catches AI tells as one feature among many. Works for prose you wrote, prose the model wrote, and everything in between.
Inspired by impeccable.style: same idea, applied to writing. Detection-only. Findings carry line, column, excerpt, and an optional suggestion. The engine never edits.
Bare invocation triages. Run /pilcrow with no arguments. The skill finds the prose in scope, runs lint, identifies the genre, and proposes an ordered sequence of editor commands tuned to the piece. The plan gates on confirmation.
Every editor command applies three meta-disciplines: a reflex-rewrite catalog, a proposal ritual that surfaces and rejects LLM defaults, and a slop self-test on the editor's own output.
The full rule catalog lists 50 deterministic and 22 LLM-judged base rules at pilcrow.ink/rules.html. Per-genre extras add 76 more LLM rules across 39 leaves at pilcrow.ink/genres.html.
Install
Global, recommended:
npm install -g pilcrow-ink
The package on npm is pilcrow-ink; the binary it installs is pilcrow.
Or per-project without installing:
npx pilcrow-ink audit drafts/
Add the skill to your AI harness (Claude Code, Cursor, Gemini CLI, Codex/Agents, OpenCode, Kiro, Pi, Qoder, Trae, GitHub Copilot):
cd your-project
pilcrow skills install # auto-detects which harness dirs exist
pilcrow skills install --all # install into every supported provider
pilcrow skills update # re-sync after `npm update -g pilcrow-ink`
pilcrow skills check # show installed version + content-hash status
pilcrow skills cleanup # remove pilcrow installs under deprecated names
install and update use a content hash, not just the version string, so they detect a copy that's already on the current version but was edited locally. Modified installs are skipped with a notice; pass --force to overwrite. cleanup removes orphan skill folders left behind when pilcrow renames a sub-skill (verifies each is pilcrow-owned before deleting).
Without the npm package
The skill is committed at skills/pilcrow/, so you can pull it straight from GitHub without installing pilcrow-ink first:
npx skills add SamGalanakis/pilcrow # via skills.sh (skills.sh/SamGalanakis/pilcrow)
Or add it as a Claude Code plugin marketplace:
/plugin marketplace add SamGalanakis/pilcrow
/plugin install pilcrow@pilcrow
Both routes copy the skill as-is. The deterministic linter still needs the pilcrow binary on PATH (npm i -g pilcrow-ink or npx pilcrow-ink); without it the interpretive lenses fall back to manual reads. The Cowork zip below bundles the binary.
Claude Cowork
Cowork installs plugins from a zip, not from npm. Every release ships a pilcrow-cowork.zip asset. Download it, then in Cowork: Customize : Plugins : Install : upload the zip. Invoke with /pilcrow audit, /pilcrow polish, and the rest.
The zip bundles the compiled CLI (it has no npm dependencies), so the 50-rule deterministic linter runs inside Cowork's sandbox; only node need be present. To build the zip yourself: npm run build:cowork writes it to dist/pilcrow-cowork.zip.
CLI
Five engine commands:
pilcrow audit [paths...] [--ignore-quoted] Human-readable findings (default)
pilcrow lint [paths...] [--ignore-quoted] JSON output for LLM consumption
pilcrow critique [path] [--genre slug] Print the LLM-critique prompt
pilcrow rules [--json] List all rules
pilcrow skills <subcommand> Install or update the skill in your AI harness
Reads stdin if no paths. Recurses directories, scanning .md, .mdx, .markdown, .txt, .html, .htm.
HTML support strips <script>, <style>, <pre>, and <code> content; decodes common entities; treats closing block tags as sentence breaks. Pass --ignore-quoted to skip phrases inside straight or curly double quotes; useful when prose discusses AI tells without quoting them in backticks.
Editor commands
Editor commands sit on top of the engine. Each loads its own reference file with a methodology drawn from a classical style guide. They're invoked through the skill, not the CLI binary: /pilcrow <command> <target> in any AI harness with the skill installed.