---
title: 'Contributing'
description: 'How to contribute to the cartwright docs site, the CLI, and the engine template.'
canonical: 'https://cartwright.app/docs/contributing'
---

# Contributing (/docs/contributing)



Cartwright is split across two repositories. Understanding which one you are contributing to is the first step.

* **`Teloz1870/cartwright-app`** (this site) — the docs site and the `create-cartwright` CLI. Open for PRs from anyone.
* **[`Teloz1870/cartwright-template`](https://github.com/Teloz1870/cartwright-template)** (the engine template) — the actual Next.js + Prisma + Stripe + MCP engine template, public and MIT-licensed. It is published as sanitized snapshots from the development engine on every release tag, so engine changes are best proposed as issues (or PRs the maintainers pull upstream).

Most contributions land in `cartwright-app`.

## Quick start [#quick-start]

<Steps>
  1. **Fork `cartwright-app`** on GitHub.

  2. **Clone and install.**

  ```bash
  gh repo clone <your-username>/cartwright-app
  cd cartwright-app
  pnpm install
  ```

  3. **Pick where you are contributing.**

     * Docs improvement → edit `apps/web/content/docs/<slug>.mdx`.
     * CLI feature or bugfix → `apps/cli/src/`.
     * Site UI or component → `apps/web/components/`.
     * Shared types or schema → `packages/shared/`.

  4. **Verify locally.**

  ```bash
  cd apps/web && pnpm typecheck && pnpm build
  # or for CLI work:
  cd apps/cli && pnpm build
  ```

  Both must pass clean.

  5. **Open a PR** with a Conventional Commits subject (`feat:`, `fix:`, `docs:`, `chore:`, `refactor:`). The PR description should explain *why* — the diff already shows *what*.
</Steps>

## Style conventions [#style-conventions]

* **Docs tone** matches existing pages: dev-tool aesthetic, no marketing-speak, honest about what is shipped vs planned, English. 200-600 words per page.
* **MDX components** are globally available — do not import them. Use `<Callout>`, `<Tabs>` + `<Tab>`, `<Steps>`, `<Card>`/`<Cards>`, `<Mermaid>`.
* **Code-fence languages** — Shiki ships a known list. Use `bash`, `ts`, `tsx`, `json`, `prisma`, `sql`. &#x2A;*Avoid `env`** (use `bash`).
* **No emojis** in docs body or commit messages.

## Releases (Changesets) [#releases-changesets]

`cartwright-app` publishes `create-cartwright` to npm via `@changesets/cli`. CLI-affecting PRs need a `.changeset/<random>.md` describing the change — run `pnpm changeset` at the repo root and commit the generated file.

## Reporting issues [#reporting-issues]

* **Bugs in the engine template** (a scaffolded shop) → [Issues on `cartwright-template`](https://github.com/Teloz1870/cartwright-template/issues).
* **Bugs in the docs site** → [Issues on `cartwright-app`](https://github.com/Teloz1870/cartwright-app/issues).
* **Bugs in `create-cartwright` CLI** → [Issues on `cartwright-app`](https://github.com/Teloz1870/cartwright-app/issues) (same repo).
* **Security issues** → Do not open a public issue. Email [security@cartwright.app](mailto:security@cartwright.app) per [SECURITY.md](https://github.com/Teloz1870/cartwright-app/blob/main/SECURITY.md).

## Code of conduct [#code-of-conduct]

This project follows the [Contributor Covenant v2.1](https://github.com/Teloz1870/cartwright-app/blob/main/CODE_OF_CONDUCT.md). Be kind, assume good intent, and never make a contributor feel unwelcome.

<Cards>
  <Card title="Roadmap" href="/docs/roadmap" />

  <Card title="FAQ" href="/docs/faq" />
</Cards>
