What problem does it solve? Adding background tasks to a FastAPI project with Taskiq involves non-obvious wiring: tasks silently fail to register if their module is never imported, and the API and worker processes share one broker object with subtle lifecycle rules. This Skill encodes this project's exact conventions so new tasks land correctly the first time. ## Core Features & Use Cases - Task creation guide: Step-by-step walkthrough for adding a new @broker.task function under src/api/tasks/, wiring its import at the bottom of worker.py, and enqueueing it from a route with .kiq(). - Broker and two-process model reference: Explains the Redis ListQueueBroker setup, the inline-call vs. .kiq() distinction, and why the API process only enqueues while a separate taskiq worker process executes. - Gotcha diagnosis: Documents the silent task-discovery failure (missing import in worker.py), the broker.startup() double-run guard, and the Redis socket_timeout idle-worker crash. - Use Case: You add a send_email task, wire an endpoint that returns a task ID, but the task never runs — this Skill points you to the missing import at the bottom of worker.py before you chase broker connectivity. ## Quick Start Use the taskiq skill to add a new background task that sends a welcome email and enqueue it from a signup endpoint.