Skip to content
Back to skills

Toon

ASecurity

Token-Oriented Object Notation (TOON) format for LLM-optimized data encoding. Converts JSON to compact, human-readable format that minimizes tokens (~40% reduction) while improving LLM comprehension accuracy.

  • 28 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added February 7, 2026
ai-agentstypescriptpythonbashnodegitapi

Works with

  • cli
  • api

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 8 files and shows the line behind each finding

Scanned February 12, 2026

npx -y skills add georgekhananaev/claude-skills-vault --skill toon --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Toon?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Toon
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/georgekhananaev-toon/badge)](https://www.skillsdirectory.com/skills/georgekhananaev-toon)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: toon
description: Token-Oriented Object Notation (TOON) format for LLM-optimized data encoding. Converts JSON to compact, human-readable format that minimizes tokens (~40% reduction) while improving LLM comprehension accuracy.
license: MIT
reference: https://github.com/toon-format/toon
author: George Khananaev
---

# TOON Format Guide

## Overview

TOON (Token-Oriented Object Notation) is a compact encoding of JSON designed for LLM input. Combines YAML-style indentation w/ CSV-style tables for uniform arrays.

**Key benefits:**
- ~40% fewer tokens vs JSON
- 73.9% accuracy vs 69.7% for JSON in retrieval tasks
- Explicit length declarations for validation
- Lossless JSON round-trips

## Syntax

### Objects (YAML-style indentation)
```toon
user:
  name: John
  age: 30
  address:
    city: NYC
    zip: 10001
```

### Uniform Arrays (Tabular)
```toon
users[3]{id,name,email}:
  1,John,john@ex.com
  2,Jane,jane@ex.com
  3,Bob,bob@ex.com
```
- `[N]` = array length (req for validation)
- `{fields}` = column schema (declared once)

### Scalar Arrays
```toon
tags[4]: api,rest,json,toon
```

### Non-uniform Arrays (Nested)
```toon
items:
  - id: 1
    type: book
    meta:
      pages: 200
  - id: 2
    type: video
    meta:
      duration: 3600
```

## Conversion Rules

### JSON to TOON

1. **Objects** => indented key-value pairs
2. **Uniform arrays** => tabular `[N]{fields}:` format
3. **Mixed/nested arrays** => `-` list notation
4. **Scalars** => quote only when containing `,` or special chars

### Examples

**JSON:**
```json
{"orders":[{"id":1,"item":"Book","qty":2,"price":29.99},{"id":2,"item":"Pen","qty":10,"price":1.99}]}
```

**TOON:**
```toon
orders[2]{id,item,qty,price}:
  1,Book,2,29.99
  2,Pen,10,1.99
```

**Nested JSON:**
```json
{"config":{"db":{"host":"localhost","port":5432},"cache":{"enabled":true,"ttl":300}}}
```

**TOON:**
```toon
config:
  db:
    host: localhost
    port: 5432
  cache:
    enabled: true
    ttl: 300
```

## When to Use TOON

TOON replaces **data serialization formats** when sending to LLMs.

### Formats to convert → TOON:
| Format | Convert? | Notes |
|--------|----------|-------|
| JSON | Yes | Primary use case |
| JSON compact | Yes | Same as JSON |
| YAML | Yes | Structured data |
| XML | Yes | Verbose, big savings |

### Do NOT convert to TOON:
| Format | Convert? | Reason |
|--------|----------|--------|
| Markdown | No | Keep as markdown |
| Plain text | No | Keep as text |
| Code files | No | Keep original syntax |
| CSV | No | Already compact for flat tables |

### TOON sweet spot:
Uniform arrays of objects (same fields per item) from JSON/YAML/XML.

### Key insight:
TOON replaces **data serialization formats** when the consumer is an LLM.

## Quick Reference

| Data Type | TOON Syntax | Example |
|-----------|-------------|---------|
| Object | indent | `user:\n  name: John` |
| Uniform array | `[N]{fields}:` | `items[2]{a,b}:\n  1,x\n  2,y` |
| Scalar array | `[N]:` | `ids[3]: 1,2,3` |
| Nested array | `- item` | `- name: x\n- name: y` |
| Quoted str | `"val"` | `name: "a,b,c"` |
| Null | `null` | `val: null` |
| Bool | `true`/`false` | `active: true` |

## File Format

- Extension: `.toon`
- Media type: `text/toon`
- Encoding: UTF-8

## Implementations

Official npm: `@toon-format/toon`, `@toon-format/cli`

### Node.js/TypeScript Example
```typescript
// npm install @toon-format/toon
import { encode, decode } from '@toon-format/toon';

// JSON to TOON
const data = { users: [{ id: 1, name: 'John' }] };
const toonStr = encode(data);

// TOON to JSON
const parsed = decode(toonStr);
```

### CLI Example
```bash
# npm install -g @toon-format/cli
toon encode input.json > output.toon
toon decode input.toon > output.json
```

## Validation

TOON's `[N]` notation enables:
- Array truncation detection
- Field count validation
- Schema consistency checks

```toon
# This declares exactly 3 items w/ 2 fields each
products[3]{name,price}:
  Widget,9.99
  Gadget,19.99
  Tool,14.99
```

If LLM receives incomplete data, length mismatch signals corruption.

## Scripts

### Validator (`scripts/validate.py`)

Validates TOON syntax and structure before use.

```bash
# Validate TOON file
python .claude/skills/document-skills/toon/scripts/validate.py input.toon

# Check JSON compatibility for TOON conversion
python .claude/skills/document-skills/toon/scripts/validate.py --json input.json

# Quiet mode (errors only)
python .claude/skills/document-skills/toon/scripts/validate.py -q input.toon
```

**Checks:**
- Array length `[N]` matches actual row count
- Field count `{a,b,c}` matches values per row
- Quote balance
- Consistent indentation
- Empty value warnings

### Converter - Node.js (`scripts/convert.js`) - Recommended

Uses official `@toon-format/toon` library for full spec compliance.

```bash
# Install official library
npm install @toon-format/toon

# JSON to TOON
node .claude/skills/document-skills/toon/scripts/convert.js input.json

# JSON to TOON with output file
node .claude/skills/document-skills/toon/scripts/convert.js input.json -o output.toon

# TOON to JSON
node .claude/skills/document-skills/toon/scripts/convert.js --to-json input.toon

# Verify round-trip
node .claude/skills/document-skills/toon/scripts/convert.js --verify input.json
```

### Converter - Python (`scripts/convert.py`) - Fallback

Basic implementation when Node.js is not available.

```bash
# JSON to TOON
python .claude/skills/document-skills/toon/scripts/convert.py input.json

# TOON to JSON
python .claude/skills/document-skills/toon/scripts/convert.py --to-json input.toon

# Verify round-trip
python .claude/skills/document-skills/toon/scripts/convert.py --verify input.json
```

## Compression Tips

1. Use tabular format for uniform arrays (max savings)
2. Declare lengths `[N]` for validation
3. Quote strings only when necessary
4. Flatten when possible, nest when required
5. Combine related arrays into single table

Files in this skill

  • LICENSE.txt1.1 KB
  • SKILL.md6 KB
  • scripts/.gitignore15 B
  • scripts/convert.js3.7 KB
  • scripts/convert.py6.2 KB
  • scripts/package-lock.json490 B
  • scripts/package.json67 B
  • scripts/validate.py9.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.