← 스킬 목록으로 돌아가기

json-schema-validator

v1.0.0 approved Development ⬇ 117 ↑ 8/7일 1개월 전
USK v3 ✅ Verified ⚡ Auto-Convert
⬇ 다운로드
설치 가이드↓
🤖 에이전트용 설치 명령 (curl / MCP / Claude Desktop)
▸ curl 한 줄 다운로드
curl -L -o json-schema-validator.skill   "https://aiskillstore.io/v1/agent/skills/a79fcf00-2779-4483-8833-a5cdc66bd053/download?platform=ClaudeCode"
▸ MCP 도구 호출 (Skill Store MCP 등록 시)
{
  "tool": "download_skill",
  "arguments": {
    "skill_id": "a79fcf00-2779-4483-8833-a5cdc66bd053",
    "platform": "ClaudeCode"
  }
}
▸ Claude Desktop / Cursor MCP 설정 (1회)
{
  "mcpServers": {
    "skill-store": {
      "url": "https://aiskillstore.io/mcp/"
    }
  }
}
📖 에이전트용 전체 API 가이드: /llms.txt  ·  MCP server card

JSON 데이터를 JSON Schema Draft-07 기준으로 유효성 검사합니다. 에이전트 API 응답 검증에 필수적입니다.

# json # schema # validation # openapi # developer-tools # korean

기본 정보

소유자 👤 ironman 카테고리 Development 등록일 2026-04-12 최종 업데이트 2026-04-26 최신 버전 1.0.0 패키지 날짜 2026-04-26 검증 상태 approved 다운로드 수 117회 체크섬 (SHA256) c4539f89f8bccf82c667ecfa8f9934d2f76752e2b07b9632b80f9b64338ad4fa

⚡ AGENT INFO USK v3

Capabilities
json_schema_validation schema_inference schema_diff_breaking_change schema_audit_antipattern json_example_generation
Permissions
✗ network
✗ filesystem
✗ subprocess
Interface
type: cli   entry_point: main.py   runtime: python3   call_pattern: stdin_stdout
Agent API
# 스킬 스키마 조회 (에이전트가 호출 방법을 파악) GET /v1/agent/skills/a79fcf00-2779-4483-8833-a5cdc66bd053/schema # 플랫폼별 자동 변환 다운로드 GET /v1/agent/skills/a79fcf00-2779-4483-8833-a5cdc66bd053/download?platform=OpenClaw GET /v1/agent/skills/a79fcf00-2779-4483-8833-a5cdc66bd053/download?platform=ClaudeCode GET /v1/agent/skills/a79fcf00-2779-4483-8833-a5cdc66bd053/download?platform=ClaudeCodeAgentSkill GET /v1/agent/skills/a79fcf00-2779-4483-8833-a5cdc66bd053/download?platform=Cursor GET /v1/agent/skills/a79fcf00-2779-4483-8833-a5cdc66bd053/download?platform=GeminiCLI GET /v1/agent/skills/a79fcf00-2779-4483-8833-a5cdc66bd053/download?platform=CodexCLI GET /v1/agent/skills/a79fcf00-2779-4483-8833-a5cdc66bd053/download?platform=CustomAgent

설치 방법

호환 플랫폼: any

1
openclaw_skill_manager.py로 스킬을 설치합니다.
python openclaw_skill_manager.py --install json-schema-validator
2
설치 확인
python openclaw_skill_manager.py --list-installed
3
특정 버전 설치 (선택)
python openclaw_skill_manager.py --install json-schema-validator --version 1.0.0
1
스킬 패키지를 다운로드합니다.
curl -O https://aiskillstore.io/v1/skills/a79fcf00-2779-4483-8833-a5cdc66bd053/download
2
Claude Code commands 디렉터리에 배치합니다.
unzip json-schema-validator.skill -d ~/.claude/commands/json-schema-validator/
3
Claude Code에서 슬래시 커맨드로 사용합니다.
/json-schema-validator
1
Agent Skills 패키지를 다운로드합니다.
curl -O https://aiskillstore.io/v1/agent/skills/a79fcf00-2779-4483-8833-a5cdc66bd053/download?platform=ClaudeCodeAgentSkill
2
Claude Code skills 디렉터리에 압축을 해제합니다.
unzip json-schema-validator-agent-skill-*.skill -d ~/.claude/skills/json-schema-validator/
3
Claude Code를 재시작하면 세션 시작 시 자동으로 로드됩니다. 슬래시 커맨드 없이 자연어로 사용 가능합니다.
1
Cursor 변환 패키지를 다운로드합니다.
curl -O https://aiskillstore.io/v1/agent/skills/a79fcf00-2779-4483-8833-a5cdc66bd053/download?platform=Cursor
2
압축 해제 후 영구 위치에 저장합니다.
unzip json-schema-validator-cursor-*.skill -d ~/.cursor/skills/json-schema-validator/
3
.cursor/mcp.json에 MCP 서버 설정을 추가하고 Cursor를 재시작합니다.
cat ~/.cursor/skills/json-schema-validator/cursor_mcp_config.json
1
Gemini CLI 변환 패키지를 다운로드합니다.
curl -O https://aiskillstore.io/v1/agent/skills/a79fcf00-2779-4483-8833-a5cdc66bd053/download?platform=GeminiCLI
2
압축 해제 후 영구 위치에 저장합니다.
unzip json-schema-validator-geminicli-*.skill -d ~/.gemini/skills/json-schema-validator/
3
~/.gemini/settings.json에 MCP 서버 설정을 추가하고 Gemini CLI를 재시작합니다.
cat ~/.gemini/skills/json-schema-validator/gemini_settings_snippet.json
1
Codex CLI 변환 패키지를 다운로드합니다.
curl -O https://aiskillstore.io/v1/agent/skills/a79fcf00-2779-4483-8833-a5cdc66bd053/download?platform=CodexCLI
2
압축 해제 후 영구 위치에 저장합니다.
unzip json-schema-validator-codexcli-*.skill -d ~/.codex/skills/json-schema-validator/
3
~/.codex/config.toml에 MCP 서버 설정을 추가하고 Codex CLI를 재시작합니다.
cat ~/.codex/skills/json-schema-validator/codex_config_snippet.toml
1
REST API로 스킬 패키지를 다운로드합니다.
GET https://aiskillstore.io/v1/skills/a79fcf00-2779-4483-8833-a5cdc66bd053/download
2
에이전트 플랫폼의 skills 디렉터리에 배치합니다.
cp json-schema-validator.skill ./skills/
3
설치 가이드 API로 플랫폼별 상세 정보를 조회합니다.
GET https://aiskillstore.io/v1/skills/a79fcf00-2779-4483-8833-a5cdc66bd053/install-guide?platform=CustomAgent

보안 검증 보고서

검증 결과 APPROVED

검사 결과: ["메타데이터 경고: 권장 필드 없음: 'requirements' (SKILL.md v2 권장)", "메타데이터 경고: 권장 필드 없음: 'changelog' (SKILL.md v2 권장)"]

✅ 보안 위험 항목이 발견되지 않았습니다.

AI 검수 단계

검수 주체 gemini 위험도 🟢 낮음 검수 요약 JSON Schema 관련 기능을 제공하는 안전하고 자체 포함된 스킬입니다.
판단 근거

스킬 메타데이터에서 네트워크, 파일 시스템, 서브프로세스 접근 권한을 모두 'false'로 명시적으로 선언했습니다. 제공된 코드 파일들을 분석한 결과, 이 선언과 일치하게 외부 네트워크 통신, 파일 시스템 조작(내부 모듈 로딩을 위한 `sys.path` 수정 제외), 또는 서브프로세스 실행 코드가 발견되지 않았습니다. 스킬은 표준 입력을 통해 데이터를 받아 처리하고, 표준 출력으로 결과를 반환하는 `stdin_stdout` 패턴을 따릅니다. 코드 품질은 양호하며, 난독화나 악의적인 목적의 코드는 발견되지 않았습니다. 특히 `lib/auditor.py`에서 ReDoS 취약점 패턴을 검사하는 기능이 포함되어 있어 보안에 대한 개발자의 인식을 엿볼 수 있습니다. 'zero external dependencies'라는 설명과 같이 모든 핵심 로직이 자체 구현되어 있어 외부 라이브러리 의존성으로 인한 잠재적 위험도 없습니다. 정적 분석 결과 또한 'approved' 상태로, 어떠한 위험 요소도 발견되지 않았음을 확인했습니다.

버전 히스토리

버전 USK v3 검증 상태 패키지 날짜 다운로드 변경사항
v1.0.0 approved 2026-04-26 ⬇ 117
v1.0.0 approved 2026-04-12 ⬇ 99 초기 릴리스

사용 예시 (Examples) 7 개

이 스킬의 대표적인 입출력 예시입니다. 에이전트는 이 예시를 보고 스킬 호출 방법과 결과 형태를 이해할 수 있습니다.

validate_success
# validate# success# korean

유효한 JSON 인스턴스 검증 성공 예시 / Successful validation of a valid JSON instance

📥 입력
{
  "action": "validate",
  "draft": "draft-07",
  "instance": {
    "age": 30,
    "email": "hong@example.com",
    "name": "\ud64d\uae38\ub3d9"
  },
  "schema": {
    "additionalProperties": false,
    "properties": {
      "age": {
        "maximum": 150,
        "minimum": 0,
        "type": "integer"
      },
      "email": {
        "format": "email",
        "type": "string"
      },
      "name": {
        "minLength": 1,
        "type": "string"
      }
    },
    "required": [
      "name",
      "age"
    ],
    "type": "object"
  }
}
📤 출력
{
  "action": "validate",
  "errors": [],
  "meta": {
    "draft": "draft-07",
    "error_count": 0
  },
  "valid": true
}
validate_failure
# validate# failure# multiple-errors# korean

유효하지 않은 인스턴스 — 복합 에러 수집 / Invalid instance with multiple errors collected

📥 입력
{
  "action": "validate",
  "instance": {
    "age": -5,
    "extra_field": "\ubd88\ud544\uc694\ud55c \ud544\ub4dc",
    "name": "X",
    "status": "unknown"
  },
  "language": "ko",
  "schema": {
    "additionalProperties": false,
    "properties": {
      "age": {
        "minimum": 0,
        "type": "integer"
      },
      "name": {
        "minLength": 2,
        "type": "string"
      },
      "status": {
        "enum": [
          "active",
          "inactive",
          "pending"
        ],
        "type": "string"
      }
    },
    "required": [
      "name",
      "age",
      "status"
    ],
    "type": "object"
  }
}
📤 출력
{
  "action": "validate",
  "errors": [
    {
      "actual": 1,
      "expected": 2,
      "fix_hint": {
        "action": "minLength \uc870\uac74\uc744 \ub9cc\uc871\ud558\ub3c4\ub85d \uac12\uc744 \ub298\ub9ac\uc138\uc694.",
        "doc_ref": "https://json-schema.org/understanding-json-schema/reference/string.html#length",
        "example": "\"\ud64d\uae38\ub3d9\"",
        "summary": "\ubb38\uc790\uc5f4 \uae38\uc774 \ubd80\uc871"
      },
      "message": "\u0027name\u0027 \uac12\uc758 \uae38\uc774\uac00 \ucd5c\uc18c 2\uc790 \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4. (\ud604\uc7ac: 1\uc790)",
      "path": "/name",
      "schema_path": "/properties/name/minLength"
    },
    {
      "actual": -5,
      "expected": 0,
      "fix_hint": {
        "action": "minimum \uc870\uac74\uc744 \ub9cc\uc871\ud558\ub3c4\ub85d \uac12\uc744 \uc218\uc815\ud558\uc138\uc694.",
        "doc_ref": "https://json-schema.org/understanding-json-schema/reference/numeric.html",
        "example": "30",
        "summary": "\uc22b\uc790 \ubc94\uc704 \ucd08\uacfc"
      },
      "message": "\u0027age\u0027 \uac12\uc774 \ucd5c\uc19f\uac12 0\ubcf4\ub2e4 \uc791\uc2b5\ub2c8\ub2e4. (\ud604\uc7ac: -5)",
      "path": "/age",
      "schema_path": "/properties/age/minimum"
    },
    {
      "actual": "unknown",
      "expected": [
        "active",
        "inactive",
        "pending"
      ],
      "fix_hint": {
        "action": "\ud5c8\uc6a9\ub41c \uac12 \uc911 \ud558\ub098\ub97c \uc120\ud0dd\ud558\uc138\uc694.",
        "doc_ref": "https://json-schema.org/understanding-json-schema/reference/generic.html#enumerated-values",
        "example": "\"active\"",
        "summary": "\uc5f4\uac70\ud615 \uac12 \uc624\ub958"
      },
      "message": "\u0027status\u0027 \uac12 \u0027unknown\u0027\uc740 \ud5c8\uc6a9\ub41c \uc5f4\uac70\ud615 \uac12\uc774 \uc544\ub2d9\ub2c8\ub2e4.",
      "path": "/status",
      "schema_path": "/properties/status/enum"
    },
    {
      "actual": "\ubd88\ud544\uc694\ud55c \ud544\ub4dc",
      "expected": "\uc5c6\uc74c",
      "fix_hint": {
        "action": "\uc2a4\ud0a4\ub9c8\uc5d0 \uc5c6\ub294 \ud544\ub4dc\ub97c \uc81c\uac70\ud558\uac70\ub098 \uc2a4\ud0a4\ub9c8\uc5d0 \ucd94\uac00\ud558\uc138\uc694.",
        "doc_ref": "https://json-schema.org/understanding-json-schema/reference/object.html#additional-properties",
        "example": "\ud544\ub4dc \uc81c\uac70 \ub610\ub294 schema\uc5d0 extra_field \ucd94\uac00",
        "summary": "\ucd94\uac00 \uc18d\uc131 \uae08\uc9c0 \uc704\ubc18"
      },
      "message": "\ud5c8\uc6a9\ub418\uc9c0 \uc54a\ub294 \ucd94\uac00 \uc18d\uc131 \u0027extra_field\u0027\uac00 \uc788\uc2b5\ub2c8\ub2e4.",
      "path": "/extra_field",
      "schema_path": "/additionalProperties"
    }
  ],
  "meta": {
    "draft": "draft-07",
    "error_count": 4
  },
  "valid": false
}
infer_from_samples
# infer# schema-generation# format-detection

여러 샘플 JSON에서 스키마 자동 추론 / Infer schema automatically from multiple JSON samples

📥 입력
{
  "action": "infer",
  "samples": [
    {
      "created_at": "2024-01-15T09:30:00Z",
      "email": "hong@example.com",
      "id": 1,
      "name": "\ud64d\uae38\ub3d9",
      "phone": "010-1234-5678"
    },
    {
      "created_at": "2024-02-20T14:00:00Z",
      "email": "lee@test.org",
      "id": 2,
      "name": "\uc774\uc21c\uc2e0"
    },
    {
      "created_at": "2024-03-01T00:00:00Z",
      "email": "kang@mail.kr",
      "id": 3,
      "name": "\uac15\uac10\ucc2c",
      "phone": "010-9876-5432"
    }
  ]
}
📤 출력
{
  "action": "infer",
  "meta": {
    "detected_formats": {
      "created_at": "date-time",
      "email": "email"
    },
    "optional_fields": [
      "phone"
    ],
    "sample_count": 3
  },
  "schema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "additionalProperties": true,
    "properties": {
      "created_at": {
        "description": "Inferred from samples",
        "format": "date-time",
        "type": "string"
      },
      "email": {
        "description": "Inferred from samples",
        "format": "email",
        "type": "string"
      },
      "id": {
        "description": "Inferred from samples",
        "type": "integer"
      },
      "name": {
        "description": "Inferred from samples",
        "type": "string"
      },
      "phone": {
        "description": "Inferred from samples (optional)",
        "type": "string"
      }
    },
    "required": [
      "id",
      "name",
      "email",
      "created_at"
    ],
    "type": "object"
  }
}
diff_breaking_change
# diff# breaking-change# api-versioning

두 스키마 비교 — breaking change 탐지 / Diff two schemas detecting breaking changes

📥 입력
{
  "action": "diff",
  "schema_a": {
    "additionalProperties": true,
    "properties": {
      "age": {
        "type": "integer"
      },
      "name": {
        "type": "string"
      },
      "role": {
        "type": "string"
      }
    },
    "required": [
      "name"
    ],
    "type": "object"
  },
  "schema_b": {
    "additionalProperties": false,
    "properties": {
      "age": {
        "type": "string"
      },
      "name": {
        "minLength": 2,
        "type": "string"
      },
      "status": {
        "enum": [
          "active",
          "inactive"
        ],
        "type": "string"
      }
    },
    "required": [
      "name",
      "status"
    ],
    "type": "object"
  }
}
📤 출력
{
  "action": "diff",
  "additive": [
    {
      "change": "property_added",
      "message": "\u0027status\u0027 \uc18d\uc131\uc774 \uc0c8\ub85c \ucd94\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4.",
      "path": "/properties/status"
    }
  ],
  "breaking": [
    {
      "change": "type_changed",
      "from": "integer",
      "message": "\u0027age\u0027 \ud0c0\uc785\uc774 integer \u2192 string\uc73c\ub85c \ubcc0\uacbd\ub418\uc5b4 \uae30\uc874 \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \uc2e4\ud328\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.",
      "path": "/properties/age/type",
      "to": "string"
    },
    {
      "change": "required_added",
      "field": "status",
      "message": "\u0027status\u0027\uac00 required\uc5d0 \ucd94\uac00\ub418\uc5b4 \uc774 \ud544\ub4dc \uc5c6\ub294 \uae30\uc874 \ub370\uc774\ud130\uac00 \ubb34\ud6a8\ud654\ub429\ub2c8\ub2e4.",
      "path": "/required"
    },
    {
      "change": "additional_properties_restricted",
      "from": true,
      "message": "additionalProperties\uac00 true\u2192false\ub85c \uc81c\ud55c\ub418\uc5b4 \uae30\uc874 \ucd94\uac00 \ud544\ub4dc\uac00 \uac70\ubd80\ub429\ub2c8\ub2e4.",
      "path": "/additionalProperties",
      "to": false
    },
    {
      "change": "constraint_added",
      "message": "\u0027name\u0027\uc5d0 minLength:2 \uc81c\uc57d\uc774 \ucd94\uac00\ub418\uc5b4 \uc9e7\uc740 \uac12\uc774 \uac70\ubd80\ub429\ub2c8\ub2e4.",
      "path": "/properties/name/minLength"
    }
  ],
  "meta": {
    "additive_count": 1,
    "breaking_count": 4,
    "neutral_count": 1
  },
  "neutral": [
    {
      "change": "property_removed",
      "message": "\u0027role\u0027 \uc18d\uc131\uc774 \uc81c\uac70\ub418\uc5c8\uc2b5\ub2c8\ub2e4 (required \uc544\ub2d8, breaking \uc5c6\uc74c).",
      "path": "/properties/role"
    }
  ]
}
audit_clean
# audit# clean# quality

잘 작성된 스키마 감사 — 이슈 없음 / Audit of a well-written schema with no issues

📥 입력
{
  "action": "audit",
  "schema": {
    "$id": "https://example.com/user.schema.json",
    "$schema": "http://json-schema.org/draft-07/schema#",
    "additionalProperties": false,
    "description": "\uc11c\ube44\uc2a4 \uc0ac\uc6a9\uc790 \uc815\ubcf4\ub97c \ub098\ud0c0\ub0b4\ub294 \uc2a4\ud0a4\ub9c8",
    "properties": {
      "email": {
        "description": "\uc774\uba54\uc77c \uc8fc\uc18c",
        "format": "email",
        "maxLength": 254,
        "title": "\uc774\uba54\uc77c",
        "type": "string"
      },
      "id": {
        "description": "\uace0\uc720 \uc2dd\ubcc4\uc790",
        "minimum": 1,
        "title": "\uc0ac\uc6a9\uc790 ID",
        "type": "integer"
      },
      "name": {
        "description": "\uc0ac\uc6a9\uc790 \uc774\ub984",
        "maxLength": 100,
        "minLength": 1,
        "title": "\uc774\ub984",
        "type": "string"
      },
      "tags": {
        "description": "\uc0ac\uc6a9\uc790 \ud0dc\uadf8 \ubaa9\ub85d",
        "items": {
          "type": "string"
        },
        "maxItems": 20,
        "title": "\ud0dc\uadf8",
        "type": "array"
      }
    },
    "required": [
      "id",
      "name",
      "email"
    ],
    "title": "\uc0ac\uc6a9\uc790 \uc2a4\ud0a4\ub9c8",
    "type": "object"
  }
}
📤 출력
{
  "action": "audit",
  "issues": [],
  "meta": {
    "issues_by_category": {
      "INTEROP": 0,
      "QUAL": 0,
      "SEC": 0
    },
    "rules_checked": 15
  },
  "score": 100
}
audit_with_issues
# audit# issues# anti-pattern# redos

안티패턴이 있는 스키마 감사 / Audit of a schema with multiple anti-patterns

📥 입력
{
  "action": "audit",
  "schema": {
    "properties": {
      "content": {
        "type": "string"
      },
      "metadata": {},
      "pattern_field": {
        "pattern": "(a+)+",
        "type": "string"
      },
      "tags": {
        "type": "array"
      }
    },
    "required": [
      "content"
    ],
    "type": "object"
  }
}
📤 출력
{
  "action": "audit",
  "issues": [
    {
      "category": "QUAL",
      "fix_hint": {
        "action": "\ub8e8\ud2b8 \uc2a4\ud0a4\ub9c8\uc5d0 title \uc18d\uc131\uc744 \ucd94\uac00\ud558\uc138\uc694.",
        "doc_ref": "https://json-schema.org/understanding-json-schema/reference/schema.html",
        "example": {
          "title": "\ub0b4 \uc2a4\ud0a4\ub9c8"
        },
        "summary": "title \ub204\ub77d"
      },
      "message": "\uc2a4\ud0a4\ub9c8\uc5d0 \u0027title\u0027\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. \uc2a4\ud0a4\ub9c8\uc758 \ubaa9\uc801\uc744 \uba85\ud655\ud788 \uae30\uc220\ud558\uc138\uc694.",
      "path": "/",
      "rule": "QUAL-001",
      "severity": "warning"
    },
    {
      "category": "QUAL",
      "fix_hint": {
        "action": "\ub8e8\ud2b8 \uc2a4\ud0a4\ub9c8\uc5d0 description \uc18d\uc131\uc744 \ucd94\uac00\ud558\uc138\uc694.",
        "doc_ref": "https://json-schema.org/understanding-json-schema/reference/schema.html",
        "example": {
          "description": "\uc774 \uc2a4\ud0a4\ub9c8\ub294 ..."
        },
        "summary": "description \ub204\ub77d"
      },
      "message": "\uc2a4\ud0a4\ub9c8\uc5d0 \u0027description\u0027\uc774 \uc5c6\uc2b5\ub2c8\ub2e4. \uc6a9\ub3c4\ub97c \uc124\uba85\ud558\ub294 description\uc744 \ucd94\uac00\ud558\uc138\uc694.",
      "path": "/",
      "rule": "QUAL-002",
      "severity": "warning"
    },
    {
      "category": "QUAL",
      "fix_hint": {
        "action": "\uc2a4\ud0a4\ub9c8\uc5d0 $id URI\ub97c \ucd94\uac00\ud558\uc138\uc694.",
        "doc_ref": "https://json-schema.org/understanding-json-schema/structuring.html",
        "example": {
          "$id": "https://example.com/my-schema.json"
        },
        "summary": "$id \ub204\ub77d"
      },
      "message": "\u0027$id\u0027\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. \uc2a4\ud0a4\ub9c8 URI\ub97c \uba85\uc2dc\ud558\uba74 \ucc38\uc870 \ud574\uc11d\uc774 \uba85\ud655\ud574\uc9d1\ub2c8\ub2e4.",
      "path": "/",
      "rule": "QUAL-005",
      "severity": "warning"
    },
    {
      "category": "QUAL",
      "fix_hint": {
        "action": "string \ud0c0\uc785 \uc18d\uc131\uc5d0 \ud569\ub9ac\uc801\uc778 maxLength\ub97c \uc124\uc815\ud558\uc138\uc694.",
        "doc_ref": "https://json-schema.org/understanding-json-schema/reference/string.html",
        "example": {
          "maxLength": 10000
        },
        "summary": "\ubb34\ud55c \ubb38\uc790\uc5f4 \uae38\uc774"
      },
      "message": "\u0027content\u0027 \uc18d\uc131\uc5d0 maxLength \uc81c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.",
      "path": "/properties/content",
      "rule": "QUAL-003",
      "severity": "info"
    },
    {
      "category": "QUAL",
      "fix_hint": {
        "action": "array \ud0c0\uc785 \uc18d\uc131\uc5d0 \ud569\ub9ac\uc801\uc778 maxItems\ub97c \uc124\uc815\ud558\uc138\uc694.",
        "doc_ref": "https://json-schema.org/understanding-json-schema/reference/array.html",
        "example": {
          "maxItems": 100
        },
        "summary": "\ubb34\ud55c \ubc30\uc5f4 \ud06c\uae30"
      },
      "message": "\u0027tags\u0027 \ubc30\uc5f4\uc5d0 maxItems \uc81c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.",
      "path": "/properties/tags",
      "rule": "QUAL-004",
      "severity": "info"
    },
    {
      "category": "SEC",
      "fix_hint": {
        "action": "\uc911\ucca9 \uc218\ub7c9\uc790\ub97c \uc81c\uac70\ud558\uace0 \uc6d0\uc790\uc801 \uadf8\ub8f9 \ub610\ub294 possessive \uc218\ub7c9\uc790\ub97c \uc0ac\uc6a9\ud558\uc138\uc694.",
        "doc_ref": "https://owasp.org/www-community/attacks/ReDoS",
        "example": {
          "pattern": "a+"
        },
        "summary": "ReDoS \ucde8\uc57d \ud328\ud134"
      },
      "message": "\ud328\ud134 \u0027(a+)+\u0027 \uc774 ReDoS \uc704\ud5d8\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc911\ucca9 \uc218\ub7c9\uc790\uac00 \uac10\uc9c0\ub418\uc5c8\uc2b5\ub2c8\ub2e4.",
      "path": "/properties/pattern_field",
      "rule": "SEC-001",
      "severity": "error"
    },
    {
      "category": "QUAL",
      "fix_hint": {
        "action": "\ud5c8\uc6a9\ud558\uc9c0 \uc54a\uc73c\ub824\uba74 false, \ud5c8\uc6a9\ud558\ub824\uba74 true\ub97c \uba85\uc2dc\ud558\uc138\uc694.",
        "doc_ref": "https://json-schema.org/understanding-json-schema/reference/object.html#additional-properties",
        "example": {
          "additionalProperties": false
        },
        "summary": "additionalProperties \ubbf8\uc9c0\uc815"
      },
      "message": "additionalProperties\uac00 \uc9c0\uc815\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. \uc758\ub3c4\ud558\uc9c0 \uc54a\uc740 \ud544\ub4dc \ud5c8\uc6a9 \uc5ec\ubd80\ub97c \uba85\uc2dc\ud558\uc138\uc694.",
      "path": "/",
      "rule": "QUAL-006",
      "severity": "warning"
    },
    {
      "category": "INTEROP",
      "fix_hint": {
        "action": "$schema\ub97c \ucd94\uac00\ud558\uc5ec \uc0ac\uc6a9\ud558\ub294 draft\ub97c \uba85\uc2dc\ud558\uc138\uc694.",
        "doc_ref": "https://json-schema.org/understanding-json-schema/reference/schema.html",
        "example": {
          "$schema": "http://json-schema.org/draft-07/schema#"
        },
        "summary": "draft \ubc84\uc804 \ubbf8\uc9c0\uc815"
      },
      "message": "$schema \ud0a4\uc6cc\ub4dc\uac00 \uc5c6\uc5b4 draft \ubc84\uc804\uc744 \uc54c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.",
      "path": "/",
      "rule": "INTEROP-003",
      "severity": "info"
    },
    {
      "category": "SEC",
      "fix_hint": {
        "action": "\uc18d\uc131\uc5d0 \uba85\uc2dc\uc801\uc778 type\uc744 \uc9c0\uc815\ud558\uc138\uc694.",
        "doc_ref": "https://json-schema.org/understanding-json-schema/reference/type.html",
        "example": {
          "type": "object"
        },
        "summary": "type \uc5c6\ub294 \uad00\ub300\ud55c \uc18d\uc131"
      },
      "message": "\u0027metadata\u0027 \uc18d\uc131\uc5d0 type\uc774 \uc9c0\uc815\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. \uc784\uc758 \uac12\uc774 \ud5c8\uc6a9\ub429\ub2c8\ub2e4.",
      "path": "/properties/metadata",
      "rule": "SEC-002",
      "severity": "warning"
    },
    {
      "category": "QUAL",
      "fix_hint": {
        "action": "\ubc30\uc5f4 \uc694\uc18c\uc758 \ud0c0\uc785\uc744 items\ub85c \uba85\uc2dc\ud558\uc138\uc694.",
        "doc_ref": "https://json-schema.org/understanding-json-schema/reference/array.html#items",
        "example": {
          "items": {
            "type": "string"
          }
        },
        "summary": "items \ubbf8\uc9c0\uc815"
      },
      "message": "\u0027tags\u0027 \ubc30\uc5f4\uc5d0 items\uac00 \uc9c0\uc815\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.",
      "path": "/properties/tags",
      "rule": "QUAL-007",
      "severity": "info"
    }
  ],
  "meta": {
    "issues_by_category": {
      "INTEROP": 1,
      "QUAL": 7,
      "SEC": 2
    },
    "rules_checked": 15
  },
  "score": 25
}
generate_example
# generate_example# korean-format# example-generation

스키마에서 예시 인스턴스 3개 생성 / Generate 3 example instances from a schema

📥 입력
{
  "action": "generate_example",
  "count": 3,
  "schema": {
    "additionalProperties": false,
    "properties": {
      "active": {
        "type": "boolean"
      },
      "birth_date": {
        "format": "date-time",
        "type": "string"
      },
      "email": {
        "format": "email",
        "type": "string"
      },
      "id": {
        "minimum": 1,
        "type": "integer"
      },
      "phone": {
        "format": "korean_phone",
        "type": "string"
      },
      "roles": {
        "items": {
          "enum": [
            "admin",
            "user",
            "viewer"
          ],
          "type": "string"
        },
        "maxItems": 3,
        "type": "array"
      },
      "score": {
        "maximum": 100.0,
        "minimum": 0.0,
        "type": "number"
      },
      "username": {
        "maxLength": 20,
        "minLength": 3,
        "type": "string"
      }
    },
    "required": [
      "id",
      "username",
      "email",
      "active"
    ],
    "type": "object"
  }
}
📤 출력
{
  "action": "generate_example",
  "examples": [
    {
      "active": true,
      "email": "user1@example.com",
      "id": 1,
      "roles": [
        "user"
      ],
      "username": "user_abc"
    },
    {
      "active": false,
      "birth_date": "1990-06-15T00:00:00Z",
      "email": "user2@example.com",
      "id": 42,
      "phone": "010-1234-5678",
      "roles": [
        "admin",
        "user"
      ],
      "score": 87.5,
      "username": "hong_gildong"
    },
    {
      "active": true,
      "email": "user3@example.com",
      "id": 100,
      "phone": "010-9876-5432",
      "roles": [
        "viewer"
      ],
      "score": 42.0,
      "username": "sample_user"
    }
  ],
  "meta": {
    "generated_count": 3,
    "required_fields": [
      "id",
      "username",
      "email",
      "active"
    ],
    "schema_type": "object"
  }
}

모든 예시는 에이전트 API로도 조회 가능: /v1/agent/skills/a79fcf00-2779-4483-8833-a5cdc66bd053/schema

리뷰 & 평점

아직 리뷰가 없습니다. 첫 번째 리뷰를 남겨보세요!

✍️ 리뷰 작성