agent-app-creator
Create Agent App applications (PocketBase backend, React kit frontend).
Skill by CraftOS-dev
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/craftos-dev-agent-app-creator
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: design, frontend, backend, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/agent-app-creator
What's inside
- Skill name
agent-app-creator- Description
- Create Agent App applications (PocketBase backend, React kit frontend). Scaffolds, develops, validates, and launches local web apps with persistent state and realtime UI.
- License
- MIT
- Instructions
- 353 lines in SKILL.md · view on GitHub
Before installing
- Instructions call the network
Files (9)
- SKILL.md
- EXAMPLES.md · references/
- INTEGRATIONS.md · references/
- MVC-A.md · references/
- QUESTIONNAIRE.md · references/
- STANDARDS.md · references/
- TRIGGERS.md · references/
- TROUBLESHOOTING.md · references/
- VERIFY.md · references/
SKILL.md (first lines)
# Agent App Creator
A Agent App is a self-contained local web app: **one PocketBase process** (data,
auth, realtime, custom verbs) serving a **React frontend built from a preset
kit**. You declare schema, compose UI, wire verbs — the platform owns the rest.
## Step 0: Have a registered project (MANDATORY FIRST)
1. **Task instruction contains `Project ID` + `Project Path`** → the project is
already scaffolded. Use those values. **Skip scaffolding.**
2. **No Project ID in your instruction** (user asked in a regular chat) → call
`agent_app_scaffold(name, description, auth_mode)` — it scaffolds AND
dispatches the build to the project's dedicated session. Tell the user the
build started, then end your turn. Do NOT build in the chat session.
Pick `auth_mode` from requirements: `none` (personal local tool — default) or
`multi-user` (accounts; the kit's LoginGate wraps the app automatically).
## The ownership rule (the gate enforces this)
Edit ONLY:
| Path | Purpose |
|------|---------|
| `frontend/src/app/` | all UI code |
| `pb/pb_migrations/` | schema — one NEW migration per change |
| `pb/pb_hooks/ops.pb.js` + new `*.pb.js` / `*.js` modules | custom verbs + their helpers |
| `operations.json` | declarations for those verbs (non-`system` entries) |
| `AGENT_APP.md` | your plan/context/index — keep current |
NEVER edit `frontend/src/kit/`, `frontend/src/main.tsx`, `frontend/src/config.gen.ts`,
`pb/pb_hooks/_system.pb.js`, `manifest.json`, or build configs — the validation
gate hashes them and **fails the build** if they changed. Need a variant of a
kit component? Wrap it in `app/`:
```tsx
// frontend/src/app/components/DueBadge.tsx
import { cn } from '../../kit/index.ts';
export function DueBadge({ overdue }: { overdue: boolean }) { /* compose */ }
```
## Before coding
0. **If `reference/requirements.md` starts with `MARKETPLACE DECISION: install
<app-id>`** — do NOT build. Call
`agent_app_marketplace_install(app_id=..., name=..., description=...,
will_adapt=<true if the decision line says adapt: yes>)`. It installs INTO
this project (same tab and id — never a duplicate).
- `adapt: no` — the install completes the build and the system announces
it; do NOT send your own summary and do NOT call notify_ready or
walk_verify. End the run.
- `adapt: yes` — after the install, apply ONLY the adaptations listed
under `## Adaptations` (modify flow: edit → `agent_app_notify_ready` →
`agent_app_walk_verify`). If the list says "none specified", ask the
user what to change (a FINAL `send_message`) instead of guessing.
The user explicitly chose reuse over a fresh build — never rebuild what
was just installed, even if a later trigger asks you to "continue" it.
1. Read `agent_file_system/GLOBAL_AGENT_APP.md` — colors, fonts, enforced rules.
2. Read `{project_path}/AGENT_APP.md` and `reference/requirements.md`. The
creation wizard interviewed the user and synthesized `requirements.md` — it
is the **binding spec**: implement it exactly and mirror its checklist into
`AGENT_APP.md`. If it is absent, build from the project description; only ask
the user (a FINAL `send_message`, `continue_work=false`) when something is
genuinely blocking and you cannot reasonably decide it yourself.
3. **Any feature need data from outside the app? Check, then research.**
FIRST check the `[INTEGRATIONS this app can use]` block already in your
context — if a connected integration's action covers the feature (email =
`send_gmail`), use `bridge.callAction`; nothing to research. Only for
THIRD-PARTY public APIs: research like an engineer — endpoint, auth,
response shape, limits. Spawn a research_agent; never write an
integration hook from memory.
- User named an API/service → research it. If it needs a key, tenant URL,
or account detail you cannot find online, ask the user (final
`send_message`) and build the rest of the app while waiting.
- No API named → research candidates and pick a **keyless public API**
yourself (e.g. Open-Meteo for weather). Choosing the source is your
engineering call — no user round-trip.
- Nothing usable exists → build the honest empty/offline state and REPORT
the blocker in your final message. **Mock or generated data is forbidden**
unless requirements explicitly ask for demo data.
4. A Agent App build is substantial work — the standard run protocol applies
as-is (scope, plan, execute, verify, deliver); this skill adds nothing to
it. `reference/requirements.md` is the binding spec verification checks
against; mirror the feature checklist in `AGENT_APP.md`.
## Per feature: schema → verbs → UI
**Schema** — add a new file in `pb/pb_migrations/`. **Never edit AND never
rename or delete a migration that has been applied** (i.e. after any
successful launch): the filename is the identity in the live database.
Renaming one makes every boot re-run its "new" replacement into the existing
schema — PocketBase exits before serving anything and the app cannot start
until the original filename is restored. Fixing a migration's mistake =
writing a NEW migration that alters the collection.
The ONLY top-level call is `migrate(upFn, downFn)` — the down/rollback
function is the **second argument**. A top-level `rollback(...)` does not
exist and panics the whole PocketBase process at load. Follow the starter
migration's pattern exactly: field types, `autodate`
created/updated, and rules matching the project's `authMode` (`manifest.json`):
`''` open rules for `none`; `@request.auth.id != ""` (or owner-scoped
`owner = @request.auth.id` with a `relation` to `users`) for `multi-user`.
**Seeding records in a migration:** `new Record(...)` takes the **Collection
OBJECT — never an id string**. Passing `someCollection.id` nil-panics
PocketBase internally and can WEDGE the process (alive, silent, never
serving). The gate kills and reports it, but write it right:
```js
const locations = app.findCollectionByNameOrId('locations'); // the OBJECT
const record = new Record(locations);
record.set('city_name', 'Manchester');
app.save(record);
```
**Relation fields — the #1 migration mistake:** `collectionId` must be the
target collection's **ID, never its name**. Save the target collection first,
then reference it:
```jsFrom CraftOS-dev/CraftBot, MIT.
More from CraftOS-dev/CraftBot
- 0.809score
fal-upscale
fal-ai
Upscale and enhance image resolution using AI.
SkillAFreshness: A★ 400Claude Code +9 - 0.806score
postgres
planetscale
PostgreSQL best practices, query optimization, connection troubleshooting, and performance improvement.
SkillAFreshness: A★ 400Claude Code +9 - 0.806score
vitess
planetscale
Vitess best practices, query optimization, and connection troubleshooting for PlanetScale Vitess databases.
SkillAFreshness: A★ 400Claude Code +9 - 0.752score
google-sheets
maton
Google Sheets API integration with managed OAuth.
SkillAFreshness: A★ 400Claude Code +9 - 0.752score
google-meet
maton
Google Meet API integration with managed OAuth.
SkillAFreshness: A★ 400Claude Code +9 - 0.752score
gmail
maton
Gmail API integration with managed OAuth.
SkillAFreshness: A★ 400Claude Code +9 - 0.752score
xero
maton
Xero API integration with managed OAuth.
SkillAFreshness: A★ 400Claude Code +9 - 0.752score
typeform
maton
Typeform API integration with managed OAuth.
SkillAFreshness: A★ 400Claude Code +9 - 0.752score
google-play
maton
Google Play Developer API (Android Publisher) integration with managed OAuth.
SkillAFreshness: A★ 400Claude Code +9 - 0.752score
outlook-api
maton
Microsoft Outlook API integration with managed OAuth.
SkillAFreshness: A★ 400Claude Code +9 - 0.748score
salesforce
maton
Salesforce CRM API integration with managed OAuth.
SkillAFreshness: A★ 400Claude Code +9 - 0.742score
google-slides
maton
Google Slides API integration with managed OAuth.
SkillAFreshness: A★ 400Claude Code +9
Signals
- Stars
- 400
- Forks
- 49
- Open issues
- 12
- Last commit (this folder)
- Sep 18, 2026 (1 month ago)
- Last release
- Oct 23, 2026 (6 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/CraftOS-dev/CraftBot
- Website
- craftbot.live/
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from CraftOS-dev
- 0.679score
jira
CraftOS-dev
Use when the user mentions Jira issues (e.g., "PROJ-123"), asks about tickets, wants to create/view/update issues, check sprint status, or manage their Jira…
SkillAFreshness: A★ 400Claude Code +9 - 0.679score
mysql
CraftOS-dev
Plan and review MySQL/InnoDB schema, indexing, query tuning, transactions, and operations.
SkillAFreshness: A★ 400Claude Code +9 - 0.679score
codeql
CraftOS-dev
Scans a codebase for security vulnerabilities using CodeQL's interprocedural data flow and taint tracking analysis.
SkillAFreshness: A★ 400Claude Code - 0.679score
google-sheet
CraftOS-dev
Read, write, append, and manage Google Sheets via the Google Sheets API (Node.js SDK).
SkillAFreshness: A★ 400Claude Code +9 - 0.679score
airweave
CraftOS-dev
Context retrieval layer for AI agents across users' applications.
SkillAFreshness: A★ 400Claude Code +9 - 0.679score
ontology
CraftOS-dev
Typed knowledge graph for structured agent memory and composable skills.
SkillAFreshness: A★ 400Claude Code +9
Cite this page
agent-app-creator skill. Agent Mart. https://agentmart.dev/skills/craftos-dev-agent-app-creator (last updated 2026-10-24)