算法艺术创作
algorithmic-art
通过代码和可调参数创作生成艺术与交互式视觉效果。
chat-apps-ui-sdk【设计与创意】Interactive UI rendered inside ChatGPT or Claude — OpenAI Apps SDK apps, MCP Apps (the @modelcontextprotocol/ext-apps standard), or MCP-UI components, with a Next.js/React server. Covers the MCP tool and resource architecture, the window.openai / ui-bridge data flow, widget state, sandbox/CSP security, display modes, visual design, and directory subm…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
A reference for building beautiful, review-ready apps that render interactive UI inside the chat surface of ChatGPT and Claude. As of January 2026 these platforms share one foundation — the MCP Apps standard (@modelcontextprotocol/ext-apps), rendered by Claude, ChatGPT, VS Code, and Goose. The OpenAI Apps SDK is a superset adding the window.openai bridge, and MCP-UI (@mcp-ui/server / @mcp-ui/client) is the community implementation. This skill contains 46 rules across 8 categories, ordered by impact so the highest-leverage decisions come first.
The mental model: an app is an MCP tool first, UI second. The model invokes a tool; the tool returns data plus a link to a UI resource; the host renders that resource in a sandboxed iframe; the iframe talks back over a defined bridge. Mistakes early in that chain mean nothing renders; mistakes later mean it renders broken, unsafe, or unpolished.
Reference these guidelines when:
structuredContent / content / _meta contract for a chat app_meta.ui.resourceUri, the text/html;profile=mcp-app MIME type, the ui:// scheme)window.openai, ui/notifications/*, MCP-UI onUIAction)| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | MCP Tool & Discovery Design | CRITICAL | tool- |
| 2 | UI Resource Wiring & Templates | CRITICAL | wire- |
| 3 | Host–Component Data Bridge | HIGH | bridge- |
| 4 | Display Modes & Responsive Layout | HIGH | display- |
| 5 | State & Model Context | HIGH | state- |
| 6 | Security & Data Boundaries | HIGH | sec- |
| 7 | Visual Design & UX Polish | MEDIUM-HIGH | design- |
| 8 | Distribution & Cross-Host Portability | MEDIUM | dist- |
tool-structured-content-contract - Split output across structuredContent, content, and _metatool-specific-verb-names - Name tools as specific action verbstool-output-schema-validation - Declare an output schema for structuredContenttool-safety-annotations - Set readOnlyHint and destructiveHint accuratelytool-minimal-scoped-inputs - Request minimal, task-scoped tool inputstool-feed-widget-in-response - Return everything the widget needs in one responsetool-honest-descriptions - Write honest tool descriptions and status textwire-resource-uri-link - Link each tool to its UI with resourceUriwire-mcp-app-mimetype - Serve UI resources with the mcp-app MIME typewire-ui-scheme-and-handler - Match the ui:// URI to a registered resourcewire-version-uri-cache-key - Version the resource URI as a cache keywire-inline-self-contained-bundle - Inline the component bundle into the resourcewire-set-ui-domain - Set a unique ui.domain for the componentbridge-render-from-notifications - Render from tool output, not first paintbridge-call-tools-app-visibility - Expose tools to the app before calling thembridge-followup-vs-silent-call - Choose follow-up messages or silent tool callsbridge-validate-postmessage-origin - Validate postMessage source in the hostbridge-handle-all-mcpui-actions - Handle every MCP-UI onUIAction typebridge-use-host-apis - Use host bridge APIs instead of reimplementingdisplay-pick-the-right-mode - Pick the display mode that fits the taskdisplay-request-mode-with-fallback - Request fullscreen but render inline firstdisplay-report-intrinsic-height - Report intrinsic height and respect maxHeightdisplay-avoid-nested-scroll - Avoid nested scroll inside inline cardsdisplay-respect-theme - Respect the host theme and color schemedisplay-responsive-breakpoints - Collapse layout gracefully on small screensstate-separate-three-stores - Separate widget, server, and model statestate-persist-widget-state - Persist UI state through setWidgetStatestate-no-secrets-in-state - Keep secrets and PII out of widget statestate-update-model-context - Push user decisions to model contextstate-keep-state-small - Keep widget state small and serializablesec-declare-csp-allowlist - Declare a CSP allowlist for the widgetsec-avoid-frame-domains - Avoid nested frame domains in the widgetsec-no-secrets-in-payloads - Never embed secrets in bundles or payloadssec-enforce-server-side-auth - Enforce authorization on the serversec-signal-oauth-challenge - Signal auth with a www-authenticate challengesec-minimize-restricted-data - Minimize and avoid restricted data inputsdesign-inherit-native-typography - Inherit native fonts and limit type sizesdesign-restrain-brand-color - Restrain brand color to accentsdesign-render-loading-empty-error - Render loading, empty, and error statesdesign-meet-wcag-contrast - Meet WCAG AA contrast and provide alt textdesign-limit-actions-hierarchy - Limit actions and keep a clear hierarchydesign-respect-reduced-motion - Respect reduced-motion preferencesdist-build-on-mcp-apps-standard - Build on the shared MCP Apps standarddist-degrade-without-ui - Return a text fallback when UI is unsupporteddist-provide-submission-metadata - Provide accurate submission metadatadist-feature-detect-host-apis - Detect host capabilities before useRead the individual reference files for full explanations and incorrect-vs-correct code examples. Start at the top — category 1 (tool-) and category 2 (wire-) gate whether anything renders at all, so resolve those before touching display or design.
| File | Description |
|---|---|
| references/_sections.md | Category definitions and impact ordering |
| assets/templates/_template.md | Template for new rules |
| metadata.json | Version and reference URLs |
build-mcp-server — Entry point for designing the MCP server shape (deployment model, tool patterns) this skill's UI rules build on top of.