There is no setup step. Open the repository in Cursor and the agent already has the guidance it
needs, because the kit ships the files Cursor looks for. This page is about what those files are and
the order they load in, so that when a suggestion looks wrong you know which file to fix.

## What Cursor reads on its own

Three things, all at the repository root or just below it:

- **`.cursor/rules/`**, the project rules. These are `.mdc` files that Cursor loads automatically,
  and they are the highest-signal place to put a rule you never want broken. The kit ships two of
  them; see [Rules for One Shot](/docs/cursor/rules-for-one-shot).
- **`AGENTS.md`**, which Cursor supports at the project root and in any subdirectory, combining the
  instructions hierarchically so a more specific file wins. The kit's copy is deliberately short: it
  states the essential rules and redirects to `CLAUDE.md` for the full map, rather than duplicating
  it. See [How CLAUDE.md Works](/docs/claude-code/how-claude-md-works) for what that map contains.
- **`.claude/skills/`**, which Cursor loads for backward compatibility alongside its own skill
  directories. This is the part most people do not expect, and it means all six of the kit's skills
  work in Cursor with nothing to convert. See
  [The Kit's Skills in Cursor](/docs/cursor/skills-in-cursor).

Rules are applied in the order Team Rules, then Project Rules, then User Rules, and all applicable
rules are merged. Where they conflict, the earlier source wins. So a personal rule in your own Cursor
settings will not override the project rules in this repository.

## Running the app from the editor

Everything in [Installation](/docs/getting-started/installation) works from Cursor's integrated
terminal, unchanged:

```bash
bin/setup   # gems, SQLite database, seeded demo workspace
bin/dev     # the app at http://localhost:3000
bin/check   # RSpec, RuboCop, Brakeman, audits, secret scan
```

`bin/check` is worth binding to something you can reach without thinking about it. The editor loop
encourages many small edits, and the specific risk of that loop is a dozen individually reasonable
changes that do not pass together.

## MCP servers

The kit ships a `.mcp.json` at its root, holding the optional Stripe MCP server, which runs through
`npx` and is the only reason the kit lists Node as a prerequisite at all. That file is Claude Code's
format, and Cursor does not read it.

Cursor reads its own: `.cursor/mcp.json` for servers scoped to this project, or `~/.cursor/mcp.json`
for servers you want available everywhere. To get the same server in Cursor, copy the `mcpServers`
block from `.mcp.json` into `.cursor/mcp.json`.

Nothing in the app depends on that server either way. Billing works against the local fake with no
Stripe account, and against real Stripe with a key. See
[Stripe Setup](/docs/billing-entitlements/stripe-setup).

## Next

Read the two rules files the kit ships, and what to put in your own:
[Rules for One Shot](/docs/cursor/rules-for-one-shot).
