This file provides comprehensive guidance for AI coding agents (Claude Code, Cursor, GitHub Copilot, etc.) working on the ISON project.
ISON (Interchange Simple Object Notation) is a token-efficient data format optimized for LLMs and Agentic AI workflows. The project is a monorepo containing parser implementations across 5 languages plus tooling.
- Website: https://www.ison.dev
- Documentation: https://www.getison.com
- Author: Mahesh Vaikri
- License: MIT
ison/
βββ ison-js/ # JavaScript parser (NPM: ison-parser)
βββ ison-ts/ # TypeScript parser + validation (NPM: ison-ts)
βββ ison-py/ # Python parser + validation (PyPI: ison-py)
βββ ison-rust/ # Rust parser (Crates.io: ison-rs)
βββ ison-cpp/ # C++ header-only parser
βββ ison-go/ # Go parser + validation
βββ ison-cli/ # Python CLI tool (PyPI: ison-cli)
βββ ison-vscode/ # VS Code extension (Marketplace: ison-lang)
βββ n8n-nodes-ison/ # n8n community node
βββ isonantic-ts/ # DEPRECATED - use ison-ts/validation
βββ isonantic/ # DEPRECATED - use ison_parser.validation
βββ isonantic-go/ # DEPRECATED - use ison-go/validation
βββ isonantic-rust/ # Rust validation (NOT deprecated - separate crate)
βββ isonantic-cpp/ # C++ validation (NOT deprecated - separate header)
βββ benchmark/ # Token efficiency benchmarks
βββ images/ # Logo and assets
βββ README.md # Main documentation
| Directory | Package Name | Registry | Current Version |
|---|---|---|---|
| ison-js | ison-parser |
NPM | 1.0.2 |
| ison-ts | ison-ts |
NPM | 1.0.2 |
| ison-py | ison-py |
PyPI | 1.0.3 |
| ison-rust | ison-rs |
Crates.io | 1.0.2 |
| ison-go | github.com/ISON-format/ison/ison-go |
Go Modules | - |
| ison-cli | ison-cli |
PyPI | 1.0.0 |
| ison-vscode | ison-lang |
VS Code Marketplace | 1.0.2 |
| n8n-nodes-ison | n8n-nodes-ison |
NPM | 1.0.1 |
| isonantic-ts | isonantic-ts |
NPM | 1.0.0 (deprecated) |
| isonantic | isonantic |
PyPI | 1.0.1 (deprecated) |
| isonantic-rust | isonantic-rs |
Crates.io | 1.0.0 |
# Comments start with #
table.users # Block: kind.name
id:int name:string email active:bool # Fields with optional types
1 Alice alice@example.com true # Data rows (space-separated)
2 "Bob Smith" bob@example.com false # Quoted strings for spaces
3 ~ ~ true # ~ or null for null values
table.orders
id user_id product
1 :1 Widget # :1 = reference to id 1
2 :user:42 Gadget # :user:42 = namespaced reference
3 :OWNS:5 Gizmo # :OWNS:5 = relationship reference (UPPERCASE)
object.config # Single-row object block
key value
debug true
--- # Summary separator
count 100 # Summary row
table.users|id name email|1 Alice alice@example.com
table.users|id name email|2 Bob bob@example.com
cd ison-js
npm install
npm test # Run tests
npm run build # Build dist/
npm pack # Create tarball
npm publish # Publish to NPMcd ison-ts
npm install
npm run build # tsup build
npm test # vitest
npm publishcd ison-py
pip install -e . # Editable install
pytest # Run tests
python -m build # Build wheel
twine upload dist/* # Publish to PyPIcd ison-rust
cargo test # Run tests
cargo build --release # Build
cargo publish # Publish to Crates.iocd ison-cpp
mkdir build && cd build
cmake ..
cmake --build .
ctest # Run testscd ison-go
go test -v ./... # Run tests
go mod tidy # Tidy dependencies
# Publishing: tag and push (proxy.golang.org auto-indexes)cd ison-vscode
npm install
npm run compile # TypeScript compile
npm run package # Create .vsix
vsce publish # Publish to MarketplaceAll packages must maintain test coverage. Current test counts:
| Package | Tests | Command |
|---|---|---|
| ison-js | 80 (33 parser + 47 validation) | npm test |
| ison-ts | 23 | npm test |
| ison-py | 212+ (31 parser + validation) | pytest |
| ison-rust | 10 (9 + doctests) | cargo test |
| ison-cpp | 30 | ctest |
| ison-go | 40+ | go test -v ./... |
Total: 395+ tests across all packages
- MIT License header not required in source files
- Use consistent naming:
parse,dumps,loadsfor core functions - Support both ISON and ISONL formats
- Include JSON conversion utilities
- Use ES modules with CommonJS fallback
- Export both named exports and default
- Include TypeScript declarations (.d.ts)
- Zero runtime dependencies for parsers
- Support Python 3.9+
- Use type hints throughout
- Follow PEP 8 style
- Use
pyproject.toml(not setup.py)
- Use
thiserrorfor error types - Optional
serdefeature for JSON support - Document public APIs with rustdoc
- C++17 minimum
- Header-only design
- Use
std::variant,std::optional - Namespace:
ison::
- Go 1.21+
- Use standard library only (testify for tests)
- Follow Go naming conventions (exported = PascalCase)
All parsers should implement these core functions:
| Function | Purpose |
|---|---|
parse(text) / loads(text) |
Parse ISON string to Document |
dumps(doc) |
Serialize Document to ISON string |
loads_isonl(text) / parse_isonl(text) |
Parse ISONL format |
dumps_isonl(doc) |
Serialize to ISONL format |
to_json(doc) |
Convert to JSON string |
from_json(json) / from_dict(obj) |
Create Document from JSON/dict |
All parsers recognize these types:
null/~- Null valuetrue/false- Boolean- Integer (no decimal point)
- Float (with decimal point)
- String (quoted if contains spaces)
- Reference (
:id,:namespace:id,:RELATIONSHIP:id)
- ison-ts:
import { validation } from 'ison-ts' - ison-py:
from ison_parser.validation import ... - ison-go:
import ".../ison-go/validation"
- isonantic-rs: Rust crates are typically separate
- isonantic-cpp: Header-only libraries are separate files
isonantic-tsβ Useison-ts/validationisonantic(Python) β Useison_parser.validationisonantic-goβ Useison-go/validation
- Implement in all 5 parser languages
- Add tests in each package
- Update README for each package
- Update main README if significant
- Write failing test first
- Fix in affected package(s)
- Ensure all tests pass
- Update version if publishing
- Update version in package manifest (package.json, pyproject.toml, Cargo.toml)
- Run all tests
- Update README if needed
- Build package
- Publish to registry
- Tag git commit
- Follow SemVer: MAJOR.MINOR.PATCH
- All packages don't need to be in sync
- Main README badge should reflect latest stable
| File | Purpose |
|---|---|
README.md |
Main project documentation |
AGENTS.md |
This file - AI agent guidelines |
LICENSE |
MIT License |
images/ison_logo_git.png |
Logo for GitHub/dark backgrounds |
images/ison_logo_white_bg.png |
Logo for light backgrounds |
benchmark/ |
Token efficiency benchmarks |
- Website: https://www.ison.dev
- Documentation: https://www.getison.com
- Specification: https://www.ison.dev/spec.html
- Playground: https://www.ison.dev/playground.html
- GitHub: https://github.com/ISON-format/ison
-
Validation is built-in for Python, TypeScript, and Go parsers. Don't suggest installing separate isonantic packages.
-
Package names differ from directory names:
ison-jsβ publishes asison-parserison-rustβ publishes asison-rs
-
Go modules don't have version numbers in go.mod - versioning is via git tags.
-
C++ and Rust validation packages are NOT deprecated - they remain separate by design.
-
Test counts in badges may need updating after adding tests.
-
When modifying parsers, maintain API compatibility across all languages where possible.
-
ISONL is for streaming/large datasets - each line is self-contained with pipe separators.
-
References come in three forms:
- Simple:
:42(reference to id 42) - Namespaced:
:user:42(reference to user with id 42) - Relationship:
:MEMBER_OF:42(UPPERCASE = relationship type)
- Simple: