Version 1.0 | Canonical reference for the Hexfield planner file format.
This document is the source of truth. Other Hexfield ecosystem repos (Hexfield Deck, future tools) should reference this spec rather than re-documenting the format.
A Hexfield planner file is a standard markdown file (.md) with a YAML
frontmatter block containing type: hexfield-planner:
---
type: hexfield-planner
---This single field is the canonical activation signal. Tools in the Hexfield ecosystem use it to scope their behavior — no other heuristics required.
Files without type: hexfield-planner are ordinary markdown and must never
be affected by Hexfield tooling.
The following YAML frontmatter keys are recognized by the Hexfield ecosystem.
Only type is required; the rest are optional and context-dependent.
| Key | Required | Description |
|---|---|---|
type |
Yes | Must be hexfield-planner. File identity signal. |
week |
No | ISO week number (1–53). Used by Hexfield Deck for weekly planners. |
year |
No | Four-digit year. |
quarter |
No | Quarter label (e.g., Q1, Q2). |
tags |
No | YAML list of tags (e.g., [planner, weekly]). |
startDate |
No | Start date in YYYY-MM-DD format. |
endDate |
No | End date in YYYY-MM-DD format. |
Example:
---
type: hexfield-planner
week: 14
year: 2026
quarter: Q2
tags: [planner, weekly]
startDate: 2026-04-05
endDate: 2026-04-11
---Inline tokens are metadata markers that appear within task lines (list items). A typical task line looks like:
- [ ] Ship parser v1 #hexfield [2026-04-10] !!! est:4h // needs review| Syntax | Scope |
|---|---|
#project-name |
entity.name.tag.hexfield |
- The
#must be preceded by whitespace or appear at the start of text. - Tag names may contain letters, digits, hyphens, and underscores:
[a-zA-Z][a-zA-Z0-9_-]* - A
#inside a URL is never treated as a project tag.
Default color: Blue (#569CD6)
| Syntax | Form | Scope |
|---|---|---|
[YYYY-MM-DD] |
Bracketed (canonical) | string.quoted.hexfield.date |
due:YYYY-MM-DD |
Prefix (alternate) | string.quoted.hexfield.date |
The bracketed form [YYYY-MM-DD] is the preferred syntax. The due: prefix
form is supported by the Hexfield Deck parser for compatibility.
Due dates are dynamically colored by proximity to today:
| Proximity | Color | Hex |
|---|---|---|
| Overdue (date < today) | Red | #F44747 |
| Today | Orange | #CE9178 |
| Within 3 days | Yellow | #CCA700 |
| Future (4+ days) | Gray | #858585 |
Colors update dynamically as the date approaches.
| Syntax | Level | Color | Hex |
|---|---|---|---|
!!! |
High | Red | #F44747 |
!! |
Medium | Yellow | #CCA700 |
! |
Low | Green | #89D185 |
- Priority markers must not be preceded or followed by another
!. - Must not be preceded by a letter (avoids false positives in prose).
Scope: keyword.operator.hexfield.priority.{high,medium,low}
| Syntax | Example | Scope |
|---|---|---|
est:Xh |
est:4h |
constant.numeric.hexfield.estimate |
est:Xm |
est:30m |
constant.numeric.hexfield.estimate |
est:X.Xh |
est:1.5h |
constant.numeric.hexfield.estimate |
Xis one or more digits; decimal values are supported (est:1.5h).h= hours,m= minutes. No other units.
Default color: Teal (#4EC9B0)
Hexfield planner files use standard markdown checkboxes with one extension:
| Syntax | State | Color | Hex |
|---|---|---|---|
[ ] |
To Do | Default (no override) | — |
[/] |
In Progress | Orange | #CE9178 |
[x] |
Done | Dimmed | #6B737C |
[/]is the Hexfield-specific extension to standard markdown checkboxes. It must appear in checkbox position: immediately after a list marker (-,*,+).[x]done tasks may be styled with strikethrough and a dimmed color to visually de-emphasize completed work.
Scopes:
[/]—markup.changed.hexfield.checkbox[x]— styled via Decoration API (not grammar)
| Syntax | Example | Scope |
|---|---|---|
// text |
// needs review |
comment.line.double-slash.hexfield |
- The
//must be preceded by whitespace (text // comment). - Everything from
//to end of line is the comment. - Comments are stripped by parsers before extracting other metadata.
Default color: Green (#6A9955)
When parsing a task line, metadata should be extracted in this order:
- Line comment (
// ...) — strip first so comments don't interfere - Project tag (
#name) - Due date (
[YYYY-MM-DD]ordue:YYYY-MM-DD) - Priority (
!!!/!!/!) - Time estimate (
est:Xh)
After extraction, the remaining text is the task's clean title.
All token colors are user-configurable through a shared configuration
namespace: hexfield.colors.*
This namespace is owned by Hexfield Text. Other Hexfield extensions read from it (with fallback defaults) but do not register it.
| Setting | Default | Token |
|---|---|---|
hexfield.colors.projectTag |
#569CD6 |
#project tags |
hexfield.colors.priorityHigh |
#F44747 |
!!! |
hexfield.colors.priorityMed |
#CCA700 |
!! |
hexfield.colors.priorityLow |
#89D185 |
! |
hexfield.colors.timeEstimate |
#4EC9B0 |
est:Xh / est:Xm |
hexfield.colors.inProgressCheckbox |
#CE9178 |
[/] |
hexfield.colors.doneTask |
#6B737C |
[x] (with strikethrough) |
hexfield.colors.lineComment |
#6A9955 |
// comment |
hexfield.colors.dueDateOverdue |
#F44747 |
Overdue dates |
hexfield.colors.dueDateToday |
#CE9178 |
Due today |
hexfield.colors.dueDateSoon |
#CCA700 |
Due within 3 days |
hexfield.colors.dueDateFuture |
#858585 |
Future dates |
The following 12 colors form the curated swatch set used across the ecosystem (e.g., Hexfield Deck's project color picker). Tools that offer color selection should use these swatches for visual consistency.
#569CD6 #4EC9B0 #89D185 #6A9955
#CCA700 #DCDCAA #CE9178 #F44747
#F92672 #C586C0 #9CDCFE #858585
Hexfield Text promotes planner files to a custom VS Code language ID:
hexfield-markdown
This is how colorization is scoped exclusively to Hexfield planner files without leaking onto regular markdown.
Other Hexfield extensions must accept both markdown and
hexfield-markdown as valid language IDs:
"when": "resourceLangId == markdown || resourceLangId == hexfield-markdown"| Namespace | Owner | Others may |
|---|---|---|
hexfield.colors.* |
Hexfield Text | Read (with fallback defaults) |
hexfield-deck.projects |
Hexfield Deck | Read and write |
hexfield-markdown language ID |
Hexfield Text | Accept alongside markdown |
type: hexfield-planner frontmatter |
Shared convention | Check to scope activation |
- Independently installable. Each component works alone.
- Loosely coupled. Components coordinate through shared config, not APIs.
- Same file, different views. Every component is a different lens on the same markdown file.
These are acknowledged discrepancies between the standard and current implementations. They should be resolved in future releases.
| Gap | Hexfield Text | Hexfield Deck |
|---|---|---|
due:YYYY-MM-DD highlighting |
Not highlighted (parser-only in Deck) | Supported in parser |
est:1.5h decimal estimates |
Supported in grammar | Parser regex needs update (\d+[hm] → \d+(?:\.\d+)?[hm]) |
[x] done task styling |
Color config exists; decoration not yet wired | N/A (board handles its own styling) |
| Version | Date | Changes |
|---|---|---|
| 1.0 | 2026-04-05 | Initial standard — consolidated from Hexfield Text USER_GUIDE, Hexfield Deck ecosystem docs, and parser implementation |
This document lives in the Hexfield Text repository. It is the canonical reference for the Hexfield planner file format. Other Hexfield ecosystem repos should link here rather than duplicating format documentation.