shipwithjev

Catalog / Tools & apps

0385GitHub

perch

Semantic code linter that evaluates code units against configurable Jev questions.

lakeday-org/perchREADME ↗
perchscan.com</a> &nbsp;&middot;&nbsp;
  <a href="https://docs.perchscan.com">docs</a>
</p>

Semantic code linting with Jev.



## Getting started

```sh
npm install -g @lakeday/perch
export PERCH_API_KEY=...
```

```console
$ perch scan
checkout.py
  ID        Line  Severity  Type    Confidence  Problem                     Method
  bdc67421    14  P1 (0.8)  defect         81%  wrong_order                 place_order
  ddc5c917    24  P1 (0.8)  defect         92%  inverted_condition          can_fulfil

cart.py
  ID        Line  Severity  Type    Confidence  Problem             Method
  287bfb9d     9  P1 (1.0)  defect         90%  off_by_one          subtotal
  80d6ebbb    29  P1 (1.4)  defect         89%  unhandled_null      cheapest

✖ 20 problems in 5 files, all failing
```

`perch issues` lists them worst first. `perch issues <id>` opens one up. `perch check
<id>` asks again after a fix, and records what it finds nowhere.

## Agent skills

```sh
perch setup claude-code   # .claude/skills/perch/SKILL.md
perch setup codex         # .codex/skills/perch/SKILL.md
perch setup pi            # .pi/skills/perch/SKILL.md
perch setup cursor        # .cursor/rules/perch.mdc
```

## Semantic linting

Extend perch with custom rules, in `perch.yaml`:

```yaml
- name: env-read-once
  where: "src/**/*.js"
  each: method
  min: 70
  ensure: >
    This method takes its configuration as arguments. Reading process.env is the
    command line's job.
```

## Documentation

| | |
| --- | --- |
| [Getting started](https://docs.perchscan.com/install/) | Install, the key, the first scan. |
| [Reading issues](https://docs.perchscan.com/issues/) | The list, the filters, closing what does not matter. |
| [Semantic linting](https://docs.perchscan.com/rules/) | `where`, `each`, `sees`, `min`, `ga

Also filed under Tools & apps

  1. 0573

    Support chat: agent offered a human escalation path

    A frustrated customer hits a bot loop twice; the judge checks whether a human handoff was offered.

    everyai-com · Tools & apps

  2. 0572

    Subscription cancel: effective date is explicit

    An agent cancels a subscription; the judge checks the exact date the cancellation takes effect.

    everyai-com · Tools & apps

  3. 0571

    Sales quote: numbers match the official price list

    An agent quotes $29/seat against a price list; the judge checks the quote matches exactly.

    everyai-com · Tools & apps

  4. 0570

    Refund chat: agent stated the amount before issuing it

    A support agent issues a $42.50 refund; the judge checks the exact amount was stated before the refund was confirmed.

    everyai-com · Tools & apps