Agent Skills
- プラン: Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
GitLab Duoは、Agent Skills specificationをサポートしています。これはエージェントに新しい機能と専門知識を追加するための新しい仕様です。
Agent Skillsを使用して、特定のフレームワークでテストを作成するなど、特定のタスクに対する特別な知識とワークフローをエージェントに与えます。エージェントは、タスクに遭遇すると関連するスキルを自動的に読み込み、処理中にその情報を使用します。
SKILL.mdファイルを指定すると、スキルはGitLab Duo Agent Platformおよびその仕様をサポートする他のすべてのAIツールで利用できるようになります。
GitLab Duoで使用するAgent Skillsを指定します:
- ローカル環境でのGitLab Duo Chat。
- 基盤となるフローとカスタムフロー(コードレビューフローを除く)。
ユーザーレベルのスキルは、GitLab Duo CLIでのみ使用できます。
GitLab DuoがAgent Skillsを使用する方法
エージェントが作業を開始すると、GitLab Duoは利用可能なすべてのスキルのメタデータをエージェントのコンテキストに追加します。エージェントがスキルの説明に一致するタスクに遭遇すると、そのスキルを自動的に読み込み、タスクを完了するために使用します。
GitLab Duoにスキルを使用させるには、名前、ファイルパス、またはスラッシュコマンドで手動で指示することもできます。
GitLab Duoは以下のタイプのスキルをサポートしています:
| レベル | GitLab UI | エディタ拡張 | GitLab Duo CLI |
|---|---|---|---|
| ユーザーレベル: すべてのプロジェクトに適用 | いいえ | いいえ | |
| プロジェクトレベル: 特定のプロジェクトにのみ適用 | 1 |
補足説明:
- GitLab UIでは、基盤となるフローとカスタムフロー(コードレビューを除く)のみがプロジェクトレベルのスキルをサポートしています。GitLab Duo Chatは、GitLab UIではスキルをサポートしていません。
GitLab DuoでAgent Skillsを使用する
既存の会話とフローは、新しいスキルや更新されたスキルに自動的にアクセスできません。新しい会話を開始するか、GitLab Duoに名前または相対パスでスキルを読み込むように依頼してください。
前提条件
Agent Platformの前提条件を満たしてください。
ローカル環境でGitLab Duo Chatを使用する場合は、以下のいずれかをインストールして設定してください:
- プロジェクトレベルのスキルについて:
- GitLab for VS Code 6.71.4以降。
- GitLab Duo CLI 8.73.0以降。
- ユーザーレベルのスキル向け:
- GitLab Duo CLI 8.83.0以降。
- プロジェクトレベルのスキルについて:
カスタムフローを持つプロジェクトレベルのスキルでは、フローの設定ファイルを更新して、executorから渡される
workspace_agent_skillsコンテキストにアクセスします:components: - name: "my_agent" type: AgentComponent prompt_id: "my_prompt" inputs: - from: "context:inputs.workspace_agent_skills" as: "workspace_agent_skills" optional: trueoptional: trueを設定することで、ワークフローはエージェントスキルが存在しないケースを適切に処理します。エージェントは、追加のコンテキストの有無にかかわらず動作します。
スキルを作成する
スキルはプロジェクトレベルまたはユーザーレベルで作成できます。
IDEでマルチルートワークスペースを使用している場合、ワークスペース内の各プロジェクトに対してプロジェクトレベルのスキルを作成できます。
ユーザーレベルのスキルとプロジェクトレベルのスキルが同じ名前を共有する場合、プロジェクトレベルのスキルが優先されます。これにより、ユーザーレベルのスキルをプロジェクト固有のバージョンでオーバーライドできます。
マルチルートワークスペースで複数のプロジェクトが同じ名前のスキルを定義している場合、GitLab Duoは最初に見つかったスキルを読み込みます。
プロジェクトレベルのスキルを作成する
プロジェクトレベルのスキルは特定のプロジェクトに適用されます。それらは、プロジェクトのskills/<skill-name>/ディレクトリにあるSKILL.mdファイルで定義します。
プロジェクトレベルのスキルを作成するには:
プロジェクトのルートに、
skillsディレクトリを作成します。新しいディレクトリ内に、特定のスキル用の別のディレクトリを作成します。スキル名をディレクトリ名として使用します。
SKILL.mdファイルを作成し、以下の形式で手順を含めます。nameおよびdescriptionのYAMLフロントマターフィールドは必須です。--- name: <skill_name> description: <skill_description> --- <your_instructions_and_context_for_the_skill>例えば、
skills/cosign-blob/SKILL.mdでcosignを使用してアーティファクトに署名するスキルです:--- name: cosign-blob description: Sign artifacts using cosign with local keypairs and Sigstore v3 bundles. Integrate with 1Password for secure key management. --- ## Cosign Blob Signing Sign artifacts locally using cosign with Sigstore v3 bundles for artifact verification and integrity. ### Generate a Local Keypair Generate a new cosign keypair: ```shell cosign generate-key-pair ``` This creates two files: - `cosign.key` - Private key (encrypted) - `cosign.pub` - Public key Store the private key securely, preferably in a password manager like 1Password. ### Store Private Key in 1Password 1. Create a new login item in 1Password with: - Title: "Duo Skills cosign" - Username: (optional) - Password: Your cosign private key password 2. Save the secret reference path (for example, `op://Employee/Duo Skills cosign/password`) ### Sign Artifacts with Cosign Sign a file and generate a Sigstore v3 bundle: ```shell COSIGN_PASSWORD=$(op read "op://Employee/Duo Skills cosign/password") \ timeout -v 4 cosign sign-blob \ --key ~/.gitlab/duo/cosign.key \ --bundle <filename>.bundle \ --new-bundle-format \ --yes \ <filename> ``` Replace: - `<filename>` with the file to sign (for example, `SKILL.md`) - The bundle output will be saved as `<filename>.bundle` ### Key Points - Use timeout to fail-fast and report the error back to the user. - Use `--bundle` with `$file.bundle` format for Sigstore v3 bundles - Use `--yes` to skip interactive prompts - Use `--new-bundle-format` to output a v3 Sigstore bundle rather than the legacy format - Set `COSIGN_PASSWORD` environment variable to avoid password prompts - Integrate with 1Password CLI for secure credential management - The bundle file contains the signature and can be verified laterファイルを保存します。
新しい会話またはワークフローを開始します。エージェントのコンテキストの混乱を避けるため、
SKILL.mdファイルを変更または追加するたびにこれを行う必要があります。
ユーザーレベルのスキルを作成する
- ステータス: 実験的機能
ユーザーレベルのスキルは、すべてのプロジェクトに適用されます。それらをホームディレクトリ内のskills/<skill-name>/ディレクトリにあるSKILL.mdファイルで定義します。
ユーザーレベルのスキルは、GitLab Duo CLIでのみ使用できます。
ユーザーレベルのスキル用のディレクトリを作成する
スキルディレクトリは以下のいずれかの場所に作成できます:
- スキルを他のGitLab Duoのカスタマイズファイルと一緒に保持するには:
- LinuxまたはmacOSの場合、
~/.gitlab/duo/skills/にディレクトリを作成します。 - Windowsの場合、
%APPDATA%\GitLab\duo\skills\にディレクトリを作成します。 GLAB_CONFIG_DIRまたはXDG_CONFIG_HOMEを設定している場合、$GLAB_CONFIG_DIR/skills/または$XDG_CONFIG_HOME/gitlab/duo/skills/を使用します。両方が設定されている場合、GLAB_CONFIG_DIRが優先されます。
- LinuxまたはmacOSの場合、
- Agent Skillsの仕様をサポートする他のAIツールとスキルを共有するには:
- LinuxまたはmacOSの場合、
~/.agents/skills/にディレクトリを作成します。 - Windowsの場合、
%USERPROFILE%\.agents\skills\にディレクトリを作成します。
- LinuxまたはmacOSの場合、
ユーザーレベルのスキルファイルを作成する
ユーザーレベルのスキルを作成するには:
GitLab Duo CLIの開始時にグローバルスキルを有効にします:
glab duo cli --enable-global-skillsduo --enable-global-skillsまたは、環境変数を設定します:
export GITLAB_ENABLE_GLOBAL_SKILLS=trueあなたの
skillsディレクトリ内に、特定のスキル用の別のディレクトリを作成します。スキル名をディレクトリ名として使用します。例:~/.gitlab/duo/skills/<skill_name>/。SKILL.mdファイルを作成し、以下の形式で手順を含めます。nameおよびdescriptionのYAMLフロントマターフィールドは必須です。--- name: <skill_name> description: <skill_description> --- <your_instructions_and_context_for_the_skill>新しい会話を開始します。このスキルはどのプロジェクトでも利用できます。
スラッシュコマンドとしてスキルを公開する
カスタムスラッシュコマンドとしてスキルを有効にするには、SKILL.mdファイルのYAMLフロントマターのメタデータにslash-command: enabledを追加します:
---
name: <skill_name>
description: <skill_description>
metadata:
slash-command: enabled
---メタデータを追加すると、新しいセッションで/<skill_name>を使用して、GitLab Duoにスキルを使用するように指示できます。例: /fix-bugs。
スキルを手動で使用する
GitLab Duoに特定のスキルを使用させるには、以下のいずれかの方法を使用します:
- GitLab Duoに、プロンプト内で名前またはファイルパスでスキルを使用するように指示します。
- スキル用のスラッシュコマンドでプロンプトを開始します。
現在のセッションのコンテキストで利用可能なすべてのスキルを一覧表示するには、/skillsを使用します。