{"id":880,"external_id":"plugin_asdk_app_6a5e7ac6ddf881919de226cb7506ef57","name":"app-6a5e7ac6ddf881919de226cb7506ef57","display_name":"Val Town","developer":"Val Town","category":"Developer Tools","listing_language":"en","listing_language_details":{"method":"cld-0.13.0/listing-v1","reliable":true,"detected_at":"2026-10-01T13:21:53Z","input_sha256":"c8a58f1239e9940b2381ce02c6e48eecfb7998c8b80e889c4e76425e08bb212f","source_fields":["release.description","release.interface.short_description","release.interface.long_description"]},"version":"3.0.0","skill_count":11,"first_seen_at":"2026-09-30T22:02:35.000Z","last_seen_at":"2026-10-01T18:00:02.555Z","last_changed_at":"2026-09-30T22:02:35.000Z","install_count":null,"research_summary":null,"research_reviewed_at":null,"metadata":{"id":"plugin_asdk_app_6a5e7ac6ddf881919de226cb7506ef57","name":"app-6a5e7ac6ddf881919de226cb7506ef57","scope":"GLOBAL","status":"ENABLED","release":{"id":"pluginrel_1cabcafcc038819197c888308f75ce94","skills":[{"name":"blob-storage","interface":{"brand_color":null,"iconography":"pdf","display_name":"blob-storage","default_prompt":null,"icon_large_url":null,"icon_small_url":null,"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."},"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.","plugin_release_skill_id":"pluginrsk_6a750588c2688191a27de5b3da0845c9"},{"name":"client-side-js","interface":{"brand_color":null,"iconography":"code","display_name":"client-side-js","default_prompt":null,"icon_large_url":null,"icon_small_url":null,"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."},"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.","plugin_release_skill_id":"pluginrsk_6a750588f4b8819188e18bec12a39fff"},{"name":"create-skill","interface":{"brand_color":null,"iconography":"hierarchy","display_name":"create-skill","default_prompt":null,"icon_large_url":null,"icon_small_url":null,"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."},"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.","plugin_release_skill_id":"pluginrsk_6a7505892518819196890916c39ef2f3"},{"name":"cron-and-intervals","interface":{"brand_color":null,"iconography":"radar","display_name":"cron-and-intervals","default_prompt":null,"icon_large_url":null,"icon_small_url":null,"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."},"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.","plugin_release_skill_id":"pluginrsk_6a7505894bbc819197f104c3556c64bf"},{"name":"email","interface":{"brand_color":null,"iconography":"chat","display_name":"email","default_prompt":null,"icon_large_url":null,"icon_small_url":null,"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."},"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.","plugin_release_skill_id":"pluginrsk_6a75058975988191b8f220c644c90385"},{"name":"http-endpoints","interface":{"brand_color":null,"iconography":"code","display_name":"http-endpoints","default_prompt":null,"icon_large_url":null,"icon_small_url":null,"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."},"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.","plugin_release_skill_id":"pluginrsk_6a750589a44c8191b1643b083f61091e"},{"name":"oauth","interface":{"brand_color":null,"iconography":"cursor","display_name":"oauth","default_prompt":null,"icon_large_url":null,"icon_small_url":null,"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."},"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.","plugin_release_skill_id":"pluginrsk_6a750589d0488191880d558f6c222c6f"},{"name":"react-ui","interface":{"brand_color":null,"iconography":"code","display_name":"react-ui","default_prompt":null,"icon_large_url":null,"icon_small_url":null,"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)."},"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).","plugin_release_skill_id":"pluginrsk_6a75058a1edc8191a1f8a01d66d15a30"},{"name":"restricted-access","interface":{"brand_color":null,"iconography":"hierarchy","display_name":"restricted-access","default_prompt":null,"icon_large_url":null,"icon_small_url":null,"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."},"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.","plugin_release_skill_id":"pluginrsk_6a75058a4c1c8191adc0bf902741c191"},{"name":"sqlite-storage","interface":{"brand_color":null,"iconography":"hierarchy","display_name":"sqlite-storage","default_prompt":null,"icon_large_url":null,"icon_small_url":null,"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."},"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.","plugin_release_skill_id":"pluginrsk_6a75058a78fc8191a1ec8c390f6c2c1d"},{"name":"third-party-integrations","interface":{"brand_color":null,"iconography":"code","display_name":"third-party-integrations","default_prompt":null,"icon_large_url":null,"icon_small_url":null,"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."},"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.","plugin_release_skill_id":"pluginrsk_6a75058a9ed481919a65c4425840be16"}],"app_ids":["asdk_app_6a5e7ac6ddf881919de226cb7506ef57"],"version":"3.0.0","keywords":[],"interface":{"category":"Developer Tools","logo_url":"https://files.openai.com/content?id=file_000000004b0881f7851dc83cf65beda2","brand_color":null,"website_url":"https://val.town/","capabilities":[],"logo_url_dark":"https://files.openai.com/content?id=file_00000000b24c81f783783479d7602712","default_prompt":"Based on what you know about me, make me a quick personal website","developer_name":"Val Town","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"],"screenshot_urls":[],"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.","composer_icon_url":"https://files.openai.com/content?id=file_000000002be881f7b5377c76bc33bc8e","short_description":"Build and deploy apps","plugin_category_id":"developer tools","privacy_policy_url":"https://www.val.town/privacypolicy","terms_of_service_url":"https://www.val.town/termsofuse","composer_icon_dark_url":"https://files.openai.com/content?id=file_000000002f3c81f7b72b5f02d0ea570d"},"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.","app_manifest":{"apps":{"app-6a5e7ac6ddf881919de226cb7506ef57":{"id":"asdk_app_6a5e7ac6ddf881919de226cb7506ef57","required":true}}},"display_name":"Val Town","app_templates":[],"onboarding_skill_name":null,"requires_local_executor":false},"created_at":"2026-07-20T19:45:11.003872Z","is_template":false,"connector_id":"asdk_app_6a5e7ac6ddf881919de226cb7506ef57","discoverability":"LISTED","canonical_app_id":"asdk_app_6a5e7ac6ddf881919de226cb7506ef57"},"research":null,"package_metadata":{"name":"app-6a5e7ac6ddf881919de226cb7506ef57","author":{"name":"Val Town"},"sources":[{"path":".codex-plugin/plugin.json","sha256":"3d942f357dc1427011899a9aa8a1b12fe5fdd2bd6ead10ef314e0d7079ad5256"}],"version":"3.0.0","artifact_id":1521,"observed_at":"2026-09-30T22:50:57Z","support_url":"https://docs.val.town/contact-us/contact-us/","field_sources":{"name":0,"author":0,"version":0,"support_url":0},"extraction_version":1,"conflicts_or_errors":[]}}