View a markdown version of this page

スキル - Amazon Bedrock AgentCore

スキル

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

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

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

ソース 説明 どのようなときに使うか

AWS スキル

AWS エージェントツールキットの AWS サービスの事前構築済みのスキル。glob パターンで を有効にします。

セットアップなしで既製の AWS 専門知識が必要です。

Git (HTTPS)

パブリックまたはプライベート Git リポジトリからスキルのクローンを作成します。サブディレクトリをサポートします。

S3 にアップロードせずにGitHub、GitLab、または任意の git ホストからスキルを参照したい。

Amazon S3

実行ロールを使用して、顧客所有の S3 バケットからスキルを取得します。

バージョニング、暗号化、アクセスガバナンスを完全に制御する必要があります。

パス (ファイルシステム)

ハーネスファイルシステムに既に存在するスキルを参照します (コンテナイメージにベイクされているか、 経由でインストールされますInvokeAgentRuntimeCommand)。

スキルはコンテナイメージの一部であるか、セッションの開始時にインストールされています。

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

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

注記

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

AWS スキル

AWS スキルは、エージェントが AWS サービスとやり取りできるようにする構築済みのスキルです。これらは階層的に整理され、glob パターンで選択されます。GitHub でソースを表示します。

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 スキルを有効にする

AWS CLI/boto3
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."}]}], )

カテゴリ別のスキルを有効にする

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

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

1 つの特定のスキルを有効にする

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."}]}], )

複数のパターンを組み合わせる

skills=[{"awsSkills": {"paths": ["core-skills/aws-cdk", "core-skills/aws-serverless", "specialized-skills/storage-skills/*"]}}]
注記
  • パスは相対パスである必要があります (先頭/または なし..)。絶対パスとパストラバーサルは拒否されます。

  • glob パターンがスキルと一致しない場合、呼び出しは記述的なエラーで失敗します。

  • 同じペイロード内の複数のawsSkillsエントリがマージされます。

Git (HTTPS) スキル

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

AWS CLI/boto3

パブリックリポジトリ:

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 に保存されている個人用アクセストークンが必要です)。

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" }, } } ]
AgentCore CLI

でパブリック 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 認証は呼び出しオーバーライドではサポートされていません。

Interactive

TUI で、AddHarness ウィザードを使用して Git スキルをハーネスに追加します。

  1. 詳細設定 に進み、スキル に移動し、スペースを押して有効にしてから、Enter を押します。

    スキルを有効にした詳細設定
  2. スキルソースとして Git を選択します。

    スキルソースタイプ: パス、S3、または Git
  3. HTTPS リポジトリ URL を入力します。次に、ウィザードはオプションのサブディレクトリパス、プライベートリポジトリ用のオプションの認証情報、オプションのユーザー名の入力を求めます。

    Git リポジトリ URL を入力する

ウィザードを確認し、 agentcore deployを実行して適用します。

  • url (必須) - Git リポジトリの HTTPS URL。

  • path (オプション) - スキルを含むリポジトリ内のサブディレクトリ。省略すると、リポジトリルートが使用されます。

  • auth.credentialArn (オプション) - プライベートリポジトリの個人用アクセストークンを保持する API キー認証情報プロバイダーの ARN。

  • auth.username (オプション) - git username、デフォルトは ですoauth2

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

Amazon S3 スキル

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

AWS CLI/boto3
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."}]}], )
AgentCore CLI

を使用して S3 からスキルをアタッチしますagentcore add skill --s3

agentcore add skill --harness my-harness \ --s3 s3://my-skills-bucket/skills/company-style/ agentcore deploy

実行ロールには、バケットs3:ListBuckets3:GetObjectと が必要です。「セキュリティとアクセス制御について」を参照してください。

Interactive

TUI で、addHarness ウィザードを使用してハーネスに S3 スキルを追加します。詳細設定 に進み、スペーススキルを有効にして、ソースとして S3 を選択します (これらの共有ステップについては Git Interactive タブを参照してください)。

  1. スキルディレクトリの S3 URI を入力します。

    スキルの S3 URI を入力する

ウィザードを確認し、 agentcore deployを実行して適用します。

  • uri (必須) - スキルディレクトリを指す S3 URI (例: s3://bucket/prefix/)。

  • 実行ロールには、バケットに対する s3:GetObjectおよび アクセスs3:ListBucket許可が必要です。「セキュリティとアクセス制御について」を参照してください。

  • 各 S3 スキルは 1 GB 以下である必要があります。

  • S3 ソースは S3 VPC エンドポイントで動作します (NAT ゲートウェイは必要ありません)。

ファイルシステムのパススキル

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

AWS CLI/boto3
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."}]}], )

コンテナイメージにベイクする

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

COPY skills/xlsx .agents/skills/xlsx

セッション開始時に をインストールする

最初のエージェント呼び出し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"

複数のスキルソースを組み合わせる

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."}]}], )

エラー処理

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

失敗 エラーメッセージ

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)