WHEN building ChatGPT apps using the OpenAI Apps SDK and MCP; create conversational, composable experiences with proper UX, UI, state management, and server patterns.
View on GitHubplugins/web/skills/chatgpt-app-sdk/SKILL.md
February 1, 2026
Select agents to install to:
npx add-skill https://github.com/mintuz/claude-plugins/blob/main/plugins/web/skills/chatgpt-app-sdk/SKILL.md -a claude-code --skill chatgpt-app-sdkInstallation paths:
.claude/skills/chatgpt-app-sdk/# ChatGPT Apps SDK Best Practices
Build ChatGPT apps using the OpenAI Apps SDK, Model Context Protocol (MCP), and component-based UI patterns.
## Quick Reference
| Topic | Guide |
| ----------------------------------------------- | ----------------------------------------------------------- |
| Display modes, visual design, accessibility | [ui-guidelines.md](./references/ui-guidelines.md) |
| MCP architecture, tools, and server patterns | [mcp-server.md](./references/mcp-server.md) |
| React patterns and window.openai API | [ui-components.md](./references/ui-components.md) |
| React hooks (useOpenAiGlobal, useWidgetState) | [react-integration.md](./references/react-integration.md) |
| Three-tier state architecture and best practice | [state-management.md](./references/state-management.md) |
## Critical Setup Requirements
| Issue | Prevention |
| ------------------- | ----------------------------------------------------- |
| CORS blocking | Enable `https://chatgpt.com` origin on endpoints |
| Widget 404s | Use `ui://widget/` prefix format for widget resources |
| Plain text display | Set MIME type to `text/html+skybridge` for widgets |
| Tool not suggested | Use action-oriented descriptions in tool definitions |
| Missing widget data | Pass initial data via `_meta.initialData` field |
| CSP script blocking | Reference external scripts from allowed CDN origins |
## Decision Trees
### What display mode should I use?
```
Is this a multi-step workflow or deep exploration?
├── Yes → Fullscreen
└── No → Is this a parallel activity (game, live session)?
├── Yes → Picture-in-Picture (PiP)
└── No → Inline
├── Single item with quick action → Inline Card
└── 3-8 similar items → Inline Carousel
```
###