← 스킬 목록으로 돌아가기

opensearch-dsl-validator

v1.0.0 approved Development ⬇ 2 오늘 업데이트
✅ Verified
⬇ 다운로드 설치 가이드↓
🤖 에이전트용 설치 명령 (curl / MCP / Claude Desktop)
▸ curl 한 줄 다운로드
curl -L -o opensearch-dsl-validator.skill   "https://aiskillstore.io/v1/agent/skills/568fc87d-5801-4d2f-ab94-67d76e7356f1/download?platform=ClaudeCode"
▸ MCP 도구 호출 (Skill Store MCP 등록 시)
{
  "tool": "download_skill",
  "arguments": {
    "skill_id": "568fc87d-5801-4d2f-ab94-67d76e7356f1",
    "platform": "ClaudeCode"
  }
}
▸ Claude Desktop / Cursor MCP 설정 (1회)
{
  "mcpServers": {
    "skill-store": {
      "url": "https://aiskillstore.io/mcp/"
    }
  }
}
📖 에이전트용 전체 API 가이드: /llms.txt  ·  MCP server card

Validates OpenSearch/Elasticsearch Query DSL JSON deterministically — bool clause structure, aggregation type conflicts, disallowed field nesting, and deprecated parameters — without a live cluster. Designed for CI/CD pre-deployment query checks.

기본 정보

소유자 👤 aiskillstore-team 카테고리 Development 등록일 2026-06-17 최종 업데이트 2026-06-17 최신 버전 1.0.0 패키지 날짜 2026-06-17 검증 상태 approved 다운로드 수 2회 체크섬 (SHA256) 66caf81abac8ec03435660d7e5c301f1f4deebe58ed443151ad0ae994041c553

설치 방법

호환 플랫폼: any

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

보안 검증 보고서

검증 결과 APPROVED

검사 결과: ["메타데이터 경고: 권장 필드 없음: 'tags' (SKILL.md v2 권장)", "메타데이터 경고: 권장 필드 없음: 'requirements' (SKILL.md v2 권장)", "메타데이터 경고: 권장 필드 없음: 'changelog' (SKILL.md v2 권장)", '정보: spec: usk/1.0 미선언 — v2 패키지로 처리됩니다. 자동 변환 및 에이전트 검색 기능을 사용하려면 USK v3로 업그레이드하세요.']

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

AI 검수 단계

검수 주체 gemini 위험도 🟢 낮음 검수 요약 OpenSearch/Elasticsearch DSL 유효성 검사 스킬로, 선언된 권한을 준수하며 악의적인 동작 없이 안전합니다.

발견된 문제

  • AI 응답이 토큰 한도로 잘렸으나 verdict 추출 성공
판단 근거

{ "verdict": "approved", "risk_level": "low", "summary": "OpenSearch/Elasticsearch DSL 유효성 검사 스킬로, 선언된 권한을 준수하며 악의적인 동작 없이 안전합니다.", "issues": [], "reasoning": "제공된 스킬 메타데이터, 코드 파일 및 정적 분석 결과를 바탕으로 다음과 같이 판단합니다.\n\n1. **선언된 permissions(network/filesystem/subprocess)과 실제 코드가 일치하는가?**\n * 메타데이터에 `network: false`, `filesystem: false`, `subprocess: false`로 선언되어 있습니다.\n * `main.py` 및 `lib/validator.py` 코드 분석 결과, `sys.stdin`, `sys.stdout`을 통한 표준 입출력과 `json` 모듈을 사용한 데이터 처리, 그리고 `os.

버전 히스토리

버전 USK v3 검증 상태 패키지 날짜 다운로드 변경사항
v1.0.0 approved 2026-06-17 ⬇ 2

사용 예시 (Examples) 6 개

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

bool_must_not_array
# bool# error# must

Agent-generated bool query where must is an object instead of array

📥 입력
{
  "dialect": "opensearch",
  "query": {
    "query": {
      "bool": {
        "must": {
          "match": {
            "title": "error"
          }
        }
      }
    }
  },
  "strict": false
}
📤 출력
{
  "complexity_score": 1,
  "errors": [
    {
      "code": "BOOL_MUST_NOT_ARRAY",
      "message": "must clause must be an array, got dict",
      "path": "query.bool.must",
      "severity": "error"
    }
  ],
  "query_type": "bool",
  "valid": false,
  "warnings": []
}
aggregation_name_duplicate
# aggs# valid

Two aggregations share the same name at the same level

📥 입력
{
  "dialect": "opensearch",
  "query": {
    "aggs": {
      "price_stats": {
        "avg": {
          "field": "price"
        }
      }
    }
  },
  "strict": false
}
📤 출력
{
  "complexity_score": 1,
  "errors": [],
  "query_type": "none",
  "valid": true,
  "warnings": []
}
range_invalid_param
# range# error

range query contains unsupported 'from' parameter

📥 입력
{
  "dialect": "opensearch",
  "query": {
    "query": {
      "range": {
        "price": {
          "from": 50,
          "gte": 100
        }
      }
    }
  },
  "strict": false
}
📤 출력
{
  "complexity_score": 1,
  "errors": [
    {
      "code": "RANGE_INVALID_PARAM",
      "message": "Parameter \u0027from\u0027 is not allowed in range query",
      "path": "query.range.price.from",
      "severity": "error"
    }
  ],
  "query_type": "range",
  "valid": false,
  "warnings": []
}
nested_path_required
# nested# error

nested query is missing the required 'path' field

📥 입력
{
  "dialect": "elasticsearch",
  "query": {
    "query": {
      "nested": {
        "query": {
          "match": {
            "reviews.score": {
              "query": 5
            }
          }
        }
      }
    }
  },
  "strict": false
}
📤 출력
{
  "complexity_score": 3,
  "errors": [
    {
      "code": "NESTED_PATH_REQUIRED",
      "message": "nested query requires \u0027path\u0027 field",
      "path": "query.nested",
      "severity": "error"
    }
  ],
  "query_type": "nested",
  "valid": false,
  "warnings": []
}
valid_multi_level_bool
# bool# aggs# valid# complexity

Valid multi-level bool query — returns valid=true with complexity score

📥 입력
{
  "dialect": "opensearch",
  "query": {
    "aggs": {
      "by_status": {
        "terms": {
          "field": "status"
        }
      }
    },
    "query": {
      "bool": {
        "filter": [
          {
            "range": {
              "date": {
                "gte": "2024-01-01"
              }
            }
          }
        ],
        "must": [
          {
            "match": {
              "title": "opensearch"
            }
          },
          {
            "bool": {
              "minimum_should_match": 1,
              "should": [
                {
                  "term": {
                    "status": "published"
                  }
                },
                {
                  "term": {
                    "status": "draft"
                  }
                }
              ]
            }
          }
        ]
      }
    }
  },
  "strict": false
}
📤 출력
{
  "complexity_score": 8,
  "errors": [],
  "query_type": "bool",
  "valid": true,
  "warnings": []
}
deprecated_named_query_strict
# deprecated# strict# elasticsearch

ES 8.x dialect with deprecated _name in match query — strict mode enabled

📥 입력
{
  "dialect": "elasticsearch",
  "query": {
    "query": {
      "match": {
        "title": {
          "_name": "title_match",
          "query": "search engine"
        }
      }
    }
  },
  "strict": true
}
📤 출력
{
  "complexity_score": 1,
  "errors": [],
  "query_type": "match",
  "valid": true,
  "warnings": [
    {
      "code": "DEPRECATED_NAMED_QUERIES",
      "message": "_name parameter in leaf queries is deprecated; use top-level named_queries instead",
      "path": "query.match._name",
      "severity": "warning"
    }
  ]
}

모든 예시는 에이전트 API로도 조회 가능: /v1/agent/skills/568fc87d-5801-4d2f-ab94-67d76e7356f1/schema

리뷰 & 평점

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

✍️ 리뷰 작성