instantdb — community instantdb, family-organizer, community, ide skills, Claude Code, Cursor, Windsurf

v1.0.0

关于此技能

An organizer for our family, meant to be both an app and a dashboard

fivestones fivestones
[17]
[6]
更新于: 4/6/2026

Killer-Skills Review

Decision support comes first. Repository text comes second.

Reference-Only Page Review Score: 1/11

This page remains useful for operators, but Killer-Skills treats it as reference material instead of a primary organic landing page.

Review Score
1/11
Quality Score
40
Canonical Locale
en
Detected Body Locale
en

An organizer for our family, meant to be both an app and a dashboard

核心价值

An organizer for our family, meant to be both an app and a dashboard

适用 Agent 类型

Suitable for operator workflows that need explicit guardrails before installation and execution.

赋予的主要能力 · instantdb

! 使用限制与门槛

Why this page is reference-only

  • - Current locale does not satisfy the locale-governance contract.
  • - The page lacks a strong recommendation layer.
  • - The page lacks concrete use-case guidance.
  • - The page lacks explicit limitations or caution signals.
  • - The underlying skill quality score is below the review floor.

Source Boundary

The section below is supporting source material from the upstream repository. Use the Killer-Skills review above as the primary decision layer.

实验室 Demo

Browser Sandbox Environment

⚡️ Ready to unleash?

Experience this Agent in a zero-setup browser environment powered by WebContainers. No installation required.

Boot Container Sandbox

常见问题与安装步骤

以下问题与步骤与页面结构化数据保持一致,便于搜索引擎理解页面内容。

? FAQ

instantdb 是什么?

An organizer for our family, meant to be both an app and a dashboard

如何安装 instantdb?

运行命令:npx killer-skills add fivestones/family-organizer/instantdb。支持 Cursor、Windsurf、VS Code、Claude Code 等 19+ IDE/Agent。

instantdb 支持哪些 IDE 或 Agent?

该技能兼容 Cursor, Windsurf, VS Code, Trae, Claude Code, OpenClaw, Aider, Codex, OpenCode, Goose, Cline, Roo Code, Kiro, Augment Code, Continue, GitHub Copilot, Sourcegraph Cody, and Amazon Q Developer。可使用 Killer-Skills CLI 一条命令通用安装。

安装步骤

  1. 1. 打开终端

    在你的项目目录中打开终端或命令行。

  2. 2. 执行安装命令

    运行:npx killer-skills add fivestones/family-organizer/instantdb。CLI 会自动识别 IDE 或 AI Agent 并完成配置。

  3. 3. 开始使用技能

    instantdb 已启用,可立即在当前项目中调用。

! 参考页模式

此页面仍可作为安装与查阅参考,但 Killer-Skills 不再把它视为主要可索引落地页。请优先阅读上方评审结论,再决定是否继续查看上游仓库说明。

Imported Repository Instructions

The section below is supporting source material from the upstream repository. Use the Killer-Skills review above as the primary decision layer.

Supporting Evidence

instantdb

安装 instantdb,这是一款面向AI agent workflows and automation的 AI Agent Skill。支持 Claude Code、Cursor、Windsurf,一键安装。

SKILL.md
Readonly
Imported Repository Instructions
The section below is supporting source material from the upstream repository. Use the Killer-Skills review above as the primary decision layer.
Supporting Evidence

Act as a world-class senior frontend engineer with deep expertise in InstantDB and UI/UX design. Your primary goal is to generate complete and functional apps with excellent visual asthetics using InstantDB as the backend.

About InstantDB aka Instant

Instant is a client-side database (Modern Firebase) with built-in queries, transactions, auth, permissions, storage, real-time, and offline support.

Instant SDKs

Instant provides client-side JS SDKs and an admin SDK:

  • @instantdb/core --- vanilla JS
  • @instantdb/react --- React
  • @instantdb/react-native --- React Native / Expo
  • @instantdb/admin --- backend scripts / servers

When installing, always check what package manager the project uses (npm, pnpm, bun) first and then install the latest version of the Instant SDK. If working in React use Next and Tailwind unless specified otherwise.

Managing Instant Apps

Prerequisites

Look for instant.schema.ts and instant.perms.ts. These define the schema and permissions. Look for an app id and admin token in .env or another env file.

If schema/perm files exist but the app id/admin token are missing, ask the user where to find them or whether to create a new app.

To create a new app:

bash
1npx instant-cli init-without-files --title <APP_NAME>

This outputs an app id and admin token. Store them in an env file.

If you get an error related to not being logged in tell the user to:

  • Sign up for free or log in at https://instantdb.com
  • Then run npx instant-cli login to authenticate the CLI
  • Then re-run the init command

If you have an app id/admin token but no schema/perm files, pull them:

bash
1npx instant-cli pull --yes

Schema changes

Edit instant.schema.ts, then push:

bash
1npx instant-cli push schema --yes

New fields = additions; missing fields = deletions.

To rename fields:

bash
1npx instant-cli push schema --rename 'posts.author:posts.creator stores.owner:stores.manager' --yes

Permission changes

Edit instant.perms.ts, then push:

bash
1npx instant-cli push perms --yes

CRITICAL Query Guidelines

CRITICAL: When using React make sure to follow the rules of hooks. Remember, you can't have hooks show up conditionally.

CRITICAL: You MUST index any field you want to filter or order by in the schema. If you do not, you will get an error when you try to filter or order by it.

Here is how ordering works:

Ordering:        order: { field: 'asc' | 'desc' }

Example:         $: { order: { dueDate: 'asc' } }

Notes:           - Field must be indexed + typed in schema
                 - Cannot order by nested attributes (e.g. 'owner.name')

CRITICAL: Here is a concise summary of the where operator map which defines all the filtering options you can use with InstantDB queries to narrow results based on field values, comparisons, arrays, text patterns, and logical conditions.

Equality:        { field: value }

Inequality:      { field: { $ne: value } }

Null checks:     { field: { $isNull: true | false } }

Comparison:      $gt, $lt, $gte, $lte   (indexed + typed fields only)

Sets:            { field: { $in: [v1, v2] } }

Substring:       { field: { $like: 'Get%' } }      // case-sensitive
                  { field: { $ilike: '%get%' } }   // case-insensitive

Logic:           and: [ {...}, {...} ]
                  or:  [ {...}, {...} ]

Nested fields:   'relation.field': value

CRITICAL: The operator map above is the full set of where filters Instant supports right now. There is no $exists, $nin, or $regex. And $like and $ilike are what you use for startsWith / endsWith / includes.

CRITICAL: Pagination keys (limit, offset, first, after, last, before) only work on top-level namespaces. DO NOT use them on nested relations or else you will get an error.

CRITICAL: If you are unsure how something works in InstantDB you fetch the relevant urls in the documentation to learn more.

CRITICAL Permission Guidelines

Below are some CRITICAL guidelines for writing permissions in InstantDB.

data.ref

  • Use data.ref("<path.to.attr>") for linked attributes.
  • Always returns a list.
  • Must end with an attribute.

Correct

cel
1auth.id in data.ref('post.author.id') // auth.id in list of author ids 2data.ref('owner.id') == [] // there is no owner

Errors

cel
1auth.id in data.post.author.id 2auth.id in data.ref('author') 3data.ref('admins.id') == auth.id 4auth.id == data.ref('owner.id') 5data.ref('owner.id') == null 6data.ref('owner.id').length > 0

auth.ref

  • Same as data.ref but path must start with $user.
  • Returns a list.

Correct

cel
1'admin' in auth.ref('$user.role.type') 2auth.ref('$user.role.type')[0] == 'admin'

Errors

cel
1auth.ref('role.type') 2auth.ref('$user.role.type') == 'admin'

Unsupported

cel
1newData.ref('x') 2data.ref(someVar + '.members.id')

$users Permissions

  • Default view permission is auth.id == data.id
  • Default create, update, and delete permissions is false
  • Can override view and update
  • Cannot override create or delete

$files Permissions

  • Default permissions are all false. Override as needed to allow access.
  • data.ref does not work for $files permissions.
  • Use data.path.startsWith(...) or data.path.endsWith(...) to write path-based rules.

Field-level Permissions

Restrict access to specific fields while keeping the entity public:

json
1{ 2 "$users": { 3 "allow": { 4 "view": "true" 5 }, 6 "fields": { 7 "email": "auth.id == data.id" 8 } 9 } 10}

Notes:

  • Field rules override entity-level view for that field
  • Useful for hiding sensitive data (emails, phone numbers) on public entities

Best Practices

Pass schema when initializing Instant

Always pass schema when initializing Instant to get type safety for queries and transactions

tsx
1import schema from '@/instant.schema` 2 3// On client 4import { init } from '@instantdb/react'; // or your relevant Instant SDK 5const clientDb = init({ appId, schema }); 6 7// On backend 8import { init } from '@instantdb/admin'; 9const adminDb = init({ appId, adminToken, schema });

Use id() to generate ids

Always use id() to generate ids for new entities

tsx
1import { id } from '@instantdb/react'; // or your relevant Instant SDK 2import { clientDb } from '@/lib/clientDb 3clientDb.transact(clientDb.tx.todos[id()].create({ title: 'New Todo' }));

Use Instant utility types for data models

Always use Instant utility types to type data models

tsx
1import { AppSchema } from '@/instant.schema'; 2 3type Todo = InstaQLEntity<AppSchema, 'todos'>; // todo from clientDb.useQuery({ todos: {} }) 4type PostsWithProfile = InstaQLEntity< 5 AppSchema, 6 'posts', 7 { author: { avatar: {} } } 8>; // post from clientDb.useQuery({ posts: { author: { avatar: {} } } })

Use db.useAuth or db.subscribeAuth for auth state

tsx
1import { clientDb } from '@/lib/clientDb'; 2 3// For react/react-native apps use db.useAuth 4function App() { 5 const { isLoading, user, error } = clientDb.useAuth(); 6 if (isLoading) { return null; } 7 if (error) { return <Error message={error.message /}></div>; } 8 if (user) { return <Main />; } 9 return <Login />; 10} 11 12// For vanilla JS apps use db.subscribeAuth 13function App() { 14 renderLoading(); 15 db.subscribeAuth((auth) => { 16 if (auth.error) { renderAuthError(auth.error.message); } 17 else if (auth.user) { renderLoggedInPage(auth.user); } 18 else { renderSignInPage(); } 19 }); 20}

Ad-hoc queries from the CLI

Run npx instant-cli query '{ posts: {} }' --admin to query your app. A context flag is required: --admin, --as-email <email>, or --as-guest. Also supports --app <id>.

Ad-hoc scripts with the Admin SDK

Use @instantdb/admin to run ad-hoc scripts on the backend. Here is an example schema for a chat app along with seed and reset scripts.

tsx
1// instant.schema.ts 2const _schema = i.schema({ 3 entities: { 4 $users: i.entity({ 5 email: i.string().unique().indexed().optional(), 6 }), 7 profiles: i.entity({ 8 displayName: i.string(), 9 }), 10 channels: i.entity({ 11 name: i.string().indexed(), 12 }), 13 messages: i.entity({ 14 content: i.string(), 15 timestamp: i.number().indexed(), 16 }), 17 }, 18 links: { 19 userProfile: { 20 forward: { on: "profiles", has: "one", label: "user", onDelete: "cascade" }, // IMPORTANT: `cascade` can only be used in a has-one link 21 reverse: { on: "$users", has: "one", label: "profile" }, 22 }, 23 authorMessages: { 24 forward: { on: "messages", has: "one", label: "author", onDelete: "cascade" }, 25 reverse: { on: "profiles", has: "many", label: "messages", }, 26 }, 27 channelMessages: { 28 forward: { on: "messages", has: "one", label: "channel", onDelete: "cascade" }, 29 reverse: { on: "channels", has: "many", label: "messages" }, 30 }, 31 }, 32}); 33 34// scripts/seed.ts 35import { id } from "@instantdb/admin"; 36import { adminDb } from "@/lib/adminDb"; 37 38const users: Record<string, User> = { ... } 39const channels: Record<string, Channel> = { ... } 40const mockMessages: Message[] = [ ... ] 41 42function seed() { 43 console.log("Seeding db..."); 44 const userTxs = Object.values(users).map(u => adminDb.tx.$users[u.id].create({})); 45 const profileTxs = Object.values(users).map(u => adminDb.tx.profiles[u.id].create({ displayName: u.displayName }).link({ user: u.id })); 46 const channelTxs = Object.values(channels).map(c => adminDb.tx.channels[c.id].create({ name: c.name })) 47 const messageTxs = mockMessages.map(m => { 48 const messageId = id(); 49 return adminDb.tx.messages[messageId].create({ 50 content: m.content, 51 timestamp: m.timestamp, 52 }) 53 .link({ author: users[m.author].id }) 54 .link({ channel: channels[m.channel].id }); 55 }) 56 57 adminDb.transact([...userTxs, ...profileTxs, ...channelTxs, ...messageTxs]); 58} 59 60seed(); 61 62// scripts/reset.ts 63import { adminDb } from "@/lib/adminDb"; 64 65async function reset() { 66 console.log("Resetting database..."); 67 const { $users, channels } = await adminDb.query({ $users: {}, channels: {} }); 68 69 // Deleting all users will cascade delete profiles and messages 70 const userTxs = $users.map(user => adminDb.tx.$users[user.id].delete()); 71 72 const channelTxs = channels.map(channel => adminDb.tx.channels[channel.id].delete()); 73 adminDb.transact([...userTxs, ...channelTxs]); 74} 75 76reset();

Instant Documentation

The bullets below are links to the Instant documentation. They provide detailed information on how to use different features of InstantDB. Each line follows the pattern of

  • TOPIC: Description of the topic.

Fetch the URL for a topic to learn more about it.

Final Note

Think before you answer. Make sure your code passes typechecks tsc --noEmit and works as expected. Remember! AESTHETICS ARE VERY IMPORTANT. All apps should LOOK AMAZING and have GREAT FUNCTIONALITY!

相关技能

寻找 instantdb 的替代方案 (Alternative) 或可搭配使用的同类 community Skill?探索以下相关开源技能。

查看全部

openclaw-release-maintainer

Logo of openclaw
openclaw

Your own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞

333.8k
0
AI

widget-generator

Logo of f
f

Generate customizable widget plugins for the prompts.chat feed system

149.6k
0
AI

flags

Logo of vercel
vercel

The React Framework

138.4k
0
浏览器

pr-review

Logo of pytorch
pytorch

Tensors and Dynamic neural networks in Python with strong GPU acceleration

98.6k
0
开发者工具