用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/johnalbertini14-glitch/openclaw-skills --skill pocketbase命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | PocketBase |
| description | Build backends with PocketBase collections, auth, and realtime. |
| metadata | {"clawdbot":{"emoji":"📦","requires":{"bins":["pocketbase"]},"os":["linux","darwin","win32"]}} |
pocketbase not pocketbase/dist — the dist path is internal and breaks on updatespb.authStore.isValid before using pb.authStore.model — expired tokens return stale data without errorexpand parameter to load relations: pb.collection('posts').getList(1, 20, { expand: 'author,comments' })record.expand.fieldName — not directly on the record objectfilter: "status = 'active' && created >= '2024-01-01'"&& and ||, not AND/OR — SQL keywords don't workusers (lowercase) — _users or Users returns empty resultsauthWithPassword(email, password) returns the full user record plus tokenauthWithOAuth2({ provider: 'google' }) opens popup automatically in browserpb.authStore.clear() and invalidating server-side if using tokens elsewherepb.collection('posts').subscribe('*', callback) — the '*' means all record changes{ action: 'create'|'update'|'delete', record } — check action before processingpb.collection('posts').unsubscribe() — orphan subscriptions leak memoryformData.append('document', file) then pass to create()pb.files.getURL(record, record.filename) — don't construct URLs manually"" (empty string) rule = open to everyone — counterintuitive@request.auth.id to reference logged-in user, @request.data for submitted data@request.auth.id = user.id in View/Update/Delete rulespb_hooks/*.pb.js — the .pb.js extension is required$app, event data with e — common: e.record, e.httpContextpb.admins.authWithPassword(email, password)pb.admins or pb.collections, not pb.collection()