# 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](/developer-guide/classic-api/core-api/tools.md) 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](/developer-guide/platform-api/platform-api/integrations.md) 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](/developer-guide/platform-api/platform-api/integrations.md) 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](/developer-guide/platform-api/platform-api/tool-testing.md) 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)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.amigo.ai/developer-guide/platform-api/platform-api/skills.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
