Deploy & Test
Once you have written a skill, you need to deploy it, install it into a workspace, and verify it works. This page covers all three steps.
Deploy
Deploy via CLI
From your skill’s root directory (where aerostack.json lives):
Authenticate
aerostack auth loginSelect your project
aerostack project use my-projectDeploy
aerostack deploy skillThe CLI reads your aerostack.json, bundles the Worker code, and deploys it to your project. You will see output like:
Deploying skill: send-email
Bundling src/index.ts...
Uploading to project my-project...
Skill deployed successfully.
Skill ID: sk_abc123def456
Name: send-email
Tool: send_email
Status: activeThe CLI automatically detects the skill type from "type": "skill" in aerostack.json. You do not need to specify it manually.
Install into a Workspace
A deployed skill is not usable until it is installed into a workspace. Once installed, every consumer of that workspace can call it.
Install via CLI
# Set the active workspace
aerostack workspace use my-workspace
# Install the skill
aerostack skill install send-emailAfter install, the skill’s tool is available in the workspace as send-email__send_email (namespaced as {skill-slug}__{tool_name}).
To verify installation:
aerostack skill listOutput:
Workspace: my-workspace
Skill Tool Status
send-email send-email__send_email active
generate-pdf generate-pdf__generate_pdf activeTest Locally
Before deploying, you can test your skill locally using the Aerostack CLI’s development server.
Start the local dev server
aerostack devThis starts a local server (default port 8787) with simulated bindings for Database, Cache, Storage, and other platform services.
Send a test request
curl -X POST http://localhost:8787 \
-H "Content-Type: application/json" \
-d '{
"to": "[email protected]",
"subject": "Test Email",
"body": "<h1>Hello</h1><p>This is a test.</p>"
}'Check the response
{
"success": true,
"email_id": "abc123",
"to": "[email protected]",
"subject": "Test Email"
}Secrets (like RESEND_API_KEY) are not available in the local dev environment by default. Create a .dev.vars file in your skill’s root directory to provide them locally:
RESEND_API_KEY=re_test_xxxxxxxxxxxxx
[email protected]Never commit .dev.vars to version control. Add it to .gitignore.
Testing with environment bindings
If your skill uses Database, Cache, or Storage bindings, the CLI creates local instances automatically. To set up a local database schema:
# Apply your schema to the local database instance
aerostack db execute --local --file=schema.sqlThen aerostack dev will use the local database with your schema applied.
Verify in Workspace
After deploying and installing, verify the skill works end-to-end by calling it through the workspace.
Using an LLM client
Connect any MCP-compatible LLM client (Claude Desktop, Cursor, etc.) to your workspace URL. Ask the LLM to use your skill:
“Send an email to [email protected] with the subject ‘Weekly Report’ and the body ‘Here is your weekly summary.’”
The LLM will discover the send_email tool in the workspace and call it.
Using the workspace API directly
You can also call skills through the workspace REST API:
curl -X POST https://your-project.aerostack.dev/api/v1/workspace/my-workspace/tools/send-email__send_email \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "[email protected]",
"subject": "Weekly Report",
"body": "Here is your weekly summary."
}'Checking logs
View skill execution logs in the Admin Dashboard under Skills > select your skill > Logs. Logs show:
- Request timestamp
- Input parameters (redacted for secrets)
- Response status code
- Execution duration
- Any errors
Updating a Deployed Skill
To update a skill that is already deployed:
# Make your changes to src/index.ts or aerostack.json
# Then redeploy
aerostack deploy skillThe update is applied immediately. All workspaces that have the skill installed will use the new version. There is no need to reinstall.
If you change the tool.input_schema in aerostack.json, LLM clients will pick up the new schema on their next tool discovery call. Existing conversations may need to refresh their tool list.
Removing a Skill
Remove from a workspace
aerostack skill removeThis launches an interactive prompt to select which skill to remove from the active workspace.
Delete the deployment
To delete the skill entirely (removes it from all workspaces):
- Go to Skills in the Admin Dashboard
- Select the skill
- Click Delete
Troubleshooting
| Problem | Cause | Fix |
|---|---|---|
| Skill deploys but is not callable | Not installed in any workspace | Run aerostack skill install <slug> |
| LLM does not discover the skill | Client has stale tool list | Reconnect the LLM client or refresh tools |
| ”Method not allowed” error | Skill only handles POST, client sent GET | Ensure your skill handles the correct HTTP method |
| Secret not available | .dev.vars missing or secret not set | Run aerostack secrets set KEY value for deployed, or add to .dev.vars for local |
| Local DB is empty | Schema not applied | Run aerostack db execute --local --file=schema.sql |
Next Steps
- Publish to Hub — share your skill with the Aerostack community
- CLI skill commands — full reference for all skill-related CLI commands