# Create Skill Agents

Skills are the foundational building blocks for your intelligent agent system. They take action to achieve goals in key scenarios where your agent system needs to succeed. To build an agent with Machine Teaching, you will create multiple skill agents and then orchestrate them together.

You can use three different types of skill agents within AMESA.

* Create a teacher[^1] to implement a [learned skill](#user-content-fn-2)[^2] that uses DRL to make decisions. You can set up your teacher to [train the skill agent using goals](/build-multi-agent-systems/define-skills/train-with-goals-using-the-ui.md) or to [train with rewards](/build-multi-agent-systems/define-skills/train-with-goals-or-rewards-using-the-sdk.md). The skill agent will then train and practice in simulation until it can make decisions successfully.
* Create a controller[^3] to implement a [programmed skill agent](#user-content-fn-4)[^4] that makes decisions based on programming rather than learning. A controller can use math, rules, optimization, or any other technology that can be expressed in a Python program. [Configure controllers with the SDK](/build-multi-agent-systems/define-skills/configure-programmed-algorithms-as-skills.md) and publish them to the UI to use in agent systems.
* Create an orchestrator[^5] to [orchestrate skills together](/build-multi-agent-systems/orchestrate-skills.md). Orchestrators are specialized skills that direct the agent system how to choose between different decision-making skills. Orchestrators can be either learned or programmed.

You can also create skills in two different ways, using the UI and using the SDK. If you use the SDK, you can then [publish the skills to the UI](/build-multi-agent-systems/import-agent-components-to-the-ui.md) to be included in agent system designs.

For learned skills you can use either the UI or the SDK to create teachers, but the SDK includes some fine-tuning options that are not available in the UI.

Controllers for programmed skills can be created only through the SDK. They can then be published to the UI for use in agent systems.

You can use either the UI or the SDK to create selectors.

[^1]: An algorithm that creates a skill that uses DRL to learn to make decisions

[^2]: Skills that use DRL to make decisions and learn by practicing in simulation

[^3]: Any algorithm that makes decisions based on programming rather than DRL

[^4]: Skills that make decisions based on programmed algorithms

[^5]: A special skill that assigns decision-making control to the right skill based on current conditions


---

# 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.amesa.com/build-multi-agent-systems/define-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.
