All skills
alpic-ai avatar

/chatgpt-app-builder

@3340b34
by Alpicalpic-ai/skybridge2.1k stars
140

Guide developers through creating and updating ChatGPT apps. Covers the full lifecycle: brainstorming ideas against UX guidelines, bootstrapping projects, implementing tools/views, debugging, running dev servers, deploying and connecting apps to ChatGPT. Use when a user wants to create or update a ChatGPT app / MCP server for ChatGPT, or use the Skybridge framework.

Use this Skill: https://skilld.dev/gh/alpic-ai/skybridge/chatgpt-app-builder

This session only. Nothing lands on disk.

referencesarchitecture.md

≈1.4k tokens on demand. Your agent reads this file only when SKILL.md points to it.

Architecture Workflow

Concepts

A tool is a backend action with no UI. It takes input and returns structured output. It can CRUD data and perform operations (checkout, submit, etc.).

A view is a tool with a UI. It renders the tool output visually. The UI is a React app that can:

  • navigate multiple views (search → detail → confirmation)
  • manage its own state
  • call other tools to fetch data absent from the view output schema or trigger actions.

Step 1: Identify the UX Flows

A flow is an end-to-end user journey that accomplishes one goal (e.g., "book a flight" = search → select → checkout). Extract flows from the SPEC's value proposition. Stick to the spec: don't invent flows or infer intermediate steps.

Example:

Input (SPEC):

Book flights by destination and dates, and cancel existing bookings by booking ID.

✅ Good output:

Book flight:
1. Search flights
2. Select flight
3. Checkout
Cancel booking:
1. Cancel booking

❌ Bad output:

Search flights:
1. Search flights
2. View results
Book flight: ← wrong: split booking into separate flow
1. Select flight
2. Enter passenger details
3. Checkout
Cancel booking:
1. List bookings ← wrong: invented step
2. Cancel booking

Do not proceed to Step 2 yet: validate with user, adjust based on feedback.

Step 2: Does the flow need UI?

Based on the UX flow:

YES if:

  • Browsing/comparing multiple items
  • Visual data improves understanding (maps, charts, images)
  • Selections are easier in a visual layout

NO if:

  • Inputs are naturally conversational (amounts, dates, descriptions)
  • Output is simple enough as text
  • No visual element would meaningfully improve the experience

Step 3: Design the API

Best Practices

Naming: Both views and tools start with a verb: search_flights, get_details, create_checkout.

One view per flow/intent: Different flows can have separate views ❌ search_flights view + view_flight view (same flow → merge into one view) ✅ search_flights view + manage_bookings view (different flows)

Don't duplicate: The view's structuredContent and optional content are returned to the LLM for conversation, while _meta is delivered only to the view. The view can be re-invoked. Don't create a tool that duplicates what the view fetches. ❌ search_flights view + get_flights tool (same data → view already fetches this) ✅ unique search_flights view that can be re-invoked by LLM or user

View UI handles its own state: Cart, selections, and form inputs live in the view - not as tools. ❌ add_to_cart tool (cart is view state) ❌ select_seat tool (selection is view state) ❌ update_quantity tool (form input is view state) ✅ Tools are for backend operations only: create_checkout, submit_order, make_reservation

Don't lazy-load: Tool calls are expensive. Return all data needed for the view's initial interaction upfront in one tool result. Keep fields immediately useful to the model concise in structuredContent, and put additional details or display-only content not worth their full context cost in _meta rather than adding a tool whose only purpose is to hydrate the view. ❌ search_flights view + get_flight_details tool (lazy-loading details) ✅ search_flights view returns immediately useful flight data in structuredContent, and additional flight details or display-only content in _meta


For each identified flow:

If NEEDS UI → View + Optional Tool(s)

Example: Flight Booking

UX Flow:

  1. Search flights by dates, destination
  2. Browse results, select flight
  3. View flight details
  4. Click checkout → redirect to payment

API:

View: search_flights

  • Input: { dates, destination }
  • Output: { flights } → rendered as list
  • Views: search results, flight detail + passenger form
  • Calls create_checkout tool → redirects to payment

Tool: create_checkout

  • Input: { flightId, passengers[] }
  • Output: { checkoutUrl } → view redirects to Stripe

If DOES NOT NEED UI → Tool(s) Only

Example: Manage Bookings

UX Flow:

  1. User: "Cancel my flight to Paris"
  2. LLM asks for email, fetches bookings, asks clarifying questions if needed
  3. LLM confirms and cancels

API:

Tool: list_bookings

  • Input: { email }
  • Output: { booking[] } → LLM says "You have two upcoming flights for Paris, which one do you want to cancel?"

Tool: cancel_booking

  • Input: { bookingId }
  • Output: { booking } → LLM summarizes: "Your booking for Paris on Jan 1 has been canceled."

Step 4: Review

Present the final architecture to the user, adjust based on feedback.

Step 5: Update SPEC.md

Update SPEC.md with the UX flows and API design.

Example:

...

## UX Flows

Book a flight:
1. Search flights by destination and dates
2. Browse results, select flight
3. Enter passenger details
4. Checkout (redirect to Stripe)

Cancel booking:
1. Provide email
2. Select booking to cancel

## Tools and Views

**View: search_flights**
- **Input**: `{ destination, dates }`
- **Output**: `{ flights[] }`
- **Views**: results list, flight detail, passenger form
- **Behavior**: manages passenger state locally, calls `create_checkout` tool

**Tool: create_checkout**
- **Input**: `{ flightId, passengers[] }`
- **Output**: `{ checkoutUrl }`

**Tool: list_bookings**
- **Input**: `{ email }`
- **Output**: `{ bookings[] }`

**Tool: cancel_booking**
- **Input**: `{ bookingId }`
- **Output**: `{ success, booking }`

Source: SKILL.md on GitHub

1 alert6d5 checks · Risk SAFE
  • Gen Agent Trust Hub6d

    The skill is a comprehensive development guide for the Skybridge framework, which helps build ChatGPT applications. It is generally safe and follows security best practices, such as documenting CSP and OAuth configurations. It identifies a minor risk of indirect prompt injection as it processes user-provided specification files to guide the development process.

  • Socket6d

    No alerts

  • Snyk6d

    Risk: LOW · No issues

  • Runlayer7mo

    8/23 files flagged

  • ZeroLeaks5mo

    Score: 93/100 · 2 sections analyzed

Signed by skilld at 3340b34. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 2 days ago.

Activeupdated last week

README badge

README badge for alpic-ai/skybridge

Guides developers through the complete lifecycle of building ChatGPT apps—from ideation and project setup through implementation, debugging, and deployment to the ChatGPT Directory. Covers the Skybridge MCP server framework, tool integration, custom UI views, state management, OAuth, and the dual-user model where both the human and ChatGPT LLM interact with the same view.

Generated from the current SKILL.md.

What is a ChatGPT app and how does it work?
A ChatGPT app is a conversational experience that extends ChatGPT through tools and custom UI views, built as an MCP server. The view serves as a shared surface where both the human user and the ChatGPT LLM interact and collaborate.
Do I need a SPEC.md file before building?
Yes. You should read discover.md first to create a SPEC.md that documents your app's requirements and design decisions before implementing anything.
What does this skill cover?
The skill guides the full lifecycle: brainstorming ideas against UX guidelines, bootstrapping projects, implementing tools and views, debugging, running dev servers, deploying via Alpic, and publishing to the ChatGPT Directory.
Does this skill provide API documentation?
Yes. Full API docs are available at https://docs.skybridge.tech/api-reference.md, and the skill includes implementation references for specific tasks like OAuth, state management, and CSP configuration.

Generated from the current SKILL.md. These answers refresh after source changes.