Fast end-to-end workflow for turning this starter into a working domain app from a short or vague request. Use when asked to build, make, create, or prototype an app, tool, tracker, dashboard, booking, inventory, or CRM system with Agent-Native. Read before the first edit.
92%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Done means one useful domain workflow with a designed route, shared UI/agent actions, correct access, agent context, and a smoke run that proves its key rule. Finish a narrow slice before expanding it.
This skill edits source files. If this session cannot write files (a deployed app's runtime agent), say the change needs a code session and stop.
The four-area parity rule from adding-a-feature (UI, action, instructions,
application state) applies to everything you add. This skill supplies the
order and decisions; use the edit-point reference for the scaffold you have.
Read AGENTS.md, this skill, and only the files you will edit. Skip broad repo
surveys, README.md, and DESIGN.md. Use the bundled docs/source commands in
AGENTS.md only to answer a concrete API question; do not web-research
framework APIs.
Choose these six things before writing code:
references/data-and-access.md: private, team-visible, shared on invite, or a
child that inherits its parent's access. Making a team resource private per
user is the usual wrong turn. Everyone then sees an empty list, and no
conflict check can see anyone else's rows. Give each table owner_email
and/or org_id, directly or via ownableColumns(); org_id alone passes
[db-tool-scoping]. Doctor checks the schema marker, not query authorization;
never denylist or opt out rooms or bookings.list-<things>, create-<thing>, a single update-<thing>
patch per resource, and the domain verbs (cancel-booking). Fewer,
orthogonal tools make the agent choose better./rooms). Preserve
existing routes and set app.homePath so sign-in lands on the domain when
that is the requested home screen.roomId, week) that
belong in navigation.In a generated app, read package.json at
["agent-native"].scaffold.template and choose the matching reference:
chat: references/edit-points-chat.mddefault: references/edit-points-default.mdadding-workspace-apps to create an app, then follow the
new app's own AGENTS.md and scaffold reference.AGENTS.md and adding-a-feature; do not
apply Chat or default shell instructions to it.If metadata is absent, inspect the actual route, layout, plugin, and navigation files before choosing an edit point. Do not infer a shell from the app name.
Write the UI, actions, instructions, and state before running the verification steps below. Do not leave placeholder or comment-only screens.
references/rooms-example.md gives a booking slice to adapt. It was verified
against the Chat starter; use the selected edit-point reference for the shell.
Use frontend-design for a deliberate visual direction and finish the
requested screens and interactions.
ownerEmail from ctx.userEmail and orgId from ctx.orgId on inserts
where those columns exist. Never rely on a development identity fallback.crypto.randomUUID()..limit()), select only the columns it
renders, and index the columns it filters and sorts on.The access table, the concurrency pattern, and the security rules are in
references/data-and-access.md.
schema is zod, with .describe() on every field stating its units and
format (for example, "ISO 8601 date-time with offset").http: { method: "GET" } and readOnly: true. Leave writes on the
default POST so useActionMutation needs no method.fail(message, { errorCode, statusCode }) from
@agent-native/core/action: 409 for a conflict, 404 for not found, 403 for
forbidden. A returned { error } is counted as success everywhere, and a
bare throw reaches the browser as a generic 500.id. Keep LLM calls out of actions;
AI-shaped work belongs in the agent chat.useActionQuery and useActionMutation from
@agent-native/core/client/hooks. No fetch, and no /api/* routes for app
data. Those routes are only for uploads, webhooks, OAuth callbacks, and streaming.Skeleton in the shape of the final layout, not a
spinner or "Loading…".onMutate, update ["action", "<name>", params]
with setQueryData; in onError, roll back and show
toast.error(actionErrorMessage(error) ?? "<fallback>").@/components/ui/*. When one is missing (dialog,
select, skeleton, alert-dialog), add a one-line re-export like button.tsx:
export * from "@agent-native/toolkit/ui/dialog";.AlertDialog; never use window.confirm,
alert, or prompt.frontend-design.link builder with buildDeepLink() to actions that create or
list navigable resources; see adding-a-feature for the shape.Append one section of about 1,500 characters at most to AGENTS.md. The
runtime prompt cuts the file off at 6,000 characters. Cover:
navigation fieldsKeep the action table aligned with the scaffold's primary tool list when one
exists; other actions should remain discoverable through tool-search. Leave
unrelated AGENTS.md sections, README, and DESIGN.md as they are.
Agent writes need no wiring, because the chat run refreshes action queries
after each tool. Add useDbSync({ realtime: { reason } }) to a page only when
other people change its data while it is open and the user must see the change
before refreshing. A booking grid doesn't qualify: the server rejects bookings
made from a stale view. See real-time-sync.
Start pnpm exec agent-native dev in the background, without --open, and
wait for the ready URL. Startup regenerates .generated/action-types.d.ts
and the actions registry, so a typecheck run before this is meaningless.
On loopback, automatic dev sign-in works when the local database has no real
users. If the sign-in page appears, use an existing local account or switch
to a separate disposable local database; do not create accounts or set
AUTH_DISABLED.
Run pnpm typecheck, then pnpm agent-native:doctor. Plain pnpm doctor
runs pnpm's own command and exits 0 without running Agent-Native Doctor. Fix
every finding, then rerun only what failed.
Check the agent path. Call a guarded write twice with the same input via
pnpm action <name> --key value. The second call must fail with the expected
message; read back the saved state through the matching list/get action.
The CLI prints the failure message, not its structured errorCode, so also
verify any code-specific behavior in the action contract or browser.
Run one browser smoke on the domain route:
Inspect console and network failures. Fix errors from the new route or actions and identify existing scaffold messages separately. The only expected 4xx/5xx is the rejection being tested. Capture the finished workflow.
Stop the dev server and close the tab.
Skip the production build, unrelated test suites, and README or DESIGN rewrites.
To triage failures, see references/verification.md.
State what works and the proof, what you deferred, and anything the user still
has to do (for example, set DATABASE_URL before deploying). Never report a
check you didn't run.
adding-a-feature: the parity checklist for each later feature in this app.frontend-design, actions, sharing, real-time-sync, and security:
go deeper on one area when the references aren't enough.BuilderIO/agent-native
a0356c6
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.