ai/skills/bruno-endpoint-creation/SKILL.md
Create Bruno REST API endpoint configurations with proper authentication, environment setup, and documentation. Use when setting up API testing with Bruno, creating new endpoints, or configuring collection-level authentication. Triggers on "create Bruno endpoint", "Bruno API testing", "set up Bruno collection".
npx skillsauth add steveclarke/dotfiles bruno-endpoint-creationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Bruno-specific patterns for creating .bru endpoint files. Assumes familiarity with REST conventions.
Development (Local.bru):
vars {
baseUrl: http://localhost:3001
linkId:
apiKey: dev_api_key_change_in_production
}
Production/Staging — use vars:secret for sensitive data:
vars {
baseUrl: https://api.yourdomain.com
linkId:
}
vars:secret [
apiKey
]
Set auth once in collection.bru, then inherit in all endpoints:
auth {
mode: bearer
}
auth:bearer {
token: {{apiKey}}
}
Individual endpoints inherit with auth: inherit:
post {
url: {{baseUrl}}/api/v1/resources
body: json
auth: inherit
}
Override per-endpoint only when auth differs from the collection.
meta {
name: "Create Resource"
type: http
seq: 1
}
post {
url: {{baseUrl}}/api/v1/resources
body: json
auth: inherit
}
body:json {
{
"resource": {
"field1": "value1",
"field2": "value2"
}
}
}
params:path {
id: {{resourceId}}
}
params:query {
page: 1
limit: 20
sort: created_at
order: desc
}
Post-response — extract data for subsequent requests:
script:post-response {
if (res.status === 201 && res.body && res.body.id) {
bru.setVar("resourceId", res.body.id);
}
}
Pre-request — generate dynamic data:
script:pre-request {
const timestamp = Date.now();
bru.setVar("uniqueEmail", `test-${timestamp}@example.com`);
}
Key difference:
bru.setVar() — runtime variables (temporary, current collection run only)bru.setEnvVar() — environment variables (persists, visible in Environment tab)Use bru.setVar() for ephemeral values like extracted IDs from test runs.
docs {
Create a new resource in the system.
**Required Fields:**
- field1: Description
- field2: Description
**Optional Fields:**
- optional_field: Description
}
Bruno Collection/
├── Environments/
│ ├── Local.bru
│ ├── Staging.bru
│ └── Production.bru
├── Authentication/
│ ├── Login.bru
│ └── Refresh Token.bru
├── Resources/
│ ├── List Resources.bru
│ ├── Get Resource.bru
│ ├── Create Resource.bru
│ ├── Update Resource.bru
│ └── Delete Resource.bru
└── Health/
└── Health Check.bru
content-media
Download content from YouTube including transcripts, captions, subtitles, music, MP3s, and playlists. Use when the user provides a YouTube URL or asks to download, transcribe, or get content from YouTube videos or playlists.
development
Apply VueUse composables where appropriate to build concise, maintainable Vue.js / Nuxt features.
development
Review UI for visual consistency, layout structure, and design system compliance. Two modes — code review (check view files against patterns) and visual audit (screenshot all routes and analyze). Use when reviewing UI code, checking consistency, auditing views, or when user says "review the UI", "check consistency", "UI audit", "design review".
tools
Improves typography by fixing font choices, hierarchy, sizing, weight, and readability so text feels intentional. Use when the user mentions fonts, type, readability, text hierarchy, sizing looks off, or wants more polished, intentional typography.