Run a coding agent twenty times on the same task and you get several different outcomes. Reliability lives in the shape of that distribution, and specs, hooks and retries reshape it. A way to read the shape, a lens on what interventions do to it, and 400 runs of Claude Code on a small Laravel app.
A line in CLAUDE.md is advice that Claude follows most of the time. A hook is a script that runs every time. Five hooks for a Laravel app (Pint, migrations, destructive Artisan commands, Pest, session context), written partly as Artisan commands, and for each one the other places the same rule could live.
Why one run of an agent eval proves little, what pass@k and pass^k measure, how to give the agent a world it cannot damage, and how evals fit next to production monitoring and continuous integration.
A wall shelf with a hidden LED backlight and a wooden touch tile that switches it on. The original is solid oak and costs about €300; I rebuilt it from a single pine panel and two AliExpress parts for less than €50. Measurements, cutting layout, how the light is hidden, and the one problem I have not solved yet.
TDD, regression, characterization, acceptance and smoke tests can look identical in a Pest file. What separates them is the reason they were written, and that reason decides how you read them, name them, and whether you can delete them. A field guide with one running example in Pest 5.
Where the cases of an agent eval come from, when a check should be code, a model or a person, and why the outcome of a run matters more than the path the agent took to reach it.
Laravel Necromancer scans a running Laravel application into a manifest of its routes, models, jobs, policies and tests, each with the file and line it came from, and turns it into context for coding agents, a readability score and impact analysis that needs no LLM.
Why an AI agent needs evals before its next prompt or model change, what makes an agent harder to evaluate than a single LLM call, and the task, run and grade loop every eval is built on.
Putting a separate judge in front of an LLM-based CV screener: Laravel Judgment asks Jev whether a CV contains instructions aimed at the machine, and the application decides what to do with the answer.
How to let a model assess free-text refund requests with Laravel Judgment while the application keeps the decision, first on the hosted Jev and then on a self-hosted Laya server.