curl -L -o output-schema-enforcer.skill "https://aiskillstore.io/v1/agent/skills/d5e0a646-dc52-423a-9ac4-e97609b9e6e5/download?platform=ClaudeCode"
{
"tool": "download_skill",
"arguments": {
"skill_id": "d5e0a646-dc52-423a-9ac4-e97609b9e6e5",
"platform": "ClaudeCode"
}
}
{
"mcpServers": {
"skill-store": {
"url": "https://aiskillstore.io/mcp/"
}
}
}
Deterministic JSON Schema validator for LLM outputs. Returns full violation list with JSON Pointer paths ($.actions[0].priority), fix hints per keyword, and summary — self-correction loop anchor.
Compatible Platforms any
Findings: ["메타데이터 경고: 권장 필드 없음: 'requirements' (SKILL.md v2 권장)", "메타데이터 경고: 권장 필드 없음: 'changelog' (SKILL.md v2 권장)"]
✅ No security risks found.
AI Review Stage
1. **Permissions Consistency**: 스킬 메타데이터에 `network: false`, `filesystem: false`, `subprocess: false`로 명확하게 선언되어 있으며, 제공된 코드 스니펫과 정적 분석 결과에서 이러한 선언과 불일치하는 어떠한 외부 통신, 파일 시스템 접근 또는 서브프로세스 실행 시도도 발견되지 않았습니다. `jsonschema` 라이브러리 사용은 스킬의 목적에 부합하며 자체적으로 위험한 작업을 수행하지 않습니다. 2. **Malicious Code**: 코드 스니펫은 JSON 스키마 유효성 검사 및 경로 변환과 관련된 표준 Python 로직으로 구성되어 있습니다. 악의적인 목적(데이터 탈취, 시스템 파괴 등)을 가진 코드는 발견되지 않았으며, 정적 분석 결과에서도 `red_flags_found` 및 `obfuscation_warnings`가 없음을 확인했습니다. 3. **Undeclared External Communication**: `network: false` 선언에 따라 외부 통신이 없어야 하며, 코드에서 `socket`, `requests` 등 네트워크 관련 모듈의 사용 흔적이 없습니다. 4. **Unauthorized Data Collection/Transmission**: 스킬은 `stdin_stdout` 패턴으로 동작하며, 입력된 데이터를 검증하고 결과를 반환하는 것이 주 목적입니다. 네트워크 및 파일 시스템 접근 권한이 없으므로 사용자 데이터를 무단으로 수집하거나 외부로 전송할 수 없습니다. 5. **Code Quality**: 제공된 코드 스니펫은 명확하고 구조화되어 있으며, 오류 처리 및 경로 변환 유틸리티가 잘 구현되어 있습니다. 스킬의 설명 및 예시와 일치하는 고품질의 코드로 판단됩니다. 종합적으로, 이 스킬은 보안 위험이 매우 낮으며, 선언된 기능과 보안 정책을 충실히 따르고 있습니다.
Representative input/output examples for this skill. Agents can use these to understand how to invoke the skill and what output to expect.
Simple valid LLM output — valid=true returned / 유효한 LLM 출력 검증 성공
{
"include_fix_hints": true,
"mode": "strict",
"output": {
"priority": "high",
"status": "completed",
"task_id": "t-001"
},
"schema": {
"additionalProperties": false,
"properties": {
"priority": {
"enum": [
"low",
"medium",
"high"
],
"type": "string"
},
"status": {
"enum": [
"pending",
"completed",
"failed"
],
"type": "string"
},
"task_id": {
"type": "string"
}
},
"required": [
"task_id",
"status",
"priority"
],
"type": "object"
}
}
{
"summary": {
"by_keyword": {},
"total_violations": 0
},
"valid": true,
"violations": []
}
Enum violation in nested array element — JSON Pointer path returned / 중첩 배열 enum 위반, fix_hint 포함
{
"include_fix_hints": true,
"output": {
"actions": [
{
"name": "send_email",
"priority": "urgent"
},
{
"name": "log_event",
"priority": "medium"
}
]
},
"schema": {
"properties": {
"actions": {
"items": {
"properties": {
"name": {
"type": "string"
},
"priority": {
"enum": [
"low",
"medium",
"high"
],
"type": "string"
}
},
"required": [
"name",
"priority"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"actions"
],
"type": "object"
}
}
{
"summary": {
"by_keyword": {
"enum": 1
},
"total_violations": 1
},
"valid": false,
"violations": [
{
"constraint": [
"low",
"medium",
"high"
],
"fix_hint": "Change to one of: \u0027low\u0027, \u0027medium\u0027, \u0027high\u0027",
"json_pointer": "/actions/0/priority",
"message": "\u0027urgent\u0027 is not one of [\u0027low\u0027, \u0027medium\u0027, \u0027high\u0027] / \ud5c8\uc6a9\ub41c \uac12\uc774 \uc544\ub2d9\ub2c8\ub2e4",
"path": "$.actions[0].priority",
"schema_keyword": "enum",
"value_received": "urgent"
}
]
}
Required field missing from LLM output / 필수 필드 누락 감지
{
"include_fix_hints": true,
"output": {
"content": "Summary goes here",
"title": "2024 Q4 Report"
},
"schema": {
"properties": {
"author": {
"type": "string"
},
"content": {
"type": "string"
},
"created_at": {
"format": "date-time",
"type": "string"
},
"title": {
"type": "string"
}
},
"required": [
"title",
"content",
"author",
"created_at"
],
"type": "object"
}
}
{
"summary": {
"by_keyword": {
"required": 2
},
"total_violations": 2
},
"valid": false,
"violations": [
{
"constraint": [
"author",
"created_at"
],
"fix_hint": "Add required field: \u0027author\u0027",
"json_pointer": "",
"message": "\u0027author\u0027 is a required property / \ud544\uc218 \uc18d\uc131\uc774 \ub204\ub77d\ub418\uc5c8\uc2b5\ub2c8\ub2e4",
"path": "$",
"schema_keyword": "required",
"value_received": null
},
{
"constraint": [
"author",
"created_at"
],
"fix_hint": "Add required field: \u0027created_at\u0027",
"json_pointer": "",
"message": "\u0027created_at\u0027 is a required property / \ud544\uc218 \uc18d\uc131\uc774 \ub204\ub77d\ub418\uc5c8\uc2b5\ub2c8\ub2e4",
"path": "$",
"schema_keyword": "required",
"value_received": null
}
]
}
Type violation deep inside nested structure / 중첩 구조 내 type 위반, 정확한 JSON Pointer 반환
{
"include_fix_hints": true,
"mode": "strict",
"output": {
"pipeline": {
"steps": [
{
"enabled": true,
"id": 1,
"retries": "three"
},
{
"enabled": "yes",
"id": 2,
"retries": 2
}
]
}
},
"schema": {
"properties": {
"pipeline": {
"properties": {
"steps": {
"items": {
"properties": {
"enabled": {
"type": "boolean"
},
"id": {
"type": "integer"
},
"retries": {
"maximum": 10,
"minimum": 0,
"type": "integer"
}
},
"required": [
"id",
"retries",
"enabled"
],
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
},
"required": [
"pipeline"
],
"type": "object"
}
}
{
"summary": {
"by_keyword": {
"type": 2
},
"total_violations": 2
},
"valid": false,
"violations": [
{
"constraint": "integer",
"fix_hint": "Provide an integer value (e.g. 3)",
"json_pointer": "/pipeline/steps/0/retries",
"message": "\u0027three\u0027 is not of type \u0027integer\u0027 / \uc815\uc218 \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4",
"path": "$.pipeline.steps[0].retries",
"schema_keyword": "type",
"value_received": "three"
},
{
"constraint": "boolean",
"fix_hint": "Use true or false (not a string)",
"json_pointer": "/pipeline/steps/1/enabled",
"message": "\u0027yes\u0027 is not of type \u0027boolean\u0027 / boolean \ud0c0\uc785\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4",
"path": "$.pipeline.steps[1].enabled",
"schema_keyword": "type",
"value_received": "yes"
}
]
}
Korean string enum validation — 한글 열거형 검증
{
"include_fix_hints": true,
"output": {
"\uc0c1\ud0dc": "\uac80\ud1a0\uc911",
"\uc6b0\uc120\uc21c\uc704": "\uae34\uae09",
"\uc81c\ubaa9": "\ubd84\uae30 \ubcf4\uace0\uc11c"
},
"schema": {
"properties": {
"\uc0c1\ud0dc": {
"enum": [
"\ub300\uae30",
"\uc9c4\ud589\uc911",
"\uc644\ub8cc",
"\ucde8\uc18c"
],
"type": "string"
},
"\uc6b0\uc120\uc21c\uc704": {
"enum": [
"\ub0ae\uc74c",
"\ubcf4\ud1b5",
"\ub192\uc74c"
],
"type": "string"
},
"\uc81c\ubaa9": {
"type": "string"
}
},
"required": [
"\uc81c\ubaa9",
"\uc0c1\ud0dc",
"\uc6b0\uc120\uc21c\uc704"
],
"type": "object"
}
}
{
"summary": {
"by_keyword": {
"enum": 2
},
"total_violations": 2
},
"valid": false,
"violations": [
{
"constraint": [
"\ub300\uae30",
"\uc9c4\ud589\uc911",
"\uc644\ub8cc",
"\ucde8\uc18c"
],
"fix_hint": "Change to one of: \u0027\ub300\uae30\u0027, \u0027\uc9c4\ud589\uc911\u0027, \u0027\uc644\ub8cc\u0027, \u0027\ucde8\uc18c\u0027",
"json_pointer": "/\uc0c1\ud0dc",
"message": "\u0027\uac80\ud1a0\uc911\u0027 is not one of [\u0027\ub300\uae30\u0027, \u0027\uc9c4\ud589\uc911\u0027, \u0027\uc644\ub8cc\u0027, \u0027\ucde8\uc18c\u0027] / \ud5c8\uc6a9\ub41c \ud55c\uae00 \uac12\uc774 \uc544\ub2d9\ub2c8\ub2e4",
"path": "$.\uc0c1\ud0dc",
"schema_keyword": "enum",
"value_received": "\uac80\ud1a0\uc911"
},
{
"constraint": [
"\ub0ae\uc74c",
"\ubcf4\ud1b5",
"\ub192\uc74c"
],
"fix_hint": "Change to one of: \u0027\ub0ae\uc74c\u0027, \u0027\ubcf4\ud1b5\u0027, \u0027\ub192\uc74c\u0027",
"json_pointer": "/\uc6b0\uc120\uc21c\uc704",
"message": "\u0027\uae34\uae09\u0027 is not one of [\u0027\ub0ae\uc74c\u0027, \u0027\ubcf4\ud1b5\u0027, \u0027\ub192\uc74c\u0027] / \ud5c8\uc6a9\ub41c \ud55c\uae00 \uac12\uc774 \uc544\ub2d9\ub2c8\ub2e4",
"path": "$.\uc6b0\uc120\uc21c\uc704",
"schema_keyword": "enum",
"value_received": "\uae34\uae09"
}
]
}
Lenient mode ignores additionalProperties violations / lenient 모드에서 additionalProperties 위반 무시
{
"include_fix_hints": false,
"mode": "lenient",
"output": {
"another_extra": 42,
"extra_debug_field": "should be ignored in lenient",
"name": "Claude",
"role": "assistant"
},
"schema": {
"additionalProperties": false,
"properties": {
"name": {
"type": "string"
},
"role": {
"enum": [
"user",
"assistant",
"system"
],
"type": "string"
}
},
"required": [
"name",
"role"
],
"type": "object"
}
}
{
"summary": {
"by_keyword": {},
"total_violations": 0
},
"valid": true,
"violations": []
}
All examples are also available via the agent API:
/v1/agent/skills/d5e0a646-dc52-423a-9ac4-e97609b9e6e5/schema
No reviews yet. Be the first to leave one!