ゴーヤのイラスト

自然言語で CI/CD パイプラインを定義する Agentic Workflows

Agentic Workflows は自然言語で CI/CD パイプラインを定義できるツールとして GitHub Next が開発しています。自然言語で定義されたワークフローは GitHub CLI の拡張機能として提供される gh aw コマンドでコンパイルして実行できます。これは継続体なAI(Continuous AI)を実現するためのツールです。

Warning

Agentic Workflows は 2025 年 9 月現在研究目的のデモンストレーションとして提供されており、大幅に機能が変更される可能性があります。本番環境での使用は推奨されません。また自己責任で使用してください。

Agentic Workflows は自然言語で CI/CD パイプラインを定義できるツールとして GitHub Next が開発しています。Agentic Workflows は「あらゆるプラットフォームにおけるあらゆるソフトウェアコラボレーションをサポートする自動化された AI」を指す「継続的 AI(Continuous AI)」を実現します。継続的 AI はドキュメントの作成・コードの改善・Issue のトリアージといった自動化可能で繰り返し行われるタスクを支援することを目指しています。GitHub はこの継続的 AI を研究している段階であり、Agentic Workflows はその一環として開発されているツールです。

自然言語で定義されたワークフローは GitHub CLI の拡張機能として提供される gh aw コマンドでコンパイルして実行できます。つまり自然言語を信頼できる情報源として扱い、ワークフローの実行可能なステップがコードとして生成されるわけです。また Agentic Workflows は従来の GitHub Actions のコンセプトと馴染のある設計となっているため、GitHub Actions に慣れ親しんだ開発者にとっても理解しやすいものとなっています。基本的には GitHub のエコシステム中で完結できます。

Agentic Workflows では以下のユースケースが期待されています。

  • Issue のトリアージやラベル付け
  • 継続的な QA
  • 継続的なドキュメントの生成と更新
  • アクセシビリティのレビューと改善
  • 継続的なテストカバレッジの改善

Agentic Workflows を活用したサンプルは以下のレポジトリで公開されています。

この記事では Agentic Workflows の基本的な使い方を解説します。

Agentic Workflows を使う

Agentic Workflows を使用する前提条件として、GitHub CLI(gh コマンド)がインストールされている必要があります。GitHub CLI のインストール方法については GitHub CLI レポジトリ を参照してください。

gh --version
gh version 2.73.0 (2025-05-19)
https://github.com/cli/cli/releases/tag/v2.73.0

Agentic Workflows は GitHub CLI の拡張機能として提供されており、以下のコマンドでインストールできます。

gh extension install githubnext/gh-aw

インストールが完了したら、gh aw コマンドが使用できるようになります。

gh aw version
 gh aw version dev
 GitHub Agentic Workflows CLI from GitHub Next

Agentic Workflows を使用するためには Claude もしくは OpenAI の API キーが必要です。ここでは Claude を使用する例を示します。Claude の API キーは Anthropic のダッシュボード から取得できます。

API キーを取得したら以下のコマンドでレポジトリのシークレットに設定します。

gh secret set ANTHROPIC_API_KEY -a actions --body "<your-anthropic-api-key>"

ワークフローを作成する

ワークフローファイルは以下の 2 つのセクションで構成されます。

  • メタデータセクション: YAML Front Matter 形式でワークフローのトリガーや権限、使用するツールなどを指定する
  • ワークフローセクション: 自然言語でワークフローの内容を記述する

ワークフローファイルの拡張子は .md として .github/workflows ディレクトリに配置します。マークダウンファイルのままではワークフローを実行できないため、後述する gh aw compile コマンドでコンパイルして .lock.yml ファイルを生成する必要があります。

以下の例はコードのテスト、リンティング、フォーマットを実行し、エラーがあれば修正してプルリクエストに反映するワークフローです。

.github/workflows/test.md
---
# ワークフローが実行されるトリガー
on:
  workflow_dispatch:
  pull_request:
    branches:
      - main
 
# ワークフローの権限
permissions: read-all
 
# AI エンジンのネットワークアクセス設定
network: defaults
 
# AI エンジン(デフォルトは Claude)
engine: claude
 
# ワークフローのエージェント部分に書き込み権限を与えずに、Issue の作成やコメントの追加、プルリクエストのブランチへのプッシュを可能にする設定
safe-outputs:
  push-to-pr-branch:
  create-issue:
    title-prefix: "${{ github.workflow }}"
  add-issue-comment:
 
# AI エンジンが使用できるツール
tools:
  web-fetch:
  web-search:
  bash: [":*"]
---
 
# Workflow for Running Code Tests, Linting, and Formatting
 
Your job is to run tests, linting, and formatting on code submitted to pull requests, make necessary fixes, and reflect the changes to the pull request.
Please execute the task following these steps:
 
1. Run test, lint, and format commands
2. Check the output and fix any errors
3. Reflect changes to the pull request
4. Repeat steps 1-3 until all tests pass and there are no lint or formatting errors

YAML Front Matter セクションでは通常の GitHub Actions のワークフローで使用可能なプロパティに加えて以下のエージェント固有のプロパティが使用できます。

  • engine: 使用する AI エンジンを指定する。claude または openai を指定でき、デフォルトは claude。オプションで最大ターン数を指定できる
  • network: AI エンジンのネットワークアクセスを制御する。デフォルトでは一般的な開発ドメインとパッケージマネージャーのドメインへのアクセスが許可される。
  • tools: AI エンジンが使用できるツールや MCP サーバーを指定する。web-fetchweb-searchbash が使用可能
  • cache: ワークフローのキャッシュ設定
  • safe-outputs: ワークフローのエージェント部分に書き込み権限を与えずに、Issue の作成やコメントの追加、プルリクエストのブランチへのプッシュを可能にする設定

この例における設定を見てみましょう。on セクションではワークフローのトリガーを指定しています。ここでは手動トリガーと main ブランチへのプルリクエストが作成されたときにワークフローが実行されるように設定しています。

permissions セクションではワークフローの権限を指定しています。read-all を指定することで、リポジトリ内のすべてのリソースに対して読み取り権限が付与されます。基本的にここでは書き込み権限を与えずに、safe-outputs セクションで必要な権限を個別に付与することが推奨されます。

safe-outputs セクションでは Issue の作成やコメントの追加、プルリクエストのブランチへのプッシュを可能にする設定をしています。ここで指定したアクションはワークフローのエージェント部分が実行するステップの後に実行されるため、エージェントが直接リポジトリに書き込み権限を持つことはありません。

tools セクションでは web-fetchweb-searchbash ツールを使用できるように設定しています。bash ツールは bash:<permission> という形式で指定し、:* とすることですべてのコマンドの実行が許可されます。

マークダウンのワークフローセクションでは自然言語でワークフローの内容を記述します。この例ではコードのテスト、リンティング、フォーマットを実行し、エラーがあれば修正してプルリクエストに反映するように指示しています。先頭の # Workflow for ... はワークフローのタイトルとして扱われます。

:::info 2025 年 9 月現在では、日本語のワークフローはサポートされていないようです。英語でワークフローを記述してください。 :::

また @include ディレクティブを使用して外部ファイルをインクルードできます。

@include relative/path/to/file.md

ワークフローを compile する

ワークフローファイルは変更するたびに gh aw compile コマンドでコンパイルする必要があります。コマンドの引数にワークフローファイルのパスを指定します。ワークフローのメタデータセクションにエラーがある場合(存在しないプロパティが指定されているなど)はコンパイルに失敗します。

gh aw compile test

コンパイルに成功すると .github/workflows/test.lock.yml ファイルが生成されます。このファイルは自然言語を元に生成されたワークフローの実行可能なステップが YAML 形式で記述されたものです。.lock.yml と元の .md ファイルの両方をコミットしてプッシュする必要があります。基本的に .lock.yml ファイルは手動で編集せず、.md ファイルを信頼できる情報源として扱います。--watch オプションを指定すると、.md ファイルの変更を監視して自動的にコンパイルします。

`.lock.yml` ファイルの内容

ワークフローを実行する

コンパイルしたワークフローは on: workflow_dispatch トリガーが設定されていれば gh aw run コマンドで実行できます。コマンドの引数にワークフローファイルのパスを指定します。

gh aw run test
 
 Running 1 workflow(s)...
Successfully triggered workflow: test.lock.yml
 
🔗 View workflow run: https://github.com/azukiazusa1/workflow-test/actions/runs/17691127878
 Successfully triggered 1 workflow(s)

今回作成したワークフローはプルリクエストが作成されたときにも自動的に実行されます。

ワークフローの実行ログを確認すると、エージェントが Lint コマンドを実行し、エラーを検出していることがわかります。

エラーの内容を理解したうえで、コードの修正を試みています。any 型を使用している箇所を number 型に修正していますね。

しかし、その後のワークフローに正しく結果が渡されていないようで、push_to_pr_branch ステップでは変更が検出されず、プルリクエストに反映されていません。この場合でも CI のステータスは成功となってしまうので、0 か 1 かの明確な結果を出力するワークフローは従来の GitHub Actions のワークフローで実装したほうが良いでしょう。Agentic Workflows の examples レポジトリ では PR の CI 結果を参照に修正を試みるワークフローが公開されており、テストの実行と修正するワークフローは分離されていることがわかります。

まとめ

  • Agentic Workflows は自然言語で CI/CD パイプラインを定義できるツールとして GitHub Next が開発している。継続的 AI を実現するためのツールとして活用し、ソフトウェア開発における繰り返し行われるタスクを自動化することを目指している
  • ワークフローファイルは .md ファイルとして YAML Front Matter セクションと自然言語のワークフローセクションで構成される
  • ワークフローファイルは .github/workflows ディレクトリに配置し、gh aw compile コマンドでコンパイルして .lock.yml ファイルを生成する
  • ワークフローは gh aw run コマンドで実行できる

参考

記事の理解度チェック

以下の問題に答えて、記事の理解を深めましょう。

Agentic Workflows のワークフローファイルはどのような形式で作成しますか?

  • .md ファイルとして .github/workflows ディレクトリに配置

    正解!

    ワークフローファイルの拡張子は .md として .github/workflows ディレクトリに配置します。マークダウンファイルのままではワークフローを実行できないため、gh aw compile コマンドでコンパイルする必要があります。

  • .yml ファイルとして .github/workflows ディレクトリに配置

    もう一度考えてみましょう

    .yml ファイルは従来のGitHub Actionsの形式です。Agentic Workflowsでは自然言語で記述するため .md ファイルを使用します。

  • .json ファイルとして .github/agentic ディレクトリに配置

    もう一度考えてみましょう

  • .txt ファイルとして .workflows ディレクトリに配置

    もう一度考えてみましょう

Agentic Workflows で使用できるAIエンジンは何ですか?

  • Claude と OpenAI

    正解!

    記事では Claude もしくは OpenAI の API キーが必要であり、engine プロパティで 'claude' または 'openai' を指定できると説明されています。デフォルトは Claude です。

  • Claude のみ

    もう一度考えてみましょう

    Claude だけでなく OpenAI も使用可能です。

  • OpenAI のみ

    もう一度考えてみましょう

    OpenAI だけでなく Claude も使用可能です。実際、デフォルトは Claude となっています。

  • Gemini と Claude

    もう一度考えてみましょう

ワークフローをコンパイルするために使用するコマンドは何ですか?

  • gh aw compile

    正解!

    ワークフローファイルは変更するたびに gh aw compile コマンドでコンパイルする必要があります。コンパイルに成功すると .lock.yml ファイルが生成されます。

  • gh aw build

    もう一度考えてみましょう

    ビルドではなくコンパイルという用語が使われており、コマンドは gh aw compile です。

  • gh aw generate

    もう一度考えてみましょう

  • gh workflow compile

    もう一度考えてみましょう