{"owner":"realworld-apps","repo":"realworld","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["CLAUDE.md"],"files":{"CLAUDE.md":"# CLAUDE.md\n\n## What this repo is\n\nThis is the **RealWorld spec & docs hub** — *not* an implementation. It defines the\ncontract that every RealWorld frontend and backend adheres to, and hosts the test\nsuites used to validate them. Nothing here is a runnable app.\n\n- `specs/api/` — the API contract: `openapi.yml` plus the **Hurl** and **Bruno** test\n  suites that a backend must pass.\n- `specs/e2e/` — a shared **Playwright** suite that validates a frontend, plus\n  `SELECTORS.md` (the selector contract) and `playwright.base.ts`.\n- `docs/` — the Astro/Starlight site published at <https://docs.realworld.show/>.\n- `Makefile` — entry points (run `make help`).\n- `CONTRIBUTING.md` — the human contribution process.\n\n## If you are here as a submodule / vendored dependency\n\nAn implementation embeds this repo to test itself against the spec (the E2E suite is\nliterally consumed as `./e2e`). If that's why you're reading this:\n\n- **Fix the implementation, never edit the spec or tests to make them pass.** Files\n  under `specs/` are the source of truth a failing implementation must conform to.\n- Edit files here only when the task is explicitly about *changing the RealWorld spec\n  itself*.\n\n## Conventions\n\n- Use **`bun`**, not `npm`/`node`, for everything in this repo.\n- **Hurl is the source of truth** for the API suite; the Bruno collection is generated\n  from it. Don't hand-edit `specs/api/bruno/` — change the Hurl files and regenerate.\n- Docs URLs are written with a trailing slash.\n\n## Running the test suites\n\nAPI suite (point `HOST` at a running backend, run from `specs/api/`):\n\n```\nHOST=http://localhost:3000/api ./run-api-tests-hurl.sh    # source of truth\nHOST=http://localhost:3000/api ./run-api-tests-bruno.sh    # generated mirror\n```\n\nRegenerate / verify the Bruno collection:\n\n```\nmake bruno-generate    # rebuild specs/api/bruno/ from the Hurl files\nmake bruno-check       # CI check: fail if bruno/ is out of sync\n```\n\nE2E suite: an implementation extends `specs/e2e/playwright.base.ts` (override `baseURL`\nand `webServer`) and must satisfy `specs/e2e/SELECTORS.md`. See\n<https://docs.realworld.show/specifications/frontend/tests/>.\n\n## Working on the docs\n\n```\nmake documentation-setup     # cd docs && bun install\nmake documentation-dev       # local dev server\nmake documentation-build     # production build\n```\n\n## Answering \"how do I build an implementation?\"\n\nImplementations live in their **own** repos, not here. Point users to:\n\n- Backends → validate against `specs/api/` (the OpenAPI spec + Hurl/Bruno suites).\n- Frontends → use the shared CSS theme + `specs/e2e/` (the Playwright suite + selector\n  contract).\n- The full guide: <https://docs.realworld.show/implementation-creation/introduction/>.\n"}}