# Skill

URL: /business/nouns/skill · Id: `noun:skill`

> A Skill is a capacity a Worker has at a level, such as negotiation or programming, that Roles require.

A Skill is a capacity a [Worker](/business/nouns/worker) has at a level, such as negotiation or programming, that [Roles](/business/nouns/role) require.

## Properties
| Property | Type | Required | Description |
| --- | --- | --- | --- |
| `level` | `integer` | No | How well the Worker performs it. |

## Object
```json
{
  "$id": "https://api.sb/shiftnote.app/skills/skill_1",
  "$type": "Skill",
  "level": 1
}
```

## Relationships
- <a id="rel-practiced-by"></a>A Skill **is practiced by** many [Workers](/business/nouns/worker): the Skills a [Worker](/business/nouns/worker) has, each at a level, matched against what [Roles](/business/nouns/role) require. `practicedBy`, inverse [`practices`](/business/nouns/worker#rel-practices).
- <a id="rel-required-by"></a>A Skill **is required by** many [Roles](/business/nouns/role): the Skills, each at a level, a [Worker](/business/nouns/worker) needs to fill the [Role](/business/nouns/role). `requiredBy`, inverse [`requires`](/business/nouns/role#rel-requires).

## Verbs
| Verb | Description | Subject | Event | Class |
| --- | --- | --- | --- | --- |
| <a id="create"></a>[Skill.create](/business/nouns/skill/create) | Creates a Skill. Inherited from [Noun](/business/nouns/noun). | None. | `Skill.created` | Two-way: `try`, `send`, `do` |
| <a id="get"></a>[Skill.get](/business/nouns/skill/get) | Returns one Skill by id. Inherited from [Noun](/business/nouns/noun). | None. | None. | Read: `try`, `do` |
| <a id="list"></a>[Skill.list](/business/nouns/skill/list) | Returns Skills, newest first, one page at a time. Inherited from [Noun](/business/nouns/noun). | None. | None. | Read: `try`, `do` |
| <a id="update"></a>[Skill.update](/business/nouns/skill/update) | Changes the given properties of a Skill. Inherited from [Noun](/business/nouns/noun). | None. | `Skill.updated` | Two-way: `try`, `send`, `do` |
| <a id="delete"></a>[Skill.delete](/business/nouns/skill/delete) | Deletes a Skill; its history is kept. Inherited from [Noun](/business/nouns/noun). | None. | `Skill.deleted` | One-way: `send`, `do` |

## Permissions
Which Access level may call each Verb. One-way Verbs wait their delay window.

| Operation | `owner` | `admin` | `member` | `viewer` |
| --- | --- | --- | --- | --- |
| `Skill.create` | Yes | Yes | Yes | No |
| `Skill.get` | Yes | Yes | Yes | Yes |
| `Skill.list` | Yes | Yes | Yes | Yes |
| `Skill.update` | Yes | Yes | Yes | No |
| `Skill.delete` | Yes | Yes | Yes | No |

## Call it

**Ask**

```text
Add a skill to RouteWise.
```

**API**

```bash
curl -X POST https://api.sb/routewise.dev/skills \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"level":1}'
```

```json
{
  "api": "https://api.sb/routewise.dev",
  "skill": {
    "$id": "https://api.sb/routewise.dev/skills/skill_1",
    "$type": "Skill",
    "level": 1
  },
  "action": {
    "$id": "https://api.sb/routewise.dev/actions/action_1",
    "operation": "Skill.create",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/routewise.dev/actions/action_1"
  }
}
```

**SDK**

```ts
import { $ } from 'startup-builder'

const skill = await $.Skill.create({ level: 1 })
```

**CLI**

```bash
npx startup-builder do Skill.create --json '{"level":1}'
```

**MCP**

```json
{
  "name": "do",
  "arguments": {
    "code": "return await $.Skill.create({ level: 1 })"
  }
}
```

## Example
The [Sales Lead](/agents/sales/sales-lead) Role requires negotiation at level 3. Sally, the [Agent](/business/nouns/agent) filling it, holds negotiation at level 4.