# Skills

Skills are companion agent capabilities. They are LLM-backed micro-agents that execute specific tasks within a conversation. Unlike Classic API tools (which run versioned code packages), skills are configured declaratively with a system prompt, input/output schema, and model selection.

{% hint style="info" %}
**Different from Classic API Tools** - Classic API [Tools](https://docs.amigo.ai/developer-guide/classic-api/core-api/tools) are versioned code packages from Git repos. Platform API Skills are LLM-backed declarative micro-agents with prompt-based configuration. Choose Tools for custom code execution, Skills for LLM-native reasoning.
{% endhint %}

## Endpoints

| Method   | Path                                        | Description                                          |
| -------- | ------------------------------------------- | ---------------------------------------------------- |
| `POST`   | `/v1/{workspace_id}/skills`                 | Create a skill                                       |
| `GET`    | `/v1/{workspace_id}/skills`                 | List skills (paginated, filterable)                  |
| `GET`    | `/v1/{workspace_id}/skills/{id}`            | Get a skill                                          |
| `PUT`    | `/v1/{workspace_id}/skills/{id}`            | Update a skill (increments version)                  |
| `DELETE` | `/v1/{workspace_id}/skills/{id}`            | Delete a skill                                       |
| `GET`    | `/v1/{workspace_id}/skills/{id}/references` | Find context graphs and services that use this skill |

## Core Fields

| Field           | Type           | Description                                                                                                |
| --------------- | -------------- | ---------------------------------------------------------------------------------------------------------- |
| `id`            | string         | Unique identifier                                                                                          |
| `slug`          | string         | URL-friendly identifier (lowercase, hyphens/underscores, 2-63 chars). Immutable after creation.            |
| `name`          | string         | Human-readable name                                                                                        |
| `description`   | string         | What the skill does                                                                                        |
| `system_prompt` | string or null | Instructions for the skill's LLM. Required for orchestrated, autonomous, browser, and computer\_use tiers. |
| `input_schema`  | object         | JSON Schema defining expected inputs                                                                       |
| `result_schema` | object or null | JSON Schema defining structured outputs                                                                    |
| `version`       | integer        | Auto-incremented on each update                                                                            |

## Execution Configuration

| Field                   | Type           | Default          | Description                                                                            |
| ----------------------- | -------------- | ---------------- | -------------------------------------------------------------------------------------- |
| `execution_tier`        | string         | `orchestrated`   | Execution mode (see tiers below)                                                       |
| `model`                 | string         | platform default | LLM model for skill execution. Contact your Amigo representative for available models. |
| `max_tokens`            | integer        | 4096             | Maximum output tokens                                                                  |
| `max_result_chars`      | integer        | 2000             | Maximum result text length                                                             |
| `timeout_s`             | float          | 60.0             | Execution timeout in seconds                                                           |
| `thinking_effort`       | string or null | null             | `low`, `medium`, or `high`                                                             |
| `enable_caching`        | boolean        | true             | Cache LLM responses                                                                    |
| `enable_citations`      | boolean        | false            | Include source citations                                                               |
| `use_structured_output` | boolean        | false            | Force structured JSON output                                                           |
| `max_agent_turns`       | integer        | 20               | Max tool-use turns (orchestrated/autonomous)                                           |
| `checkpoint_enabled`    | boolean        | true             | Enable checkpointing (autonomous)                                                      |
| `approval_required`     | boolean        | false            | Require human approval before execution                                                |

## Execution Tiers

| Tier           | Description                                                  | Use Case                                                           |
| -------------- | ------------------------------------------------------------ | ------------------------------------------------------------------ |
| `direct`       | Single LLM call, no tool use. Fastest.                       | Classification, extraction, simple questions                       |
| `orchestrated` | Multi-turn with tool use, managed by the platform            | Multi-step workflows, API calls, data gathering                    |
| `autonomous`   | Extended agent loop with checkpointing                       | Long-running tasks, complex research                               |
| `browser`      | Browser-based execution with allowed domains                 | Web portal interactions, form filling                              |
| `computer_use` | Full desktop automation via browser, RDP, or VNC connections | Interacting with legacy desktop applications, systems without APIs |

### Browser Tier Fields

| Field                      | Type           | Description                                   |
| -------------------------- | -------------- | --------------------------------------------- |
| `browser_start_url`        | string or null | Initial URL for browser session               |
| `browser_allowed_domains`  | array          | Domains the browser can navigate (max 50)     |
| `browser_auth_integration` | string or null | Integration to use for browser authentication |

### Computer Use Tier Fields

| Field                 | Type           | Description                                                                                           |
| --------------------- | -------------- | ----------------------------------------------------------------------------------------------------- |
| `desktop_integration` | string or null | Integration ID for the desktop connection. The referenced integration must use `protocol: "desktop"`. |

The desktop integration defines the connection parameters (host, port, credentials, display dimensions). Create a desktop integration first via the [Integrations](https://docs.amigo.ai/developer-guide/platform-api/platform-api/integrations) endpoints with `protocol: "desktop"`, then reference its ID here.

Computer Use skills execute a multi-turn interaction loop: the LLM receives screenshots, decides actions (click, type, scroll), and the platform translates those into input events on the connected desktop session. Results are returned as structured data to the calling agent.

## Delivery and Urgency

| Field              | Type   | Default     | Description                                        |
| ------------------ | ------ | ----------- | -------------------------------------------------- |
| `delivery`         | string | `interrupt` | `interrupt` (immediate) or `queue` (wait for turn) |
| `urgency_keywords` | array  | `[]`        | Keywords that trigger urgent delivery (max 50)     |

## Integration with External APIs

Skills can call external APIs through [Integrations](https://docs.amigo.ai/developer-guide/platform-api/platform-api/integrations) and inline tool definitions:

| Field               | Type  | Description                                                              |
| ------------------- | ----- | ------------------------------------------------------------------------ |
| `integration_tools` | array | References to integration endpoints: `{ integration_id, endpoint_name }` |
| `static_tools`      | array | Inline tool definitions with name, description, and input schema         |

## References

Before modifying or deleting a skill, check what depends on it:

```
GET /v1/{workspace_id}/skills/{id}/references
```

Returns a list of context graphs (with specific states) and services that reference the skill's slug. This prevents breaking live conversation flows by accidentally removing a skill that is in use.

## Testing

Use the [tool testing](https://docs.amigo.ai/developer-guide/platform-api/platform-api/tool-testing) endpoints to execute a skill in isolation without starting a conversation. Useful for validating prompt engineering and schema design before wiring into a context graph.

## Filtering and Pagination

The list endpoint supports:

* `enabled` filter: show only active or inactive skills
* `execution_tier` filter: filter by tier
* `search`: text search across skill names
* `sort_by`: `name`, `created_at`, `updated_at`, or `slug`
* Cursor-based pagination with `limit` and `continuation_token`

## API Reference

* [Skills](https://docs.amigo.ai/api-reference/readme/platform/skills)
