What problem does it solve? Writing Convex backend functions correctly requires knowing when to use queries, mutations, actions, or HTTP actions, plus proper argument validation and error handling. This Skill provides patterns and examples so you avoid common mistakes like calling external APIs from queries or skipping return validators. ## Core Features & Use Cases - Function Type Guidance: Clear rules for choosing between reactive queries, transactional mutations, external-API actions, and HTTP webhook endpoints. - Validation & Error Handling: Examples using v argument/return validators and ConvexError for user-facing failures. - Internal Functions & Scheduling: Patterns for internal mutations, scheduled functions via ctx.scheduler, and Node.js actions with "use node". - Use Case: You need to build a Stripe webhook endpoint that verifies signatures, processes payments via an action, and updates user credits through an internal mutation. ## Quick Start Write a Convex mutation that creates a task with argument validation and throws a ConvexError if the user does not exist.