К основному содержанию
скилл CX Codex

json-data-handling — скилл для Claude Code: функции и установка

Скилл обучает ИИ-агента безопасной работе с JSON в Python и JavaScript: сериализации дат, обходу циклических ссылок, валидации схем и потоковому чтению больших файлов.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add bobmatnyc/claude-mpm-skills --skill json-data-handling -a claude-code
Открыть на GitHub

Что делает json-data-handling

Скилл задаёт шаблоны обработки структур JSON в Python и JavaScript. Для Python он даёт решения по сериализации datetime через кастомный JSONEncoder, безопасному доступу к вложенным полям get_nested, трансформации ключей из snake_case в camelCase и глубокому объединению словарей. В блоке JavaScript добавлены фильтрация свойств, сериализация BigInt и предотвращение зацикливания через WeakSet.

Для валидации сложных структур используется библиотека jsonschema. Обработка больших файлов вынесена в потоковое чтение через пакет ijson, чтобы агент не пытался выгружать гигабайтные дампы в оперативную память целиком.

Для потокового парсинга в окружении Python потребуется заранее поставить ijson, иначе скрипты упадут с ошибкой импорта.

Какие задачи решает

  • Сериализовать объекты datetime в формат ISO без ошибок стандартного json.dumps
  • Предотвратить падение JSON.stringify из-за циклических ссылок в JavaScript
  • Прочитать объёмный JSON-файл через потоковый генератор без перегрузки памяти
  • Безопасно извлечь значение из глубоко вложенной структуры данных по цепочке ключей

Примеры запросов агенту

  • Напиши функцию на Python для потокового разбора large_data.json через ijson
  • Сделай сериализацию объекта в JavaScript с обработкой полей BigInt и защитой от циклических ссылок
  • Сконвертируй все ключи входного словаря из snake_case в camelCase перед отправкой в API

Как установить json-data-handling

1Через Skills CLI (Vercel)

npx skills add bobmatnyc/claude-mpm-skills --skill json-data-handling -a claude-code

2Вручную: положить файлы

~/.claude/skills/json-data-handling/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/json-data-handling/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о json-data-handling

Как установить json-data-handling в Claude Code?

Выполните в терминале команду npx skills add bobmatnyc/claude-mpm-skills --skill json-data-handling -a claude-code. Также файл инструкции можно сохранить вручную по пути ~/.claude/skills/json-data-handling/SKILL.md.

Что делает скилл json-data-handling?

Он предоставляет агенту готовые паттерны работы с JSON: безопасный парсинг, кастомные сериализаторы для дат и BigInt, рекурсивное слияние словарей и проверку по схеме.

Какие внешние библиотеки нужны для работы примеров?

В Python для проверки структуры данных используется jsonschema, а для потоковой обработки тяжёлых файлов необходим пакет ijson.

Исходный текст

SKILL.md · MIT
---
name: json-data-handling
description: Working effectively with JSON data structures.
user-invocable: false
disable-model-invocation: true
updated_at: 2025-10-30T17:00:00Z
tags: [json, data, parsing, serialization]
progressive_disclosure:
  entry_point:
    summary: "Working effectively with JSON data structures."
    when_to_use: "When working with data, databases, or data transformations."
    quick_start: "1. Review the core concepts below. 2. Apply patterns to your use case. 3. Follow best practices for implementation."
---
# JSON Data Handling

Working effectively with JSON data structures.

## Python

### Basic Operations

```python
import json

# Parse JSON string
data = json.loads('{"name": "John", "age": 30}')

# Convert to JSON string
json_str = json.dumps(data)

# Pretty print
json_str = json.dumps(data, indent=2)

# Read from file
with open('data.json', 'r') as f:
    data = json.load(f)

# Write to file
with open('output.json', 'w') as f:
    json.dump(data, f, indent=2)
```

### Advanced

```python
# Custom encoder for datetime
from datetime import datetime

class DateTimeEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, datetime):
            return obj.isoformat()
        return super().default(obj)

json_str = json.dumps({'date': datetime.now()}, cls=DateTimeEncoder)

# Handle None values
json.dumps(data, skipkeys=True)

# Sort keys
json.dumps(data, sort_keys=True)
```

## JavaScript

### Basic Operations

```javascript
// Parse JSON string
const data = JSON.parse('{"name": "John", "age": 30}');

// Convert to JSON string
const jsonStr = JSON.stringify(data);

// Pretty print
const jsonStr = JSON.stringify(data, null, 2);

// Read from file (Node.js)
const fs = require('fs');
const data = JSON.parse(fs.readFileSync('data.json', 'utf8'));

// Write to file
fs.writeFileSync('output.json', JSON.stringify(data, null, 2));
```

### Advanced

```javascript
// Custom replacer
const jsonStr = JSON.stringify(data, (key, value) => {
  if (typeof value === 'bigint') {
    return value.toString();
  }
  return value;
});

// Filter properties
const filtered = JSON.stringify(data, ['name', 'age']);

// Handle circular references
const getCircularReplacer = () => {
  const seen = new WeakSet();
  return (key, value) => {
    if (typeof value === 'object' && value !== null) {
      if (seen.has(value)) return;
      seen.add(value);
    }
    return value;
  };
};
JSON.stringify(circularObj, getCircularReplacer());
```

## Common Patterns

### Validation

```python
from jsonschema import validate

schema = {
    "type": "object",
    "properties": {
        "name": {"type": "string"},
        "age": {"type": "number", "minimum": 0}
    },
    "required": ["name", "age"]
}

# Validate
validate(instance=data, schema=schema)
```

### Deep Merge

```python
def deep_merge(dict1, dict2):
    result = dict1.copy()
    for key, value in dict2.items():
        if key in result and isinstance(result[key], dict) and isinstance(value, dict):
            result[key] = deep_merge(result[key], value)
        else:
            result[key] = value
    return result
```

### Nested Access

```python
# Safe nested access
def get_nested(data, *keys, default=None):
    for key in keys:
        try:
            data = data[key]
        except (KeyError, TypeError, IndexError):
            return default
    return data

# Usage
value = get_nested(data, 'user', 'address', 'city', default='Unknown')
```

### Transform Keys

```python
# Convert snake_case to camelCase
def to_camel_case(snake_str):
    components = snake_str.split('_')
    return components[0] + ''.join(x.title() for x in components[1:])

def transform_keys(obj):
    if isinstance(obj, dict):
        return {to_camel_case(k): transform_keys(v) for k, v in obj.items()}
    elif isinstance(obj, list):
        return [transform_keys(item) for item in obj]
    return obj
```

## Best Practices

### ✅ DO

```python
# Use context managers for files
with open('data.json', 'r') as f:
    data = json.load(f)

# Handle exceptions
try:
    data = json.loads(json_str)
except json.JSONDecodeError as e:
    print(f"Invalid JSON: {e}")

# Validate structure
assert 'required_field' in data
```

### ❌ DON'T

```python
# Don't parse untrusted JSON without validation
data = json.loads(user_input)  # Validate first!

# Don't load huge files at once
# Use streaming for large files

# Don't use eval() as alternative to json.loads()
data = eval(json_str)  # NEVER DO THIS!
```

## Streaming Large JSON

```python
import ijson

# Stream large JSON file
with open('large_data.json', 'rb') as f:
    objects = ijson.items(f, 'item')
    for obj in objects:
        process(obj)
```

## Remember
- Always validate JSON structure
- Handle parse errors gracefully
- Use schemas for complex structures
- Stream large JSON files
- Pretty print for debugging

© bobmatnyc · MIT · bobmatnyc/claude-mpm-skills

Похожие скиллы

Все скиллы по теме «Данные и базы» →
xlsx официальный anthropics Работает с табличными файлами: создаёт, читает, правит и преобразует книги. Подходит, когда итогом должен стать файл Excel или другой табличный формат. 187 223установок google-agents-cli-observability официальный Google Помогает настроить трассировку и сбор данных о работе ИИ-агентов, включая агентов на ADK. Пригодится, когда нужно разбирать выполнение запросов или наблюдать за агентом после развёртывания. CX Codex +1 511 300установок caveman-evidence-review JuliusBrussee Скилл читает данные Caveman Cloud о расходах LLM, трассах и маршрутизации. Подходит для проверки того, куда уходит бюджет проекта. CX Codex +1 104 500установок migration JuliusBrussee Скилл задаёт правила безопасных миграций схем, данных и API с обязательным откатом. Пригодится при изменениях, где нельзя терять данные или ломать совместимость. CX Codex +1 103 900установок performance-optimization addyosmani Скилл для агентов ИИ-кодинга: сначала замеряет, потом чинит узкое место — от Core Web Vitals до N+1 запросов и индексов в базе. CX Codex +1 65 200установок supabase официальный supabase Скилл помогает настраивать базу данных, аутентификацию и RLS в Supabase без скрытых дыр в безопасности. CX Codex GP ChatGPT 8установок

Из того же набора125

verification-before-completion Скилл запрещает агенту объявлять задачу завершённой без свежего прогона тестов и проверочных команд. Пригодится перед коммитами, созданием PR и закрытием тикетов. CX Codex +1 392установок test-driven-development Набор правил TDD для ИИ-агентов: задаёт цикл Red-Green-Refactor, структуру тестов AAA, шаблоны именования и целевые метрики покрытия кода. CX Codex +1 391установок better-auth-authentication Скилл для TypeScript-приложений: помогает настроить вход по email и паролю, социальные провайдеры и проверку почты. CX Codex +1 389установок kysely Скилл по Kysely: типы от схемы до результата запроса, миграции и транзакции. Пригодится, когда ORM уже мешает, а сырой SQL без типов надоел. CX Codex +1 389установок kubernetes Плейбук по работе с Kubernetes: подсказывает, как безопасно выкатывать сервисы, ставить пробы и разбирать сбои через kubectl. CX Codex +1 383установок systematic-debugging Скилл ведёт агента от воспроизведения ошибки до проверки исправления. Пригодится, когда причина сбоя или неожиданного поведения неясна. CX Codex +1 382установок vue Скилл по Vue 3 для ИИ-агента: Composition API, реактивность, однофайловые компоненты, Vue Router, Pinia, TypeScript и Vite. Пригодится, когда агент пишет фронтенд на Vue. CX Codex +1 381установок screenshot Скилл помогает проверять изменения интерфейса по скриншотам на desktop, tablet и mobile. Пригодится для UI-проверок и pull request. CX Codex +1 380установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой