opts.Content can already carry its own "---\n...\n---" block (e.g. from an upstream extraction/promotion step). writeHallNote used to prepend a second block unconditionally, making a standard frontmatter parser blind to everything the first block declared (title, tags, ...). splitFrontmatter now pulls the existing block's fields out first; wing/hall/created_at are always fresh-injected, and type/domain/ source_type prefer the note's own existing value over the opts fallback. Remaining existing fields are carried through verbatim into the single merged block. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Roq1ajWKR5f1hG5Df9wC6A