← ClaudeAtlas

brunolisted

Bruno, the Git-friendly API client, and its CLI (bru). Use when authoring or editing .bru requests/collections, generating a collection from an OpenAPI spec or a codebase's routes, writing Bruno tests or scripts, managing environments and secrets, or running collections with `bru run` (local or CI).
punkaze/skills · ★ 1 · Testing & QA · score 75
Install: claude install-skill punkaze/skills
# Bruno — Author, Generate, and Run .bru Collections Requires the Bruno CLI: `npm install -g @usebruno/cli`. Everything below is verified against **bru 3.5.0** (`bru --version`). ## Generating a collection — two paths **Path A — an OpenAPI/Swagger spec exists (preferred).** Look for one first: `openapi.yaml`, `swagger.json`, a framework's swagger endpoint (Elysia, NestJS `@nestjs/swagger`, etc.). Then: ```bash bru import openapi -s <spec.yaml|url> -o <out-dir> -n "My API" --collection-format bru -g path ``` `--collection-format bru` is required — the CLI default (`opencollection`) emits `.yml` files, not a `.bru` collection. `-g` picks folder grouping: `path` (by URL structure, usually what you want) or `tags` (by OpenAPI tags, the CLI default). **Done when** `<out-dir>` contains `bruno.json` and `.bru` files; an `opencollection.yml` there means the format flag was dropped. **Path B — no spec.** Read the codebase and write a **routes manifest** (shape below), then run the bundled generator: ```bash node "${CLAUDE_PLUGIN_ROOT}/skills/bruno/scripts/generate-bruno.mjs" --manifest routes.json --out ./api-collection ``` Flags: `--force` (overwrite existing files), `--dry-run` (preview, write nothing). Extract routes by reading the code — do **not** write a per-framework regex route scanner. **Done when** the generator reports `wrote N file(s)` and, with the API running, `bru run . -r --env <env>` from the output dir executes every request. ### Routes manifest Schema: `${