create-collection
SKILL.md
PocketBase Collection Management
Use this skill whenever you need to modify the database schema (create/update/delete collections).
Why This Approach
PocketBase automatically generates migration files when collections are created/modified via the SDK. This ensures:
- Correct internal IDs
- Proper migration format
- Automatic rollback functions
- No manual SQL errors
Instructions
1. Get the PocketBase URL
Find the container IP:
docker network inspect shipyard-pocketbase-template_default --format '{{range .Containers}}{{.IPv4Address}}{{end}}'
2. Write a Temporary Script
Create a temp JS file (e.g., temp-collection.js):
import PocketBase from 'pocketbase'
const pb = new PocketBase('http://<CONTAINER_IP>:8090')
await pb.collection('_superusers').authWithPassword('admin@test.local', 'testtest123')
// CREATE a collection
await pb.collections.create({
name: 'my_collection',
type: 'base', // or 'auth' for user collections
fields: [
{ name: 'title', type: 'text', required: true },
{ name: 'completed', type: 'bool' },
{ name: 'user_id', type: 'text', required: true },
],
listRule: '@request.auth.id != ""',
viewRule: '@request.auth.id != ""',
createRule: '@request.auth.id != ""',
updateRule: 'user_id = @request.auth.id',
deleteRule: 'user_id = @request.auth.id',
})
// UPDATE a collection
// const collection = await pb.collections.getOne('my_collection')
// await pb.collections.update(collection.id, { name: 'new_name' })
// DELETE a collection
// await pb.collections.delete('my_collection')
console.log('Done!')
3. Run the Script
node temp-collection.js
4. Verify Migration Was Created
ls -la pocketbase/pb_migrations/
You should see a new .js file with the timestamp and collection name.
5. Delete the Temp Script
rm temp-collection.js
Field Types
Common field types for pb.collections.create():
text- String fieldbool- Booleannumber- Numericemail- Email validationurl- URL validationdate- Date/datetimeselect- Enum (addvalues: ['a', 'b'])relation- Foreign key (addcollectionId: 'xxx')file- File uploadjson- JSON data
Rules
Access rules use PocketBase filter syntax:
null- Superusers only''(empty string) - Anyone'@request.auth.id != ""'- Authenticated users'user_id = @request.auth.id'- Owner only
Weekly Installs
5
Repository
levino/shipyard…templateGitHub Stars
1
First Seen
Feb 3, 2026
Security Audits
Installed on
opencode5
amp3
gemini-cli3
antigravity3
github-copilot3
codex3