{"id":57105,"plugin_id":"plugin_asdk_app_6a5e7ac6ddf881919de226cb7506ef57","kind":"detail","collection_source":"plugin_api","comparison_source":"plugin_api","observed_at":"2026-10-27T00:10:08.124Z","digest":"a5986d5cfa181bab540fff43a8441e8d89b83656a05fe5d77b6a9f058f650e58","against":40407,"payload":{"canonical_app_id":"asdk_app_6a5e7ac6ddf881919de226cb7506ef57","connector_id":"asdk_app_6a5e7ac6ddf881919de226cb7506ef57","created_at":"2026-07-20T19:45:11.003872Z","discoverability":"LISTED","id":"plugin_asdk_app_6a5e7ac6ddf881919de226cb7506ef57","is_template":false,"is_template_instance":false,"is_v2_template":false,"name":"app-6a5e7ac6ddf881919de226cb7506ef57","release":{"app_ids":["asdk_app_6a5e7ac6ddf881919de226cb7506ef57"],"app_manifest":{"apps":{"app-6a5e7ac6ddf881919de226cb7506ef57":{"id":"asdk_app_6a5e7ac6ddf881919de226cb7506ef57","required":true}}},"app_templates":[],"description":"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.","display_name":"Val Town","id":"pluginrel_1cabcafcc038819197c888308f75ce94","interface":{"brand_color":null,"capabilities":[],"category":"Developer Tools","composer_icon_dark_url":"https://files.openai.com/content?id=file_000000002f3c81f7b72b5f02d0ea570d","composer_icon_url":"https://files.openai.com/content?id=file_000000002be881f7b5377c76bc33bc8e","default_prompt":"Based on what you know about me, make me a quick personal website","default_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"],"developer_name":"Val Town","logo_url":"https://files.openai.com/content?id=file_000000004b0881f7851dc83cf65beda2","logo_url_dark":"https://files.openai.com/content?id=file_00000000b24c81f783783479d7602712","long_description":"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.","plugin_category_id":"developer tools","privacy_policy_url":"https://www.val.town/privacypolicy","screenshot_urls":[],"short_description":"Build and deploy apps","terms_of_service_url":"https://www.val.town/termsofuse","website_url":"https://val.town/"},"keywords":[],"mcp_servers":[],"onboarding_skill_name":null,"requires_local_executor":false,"skills":[{"description":"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.","interface":{"brand_color":null,"default_prompt":null,"display_name":"blob-storage","icon_large_url":null,"icon_small_url":null,"iconography":"pdf","short_description":"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."},"name":"blob-storage","plugin_release_skill_id":"pluginrsk_6a750588c2688191a27de5b3da0845c9"},{"description":"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.","interface":{"brand_color":null,"default_prompt":null,"display_name":"client-side-js","icon_large_url":null,"icon_small_url":null,"iconography":"code","short_description":"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."},"name":"client-side-js","plugin_release_skill_id":"pluginrsk_6a750588f4b8819188e18bec12a39fff"},{"description":"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.","interface":{"brand_color":null,"default_prompt":null,"display_name":"create-skill","icon_large_url":null,"icon_small_url":null,"iconography":"hierarchy","short_description":"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."},"name":"create-skill","plugin_release_skill_id":"pluginrsk_6a7505892518819196890916c39ef2f3"},{"description":"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.","interface":{"brand_color":null,"default_prompt":null,"display_name":"cron-and-intervals","icon_large_url":null,"icon_small_url":null,"iconography":"radar","short_description":"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."},"name":"cron-and-intervals","plugin_release_skill_id":"pluginrsk_6a7505894bbc819197f104c3556c64bf"},{"description":"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.","interface":{"brand_color":null,"default_prompt":null,"display_name":"email","icon_large_url":null,"icon_small_url":null,"iconography":"chat","short_description":"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."},"name":"email","plugin_release_skill_id":"pluginrsk_6a75058975988191b8f220c644c90385"},{"description":"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.","interface":{"brand_color":null,"default_prompt":null,"display_name":"http-endpoints","icon_large_url":null,"icon_small_url":null,"iconography":"code","short_description":"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."},"name":"http-endpoints","plugin_release_skill_id":"pluginrsk_6a750589a44c8191b1643b083f61091e"},{"description":"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.","interface":{"brand_color":null,"default_prompt":null,"display_name":"oauth","icon_large_url":null,"icon_small_url":null,"iconography":"cursor","short_description":"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."},"name":"oauth","plugin_release_skill_id":"pluginrsk_6a750589d0488191880d558f6c222c6f"},{"description":"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).","interface":{"brand_color":null,"default_prompt":null,"display_name":"react-ui","icon_large_url":null,"icon_small_url":null,"iconography":"code","short_description":"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)."},"name":"react-ui","plugin_release_skill_id":"pluginrsk_6a75058a1edc8191a1f8a01d66d15a30"},{"description":"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.","interface":{"brand_color":null,"default_prompt":null,"display_name":"restricted-access","icon_large_url":null,"icon_small_url":null,"iconography":"hierarchy","short_description":"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."},"name":"restricted-access","plugin_release_skill_id":"pluginrsk_6a75058a4c1c8191adc0bf902741c191"},{"description":"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.","interface":{"brand_color":null,"default_prompt":null,"display_name":"sqlite-storage","icon_large_url":null,"icon_small_url":null,"iconography":"hierarchy","short_description":"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."},"name":"sqlite-storage","plugin_release_skill_id":"pluginrsk_6a75058a78fc8191a1ec8c390f6c2c1d"},{"description":"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.","interface":{"brand_color":null,"default_prompt":null,"display_name":"third-party-integrations","icon_large_url":null,"icon_small_url":null,"iconography":"code","short_description":"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."},"name":"third-party-integrations","plugin_release_skill_id":"pluginrsk_6a75058a9ed481919a65c4425840be16"}],"version":"3.0.0"},"scope":"GLOBAL","share_url":"https://chatgpt.com/plugins/val-town?open_in_app","status":"ENABLED"},"changes":[{"path":"/is_v2_template","type":"added","after":false}],"summary":"Fields changed: 1. /is_v2_template.","summary_kind":"deterministic","summary_metadata":{}}