# PATCH /skills/:skill_id

**Resource:** [Skills](./skills.md)  
**MCP tool:** `update_skill`  
**Scopes:** `agent-ops:write`  
**Write operation:** yes

Update a skill your workspace owns (model, prompt, tools, visibility, status, etc.). You cannot edit another workspace's public skill.

## Parameters

| Name | In | Type | Required | Description |
|------|----|------|----------|-------------|
| `skill_id` | path | string | yes |  |
| `name` | body | string | no |  |
| `display_name` | body | string | no |  |
| `description` | body | string | no |  |
| `when_to_use` | body | string | no |  |
| `visibility` | body | string | no |  |
| `invocation` | body | string | no |  |
| `execution` | body | string | no |  |
| `model` | body | string | no |  |
| `system_prompt` | body | string | no |  |
| `tool_allowlist` | body | array | no |  |
| `input_schema` | body | object | no |  |
| `output_schema` | body | object | no |  |
| `status` | body | string | no |  |
| `require_approval` | body | boolean | no | Optional. Set true to route this write into the approval queue for human review instead of executing it immediately (returns 202 + an approval_id). Works even when your key/token has permission to execute directly. |

## Request example

```bash
curl -X PATCH   "https://api.trustpager.com/functions/v1/api/v1/skills/:skill_id"   -H "Authorization: Bearer YOUR_API_KEY"   -H "Content-Type: application/json"   -d '{"name":"...","display_name":"...","description":"..."}'
```

---
Base URL: `https://api.trustpager.com/functions/v1/api/v1` — Auth: `Authorization: Bearer YOUR_API_KEY`