Skip to content

Domain packsLive

Checks that know your domain, backed by tests.

Generic review misses domain mistakes: VAT applied twice, a migration that locks a hot table, a query that forgets the tenant. Packs combine deterministic checks with a focused prompt, and each ships with seeded test cases.

Policies › packs
Example
moneysrc/billing/**On
migrationsdb/migrations/**On
tenancy-authsrc/api/**On
piiall reposOff
architecture.forseti/architecture.ymlOff
Blockingpack: moneysrc/billing/vat.ts:44

VAT applied twice on discounted lines

const gross = applyVat(applyVat(net - discount));

Discounted lines are taxed at 20% twice: 1,000p becomes 1,440p.

How it works

Step by step.

Money, migrations, tenancy, PII and architecture checks.

  1. 01EnableTurn packs on per organisation, repo or path in Policies.
  2. 02CheckDeterministic checks run first: cheap, exact and repeatable.
  3. 03FocusA focused prompt reads the matching code with the pack's rules in mind.
  4. 04TagFindings carry the pack name, so you can filter and measure them.

In detail

What it does, exactly.

  • Each pack is tested against seeded examples, so its behaviour is known before it reads your code.
  • Packs are scoped by path, so the money rules read the billing code, not the docs.
On GitHub
Findings tagged with their pack
In the dashboard
Policies: packs per org, repo and path

money

Integer pence, VAT once per band, rounding rules.

migrations

Lock safety, batching, CONCURRENTLY, and a way back.

tenancy-auth

Tenant scoping, IDOR, and auth applied where routes are mounted.

pii

Personal data in logs and responses, retention, GDPR deletion.

architecture

Your layering rules, from .forseti/architecture.yml.

Your own packs

A name plus plain-English rules, stored with your team's learnings.

Put Forseti on your next pull request.

Connect GitHub in four clicks. Your first review starts by itself on your latest small open PR, priced before it runs.