plugins/vscode-extensions-toolkit/skills/vscode-httpyac-config/SKILL.md
Configure VSCode with httpYac for API testing and automation. This skill should be used specifically when converting API documentation to executable .http files (10+ endpoints), setting up authentication flows with pre-request scripts, implementing request chaining with response data, organizing multi-file collections with environment management, or establishing Git-based API testing workflows with CI/CD integration.
npx skillsauth add libukai/awesome-agent-skills vscode-httpyac-configInstall 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.
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.templatereferences/SYNTAX.mdAvailable 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.mdPhase 5: Environment Management
references/ENVIRONMENT_MANAGEMENT.mdPhase 6: Documentation
references/DOCUMENTATION.mdPhase 7: CI/CD Integration (Optional)
references/CLI_CICD.mdBefore 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:
tools
发布内容和文章到 X (Twitter)。支持常规推文(文字/图片/视频)和 X Articles(长文 Markdown)。使用真实 Chrome 浏览器绕过反机器人检测。当用户说"发推"、"发到 X"、"发到 twitter"、"分享到 X"、"分享到 twitter"、"发 tweet"、"同步到 X"、"发布到 X"、提到"X Articles"、想从 Obsidian 笔记发布长文内容、或需要转换 Obsidian Markdown 到 X 格式时使用。适用于所有 X/Twitter 发布任务。
development
This skill should be used when setting up SFTP deployment for static websites to production servers, including converting projects from Docker/Express to static hosting, deploying Vue/React/Angular builds, setting up Slidev presentations, or configuring Hugo/Jekyll/Gatsby sites. Use this when the user asks to "setup SFTP deployment", "deploy static site to server", "configure Nginx for static files", "convert from Docker to static hosting", "deploy Vue build to production", "setup subdomain hosting", or "configure SFTP in VS Code". Provides SFTP configuration templates and production-ready Nginx configurations with security headers and caching.
tools
This skill should be used when configuring VS Code Port Monitor extension for development server monitoring. Use when the user asks to "set up port monitoring for Vite", "monitor my dev server ports", "configure port monitor for Next.js", "track which ports are running", "set up multi-port monitoring", "monitor frontend and backend ports", or "check port status in VS Code". Provides ready-to-use configuration templates for Vite (5173), Next.js (3000), and microservices architectures with troubleshooting guidance.
tools
Configure MCP (Model Context Protocol) servers for Claude Code. Manage MCP servers at user or project scope with best practices to avoid context pollution.