Status (2026-10-31): design approved; Phase 1 (block references) is being planned. Canonical spec:
docs/superpowers/specs/2026-10-31-obsidian-block-references-design.md.
Follows Native Wikilinks & Embeds, Obsidian Vault Import and Live Preview & Daily Notes. Those covered everyday Obsidian use. This design brings in the syntax they left out of scope, which heavy Obsidian users depend on and which import used to delete.
| Phase | Feature |
|---|---|
| 1 | Block references: ^id anchors, [[Page#^id]] links, ![[Page#^id]] embeds, copy-block-link, [[Page#^ completion, import keeps block ids |
| 2 | ==highlight== and %% comments %% |
| 3 | Tick task checkboxes from the reader |
| 4 | Inline #tags: rendered, indexed, completed |
Each phase ships on its own. Before a phase deploys, the live corpus is scanned for text the new syntax would capture, so no existing page silently loses visible text.
^id on a paragraph or list item, or a standalone ^id paragraph that tags the block before it (tables, quotes, callouts, lists, code, display math). Headings don't take ids. Never inside code or math. The marker must follow whitespace, so x^2 is never an id.id="^id" and links use #^id, as in Obsidian Publish. A wikilink fragment starting with ^ is always a block, never a heading slug.[[Page#^id]] ("Copy URL" is the alternative). If the block has no id and the reader can edit, the server assigns one and saves a new version, refusing with 409 if the page changed meanwhile. The server stamps each block with a source ordinal so the click finds the exact block. Included and embedded content carries no ordinals.[[Page#^ lists that page's blocks. Picking one without an id assigns it (editors only).^id markers and [[x#^id]] links. Vaults imported earlier must be re-imported to recover them.Markers and comments are part of page source. They are stripped from everything derived for reading: rendered HTML, ?format=md, excerpts, chunks/embeddings, search, feeds and Knowledge Graph input. Source surfaces always keep block markers, so agents can link to blocks and never delete ids on write-back. Comments on source surfaces are kept for editors and admin MCP, and stripped for view-only readers and knowledge MCP. No new MCP tools: agents read and write markers as text.
<mark> with nested emphasis. Comments are hidden from readers but are not private: anyone who can edit the page or view its history sees them. An unclosed %% stays literal instead of hiding the rest of the page./ becomes -, the rule import already used), so #Foo and tags: [foo] are one tag. Inline tags feed search, facets and tag listings but not SEO metadata. Nested-tag hierarchy is out of scope.Canvas, Dataview, citations addressed by block id, automatic link rewrite when a block id changes, block-level backlinks, and nested-tag hierarchy.