ai-infrastructure-hugg…
Hugging Face Inference SDK patterns for TypeScript/Node.js — InferenceClient setup, chat completion, text generation, streaming, embeddings, image generation,…
Headless rich text editor framework built on ProseMirror. Use when building an editor with TipTap — setup, extensions, custom nodes and marks, menus, node views, serialization.
$ npx -y skills add agents-inc/skills --skill web-editor-tiptap --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/web-editor-tiptapContext preview
The summary Claude sees to decide when to auto-load this skill.
Headless rich text editor framework built on ProseMirror. Use when building an editor with TipTap — setup, extensions, custom nodes and marks, menus, node views, serialization.
name: web-editor-tiptap description: Headless rich text editor framework built on ProseMirror. Use when building an editor with TipTap — setup, extensions, custom nodes and marks, menus, node views, serialization.
> **Quick Guide:** TipTap is a headless editor: it owns the schema, the state and the behaviour, and > hands the UI entirely to you. Everything is an extension — Nodes define content that lives in the > document, Marks define formatting applied to ranges of text, and Extensions add behaviour without > touching the schema. Commands are chained and applied by `.run()`. JSON is the persistence format. > **Current: v3.x** — Floating UI replaced Tippy.js, menus moved to a `/menus` sub-path, and > StarterKit now includes Link and Underline.
**Detailed Resources:**
---
[examples/core.md](examples/core.md).
[examples/custom-extensions.md](examples/custom-extensions.md) is unchanged; only the adapter and the node-view renderer differ.
`immediatelyRender: false` and let it mount on the client.
---
<critical_requirements>
**Set `immediatelyRender: false` in `useEditor` under any server-rendering framework.** The editor builds a DOM view on construction, so rendering it on the server produces a hydration mismatch.
**Import `BubbleMenu` and `FloatingMenu` from the `/menus` sub-path** — `@tiptap/react/menus` in v3. The root export no longer carries them.
**Give every custom Node a `name`, a `group`, a `parseHTML` and a `renderHTML`.** Schema resolution needs all four; content saved by a node missing `parseHTML` cannot be loaded back.
**Write chained commands as `editor.chain().focus()...run()`.** `.focus()` returns the cursor to the editor before the command applies, and `.run()` is what dispatches the transaction — a chain without it builds a transaction and discards it.
</critical_requirements>
---
**Auto-detection:** TipTap, tiptap, `@tiptap/core`, `@tiptap/react`, `@tiptap/vue-3`, `@tiptap/starter-kit`, `@tiptap/pm`, useEditor, useEditorState, EditorContent, EditorContext, BubbleMenu, FloatingMenu, Node.create, Mark.create, Extension.create, NodeViewWrapper, NodeViewContent, ReactNodeViewRenderer, editor.chain, editor.commands, editor.isActive, mergeAttributes, addKeyboardShortcuts, addInputRules, addPasteRules, addNodeView, addProseMirrorPlugins
**Applies to:**
**Handled elsewhere:**
visual design are settled by whatever owns components and styling
concern
transport
not clean it
---
<philosophy>
**Headless.** TipTap provides behaviour, schema and state, and imposes no UI. Every toolbar, menu and control in this skill is ordinary component code reading `editor.isActive(...)` and dispatching commands.
**Everything is an extension**, including paragraphs, bold and undo. So the schema is exactly what you assembled: nothing is present that you did not add, and any built-in can be configured or extended rather than worked around.
**ProseMirror underneath.** The schema system, transaction model and plugin architecture are ProseMirror's, reached through `@tiptap/pm/*`. Where TipTap's API runs out, `addProseMirrorPlugins()` is the escape hatch rather than a rewrite.
**One core, several adapters.** `@tiptap/core` is framework-free; `@tiptap/react` and `@tiptap/vue-3` add hooks and components over the same editor.
</philosophy>
---
<decision_framework>
New content that lives in the document? ├─ Block-level (paragraph, heading, image)? → Node, group: "block" ├─ Inline element (mention, emoji)? → Node, group: "inline", inline: true └─ Formatting over a text range? → Mark Behaviour with no schema change? ├─ Keyboard shortcut? → Extension + addKeyboardShortcuts ├─ Character count, placeholder, focus? → Extension └─ Lower-level control? → Extension + addProseMirrorPlugins
Just renders HTML? → renderHTML alone, no node view
Needs editable child content? → node view with NodeViewContent inside NodeViewWrapper
Buttons, inputs, live UI? → node view, contentEditable={false} on the controlsDo you need most of the standard formatting? ├─ YES → StarterKit, disabling what you do no
The official skills marketplace for Agents Inc. 150+ skills covering everything from React and Prisma to Redis, ElevenLabs, and infrastructure tooling. Pick the skills that match your stack and install them via Claude Code. Need more control?
Repo: agents-inc/skills
Hugging Face Inference SDK patterns for TypeScript/Node.js — InferenceClient setup, chat completion, text generation, streaming, embeddings, image generation,…
LiteLLM proxy server setup, TypeScript client patterns via OpenAI SDK, model routing, fallbacks, load balancing, spend tracking, virtual keys, and production…
Serverless GPU compute platform for AI model deployment — web endpoints, GPU functions, model serving, and TypeScript client patterns
Local LLM inference with the Ollama JavaScript client -- chat, streaming, tool calling, vision, embeddings, structured output, model management, and…
Replicate SDK patterns for TypeScript/Node.js -- client setup, predictions, streaming, webhooks, file handling, model versioning, deployments, and training
Together AI SDK patterns for TypeScript — client setup, chat completions, streaming, structured output, function calling, embeddings, image generation,…