# NEO-36 — Manual QA checklist | Field | Value | |-------|-------| | Key | NEO-36 | | Title | E2.M1: Read-only skill catalog HTTP projection + Bruno | | Linear | https://linear.app/neon-sprawl/issue/NEO-36/e2m1-read-only-skill-catalog-http-projection-bruno | | Plan | `docs/plans/NEO-36-implementation-plan.md` | | Branch | `NEO-36-e2m1-read-only-skill-catalog-http-projection` | ## Preconditions - Server built and configured with default `Content:SkillsDirectory` pointing at repo `content/skills` (local dev / `InMemoryWebApplicationFactory` tests use the same layout). ## Checklist 1. Start **`NeonSprawl.Server`** (e.g. `dotnet run` from `server/NeonSprawl.Server`). 2. **`GET /game/world/skill-definitions`** — expect **200** and **`Content-Type`** containing **`application/json`**. Example (default dev URL from `Properties/launchSettings.json` and Bruno `environments/Local.bru`; change the host/port if yours differs): ```bash curl -sS -i "http://localhost:5253/game/world/skill-definitions" ``` 3. Parse JSON — expect **`schemaVersion`** === **1**, **`skills`** array length **3**. 4. Confirm **`id`** values include **`intrusion`**, **`refine`**, **`salvage`** (frozen prototype trio). 5. Spot-check **`salvage`**: **`displayName`** “Salvage”, **`category`** **`gather`**, **`allowedXpSourceKinds`** includes **`activity`** and **`mission_reward`**. 6. Optional: run **`bruno/neon-sprawl-server/skill-definitions/Get skill definitions.bru`** against the same **`baseUrl`** (see `environments/Local.bru`).