require direnv for project tools

This commit is contained in:
Yisroel Baum 2026-07-31 09:50:27 +03:00
parent ce1b920fb6
commit 116d1582f3
Signed by: yisroelbaum
GPG key ID: 0FA60884F75520A9
3 changed files with 74 additions and 32 deletions

View file

@ -45,28 +45,43 @@ those changes with the most relevant parser, formatter, dry run, or check.
is the user's stack. Do not start, restart, or stop it unless the user asks.
- A worktree owns its own isolated stack. The flake shell hook assigns a
deterministic port offset and creates worktree-local PostgreSQL state.
- Start a worktree stack from its root with `process-compose up`. For
non-interactive use, run `process-compose up -D` and stop it with
`process-compose down`.
- Start a worktree stack from its root. For non-interactive use, start it
detached and stop it when finished, as shown below.
- Do not use `process-compose -t=false` for a detached stack. It can leave an
orphaned PostgreSQL process holding the data directory.
- Non-interactive agent shells do not automatically load direnv. A bare
`process-compose`, `php artisan`, or database command from a worktree can
silently use default ports and target the main checkout.
- Prefix worktree stack and database commands with `direnv exec <worktree>`.
Examples:
- Non-interactive agent shells do not automatically load direnv. Bare project
commands can use missing tools, default ports, or paths from the main
checkout.
- Run project tooling that depends on the repository development environment
through direnv. This includes PHP, Composer, Artisan, npm, tests, builds,
database clients, and services.
- Resolve the direnv target from the worktree containing the agent's current
working directory. Never target the main checkout or a different worktree:
```sh
direnv exec <worktree> process-compose up -D
direnv exec <worktree> process-compose down
direnv exec <worktree> php artisan migrate:fresh --seed
direnv exec "$(git rev-parse --show-toplevel)" <command>
```
- Git and environment-neutral read-only file inspection do not need the
direnv wrapper.
- Worktree stack examples:
```sh
direnv exec "$(git rev-parse --show-toplevel)" process-compose up -D
direnv exec "$(git rev-parse --show-toplevel)" process-compose down
```
- Run backend commands from `backend/`, or explicitly change into it in the
command.
command. The direnv target remains the worktree root.
- Run frontend commands from `frontend/website/`.
- `process-compose` does not start the frontend. Start it separately with
`npm run dev -- --port "$VITE_PORT"` when needed.
the worktree's assigned port when needed:
```sh
direnv exec "$(git rev-parse --show-toplevel)" \
npm run dev -- --port "$VITE_PORT"
```
- When a normally valid check fails because a required service is down,
surface the environmental failure. Do not skip the check or silently switch
to a different database or service.
@ -143,8 +158,11 @@ those changes with the most relevant parser, formatter, dry run, or check.
another checkout. Dependency paths and generated files must remain
worktree-local.
- The shell hook installs backend dependencies but does not install frontend
dependencies. Run `npm install` from `frontend/website/` when provisioning a
fresh worktree.
dependencies. From `frontend/website/`, provision them with:
```sh
direnv exec "$(git rev-parse --show-toplevel)" npm install
```
Do not push anything. Make commits as the TDD workflow requires.
@ -155,12 +173,17 @@ gate affected by the change.
### Backend
- Run tests from `backend/` with `php artisan test`.
- Run tests from `backend/`:
```sh
direnv exec "$(git rev-parse --show-toplevel)" php artisan test
```
- Run the Composer checks defined by `backend/composer.json`:
```sh
composer types:check
composer test
direnv exec "$(git rev-parse --show-toplevel)" composer types:check
direnv exec "$(git rev-parse --show-toplevel)" composer test
```
- Do not claim a green gate when a command fails. If the failure predates the
@ -171,10 +194,10 @@ gate affected by the change.
- Run these commands from `frontend/website/`:
```sh
npm run format
npm run lint
npm run type-check
npm run build
direnv exec "$(git rev-parse --show-toplevel)" npm run format
direnv exec "$(git rev-parse --show-toplevel)" npm run lint
direnv exec "$(git rev-parse --show-toplevel)" npm run type-check
direnv exec "$(git rev-parse --show-toplevel)" npm run build
```
- The formatter and linters rewrite files. Review their changes before
@ -184,8 +207,20 @@ gate affected by the change.
### Environment and integration
- For Nix or shell-hook changes, run `nix fmt` and `nix flake check`.
- For service configuration changes, run `process-compose --dry-run`.
- For Nix or shell-hook changes, run:
```sh
direnv exec "$(git rev-parse --show-toplevel)" nix fmt
direnv exec "$(git rev-parse --show-toplevel)" nix flake check
```
- For service configuration changes, run:
```sh
direnv exec "$(git rev-parse --show-toplevel)" \
process-compose --dry-run
```
- When a change affects runtime wiring, start the worktree's stack and verify
the relevant endpoint or service against that worktree.
- If you started the stack only for validation, stop it before finishing.