Overview
Skill management commands help you build, test, and deploy your AI skills.lua init
lua compile
lua test
lua push
lua deploy
lua init
Initialize a new Lua skill project in the current directory.Options
Non-Interactive Mode
What It Does
Choose Agent
Configure Agent (if new)
- Enter business name
- Enter agent name
- Select business type
- Select brand personality
- Enter brand traits
- Configure features
Create Project
- Copies template files
- Creates
lua.skill.yaml - Installs dependencies
- Ready to customize!
Interactive Prompts
- Minimal (Default)
- With Examples
- Existing Agent
What Gets Created
- Minimal (Default)
- With Examples
Configuration File
lua.skill.yaml is created with:
LuaAgent code (in src/index.ts), not in YAML. The YAML file is state-only and tracks IDs and versions.lua compile
Compile TypeScript skill into deployable JavaScript bundles.What It Does
Analyze Code
src/index.ts fileBundle Tools
Extract Metadata
Create Deployment
dist/ directoryUpdate Config
lua.skill.yamlOutput
Example Output
Features
- β Automatic Detection - Finds all tools in your code
- β Fast Bundling - Uses esbuild for speed
- β Type Safety - Validates TypeScript
- β Dependency Management - Bundles all dependencies
- β Skill Creation - Auto-creates skills in config
- β Drift Detection - Checks for server/local differences
Compile Options
Learn More
lua test
Test individual tools locally in a sandboxed environment.Options
Non-Interactive Mode
How It Works
Compile
List Tools
Select Tool
Enter Inputs
Execute
View Results
Example Session
Features
- β Dynamic Prompts - Based on Zod schema
- β Type Validation - Validates inputs automatically
- β
Environment Loading - Loads
.envandlua.skill.yamlvariables - β Secure Sandbox - Isolated VM execution
- β Detailed Errors - Clear error messages
Testing Complex Inputs
lua push
Push your compiled components to the Lua server.Options
lua push <primitive> now synchronously runs a fresh-from-disk backup as the final step. If the backup fails, the command exits non-zero β no more silent partial success where the primitive landed but local source never reached the canonical store.Non-Interactive Mode
lua push all --force to push all components at once. Add --auto-deploy to also activate/deploy them.Usage Modes
- Interactive Mode
- Direct Mode - Skill
- Direct Mode - Persona
What It Does (Skills)
Select Skill (if interactive)
Enter Version
Update Configuration
lua.skill.yamlAuthenticate
Compile
Upload
Optional Deploy
Example: Push Only (Interactive)
Example: Push Only (Direct Mode)
Example: Push and Deploy
Version Management
- Auto-Increment
- Custom Version
- Semantic Versioning
--force, the CLI automatically checks the server for the highest existing version and suggests the next available version. This prevents βVersion already existsβ errors during automated deployments.Deploy Now or Later?
- Deploy Later (Recommended)
- Deploy Immediately
- Major changes
- Need more testing
- Team coordination
- Off-peak deployment
Important Notes
Version Management
The version number is the only field inlua.skill.yaml you should manually edit:
Requirements
- Must be in skill directory with
lua.skill.yaml - Must have valid API key (
lua auth configure) - Version must not already exist on server
lua deploy
Deploy a specific version of a single primitive to production (all users).type is optional β when omitted, an interactive menu lets you pick. Valid types: skill, webhook, job, preprocessor, postprocessor, persona, all.
lua deploy is the original, single-primitive release command and remains fully supported β but for agents already using agent versions, lua version create + lua version promote is the recommended flow: it snapshots and switches every primitive at once, atomically, instead of one at a time. See The release flow, end to end for how push, deploy, and version fit together.What lua deploy actually does depends on your agentβs history:- If the agent has promoted at least one agent version,
lua deployperforms a scoped promote: it automatically creates and promotes a new agent version identical to the current one, except for the primitive you just deployed. The change is live immediately, and it still shows up inlua version list(tagged with adeploy β¦message) so your version history has no gaps. - If the agent has never created or promoted an agent version,
lua deployactivates the primitive directly, exactly as described below.
Options
Usage
Non-Interactive Mode
What It Does
Select Type
Select Entity
Fetch Versions
Select Version
--set-version latest)Confirm
--force)Deploy
Example
Features
- Works for all primitive types β not just skills
- Shows all available versions with currently deployed one highlighted
- Requires explicit confirmation (skip with
--force) - Immediate deployment (no rollback delay)
lua deploy all --forcedeploys latest version of every primitive in one command- For agents with agent-version history, performs a scoped promote behind the scenes β see the note above
lua push backup
Options
What Gets Backed Up
The backup includes all source files tracked in your compilation manifest:- Source Code:
src/directory (TypeScript files) - Configuration:
lua.skill.yaml,tsconfig.json,package.json - Environment Template:
.env.example(if exists) - Documentation:
README.md(if exists)
How It Works
Compile Project
lua compile if needed)Calculate Project Hash
Check Existing Backup
Upload New Files
- Compares file hashes with server
- Uploads missing blobs in batches
- Deduplicates identical files across backups
Save Manifest
Update Local Tracking
lua.skill.yaml with backup hash for drift detectionExample Output
Restoring from Backup
To restore a backed-up project on a new machine:- Create a new project directory
- Download all source files from cloud storage
- Restore the exact project state from backup
- Install dependencies
Use Cases
- Disaster Recovery
- Team Collaboration
- Migration
- CI/CD Safety Net
Content-Addressed Storage
Backups use content-addressed storage (like Git):- Each file is stored by its SHA-256 hash
- Identical files are stored only once
- Subsequent backups only upload changed files
- Extremely efficient for large projects with small changes
Best Practices
Backup Before Major Changes
Backup Before Major Changes
Use Git for Version Control
Use Git for Version Control
- Backup: Disaster recovery, single snapshot
- Git: Full history, branching, collaboration
Backup Before Deployment
Backup Before Deployment
Regular Backups in CI/CD
Regular Backups in CI/CD
Complete Workflow
New Project Workflow
Development Workflow
Quick Fix Workflow
lua push + lua deploy β the fastest path for a single primitive, and exactly how a brand-new agentβs first release works. Once an agent has releases itβs tracking as agent versions, prefer lua version create + lua version promote when you want several primitives to switch together atomically. lua deploy still works at that point too β it performs a scoped promote under the hood β see The release flow, end to end.Troubleshooting
No lua.skill.yaml found
No lua.skill.yaml found
β No lua.skill.yaml foundSolution: Run command from skill directory or run lua init firstVersion already exists
Version already exists
β Version 1.0.0 already exists on the serverSolution: Increment version in lua.skill.yaml:Compilation failed
Compilation failed
β No index.ts foundSolution: Create src/index.ts with skill definition:Tool validation error
Tool validation error
β Tool name invalidSolution: Tool names can only contain: a-z, A-Z, 0-9, -, _Missing dependencies
Missing dependencies
β Cannot find module 'lua-cli'Solution: Install dependencies:Best Practices
Test Before Pushing
Test Before Pushing
Use Semantic Versioning
Use Semantic Versioning
- PATCH (1.0.1): Bug fixes
- MINOR (1.1.0): New features
- MAJOR (2.0.0): Breaking changes
Test in Sandbox Before Deploy
Test in Sandbox Before Deploy
Keep Version History
Keep Version History

