用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/KunanonJ/ai-skills-hub --skill cursor-plugin-convex-rule-authentication-checks命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
基于 SOC 职业分类
| name | cursor-plugin-convex-rule-authentication-checks |
| description | Implement authentication checks in all public functions |
| metadata | {"version":"0.1.0"} |
Every public function that accesses user data MUST verify authentication using ctx.auth.getUserIdentity().
export const getMyTasks = query({
args: {},
handler: async (ctx) => {
const identity = await ctx.auth.getUserIdentity();
if (!identity) {
throw new Error("Not authenticated");
}
const user = await getUserByIdentity(ctx, identity);
return await ctx.db
.query("tasks")
.withIndex("by_user", q => q.eq("userId", user._id))
.collect();
},
});
export const updateTask = mutation({
args: { taskId: v.id("tasks"), text: v.string() },
handler: async (ctx, args) => {
const identity = await ctx.auth.getUserIdentity();
if (!identity) throw new Error("Not authenticated");
const task = await ctx.db.get(args.taskId);
if (!task) throw new Error("Task not found");
const user = await getUserByIdentity(ctx, identity);
if (task.userId !== user._id) {
throw new Error("Unauthorized");
}
await ctx.db.patch(args.taskId, { text: args.text });
},
});