Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
git clone --depth 1 https://github.com/liberusoftware/real-estate-laravelWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/rules/liberusoftware/real-estate-laravel/lerd)<a href="https://agentmods.dev/rules/liberusoftware/real-estate-laravel/lerd"><img src="https://agentmods.dev/badge/rules/liberusoftware/real-estate-laravel/lerd/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/rules/liberusoftware/real-estate-laravel/lerd"><img src="https://agentmods.dev/badge/rules/liberusoftware/real-estate-laravel/lerd.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.08014 | $0.08014 |
| Opus 5 | $0.04007 | $0.04007 |
| Sonnet 5 | $0.01603 | $0.01603 |
| Haiku 4.5 | $0.00801 | $0.00801 |
Grade A, and why
lerd scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 164 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Lerd, a local PHP development environment
This project runs on lerd, a Podman-based PHP development environment. It is framework-agnostic: Laravel, Symfony, WordPress, Drupal, Magento, CakePHP and any custom framework are all driven by a framework definition (YAML), never by lerd hardcoding a framework's name. The lerd MCP server is available — use it to manage the environment without leaving the chat.
The MCP surface is twelve grouped tools, each driven by an action argument: site, service, db, env, runtime, worker, exec, framework, diag, logs, worktree, workspace. Always pass action. Most actions also accept an optional path that defaults to the directory the assistant was opened in (then LERD_SITE_PATH if set), so you can usually omit it. Start by calling site with action: "list" to discover sites.
Architecture
- PHP runs in Podman containers named
lerd-php<version>-fpm(e.g.lerd-php84-fpm); each container includes composer and node/npm; the PHP version is resolved from.lerd.yaml→.php-version→composer.jsonrequire.phpconstraint (matched against installed versions) → global default - Nginx routes
*.testdomains to the correct PHP-FPM container - Services (MySQL, Redis, PostgreSQL, etc.) and custom services run as Podman containers via systemd quadlets
- Node.js versions run through a version manager, fnm (bundled, fetched on demand) or user nvm (declining managed Node picks nvm;
node.manager+node.nvm_dir;node:manager/dashboard; nvm keeps PATH, fnm uses shims); per-project version via a.node-versionfile. The package manager is the project's, not lerd's: apackageManagerpin inpackage.jsonwins, then the lockfile (pnpm-lock.yaml→ pnpm,yarn.lock→ yarn,bun.lock*→ bun, else npm). pnpm and yarn run through corepack, and installs use the manager's frozen-lockfile mode (pnpm install --frozen-lockfile,yarn install --immutable,npm ci). Never assumenpm run dev/npm ci— the worker command and the setup steps follow the detected manager - Framework workers (queue, schedule, reverb, horizon, messenger, vite, etc.) run as systemd user services named
lerd-<worker>-<sitename>; commands are defined per-framework in YAML; Laravel Horizon is auto-detected fromcomposer.jsonand replaces the queue toggle when installed; Laravel ships with avitehost worker that runs the project's dev script on the host for HMR, through whichever package manager the project pins; workers and setup commands support optionalcheck(fileorcomposer) for conditional visibility; workers withconflicts_withauto-stop conflicting workers on start. Per-worker flags:host: true(run on host via the version manager instead of in FPM container — HMR-sensitive Node tools),per_worktree: true(worker runs independently per worktree underlerd-<worker>-<site>-<branch>),replaces_build: true(worker provides asset manifest while running, so a worktree add skips the staticnpm run buildstep when this worker is opted in) - Custom workers can be added per-project (
.lerd.yamlcustom_workers) or globally (~/.config/lerd/frameworks/<name>.yaml); use theworkertool'sadd/removeactions — both survive framework store updates - Framework setup commands (one-off bootstrap steps like migrations, storage links) are defined in the framework YAML and shown by
frameworkaction: "setup"; Laravel has built-in storage:link/migrate/db:seed; custom frameworks can define their own - Service version placeholders (
{{mysql_version}},{{postgres_version}},{{redis_version}},{{meilisearch_version}}) are available in framework env vars and resolved from the service image tag at env-setup time - Custom containers: non-PHP sites (Node.js, Python, Go, etc.) can define a
Containerfile.lerdand acontainer:section in.lerd.yamlwith a port; lerd builds a per-project image, runs it aslerd-custom-<sitename>, and nginx reverse-proxies to it; the project directory is volume-mounted at its host path with--workdirset automatically — do NOT addWORKDIRorCOPYto the Containerfile; workers exec into the custom container; services are accessible by name on the sharedlerdPodman network; hot-reload file watchers must use polling on macOS (inotify does not fire across Podman Machine's virtiofs mount) — nodemon:--legacy-watch, Vite:server.watch.usePolling: true, webpack:watchOptions: { poll: 1000 } - Custom-image PHP sites (custom-FPM): a PHP project can define a
Containerfile.lerd(must buildFROM lerd-php<ver>-fpm:local) plus acontainer:section with no port; lerd builds a per-site image (lerd-custom-<site>:local), runs a dedicated FPM containerlerd-cfpm-<site>, and serves it by fastcgi instead of the sharedlerd-php<ver>-fpm. It is a normal PHP site otherwise (xdebug, dumps, profiler,lerd shell,php/artisan/composer/tinker, queue/horizon all run in the per-site container). The PHP version is fixed by theFROMline (the UI version selector is read-only);lerd rebuildrebuilds the image. Same key as custom containers, the port is the discriminator: with a port it is a reverse-proxied non-PHP app, without a port it is a fastcgi PHP image.runtimefor these reportsfpm-custom. - Git worktrees automatically get a
<branch>.<site>.testsubdomain (deep*.<branch>.<site>.testwildcard cert + nginxserver_nameon secured sites);vendor/,node_modules/,.envare seeded from the main checkout..lerd.yamlenv_overridesdeclares templated env vars ({{domain}},{{scheme}},{{site}}) layered on the defaultAPP_URLrewrite — for multi-tenant apps (per-branch cookies, signed-URL hosts, tenant routing)
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 10d ago First seen · 164 lines · 8,014 tokens per session scan A c35163d1ccd2
lerd is a cursor rule published in the GitHub repository liberusoftware/real-estate-laravel (113 stars, last pushed 2d ago), licensed MIT. It adds 8,014 tokens to every session, about $0.0401 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other cursor rules, from other repositories
db-preview-env
A contract for giving each pull request its own disposable database environment when schema changes are being tested. A pull request is a proposed code change under review.
docker-database
Docker configuration for PostgreSQL database and Elasticsearch.
compose-required-for-data-services-changes
Require compose-backed workflows for DB/Redis/RabbitMQ-affecting changes.
postgres-docker-shared-memory
PostgreSQL in Docker — /dev/shm "No space left on device" and shmsize tuning.
infra
Docker, database, and scripts.
api-arena-no-volume-recreation
CRÍTICO — entorno de PRODUCCIÓN. Nunca recrear/borrar volúmenes Docker. Los cambios de BD se aplican SIEMPRE con migraciones idempotentes en caliente.