APM

>Agent Skill

@aiskillstore/json-validator

skilldevelopment

Validate, format, and fix JSON data. Use this skill when working with JSON files, API responses, or configuration files that need validation or formatting.

apm::install
$apm install @aiskillstore/json-validator
apm::skill.md
---
name: json-validator
description: Validate, format, and fix JSON data. Use this skill when working with JSON files, API responses, or configuration files that need validation or formatting.
---

# JSON Validator

Validate, format, and fix JSON data with helpful error messages and suggestions.

## When to Use This Skill

Use this skill when you need to:
- Validate JSON syntax and structure
- Format/prettify JSON data
- Fix common JSON errors
- Convert between JSON and other formats
- Analyze JSON structure

## Validation

When validating JSON:

1. **Check syntax**: Identify syntax errors with line numbers
2. **Provide context**: Show the problematic section
3. **Suggest fixes**: Offer specific corrections
4. **Explain issues**: Describe what's wrong and why

### Common JSON Errors to Check

- Missing or extra commas
- Unclosed brackets/braces
- Unquoted keys
- Trailing commas (invalid in strict JSON)
- Single quotes instead of double quotes
- Comments (not allowed in JSON)
- Undefined/NaN/Infinity values

### Example Validation Output

```
❌ JSON Validation Failed

Line 5: Trailing comma after last object property
  "name": "example",
  "value": 123,  ← Remove this comma
}

✅ Suggested fix:
{
  "name": "example",
  "value": 123
}
```

## Formatting

When formatting JSON:

1. **Use 2-space indentation** (standard)
2. **Sort keys alphabetically** (optional, ask user)
3. **Remove unnecessary whitespace**
4. **Ensure consistent structure**

### Example

**Input (minified):**
```json
{"name":"test","items":[1,2,3],"active":true}
```

**Output (formatted):**
```json
{
  "name": "test",
  "items": [
    1,
    2,
    3
  ],
  "active": true
}
```

## Fixing Common Issues

### Trailing Commas
```json
// ❌ Invalid
{
  "key": "value",
}

// ✅ Fixed
{
  "key": "value"
}
```

### Single Quotes
```json
// ❌ Invalid
{'key': 'value'}

// ✅ Fixed
{"key": "value"}
```

### Unquoted Keys
```json
// ❌ Invalid
{key: "value"}

// ✅ Fixed
{"key": "value"}
```

### Comments
```json
// ❌ Invalid
{
  // This is a comment
  "key": "value"
}

// ✅ Fixed
{
  "key": "value"
}
```

## Conversion

When converting to/from JSON:

### From JSON to other formats
- **YAML**: Preserve structure, use proper indentation
- **TOML**: Handle nested objects appropriately
- **CSV**: Flatten structure if needed, handle arrays
- **XML**: Choose appropriate tag names

### To JSON from other formats
- Ensure proper escaping
- Validate the result
- Maintain data types (strings, numbers, booleans, null)

## Analysis

When analyzing JSON structure:

1. **Report schema**:
   - Top-level type (object/array)
   - Key names and types
   - Nesting depth
   - Array sizes

2. **Identify patterns**:
   - Repeated structures
   - Optional fields
   - Data types used

3. **Suggest improvements**:
   - Inconsistent naming
   - Deep nesting issues
   - Large array optimization

### Example Analysis

```
JSON Structure Analysis:

Type: Object
Keys: 3 (name, items, metadata)

Schema:
{
  "name": string,
  "items": array[3] of numbers,
  "metadata": {
    "created": string,
    "updated": string
  }
}

Depth: 2 levels
Total size: ~150 bytes
```

## Best Practices

1. **Always validate before formatting** - Don't format invalid JSON
2. **Show clear error messages** - Include line numbers and context
3. **Preserve data types** - Don't convert numbers to strings unnecessarily
4. **Handle edge cases** - Empty objects, null values, Unicode characters
5. **Ask before major changes** - e.g., sorting keys, removing comments

## Examples

### Example 1: Validate and Fix

**User request:**
"Validate this JSON and fix any errors"

**Response:**
```
Found 2 issues:

1. Line 3: Trailing comma after "name"
2. Line 5: Single quotes instead of double quotes

Here's the corrected JSON:
{
  "name": "example",
  "data": {
    "value": 42
  }
}
```

### Example 2: Format

**User request:**
"Format this JSON nicely"

**Response:**
```json
{
  "users": [
    {
      "id": 1,
      "name": "Alice"
    },
    {
      "id": 2,
      "name": "Bob"
    }
  ],
  "total": 2
}
```

### Example 3: Convert to YAML

**User request:**
"Convert this JSON to YAML"

**Response:**
```yaml
users:
  - id: 1
    name: Alice
  - id: 2
    name: Bob
total: 2
```