← Back to Skills

output-schema-enforcer

v1.0.0 approved AI/ML ⬇ 1 updated today
USK v3 ✅ Verified ⚡ Auto-Convert
⬇ Download
Install Guide↓
🤖 Agent install commands (curl / MCP / Claude Desktop)
▸ curl one-liner
curl -L -o output-schema-enforcer.skill   "https://aiskillstore.io/v1/agent/skills/d5e0a646-dc52-423a-9ac4-e97609b9e6e5/download?platform=ClaudeCode"
▸ MCP tool call (after registering Skill Store MCP)
{
  "tool": "download_skill",
  "arguments": {
    "skill_id": "d5e0a646-dc52-423a-9ac4-e97609b9e6e5",
    "platform": "ClaudeCode"
  }
}
▸ Claude Desktop / Cursor MCP config (one-time)
{
  "mcpServers": {
    "skill-store": {
      "url": "https://aiskillstore.io/mcp/"
    }
  }
}
📖 Full agent API guide: /llms.txt  ·  MCP server card

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.

# json # schema # validation # llm # output-validation # json-pointer # self-correction # korean

Basic Info

Owner 👤 aiskillstore-team Category AI/ML Registered 2026-06-04 Last Updated 2026-06-04 Latest Version 1.0.0 Packaged At 2026-06-04 Vetting Status approved Downloads 1 Checksum (SHA256) ffd0a6a9be03acd3d3c383dcdadadf3449f98dbddbeaa95a148ab071f2f518f0

⚡ AGENT INFO USK v3

Capabilities
json_schema_validation llm_output_check self_correction_anchor json_pointer structured_output
Permissions
✗ network
✗ filesystem
✗ subprocess
Interface
type: cli   entry_point: main.py   runtime: python3   call_pattern: stdin_stdout
Agent API
# 스킬 스키마 조회 (에이전트가 호출 방법을 파악) GET /v1/agent/skills/d5e0a646-dc52-423a-9ac4-e97609b9e6e5/schema # 플랫폼별 자동 변환 다운로드 GET /v1/agent/skills/d5e0a646-dc52-423a-9ac4-e97609b9e6e5/download?platform=OpenClaw GET /v1/agent/skills/d5e0a646-dc52-423a-9ac4-e97609b9e6e5/download?platform=ClaudeCode GET /v1/agent/skills/d5e0a646-dc52-423a-9ac4-e97609b9e6e5/download?platform=ClaudeCodeAgentSkill GET /v1/agent/skills/d5e0a646-dc52-423a-9ac4-e97609b9e6e5/download?platform=Cursor GET /v1/agent/skills/d5e0a646-dc52-423a-9ac4-e97609b9e6e5/download?platform=GeminiCLI GET /v1/agent/skills/d5e0a646-dc52-423a-9ac4-e97609b9e6e5/download?platform=CodexCLI GET /v1/agent/skills/d5e0a646-dc52-423a-9ac4-e97609b9e6e5/download?platform=CustomAgent

Installation

Compatible Platforms any

1
Install the skill using openclaw_skill_manager.py.
python openclaw_skill_manager.py --install output-schema-enforcer
2
Verify installation
python openclaw_skill_manager.py --list-installed
3
Install a specific version (optional)
python openclaw_skill_manager.py --install output-schema-enforcer --version 1.0.0
1
Download the skill package.
curl -O https://aiskillstore.io/v1/skills/d5e0a646-dc52-423a-9ac4-e97609b9e6e5/download
2
Place it in the Claude Code commands directory.
unzip output-schema-enforcer.skill -d ~/.claude/commands/output-schema-enforcer/
3
Use it as a slash command in Claude Code.
/output-schema-enforcer
1
Download the Agent Skills package.
curl -O https://aiskillstore.io/v1/agent/skills/d5e0a646-dc52-423a-9ac4-e97609b9e6e5/download?platform=ClaudeCodeAgentSkill
2
Unzip it into the Claude Code skills directory.
unzip output-schema-enforcer-agent-skill-*.skill -d ~/.claude/skills/output-schema-enforcer/
3
Restart Claude Code — the skill is auto-loaded at session start. No slash command needed.
1
Download the Cursor-converted package.
curl -O https://aiskillstore.io/v1/agent/skills/d5e0a646-dc52-423a-9ac4-e97609b9e6e5/download?platform=Cursor
2
Unzip and place it in a permanent location.
unzip output-schema-enforcer-cursor-*.skill -d ~/.cursor/skills/output-schema-enforcer/
3
Add the MCP server config to .cursor/mcp.json, then restart Cursor.
cat ~/.cursor/skills/output-schema-enforcer/cursor_mcp_config.json
1
Download the Gemini CLI-converted package.
curl -O https://aiskillstore.io/v1/agent/skills/d5e0a646-dc52-423a-9ac4-e97609b9e6e5/download?platform=GeminiCLI
2
Unzip and place it in a permanent location.
unzip output-schema-enforcer-geminicli-*.skill -d ~/.gemini/skills/output-schema-enforcer/
3
Add the MCP server config to ~/.gemini/settings.json, then restart Gemini CLI.
cat ~/.gemini/skills/output-schema-enforcer/gemini_settings_snippet.json
1
Download the Codex CLI-converted package.
curl -O https://aiskillstore.io/v1/agent/skills/d5e0a646-dc52-423a-9ac4-e97609b9e6e5/download?platform=CodexCLI
2
Unzip and place it in a permanent location.
unzip output-schema-enforcer-codexcli-*.skill -d ~/.codex/skills/output-schema-enforcer/
3
Add the MCP server config to ~/.codex/config.toml, then restart Codex CLI.
cat ~/.codex/skills/output-schema-enforcer/codex_config_snippet.toml
1
Download the skill package via REST API.
GET https://aiskillstore.io/v1/skills/d5e0a646-dc52-423a-9ac4-e97609b9e6e5/download
2
Place it in your agent platform's skills directory.
cp output-schema-enforcer.skill ./skills/
3
Fetch platform-specific details via the Install Guide API.
GET https://aiskillstore.io/v1/skills/d5e0a646-dc52-423a-9ac4-e97609b9e6e5/install-guide?platform=CustomAgent

Security Vetting Report

Vetting Result APPROVED

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

✅ No security risks found.

AI Review Stage

Reviewer gemini Risk Level 🟢 Low Review Summary LLM 출력의 JSON 스키마 유효성 검사를 수행하는 안전하고 잘 정의된 스킬입니다.
Reasoning

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**: 제공된 코드 스니펫은 명확하고 구조화되어 있으며, 오류 처리 및 경로 변환 유틸리티가 잘 구현되어 있습니다. 스킬의 설명 및 예시와 일치하는 고품질의 코드로 판단됩니다. 종합적으로, 이 스킬은 보안 위험이 매우 낮으며, 선언된 기능과 보안 정책을 충실히 따르고 있습니다.

Version History

Version USK v3 Vetting Status Packaged At Downloads Changelog
v1.0.0 approved 2026-06-04 ⬇ 1

Examples 6

Representative input/output examples for this skill. Agents can use these to understand how to invoke the skill and what output to expect.

valid_output
# validate# success# strict

Simple valid LLM output — valid=true returned / 유효한 LLM 출력 검증 성공

📥 Input
{
  "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"
  }
}
📤 Output
{
  "summary": {
    "by_keyword": {},
    "total_violations": 0
  },
  "valid": true,
  "violations": []
}
enum_violation_with_fix_hint
# enum# nested-array# json-pointer# fix-hint

Enum violation in nested array element — JSON Pointer path returned / 중첩 배열 enum 위반, fix_hint 포함

📥 Input
{
  "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"
  }
}
📤 Output
{
  "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
# required# missing-field# fix-hint

Required field missing from LLM output / 필수 필드 누락 감지

📥 Input
{
  "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"
  }
}
📤 Output
{
  "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
    }
  ]
}
nested_type_violation
# type# nested# json-pointer# pipeline

Type violation deep inside nested structure / 중첩 구조 내 type 위반, 정확한 JSON Pointer 반환

📥 Input
{
  "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"
  }
}
📤 Output
{
  "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_enum_validation
# korean# enum# hangul# i18n

Korean string enum validation — 한글 열거형 검증

📥 Input
{
  "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"
  }
}
📤 Output
{
  "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_additional_properties
# lenient# additionalProperties# mode

Lenient mode ignores additionalProperties violations / lenient 모드에서 additionalProperties 위반 무시

📥 Input
{
  "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"
  }
}
📤 Output
{
  "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

Reviews & Ratings

No reviews yet. Be the first to leave one!

✍️ Write a Review