SkillsDeploy & Test

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 login

Select your project

aerostack project use my-project

Deploy

aerostack deploy skill

The 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:      active

The 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-email

After 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 list

Output:

Workspace: my-workspace

  Skill              Tool                          Status
  send-email         send-email__send_email        active
  generate-pdf       generate-pdf__generate_pdf    active

Test Locally

Before deploying, you can test your skill locally using the Aerostack CLI’s development server.

Start the local dev server

aerostack dev

This 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.sql

Then 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 skill

The 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 remove

This 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):

  1. Go to Skills in the Admin Dashboard
  2. Select the skill
  3. Click Delete

Troubleshooting

ProblemCauseFix
Skill deploys but is not callableNot installed in any workspaceRun aerostack skill install <slug>
LLM does not discover the skillClient has stale tool listReconnect the LLM client or refresh tools
”Method not allowed” errorSkill only handles POST, client sent GETEnsure your skill handles the correct HTTP method
Secret not available.dev.vars missing or secret not setRun aerostack secrets set KEY value for deployed, or add to .dev.vars for local
Local DB is emptySchema not appliedRun aerostack db execute --local --file=schema.sql

Next Steps