Notion adapter¶
Transport for work-tracking when hoen.yaml → work_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-pageswithparent.data_source_idfromhoen.yaml - Upsert: Plan ID + Component type, or Board item URL from plan
## Tracking
Card layout¶
Compact views: Work type → Progress headline → Last sync. Do not show Current plan phase or Plan synced at on card faces.