launch-quickly

lq check

The only validation verb, and what each of its six checks is for.

lq check

One command. It is what the editor hook runs after each change, what CLAUDE.md tells an agent to run before claiming it is done, and what CI runs — the same code path in all three, so a green local run means a green CI run.

There is deliberately no second verb. Five commands means an agent remembers zero.

The six checks

CheckWhat it catches
Typestsc --noEmit. Typed routes, the action builder's state machine, the branded tenant context.
ConventionsESLint: the layering graph, the import ban list, and seven custom rules.
FormattingPrettier. Separate because eslint-config-prettier turns those rules off — lint alone is blind to it.
MigrationsWhether the schema and the migration history have diverged.
StructureCross-file invariants: a table with no policy, a feature with no barrel or no test, an undocumented env var, a route entry that is a client component.
ManifestThat .lq/manifest.json is intact and records a template version.

The Structure check is the one worth understanding, because it is the only one that can see a bug spanning two files. Every finding names the rule and the command that would have produced the right shape — agents act on that far more reliably than on a description of what is wrong.

In the edit loop

lq check --changed

Scopes to what differs from HEAD. This is what the PostToolUse hook runs, and it is the thesis made literal: sub-second feedback while the agent is still editing, rather than a review comment tomorrow.

It reports which checks it skipped. A skipped check has not passed — run the full lq check before you believe anything.

When it fails

Read the message rather than working around it. Every rule exists because its violation is otherwise silent — that is the bar for adding one.

In particular, do not:

  • add an eslint-disable without a -- reason (the reason is enforced)
  • reach for any or a non-null ! to clear a type error
  • widen a rule so your code fits

If the fix is not obvious, the fixing-lq-check skill maps each rule code to a recipe, and /fix-check walks an agent through it.

lq check passing does not mean your feature works. It means the shape is right. Run your tests too — CLAUDE.md asks for both, and that is not redundancy.

On this page