> ## Documentation Index
> Fetch the complete documentation index at: https://docs.openhome.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Abilities

> This guide explains Abilities in OpenHome and how to manage, customize, and create them to extend Agent functionalities.

## Introduction to Abilities

Abilities are modular extensions that enhance the functionality of your OpenHome Agents. They act as plugins, enabling your Agents to perform specialized tasks, such as fetching data from the web, controlling smart devices, or executing complex commands tailored to your project's requirements.

With Abilities, you can:

* Add **Trigger Words** to define specific phrases or commands that activate a particular Ability.
* Use the **Marketplace** to explore and install community-created Abilities.
* Customize or create your own Abilities through the **Live Editor** or by uploading pre-built code.

<p align="center">
  <img src="https://mintcdn.com/algoryc/HzI1I7HRNeMurqUx/openhome_icons/dashboard_icons/Ability_controls.png?fit=max&auto=format&n=HzI1I7HRNeMurqUx&q=85&s=33338c41c00d4bd66188112df0142027" alt="Abilities overview" style={{ borderRadius: '12px' }} width="477" height="405" data-path="openhome_icons/dashboard_icons/Ability_controls.png" />
</p>

## Managing Abilities

The **Abilities Dashboard** lets you view, manage, and customize all installed or created Abilities. Here’s what you can do:

### Tabs

* **My Abilities**: View Abilities you’ve created for your Agents.
* **Published Abilities**: Explore Abilities you’ve published to the Marketplace for others to use.
* **Installed Abilities**: Manage Abilities installed from the Marketplace or created by you.
* **Add Custom Ability**: Upload a `.zip` file containing your Ability code.
* **Live Editor**: Modify your Abilities in real-time, test them, and commit changes seamlessly.

<p align="center">
  <img src="https://mintcdn.com/algoryc/DHf_m0ZL8j38qpe6/openhome_icons/dashboard_icons/manage_abilities.png?fit=max&auto=format&n=DHf_m0ZL8j38qpe6&q=85&s=fcf2f4b3801682a3d564e624c4f5bb71" alt="manage_abilities" style={{ borderRadius: '12px' }} width="1555" height="537" data-path="openhome_icons/dashboard_icons/manage_abilities.png" />
</p>

### Ability Controls

* **Enable/Disable**: Toggle an Ability on or off as needed.
* **Agent/System Ability**: Specify whether an Ability is agent-specific or system-wide.
* **Trigger Words**: Define or edit words/phrases that activate the Ability.
* **Uninstall**: Remove an Ability from your system.

<p align="center">
  <img src="https://mintcdn.com/algoryc/HzI1I7HRNeMurqUx/openhome_icons/dashboard_icons/Ability_controls.png?fit=max&auto=format&n=HzI1I7HRNeMurqUx&q=85&s=33338c41c00d4bd66188112df0142027" alt="Ability controls" style={{ borderRadius: '12px' }} width="477" height="405" data-path="openhome_icons/dashboard_icons/Ability_controls.png" />
</p>

## Adding a New Ability

To create and configure a new Ability, follow these steps:

### 1. Access the Abilities Dashboard

* Navigate to the left sidebar, select **Create**, and choose **Abilities**.

### 2. Fill Out Ability Information

* **Name**: Enter a unique and descriptive name for your Ability.
* **Description**: Provide a brief overview of what the Ability does.
* **Image**: Upload an image to visually represent the Ability in your dashboard and the Marketplace.

<p align="center">
  <img src="https://mintcdn.com/algoryc/HzI1I7HRNeMurqUx/openhome_icons/dashboard_icons/ability_information.png?fit=max&auto=format&n=HzI1I7HRNeMurqUx&q=85&s=01a1b08cad7d964c0f752b9aba3e2c24" alt="Ability Information" style={{ borderRadius: '12px' }} width="1643" height="686" data-path="openhome_icons/dashboard_icons/ability_information.png" />
</p>

### 3. Define Ability Behavior

* **Code Upload**: Upload a `.zip` file containing the Ability's code.
* **Trigger Words**: Add words or phrases that will activate the Ability.
* **Category**: Choose `Skill`, `Agent Controlled`, `Background Daemon`, or `Local` (when available).
* **Templates**: Select from built-in templates to simplify Ability creation.

<p align="center">
  <img src="https://mintcdn.com/algoryc/S-vOB0wvZIBaQK-q/openhome_icons/dashboard_images/agent_controlled_updated_sc.png?fit=max&auto=format&n=S-vOB0wvZIBaQK-q&q=85&s=ad0e1a8f6d1eac7a2364f97f498a1e1e" alt="Ability Behavior" style={{ borderRadius: '12px' }} width="1918" height="891" data-path="openhome_icons/dashboard_images/agent_controlled_updated_sc.png" />
</p>

### 4. Save and Finalize

* Click **Save Ability** to add it to your collection.
* Use the **Live Editor** for further enhancements or adjustments.

<p align="center">
  <img src="https://mintcdn.com/algoryc/DHf_m0ZL8j38qpe6/openhome_icons/dashboard_icons/live_editor.png?fit=max&auto=format&n=DHf_m0ZL8j38qpe6&q=85&s=1c3fcd0f43a6b61cd76adc1194c43137" alt="Live Editor" style={{ borderRadius: '12px' }} width="1920" height="1011" data-path="openhome_icons/dashboard_icons/live_editor.png" />
</p>

## Live Editor

The **Live Editor** provides tools to fine-tune, modify, and test your Abilities in real time. Features include:

* **File Management**: Create, delete, or modify Ability files.
* **Testing Tools**: Use the **Start Live Test** button to simulate the Ability's behavior.
* **Commit Changes**: Save modifications as a new release or revert to a previous version.
* **Trigger Keywords**: Edit trigger words directly in the editor to improve activation accuracy.

<p align="center">
  <img src="https://mintcdn.com/algoryc/DHf_m0ZL8j38qpe6/openhome_icons/dashboard_icons/editor_controls.png?fit=max&auto=format&n=DHf_m0ZL8j38qpe6&q=85&s=8892a77c1d00102fa7279edc2c220b3c" alt="editor_controls" style={{ borderRadius: '12px' }} width="377" height="947" data-path="openhome_icons/dashboard_icons/editor_controls.png" />
</p>

## Using Abilities in Agents

Abilities enhance the functionality of Agents, allowing them to:

* Respond dynamically to commands using **Trigger Words**.
* Perform specific tasks, such as retrieving weather updates, controlling devices, or generating quizzes.
* Seamlessly integrate with other components of the OpenHome ecosystem.

## Ability Categories

Every Ability falls into one of four categories: **Skill**, **Agent Controlled**, **Background Daemon**, or **Local**. See [Ability Types](/ability-types) for the full breakdown of when to use each, and [Background Abilities](/building-abilities/background-abilities) for the `background.py` pattern.

### Example Workflow

1. **Trigger Words**: A user speaks or types a command containing a pre-defined trigger word.
2. **Ability Activation**: The Agent processes the input and activates the corresponding Ability.
3. **Task Execution**: The Ability performs the task and returns the response.
4. **Dynamic Feedback**: The Agent adapts to the user's input and updates its interaction history.

## Abilities in the Marketplace

The **Marketplace** allows you to browse, install, and share Abilities created by the community.

### Features

* **Browse Abilities**: Discover new Abilities with user reviews and ratings.
* **Install/Uninstall**: Add or remove Abilities with a single click.
* **Search and Filters**: Find specific Abilities using keywords or filter by categories.
* **Featured Abilities**: Explore highlighted or trending Abilities to inspire new projects.

<p align="center">
  <img src="https://mintcdn.com/algoryc/DHf_m0ZL8j38qpe6/openhome_icons/dashboard_icons/marketplace_abilities.png?fit=max&auto=format&n=DHf_m0ZL8j38qpe6&q=85&s=a314a33b024170f22ae6b73f5063ad2f" alt="Abilities in Marketplace" style={{ borderRadius: '12px' }} width="1572" height="257" data-path="openhome_icons/dashboard_icons/marketplace_abilities.png" />
</p>

## Customization and Advanced Features

### Trigger Words

* Add, edit, or remove trigger words directly from the Ability settings or the Live Editor.
* Use <img src="https://mintcdn.com/algoryc/nIjKmDT8_yYOKqOt/openhome_icons/dashboard_icons/trigger_detail.png?fit=max&auto=format&n=nIjKmDT8_yYOKqOt&q=85&s=6dc60f84419994bcf4d0d2c4542bb66c" alt="trigger_keywords" width="200" height="50" style={{ display: 'inline-block', verticalAlign: 'middle', borderRadius: '12px' }} data-path="openhome_icons/dashboard_icons/trigger_detail.png" /> to manage triggers effectively.

### Templates

* Built-in templates simplify the creation process.
* Customize templates to suit specific use cases or modify existing ones for advanced functionality.

<p align="center">
  <img src="https://mintcdn.com/algoryc/S-vOB0wvZIBaQK-q/openhome_icons/dashboard_images/agent_controlled_updated_sc.png?fit=max&auto=format&n=S-vOB0wvZIBaQK-q&q=85&s=ad0e1a8f6d1eac7a2364f97f498a1e1e" alt="Templates for Abilities" style={{ borderRadius: '12px' }} width="1918" height="891" data-path="openhome_icons/dashboard_images/agent_controlled_updated_sc.png" />
</p>

## Conclusion

Abilities are the cornerstone of extending and enhancing OpenHome’s capabilities. Whether you’re building an IoT device controller, a productivity assistant, or a quiz generator, Abilities provide the flexibility to customize and scale your Agents to meet your project's unique needs. Leverage the Live Editor, Marketplace, and built-in templates to create innovative solutions and contribute to the growing OpenHome ecosystem.

> Start building and transforming your ideas into reality with OpenHome Abilities! 🎉
