smithery/nette

neon-format

Invoke before creating or modifying .neon files. Provides NEON syntax and Nette configuration conventions. Use when writing or editing .neon config files, asking about NEON syntax (entities, multiline strings, inline notation, special values, escaping), converting YAML to NEON, parsing or encoding NEON in PHP (Neon::decode, Neon::encode), running neon-lint, or debugging NEON syntax errors. For phpstan.neon, use the phpstan-analysis skill (from nette-dev plugin) instead. Do not trigger for Nette…

Installation

$ npx skills add smithery/nette --skill neon-format

Summary

  • Invoke before creating or modifying .neon files.
  • Provides NEON syntax and Nette configuration conventions.
  • Use when writing or editing .neon config files, asking about NEON syntax (entities, multiline strings, inline notation, special values, escaping), converting YAML to NEON, parsing or encoding NEON in PHP (Neon::decode, Neon::encode), running neon-lint, or debugging NEON syntax errors.
  • For phpstan.neon, use the phpstan-analysis skill (from nette-dev plugin) instead.
  • Do not trigger for Nette DI concepts like autowiring and service registration without .neon file context.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery/nette.

npx skills add smithery/nette

Browse all from smithery/nette

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,094 B
  • docs SUMMARY.md 125 B

History

  1. First recorded snapshot · 0 installs

SKILL.md

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

Block vs Inline Notation

Use inline for short, simple values (up to ~3 items):

extensions: [foo, bar]
roles: {admin: true, user: false}

Use block for anything complex, nested, or long:

services:
	- App\Model\UserService
	- App\Model\OrderService

Key Rules

  • Space after : is required (key: value, not key:value)
  • Use tabs for indentation. Spaces are valid too (Neon::encode() just defaults to tabs);

unlike YAML, NEON accepts either, so never "fix" space-indented NEON

  • 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>

Online Documentation

For detailed information, use WebFetch on these URLs:

  • NEON Format – complete NEON specification and examples