{ "listing": { "skills": [ { "path": "plugin/skills/blob-storage/SKILL.md", "name": "blob-storage", "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.", "files": { "plugin/skills/blob-storage/SKILL.md": "28d19fe232b86d7ff177e77c5250ac94ea8ec93615b0324f61ca9325aabf4dd6" } }, { "path": "plugin/skills/client-side-js/SKILL.md", "name": "client-side-js", "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.", "files": { "plugin/skills/client-side-js/SKILL.md": "ad8a52fb99fe31b9cbc365ab5313f4a44641750b2e856c531483fe57460f82d9" } }, { "path": "plugin/skills/create-skill/SKILL.md", "name": "create-skill", "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.", "files": { "plugin/skills/create-skill/SKILL.md": "faaa88bfddd22999675c0de84feea25b35020797f73a2a589a30042365c119dd" } }, { "path": "plugin/skills/cron-and-intervals/SKILL.md", "name": "cron-and-intervals", "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.", "files": { "plugin/skills/cron-and-intervals/SKILL.md": "77f8bb7e694784ce6bb67183e5e79b4690c76041c93b82e6b36fe8cb6f53d14d" } }, { "path": "plugin/skills/email/SKILL.md", "name": "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.", "files": { "plugin/skills/email/SKILL.md": "198a78c43bf487575450738143714917a20316e168c829c6a914026e8a4f89cf" } }, { "path": "plugin/skills/http-endpoints/SKILL.md", "name": "http-endpoints", "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.", "files": { "plugin/skills/http-endpoints/SKILL.md": "c98955e6bced467a52ba7c9fb80b9f28e93ae0ecdc9defad6ac2fa5b892725fd" } }, { "path": "plugin/skills/oauth/SKILL.md", "name": "oauth", "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.", "files": { "plugin/skills/oauth/SKILL.md": "9fd4aa50769b3eb71eb58cbc8ad04f1b38e0be080e4990ca5f15280f7c5c401d" } }, { "path": "plugin/skills/react-ui/SKILL.md", "name": "react-ui", "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).", "files": { "plugin/skills/react-ui/SKILL.md": "6aa3e7fd43125b93d3deddca24e14a981cb7459ba4ce522c13767dfcc48da446" } }, { "path": "plugin/skills/restricted-access/SKILL.md", "name": "restricted-access", "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.", "files": { "plugin/skills/restricted-access/SKILL.md": "9f51352d63518bf8668e0d2dd65824651d5c4e5e445d42d6b1153888517c794f" } }, { "path": "plugin/skills/sqlite-storage/SKILL.md", "name": "sqlite-storage", "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.", "files": { "plugin/skills/sqlite-storage/SKILL.md": "6ab49326b577185bfed9c6ce3d7615d780f6078f2b2824294ef60d393932f8fe" } }, { "path": "plugin/skills/third-party-integrations/SKILL.md", "name": "third-party-integrations", "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.", "files": { "plugin/skills/third-party-integrations/SKILL.md": "1ce88c22c056f3404fc18fec500bbefd801ddf87afefaae7c989ceed810fc2c2" } } ], "hooks": [], "executions": [] } }