Tiptap — Agent skill
SkillMonitoring & opsTiptap rich text editor for React and Next.js. Use when building or modifying rich text editors, @tiptap extensions, StarterKit, collaboration, comments, Content AI, import/export, or Pro extensions in this monorepo.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Tiptap — Agent skill skill
What this skill tells your AI
The instructions your AI receives, as published by asymmetric-al/core in .agents/skills/tiptap/SKILL.md and read by ahel’s review.
Guidance for coding agents working with the Tiptap rich text stack in this repository.
When to apply
Use this skill when:
- Editing or extending the shared rich text editor under
packages/ui/components/shadcn/rich-text-editor/ - Adding or upgrading
@tiptap/*packages - Integrating Tiptap with Next.js App Router (SSR, client boundaries, hydration)
- Implementing collaboration, comments, tracked changes, conversion, Content AI, or Pro features
Do not use this skill when:
- The task is unrelated to rich text (e.g. plain
<textarea>or a different editor) - You only need general React patterns (use
react-component-dev) or App Router structure (usenextjs-app-router)
This monorepo
- Shared editor implementation:
packages/ui/components/shadcn/rich-text-editor/(editor.tsx,extensions.ts,toolbar.tsx) - Primary dependencies:
packages/ui/package.json(@tiptap/react,@tiptap/starter-kit, extensions) - Consumers: Apps import via
@asym/ui(deep imports); do not duplicate editor primitives insideapps/* - Version alignment: Every package under
@tiptap/*in a given workspace should use the same semver line. The rootpackage.jsonmay also list@tiptap/*for app-level usage—keep versions consistent withpackages/uiwhen you touch either
CLIs (Skills ecosystem + Tiptap)
This repo standardizes on Bun (bun, bunx). Prefer bunx for one-off CLIs; npx remains valid for the open Skills package manager.
| Purpose | Command |
|---|---|
| Install / refresh the upstream Tiptap agent skill in another workspace | npx skills add ueberdosis/tiptap |
| Tiptap project CLI (init, add UI pieces, cloud login) | bunx @tiptap/cli@latest (or npx @tiptap/cli@latest) |
When running Tiptap CLI against this monorepo, set the working directory to the package that owns the editor (packages/ui) unless the CLI docs require the app root.
After changing this canonical skill under docs/ai/skills/tiptap/, run:
bun run skills:sync
Then commit updates under .cursor/skills/ and .agents/skills/ so CI (bun run skills:verify) stays green.
Best practices
General
- Target Tiptap 3 and follow the official installation guides when adding new surface area
- Align all
@tiptap/*versions in the workspace you modify - In Tiptap 3,
StarterKitalready includes Link and Underline; configure them throughStarterKit.configure(...)before adding standalone extensions - Pro extensions and private registry setup: see Tiptap docs (
pro-extensionsguide)
Next.js and React
- For SSR / App Router, set
immediatelyRender: falseonuseEditor(already done ineditor.tsx; preserve when refactoring) - Prefer the React APIs documented in Tiptap (
useEditor,EditorContent, extensions) - In 3.20+, import
BubbleMenu/FloatingMenufrom@tiptap/react/menus useEditordefaultsshouldRerenderOnTransactiontofalse; useuseEditorStatefor toolbars or other UI that depends on selection/active-state changes- For read-only feeds, previews, or list items, prefer
@tiptap/static-renderer(renderToReactElement/renderToHTMLString) over mounting a read-onlyuseEditorinstance per item
Reference repositories (optional, for deep searches)
If you need to grep upstream source or docs locally, clone (or update) into a git-ignored folder such as .reference/ (see repo .gitignore):
Do not commit these clones.
Feature map (read upstream docs)
When implementing these capabilities, open the matching section in tiptap-docs (local clone or https://tiptap.dev/docs):
- Real-time collaboration →
collaboration/ - Comments →
comments/ - Tracked changes →
tracked-changes/ - Import / export (DOCX, PDF, Markdown, etc.) →
conversion/ - Content AI (toolkit, insert content, proofreader, server AI) →
content-ai/ - Version history / snapshot / compare →
collaboration/documents/ - Pages (print layout) →
pages/
Workflow
- Open
packages/ui/components/shadcn/rich-text-editor/*and trace howextensionsand the toolbar map to the document schema - For new behavior, check Tiptap docs for the correct extension or command API
- Add dependencies in
packages/ui(and align root@tiptap/*if those packages are also used at root) - Keep
immediatelyRender: falsefor Next.js client editors - Use
useEditorStatefor toolbar / bubble-menu state that depends oneditor.isActive(...),editor.can(), oreditor.getAttributes(...) - Use
@tiptap/static-rendererfor read-only rendering unless a live editor instance is explicitly required - Run scoped checks:
bunx turbo run lint --filter=@asym/uiandbunx turbo run typecheck --filter=@asym/ui
Checklist
- Changes live in
packages/uiunless an app-only integration is explicitly required - All
@tiptap/*versions aligned in touched workspaces - Next.js editor options safe for SSR (
immediatelyRender: falsewhere applicable) - Toolbar / active-state UI uses
useEditorStatewhen it must track selection or mark changes - Read-only rendering uses
@tiptap/static-rendererunless a live editor is truly needed - Toolbar/commands and schema stay consistent (no orphaned marks/nodes)
- Lint and typecheck pass for
@asym/ui
References
references/upstream.md— attribution and refresh instructions- Official agent skill page: https://tiptap.dev/docs/resources/agent-skill
Common mistakes
- Omitting
immediatelyRender: falseand breaking hydration in the App Router - Mixing mismatched
@tiptap/*versions across packages - Mounting a read-only editor in feeds or lists instead of using
@tiptap/static-renderer - Reading
editor.isActive()directly in render withoutuseEditorState, causing stale toolbar state - Duplicating editor code in
apps/*instead of extending@asym/ui
Signals
- GitHub stars
- 391
- Forks
- 7
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
tiptap- Source
- github.com/asymmetric-al/core