Skip to content

Perch

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

CLIbeta

Overview

Perch is an open-source CLI that parses a repository into a method-level call graph and asks a decision model about each method with its callers and callees in view. Per the list summaries, it asks a Noul for whether the method has a bug, a Choice for which kind and which line, and a Score for severity, plus language-filtered CWE checks and custom rules written as sentences at repository, file or method level, failing CI when any answer exceeds its floor. Output lists problems such as wrong order, inverted condition, off-by-one or unhandled null with line, severity and confidence.

It runs through Perch Cloud by default, which routes questions to a suitable model, with $5 free and cached decisions making re-runs on unchanged code free, and can scan pull requests without workflow files. You can instead point it directly at Jev, Liquid AI d1, OpenAI gpt-6-luna or an open DiffusionGemma Jev endpoint. Agent skills can be installed for Claude Code, Codex, Pi and Cursor.

What the decision model decides

TypeQuestionAnswers
Yes / noDoes this method have a bug?yes · no
ChoiceWhich kind of defect, and on which line?wrong_order · inverted_condition · off_by_one · unhandled_null
ScoreHow severe is it?—
Yes / noDoes this method follow the custom rule (e.g. keep passwords and tokens out of logs)?yes · no

How it works

  1. Parse the repository into a method-level call graph.
  2. Ask defect, kind, line and severity questions per method in context.
  3. Check CWE and custom sentence rules.
  4. Report findings and fail CI above floors; cache answers.

Strengths

  • Call-graph context for each judgment.
  • Rules written as sentences in YAML.
  • Swappable decision-model providers.

Caveats

  • Cloud is the default path; direct providers need your own keys.
  • Sends code to the chosen provider.

Getting started

npm install -g @lakeday/perch && perch login && perch scan

At a glance

Type
CLI
Status
beta
Language
TypeScript
Runtime
Node CLI, cloud service
Has code
yes

Use cases and integrations

How curated lists describe it

  • Code linting: semantic code linter that asks Jev about each method with its callers and callees in view, a `Noul` for whether it has a bug, a `Choice` for which kind and which line, and a `Score` for severity, plus language-filtered CWE `Noul` checks and custom rules written as sentences at repository, file or method level, failing CI on any answer over its floor.

    yibie/awesome-jev
  • Semantic code linter that evaluates code units against configurable Jev questions.

    cobanov/awesome-jev
  • Open-source CLI that parses a repository into a method-level call graph, then asks Jev to flag likely defects and check project rules written in plain English.

    hellogumbo/awesome-jev
  • Semantic linter that reads each method together with its callers and callees before asking about it. Rules are sentences in a YAML file.

    MrJev/awesome-jev

Frequently asked questions

What does Perch ask about each method?

Whether it has a bug, what kind and where, and how severe, plus custom and CWE rules.

Can I use Jev directly?

Yes, set PERCH_BASE_URL, PERCH_API_KEY and PERCH_MODEL_ID to the TypeSafe endpoint.

Is re-scanning expensive?

Decisions are cached, so unchanged code is free to re-scan.

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
  • 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
  • Fuzzy linter CLI that checks a code tree against plain-language rules in one markdown file, judged by Jev via a swappable interface.

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

    ProjectbetaPython