https://resumelang.dev/schema/v1.json
and lives in-tree at schema/v1.json.
Add this preamble to any resume file and your editor gets autocomplete + validation:
Top-level keys
| Field | Type | Description |
|---|---|---|
resumelang | "v1" | Spec version. Required for forward compatibility. |
meta | object | Theme, language, page size, section order. |
person | object | Name, contact, social handles. |
summary | string | One-paragraph elevator pitch (markdown allowed). |
experience | Job[] | Work history. Most recent first. |
education | Education[] | Schools and degrees. |
skills | SkillGroup[] | Categorized skills. |
projects | Project[] | Side projects, OSS, demos. |
publications | Publication[] | Papers, articles. |
certifications | Certification[] | Issued certificates with optional ID. |
languages | Language[] | Spoken languages with proficiency. |
volunteer | Volunteer[] | Volunteer work. |
awards | Award[] | Awards and recognitions. |
custom | Section[] | Arbitrary user-defined sections. |
meta
meta.sections controls both order and visibility. Sections not listed
are skipped. Themes that ignore the field render their own canonical order.
person
experience
skills
certifications
Strictness
The schema usesadditionalProperties: false everywhere. Unknown keys are
flagged as errors so typos like experiance: or compamy: fail loudly instead
of silently disappearing. Extend the language by contributing to the schema —
not by sneaking custom fields in.
Custom sections
Need something the schema doesn’t model? Usecustom:
custom render it; themes that don’t, ignore it.