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

# Agent Skills

> Attach domain expertise to your agent.

Skills add **domain expertise** to an Agent. A Skill is a structured set of instructions and procedures that makes an Agent more capable and reliable on a specific kind of task.

<Tip>
  If you use QoderWork or Qoder desktop, you can install the [Cloud Agents skill](https://qoder.com/marketplace/skill?id=official_FjWvobU0) from the skill marketplace to create and manage Cloud Agents directly from your local conversation — no manual API calls needed.
</Tip>

## What Skills Do

* **Inject domain knowledge** — give a generalist Agent specialized abilities (code review, document generation, etc.).
* **Standardize procedures** — ensure the Agent follows consistent steps and produces consistent output.
* **Reusable** — define once and share across multiple Agents.

## Skill File Layout

A Skill is uploaded as a `.zip` archive containing:

```
my-skill/
├── SKILL.md          # Required: Skill definition
├── templates/        # Optional: template files
│   └── report.md
└── examples/         # Optional: example files
    └── sample.json
```

`SKILL.md` is the core file, written as YAML frontmatter plus Markdown:

```markdown theme={null}
name: code-review
description: Perform structured code reviews and produce improvement suggestions
version: 1.0.0

# Code Review

## Steps
1. Analyze the structure and architecture of the code.
2. Check for common issues (security, performance, maintainability).
3. Output a structured review report.

## Pitfalls
- Don't fixate on formatting — prioritize logic errors.
- Provide concrete fixes rather than vague critiques.
```

## Create a Skill

```
POST https://api.qoder.com/api/v1/cloud/skills
Content-Type: multipart/form-data
```

### curl Example

```bash theme={null}
# Package the skill directory
cd my-skill && zip -r ../my-skill.zip . && cd ..

# Upload
curl -X POST https://api.qoder.com/api/v1/cloud/skills \
  -H "Authorization: Bearer $QODER_PAT" \
  -F "file=@my-skill.zip"
```

Response:

```json theme={null}
{
  "id": "skill_019e5d133c057536872f745e0b6dbd5d",
  "type": "skill",
  "display_title": "code-review",
  "description": "Perform structured code reviews and produce improvement suggestions",
  "source": "custom",
  "latest_version": "1",
  "created_at": "2026-05-01T10:00:00Z",
  "updated_at": "2026-05-01T10:00:00Z"
}
```

<Note>
  `latest_version` is maintained by the server and returned as a string. The `version` value in SKILL.md frontmatter (e.g. `1.0.0`) is informational only and is not the server-side version.
</Note>

## Bind to an Agent

Use `POST` to update the Agent's `skills` field. Include `version` for optimistic concurrency control; when `skills` is provided, it replaces the stored skills array.

```bash theme={null}
curl -X POST https://api.qoder.com/api/v1/cloud/agents/agent_abc123 \
  -H "Authorization: Bearer $QODER_PAT" \
  -H "Content-Type: application/json" \
  -d '{
    "version": 1,
    "skills": [{"type": "custom", "skill_id": "skill_019e5d133c057536872f745e0b6dbd5d"}, {"type": "custom", "skill_id": "skill_019e5cdc7a9278ba933d4c328096bac5"}]
  }'
```

## Versioning

Re-uploading a skill with the same name creates a new version:

```bash theme={null}
# Bump the version field in SKILL.md, then re-upload
curl -X POST https://api.qoder.com/api/v1/cloud/skills \
  -H "Authorization: Bearer $QODER_PAT" \
  -F "file=@my-skill-v2.zip"
```

Agents linked to the Skill always pick up the latest version.

## Get a Skill

```bash theme={null}
curl https://api.qoder.com/api/v1/cloud/skills/skill_019e5d133c057536872f745e0b6dbd5d \
  -H "Authorization: Bearer $QODER_PAT"
```

## List Skills

```bash theme={null}
curl https://api.qoder.com/api/v1/cloud/skills \
  -H "Authorization: Bearer $QODER_PAT"
```

Response:

```json theme={null}
{
  "data": [
    {
      "id": "skill_019e5d133c057536872f745e0b6dbd5d",
      "type": "skill",
      "display_title": "code-review",
      "description": "Perform structured code reviews and produce improvement suggestions",
      "source": "custom",
      "latest_version": "1",
      "created_at": "2026-05-01T10:00:00Z",
      "updated_at": "2026-05-01T10:00:00Z"
    },
    {
      "id": "skill_019e5cdc7a9278ba933d4c328096bac5",
      "type": "skill",
      "display_title": "doc-generator",
      "description": "Generate technical documentation",
      "source": "custom",
      "latest_version": "3",
      "created_at": "2026-04-20T08:30:00Z",
      "updated_at": "2026-04-25T09:15:00Z"
    }
  ],
  "next_page": null,
  "first_id": "skill_019e5d133c057536872f745e0b6dbd5d",
  "last_id": "skill_019e5cdc7a9278ba933d4c328096bac5",
  "has_more": false
}
```

## Authoring Tips

1. **State the trigger** — write the `description` so it's clear when this Skill should be used.
2. **Be concrete in steps** — describe precise actions, not vague guidance.
3. **Document pitfalls** — help the Agent avoid common mistakes.
4. **Provide validation** — tell the Agent how to confirm the task is complete.

## FAQ

**Q: How are Skills different from the Agent `system` prompt?** A: `system` is general guidance that applies to every task. A Skill is an on-demand expertise module the Agent activates based on the task at hand.

**Q: How many Skills can an Agent reference?** A: There's no hard limit, but keep it under 10 to maintain predictable behavior.

**Q: When will Skills go GA?** A: The feature is in M2. Reach out if you want early access; broader rollout is coming in a later release.

**Q: Is there a size limit on the zip?** A: A single Skill zip must be 10 MB or less.

## Next steps

<CardGroup cols={2}>
  <Card title="Agent Tools" icon="wrench" href="/cloud-agents/tools">
    Equip Agents with built-in, MCP, and custom tools.
  </Card>

  <Card title="Define an Agent" icon="user-gear" href="/cloud-agents/define-agent">
    Review Agent configuration.
  </Card>

  <Card title="Sessions" icon="play" href="/cloud-agents/sessions">
    Manage session lifecycle.
  </Card>

  <Card title="Quickstart" icon="rocket" href="/cloud-agents/quickstart">
    Get your first Cloud Agent running in 5 steps.
  </Card>
</CardGroup>
