curl -L -o api-request-builder.skill "https://aiskillstore.io/v1/agent/skills/6fc93980-a530-4f40-a23c-cd006c31037e/download?platform=ClaudeCode"
{
"tool": "download_skill",
"arguments": {
"skill_id": "6fc93980-a530-4f40-a23c-cd006c31037e",
"platform": "ClaudeCode"
}
}
{
"mcpServers": {
"skill-store": {
"url": "https://aiskillstore.io/mcp/"
}
}
}
API request code generator: converts JSON spec to curl/HTTPie/Python/JavaScript/urllib, converts curl back to JSON spec, auto-fills headers, and audits security anti-patterns. Zero external dependencies.
Compatible Platforms any
Findings: ["메타데이터 경고: 권장 필드 없음: 'requirements' (SKILL.md v2 권장)", "메타데이터 경고: 권장 필드 없음: 'changelog' (SKILL.md v2 권장)"]
✅ No security risks found.
AI Review Stage
스킬 메타데이터, 코드 스니펫 및 정적 분석 결과를 종합적으로 검토했습니다. 1. **권한 일치 여부:** 메타데이터에 `network: false`, `filesystem: false`, `subprocess: false`, `env_vars: []`로 선언되어 있습니다. 제공된 `main.py` 코드 스니펫에는 네트워크 통신, 파일 시스템 접근, 외부 프로세스 실행을 위한 모듈(예: `requests`, `os`, `subprocess`) 임포트나 관련 함수 호출이 발견되지 않았습니다. `base64`는 Python 표준 라이브러리이며, `env_var`는 실제 환경 변수를 스킬이 직접 읽는 것이 아니라, 생성될 코드에 환경 변수 참조 문자열(예: `${MY_API_TOKEN}`)을 삽입하는 방식으로 동작하여 선언된 권한과 일치합니다. 2. **악의적 코드 여부:** 스킬의 목적은 API 요청 코드를 생성하고 보안 취약점을 감사하는 것입니다. 사용자 데이터를 탈취하거나 시스템을 파괴하려는 의도를 가진 코드는 발견되지 않았습니다. 난독화된 코드도 없습니다. 3. **외부 통신 여부:** `permissions.network: false`로 선언되었으며, 코드에서 외부 통신을 시도하는 어떠한 징후도 발견되지 않았습니다. 4. **사용자 데이터 수집/전송 여부:** 스킬은 입력받은 API 명세를 기반으로 코드를 생성하거나 감사 결과를 반환할 뿐, 사용자 데이터를 무단으로 수집하거나 외부로 전송하는 기능은 없습니다. 민감 정보(토큰, 비밀번호)는 `env_var`를 통해 플레이스홀더로 처리될 수 있도록 설계되어, 스킬 자체가 민감한 원본 값을 직접 다루는 위험을 줄였습니다. 5. **코드 품질:** 'Zero external dependencies'라는 설명과 같이 표준 라이브러리만을 사용하며, 코드 스니펫은 스킬의 목적에 부합하는 기능을 명확하게 구현하고 있습니다. `sys.stdout`/`stdin` 인코딩 처리 등 기본적인 코드 품질도 양호합니다. 정적 분석 결과 또한 'approved' 상태이며, 'red_flags_found', 'obfuscation_warnings', 'forbidden_exec_files_found' 모두 비어 있어 안전함을 뒷받침합니다. 전반적으로 안전하며 스킬 스토어에 공개하기에 적합하다고 판단됩니다.
Representative input/output examples for this skill. Agents can use these to understand how to invoke the skill and what output to expect.
GET 요청을 curl 코드로 생성합니다.
{
"action": "build",
"headers": {
"Accept": "application/json"
},
"method": "GET",
"output_format": "curl",
"url": "https://api.example.com/users"
}
{
"action": "build",
"curl": "curl -X GET \u0027https://api.example.com/users\u0027 \\\n -H \u0027Accept: application/json\u0027",
"meta": {
"format": "curl",
"method": "GET",
"url": "https://api.example.com/users"
}
}
POST JSON 본문을 Python requests 코드로 생성합니다.
{
"action": "build",
"body": {
"email": "alice@example.com",
"name": "Alice"
},
"method": "POST",
"output_format": "python",
"url": "https://api.example.com/users"
}
{
"action": "build",
"meta": {
"format": "python",
"method": "POST"
},
"python": "[Generated Python requests code with json body and headers]"
}
Bearer 토큰 인증을 5가지 형식으로 동시 생성합니다.
{
"action": "build",
"auth": {
"env_var": "MY_API_TOKEN",
"type": "bearer"
},
"method": "GET",
"output_format": "all",
"url": "https://api.example.com/me"
}
{
"action": "build",
"formats": {
"curl": "curl -X GET \u0027https://api.example.com/me\u0027 \\\n -H \u0027Authorization: Bearer ${MY_API_TOKEN}\u0027 \\\n -H \u0027Accept: application/json\u0027",
"httpie": "http GET \u0027https://api.example.com/me\u0027 \\\n Authorization:\u0027Bearer ${MY_API_TOKEN}\u0027 \\\n Accept:application/json",
"javascript": "const response = await fetch(\u0027https://api.example.com/me\u0027, {method:\u0027GET\u0027, headers:{\u0027Authorization\u0027:\u0027Bearer \u0027+process.env.MY_API_TOKEN}});",
"python": "[Generated Python code using requests library with env-safe Bearer token]",
"urllib": "[Generated Python urllib code with Bearer token from env var MY_API_TOKEN]"
},
"meta": {
"formats_generated": 5,
"method": "GET"
}
}
curl 명령어를 파싱하여 구조화된 JSON 명세로 변환합니다.
{
"action": "convert_curl",
"curl_command": "curl -X POST https://api.example.com/data -H \u0027Content-Type: application/json\u0027 -H \u0027Authorization: Bearer mytoken\u0027 -d \u0027{\"key\":\"value\"}\u0027"
}
{
"action": "convert_curl",
"meta": {
"parsed_flags": [
"-X",
"-H",
"-d"
]
},
"spec": {
"body": {
"key": "value"
},
"headers": {
"Authorization": "Bearer mytoken",
"Content-Type": "application/json"
},
"method": "POST",
"url": "https://api.example.com/data"
}
}
URL 쿼리에 API 키를 노출하는 보안 위험 패턴을 감지합니다.
{
"action": "audit",
"method": "GET",
"url": "https://api.example.com/data?api_key=secret123\u0026format=json"
}
{
"action": "audit",
"findings": [
{
"fix_hint": {
"action": "Use Authorization header instead of URL query parameter",
"doc_ref": "https://aiskillstore.io/skills/api-request-builder#security",
"example": "curl -H \u0027Authorization: Bearer secret123\u0027 https://api.example.com/data",
"summary": "API key in URL \u2014 Authorization header \uc0ac\uc6a9 \uad8c\uc7a5 / Move API key to header"
},
"message": "API key found in URL query string -- exposed in logs and browser history",
"rule": "API_KEY_IN_URL",
"severity": "error"
}
],
"meta": {
"finding_count": 1,
"has_errors": true
}
}
HTTPS 미사용 요청의 보안 위험을 감지합니다.
{
"action": "audit",
"body": {
"password": "secret",
"username": "admin"
},
"method": "POST",
"url": "http://api.example.com/login"
}
{
"action": "audit",
"findings": [
{
"fix_hint": {
"action": "Change URL scheme from http:// to https://",
"doc_ref": "https://aiskillstore.io/skills/api-request-builder#security",
"example": "https://api.example.com/login",
"summary": "HTTP \uc0ac\uc6a9 \u2014 HTTPS \ub85c \ubcc0\uacbd \ud544\uc218 / Switch to HTTPS"
},
"message": "HTTP used instead of HTTPS -- credentials and data transmitted in plaintext",
"rule": "HTTP_NOT_HTTPS",
"severity": "error"
},
{
"fix_hint": {
"action": "Always use HTTPS when sending credentials. Mask password fields in logs.",
"doc_ref": "https://aiskillstore.io/skills/api-request-builder#security",
"example": "POST https://api.example.com/login with HTTPS",
"summary": "\ube44\ubc00\ubc88\ud638 \ubcf8\ubb38 \uc804\uc1a1 \u2014 HTTPS \ud544\uc218 + \ub85c\uadf8 \ub9c8\uc2a4\ud0b9 / Password in body \u2014 use HTTPS"
},
"message": "Field \u0027password\u0027 detected in request body -- ensure HTTPS and avoid logging",
"rule": "PASSWORD_IN_BODY",
"severity": "warning"
}
],
"meta": {
"finding_count": 2,
"has_errors": true
}
}
API 요청을 HTTPie 명령어 형식으로 생성합니다.
{
"action": "format_as",
"body": {
"limit": 10,
"query": "machine learning"
},
"method": "POST",
"output_format": "httpie",
"url": "https://api.example.com/search"
}
{
"action": "format_as",
"httpie": "http POST \u0027https://api.example.com/search\u0027 \\\n Content-Type:application/json \\\n query=\u0027machine learning\u0027 \\\n limit:=10",
"meta": {
"format": "httpie",
"method": "POST"
}
}
All examples are also available via the agent API:
/v1/agent/skills/6fc93980-a530-4f40-a23c-cd006c31037e/schema
No reviews yet. Be the first to leave one!