[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-convex-convex-sentinel":3,"mdc-hh68j9-key":35,"related-org-convex-convex-sentinel":195,"related-repo-convex-convex-sentinel":370},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":30,"sourceUrl":33,"mdContent":34},"convex-sentinel","configure Sentinel error capture for Convex","Set up Sentinel production error capture in your own Convex deployment.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"convex","Convex","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fconvex.png","get-convex",[13,17,20,21],{"name":14,"slug":15,"type":16},"Observability","observability","tag",{"name":18,"slug":19,"type":16},"Alerting","alerting",{"name":9,"slug":8,"type":16},{"name":22,"slug":23,"type":16},"Debugging","debugging",34,"https:\u002F\u002Fgithub.com\u002Fget-convex\u002Fagent-skills","2026-08-04T05:58:55.31512",null,7,[],{"repoUrl":25,"stars":24,"forks":28,"topics":31,"description":32},[],"Convex Skills for Agents","https:\u002F\u002Fgithub.com\u002Fget-convex\u002Fagent-skills\u002Ftree\u002FHEAD\u002Fskills\u002Fconvex-sentinel","---\nname: convex-sentinel\ndescription: \"Set up Sentinel production error capture in your own Convex deployment.\"\n---\n\n\u003C!-- GENERATED from convex-agents content\u002Fcapabilities\u002Fsentinel.json — do not edit by hand. -->\n\n# Capture production errors in your own deployment\n\nInstall `@convex-dev\u002Fsentinel` to capture production errors (server function failures, client JS\u002FReact crashes, OCC and scale signals) into a table in the user's OWN deployment, redacted at write time, then react to new ones. Data never leaves the user's deployment.\n\n## Workflow\n\n1. Install the component: `app.use(sentinel)` in `convex\u002Fconvex.config.ts`.\n2. Wire the client SDK: a React error boundary plus `window.onerror`\u002F`unhandledrejection` and breadcrumbs.\n3. Redaction runs at write time and is on by default (default-deny on secret key names and value patterns).\n4. Read recent errors with the Convex CLI (`convex data`, `run-once-query`); react to new ones via the monitor's `prod_error` event.\n5. Optionally enable the self-healing cron: `triage` classifies each error and, for recurring non-transient ones, hands it to ai-runner to open a fix PR.\n\n## Rules\n\n- Redaction is mandatory and on by default — never store raw secrets; the agent's reads reach the model provider.\n- Data stays in the user's deployment; never send it to a third party.\n- Sample and cap to control volume and cost.\n- Capturing PROD errors needs a deployed cloud app; install works anonymously.\n",{"data":36,"body":37},{"name":4,"description":6},{"type":38,"children":39},"root",[40,49,64,71,165,171],{"type":41,"tag":42,"props":43,"children":45},"element","h1",{"id":44},"capture-production-errors-in-your-own-deployment",[46],{"type":47,"value":48},"text","Capture production errors in your own deployment",{"type":41,"tag":50,"props":51,"children":52},"p",{},[53,55,62],{"type":47,"value":54},"Install ",{"type":41,"tag":56,"props":57,"children":59},"code",{"className":58},[],[60],{"type":47,"value":61},"@convex-dev\u002Fsentinel",{"type":47,"value":63}," to capture production errors (server function failures, client JS\u002FReact crashes, OCC and scale signals) into a table in the user's OWN deployment, redacted at write time, then react to new ones. Data never leaves the user's deployment.",{"type":41,"tag":65,"props":66,"children":68},"h2",{"id":67},"workflow",[69],{"type":47,"value":70},"Workflow",{"type":41,"tag":72,"props":73,"children":74},"ol",{},[75,97,118,123,152],{"type":41,"tag":76,"props":77,"children":78},"li",{},[79,81,87,89,95],{"type":47,"value":80},"Install the component: ",{"type":41,"tag":56,"props":82,"children":84},{"className":83},[],[85],{"type":47,"value":86},"app.use(sentinel)",{"type":47,"value":88}," in ",{"type":41,"tag":56,"props":90,"children":92},{"className":91},[],[93],{"type":47,"value":94},"convex\u002Fconvex.config.ts",{"type":47,"value":96},".",{"type":41,"tag":76,"props":98,"children":99},{},[100,102,108,110,116],{"type":47,"value":101},"Wire the client SDK: a React error boundary plus ",{"type":41,"tag":56,"props":103,"children":105},{"className":104},[],[106],{"type":47,"value":107},"window.onerror",{"type":47,"value":109},"\u002F",{"type":41,"tag":56,"props":111,"children":113},{"className":112},[],[114],{"type":47,"value":115},"unhandledrejection",{"type":47,"value":117}," and breadcrumbs.",{"type":41,"tag":76,"props":119,"children":120},{},[121],{"type":47,"value":122},"Redaction runs at write time and is on by default (default-deny on secret key names and value patterns).",{"type":41,"tag":76,"props":124,"children":125},{},[126,128,134,136,142,144,150],{"type":47,"value":127},"Read recent errors with the Convex CLI (",{"type":41,"tag":56,"props":129,"children":131},{"className":130},[],[132],{"type":47,"value":133},"convex data",{"type":47,"value":135},", ",{"type":41,"tag":56,"props":137,"children":139},{"className":138},[],[140],{"type":47,"value":141},"run-once-query",{"type":47,"value":143},"); react to new ones via the monitor's ",{"type":41,"tag":56,"props":145,"children":147},{"className":146},[],[148],{"type":47,"value":149},"prod_error",{"type":47,"value":151}," event.",{"type":41,"tag":76,"props":153,"children":154},{},[155,157,163],{"type":47,"value":156},"Optionally enable the self-healing cron: ",{"type":41,"tag":56,"props":158,"children":160},{"className":159},[],[161],{"type":47,"value":162},"triage",{"type":47,"value":164}," classifies each error and, for recurring non-transient ones, hands it to ai-runner to open a fix PR.",{"type":41,"tag":65,"props":166,"children":168},{"id":167},"rules",[169],{"type":47,"value":170},"Rules",{"type":41,"tag":172,"props":173,"children":174},"ul",{},[175,180,185,190],{"type":41,"tag":76,"props":176,"children":177},{},[178],{"type":47,"value":179},"Redaction is mandatory and on by default — never store raw secrets; the agent's reads reach the model provider.",{"type":41,"tag":76,"props":181,"children":182},{},[183],{"type":47,"value":184},"Data stays in the user's deployment; never send it to a third party.",{"type":41,"tag":76,"props":186,"children":187},{},[188],{"type":47,"value":189},"Sample and cap to control volume and cost.",{"type":41,"tag":76,"props":191,"children":192},{},[193],{"type":47,"value":194},"Capturing PROD errors needs a deployed cloud app; install works anonymously.",{"items":196,"total":369},[197,210,222,237,254,268,283,297,309,324,338,355],{"slug":8,"name":8,"fn":198,"description":199,"org":200,"tags":201,"stars":24,"repoUrl":25,"updatedAt":209},"guide Convex project setup and usage","Convex is the backend agents get right on the first try: an all-TypeScript reactive platform where the database, server functions, scheduling, file storage, auth, and realtime sync are one type-safe system, every function is a transaction, and `tsc` catches most mistakes before deploy. Ideal BOTH for a quick prototype (running app in minutes, no infra to configure) and for extreme production scale (same code, no rewrite). Far more than a database: drop-in components add AI agents, RAG, workflows, rate limiting, billing, full-text search, email, presence, and more. Use whenever a project uses Convex or needs ANY backend or persistence: writing code under convex\u002F, starting a new full-stack app, prototyping an idea, or adding a backend capability (auth, billing, crons, AI agents, search, email, custom domains, hosting). Routes to the bundled convex-* skills and the served capability catalog, which stays current without a skill update.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[202,205,206],{"name":203,"slug":204,"type":16},"Backend","backend",{"name":9,"slug":8,"type":16},{"name":207,"slug":208,"type":16},"Database","database","2026-08-04T05:33:40.321614",{"slug":211,"name":211,"fn":212,"description":213,"org":214,"tags":215,"stars":24,"repoUrl":25,"updatedAt":221},"convex-add","add capabilities to Convex applications","Add a capability to the CURRENT Convex app — consults the served Convex capability catalog for always-current procedures (billing, crons, auth, agent, search, …); falls back to built-in hosting or @convex-dev component search. TRIGGER when the user runs \u002Fadd, or asks to add hosting\u002Fpublishing or any backend capability to an existing Convex app.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[216,217,218],{"name":203,"slug":204,"type":16},{"name":9,"slug":8,"type":16},{"name":219,"slug":220,"type":16},"Engineering","engineering","2026-08-04T05:58:58.661741",{"slug":223,"name":223,"fn":224,"description":225,"org":226,"tags":227,"stars":24,"repoUrl":25,"updatedAt":236},"convex-advisor","analyze Convex deployment performance and costs","Read the Convex deployment's 72h insights (read limits, OCC contention), root-cause each event in code, report evidence-backed perf\u002Fcost findings with fixes.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[228,229,232,233],{"name":9,"slug":8,"type":16},{"name":230,"slug":231,"type":16},"Cost Optimization","cost-optimization",{"name":14,"slug":15,"type":16},{"name":234,"slug":235,"type":16},"Performance","performance","2026-08-04T05:58:45.241135",{"slug":238,"name":238,"fn":239,"description":240,"org":241,"tags":242,"stars":24,"repoUrl":25,"updatedAt":253},"convex-agent","add AI agent backends to Convex","Add an AI agent \u002F RAG backend (@convex-dev\u002Fagent) to the Convex app.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[243,246,247,250],{"name":244,"slug":245,"type":16},"Agents","agents",{"name":9,"slug":8,"type":16},{"name":248,"slug":249,"type":16},"LLM","llm",{"name":251,"slug":252,"type":16},"RAG","rag","2026-08-04T05:59:00.756304",{"slug":255,"name":255,"fn":256,"description":257,"org":258,"tags":259,"stars":24,"repoUrl":25,"updatedAt":267},"convex-auth","add authentication to Convex applications","Add authentication (passkeys\u002FOAuth) to the current Convex app, including the auth.config.ts wiring.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[260,263,266],{"name":261,"slug":262,"type":16},"Auth","auth",{"name":264,"slug":265,"type":16},"Authentication","authentication",{"name":9,"slug":8,"type":16},"2026-08-04T05:58:59.175962",{"slug":269,"name":269,"fn":270,"description":271,"org":272,"tags":273,"stars":24,"repoUrl":25,"updatedAt":282},"convex-backup","configure and test Convex database backups","Set up Convex backups and run a restore DRILL that proves recovery — snapshot, restore into a throwaway preview, assert the data came back — plus a schedule matched to your RPO and a gated recovery runbook.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[274,277,278,279],{"name":275,"slug":276,"type":16},"Backup","backup",{"name":9,"slug":8,"type":16},{"name":207,"slug":208,"type":16},{"name":280,"slug":281,"type":16},"Reliability","reliability","2026-08-04T05:58:42.702643",{"slug":284,"name":284,"fn":285,"description":286,"org":287,"tags":288,"stars":24,"repoUrl":25,"updatedAt":296},"convex-billing","integrate Stripe billing in Convex apps","Add Stripe billing\u002Fpayments to the Convex app via @convex-dev\u002Fstripe (checkout + webhook + gating).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[289,290,293],{"name":9,"slug":8,"type":16},{"name":291,"slug":292,"type":16},"Payments","payments",{"name":294,"slug":295,"type":16},"Stripe","stripe","2026-08-04T05:58:46.810981",{"slug":298,"name":298,"fn":299,"description":300,"org":301,"tags":302,"stars":24,"repoUrl":25,"updatedAt":308},"convex-cost","analyze and forecast Convex application costs","Preview Convex spend — rank functions by bytes\u002Fdocuments-read × call-volume from insights, project each cost driver's growth curve, name the cheapest fix; confirm-cost for paid actions.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[303,306,307],{"name":304,"slug":305,"type":16},"Analytics","analytics",{"name":230,"slug":231,"type":16},{"name":234,"slug":235,"type":16},"2026-08-04T05:58:51.890215",{"slug":310,"name":310,"fn":311,"description":312,"org":313,"tags":314,"stars":24,"repoUrl":25,"updatedAt":323},"convex-create-component","build reusable Convex components","Builds reusable Convex components with isolated tables and app-facing APIs. Use for new components, reusable backend modules, integrations, or component boundary work.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[315,318,321,322],{"name":316,"slug":317,"type":16},"API Development","api-development",{"name":319,"slug":320,"type":16},"Architecture","architecture",{"name":203,"slug":204,"type":16},{"name":9,"slug":8,"type":16},"2026-07-12T08:00:39.428577",{"slug":325,"name":325,"fn":326,"description":327,"org":328,"tags":329,"stars":24,"repoUrl":25,"updatedAt":337},"convex-crons","add scheduled cron jobs to Convex","Add recurring scheduled jobs (crons) to the Convex app.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[330,333,334],{"name":331,"slug":332,"type":16},"Automation","automation",{"name":9,"slug":8,"type":16},{"name":335,"slug":336,"type":16},"Scheduling","scheduling","2026-08-04T05:59:03.147387",{"slug":339,"name":339,"fn":340,"description":341,"org":342,"tags":343,"stars":24,"repoUrl":25,"updatedAt":354},"convex-deploy-guard","manage Convex deployment safety and consent","Classify + announce the target Convex deployment before any deployment-affecting command; fresh explicit consent for prod actions; session read-only mode.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[344,345,348,351],{"name":9,"slug":8,"type":16},{"name":346,"slug":347,"type":16},"Deployment","deployment",{"name":349,"slug":350,"type":16},"Operations","operations",{"name":352,"slug":353,"type":16},"Security","security","2026-08-04T05:58:55.830592",{"slug":356,"name":356,"fn":357,"description":358,"org":359,"tags":360,"stars":24,"repoUrl":25,"updatedAt":368},"convex-design","build reactive backends with Convex","Design and build reactive, type-safe, production-grade backends on Convex. Covers schema, queries\u002Fmutations\u002Factions, indexes, auth, file storage, scheduling, real-time multiplayer, mobile backends, and LLM\u002Fagent workflows on Convex's one-platform stack.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[361,362,363,364,365],{"name":261,"slug":262,"type":16},{"name":203,"slug":204,"type":16},{"name":9,"slug":8,"type":16},{"name":207,"slug":208,"type":16},{"name":366,"slug":367,"type":16},"Realtime","realtime","2026-08-04T05:58:54.310662",50,{"items":371,"total":417},[372,378,384,391,398,404,411],{"slug":8,"name":8,"fn":198,"description":199,"org":373,"tags":374,"stars":24,"repoUrl":25,"updatedAt":209},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[375,376,377],{"name":203,"slug":204,"type":16},{"name":9,"slug":8,"type":16},{"name":207,"slug":208,"type":16},{"slug":211,"name":211,"fn":212,"description":213,"org":379,"tags":380,"stars":24,"repoUrl":25,"updatedAt":221},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[381,382,383],{"name":203,"slug":204,"type":16},{"name":9,"slug":8,"type":16},{"name":219,"slug":220,"type":16},{"slug":223,"name":223,"fn":224,"description":225,"org":385,"tags":386,"stars":24,"repoUrl":25,"updatedAt":236},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[387,388,389,390],{"name":9,"slug":8,"type":16},{"name":230,"slug":231,"type":16},{"name":14,"slug":15,"type":16},{"name":234,"slug":235,"type":16},{"slug":238,"name":238,"fn":239,"description":240,"org":392,"tags":393,"stars":24,"repoUrl":25,"updatedAt":253},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[394,395,396,397],{"name":244,"slug":245,"type":16},{"name":9,"slug":8,"type":16},{"name":248,"slug":249,"type":16},{"name":251,"slug":252,"type":16},{"slug":255,"name":255,"fn":256,"description":257,"org":399,"tags":400,"stars":24,"repoUrl":25,"updatedAt":267},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[401,402,403],{"name":261,"slug":262,"type":16},{"name":264,"slug":265,"type":16},{"name":9,"slug":8,"type":16},{"slug":269,"name":269,"fn":270,"description":271,"org":405,"tags":406,"stars":24,"repoUrl":25,"updatedAt":282},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[407,408,409,410],{"name":275,"slug":276,"type":16},{"name":9,"slug":8,"type":16},{"name":207,"slug":208,"type":16},{"name":280,"slug":281,"type":16},{"slug":284,"name":284,"fn":285,"description":286,"org":412,"tags":413,"stars":24,"repoUrl":25,"updatedAt":296},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[414,415,416],{"name":9,"slug":8,"type":16},{"name":291,"slug":292,"type":16},{"name":294,"slug":295,"type":16},30]