/chatgpt-app-builder
Guide developers through creating and updating ChatGPT plugins. Covers the full lifecycle: brainstorming ideas against UX guidelines, bootstrapping projects, implementing tools/views, debugging, running dev servers, deploying and connecting plugins to ChatGPT. Use when a user
Claude Code
$ npx -y skills add alpic-ai/skybridge --skill chatgpt-app-builder --agent claude-code
Codex
$ npx skills add alpic-ai/skybridge --skill chatgpt-app-builder -a codex -y
Cursor
$ npx skills add alpic-ai/skybridge --skill chatgpt-app-builder -a cursor -y
Gemini CLI
$ npx skills add alpic-ai/skybridge --skill chatgpt-app-builder -a gemini-cli -y
GitHub Copilot
$ npx skills add alpic-ai/skybridge --skill chatgpt-app-builder -a github-copilot -y
OpenCode
$ npx skills add alpic-ai/skybridge --skill chatgpt-app-builder -a opencode -y
Windsurf
$ npx skills add alpic-ai/skybridge --skill chatgpt-app-builder -a windsurf -y
SKILL.md
chatgpt-app-builder.SKILL.mdname: chatgpt-app-builder
description: |
Guide developers through creating and updating ChatGPT plugins.
Covers the full lifecycle: brainstorming ideas against UX guidelines, bootstrapping projects, implementing tools/views, debugging, running dev servers, deploying and connecting plugins to ChatGPT.
Use when a user wants to create or update a ChatGPT plugin (formerly called a ChatGPT app) / MCP server for ChatGPT, or use the Skybridge framework.
Creating Plugins For LLMs
ChatGPT plugins are conversational experiences that extend ChatGPT through tools and custom UI views. They're built as MCP servers invoked during conversations.
⚠️ The plugin is consumed by two users at once: the **human** and the **ChatGPT LLM**. They collaborate through the view—the human interacts with it, the LLM sees its state. Internalize this before writing code: the view is your shared surface.
SPEC.md keeps track of the plugin's requirements and design decisions. Keep it up to date as you work on the plugin.
**Building an ecommerce plugin?** → Read [ecommerce.md](references/ecommerce.md) first.
**No SPEC.md?** → Read [discover.md](references/discover.md) first. Nothing else until SPEC.md exists.
**SPEC.md exists?** → Read SPEC.md, then follow [architecture.md](references/architecture.md) to design the change. Update SPEC.md, then read the relevant Implementation references below before writing code.
**Migrating from Skybridge `< 0.36.x`?** → Read [migrate-to-v1.md](references/migrate-to-v1.md) first. Users may reference `skybridge >= 0.36.x` as v1.
**Migrating from Skybridge `1.x` to `2.x`?** → Fetch the [v2.0.0 release notes](https://github.com/alpic-ai/skybridge/releases/tag/v2.0.0) first and follow them.
Setup
1. **Copy template** → [copy-template.md](references/copy-template.md): when starting a new project with ready SPEC.md 2. **Run locally** → [run-locally.md](references/run-locally.md): when ready to test, need dev server or ChatGPT connection 3. **Evals** → [evals.md](references/evals.md): when checking that a real model reaches the right tools from natural prompts, in a test
Architecture
Design or evolve UX flows and API shape → [architecture.md](references/architecture.md)
Implementation
- **Fetch and render data** → [fetch-and-render-data.md](references/fetch-and-render-data.md): when implementing server handlers and view data fetching
- **State and context** → [state-and-context.md](references/state-and-context.md): when persisting view UI state and updating LLM context
- **Prompt LLM** → [prompt-llm.md](references/prompt-llm.md): when view needs to trigger LLM response
- **UI guidelines** → [ui-guidelines.md](references/ui-guidelines.md): display modes, layout constraints, theme, device, and locale
- **External links** → [open-external-links.md](references/open-external-links.md): when redirecting to external URLs or setting "open in app" target
- **OAuth** → [oauth.md](references/oauth.md): when tools need user authentication to access user-specific data
- **Assets and styling** → [assets-and-styling.md](references/assets-and-styling.md): when adding images, fonts or CSS to views
- **CSP** → [csp.md](references/csp.md): when declaring allowed domains for fetch, assets, redirects, or iframes
- **Events** → [events.md](references/events.md): when ChatGPT should react to activity in the app without the user, such as new comments or incidents
- **OpenAI MCP extensions** → [openai-extensions.md](references/openai-extensions.md): when the view should open from the ChatGPT sidebar, a conversation side panel, a file, or a deep link, or use ChatGPT at-mentions, titled messages or local files
Deploy
- **Ship to production** → [deploy.md](references/deploy.md): when ready to deploy via Alpic
- **Publish to ChatGPT Directory** → [publish.md](references/publish.md): when ready to submit for review
Full API docs: [https://docs.skybridge.tech/api-reference.md](https://docs.skybridge.tech/api-reference.md)
Release notes & changelog: [https://skybridge.tech/changelog.md](https://skybridge.tech/changelog.md)
Read more
name: chatgpt-app-builder description: | Guide developers through creating and updating ChatGPT plugins. Covers the full lifecycle: brainstorming ideas against UX guidelines, bootstrapping projects, implementing tools/views, debugging, running dev servers, deploying and connecting plugins to ChatGPT. Use when a user wants to create or update a ChatGPT plugin (formerly called a ChatGPT app) / MCP server for ChatGPT, or use the Skybridge framework.
Creating Plugins For LLMs
ChatGPT plugins are conversational experiences that extend ChatGPT through tools and custom UI views. They're built as MCP servers invoked during conversations.
⚠️ The plugin is consumed by two users at once: the **human** and the **ChatGPT LLM**. They collaborate through the view—the human interacts with it, the LLM sees its state. Internalize this before writing code: the view is your shared surface.
SPEC.md keeps track of the plugin's requirements and design decisions. Keep it up to date as you work on the plugin.
**Building an ecommerce plugin?** → Read [ecommerce.md](references/ecommerce.md) first.
**No SPEC.md?** → Read [discover.md](references/discover.md) first. Nothing else until SPEC.md exists.
**SPEC.md exists?** → Read SPEC.md, then follow [architecture.md](references/architecture.md) to design the change. Update SPEC.md, then read the relevant Implementation references below before writing code.
**Migrating from Skybridge `< 0.36.x`?** → Read [migrate-to-v1.md](references/migrate-to-v1.md) first. Users may reference `skybridge >= 0.36.x` as v1.
**Migrating from Skybridge `1.x` to `2.x`?** → Fetch the [v2.0.0 release notes](https://github.com/alpic-ai/skybridge/releases/tag/v2.0.0) first and follow them.
Setup
1. **Copy template** → [copy-template.md](references/copy-template.md): when starting a new project with ready SPEC.md 2. **Run locally** → [run-locally.md](references/run-locally.md): when ready to test, need dev server or ChatGPT connection 3. **Evals** → [evals.md](references/evals.md): when checking that a real model reaches the right tools from natural prompts, in a test
Architecture
Design or evolve UX flows and API shape → [architecture.md](references/architecture.md)
Implementation
- **Fetch and render data** → [fetch-and-render-data.md](references/fetch-and-render-data.md): when implementing server handlers and view data fetching
- **State and context** → [state-and-context.md](references/state-and-context.md): when persisting view UI state and updating LLM context
- **Prompt LLM** → [prompt-llm.md](references/prompt-llm.md): when view needs to trigger LLM response
- **UI guidelines** → [ui-guidelines.md](references/ui-guidelines.md): display modes, layout constraints, theme, device, and locale
- **External links** → [open-external-links.md](references/open-external-links.md): when redirecting to external URLs or setting "open in app" target
- **OAuth** → [oauth.md](references/oauth.md): when tools need user authentication to access user-specific data
- **Assets and styling** → [assets-and-styling.md](references/assets-and-styling.md): when adding images, fonts or CSS to views
- **CSP** → [csp.md](references/csp.md): when declaring allowed domains for fetch, assets, redirects, or iframes
- **Events** → [events.md](references/events.md): when ChatGPT should react to activity in the app without the user, such as new comments or incidents
- **OpenAI MCP extensions** → [openai-extensions.md](references/openai-extensions.md): when the view should open from the ChatGPT sidebar, a conversation side panel, a file, or a deep link, or use ChatGPT at-mentions, titled messages or local files
Deploy
- **Ship to production** → [deploy.md](references/deploy.md): when ready to deploy via Alpic
- **Publish to ChatGPT Directory** → [publish.md](references/publish.md): when ready to submit for review
Full API docs: [https://docs.skybridge.tech/api-reference.md](https://docs.skybridge.tech/api-reference.md)
Release notes & changelog: [https://skybridge.tech/changelog.md](https://skybridge.tech/changelog.md)
The full-stack React framework for MCP Apps and MCP Servers. Documentation · Quickstart · Examples
More skills from other plugins.
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
ask-matt
Ask which skill or flow fits your situation. A router over the skills in this repo.
Questions about chatgpt-app-builder.
- Which coding agents can use chatgpt-app-builder?
- chatgpt-app-builder installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

