neon-format

nette's avatarfrom nette

Invoke before creating or modifying .neon files. Provides NEON syntax and Nette configuration conventions.

⭐27stars🔀3forks📁View on GitHub🕐Updated Jan 9, 2026

When & Why to Use This Skill

This Claude skill provides a comprehensive syntax guide and configuration reference for NEON (Nette Object Notation), a human-readable data format widely used in the Nette framework. It ensures developers can accurately create, modify, and debug .neon files by providing precise rules for indentation, data types, entities, and PHP API integration, ultimately improving configuration reliability and development workflow.

Use Cases

  • Case 1: Creating and maintaining Nette framework configuration files (.neon) with correct tab-based indentation and syntax rules.
  • Case 2: Implementing complex Dependency Injection (DI) settings using NEON entities and chained function-like structures.
  • Case 3: Programmatically converting PHP arrays to NEON strings or decoding configuration files using the Nette\Neon PHP API.
  • Case 4: Troubleshooting and linting configuration files to identify syntax errors related to unquoted strings, special values, or illegal nesting.
nameneon-format
descriptionInvoke before creating or modifying .neon files. Provides NEON syntax and Nette configuration conventions.

NEON Format

NEON (Nette Object Notation) is a human-readable data format used for configuration files in Nette. Similar to YAML but with support for entities and tab indentation.

composer require nette/neon

Mappings

Key-value pairs with required space after colon:

street: 742 Evergreen Terrace
city: Springfield
country: USA

Inline notation with braces:

{street: 742 Evergreen Terrace, city: Springfield, country: USA}

Sequences

Indexed arrays with hyphen and space:

- Cat
- Dog
- Goldfish

Inline notation with brackets:

[Cat, Dog, Goldfish]

Nesting

Indentation defines structure:

pets:
	- Cat
	- Dog
cars:
	- Volvo
	- Skoda

Block and inline can be combined:

pets: [Cat, Dog]
cars:
	- Volvo
	- Skoda

Strings

Unquoted, single-quoted, or double-quoted:

- An unquoted string
- 'Single-quoted string'
- "Double-quoted with \t escapes"

Quote strings containing: # " ' , : = - [ ] { } ( )

Double a quote to include it: 'It''s working'

Multiline strings with triple quotes:

'''
	first line
		second line
	third line
'''

Special Values

# Numbers
count: 12
price: 12.3
scientific: +1.2e-34
binary: 0b11010
octal: 0o666
hex: 0x7A

# Null
value: null
empty:

# Booleans
enabled: true
disabled: false
active: yes
inactive: no

# Dates (auto-converted to DateTimeImmutable)
date: 2016-06-03
datetime: 2016-06-03 19:00:00
with_tz: 2016-06-03 19:00:00 +02:00

Entities

Function-like structures for DI configuration:

Column(type: int, nulls: yes)

Chained entities:

Column(type: int) Field(id: 1)

Multiline entity:

Column(
	type: int
	nulls: yes
)

Comments

# This line is ignored
street: 742 Evergreen Terrace  # inline comment

Key Rules

  • Space after : is required
  • Use tabs for indentation
  • Block notation cannot be nested inside inline notation
  • Unquoted strings cannot start/end with spaces or look like numbers/booleans/dates

PHP API

use Nette\Neon\Neon;

encode(mixed $value, bool $blockMode=false, string $indentation="\t"): string

Converts PHP value to NEON. Pass true to $blockMode for multiline output.

Neon::encode($value);       // inline NEON
Neon::encode($value, true); // multiline NEON

decode(string $neon): mixed

Parses NEON string to PHP value. Dates become DateTimeImmutable, entities become Nette\Neon\Entity.

Neon::decode('hello: world'); // ['hello' => 'world']

decodeFile(string $file): mixed

Parses NEON file to PHP value (removes BOM).

Neon::decodeFile('config.neon');

All methods throw Nette\Neon\Exception on error.

Lint Command

Check syntax errors in .neon files:

vendor/bin/neon-lint <path>