Auto-generate missing fields:
description (~150 chars): A retrieval filter, not a summary. It answers "should I load this file?" Include what makes the content distinctive — mechanism, scope, or implication. Must differ meaningfully from the title.
type: One of: task, prd, knowledge, meeting-note, decision-record, progress-update, learning, track, slice
topics: 1-3 tags from the Topic Vocabulary:
multi-agent, canva-ai, customer-experience, leadership, product-craft, strategy, voice-agent, localization, retention, team-cn
maturity (knowledge files only): seedling | developing | evergreen
aliases (canonical person / project pages only): shorthand or alternate names already used elsewhere in the workspace. Prefer [] over guessing.
people / projects / channels (task and meeting-note files only): arrays of graph node ids from Context/Memory/graph.yaml
- Only include ids that are explicit in the file or strongly implied by structured sections like attendees, DACI tables, or named Slack channels
- Use snake_case graph node ids only
- If a name does not resolve to an existing node, do not invent one silently. Surface it as an unresolved suggestion for the user to confirm.