.agents/skills/base44-cli/SKILL.md
The base44 CLI is used for EVERYTHING related to base44 projects: resource configuration (entities, backend functions, ai agents), initialization and actions (resource creation, deployment). This skill is the place for learning about how to configure resources. When you plan or implement a feature, you must learn this skill
npx skillsauth add offloadmywork/pokemon-app base44-cliInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Create and manage Base44 apps (projects) using the Base44 CLI tool.
This skill activates on ANY mention of "base44" or when a base44/ folder exists. DO NOT read documentation files or search the web before acting.
Your first action MUST be:
base44/config.jsonc exists in the current directoryNEVER call base44 directly. The CLI is installed locally as a dev dependency and must be accessed via a package manager:
npx base44 <command> (npm - recommended)yarn base44 <command> (yarn)pnpm base44 <command> (pnpm)WRONG: base44 login
RIGHT: npx base44 login
CRITICAL: At the very start of every AI session when this skill is activated, you MUST:
Check authentication status by running:
npx base44 whoami
If the user is logged in (command succeeds and shows an email):
If the user is NOT logged in (command fails or shows an error):
npx base44 login
- Wait for the user to confirm they have logged in before continuing
This check is mandatory and must happen before executing any other Base44 CLI commands.
The Base44 CLI provides command-line tools for authentication, creating projects, managing entities, and deploying Base44 applications. It is framework-agnostic and works with popular frontend frameworks like Vite, Next.js, and Create React App, Svelte, Vue, and more.
Use base44-cli when:
base44/config.jsoncnpx base44 ...)Use base44-sdk when:
base44/config.jsonc already existsSkill Dependencies:
base44-cli is a prerequisite for base44-sdk in new projectsbase44-cli firstbase44-sdk assumes a Base44 project is already initializedState Check Logic: Before selecting a skill, check:
base44/config.jsonc exists):
→ Use base44-cli (project initialization needed)A Base44 project combines a standard frontend project with a base44/ configuration folder:
my-app/
├── base44/ # Base44 configuration (created by CLI)
│ ├── config.jsonc # Project settings, site config
│ ├── entities/ # Entity schema definitions
│ │ ├── task.jsonc
│ │ └── board.jsonc
│ ├── functions/ # Backend functions (optional)
│ │ └── my-function/
│ │ ├── function.jsonc
│ │ └── index.ts
│ └── agents/ # Agent configurations (optional)
│ └── support_agent.jsonc
├── src/ # Frontend source code
│ ├── api/
│ │ └── base44Client.js # Base44 SDK client
│ ├── pages/
│ ├── components/
│ └── main.jsx
├── index.html # SPA entry point
├── package.json
└── vite.config.js # Or your framework's config
Key files:
base44/config.jsonc - Project name, description, site build settingsbase44/entities/*.jsonc - Data model schemas (see Entity Schema section)base44/agents/*.jsonc - Agent configurations (optional)src/api/base44Client.js - Pre-configured SDK client for frontend useconfig.jsonc example:
{
"name": "My App", // Required: project name
"description": "App description", // Optional: project description
"entitiesDir": "./entities", // Optional: default "entities"
"functionsDir": "./functions", // Optional: default "functions"
"agentsDir": "./agents", // Optional: default "agents"
"site": { // Optional: site deployment config
"installCommand": "npm install", // Optional: install dependencies
"buildCommand": "npm run build", // Optional: build command
"serveCommand": "npm run dev", // Optional: local dev server
"outputDirectory": "./dist" // Optional: build output directory
}
}
Config properties:
| Property | Description | Default |
|----------|-------------|---------|
| name | Project name (required) | - |
| description | Project description | - |
| entitiesDir | Directory for entity schemas | "entities" |
| functionsDir | Directory for backend functions | "functions" |
| agentsDir | Directory for agent configs | "agents" |
| site.installCommand | Command to install dependencies | - |
| site.buildCommand | Command to build the project | - |
| site.serveCommand | Command to run dev server | - |
| site.outputDirectory | Build output directory for deployment | - |
Install the Base44 CLI as a dev dependency in your project:
npm install --save-dev base44
Important: Never assume or hardcode the base44 package version. Always install without a version specifier to get the latest version.
Then run commands using npx:
npx base44 <command>
Note: All commands in this documentation use npx base44. You can also use yarn base44, or pnpm base44 if preferred.
| Command | Description | Reference |
| --------------- | ----------------------------------------------- | ------------------------------------------- |
| base44 login | Authenticate with Base44 using device code flow | auth-login.md |
| base44 logout | Logout from current device | auth-logout.md |
| base44 whoami | Display current authenticated user | auth-whoami.md |
| Command | Description | Reference |
|---------|-------------|-----------|
| base44 create | Create a new Base44 project from a template | create.md ⚠️ MUST READ |
| base44 link | Link an existing local project to Base44 | link.md |
| base44 dashboard | Open the app dashboard in your browser | dashboard.md |
| Command | Description | Reference |
|---------|-------------|-----------|
| base44 deploy | Deploy all resources (entities, functions, site) | deploy.md |
| Action / Command | Description | Reference |
| ---------------------- | ------------------------------------------- | --------------------------------------------------- |
| Create Entities | Define entities in base44/entities folder | entities-create.md |
| base44 entities push | Push local entities to Base44 | entities-push.md |
ALWAYS follow this exact structure when creating entity files:
File naming: base44/entities/{kebab-case-name}.jsonc (e.g., team-member.jsonc for TeamMember)
Schema template:
{
"name": "EntityName",
"type": "object",
"properties": {
"field_name": {
"type": "string",
"description": "Field description"
}
},
"required": ["field_name"]
}
Field types: string, number, integer, boolean, array, object, binary
String formats: date, date-time, time, email, uri, hostname, ipv4, ipv6, uuid, file, regex, richtext
For enums: Add "enum": ["value1", "value2"] and optionally "default": "value1"
Entity names: Must be alphanumeric only (pattern: /^[a-zA-Z0-9]+$/)
For complete documentation, see entities-create.md.
| Action / Command | Description | Reference |
| ------------------------- | --------------------------------------------- | ------------------------------------------------------- |
| Create Functions | Define functions in base44/functions folder | functions-create.md |
| base44 functions deploy | Deploy local functions to Base44 | functions-deploy.md |
Agents are conversational AI assistants that can interact with users, access your app's entities, and call backend functions. Use these commands to manage agent configurations.
| Action / Command | Description | Reference |
| ----------------------- | --------------------------------------- | ----------------------------------------------- |
| Create Agents | Define agents in base44/agents folder | See Agent Schema below |
| base44 agents pull | Pull remote agents to local files | agents-pull.md |
| base44 agents push | Push local agents to Base44 | agents-push.md |
Note: Agent commands perform full synchronization - pushing replaces all remote agents with local ones, and pulling replaces all local agents with remote ones.
File naming: base44/agents/{agent_name}.jsonc (e.g., support_agent.jsonc)
Schema template:
{
"name": "agent_name",
"description": "Brief description of what this agent does",
"instructions": "Detailed instructions for the agent's behavior",
"tool_configs": [
// Entity tool - gives agent access to entity operations
{ "entity_name": "tasks", "allowed_operations": ["read", "create", "update", "delete"] },
// Backend function tool - gives agent access to a function
{ "function_name": "send_email", "description": "Send an email notification" }
],
"whatsapp_greeting": "Hello! How can I help you today?"
}
Naming rules:
/^[a-z0-9_]+$/ (lowercase alphanumeric with underscores, 1-100 chars)support_agent, order_botSupport-Agent, OrderBotRequired fields: name, description, instructions
Optional fields: tool_configs (defaults to []), whatsapp_greeting
Tool config types:
entity_name + allowed_operations (array of: read, create, update, delete)function_name + description| Command | Description | Reference |
| -------------------- | ----------------------------------------- | ------------------------------------------- |
| base44 site deploy | Deploy built site files to Base44 hosting | site-deploy.md |
SPA only: Base44 hosting supports Single Page Applications with a single index.html entry point. All routes are served from index.html (client-side routing).
Install the CLI in your project:
npm install --save-dev base44
Authenticate with Base44:
npx base44 login
Create a new project (ALWAYS provide name and --path flag):
npx base44 create my-app -p .
Build and deploy everything:
npm run build
npx base44 deploy -y
Or deploy individual resources:
npx base44 entities push - Push entities onlynpx base44 functions deploy - Deploy functions onlynpx base44 agents push - Push agents onlynpx base44 site deploy -y - Deploy site only⚠️ MANDATORY: Before running base44 create, you MUST read create.md for:
backend-and-client vs backend-only)Failure to follow the create.md instructions will result in broken project scaffolding.
# If you have base44/config.jsonc but no .app.jsonc
npx base44 link --create --name my-app
# Build your project first
npm run build
# Deploy everything (entities, functions, and site)
npx base44 deploy -y
# Push only entities
npx base44 entities push
# Deploy only functions
npx base44 functions deploy
# Push only agents
npx base44 agents push
# Deploy only site
npx base44 site deploy -y
# Open app dashboard in browser
npx base44 dashboard
Most commands require authentication. If you're not logged in, the CLI will automatically prompt you to login. Your session is stored locally and persists across CLI sessions.
| Error | Solution |
| --------------------------- | ----------------------------------------------------------------------------------- |
| Not authenticated | Run npx base44 login first |
| No entities found | Ensure entities exist in base44/entities/ directory |
| Entity not recognized | Ensure file uses kebab-case naming (e.g., team-member.jsonc not TeamMember.jsonc) |
| No functions found | Ensure functions exist in base44/functions/ with valid function.jsonc configs |
| No agents found | Ensure agents exist in base44/agents/ directory with valid .jsonc configs |
| Invalid agent name | Agent names must be lowercase alphanumeric with underscores only |
| No site configuration found | Check that site.outputDirectory is configured in project config |
| Site deployment fails | Ensure you ran npm run build first and the build succeeded |
development
The base44 SDK is the library to communicate with base44 services. In projects, you use it to communicate with remote resources (entities, backend functions, ai agents) and to write backend functions. This skill is the place for learning about available modules and types. When you plan or implement a feature, you must learn this skill
tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------