Transform API documentation into executable, testable .http files with httpYac. This skill provides workflow guidance for creating production-ready API collections with scripting, authentication, environment management, and CI/CD integration.
Objective: Understand API structure and propose file organization.
Key Questions:
Propose Structure to User:
Identified API modules:
- Authentication (2 endpoints)
- Users (5 endpoints)
- Articles (3 endpoints)
Recommended: Multi-file structure
- auth.http
- users.http
- articles.http
Proceed with this structure?
📖 Detailed Guide: references/WORKFLOW_GUIDE.md
🚨 MANDATORY: Always start with templates from assets/ directory.
Template Usage Sequence:
assets/http-file.template
references/SYNTAX.md
Available Templates:
assets/http-file.template → Complete .http file structureassets/httpyac-config.template → Configuration fileassets/env.template → Environment variablesKey Files to Create:
.http files → API requests.env → Environment variables (gitignored).env.example → Template with placeholders (committed).httpyac.json → Configuration (optional)📖 File Structure Guide: references/WORKFLOW_GUIDE.md#phase-2
Select Pattern Based on API Type:
| API Type | Pattern | Reference Location |
|---|---|---|
| Static token | Simple Bearer | references/AUTHENTICATION_PATTERNS.md#pattern-1 |
| OAuth2 credentials | Auto-fetch token | references/AUTHENTICATION_PATTERNS.md#pattern-2 |
| Token refresh | Auto-refresh | references/AUTHENTICATION_PATTERNS.md#pattern-3 |
| API Key | Header or query | references/AUTHENTICATION_PATTERNS.md#pattern-5-6 |
Quick Example:
# @name login
POST {{baseUrl}}/auth/login
Content-Type: application/json
{
"email": "{{user}}",
"password": "{{password}}"
}
{{
// Store token for subsequent requests
if (response.statusCode === 200) {
exports.accessToken = response.parsedBody.access_token;
console.log('✓ Token obtained');
}
}}
###
# Use token in protected request
GET {{baseUrl}}/api/data
Authorization: Bearer {{accessToken}}
📖 Complete Patterns: references/AUTHENTICATION_PATTERNS.md
Search Pattern: grep -n "Pattern [0-9]:" references/AUTHENTICATION_PATTERNS.md
1. Environment Variables (from .env file)
@baseUrl = {{API_BASE_URL}}
@token = {{API_TOKEN}}
✅ Use @variable = {{ENV_VAR}} syntax at file top
2. Utility Functions (in script blocks)
{{
// ✅ CORRECT: Export with exports.
exports.validateResponse = function(response, actionName) {
return response.statusCode === 200;
};
}}
###
GET {{baseUrl}}/api/test
{{
// ✅ CORRECT: Call WITHOUT exports.
if (validateResponse(response, 'Test')) {
console.log('Success');
}
}}
3. Response Data (post-response only)
GET {{baseUrl}}/users
{{
// ✅ Store for next request
exports.userId = response.parsedBody.id;
}}
{{
// ❌ WRONG: Don't use exports/process.env for env vars
exports.baseUrl = process.env.API_BASE_URL; // NO!
// ❌ WRONG: Don't use exports when calling
if (exports.validateResponse(response)) { } // NO!
}}
### delimiter between requests@variable = {{ENV_VAR}}
exports.func = function() {}
.env.example created📖 Complete Syntax: references/SYNTAX.md
📖 Common Mistakes: references/COMMON_MISTAKES.md
📖 Cheatsheet: references/SYNTAX_CHEATSHEET.md
# ============================================================
# Article Endpoints - API Name
# ============================================================
# V1-Basic | V2-Metadata | V3-Full Content⭐
# Docs: https://api.example.com/docs
# ============================================================
@baseUrl = {{API_BASE_URL}}
### Get Articles V3 ⭐
# @name getArticlesV3
# @description Full content + Base64 HTML | Requires auth | Auto-decode
GET {{baseUrl}}/articles?page=1
Authorization: Bearer {{accessToken}}
DO:
# =============
|: Detail 1 | Detail 2
@description for hover detailsDON'T:
<!-- --> (visible in UI)### decorations📖 Complete Guide: See SKILL.md Phase 3.5 for before/after examples
# httpYac: Protect secrets
.env
.env.local
.env.*.local
.env.production
# httpYac: Ignore cache
.httpyac.cache
*.httpyac.cache
httpyac-output/
ALWAYS:
.env in .gitignore.env.example without real secretstoken.substring(0, 10) + '...'
NEVER:
📖 Complete Guide: references/SECURITY.md
Search Pattern: grep -n "gitignore\|secrets" references/SECURITY.md
Load references when:
| Situation | File to Load | grep Search Pattern |
|---|---|---|
| Setting up authentication | references/AUTHENTICATION_PATTERNS.md |
grep -n "Pattern [0-9]" |
| Script execution errors | references/SCRIPTING_TESTING.md |
grep -n "Pre-Request|Post-Response" |
| Environment switching | references/ENVIRONMENT_MANAGEMENT.md |
grep -n "\.env|\.httpyac" |
| Security configuration | references/SECURITY.md |
grep -n "gitignore|secrets" |
| Team documentation | references/DOCUMENTATION.md |
grep -n "README|CHANGELOG" |
| Advanced features | references/ADVANCED_FEATURES.md |
grep -n "GraphQL|WebSocket|gRPC" |
| CI/CD integration | references/CLI_CICD.md |
grep -n "GitHub Actions|GitLab" |
| Complete syntax reference | references/SYNTAX.md |
grep -n "@|??|{{" references/SYNTAX.md |
Quick References (Always Available):
references/SYNTAX_CHEATSHEET.md - Common syntax patternsreferences/COMMON_MISTAKES.md - Error preventionreferences/WORKFLOW_GUIDE.md - Complete workflowThis skill follows a 7-phase workflow. Phases 1-3 covered above. Remaining phases:
Phase 4: Scripting and Testing
references/SCRIPTING_TESTING.md
Phase 5: Environment Management
references/ENVIRONMENT_MANAGEMENT.md
Phase 6: Documentation
references/DOCUMENTATION.md
Phase 7: CI/CD Integration (Optional)
references/CLI_CICD.md
Before completion, verify:
Structure:
###
Syntax:
@var = {{ENV_VAR}}
Security:
.env in .gitignore.env.example has placeholdersFunctionality:
Documentation:
| Symptom | Likely Cause | Solution |
|---|---|---|
| "Variable not defined" | Not declared with @ |
Add @var = {{ENV_VAR}} at top |
| "Function not defined" | Not exported | Use exports.func = function() {} |
| Scripts not executing | Wrong syntax/position | Verify {{ }} placement |
| Token not persisting | Using local variable | Use exports.token instead |
| Environment not loading | Wrong file location | Place .env in project root |
📖 Complete Troubleshooting: references/TROUBLESHOOTING.md
Collection is production-ready when:
Before Generating Files:
While Generating:
assets/
After Generation:
Common User Requests:
references/AUTHENTICATION_PATTERNS.md → Choose pattern{{ }} syntax, .env loaded# @name and exports variables{{ }} block with assertionsreferences/CLI_CICD.md → Provide examplesVersion: 2.0.0 (Refactored) Last Updated: 2025-12-15 Based on: httpYac v6.x
Key Changes from v1.x:
Features: