fix(skills, ui-registry): add @tiptap/extensions dep and fix path alias guidance#2665
Conversation
…as guidance - Add @tiptap/extensions to message-input config.json (needed by @tiptap/extension-placeholder) - Update path alias guidance to check all projects, not just Vite. Not all Next.js projects have @/* configured (e.g., Cal.com uses ~/* and @components/* instead).
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
There was a problem hiding this comment.
Clean, well-scoped fix. Both changes are correct:
-
@tiptap/extensionsdep: Confirmed via npm registry that@tiptap/extension-placeholder@3.20.4declares@tiptap/extensionsas a peer dependency — consumer projects must install it explicitly. The addition is correctly placed in alphabetical order. -
Path alias guidance: The old text incorrectly assumed all Next.js projects have
@/*configured. The rewrite properly instructs agents to check first and provides clear guidance for adding the alias when missing, with a sensible note about["./*"]for projects withoutsrc/. Restructuring tsconfig guidance before the Vite-specific section is the right call since it applies universally.
The skill hardcoded message-thread-collapsible without explaining the other options. Added a table showing when to use collapsible vs panel vs full based on the app's layout.
|
TL;DR — Fixes integration issues found while adding Tambo to Cal.com: adds the missing Key changes
Summary | 6 files | 6 commits | base: Missing
|
There was a problem hiding this comment.
Non-blocking feedback (1)
- Align follow-on examples with the selected chat component — .../building-with-tambo/SKILL.md#L244
Step 6 now defaults tomessage-thread-panel, but the keyboard-isolation and z-index snippets later in the file still hardcode<MessageThreadCollapsible />.
For readers who follow the default command, that creates an easy copy/paste mismatch between the installed component and the example JSX. Consider a neutral placeholder (for example,<SelectedMessageThread />) or a short note telling readers to swap in the component they installed.
If you'd like me to push fixes, reply with item numbers (for example: please fix 1).
The examples hardcoded MessageThreadCollapsible but Step 6 now defaults to message-thread-panel. Added comments noting to swap in whichever component was installed.
…eference Without this, agents guess the wrong field names (label/prompt instead of title/detailedSuggestion) when passing initialSuggestions to chat components, resulting in empty suggestion pills.
…null handling Patterns discovered integrating Tambo into Cal.com: - registerTool() requires outputSchema (defineTool doesn't) - Dynamic registration via useEffect + useRef guard for apps with existing API clients (tRPC, etc.) - Cache invalidation after mutations so host UI updates - Null stripping since AI sends null for optional fields
…ambo Was missing the registerTools function example and full cache invalidation section.

Summary
@tiptap/extensionsto message-input config.json (needed by@tiptap/extension-placeholder)@/*, not just Vite (Cal.com uses custom aliases)Suggestiontype definition andinitialSuggestionsusage to threads reference (both skills)registerTool+useEffect+useRefguard) to tools referenceWhy
Follow-up to #2650. Found while integrating Tambo into Cal.com (34k stars, Next.js + Tailwind + tRPC):
@tiptap/extension-placeholderimports from@tiptap/extensionswhich wasn't in the dep list (TAM-1355)~/*and@components/*instead of@/*, so Tambo components failed to resolvemessage-thread-collapsiblebut Cal.com neededmessage-thread-panelfor its sidebar layoutlabel/promptfor initialSuggestions produced empty pills (actual type usestitle/detailedSuggestion)registerTool()requiresoutputSchema(unlikedefineTool()) but this wasn't documenteddefineTool+TamboProvider tools=[]pattern doesn't work when tools need access to the host app's API client (tRPC). TheregisterTool+useEffectpattern is the right approach but wasn't documented.All patterns match how the Tambo web app itself does tool registration (
apps/web/lib/tambo/tools/).Test plan
tambo add message-thread-collapsible --yesand verify@tiptap/extensionsresolvesSuggestiontype (id,title,detailedSuggestion,messageId)registerToolpattern withuseRefguard, cache invalidation, and null stripping