Skip to content

patdown

Fuzzy linter CLI that checks a code tree against plain-language rules in one markdown file, judged by Jev via a swappable interface.

Projectbeta

Overview

patdown is a standalone CLI that lints a file tree against fuzzy rules kept in one markdown file, and can be wrapped as a hook, plugin or extension. Rules and commands use a provider-neutral interface so the judge can be swapped; the default backend uses Effect's Decision and DecisionModel with TypeSafe Jev. Commands include linting with a yes-threshold, listing loaded rules, a doctor check that verifies the key without calling the judge, and an ask command for ad hoc yes/no questions.

Options cover file selection by path, glob or a list, a cap on the number of judgments, verbose output and GitHub annotations. A composite GitHub Action runs the published CLI in CI. Optional packages add Pi write steering and Claude Code Write/Edit hooks. A list summary notes its LICENSE is not a recognised open-source licence.

What the decision model decides

TypeQuestionAnswers
Yes / noDoes this file violate the fuzzy rule (e.g. is this heading title case)?yes · no

How it works

  1. Write fuzzy rules in a markdown file.
  2. Run patdown over files or changed files.
  3. Jev answers yes/no per rule and file.
  4. Report findings above the yes-threshold, optionally as GitHub annotations.

Strengths

  • Rules in plain language, not AST code.
  • Swappable judge backend.
  • CI action and agent hooks for Pi and Claude Code.

Caveats

  • Licence not a recognised open-source licence per the list summary.
  • Each judgment is an API call; use max-judgments.

Getting started

npx patdown --help, or pnpm add -D patdown and set TYPESAFE_API_KEY.

At a glance

Type
Project
Status
beta
Language
TypeScript
Runtime
CLI, GitHub Action
Has code
yes
Has tests
yes

Use cases and integrations

How curated lists describe it

  • Typesafe's jev as a "fuzzy linter". give your code an ocular patdown.

    hellogumbo/awesome-jev
  • Lints a tree against fuzzy rules kept in one markdown file, behind a provider-neutral interface so the judge can be swapped. Its LICENSE is not a recognised open-source license.

    MrJev/awesome-jev

Frequently asked questions

Where do rules live?

In a single markdown file.

Can I use a different judge?

Yes, the interface is provider-neutral; TypeSafe is the default.

Does it integrate with agents?

Optional packages add Pi write steering and Claude Code Write/Edit hooks.

Related projects

  • Coding-agent hook that asks Jev one yes/no per project rule on every edit or turn and makes the agent fix any violation.

    HookbetaTypeScript
  • Advisor for coding agents: git and Stop hooks flag test tampering, secrets and skipped hooks, with optional Jev review findings.

    Hookbeta
  • Semantic code linter that reads each method with its callers and callees and asks decision models about defects, kind, line and severity.

    CLIbetaTypeScript
  • CLI and agent commands auditing a git diff against YAML standards packs, scoring each hunk with Jev so agents fix only flags.

    Agent skillbetaTypeScript
  • Fuzzy linter hook for Claude Code and Codex where Jev checks each written file against team rules and reports violations at edit time.

    HookbetaTypeScript
  • Cheap Jev checks beside a Claude coding session: per-function code rules, doc contradiction checks and context retrieval.

    ProjectbetaPython