> ## 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.

# Skill の更新

> Skill のメタデータまたは内容を更新します。

`PUT /api/v1/cloud/skills/{skill_id}`

指定された Skill のメタデータまたは内容を更新します。JSON リクエストボディのみサポートします。

## パスパラメータ

| パラメータ      | 型      | 必須 | 説明           |
| ---------- | ------ | -- | ------------ |
| `skill_id` | string | はい | Skill の一意識別子 |

## ヘッダー

| ヘッダー            | 必須 | 説明                  |
| --------------- | -- | ------------------- |
| `Authorization` | はい | `Bearer $QODER_PAT` |
| `Content-Type`  | はい | `application/json`  |

## リクエストボディ

| フィールド              | 型      | 必須  | 説明                                                                                                           |
| ------------------ | ------ | --- | ------------------------------------------------------------------------------------------------------------ |
| `name`             | string | いいえ | 新しい Skill 名。最大 64 文字。小文字、数字、ハイフン、アンダースコアのみ使用可能。英字または数字で始まる必要あり                                               |
| `description`      | string | いいえ | 新しい Skill の説明                                                                                                |
| `content`          | string | いいえ | 新しい Skill 内容。`content_encoding` が `"base64"` の場合、`SKILL.md` を含む base64 エンコードされた zip アーカイブ。それ以外はプレーンテキストとして保存 |
| `content_encoding` | string | いいえ | `content` が base64 エンコードされた zip アーカイブの場合、`"base64"` を指定                                                      |
| `metadata`         | object | いいえ | カスタムメタデータ。保存済みメタデータオブジェクトを置換する                                                                               |

## リクエスト例

```bash theme={null}
curl -X PUT https://api.qoder.com/api/v1/cloud/skills/skill_019e3bba474b73cfaf19eae9b5f5e66d \
  -H "Authorization: Bearer $QODER_PAT" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "updated-skill-name",
    "description": "Updated skill description",
    "metadata": {"team":"docs","stage":"updated"}
  }'
```

## レスポンス例

**HTTP 200 OK**

```json theme={null}
{
  "id": "skill_019e3bba474b73cfaf19eae9b5f5e66d",
  "type": "skill",
  "display_title": "updated-skill-name",
  "description": "Updated skill description",
  "source": "custom",
  "latest_version": "1",
  "metadata": {
    "team": "docs",
    "stage": "updated"
  },
  "created_at": "2026-05-18T15:35:24.248164Z",
  "updated_at": "2026-05-18T15:36:01.767469Z"
}
```

## レスポンスについて

* `updated_at` は操作時刻に更新されます
* `content` を更新すると `latest_version` がインクリメントされます
* メタデータのみの更新では `latest_version` はインクリメントされません
* リクエストボディに含まれないフィールドは元の値のまま保持されます

## エラーレスポンス

| HTTP | type                    | 説明                                                          |
| ---- | ----------------------- | ----------------------------------------------------------- |
| 400  | `invalid_request_error` | JSON ではなく multipart を使用: "Request body must be valid JSON." |
| 401  | `TOKEN_INVALID`         | 認証トークンが欠落または無効                                              |
| 404  | `not_found_error`       | Skill が存在しないまたはアクセス不可                                       |

## 注意事項

* PUT エンドポイントは `application/json` Content-Type のみ受け付けます
* base64 zip 内容の場合、アーカイブにはルートまたはルートの 1 階層下に `SKILL.md` を含む必要があります
* base64 zip 内容に `SKILL.md` frontmatter が含まれ、`name` または `description` が省略されている場合、API は frontmatter の値を使用します

完全なエラーエンベロープについては [エラー](/ja/cloud-agents/api/conventions/errors) を参照してください。

## 関連項目

<CardGroup cols={2}>
  <Card title="Agent スキル" icon="sparkles" href="/ja/cloud-agents/skills">
    Agent にドメインの専門知識を付与する。
  </Card>
</CardGroup>
