Tiptap Development Expert
Expert guidance for building rich text editors with Tiptap - a headless, framework-agnostic editor built on ProseMirror.
See also: tiptap-editor skill — VMark-specific Tiptap API patterns (commands, node traversal, selection handling). Use tiptap-dev for general Tiptap/ProseMirror development, and tiptap-editor for VMark-specific editor integration.
When to Use This Skill
- Creating custom nodes, marks, or extensions for Tiptap
- Implementing input rules or paste rules
- Working with the Tiptap commands API
- Building React integrations with useEditor
- Extending existing extensions
- Creating custom node views
- Understanding the schema and content model
Reference Files
| File |
Description |
references/extensions.md |
Extension types (Node, Mark, Extension), creation patterns |
references/commands-and-api.md |
Commands API, editor API, chaining |
references/input-paste-rules.md |
Input rules and paste rules |
references/react-integration.md |
React-specific hooks and components |
references/schema.md |
Schema properties, content patterns |
references/examples.md |
Complete working examples |
Quick Reference
Extension Types
// Functionality extension (no schema)
Extension.create({ name: 'myExtension', addKeyboardShortcuts() { ... } })
// Node extension (block content)
Node.create({ name: 'myNode', group: 'block', content: 'inline*' })
// Mark extension (inline formatting)
Mark.create({ name: 'myMark', parseHTML() { ... }, renderHTML() { ... } })
Command Chaining
editor.chain().focus().toggleBold().run()
editor.can().chain().focus().toggleBold().run() // dry run
React Integration
const editor = useEditor({
extensions: [StarterKit],
content: '<p>Hello</p>',
immediatelyRender: false, // for SSR
})
Core Concepts
- Headless Architecture: Tiptap provides logic, you control rendering
- Extension-Based: Everything is an extension (nodes, marks, functionality)
- ProseMirror Foundation: Built on ProseMirror, full access to its APIs
- Schema-Driven: Content model defined by node/mark schemas
- Command Pattern: All operations via chainable commands
1---2name: tiptap-dev3description: Expert guidance for building rich text editors with Tiptap - a headless, framework-agnostic editor built on ProseMirror. Use when creating custom nodes, marks, or extensions for Tiptap, implementing input rules or paste rules, working with the Tiptap commands API, building React integrations with useEditor, extending existing extensions, or creating custom node views.4---56# Tiptap Development Expert78Expert guidance for building rich text editors with Tiptap - a headless, framework-agnostic editor built on ProseMirror.910**See also:** `tiptap-editor` skill — VMark-specific Tiptap API patterns (commands, node traversal, selection handling). Use `tiptap-dev` for general Tiptap/ProseMirror development, and `tiptap-editor` for VMark-specific editor integration.1112## When to Use This Skill1314- Creating custom nodes, marks, or extensions for Tiptap15- Implementing input rules or paste rules16- Working with the Tiptap commands API17- Building React integrations with useEditor18- Extending existing extensions19- Creating custom node views20- Understanding the schema and content model2122## Reference Files2324| File | Description |25|------|-------------|26| `references/extensions.md` | Extension types (Node, Mark, Extension), creation patterns |27| `references/commands-and-api.md` | Commands API, editor API, chaining |28| `references/input-paste-rules.md` | Input rules and paste rules |29| `references/react-integration.md` | React-specific hooks and components |30| `references/schema.md` | Schema properties, content patterns |31| `references/examples.md` | Complete working examples |3233## Quick Reference3435### Extension Types3637```typescript38// Functionality extension (no schema)39Extension.create({ name: 'myExtension', addKeyboardShortcuts() { ... } })4041// Node extension (block content)42Node.create({ name: 'myNode', group: 'block', content: 'inline*' })4344// Mark extension (inline formatting)45Mark.create({ name: 'myMark', parseHTML() { ... }, renderHTML() { ... } })46```4748### Command Chaining4950```typescript51editor.chain().focus().toggleBold().run()52editor.can().chain().focus().toggleBold().run() // dry run53```5455### React Integration5657```typescript58const editor = useEditor({59 extensions: [StarterKit],60 content: '<p>Hello</p>',61 immediatelyRender: false, // for SSR62})63```6465## Core Concepts66671. **Headless Architecture**: Tiptap provides logic, you control rendering682. **Extension-Based**: Everything is an extension (nodes, marks, functionality)693. **ProseMirror Foundation**: Built on ProseMirror, full access to its APIs704. **Schema-Driven**: Content model defined by node/mark schemas715. **Command Pattern**: All operations via chainable commands