Concepts · §03

Types

A type defines what fields a fragment carries. Every fragment has exactly one type. Five built-in types ship with parc; you can add your own with a YAML schema file.

# Built-in types

Type Alias Purpose Key fields
note n Captured thoughts, references, anything
todo t Actionable work status (open / in-progress / done / cancelled), priority (low / medium / high / critical), due, assignee
decision d Architectural and design decisions status (proposed / accepted / superseded / deprecated), deciders
risk r Things that could go wrong status (identified / mitigating / accepted / resolved), likelihood, impact, mitigation
idea i Half-formed thoughts worth keeping status (raw / exploring / promoted / parked / discarded)

The aliases work everywhere a type name is expected: parc n "..." is parc new note "...", and parc list t is parc list todo.

# Common envelope

Every type, built-in or custom, carries the same common fields:

Field Type Notes
id ULID Filename and primary key
type string Must match a registered schema
title string Required
tags string[] Merged with inline #hashtags from the body
links ULID[] Outgoing wiki-links
created_at ISO 8601 Set on creation
updated_at ISO 8601 Updated on every save
created_by string? Optional, from config.yml#user

Type-specific fields go alongside these in the same frontmatter block.

# Custom types

Drop a YAML schema into <vault>/schemas/ to register a new type. See Custom types for the schema format and a worked example.

# Listing registered types

parc types               # list all registered types in the active vault
parc schema show todo    # print a type's schema