Skills & Knowledge · Last updated 18 May 2026 · 3 min read

Testing a skill

Before a skill goes live on the glasses, test it from the Dashboard.

Before a skill goes live on the glasses, test it from the Dashboard. The built-in test panel sends a real HTTP request to your webhook, shows the raw response, and catches problems before any engineer encounters them on-site.

Opening the test panel

Dashboard → Skills & Knowledge → Skills tab → row → Test (the flask icon — or open the skill and use the Test button in the edit form).

Test: QA Test Skill modal — Test Payload (JSON) textarea + Send Test Request button

Sending a test request

The test panel shows a JSON payload editor pre-populated with { "test": true }. Replace this with a realistic payload that matches your parameters_schema.

For a skill with customer_id (string, required) and appliance_type (string, optional):

{
  "customer_id": "CUS-001234",
  "appliance_type": "boiler"
}

Hit Send. The Dashboard POSTs (or GETs, per the skill's http_method) to your webhook_url with your test payload + a synthetic session_context object.

Reading the response

The panel shows three things:

Field Meaning
HTTP status What your endpoint returned (200 = good; anything else = something to investigate)
Latency Round-trip time in ms. Watch this — anything regularly over 3-5s will make the engineer wait
Response body Raw JSON returned by your endpoint, syntax-highlighted

If your endpoint returned valid JSON, the panel renders it nicely. If it returned HTML or invalid JSON, you'll see the raw text — fix that on your endpoint before going live.

What to verify

  1. Status is 200 for the happy path.
  2. Response shape matches what the AI expects — see Skill response fields for the response_target-specific shapes.
  3. Latency is acceptable — under 3s for synchronous lookups, under 1s if possible.
  4. Auth header check works — temporarily flip the auth header to something wrong, confirm your endpoint rejects it.
  5. Required parameters are validated — send a payload missing a required field and confirm your endpoint returns a clean error, not a 500.

Common issues + fixes

Symptom Cause Fix
HTTP 401 Auth header wrong Update the auth header in the skill row; confirm your endpoint accepts the format
HTTP 404 URL wrong Double-check webhook_url — common typo: forgot /v1/ or trailing path
HTTP 500 Your endpoint crashed Check your endpoint logs for the stack trace
HTTP 504 (TrainAR-side) Timeout exceeded Either speed up your endpoint or raise timeout_ms
Empty response body Endpoint returned 204 No Content Return JSON even on success — {"ok":true} is fine
Mangled JSON Endpoint returned text/html or invalid JSON Set Content-Type: application/json + return valid JSON

Testing against staging vs production

If you have separate staging and production tenants on TrainAR, test against the staging tenant first — that way you're not testing against your live customers' data. Switch your skill's webhook_url to your staging endpoint when testing.

After the test panel passes

Toggle the skill to Active (the is_active field). The next session for an assigned seat will pick it up — typically within seconds of session start.

Where to next