> ## Documentation Index
> Fetch the complete documentation index at: https://novu-c5de82d9-nv-8794-quote-reply-docs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Add skills

> Upload custom SKILL.md files to a managed agent to give Claude domain-specific instructions, tool guidance, and behavior for your product workflows.

Skills are instruction files that teach your managed agent how to handle specific tasks. When the system prompt is not detailed enough for a multi-step workflow or a domain-specific process, a skill fills the gap.

## What a skill looks like

A skill is a SKILL.md file written in Markdown. It contains step-by-step instructions the AI platform follows when a relevant situation comes up in a conversation.

A skill might describe:

* How to triage a support ticket and assign it to the right team.
* How to walk a user through an onboarding checklist.
* How to pull data from an MCP server and format it as a summary.

The AI platform reads the skill and applies the instructions when it decides the skill is relevant to the current conversation turn.

## Add a skill

<Tabs>
  <Tab title="GitHub">
    1. Open the [Novu dashboard](https://dashboard.novu.co) and go to your managed agent's detail page.
    2. Open the **Skills** section in the agent settings.
    3. Select **GitHub URL** as the source.
    4. Paste the public repository URL. You can point to:
       * The root of a repo (Novu looks for SKILL.md at the top level).
       * A specific branch or subfolder (e.g. `https://github.com/org/repo/tree/main/skills/triage`).
    5. Click **Upload**.

    Novu downloads the files, bundles them, and sends them to the AI platform. The platform assigns a stable skill ID.
  </Tab>

  <Tab title="Inline">
    1. Open the **Skills** section in the agent settings.
    2. Select **Inline content** as the source.
    3. Paste your SKILL.md content directly into the text field.
    4. Click **Upload**.

    This is useful for quick iterations or skills that do not need to live in a repository.
  </Tab>
</Tabs>

## Versioning

If you upload a skill with the same display title as an existing one, the platform creates a new version automatically. The agent always uses the latest version.

## Remove a skill

To remove a skill, go to the **Skills** section and delete it from the list. The agent stops using the skill on the next conversation turn.

## Novu HITL skill

Managed agents can pause and ask a human using the `novu_human` platform tool — `ask`, `approve`, `choose`, or `tell`. That is the same set of verbs custom-code agents use with `ctx.ask`, `ctx.approve`, `ctx.choose`, and `ctx.tell`.

Novu attaches a **Novu HITL** skill on every managed agent that supports skills. The skill tells the model when to escalate (risky or irreversible actions, real multi-way choices) and when to just reply in the thread.

Anthropic can only load skills when the **Read** built-in is enabled. Attaching this skill therefore turns Read on if it was off. If skill upload fails, the `novu_human` tool is still attached and the agent continues without the skill.

`novu_human` is not MCP tool approval. When an MCP or provider tool is already parked on an Approve/Deny card, the model should not call `novu_human` to re-gate that same call. Do not invent `trust-tool` or `trust-server` extra buttons — those are injected by Novu on parked tool cards.

Pass a `card` with `card.title`. Optional chrome: `subtitle` and `body` on every channel; `icon` is Slack-only (MCP catalog id like `stripe` / `github`, or an https 32×32 URL). Approve extras (`approveLabel`, `denyLabel`, `extraActions`) also live on `card`. `choose` needs `card.options` (2–10). Do not pass top-level `prompt` or `options`.

## Tips for writing good skills

* **Be specific**: describe the exact steps the agent should follow, not just the goal.
* **Include examples**: show sample inputs and expected outputs when possible.
* **Keep it focused**: one skill per task. A skill that tries to cover too many scenarios becomes harder for the model to apply correctly.
* **Test with real conversations**: send messages that should trigger the skill and check whether the agent follows the instructions.

## Related

<Columns cols={2}>
  <Card icon="link" href="/agents/managed-agent/configure-mcp-servers" title="Configure MCP servers">
    Enable external tools for your managed agent.
  </Card>

  <Card icon="brain" href="/agents/managed-agent/concepts" title="Concepts">
    Learn about connectors, MCP servers, skills, and how conversations work.
  </Card>

  <Card icon="sparkles" href="/agents/get-started/claude-managed" title="Connect Claude">
    Anthropic Claude managed agent + Slack.
  </Card>
</Columns>
