Skip to content

Laravel + Stripe + Tailwind rules for AI coding agents

Full stack: PHP + Laravel + Tailwind CSS v4 + Stripe payments

Ready-to-commit rules for PHP + Laravel + Tailwind CSS v4 + Stripe payments in every major format: AGENTS.md (Codex, Cursor, Copilot), CLAUDE.md (Claude Code), Cursor .mdc project rules, legacy .cursorrules, Copilot instructions, Windsurf rules and GEMINI.md. Laravel with Tailwind and Stripe billing.

Last reviewed 2026-10-21 · Customise in the generator · Raw: AGENTS.md, CLAUDE.md

The mistake agents make most on this stack

Agents call `env()` outside config files, which breaks under config caching.

Generated files

AGENTS.md
# AGENTS.md - this project

Instructions for AI coding agents working in this repository.

## Project

A PHP + Laravel + Tailwind CSS v4 + Stripe payments project.

Stack: PHP + Laravel, Tailwind CSS v4, Stripe payments.

## Commands

- Dev server: `composer run dev`
- Migrate: `php artisan migrate`
- Tests: `php artisan test`
- Format: `vendor/bin/pint`
- Forward webhooks locally: `stripe listen --forward-to localhost:3000/api/webhooks/stripe`

## How to work in this repo

- Read the relevant files before editing. Follow the patterns already in the codebase over these generic rules.
- Make the smallest change that solves the task. Do not refactor or reformat unrelated code.
- Before saying a task is done, run the type-check, lint and tests listed under Commands and fix what you broke.
- If requirements are ambiguous, ask one clear question instead of guessing.
- Never commit secrets, API keys or `.env` files. Use env vars and keep `.env.example` up to date.
- Do not add a new dependency when the standard library or an existing dependency already covers it.
- Ask before adding, removing or upgrading any dependency.
- Ask before changing database schemas, auth, payments or CI configuration.
- Never delete files, drop data or run destructive commands (`rm -rf`, `git push --force`, `DROP TABLE`) without explicit approval.
- Keep each change under ~200 changed lines where possible; split larger work into steps.

## PHP + Laravel

- Use `php artisan make:*` generators so files land in the conventional place.
- Validate input with Form Request classes, not inline in controllers.
- Use Eloquent relationships and eager load with `with()` to avoid N+1 queries.
- Protect mass assignment with `$fillable` on every model.
- Authorize with Policies and Gates.
- Read config through `config()`; only `config/*.php` files call `env()`.
- Queue slow work (emails, webhooks) with jobs.

## Tailwind CSS v4

- Tailwind v4 is configured in CSS: `@import "tailwindcss";` plus `@theme { ... }` for design tokens. Do not create a `tailwind.config.js` unless the project already has one.
- Use theme tokens (colors, spacing) instead of arbitrary values like `w-[37px]`.
- Build responsive layouts mobile-first with `sm:`, `md:`, `lg:` prefixes.
- Extract repeated class lists into components, not `@apply` chains.
- Support dark mode with the `dark:` variant when the project uses it.

## Stripe payments

- Never trust prices or amounts from the client. Look up Price IDs and amounts on the server.
- Prefer Stripe Checkout or Payment Elements over custom card forms.
- Verify every webhook signature with the raw request body and the endpoint secret.
- Fulfil orders and update subscription status from webhooks, not from the success redirect.
- Make webhook handlers idempotent (store processed event IDs) and use idempotency keys on create calls.
- Use test-mode keys in development. The secret key is server-only.

## Reference docs

- [Laravel docs](https://laravel.com/docs)
- [Tailwind CSS docs](https://tailwindcss.com/docs)
- [Stripe docs](https://docs.stripe.com)

Commands your agent should run

TaskCommand
Dev servercomposer run dev
Migratephp artisan migrate
Testsphp artisan test
Formatvendor/bin/pint
Forward webhooks locallystripe listen --forward-to localhost:3000/api/webhooks/stripe

What the rules cover

PHP + Laravel

Laravel app with Eloquent. Scoped to app/**/*.php, routes/**/*.php, database/**/*.php, resources/views/**/*.blade.php in Cursor, Copilot and Windsurf.

  • Use php artisan make:* generators so files land in the conventional place.
  • Validate input with Form Request classes, not inline in controllers.
  • Use Eloquent relationships and eager load with with() to avoid N+1 queries.
  • Protect mass assignment with $fillable on every model.
  • Authorize with Policies and Gates.
  • Read config through config(); only config/*.php files call env().
  • Queue slow work (emails, webhooks) with jobs.

Source docs: Laravel docs

Tailwind CSS v4

Utility-first styling with Tailwind CSS v4. Scoped to **/*.css, **/*.tsx, **/*.vue, **/*.svelte, **/*.astro, **/*.html, **/*.blade.php, **/*.erb in Cursor, Copilot and Windsurf.

  • Tailwind v4 is configured in CSS: @import "tailwindcss"; plus @theme { ... } for design tokens. Do not create a tailwind.config.js unless the project already has one.
  • Use theme tokens (colors, spacing) instead of arbitrary values like w-[37px].
  • Build responsive layouts mobile-first with sm:, md:, lg: prefixes.
  • Extract repeated class lists into components, not @apply chains.
  • Support dark mode with the dark: variant when the project uses it.

Source docs: Tailwind CSS docs

Stripe payments

Payments and subscriptions with Stripe. Scoped to **/stripe/**, **/webhooks/**, **/billing/** in Cursor, Copilot and Windsurf.

  • Never trust prices or amounts from the client. Look up Price IDs and amounts on the server.
  • Prefer Stripe Checkout or Payment Elements over custom card forms.
  • Verify every webhook signature with the raw request body and the endpoint secret.
  • Fulfil orders and update subscription status from webhooks, not from the success redirect.
  • Make webhook handlers idempotent (store processed event IDs) and use idempotency keys on create calls.
  • Use test-mode keys in development. The secret key is server-only.

Source docs: Stripe docs

How to install

  1. Copy AGENTS.md to your repo root. That covers Codex, Cursor, GitHub Copilot and most other agents.
  2. Using Claude Code? Add a CLAUDE.md with the single line @AGENTS.md, or use the standalone CLAUDE.md tab above.
  3. Want rules that only load for certain files in Cursor? Add the .cursor/rules/*.mdc files.
  4. Commit the files so your whole team (and every agent) shares them.

FAQ

Where do I put the AGENTS.md for PHP + Laravel + Tailwind CSS v4 + Stripe payments?

Save it as AGENTS.md in the root of your repository, next to your main config file. Codex, Cursor and GitHub Copilot pick it up automatically. For Claude Code, add a CLAUDE.md containing @AGENTS.md (or use the standalone CLAUDE.md on this page).

What is the most common mistake AI agents make with PHP + Laravel?

Agents call env() outside config files, which breaks under config caching.

Which commands should the agent run to check its work?

For this stack: composer run dev, php artisan migrate, php artisan test, vendor/bin/pint. They are listed in the generated files so the agent runs them before finishing a task.

Do these PHP + Laravel + Tailwind CSS v4 + Stripe payments rules work with Cursor and Claude Code?

Yes. This page includes the same rules as AGENTS.md, CLAUDE.md, Cursor .mdc project rules, a legacy .cursorrules file, GitHub Copilot instructions, Windsurf rules and GEMINI.md.

Can I customise these rules?

Yes. Open this stack in the generator to add or remove libraries, set your project name and package manager, switch beginner explanations on, and download everything as a zip.

Related stacks