This documents the right way to work with Tiptap's editor API when building WYSIWYG interfaces, specifically patterns from the vmark project. It helps you decide when to use Tiptap's high-level commands versus dropping down to ProseMirror directly. Most formatting and content operations should go through editor.commands or the chainable API, while conversion layers and custom selections need direct ProseMirror access. The skill includes real gotchas from production code, like how cursorHandlers.ts incorrectly flattens block structure with textContent instead of using $pos helpers. If you're building on Tiptap and keep second-guessing which API layer to use, this will save you from fighting the framework.
npx skills add https://github.com/xiaolai/vmark --skill tiptap-editor