Skip to content

Notion adapter

Transport for work-tracking when hoen.yamlwork_tracking.backend: notion. Field meanings and script payload: shared-fields.md. Workspace URLs/UUIDs live only in the consumer repo's hoen.yaml.

hoen.yaml board keys

Field Path Notes
Name work_tracking.board.name Human label
URL work_tracking.board.url Full Notion board URL
Data source ID work_tracking.board.data_source_id Collection UUID from MCP fetch
Field IDs work_tracking.board.fields.* Optional — store after bootstrap

Obtain data source: Notion MCP fetch on the board URL → collection://….

Component type vs Product

Field Meaning
Component type Which git repo owns the work (one per codebase)
Product Optional product-line / module tags

Field bootstrap

Prefer creating the shared fields as Notion database properties on first link. If create is blocked, stamp values into the page body / available properties and retry next sync. Persist property IDs in hoen.yaml when known.

Useful Notion-only extras (not required by the shared contract):

Property Type Notes
Task name title Card title
Plan doc url GitHub blob URL
Keep on board checkbox Keep Done cards visible
Last sync formula Friendly age from Plan synced at (below)

Last sync formula (one-time board setup)

if(empty(prop("Plan synced at")), "Not synced",
  if(dateBetween(now(), prop("Plan synced at"), "days") == 0, "Synced today",
    if(dateBetween(now(), prop("Plan synced at"), "days") == 1, "Synced yesterday",
      "Synced " + format(dateBetween(now(), prop("Plan synced at"), "days")) + " days ago")))

Sync

node library/skills/work-tracking/scripts/format-sync.mjs \
  --input path/to/plan.effort.json --map notion --pretty

Apply notion_properties (or properties) via Notion MCP. Preflight: mcp-preflight.md.

  • Create card: notion-create-pages with parent.data_source_id from hoen.yaml
  • Upsert: Plan ID + Component type, or Board item URL from plan ## Tracking

Card layout

Compact views: Work typeProgress headlineLast sync. Do not show Current plan phase or Plan synced at on card faces.