About pocketbase
pocketbase is a skill for operating PocketBase backend projects in standalone-binary or Go package mode. It includes scripts and references for authentication, collections, records, backups, migrations, and safety checks.
Key features
- 01Detect standalone and Go package modes
- 02Manage authentication, collections, and records
- 03Create, restore, and delete backups
- 04Generate migration templates
- 05Check API rules and run tests
Use cases
- 01Set up a PocketBase project
- 02Manage collections and records with scripts
- 03Back up or restore backend data
- 04Verify API rules and custom hooks
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ ikumasudo/ pocketbase-skill --skill pocketbaseAfter installing, type/pocketbasein Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
assets/migration-template.gomigration-template.jsreferences/api-rules-guide.mdauth-api.mdbackups-api.mdcollections-api.mde2e-testing.mdfield-types.mdfile-handling.mdgo-framework.mdgo-hooks-routes.mdgo-migrations.mdgotchas.mdjs-sdk.mdjsvm-hooks.mdmigrations.mdrecords-api.mdrelation-patterns.mdscripts/pb_auth.pypb_backups.pypb_collections.pypb_config.pypb_create_migration.pypb_e2e_helpers.pypb_health.pypb_records.pyDetails
From the project READMEPocketBase Skill
Operate PocketBase backend projects (standalone binary or Go package mode) with bundled Python scripts and references.
Skill Resources
Use resources in this skill directory first:
scripts/- executable helpers for auth, collections, records, backups, migration template generationreferences/- detailed backend docs to load on demandassets/- migration templates
Prefer --help output and this guide first. If behavior is unclear, read only the relevant script file.
0. Fast Start
Mode Detection
- If
go.modcontainsgithub.com/pocketbase/pocketbase-> Go package mode - Otherwise -> standalone mode
Bootstrap (when PocketBase is not running)
- Resolve latest version dynamically:
VERSION=$(curl -s https://api.github.com/repos/pocketbase/pocketbase/releases/latest | python3 -c "import sys,json; print(json.load(sys.stdin)['tag_name'].lstrip('v'))")
ARCH=$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/')
OS=$(uname -s | tr A-Z a-z)
curl -sL "https://github.com/pocketbase/pocketbase/releases/download/v${VERSION}/pocketbase_${VERSION}_${OS}_${ARCH}.zip" -o pb.zip
unzip -o pb.zip pocketbase && rm pb.zip
- Create superuser:
./pocketbase superuser create [email protected] <password>
- Configure
.env(and keep.envin.gitignore):
PB_URL=http://127.0.0.1:8090
[email protected]
PB_SUPERUSER_PASSWORD=your-password
- Start service:
nohup ./pocketbase serve --http=127.0.0.1:8090 > pb.log 2>&1 &
- Health check:
python scripts/pb_health.py
As of 2026-02-27, latest stable release is v0.36.5.
1. Design & Safety Checklist
Your model priors may include pre-v0.23 patterns. Validate these before any schema or hook changes.
v0.23+ Critical Rules
- Use
_superusers(not_admins) - Use collection
fields(notschema) - Use flat field properties (no
optionswrapper) - Use typed field constructors in migrations (
TextField,SelectField,RelationField, ...) - Use
{param}path syntax in routes (not:param) - JSVM hooks must call
e.next(); Go hooks mustreturn e.Next() @collection.*filters should use?=when multiple rows are possible
API Rule Defaults
null-> superuser only""-> public (including unauthenticated)
Default to null and open only what is required.
Go Mode Checks
- Use API/Admin UI for collection changes; let PocketBase auto-generate migrations
- Commit generated files in
pb_migrations/ - Configure
migratecmd.MustRegister(..., migratecmd.Config{Automigrate: true})for dev - Ensure blank import exists when manual migrations are used:
_ "yourmodule/migrations" - For rule assignment in manual Go migrations, use
types.Pointer("...")
2. Core Operations
2.1 Authentication
Superuser auth:
python scripts/pb_auth.py
User auth:
python scripts/pb_auth.py --collection users --identity [email protected] --password secret
2.2 Collections
List / get:
python scripts/pb_collections.py list
python scripts/pb_collections.py get posts
Create / update / delete:
python scripts/pb_collections.py create --file schema.json
python scripts/pb_collections.py update posts --file updates.json
python scripts/pb_collections.py delete posts
Batch import (recommended for multi-collection setup):
python scripts/pb_collections.py import --file collections.json
Important:
- Do not create a new
userscollection; update the existing one - Use
--filewhen payload includes API rules to avoid shell quote issues - For
fieldsupdates, send full field set (not partial merge)
2.3 Records
python scripts/pb_records.py list posts --filter 'status="published"' --sort "-created" --expand "author"
python scripts/pb_records.py get posts <recordId>
python scripts/pb_records.py create posts --file record.json
python scripts/pb_records.py update posts <recordId> '{"status":"published"}'
python scripts/pb_records.py delete posts <recordId>
2.4 Backups
python scripts/pb_backups.py list
python scripts/pb_backups.py create
python scripts/pb_backups.py restore <backupKey>
python scripts/pb_backups.py delete <backupKey>
Restore replaces all data; always create a backup before restore.
2.5 Migrations
Primary workflow (both modes):
- Start PocketBase
- Change collections via API/Admin UI
- Commit auto-generated migration in
pb_migrations/
Manual migration template generation (only for seed/data transform/raw SQL):
python scripts/pb_create_migration.py "backfill_user_slugs"
python scripts/pb_create_migration.py "seed_categories" --dir ./pb_migrations
3. Verification
After schema or rule changes, run:
python scripts/pb_collections.py get <collection>- CRUD smoke test (create/list/get/update/delete)
- Rule test with non-superuser token
Rule-denied behavior reference:
listRuledenied ->200with emptyitemsviewRuledenied ->404createRuledenied ->400updateRuledenied ->404deleteRuledenied ->404nullrule for regular users ->403
E2E tests are required when non-null API rules or custom hooks/routes exist. Use references/e2e-testing.md and scripts/pb_e2e_helpers.py.
Minimum E2E coverage:
- Unauthenticated access denied
- Authenticated allowed path succeeds
- Cross-user access blocked
- Owner spoofing in create payload blocked
cascadeDeletebehavior verified- Custom route auth enforcement verified
- Hook side effects verified
4. Reference Map
Read only what is needed:
- Common pitfalls:
references/gotchas.md - API rules:
references/api-rules-guide.md - Collections API:
references/collections-api.md - Records API:
references/records-api.md - Auth API:
references/auth-api.md - Migrations (JS):
references/migrations.md - Field types:
references/field-types.md - Relation patterns:
references/relation-patterns.md - File handling:
references/file-handling.md - JSVM hooks:
references/jsvm-hooks.md - Go setup:
references/go-framework.md - Go migrations:
references/go-migrations.md - Go hooks/routes:
references/go-hooks-routes.md - E2E testing:
references/e2e-testing.md
Frontend integration work belongs to pb-react-spa skill.