用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/KunanonJ/ai-skills-hub --skill cursor-plugin-convex-rule-scheduler-usage命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
基于 SOC 职业分类
| name | cursor-plugin-convex-rule-scheduler-usage |
| description | Only schedule internal functions, never api functions |
| metadata | {"version":"0.1.0"} |
Always schedule internal functions with ctx.scheduler, ctx.runAfter, ctx.runAt, and ctx.run* methods. Never schedule public api functions.
Scheduled functions bypass authentication and argument validation that public APIs expect to receive from clients.
Bad:
import { api } from "./_generated/api";
export const processPayment = action({
handler: async (ctx, args) => {
// ❌ Don't schedule api functions
await ctx.scheduler.runAfter(0, api.users.chargeUser, {
userId: args.userId,
amount: args.amount,
});
},
});
Good:
import { internal } from "./_generated/api";
// Define an internal function
export const chargeUserInternal = internalMutation({
args: { userId: v.id("users"), amount: v.number() },
handler: async (ctx, args) => {
// ... charging logic ...
},
});
export const processPayment = action({
handler: async (ctx, args) => {
// ✅ Schedule internal functions
await ctx.scheduler.runAfter(0, internal.users.chargeUserInternal, {
userId: args.userId,
amount: args.amount,
});
},
});
Use internalQuery, internalMutation, and internalAction for functions that should only be called from backend code:
export const internalHelper = internalMutation({
args: { /* ... */ },
handler: async (ctx, args) => {
// No auth check needed - only callable from backend
},
});