0188GitHub
patdown
A fuzzy linter: Jev gives your code an ocular patdown.
tyler-dot-earth/patdownREADME ↗
# patdown
Standalone CLI that lints a tree against fuzzy rules in one markdown file. Wrap it as a hook, plugin, or extension.
The judge is swappable. The default backend currently uses TypeSafe/Jev; rules and CLI commands use a provider-neutral interface.
## Install
```
npx patdown --help
pnpm add -D patdown
```
Requires Node.js >=22.22.2. The library entry is `patdown`; rule adapters import `@patdown/rules`. The optional Pi package is `@patdown/pi`.
For GitHub Actions, prefer the composite action over copy-paste yaml:
```yaml
- uses: tyler-dot-earth/patdown@v0.7.0
env:
TYPESAFE_API_KEY: ${{ secrets.TYPESAFE_API_KEY }}
```
See [GitHub Actions](docs/github-actions.md). The action always runs the published CLI. Custom report shapes stay an embed of `runPatdownCli` with your own `PatdownOutput` layer ([Custom output](#custom-output)), not an action input.
## Requirements
Node.js **>=22.22.2** and pnpm **11.8.0**. CI runs checks and built-CLI smoke tests on Node 22.22.2 and Node 24. Releases through v0.2.2 require Node >=24.18.0 and use `#/` import aliases that Node 22 rejects.
## Commands
From this repo, prefer the workspace script. It builds `patdown` through Turborepo (`dependsOn: build`) and then runs the CLI from your current directory:
```
pnpm -w patdown
pnpm -w patdown -- --rules ./rules.md
pnpm -w patdown -- --rules ./packs/typescript --verbose
pnpm -w patdown -- rules
pnpm -w patdown -- ask "Is this markdown heading title case?" --input-text "# Hello World"
pnpm -w patdown -- ask "Is this urgent?" --input-text "ASAP" --verbose
pnpm -w patdown -- --yes-threshold 0.9
pnpm -w patdown -- --github-annotation warning
pnpm -w patdown -- --files src/cli.ts --files README.md
pnpm -w patdown -- --files src
pnpm -w patdown -- --files 'src/**/*.ts'
pnpm -w