

# スキル
<a name="harness-skills"></a>

 [エージェントスキル](https://strandsagents.com/docs/user-guide/concepts/plugins/skills/)は、エージェントドメインにオンデマンドで知識を与えるマークダウンとスクリプトのバンドルです。各スキルは、オープンな [AgentSkills.io](https://agentskills.io/specification) 標準に従います。これは、YAML フロントマター (名前、説明) とマークダウン手順を含む`SKILL.md`ファイルと、オプションの `scripts/`、`references/`、および `assets/` ディレクトリです。

スキルはプログレッシブ開示を使用します。メタデータはシステムプロンプトに事前に挿入され (約 100 トークン）、完全な指示はツール呼び出しを介してオンデマンドでロードされます。これにより、エージェントが必要としない可能性のある指示でコンテキストウィンドウがいっぱいになるのを回避できます。

ハーネスは 4 つのスキルソースをサポートしています。


| ソース | 説明 | どのようなときに使うか | 
| --- | --- | --- | 
|  ** AWS スキル**  | [AWS エージェントツールキット](https://github.com/aws/agent-toolkit-for-aws/tree/main/skills)の AWS サービスの事前構築済みのスキル。glob パターンで を有効にします。 | セットアップなしで既製の AWS 専門知識が必要です。 | 
|  **Git (HTTPS)**  | パブリックまたはプライベート Git リポジトリからスキルのクローンを作成します。サブディレクトリをサポートします。 | S3 にアップロードせずにGitHub、GitLab、または任意の git ホストからスキルを参照したい。 | 
|  **Amazon S3**  | 実行ロールを使用して、顧客所有の S3 バケットからスキルを取得します。 | バージョニング、暗号化、アクセスガバナンスを完全に制御する必要があります。 | 
|  **パス (ファイルシステム)**  | ハーネスファイルシステムに既に存在するスキルを参照します (コンテナイメージにベイクされているか、 経由でインストールされます`InvokeAgentRuntimeCommand`)。 | スキルはコンテナイメージの一部であるか、セッションの開始時にインストールされています。 | 

スキルは、最初の呼び出し時にセッションごとに 1 回取得されます。セッション内では、スキルは複数の呼び出しにわたってディスクに保持されます。VM の有効期限が切れて新しいセッションが開始されると、スキルが再取得され、鮮度が保証されます。

ハーネスのデフォルト`skills`として ( `CreateHarness`または 経由`UpdateHarness`) を設定することも、呼び出しごとに上書きすることもできます。呼び出し時間スキルは、作成時間スキルの後に追加されます。両方が同じ名前のスキルを定義すると、呼び出し時間バージョンが優先されます。

**注記**  
ハーネスにインタラクティブにスキルを追加するには、 `agentcore`を実行して TUI を開き、 **の追加** を選択し、**ハーネス** を選択し、**高度な設定** に進み、**スキル** を有効にします。次に、ウィザードでスキルソースの入力を求められます。ソースごとの手順については、以下の [Git](#harness-skills-git) と [Amazon S3](#harness-skills-s3) の下の**インタラクティブ**タブを参照してください。

## AWS スキル
<a name="harness-aws-skills"></a>

 AWS スキルは、エージェントが AWS サービスとやり取りできるようにする構築済みのスキルです。これらは階層的に整理され、glob パターンで選択されます。[GitHub](https://github.com/aws/agent-toolkit-for-aws/tree/main/skills) でソースを表示します。


| Category | パターン | 一般的なスキル | 
| --- | --- | --- | 
| コアスキル |  `core-skills/*`  | EC2、S3、Lambda、DynamoDB、CloudWatch、IAM オペレーション。 | 
| 分析スキル |  `specialized-skills/analytics-skills/*`  | Athena、Glue、QuickSight、データレイクオペレーション。 | 
| オペレーションスキル |  `specialized-skills/operations-skills/*`  | トラブルシューティング、診断、ログ分析。 | 
| ストレージスキル |  `specialized-skills/storage-skills/*`  | S3、EFS、FSx、バックアップオペレーション。 | 

### すべての AWS スキルを有効にする
<a name="enable_all_shared_aws_skills"></a>

**Example**  

```
aws bedrock-agentcore-control create-harness \
  --harness-name "MyHarness" \
  --execution-role-arn "${ROLE_ARN}" \
  --skills '[{"awsSkills": {}}]'
```
または、呼び出し時:  

```
response = client.invoke_harness(
    harnessArn=HARNESS_ARN,
    runtimeSessionId=SESSION_ID,
    skills=[{"awsSkills": {}}],
    messages=[{"role": "user", "content": [{"text": "List my EC2 instances and their status."}]}],
)
```

### カテゴリ別のスキルを有効にする
<a name="_enable_skills_by_category"></a>

glob パターンを使用して、特定のスキルカテゴリを有効にします。

**Example**  

```
aws bedrock-agentcore-control create-harness \
  --harness-name "MyHarness" \
  --execution-role-arn "${ROLE_ARN}" \
  --skills '[{"awsSkills": {"paths": ["core-skills/*", "specialized-skills/operations-skills/*"]}}]'
```

### 1 つの特定のスキルを有効にする
<a name="_enable_a_single_specific_skill"></a>

```
response = client.invoke_harness(
    harnessArn=HARNESS_ARN,
    runtimeSessionId=SESSION_ID,
    skills=[{"awsSkills": {"paths": ["core-skills/aws-cdk"]}}],
    messages=[{"role": "user", "content": [{"text": "Create a CDK stack for a Lambda function."}]}],
)
```

### 複数のパターンを組み合わせる
<a name="_combine_multiple_patterns"></a>

```
skills=[{"awsSkills": {"paths": ["core-skills/aws-cdk", "core-skills/aws-serverless", "specialized-skills/storage-skills/*"]}}]
```

**注記**  
パスは相対パスである必要があります (先頭`/`または なし`..`)。絶対パスとパストラバーサルは拒否されます。
glob パターンがスキルと一致しない場合、呼び出しは記述的なエラーで失敗します。
同じペイロード内の複数の`awsSkills`エントリがマージされます。

## Git (HTTPS) スキル
<a name="harness-skills-git"></a>

パブリックまたはプライベート Git リポジトリからスキルのクローンを作成します。スパースチェックアウトを使用してモノリポジトリ内のサブディレクトリをサポートします。

**Example**  
パブリックリポジトリ:  

```
response = client.invoke_harness(
    harnessArn=HARNESS_ARN,
    runtimeSessionId=SESSION_ID,
    skills=[
        {"git": {"url": "https://github.com/anthropics/skills", "path": "skills/docx"}},
    ],
    messages=[{"role": "user", "content": [{"text": "Summarize the attached DOCX file."}]}],
)
```
プライベートリポジトリ ([AgentCore Identity](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/identity.html) に保存されている個人用アクセストークンが必要です）。  

```
skills=[
    {
        "git": {
            "url": "https://github.com/my-org/internal-skills",
            "path": "excel",
            "auth": {
                "credentialArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:token-vault/default/apikeycredentialprovider/my-github-pat"
            },
        }
    }
]
```
でパブリック Git リポジトリからスキルをアタッチします`agentcore add skill`。`--git-path` を使用して、サブディレクトリから 1 つのスキルを取得します。  

```
agentcore add skill --harness my-harness \
  --git https://github.com/anthropics/skills \
  --git-path skills/docx
agentcore deploy
```
プライベートリポジトリの場合、個人用アクセストークンを保持するプロジェクト内の API キー認証情報の名前`--credential`で を渡します (`--username` はオプション、デフォルト `oauth2`)。  

```
agentcore add skill --harness my-harness \
  --git https://github.com/my-org/internal-skills \
  --git-path excel \
  --credential my-github-pat
agentcore deploy
```
同じソースフラグ`agentcore remove skill`を使用して でスキルを削除します。ハーネスを変更せずに 1 回の呼び出しのスキルを上書きするには、 `agentcore invoke --skills <sources>` (カンマ区切りパス、URIs、または `https://` Git URLs) `s3://` を使用します。Git 認証は呼び出しオーバーライドではサポートされていません。
TUI で、**Add** → **Harness** ウィザードを使用して Git スキルをハーネスに追加します。  

1. **詳細設定** に進み、**スキル** に移動し、**スペース**を押して有効にしてから、**Enter** を押します。  
![スキルを有効にした詳細設定](http://docs.aws.amazon.com/ja_jp/bedrock-agentcore/latest/devguide/images/tui/harness-skills-01-advanced.png)

1. スキルソースとして **Git** を選択します。  
![スキルソースタイプ: パス、S3、または Git](http://docs.aws.amazon.com/ja_jp/bedrock-agentcore/latest/devguide/images/tui/harness-skills-02-source-type.png)

1. HTTPS リポジトリ URL を入力します。次に、ウィザードはオプションのサブディレクトリパス、プライベートリポジトリ用のオプションの認証情報、オプションのユーザー名の入力を求めます。  
![Git リポジトリ URL を入力する](http://docs.aws.amazon.com/ja_jp/bedrock-agentcore/latest/devguide/images/tui/harness-skills-05-git-url.png)
ウィザードを確認し、 `agentcore deploy`を実行して適用します。
+  `url` (必須) - Git リポジトリの HTTPS URL。
+  `path` (オプション) - スキルを含むリポジトリ内のサブディレクトリ。省略すると、リポジトリルートが使用されます。
+  `auth.credentialArn` (オプション) - プライベートリポジトリの個人用アクセストークンを保持する API キー認証情報プロバイダーの ARN。
+  `auth.username` (オプション) - git username、デフォルトは です`oauth2`。

Git フェッチは 60 秒以内に完了する必要があります。リポジトリにインターネット出力が必要な場合は、VPC に NAT ゲートウェイがあることを確認します (リモート MCP サーバーやカスタムコンテナプルと同じ要件）。

## Amazon S3 スキル
<a name="harness-skills-s3"></a>

顧客所有の S3 バケットからスキルを取得します。ハーネス実行ロールの認証情報を使用します。

**Example**  

```
response = client.invoke_harness(
    harnessArn=HARNESS_ARN,
    runtimeSessionId=SESSION_ID,
    skills=[
        {"s3": {"uri": "s3://my-skills-bucket/skills/company-style/"}},
    ],
    messages=[{"role": "user", "content": [{"text": "Draft a summary following our style guide."}]}],
)
```
を使用して S3 からスキルをアタッチします`agentcore add skill --s3`。  

```
agentcore add skill --harness my-harness \
  --s3 s3://my-skills-bucket/skills/company-style/
agentcore deploy
```
実行ロールには、バケット`s3:ListBucket`に `s3:GetObject`と が必要です。「[セキュリティとアクセス制御について](harness-security.md)」を参照してください。
TUI で、**add** → **Harness** ウィザードを使用してハーネスに S3 スキルを追加します。**詳細設定** に進み、**スペース** で**スキル**を有効にして、ソースとして **S3** を選択します (これらの共有ステップについては [Git](#harness-skills-git) Interactive タブを参照してください）。  

1. スキルディレクトリの S3 URI を入力します。  
![スキルの S3 URI を入力する](http://docs.aws.amazon.com/ja_jp/bedrock-agentcore/latest/devguide/images/tui/harness-skills-04-s3-uri.png)
ウィザードを確認し、 `agentcore deploy`を実行して適用します。
+  `uri` (必須) - スキルディレクトリを指す S3 URI (例: `s3://bucket/prefix/`)。
+ 実行ロールには、バケットに対する `s3:GetObject`および アクセス`s3:ListBucket`許可が必要です。「[セキュリティとアクセス制御について](harness-security.md)」を参照してください。
+ 各 S3 スキルは 1 GB 以下である必要があります。
+ S3 ソースは S3 VPC エンドポイントで動作します (NAT ゲートウェイは必要ありません）。

## ファイルシステムのパススキル
<a name="harness-skills-path"></a>

ハーネスファイルシステムに既にあるスキルを参照します。コンテナイメージにベイクされているか、 経由でセッション開始時にインストールされます`InvokeAgentRuntimeCommand`。

**Example**  

```
response = client.invoke_harness(
    harnessArn=HARNESS_ARN,
    runtimeSessionId=SESSION_ID,
    skills=[{"path": ".agents/skills/xlsx"}],
    messages=[{"role": "user", "content": [{"text": "Find errors in the Excel files."}]}],
)
```

### コンテナイメージにベイクする
<a name="_bake_into_the_container_image"></a>

カスタムイメージにスキルディレクトリを含めます。

```
COPY skills/xlsx .agents/skills/xlsx
```

### セッション開始時に をインストールする
<a name="_install_at_session_start"></a>

最初のエージェント呼び出し`InvokeAgentRuntimeCommand`の前に を使用します。

```
agentcore invoke --exec --harness my-agent --session-id "$SESSION" \
  "git clone --depth 1 https://github.com/anthropics/skills /tmp/skills && cp -r /tmp/skills/skills/xlsx .agents/skills/xlsx"
```

## 複数のスキルソースを組み合わせる
<a name="harness-skills-combine"></a>

4 つのソースタイプはすべて 1 つのペイロードで共存できます。

```
response = client.invoke_harness(
    harnessArn=HARNESS_ARN,
    runtimeSessionId=SESSION_ID,
    skills=[
        {"awsSkills": {"paths": ["core-skills/aws-cdk"]}},
        {"git": {"url": "https://github.com/anthropics/skills", "path": "skills/docx"}},
        {"s3": {"uri": "s3://my-bucket/skills/company-style/"}},
        {"path": ".agents/skills/xlsx"},
    ],
    messages=[{"role": "user", "content": [{"text": "Help me with this project."}]}],
)
```

## エラー処理
<a name="harness-skills-errors"></a>

すべてのフェッチ失敗は、説明的なエラーで呼び出しに失敗します。スキルがサイレントにスキップされることはありません。


| 失敗 | エラーメッセージ | 
| --- | --- | 
| S3 アクセスが拒否されました |  `Failed to fetch skill: AccessDeniedException. Ensure execution role has s3:GetObject permission.`  | 
| S3 オブジェクトが見つかりません |  `Skill source not found: s3://…​`  | 
| Git クローンが失敗する (ネットワーク) |  `Failed to clone skill: could not resolve host`  | 
| Git 認証が拒否されました |  `Failed to clone skill: authentication failed`  | 
| Git パスがリポジトリに見つかりません |  `Skill path 'x' not found in repository`  | 
| Git タイムアウト (60 秒) |  `Failed to clone skill: operation timed out after 60s`  | 
| スキルが 1 GB の制限を超えています |  `Skill exceeds 1GB size limit`  | 
|  AWS スキルパスが一致しません |  `AWS skill path 'x' matched no skills`  | 
| パストラバーサル (`..`) |  `Invalid AWS skill path: must be a relative path without '..'`  | 
|  AWS スキルバンドルがありません |  `AWS Skills are not available in this runtime (missing directory: /opt/amazon/skills)`  | 

### 関連トピック
<a name="_related_topics"></a>
+  [ツール](harness-tools.md) - MCP サーバー、ゲートウェイ、ブラウザ、コードインタープリタを接続する
+  [環境とファイルシステム](harness-environment.md) - カスタムコンテナイメージと環境設定
+  [メモリ](harness-memory.md) - セッション間で会話を保持する
+  [セキュリティとアクセス制御について](harness-security.md) - スキルソースの実行ロールポリシー
+  [API ドキュメント](harness-get-started.md#api-documentation) 