Types and fields

A type says what a kind of thing in your notes is, such as a person, a team, or an incident, and which fields it has: a team’s lead, the areas it owns, who is on call. The fields are front matter you write, or already wrote, in plain Markdown. Deckard reads them as a table you can search, sort, and group, works out the other side of each relation, and answers questions such as who leads the team that owns checkout? from Find, a hover, a page, or an assistant.

A workspace with no types works as it always has. The work sample ships five types to try: Person, Team, Area, Decision, and Term.

Two kinds of type

A type note

Each type is one note in the Types folder of your notes folder (deckard.notesFolder). The folder’s name is fixed. Deckard reads its notes as types and leaves them out of searches, counts, Find, Related notes, and the overviews, as it does the templates folder, so their tags and tasks never count as your notes’.

---
deckard-type: team
rows: "#team/*"
notes: teams/
---
# Team

| Field   | Kind       | Reverse     | Also called     | Words                           |
| ------- | ---------- | ----------- | --------------- | ------------------------------- |
| lead    | Person     | lead of     | head            | leads, led by, now leads, heads |
| owns    | Area, many | owned by    | responsible for | owns, took over                 |
| on-call | Person     | on call for | oncall, pager   | is on call for, covers          |
| channel | Text       |             | slack, support  |                                 |

Every #team/ tag is a team. Text below the table describes the type.
Front matter Says
deckard-type The type’s key, such as team: what type = team and type: team name. The note’s first heading is its name, Team; without one, the key is.
rows What its rows are: a namespace, "#team/*"; people, "@*", which takes #person/… tags too; or notes, for notes whose type: is the key. Quote a value that starts with # or @.
notes The folder a new row’s note is written to, such as teams/. Without it, the type’s plural name: Teams/, People/.

The first table whose header has Field and Kind lists the fields, one to a row, in any case:

Other columns are yours, and kept when Deckard rewrites the table. What Deckard cannot read in a type note, such as a kind it does not know or a field listed twice, is marked in the editor.

Kinds

Kind A value is
Text anything; also what an unknown kind reads as
Number 12, 1,200, 1.5
Date a date
Checkbox true or false
Select: proposed, accepted, superseded one of the options, or several with , many
Person a person, @noor-haddad
a type’s name, such as Area a row of that type; Area or System takes either
Note a note, [[Checkout v2]]
Link, Email, Phone a web address, an email address, a phone number

Field names a search already uses

A search already reads some words as its own fields: status, owner, start, note, type, title, and the others in the query language. A field named one of them is still read and shown, is marked in its type note, and is reached in a search as field.status. Name such a field something else, such as state, to search it by name.

Rows

Rows of a namespace. Every tag under the namespace is a row, with a hub note or without one. A nested tag, #team/payments/fraud, is a row too, with a parent, #team/payments, which lists it among its children; a level no note writes is filled in. @noor-haddad and #person/noor-haddad are one row, as they are one person everywhere in Deckard.

Rows of notes. Every note whose front matter says type: incident is a row of the type keyed incident, titled by the note. A type: that names no type is an ordinary field.

A note can be both, the hub note of #team/payments and a type: decision; both types read the same front matter. A heading in a daily note is never a row: it has no front matter.

Writing values

---
describes: "#team/payments"
lead: "@alex-rivera"
owns: ["#area/checkout", "#area/card-payments"]
on-call: "@sam-okafor"
channel: payments-eng
---
# Payments

Deckard writes each value one way, and reads what you write by hand as well:

Kind Deckard writes Also read
Number 12 1,200, 1.5
Date 2026-10-08 a date in words, such as next friday, as the task editor takes
Checkbox true, false yes, no, on, off
Select the option as the type spells it any case
Person, or a row of a namespace "@noor-haddad", "#area/checkout" its name without the marker, noor-haddad; its title, Noor Haddad; an alias; with or without the namespace
Note, or a row of notes "[[ADR-001 Card form]]" its title, bare
Text, Link, Email, Phone as typed as typed

Computed fields

Every row also has fields no note writes, worked out from the notes each time they are read:

Field Holds
a reverse, such as owned-by or members the rows whose relation names this one
a path, such as team.lead or owned-by.lead a related row’s field, through up to two relations: owned-by.lead.email
open-tasks how many open tasks its tag finds, or its note holds, and how many are overdue
last-mentioned the date of the latest entry that carries its tag or links to its note
mentions how many entries did in the last 30 days
linked-from for a row of notes, the notes that link to it
parent, children for a nested tag, the tag above it and those below

Building a type

You never need to write the table by hand. Deckard: New Type… asks the type’s name (Org), then what its rows are: the namespaces in use, the closest to the name first (Each #org/… tag · 14 tags, 9 with a hub note), Another namespace…, Each person, or Each note that says type: org. Deckard writes Types/Org.md, opens it beside, and opens the type form on it.

Deckard: Edit Type… opens the same form on the type note in front, the type of the row note in front, or a type you choose. It is also on a type note’s title bar, on the Edit Type… lens over its table, in ⋯ on a type’s page (Edit type…), and on a column’s menu there (Change field…). The form lists:

The kinds are listed with an example of each: Person, each of your types, More than one type… (Team or Area), and Note, then Text, Number, Date, Select… (which asks its options), Checkbox, Link, Email, and Phone.

Choosing a field opens its menu, each row with what it is now: Rename… (Rename field everywhere), Kind, Holds one or several, Reverse, Also called, Words, Move up, Move down, and Remove from Org. Removing takes the row out of the table and nothing else: notes that write the field keep it, shown as one of their other keys.

Each change is written when you make it, as its own write that Deckard: Undo Last Change takes back, and the form is drawn again from the note, so an edit you make by hand meanwhile is kept. The table is written aligned, with your own columns, a separator’s alignment, and a Field cell in backticks kept.

Writing the table by hand still works. In a type note, the lens over the table offers Edit Type…, Add field…, and the type’s count of fields and rows, which opens its rows; a hover on each header cell says what the column holds, the Kind header listing every kind; and Format Document realigns the table.

Create Type from Tags

Deckard: Create Type from Tags…, also Create type from #team… in ⋯ on the page of a tag whose namespace has no type, makes a type from what your notes already write:

  1. Choose the rows: a namespace with its counts (#team · 6 tags · 5 hub notes), @ people, a type: value in use (type: incident · 7 notes), or New note type….
  2. Choose the fields: each key the rows’ notes write, all chosen, with a guessed kind, how many notes write it, and its reverse (Person · 5 of 5 · reverse: lead of). Values that are tags of one namespace guess a relation to that namespace’s type, or Person; dates guess Date, numbers Number, addresses Link or Email, and a few short values used again and again Select. A field whose name a search already uses is written as team-status, and the list says so.
  3. Deckard writes Types/Team.md, opens it beside, and marks any value that does not fit, with quick fixes such as Allow Area or System and Create a System type.

It is one write, which Deckard: Undo Last Change takes back. New note type… asks a name and writes a type of notes with an empty table to fill in.

A Term type

A term note says what a short term in your notes means, such as NDF or 3DS, and Deckard reads it wherever the term is written (see Terms). The work sample’s Types/Term.md is a type of notes with one field, term:

---
deckard-type: term
rows: notes
notes: terms/
---
# Term

| Field | Kind | Reverse | Also called           |
| ----- | ---- | ------- | --------------------- |
| term  | Text |         | acronym, abbreviation |

Its rows are the notes whose front matter says type: term, such as terms/3DS.md, whose first paragraph is the definition. Deckard reads a term note with or without the type, and Make a term note on a term’s hover, or Define… on Stats, opens the form for one either way.

Adding a note of a type

Deckard: New Note from Type… lists your types, each with where its notes go and how many it has (Teams/ · 5 rows, type: incident · 7 notes), then opens a form for a new one. Add team… in ⋯ on a type’s rows opens the same form, and so do the quick fix Create person “Omar H”…, with the title filled in, and Create hub note on a tag a type has rows of, from its page, its row, or Deckard: Create Hub Note for Tag…, with the tag kept.

The form is one list that stays open, as Add Task’s is. Its title says where the note goes, Add a team to Teams/, and the line under it what will be written, Teams/Risk Tech.md · #team/risk-tech.

The note is the type’s template (team.md in your templates folder), its questions asked once you create it, or else each field’s key; each field you set is written in, in place of the template’s value, as Deckard writes values: lead: "@dana", owns: ["#area/fx"], start: 2026-03-01. It is one write, which Deckard: Undo Last Change takes back, and it opens in the editor.

Editing fields

The same form edits a note that exists. Edit fields… opens it: on the Note page, at the end of the fields and in ⋯; on a tag’s page, beside Open in the hub note’s card; in ⋯ on a row of a type’s rows; and in the editor, as Deckard: Edit Fields…, on the note in front. A field’s name on either page opens it at that field’s input.

Its title names the note, Edit fields: Noor Haddad, and the line under it the type and where the note is, Person · People/Noor Haddad.md. Editing never moves or renames the note, so there is no Folder, Title, or Tag.

Leaving the form for another note with changes not saved asks first. Escape closes it without saving.

A type’s rows

Search type = team, or select a namespace heading a type has in the Hubs view, and the search page is titled with the type’s plural name, Teams, and under it what its rows are, #team/*, or type: incident · Incidents/. A new first tab, Teams (4), beside Notes and Tasks, is a table of the rows the search finds; side by side, the table is above both.

A board of rows

Board shows a type’s rows as cards in columns, one column per value of a field, as the Task board shows tasks: initiatives by state, incidents by severity, teams by tier. Nothing is special about any type; any type with a select, person, or relation field has a board.

Fields on the Note page

A note whose front matter says type:, such as a decision or an incident, shows its fields on the note page, under the page’s bar, one to a line, the key muted and in monospace, then its values. A person or a related row is a link by its title, which opens its page. A hub note opens as its tag’s page instead, so a person’s or a team’s fields are shown on its tag’s page, in the same rows.

With a row’s note open, the Context view lists, under its related notes, the other rows of its type that share a relation’s value with it: Other people, grouped by team Payments, manager Alex Rivera, and reverses such as works on Checkout v2, each group’s label opening its search. See Related Notes.

Fields on a tag’s page

A typed tag’s page is where a person’s, a team’s, or an area’s fields are shown. Its hub card draws the hub note’s fields as the Note page does: its own first, then From other notes, each saying where it is set. Edit fields…, beside Open in the card’s header, opens the form on the hub note, and a field’s name opens it at that field. Open the page from the tag: Cmd/Ctrl-click @noor-haddad in a note, choose it in Find, or open the hub note, which opens its tag’s page.

A row with no hub note gets a Fields card in the hub’s place, its type named at the right:

Create hub note stays under the title, and opens the same form.

Asking Find

In a workspace with types, Find reads what you type as a row and a field, in either order, and lists up to three answers first, under Answer:

Typed Answer Shown as
checkout lead, who leads checkout Alex Rivera @alex-rivera · Person, by way of Checkout › owned by Payments › lead
who is on payments, payments members Noor Haddad, Theo Park Payments › members
payments channel, payments slack payments-eng Payments › channel
what does payments own Checkout, Card Payments Payments › owns
who owns checkout, which team owns checkout Payments Checkout › owned by
noor email noor@example.com Noor Haddad › email
who reports to alex rivera Noor Haddad, Theo Park Alex Rivera › reports

In a trading desk’s notes, bond trading lead walks the same way, from the Bond Trading area through Rates, the team that owns it, to its lead.

In the editor

Searching by field

The query language reads a type’s fields by name, after its own fields:

Query Finds
type = team, is:team the type’s rows
lead = @alex-rivera rows whose field names Alex
owns = Checkout a value read as front matter reads it, by tag, title, or alias
team.lead = @alex-rivera a path, through up to two relations
owned-by.lead = @alex-rivera a reverse, by its name with hyphens
state = proposed, accepted any of the options
headcount > 10, date >= 2026-09-01 numbers and dates, in order
has:on-call, no:email a field filled, or empty
open-tasks > 0 a computed field
field.status = active a field whose name a search already uses
team = this in a query block, the note the block is in

A search lists the notes and tasks in the rows’ notes, and, for rows of a namespace, everything their tags are on; a type’s rows tab lists the rows. A field name no type has is still an error, which names the fields you may have meant. A type = that names no type reads as kind =, as it did before types.

After type = team, the search box offers the type’s fields, its reverses, and its computed fields, then its relations’ fields, lead.email; after a field, its values: rows, options, true and false, or dates. Builder lists them in groups: the type’s own under its name, then Through lead and the like, then Built in.

In query blocks

noteColumns= in a query block takes a field, a path, a reverse, or a computed field, headed as you write it, read from the row each note is, or else the rows its tags are. this is the note the block is in, in the editor, the Markdown preview, the note page, and Copy as Plain Markdown. The work sample’s Checkout v2 lists its decisions:

```deckard view=table noteColumns=date,state,decided-by
type = decision AND project = this
```

For assistants

deckard_describe_tag (Describe a Deckard tag and its fields) takes a tag, a title, or a few words naming a row and answers in plain text: its type, title, tag, and note, or No hub note.; each field and its values; its reverses and what they come from; its open tasks; and its latest entries with their dates. deckard_query takes the new fields, and it and deckard_list_tags name the workspace’s types and their fields. See AI assistants.

Zen

With Zen on, every name, value, count, and date stays drawn: each cell of a rows tab, its tab’s count, Sorted by lead with its Sort A-Z, a board’s cards, counts, and lane names, the fields on the Note page and a tag’s page, their names, which still open the form from the keyboard, From other notes, and where each is set. **Table Board, **Group, and Lanes wait for the pointer on their row, and a board’s + on its head. Each row’s or card’s ⋯ and Create hub note wait for the pointer or Tab on their row or card; Edit fields… waits for the pointer or Tab in the fields on the Note page, or in the hub card’s header on a tag’s page, and Add fields… in the Fields card.

← Writing notes: tags, people, and links · All topics · Tasks →