Store Functions And Transactions
SkillAI & modelsGives your agent the naming and transaction rules for writing store functions in server code.
Use Store Functions And Transactions in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add Store Functions And Transactions and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the Store Functions And Transactions skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; ahel provides instructions and does not run this skill.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
About this skill
Naming and transaction rules for server store functions in `server/**/store.ts`. Use when adding, renaming, or calling a store function, writing a bulk or singular CRUD helper, or wiring a query into a transaction.
What this skill tells your AI
The instructions your AI receives, as published by builderio/agent-native in templates/tasks/.agents/skills/store-conventions/SKILL.md and read by ahel’s review.
Every store in server/**/store.ts exposes full CRUD for its entity: create,
get + list, update, delete. Naming follows three rules:
- Unsuffixed means "by ids."
deleteCustomFieldValues({ ids })deletes by value id. Any other selector is explicit:deleteCustomFieldValuesByTaskIds,deleteCustomFieldValuesByFieldIds,updateCustomFieldValuesByTaskId. - The plural is the implementation; the singular delegates to it with a
one-element id list.
deleteTaskcallsdeleteTasks,updateCustomFieldValuecallsupdateCustomFieldValues. Never write the same query twice. listtakes every selector as optional rather than splitting intoByXvariants —listStoredItems({ ids?, includeDone? }),listCustomFieldValues({ ids?, taskIds?, fieldIds? }).
Where a patch is genuinely per-row (custom field title/config, a task's field
values), the bulk form takes one entry per id instead of one patch across ids.
Upsert counts as create; do not add a separate create for upserted rows.
Action names are a separate public surface and do not follow this convention:
the bulk-delete-tasks action still exists and calls deleteTasks.
Every function takes the database handle as an optional trailing argument,
so it runs standalone or joins a caller's transaction. The handle is defined
once, in server/db/transaction.ts:
export type DbHandle = Pick<
ReturnType<typeof getDb>,
"select" | "insert" | "update" | "delete" | "transaction"
>;
Related Skills
- actions — actions are the callers that compose these store functions.
- task-inbox-workflow — the task/inbox operations backed by these stores.
Signals
- GitHub stars
- 7k
- Forks
- 635
- Last commit
- Oct 2026
Advanced
- Item type
- skill
- Key
store-conventions- Source
- github.com/builderio/agent-native
github.com/builderio/agent-native
Related picks
Skill · mattpocock
The pick for TypeScripttypescript-pro
Skill · jeffallan
The pick for TypeScriptskill-creator
Skill · anthropics
More in AI & modelstriage
Skill · mattpocock
More in AI & modelsalgorithmic-art
Skill · anthropics
More in AI & modelscode-review-and-quality
Skill · addyosmani
More in AI & models