Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
DEPRECATED: Replaced by mcp-app-builder. Previously used to build ChatGPT apps with interactive React widgets via mcp-use.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
evals/widgets.json
1[2{3"query": "Create a weather widget with temperature and conditions",4"expected_behavior": "Creates resources/weather-display.tsx with widgetMetadata (description, props Zod schema), default export, McpUseProvider autoSize, isPending check. Server tool with widget config. Uses widget() helper."5},6{7"query": "My widget shows undefined for city name when it first loads",8"expected_behavior": "Missing isPending check. Widget renders before tool completes. Must check isPending and show loading state before accessing props."9},10{11"query": "I want the widget to have a button that calls a booking tool",12"expected_behavior": "Uses callTool from useWidget(). Shows async onClick: await callTool('book-item', { id }). Includes loading state and error handling."13},14{15"query": "I'm getting duplicate tool registration for my widget",16"expected_behavior": "Widget has exposeAsTool: true AND custom tool with widget: { name }. Fix: remove exposeAsTool: true from widgetMetadata (default is false) since the custom tool handles registration."17},18{19"query": "Show me how to build a product search widget with filter bar and product cards",20"expected_behavior": "Uses folder-based structure: resources/product-search/widget.tsx entry point, components/ProductCard.tsx, components/FilterBar.tsx. Entry exports widgetMetadata + default component."21},22{23"query": "How do I make my widget look good in dark mode?",24"expected_behavior": "Uses theme from useWidget(). Conditional styling based on theme === 'dark'. Shows both inline style and Tailwind approaches."25}26]27