Repo RulesRequirements that stay in the repo

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 pi

Choose 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 --json

Run 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.

Pack manifest and SHA-256 hash · Pack README