Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>MAXI FormatNew to Visual Studio Code? Get it now.
MAXI Format

MAXI Format

maxi-format

|
3 installs
| (0) | Free
Syntax highlighting for MAXI (.maxi / .mxs) files — Minimal API Exchange Interface
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

MAXI Format — VS Code Extension

Full language support for MAXI (.maxi / .mxs) files in Visual Studio Code.

MAXI is a compact, schema-driven serialization format designed to minimize token usage in LLM contexts and API communications while remaining human-readable.


Features

Syntax Highlighting

Every MAXI construct gets a distinct, meaningful color:

Construct Example
Comments # a comment
Section separator ###
Directives @maxi:1.0.0 · @version:2.0.0 · @schema:sports.mxs
Type alias P in P:Player(…)
Type name Player
Inherited parents <Base,Mixin>
Primitive types int str bool float decimal bytes
Object type reference Team (in a field type)
Enum type enum[forward,midfielder,defender]
Map type map<str,int>
Array suffix T[]
Annotations @email @date @base64
Constraints ! id >=1 <=50 pattern:… mime:…
Field default =unknown
Record alias P in P(1|Alice|…)
Quoted strings "hello world" and escape sequences
Null ~
Inline objects (A1|Main St|NYC)
Arrays / Maps [a,b,c] · {key:value}

Semantic Highlighting

The language server enriches data records with type-aware token colors that the grammar alone cannot provide:

Value Field type Color role
admin · editor enum[…] enum member
true · false · 1 · 0 bool boolean constant
42 · -17 int number
3.14 · 100.00 decimal / float number
SGVsbG8= bytes string (muted)
1 in an object-typed field e.g. user:U variable (reference)
1 in the record's own id field int(id) enum member (declaration)

Hover Tooltips

Hover over any token to see contextual information:

  • Field value → field name and type, e.g. role · enum[admin, editor, user]
  • Object reference (bare id in an object-typed field) → the full resolved record it points to
  • Record alias (U at the start of a data line) → the full resolved type definition with all fields
  • Type alias in schema → resolved field list including inherited fields
  • Annotation-aware display: str@date shows date (YYYY-MM-DD), str@email shows email address

Go to Definition

Press F12 on:

  • Alias in a data record → jumps to the type definition in the schema section
  • Parent type in <Parent> → jumps to the parent's definition
  • Bare id in an object-typed field → jumps to the referenced record
  • Works across files — if the type is defined in an @schema: imported .mxs file, VS Code opens it

Find All References

Press Shift+F12 on any type alias to see every data record that uses it listed in the References panel.

Rename

Press F2 on a type alias to rename it across the entire document — the type definition line and every data record are updated atomically.

Diagnostics

Red and yellow squiggles for schema violations:

Code Severity Description
E201 Error Unknown type alias — no matching definition
E202 Error Undefined parent type
E203 Error Circular inheritance
E204 Warning Unresolved object reference (forward refs are allowed)
E205 Error Duplicate record identifier
E303 Error Invalid enum value
E401 Error / Warning Wrong field count (too many = error, too few = warning)
E402 Warning / Error Type mismatch (e.g. text in an int field; bool mismatch = error)
E403 Error Required field (!) is null or empty
E602 Error Comment in data section (not allowed after ###)

Completion

Ctrl+Space inside a data record:

  • enum field → list of valid enum values
  • bool field → 1, 0, true, false
  • Object-typed field → IDs of all known records of that type in the current file
  • Start of a record line → all type aliases defined in the schema
  • @schema:directive → .mxs files in the same directory
  • str@date field → today's date in YYYY-MM-DD
  • str@datetime field → current datetime in ISO 8601

MAXI at a Glance

@maxi:1.0.0
@version:2.0.0

# Type alias : Type name ( field | field:type | field:type(constraints) )
U:User(
  id:int(id)         |
  name:str(!,>=1)    |
  email:str@email(!) |
  role:enum[admin,editor,viewer]=viewer |
  active:bool=1
)

O:Order(
  id:int(id)  |
  user:U      |
  total:decimal(>=0)
)

###

U(1|Alice|alice@example.com|admin|1)
U(2|Bob|bob@example.com|viewer|1)
O(100|1|149.99)
O(101|2|29.00)
  • U and O are short type aliases used in data records
  • Fields are positional — names are declared once in the schema
  • ### separates the schema section from the data section
  • External schemas can be imported with @schema:path/to/file.mxs

Installation

From the Marketplace

Search for MAXI Format in the VS Code Extensions panel and click Install.

From Source (Development)

git clone https://github.com/maxi-format/maxi-vscode
cd maxi-vscode
npm install

Press F5 in VS Code to launch the Extension Development Host.

Build a .vsix Package

npm install -g @vscode/vsce
vsce package

Then install via Extensions: Install from VSIX… in the VS Code command palette.


File Associations

The extension activates automatically for:

Extension Purpose
.maxi Schema + data file (has a ### separator)
.mxs Schema-only file (no separator, no data records)

Related

  • MAXI Specification — the full format spec
  • MAXI schema implementations see here

License

Released under the MIT License.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft