正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。
ドキュメントに関する現在のご利用体験についてお聞かせください。アンケートにご協力ください

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
ユーザーレベル: すべてのプロジェクトに適用いいえいいえcheck-sm
プロジェクトレベル: 特定のプロジェクトにのみ適用check-sm 1check-smcheck-sm

補足説明:

  1. GitLab UIでは、基盤となるフローとカスタムフロー(コードレビューを除く)のみがプロジェクトレベルのスキルをサポートしています。GitLab Duo Chatは、GitLab UIではスキルをサポートしていません。

GitLab DuoでAgent Skillsを使用する

既存の会話とフローは、新しいスキルや更新されたスキルに自動的にアクセスできません。新しい会話を開始するか、GitLab Duoに名前または相対パスでスキルを読み込むように依頼してください。

前提条件

  • Agent Platformの前提条件を満たしてください。

  • ローカル環境でGitLab Duo Chatを使用する場合は、以下のいずれかをインストールして設定してください:

  • カスタムフローを持つプロジェクトレベルのスキルでは、フローの設定ファイルを更新して、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: true

    optional: trueを設定することで、ワークフローはエージェントスキルが存在しないケースを適切に処理します。エージェントは、追加のコンテキストの有無にかかわらず動作します。

スキルを作成する

スキルはプロジェクトレベルまたはユーザーレベルで作成できます。

IDEでマルチルートワークスペースを使用している場合、ワークスペース内の各プロジェクトに対してプロジェクトレベルのスキルを作成できます。

ユーザーレベルのスキルとプロジェクトレベルのスキルが同じ名前を共有する場合、プロジェクトレベルのスキルが優先されます。これにより、ユーザーレベルのスキルをプロジェクト固有のバージョンでオーバーライドできます。

マルチルートワークスペースで複数のプロジェクトが同じ名前のスキルを定義している場合、GitLab Duoは最初に見つかったスキルを読み込みます。

プロジェクトレベルのスキルを作成する

プロジェクトレベルのスキルは特定のプロジェクトに適用されます。それらは、プロジェクトのskills/<skill-name>/ディレクトリにあるSKILL.mdファイルで定義します。

プロジェクトレベルのスキルを作成するには:

  1. プロジェクトのルートに、skillsディレクトリを作成します。

  2. 新しいディレクトリ内に、特定のスキル用の別のディレクトリを作成します。スキル名をディレクトリ名として使用します。

  3. SKILL.mdファイルを作成し、以下の形式で手順を含めます。nameおよびdescriptionのYAMLフロントマターフィールドは必須です。

    ---
    name: <skill_name>
    description: <skill_description>
    ---
    
    <your_instructions_and_context_for_the_skill>

    例えば、skills/cosign-blob/SKILL.mdcosignを使用してアーティファクトに署名するスキルです:

    ---
    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
  4. ファイルを保存します。

  5. 新しい会話またはワークフローを開始します。エージェントのコンテキストの混乱を避けるため、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が優先されます。
  • Agent Skillsの仕様をサポートする他のAIツールとスキルを共有するには:
    • LinuxまたはmacOSの場合、~/.agents/skills/にディレクトリを作成します。
    • Windowsの場合、%USERPROFILE%\.agents\skills\にディレクトリを作成します。
ユーザーレベルのスキルファイルを作成する

ユーザーレベルのスキルを作成するには:

  1. GitLab Duo CLIの開始時にグローバルスキルを有効にします:

    glab duo cli --enable-global-skills
    duo --enable-global-skills

    または、環境変数を設定します:

    export GITLAB_ENABLE_GLOBAL_SKILLS=true
  2. あなたのskillsディレクトリ内に、特定のスキル用の別のディレクトリを作成します。スキル名をディレクトリ名として使用します。例: ~/.gitlab/duo/skills/<skill_name>/

  3. SKILL.mdファイルを作成し、以下の形式で手順を含めます。nameおよびdescriptionのYAMLフロントマターフィールドは必須です。

    ---
    name: <skill_name>
    description: <skill_description>
    ---
    
    <your_instructions_and_context_for_the_skill>
  4. 新しい会話を開始します。このスキルはどのプロジェクトでも利用できます。

スラッシュコマンドとしてスキルを公開する

カスタムスラッシュコマンドとしてスキルを有効にするには、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を使用します。