Next.js: Perch rule pack
3 saved requirements for Next.js. Inspect the selectors and adapt the example paths to your repository.
- name: action-write-authorization
where: "app/orders/actions.ts"
ensure: >-
cancelOrder must obtain a verified actor and constrain updateMany by that actor tenantId and ownerId before mutating the order.
- name: private-order-cache
where: "app/api/orders/[id]/route.ts"
ensure: >-
The GET handler response for an authenticated order must set Cache-Control to private, no-store. It must never advertise public caching.
- name: same-origin-redirect
where: "app/continue/route.ts"
each: method
ensure: >-
safeReturnTo must return a URL on the supplied origin. An external URL supplied as returnTo must fall back to the root URL on that origin.
Download the rule pack ZIP · Download YAML · Agent repair task · Implementation, integration requirements and captured checks
Install the rule without replacing your configuration
npm install -g @lakeday/perch
perch login
curl -fL 'https://reporules.fyi/nextjs/rule-pack.zip' -o 'perch-guide-nextjs.zip'
unzip -n 'perch-guide-nextjs.zip'Keep your existing perch.yaml. Extraction preserves existing files and adds .perch/rules/perch-guide-nextjs.yaml. Review each where selector before running a check on your application.
Configure your coding agent
perch setup claude-code
perch setup codex
perch setup cursor
perch setup piChoose the setup command for the agent you use.
Check the edit, fix the finding, check again
perch check app/orders/actions.ts --rules action-write-authorization --json
perch check app/api/orders/[id]/route.ts --rules private-order-cache --json
perch check app/continue/route.ts::safeReturnTo --rules same-origin-redirect --jsonRun the check after an agent edit. Read the finding and affected code, repair the implementation, and repeat the identical command. Keep the application regression tests as separate gates.
Exit 3 means a finding. Exit 1 or 2 means the check did not complete. A pass does not prove application correctness. Fresh judgments can vary; unchanged requests reuse cached answers. Relevant source is sent to the configured model service.