# Val Town (ChatGPT App)

> Build and deploy apps

- Type: app
- Publisher: Val Town (official)
- Categories: Development, DevOps & Cloud
- Website: https://chatgpt.com/plugins/plugin_asdk_app_6a5e7ac6ddf881919de226cb7506ef57
- Open in ChatGPT: https://chatgpt.com/plugins/plugin_asdk_app_6a5e7ac6ddf881919de226cb7506ef57
- Version: 3.0.0
- Listed: 2026-10-04

## About

Val Town helps users create, inspect, run, and deploy apps; manage files, branches, schedules, environment variables, SQLite data, and blob storage; and debug executions through ChatGPT.

## How to use

1. **Add it in ChatGPT** Open Val Town in ChatGPT's Plugin directory (button above), select + to add it and sign in if asked.

2. **Use it in a chat** Type @ in the composer and pick Val Town, or start your message with its name. ChatGPT may also suggest it when it fits what you ask.

## Skills

- **blob-storage**: Use when a val needs simple key/value persistence — JSON documents, cached responses, uploaded files, or binary assets. Covers the std/blob API, listing and deleting keys, account-global or val scoping, and storage limits.
- **client-side-js**: Use when a val needs to ship JavaScript that runs in the browser — React apps, vanilla DOM scripts, canvas/games, htmx/Alpine, or any client-side module beyond a single inline snippet. Explains how Val Town serves transpiled .ts/.tsx/.jsx modules with no build step, how the browser resolves their imports, and how to load third-party deps.
- **create-skill**: Use when the user wants to persist a preference, skill, or knowledge. Use when it would aid future val development to store a memory of how best to build something.
- **cron-and-intervals**: Use when building a val that runs on a schedule — periodic jobs, recurring tasks, polling, cron jobs, monitoring, alerting. Covers the interval handler signature, cron expressions, the UTC timezone constraint, and the `lastRunAt` pattern for detecting new items since the previous run.
- **email**: Use when a val sends email, receives email, or is triggered by an incoming email. Covers email-type vals (the Email handler shape, attachment limits, the assigned val email address) and sending mail via std/email.
- **http-endpoints**: Use when building an HTTP val — a web endpoint, API route, webhook receiver, or any val that responds to HTTP requests. Covers the handler signature, Hono usage, the endpoint URL, CORS behavior, redirects, and Val Town-specific limitations.
- **oauth**: Use when a val needs to require login with a Val Town account — gating routes behind authentication, identifying the current user, building user-specific dashboards. Covers std/oauth's `oauthMiddleware` and `getOAuthUserData`, the auto-managed `/auth/*` routes, and session behavior. For third-party OAuth providers (Google, GitHub, etc.) see the `third-party-integrations` skill instead.
- **react-ui**: Use when building any val with a user interface — dashboards, web apps, landing pages, forms, admin tools, anything users see in a browser. Covers JSX/React conventions, Twind/Tailwind styling, React version pinning, the view-source link requirement, and what to avoid (template-string HTML, external assets).
- **restricted-access**: Use when a val's HTTP endpoints should not be open to the whole internet — limiting an app to a team, understanding why an endpoint redirects to a login page, letting a webhook through, or identifying which Val Town user is viewing an app. Covers app access (`httpPrivacy`), org grants, bypass tokens for automation, and the `X-Val-Town-User` identity header. For building your own login flow inside a val, see the `oauth` skill instead.
- **sqlite-storage**: Use when a val needs to store structured or relational data. Covers the std/sqlite API, parameterized queries, transactions, and the val-scoped vs organization-scoped database distinction.
- **third-party-integrations**: Use when a val talks to an external service — Slack, Discord, Telegram, Stripe, GitHub, Gmail, Google Sheets, Postgres/Supabase/Upstash/Neon, browser automation (Playwright, Browserbase, Kernel, Steel), web scraping, PDF generation, push notifications, RSS, or any other third-party API. Covers the required workflow (fetch the Val Town guide, get credentials, test, store secrets) and the catalog of available guides.

## Example prompts

- "Based on what you know about me, make me a quick personal website"
- "Make me a pretty hello world app"
- "Build me a custom CRM"

## Related

- [GitHub](https://chatgptplugins.directory/apps/github.md): Triage PRs, issues and CI across your repositories
- [Figma](https://chatgptplugins.directory/apps/figma.md): Create designs, diagrams and FigJam boards and ship them to code
- [MCP App Basics (Apps SDK example)](https://chatgptplugins.directory/apps/apps-sdk-mcp-app-basics.md): Eleven interactive widgets that each teach one MCP Apps API
- [Cards Against AI (Apps SDK example)](https://chatgptplugins.directory/apps/apps-sdk-cards-against-ai.md): Card game driven by ChatGPT with a real-time synced widget
- [Authenticated Server (Apps SDK example)](https://chatgptplugins.directory/apps/apps-sdk-authenticated.md): Demonstrates tools that require different levels of OAuth
- [Shopping Cart (Apps SDK example)](https://chatgptplugins.directory/apps/apps-sdk-shopping-cart.md): Keeps cart state in sync across tool calls with widgetSessionId

---
Source: https://chatgptplugins.directory/apps/val-town · Index: https://chatgptplugins.directory/llms.txt · Independent and community-run. Not affiliated with or endorsed by OpenAI. ChatGPT is a trademark of OpenAI.
