tiptap-editor

Tiptap Editor API Patterns

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "tiptap-editor" with this command: npx skills add xiaolai/vmark/xiaolai-vmark-tiptap-editor

Tiptap Editor API Patterns

Overview

This skill documents proper Tiptap API usage patterns for vmark development. It helps distinguish when to use Tiptap's high-level API vs direct ProseMirror access.

When to Use Tiptap API

Always prefer Tiptap API for:

  • Format commands (bold, italic, underline, etc.)

  • Block type changes (heading, paragraph, code block)

  • List operations (bullet, ordered, toggle, indent/outdent)

  • Table operations via Tiptap table extension

  • Content insertion and replacement

  • Editor state queries (isActive , getAttributes )

Tiptap patterns to use:

// Direct commands editor.commands.toggleBold() editor.commands.setHeading({ level: 2 }) editor.commands.setContent(doc, { emitUpdate: false })

// Chained commands (for multiple operations) editor.chain().focus().setHeading({ level: 2 }).run() editor.chain().focus().toggleMark("underline").run()

// State queries editor.isActive("blockquote") editor.isActive("heading", { level: 2 }) editor.getAttributes("link")

When Direct ProseMirror is Appropriate

Use ProseMirror directly for:

  • Markdown conversion layer (proseMirrorToMdast.ts , mdastToProseMirror.ts )

  • Multi-cursor/selection subclassing (MultiSelection.ts )

  • Custom node views

  • Low-level transaction manipulation

  • Schema-level operations

Known Issues in vmark

  1. cursorHandlers.ts Block Boundary Issue

src/hooks/mcpBridge/cursorHandlers.ts uses doc.textContent which flattens the document and loses block boundaries. The correct approach is to use $pos helpers:

// WRONG - loses block structure const text = doc.textContent;

// RIGHT - respects block boundaries const $pos = doc.resolve(from); const currentNode = $pos.parent; const blockStart = $pos.before($pos.depth); const blockEnd = $pos.after($pos.depth);

  1. Cursor Sync Drift After WYSIWYG Edits

sourceLine attributes are only set on initial parse. After WYSIWYG edits that add/remove blocks, line numbers no longer match the source. This is a known limitation.

  1. HtmlNodeView.ts Store Issue

src/plugins/markdownArtifacts/HtmlNodeView.ts writes cursor info to wrong store.

References

  • references/patterns.md

  • Detailed API patterns and $pos usage

  • references/examples.md

  • Real code examples from vmark codebase

Workflow

  • Identify operation type (format, block, selection, traversal)

  • Check if Tiptap has a built-in command for it

  • Use editor.commands.xxx() for single operations

  • Use editor.chain().focus().xxx().run() when focus is needed or chaining

  • For node traversal, use doc.resolve(pos) to get $pos helpers

  • For state queries, use editor.isActive() or editor.getAttributes()

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Secretary Memory Hook

秘书记忆系统核心 Hook — 会话压缩时自动触发摘要/偏好提取/上下文召回。基于 session:compact:before 和 session:compact:after 事件,实现功能3(会话摘要)、功能4(偏好提取)、功能8(跨会话召回)的自动化。

Registry SourceRecently Updated
General

AI Era Career Planner

AI时代职业规划师技能。专为AI时代职场变化而设计,帮助用户应对AI带来的职业冲击与机遇。当用户询问职业规划、职业建议、选专业、职场转型、未来就业方向时触发。功能包括:收集用户基本信息、霍兰德职业兴趣测评、职业价值观分析、AI时代职业影响评估(高危/中危/低危分级),并输出完整的个性化职业规划报告。关键词:职业规...

Registry SourceRecently Updated
General

OpenClaw Hi Install

Install or repair Hirey Hi on a local OpenClaw host through the official ClawHub package path, then complete the local MCP, receiver, registration, and healt...

Registry SourceRecently Updated
5630yzlee
General

AIsa Provider

Configure AIsa as an OpenAI-compatible provider endpoint for OpenClaw and related runtimes. Use this skill when the user wants to set `AISA_API_KEY`, point a...

Registry SourceRecently Updated