Build, test, and automate APIs with Postman collections, environments, and Newman CLI.
Scanned 9/6/2026
Install to Claude Code
npx -y skills add clawic/skills --skill postman --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Postman?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/clawic-postman)More formats (shields.io, HTML) on the badges page.
---
name: Postman
slug: postman
version: 1.0.0
description: Build, test, and automate APIs with Postman collections, environments, and Newman CLI.
homepage: https://clawic.com/skills/postman
changelog: Initial release with collections, environments, and Newman automation.
metadata:
clawdbot:
emoji: 📮
requires:
bins:
- newman
os:
- linux
- darwin
- win32
install:
- id: npm
kind: npm
package: newman
bins:
- newman
label: Install Newman (npm)
displayName: Postman
---
## Setup
If `~/Clawic/data/postman/` doesn't exist, read `setup.md` silently and start naturally.
## When to Use
User needs to test APIs, create Postman collections, manage environments, or run automated API tests with Newman.
## Architecture
Data lives in `~/Clawic/data/postman/`. See `memory-template.md` for structure.
```
~/Clawic/data/postman/
├── memory.md # Projects, preferences, common patterns
├── collections/ # Postman collection JSON files
└── environments/ # Environment JSON files
```
## Quick Reference
| Topic | File |
|-------|------|
| Setup | `setup.md` |
| Memory template | `memory-template.md` |
| Collection format | `collections.md` |
| Newman automation | `newman.md` |
## Core Rules
### 1. Collection Structure First
Before creating requests, define the collection structure:
- Folder hierarchy reflects API organization
- Use descriptive names: `Users > Create User`, not `POST 1`
- Group related endpoints logically
### 2. Environment Variables Always
Never hardcode values that change between environments:
```json
{
"key": "base_url",
"value": "https://api.example.com",
"enabled": true
}
```
Use `{{base_url}}` in requests. Environments: `dev`, `staging`, `prod`.
### 3. Pre-request Scripts for Auth
Handle authentication in pre-request scripts, not manually:
```javascript
// Get token and set for collection
pm.sendRequest({
url: pm.environment.get("auth_url"),
method: 'POST',
body: { mode: 'raw', raw: JSON.stringify({...}) }
}, (err, res) => {
pm.environment.set("token", res.json().access_token);
});
```
### 4. Test Assertions Required
Every request needs at least basic assertions:
```javascript
pm.test("Status 200", () => pm.response.to.have.status(200));
pm.test("Has data", () => pm.expect(pm.response.json()).to.have.property("data"));
```
### 5. Newman for CI/CD
Run collections headlessly with Newman:
```bash
newman run collection.json -e environment.json --reporters cli,json
```
Exit code 0 = all tests passed. Integrate into CI pipelines.
## Collection Format
### Minimal Collection
```json
{
"info": {
"name": "My API",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"item": [
{
"name": "Get Users",
"request": {
"method": "GET",
"url": "{{base_url}}/users",
"header": [
{ "key": "Authorization", "value": "Bearer {{token}}" }
]
}
}
]
}
```
### With Tests
```json
{
"name": "Create User",
"request": {
"method": "POST",
"url": "{{base_url}}/users",
"body": {
"mode": "raw",
"raw": "{\"name\": \"{{$randomFullName}}\", \"email\": \"{{$randomEmail}}\"}",
"options": { "raw": { "language": "json" } }
}
},
"event": [
{
"listen": "test",
"script": {
"exec": [
"pm.test('Created', () => pm.response.to.have.status(201));",
"pm.test('Has ID', () => pm.expect(pm.response.json().id).to.exist);"
]
}
}
]
}
```
## Environment Format
```json
{
"name": "Development",
"values": [
{ "key": "base_url", "value": "http://localhost:3000", "enabled": true },
{ "key": "token", "value": "", "enabled": true }
]
}
```
## Newman Commands
| Task | Command |
|------|---------|
| Basic run | `newman run collection.json` |
| With environment | `newman run collection.json -e dev.json` |
| Specific folder | `newman run collection.json --folder "Users"` |
| Iterations | `newman run collection.json -n 10` |
| Data file | `newman run collection.json -d data.csv` |
| HTML report | `newman run collection.json -r htmlextra` |
| Bail on fail | `newman run collection.json --bail` |
## Common Traps
- **Hardcoded URLs** → Tests break between environments. Always use `{{base_url}}`.
- **No assertions** → Tests "pass" but don't validate anything. Add status + body checks.
- **Secrets in collection** → Credentials leak. Use environment variables, gitignore env files.
- **Sequential dependencies** → Tests fail randomly. Use `setNextRequest()` explicitly or make tests independent.
- **Missing Content-Type** → POST/PUT fails silently. Always set `Content-Type: application/json`.
## Dynamic Variables
Postman built-in variables for test data:
| Variable | Example Output |
|----------|----------------|
| `{{$randomFullName}}` | "Jane Doe" |
| `{{$randomEmail}}` | "jane@example.com" |
| `{{$randomUUID}}` | "550e8400-e29b-..." |
| `{{$timestamp}}` | 1234567890 |
| `{{$randomInt}}` | 42 |
## OpenAPI to Postman
Import OpenAPI/Swagger specs:
1. Export OpenAPI JSON/YAML
2. In Postman: Import > File > Select spec
3. Collection auto-generated with all endpoints
Or via CLI:
```bash
npx openapi-to-postmanv2 -s openapi.yaml -o collection.json
```
## Security & Privacy
**Data that stays local:**
- Collections and environments in `~/Clawic/data/postman/`
- Newman runs locally
**This skill does NOT:**
- Send collections to external services
- Store API credentials in memory.md
## Related Skills
More Clawic skills, get them at https://clawic.com/skills/<slug> (install if the user confirms):
- `api` — REST API consumption patterns
- `json` — JSON manipulation and validation
- `ci-cd` — Pipeline automation
## Feedback
- If useful, star it: https://clawic.com/skills/postman
- Latest version: https://clawic.com/skills/postman
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!