curl -L -o graphql-schema-validator.skill "https://aiskillstore.io/v1/agent/skills/d11ce271-cc4d-47e0-b782-91143655716c/download?platform=ClaudeCode"
{
"tool": "download_skill",
"arguments": {
"skill_id": "d11ce271-cc4d-47e0-b782-91143655716c",
"platform": "ClaudeCode"
}
}
{
"mcpServers": {
"skill-store": {
"url": "https://aiskillstore.io/mcp/"
}
}
}
GraphQL SDL schema and query validation offline. GraphQL 스키마 검증, SDL 유효성 확인. Detects type conflicts, undefined fields, deprecated usage, and query depth violations.
Compatible Platforms any
Findings: ["메타데이터 경고: 권장 필드 없음: 'requirements' (SKILL.md v2 권장)"]
✅ No security risks found.
AI Review Stage
제공된 스킬 메타데이터, 코드 파일, 정적 분석 결과를 종합적으로 검토한 결과, 다음과 같은 판단을 내렸습니다. 1. **선언된 permissions과 실제 코드 일치 여부:** * 메타데이터에서 `network: false`, `filesystem: false`, `subprocess: false`, `env_vars: []`로 선언되어 있습니다. * `main.py` 및 `lib/validator.py` 코드에서 `requests`, `urllib`, `socket` 등 네트워크 통신을 시도하는 모듈이나 함수 호출이 발견되지 않았습니다. * `open()`, `shutil`, `os.remove` 등 파일 시스템에 접근하거나 변경하는 작업이 발견되지 않았습니다. `sys.path.insert` 및 `os.path.dirname`은 스킬 자체의 모듈 로딩을 위한 표준적인 사용으로, 파일 시스템 접근 권한 위반으로 볼 수 없습니다. * `subprocess` 모듈이나 `os.system`과 같은 외부 프로세스 실행 코드가 발견되지 않았습니다. * `os.getenv` 또는 `os.environ`과 같은 환경 변수 접근 코드도 발견되지 않았습니다. * 선언된 권한과 실제 코드의 동작이 완벽하게 일치합니다. 2. **악의적 목적의 코드 여부:** * 코드의 전체적인 로직은 GraphQL SDL 및 쿼리 파싱, 유효성 검사, 깊이 분석 등 스킬의 설명과 일치하는 기능에 집중되어 있습니다. * 데이터 탈취, 시스템 파괴, 난독화 등의 악의적인 목적을 가진 코드는 발견되지 않았습니다. 정적 분석 결과에서도 'red_flags_found' 및 'obfuscation_warnings'가 비어 있습니다. 3. **선언되지 않은 외부 통신 여부:** * `permissions.network: false`로 명시되어 있으며, 코드 분석 결과 어떠한 형태의 외부 통신도 시도하지 않습니다. 핵심 로직에 사용된 `graphql-core` 라이브러리 또한 오프라인 검증을 위해 설계되었습니다. 4. **사용자 데이터 무단 수집/전송 여부:** * 스킬은 `stdin`을 통해 입력을 받고 `stdout`으로 결과를 출력하는 `stdin_stdout` 패턴을 따릅니다. 입력된 GraphQL 스키마 및 쿼리 데이터는 검증 목적으로만 사용되며, 외부로 전송되거나 무단으로 저장되는 어떠한 메커니즘도 코드에서 발견되지 않았습니다. 5. **코드 품질 및 목적 일치 여부:** * 코드는 명확하고 가독성이 높으며, 스킬의 목적(GraphQL 스키마 및 쿼리 유효성 검사)에 충실하게 작성되었습니다. * 적절한 예외 처리와 입력 유효성 검사가 구현되어 있어 안정적으로 동작할 것으로 예상됩니다. 결론적으로, 이 스킬은 선언된 보안 정책을 준수하며, 악의적인 동작이나 의도치 않은 부작용 없이 안전하게 작동할 것으로 판단됩니다.
Representative input/output examples for this skill. Agents can use these to understand how to invoke the skill and what output to expect.
Parse and validate a GraphQL SDL with Query type and custom types — returns valid=true and schema summary
{
"operation": "validate_schema",
"schema_sdl": "type Query {\n user(id: ID!): User\n users: [User!]!\n}\n\ntype User {\n id: ID!\n name: String!\n email: String\n}"
}
{
"errors": [],
"operation": "validate_schema",
"schema_summary": {
"has_deprecated": false,
"mutation_fields": [],
"query_fields": [
"user",
"users"
],
"subscription_fields": [],
"type_count": 2
},
"valid": true,
"warnings": []
}
An SDL where a type declares it implements an interface but is missing required fields — returns type errors
{
"operation": "validate_schema",
"schema_sdl": "interface Node {\n id: ID!\n}\n\ntype Product implements Node {\n name: String!\n}\n\ntype Query {\n product: Product\n}"
}
{
"errors": [
{
"locations": [],
"message": "Interface field \u0027Node.id\u0027 expected but \u0027Product\u0027 does not provide it.",
"type": "TYPE_ERROR"
}
],
"operation": "validate_schema",
"valid": false,
"warnings": []
}
Check that a query references only existing fields in the schema — returns query errors for unknown fields
{
"operation": "validate_query",
"query": "query GetUser {\n user(id: \"1\") {\n id\n name\n nonExistentField\n }\n}",
"schema_sdl": "type Query {\n user(id: ID!): User\n}\n\ntype User {\n id: ID!\n name: String!\n}"
}
{
"depth_check": {
"actual_depth": 2,
"depth_ok": true,
"max_depth_allowed": 10
},
"errors": [
{
"locations": [
{
"column": 5,
"line": 4
}
],
"message": "Cannot query field \u0027nonExistentField\u0027 on type \u0027User\u0027.",
"type": "QUERY_ERROR"
}
],
"operation": "validate_query",
"valid": false,
"warnings": []
}
Analyze a schema to get type counts, query/mutation field names without full validation
{
"operation": "analyze_schema",
"schema_sdl": "type Query {\n products: [Product!]!\n product(id: ID!): Product\n}\n\ntype Mutation {\n createProduct(name: String!): Product\n}\n\ntype Product {\n id: ID!\n name: String!\n price: Float!\n}"
}
{
"errors": [],
"operation": "analyze_schema",
"schema_summary": {
"has_deprecated": false,
"mutation_fields": [
"createProduct"
],
"query_fields": [
"products",
"product"
],
"subscription_fields": [],
"type_count": 3
},
"valid": true,
"warnings": []
}
Find query operations that use fields marked as deprecated in the schema
{
"operation": "check_deprecated",
"query": "query GetUser {\n user {\n id\n legacyId\n }\n}",
"schema_sdl": "type Query {\n user: User\n}\n\ntype User {\n id: ID!\n name: String!\n legacyId: String @deprecated(reason: \"Use id instead\")\n}"
}
{
"errors": [],
"operation": "check_deprecated",
"valid": true,
"warnings": [
"Field \u0027User.legacyId\u0027 is deprecated: Use id instead"
]
}
A deeply nested query that exceeds max_depth=2 returns a depth error
{
"max_depth": 2,
"operation": "validate_query",
"query": "query Deep {\n post {\n author {\n posts {\n author {\n name\n }\n }\n }\n }\n}",
"schema_sdl": "type Query {\n post: Post\n}\n\ntype Post {\n title: String\n author: Author\n}\n\ntype Author {\n name: String\n posts: [Post]\n}"
}
{
"depth_check": {
"actual_depth": 4,
"depth_ok": false,
"max_depth_allowed": 2
},
"errors": [
{
"locations": [],
"message": "Query depth 4 exceeds maximum allowed depth of 2.",
"type": "DEPTH_ERROR"
}
],
"operation": "validate_query",
"valid": false,
"warnings": []
}
All examples are also available via the agent API:
/v1/agent/skills/d11ce271-cc4d-47e0-b782-91143655716c/schema
No reviews yet. Be the first to leave one!