Install any skill in seconds. Free to start, no credit card required.
Get Started Free →API design best practices for Postman-managed APIs. Applied when working with OpenAPI specs, collections, and API code.
.claude/skills/kunanonj-cursor-plugin-postman-rule-postman-best-practices/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 148% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -7% | 0% |
| case-14 | ✗→✓ | ▲ Improved | -26% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 11% | 0% |
| case-20 | ✗→✓ | ▲ Improved | 50% | 0% |
Follow these conventions when creating, modifying, or reviewing APIs and OpenAPI specs.
/user-profiles, not /userProfiles or /user_profiles/users, /orders, /products/users/{id}/profilePOST /users (not /createUser)DELETE /orders/{id} (not /deleteOrder)firstName, createdAt, userId| Method | Purpose | Idempotent | Success Code | |--------|---------|------------|--------------| | GET | Read resource(s) | Yes | 200 | | POST | Create resource | No | 201 | | PUT | Replace resource | Yes | 200 | | PATCH | Partial update | No | 200 | | DELETE | Remove resource | Yes | 204 |
Every endpoint MUST have:
operationId: Unique, camelCase identifier (e.g., getUser, createOrder)summary: Short description under 120 characterstags: At least one tag for groupingresponses: At minimum, define the success response and common errors (400, 401, 404, 500)Every parameter MUST have:
type or schema with explicit typedescription: What the parameter doesrequired: Explicitly set to true or falseexample: A realistic example valueAll error responses should follow a consistent schema:
yamlcomponents: schemas: Error: type: object required: [error, code] properties: error: type: string description: Human-readable error message code: type: string description: Machine-readable error code details: type: array items: type: object properties: field: type: string message: type: string
Define these error responses on every endpoint:
400: Validation error (with field-level details)401: Authentication required403: Insufficient permissions404: Resource not found (on endpoints with path parameters)429: Rate limit exceeded (with Retry-After header)500: Internal server errorList endpoints returning multiple items MUST support pagination:
yamlparameters: - name: limit in: query schema: type: integer default: 20 maximum: 100 - name: offset in: query schema: type: integer default: 0
Response should include pagination metadata:
yamlproperties: data: type: array items: ... meta: type: object properties: total: type: integer limit: type: integer offset: type: integer
components.securitySchemes sectionsecret type in PostmanWhen creating Postman collections:
2026-01-15T10:30:00Zformat: date-time in schemas for datetime fieldsformat: date for date-only fieldsformat: email for email fieldsformat: uri for URL fieldsinfo.version: "1.0.0"/v1/users) or header versioningdeprecated: true| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 10,467 | 21,014 | +101% | 1 | 1 | 0% | 2,563 | 6,358 | +148% | 0 | 0 | — |
case-02 | fail→pass | 22,090 | 18,276 | -17% | 1 | 1 | 0% | 5,510 | 5,124 | -7% | 0 | 0 | — |
case-03 | fail→fail | 12,319 | 12,093 | -2% | 1 | 1 | 0% | 2,794 | 4,320 | +55% | 0 | 0 | — |
case-04 | pass→pass | 11,355 | 12,507 | +10% | 1 | 1 | 0% | 2,404 | 4,176 | +74% | 0 | 0 | — |
case-05 | pass→pass | 11,703 | 10,607 | -9% | 1 | 1 | 0% | 2,625 | 3,119 | +19% | 0 | 0 | — |
case-06 | pass→pass | 5,831 | 6,921 | +19% | 1 | 1 | 0% | 1,379 | 2,528 | +83% | 0 | 0 | — |
case-07 | pass→pass | 8,260 | 8,362 | +1% | 1 | 1 | 0% | 1,519 | 3,140 | +107% | 0 | 0 | — |
case-08 | pass→pass | 8,449 | 11,182 | +32% | 1 | 1 | 0% | 1,983 | 4,037 | +104% | 0 | 0 | — |
case-09 | pass→pass | 6,643 | 4,586 | -31% | 1 | 1 | 0% | 1,423 | 2,074 | +46% | 0 | 0 | — |
case-10 | pass→pass | 5,447 | 11,227 | +106% | 1 | 1 | 0% | 1,304 | 3,880 | +198% | 0 | 0 | — |
case-11 | pass→pass | 5,481 | 3,480 | -37% | 1 | 1 | 0% | 1,004 | 1,676 | +67% | 0 | 0 | — |
case-12 | pass→pass | 6,878 | 7,037 | +2% | 1 | 1 | 0% | 1,408 | 2,543 | +81% | 0 | 0 | — |
case-13 | pass→pass | 5,292 | 8,938 | +69% | 1 | 1 | 0% | 1,087 | 3,148 | +190% | 0 | 0 | — |
case-14 | fail→pass | 11,054 | 4,096 | -63% | 1 | 1 | 0% | 2,503 | 1,852 | -26% | 0 | 0 | — |
case-15 | pass→pass | 8,321 | 5,865 | -30% | 1 | 1 | 0% | 1,780 | 2,198 | +23% | 0 | 0 | — |
case-16 | pass→pass | 7,718 | 6,177 | -20% | 1 | 1 | 0% | 1,552 | 2,397 | +54% | 0 | 0 | — |
case-17 | fail→pass | 12,153 | 8,330 | -31% | 1 | 1 | 0% | 2,659 | 2,948 | +11% | 0 | 0 | — |
case-18 | pass→pass | 6,810 | 6,836 | +0% | 1 | 1 | 0% | 1,259 | 2,552 | +103% | 0 | 0 | — |
case-19 | pass→pass | 12,561 | 8,295 | -34% | 1 | 1 | 0% | 2,526 | 2,642 | +5% | 0 | 0 | — |
case-20 | fail→pass | 12,118 | 13,318 | +10% | 1 | 1 | 0% | 2,767 | 4,162 | +50% | 0 | 0 | — |
case-21 | pass→pass | 5,703 | 3,290 | -42% | 1 | 1 | 0% | 1,298 | 1,758 | +35% | 0 | 0 | — |
case-22 | fail→pass | 9,010 | 7,531 | -16% | 1 | 1 | 0% | 1,759 | 2,789 | +59% | 0 | 0 | — |
case-23 | pass→pass | 8,412 | 9,704 | +15% | 1 | 1 | 0% | 1,678 | 3,306 | +97% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +26 percentage points is the difference between those two pass rates over the 23 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.