mcpField
B
bruno-endpoint-creation

bruno-endpoint-creation

github.com/steveclarkeTesting & quality36156 installsUpdated today
Repository

About bruno-endpoint-creation

A skill for creating Bruno `.bru` endpoint files, intended for developers working with REST collections. It documents patterns for environment variables, inherited authentication, request scripting, and endpoint documentation.

Key features

  1. 01Structure HTTP endpoint files
  2. 02Configure collection and secret variables
  3. 03Inherit or override authentication
  4. 04Use pre- and post-response scripts
  5. 05Add endpoint documentation

Use cases

  1. 01Create endpoints for local and staging APIs
  2. 02Reuse collection-level bearer authentication
  3. 03Pass extracted response IDs to later requests
  4. 04Generate dynamic request data

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/steveclarke/dotfiles --skill bruno-endpoint-creation

After installing, type/bruno-endpoint-creationin Claude Code to confirm it loaded.

Details

From the project README

Bruno Endpoint Creation

Bruno-specific patterns for creating .bru endpoint files. Assumes familiarity with REST conventions.

Environment Configuration

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
]

Collection-Level Authentication

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.

Request Structure

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
}

Scripting API

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.

Documentation Block

docs {
  Create a new resource in the system.

  **Required Fields:**
  - field1: Description
  - field2: Description

  **Optional Fields:**
  - optional_field: Description
}

Collection Folder Structure

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

Comments

Markdown supported