Initial commit to new repository
This commit is contained in:
107
dist/AxCopilot/skills/json-schema.skill.md
vendored
Normal file
107
dist/AxCopilot/skills/json-schema.skill.md
vendored
Normal file
@@ -0,0 +1,107 @@
|
||||
---
|
||||
name: json-schema
|
||||
label: JSON/YAML 스키마 도구
|
||||
description: JSON 또는 YAML 데이터에서 스키마를 생성하고, 데이터의 유효성을 검증합니다.
|
||||
icon: \uE943
|
||||
tabs: code
|
||||
allowed-tools:
|
||||
- json_tool
|
||||
- file_read
|
||||
- file_write
|
||||
- clipboard_tool
|
||||
---
|
||||
|
||||
JSON/YAML 샘플 데이터에서 스키마를 추출하거나, 기존 스키마로 데이터를 검증하세요.
|
||||
|
||||
## 작업 절차
|
||||
|
||||
1. **요청 유형 판별**:
|
||||
- **스키마 생성**: 샘플 JSON/YAML → JSON Schema 추출
|
||||
- **스키마 검증**: 데이터 + 스키마 → 유효성 검사
|
||||
- **스키마 문서화**: 기존 스키마 → 사람이 읽을 수 있는 설명 생성
|
||||
2. **입력 데이터 확인**: file_read 또는 사용자 입력으로 데이터 로드
|
||||
3. **스키마 생성 또는 검증 수행**: json_tool로 처리
|
||||
4. **결과 출력**: 생성된 스키마 또는 검증 결과를 표시
|
||||
5. **파일 저장**: file_write로 결과를 저장하거나 clipboard_tool로 복사
|
||||
|
||||
## 스키마 생성 규칙
|
||||
|
||||
### 타입 추론
|
||||
| JSON 값 | JSON Schema 타입 | 추가 속성 |
|
||||
|---------|-----------------|----------|
|
||||
| `"text"` | `string` | — |
|
||||
| `123` | `integer` | — |
|
||||
| `1.5` | `number` | — |
|
||||
| `true` | `boolean` | — |
|
||||
| `null` | `null` | nullable 처리 |
|
||||
| `[]` | `array` | items 스키마 |
|
||||
| `{}` | `object` | properties 스키마 |
|
||||
|
||||
### 추론 강화
|
||||
- **패턴 감지**: 이메일, URL, 날짜, UUID 등은 `format` 속성 추가
|
||||
- **열거형 감지**: 값의 종류가 적으면 `enum` 으로 제안
|
||||
- **필수 필드**: 모든 샘플에 존재하는 필드는 `required`로 표시
|
||||
- **배열 항목**: 배열 내 모든 항목을 분석하여 통합 스키마 생성
|
||||
|
||||
### 출력 형식 (JSON Schema Draft 7)
|
||||
```json
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"title": "사용자 정보",
|
||||
"description": "사용자 프로필 데이터 스키마",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "사용자 이름"
|
||||
},
|
||||
"email": {
|
||||
"type": "string",
|
||||
"format": "email",
|
||||
"description": "이메일 주소"
|
||||
},
|
||||
"age": {
|
||||
"type": "integer",
|
||||
"minimum": 0,
|
||||
"maximum": 150,
|
||||
"description": "나이"
|
||||
}
|
||||
},
|
||||
"required": ["name", "email"],
|
||||
"additionalProperties": false
|
||||
}
|
||||
```
|
||||
|
||||
## 검증 결과 형식
|
||||
검증 결과는 다음과 같이 표시하세요:
|
||||
```
|
||||
검증 결과: ❌ 실패 (3건의 오류)
|
||||
|
||||
| # | 경로 | 오류 | 기대값 |
|
||||
|---|------|------|--------|
|
||||
| 1 | $.email | 필수 필드 누락 | string (required) |
|
||||
| 2 | $.age | 타입 불일치 | integer (실제: string) |
|
||||
| 3 | $.tags[2] | 열거형 불일치 | "A", "B", "C" 중 하나 |
|
||||
```
|
||||
|
||||
## 스키마 문서화 형식
|
||||
기존 스키마를 분석하여 사람이 읽기 쉬운 문서를 생성:
|
||||
```
|
||||
## 사용자 정보 스키마
|
||||
|
||||
| 필드 | 타입 | 필수 | 설명 | 제약 조건 |
|
||||
|------|------|------|------|----------|
|
||||
| name | string | ✅ | 사용자 이름 | — |
|
||||
| email | string | ✅ | 이메일 주소 | format: email |
|
||||
| age | integer | — | 나이 | 0~150 |
|
||||
| tags | array | — | 태그 목록 | items: string |
|
||||
```
|
||||
|
||||
## 규칙
|
||||
- JSON Schema Draft 7 형식 사용
|
||||
- 스키마 생성 시 description 필드를 한국어로 작성
|
||||
- 복수 샘플이 제공되면 모든 샘플을 분석하여 통합 스키마 생성
|
||||
- 중첩 객체는 재귀적으로 스키마 추출
|
||||
- 결과는 파일 저장과 클립보드 복사 모두 제공
|
||||
|
||||
한국어로 안내하세요.
|
||||
Reference in New Issue
Block a user