Skip to content

GitHub Actions ワークフロービューア ​

VMark は GitHub Actions のワークフロー YAML をインタラクティブな有向非巡回グラフ(DAG)としてレンダリングし、ジョブ、ステップ、トリガー、権限、同時実行(concurrency)を構造化されたフォームから編集できるようにします — 元のファイルのコメント、アンカー、フォーマットを失うことなく行えます。

この機能は 2 つの場面で動作します:

  1. .github/workflows/ 配下のスタンドアロンの .yml ファイル(またはトップレベルに on: と jobs: キーを持つ任意の YAML ファイル): 左側にソース、右側にインタラクティブなキャンバスとフォームエディタを配置した分割ビュー。
  2. Markdown のコードフェンス: 三連バッククォートの yaml または yml フェンスブロックに認識可能なワークフローが含まれている場合、VMark は mermaid ブロックと同じ方法で、同じジョブグラフを画像としてインラインにレンダリングします。

VMark 独自のワークフローとは別物です

トップレベルの steps: で genie/… や action/… を使う YAML ファイルは Genie ワークフロー です — VMark が実行できる、VMark 独自のパイプライン形式です。GitHub Actions のワークフローは、ここでは表示と編集のみを行います。この機能でないもの を参照してください。

スタンドアロンのワークフローファイル ​

VMark で任意の .github/workflows/*.yml ファイルを開きます。ファイルは分割ビューで開きます — 左側に YAML ソース、右側にワークフローのワークベンチ(ソース · 分割 · プレビュー トグルでレイアウトを切り替えられます)。ワークベンチには以下が表示されます:

  • ワークフロー全体をインタラクティブな React Flow キャンバスとして表示(ジョブはノード、needs: 依存関係はエッジ)。コントロールストリップでは、ズーム、グラフをペインに合わせる表示、上から下/左から右のレイアウト切り替えができます — 幅の広いペインで長い needs: の連鎖を見るときに便利です。
  • キャンバス右上のエクスポートコントロール(エクスポート を参照)。
  • キャンバスの下に構造化エディタパネル: 診断 バナー、保存/破棄コントロール、ワークフローレベルのフォーム、選択中のジョブまたはステップのフォーム。

キャンバス内のジョブをクリックして編集します。ジョブ内のステップをクリックしてそのステップを編集します。Escape キーを押すと選択が解除され、フォーカスがソースに戻ります。

ソースを編集している間、VMark は 2 つのペインを同期させます: カーソルをジョブの行に移動するとキャンバス上のそのノードがハイライトされ、$ 式は解析されたワークフローのコンテキストに対して補完され、ローカルの uses: 参照を Cmd キーを押しながらクリックすると対象ファイルが開きます。

ジョブの編集 ​

編集可能なフィールド:

フィールドパッチ種別
namejob.set
runs-onjob.set
ifjob.set

読み取り専用のサマリー: ステップ数、needs:、および uses:(再利用可能なワークフロージョブ用)。

フォームの上にある ジョブを追加 は、入力した ID からジョブを作成します — ID は英字またはアンダースコアで始まり、既存のジョブと重複しないことが必要です — 作成したジョブは、変更するまで ubuntu-latest で実行されます。ジョブフォームの削除ボタンは、確認のうえ選択中のジョブを削除します。

ジョブフォームにはそのジョブのステップも一覧表示されます。各行は上下に移動したり、(確認のうえ)削除したりでき、ステップを追加 は新しいステップを run: echo TODO として末尾に追加するので、そのまま編集できます。

ステップの編集 ​

編集可能なフィールド:

フィールドパッチ種別
namestep.set
run(run-step 用)step.set
working-directorystep.set
ifstep.set
with: キーwith.set / with.remove

with: ブロックは、追加/編集/削除のキー/値の行としてレンダリングされます。キーの名前を変更すると、古いキーに対する with.remove の後に新しいキーに対する with.set が発行されます。別の行ですでに使われているキーは、その場で拒否されます。

uses: ステップでは、アクション参照自体は読み取り専用です — 別のアクションが必要な場合はソースで変更してください。

トリガー ​

マッピングとして書かれたトリガー(on: { push: { branches: [main] } })には、編集可能なフィルターフィールドがあります — branches、branches-ignore、tags、tags-ignore、paths、paths-ignore、types で、それぞれカンマ区切りのリストです。schedule の cron は読みやすい文章として表示され、5 分より短い間隔で実行される場合は警告が出ます(GitHub はそのようなスケジュールを間引きます)。cron は読み取り専用です。イベント名だけ、またはイベント名のリストとして書かれたトリガーも同様に読み取り専用なので、ソースで編集してください。

権限と同時実行 ​

ジョブフォームの上には、ワークフローレベルのフォームが 2 つあります:

  • Permissions(権限)— GitHub のデフォルト(permissions: キーなし)、read-all、write-all、none、またはスコープごとの表(contents、pull-requests、…)で、それぞれに read/write/none を選びます。
  • Concurrency(同時実行)— group と、cancel-in-progress するかどうか。式として書かれた cancel-in-progress は表示されますが、ここでは編集できません。

編集の保存 ​

フィールドを変更するとメモリ上のパッチリストに編集がキューイングされます。保存ボタンには現在の数(例: 未保存 3 件)が表示され、新しいジョブやステップは保存する前からキャンバスとフォームに表示されます。

保存をクリックすると、VMark は以下を行います:

  1. エディタから現在の YAML を読み取ります。
  2. キューイングされたすべてのパッチを YAML の CST(具象構文ツリー)に適用 — コメント、アンカー、既存のフォーマットを保持します。
  3. ディスク上のファイルの場合は、結果をファイルに書き込んでから、エディタをそれに合わせて更新します — ただし、その間にソースで入力していた場合は、入力した内容が保持されます。

書き込みに失敗しても何も失われません: 編集はキューに残ったままなので、もう一度保存できます。無題のドキュメントには書き込むファイルがないため、保存はエディタだけを更新します。保存するには Cmd+Shift+S を押してください。破棄 はキューイングされた編集を取り消します。

フォーマットの保持 ​

デフォルトの保存パスは、すべてのパッチを yaml パッケージの CST API で実行します — コメント、アンカーノード、カスタムインデント、既存のフロー対ブロックスタイルの選択は保持されます。

正規化された再フォーマット出力を望む場合は、設定 → 詳細設定で 保存時に YAML フォーマットを保持 を無効にします。再フォーマットパスはコメントを削除するため、これはオプトインです。

Markdown 内のコードフェンス ​

YAML コードフェンスにワークフローを入力します:

markdown
```yaml
name: ci
on: push
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: pnpm test
```

VMark はワークフローの形状(トップレベルの on: と jobs: キー)を検出し、そのジョブグラフの画像をインラインでレンダリングします — スタンドアロンのビューと同じキャンバスを画像としてキャプチャしたものです。画像は読み取り専用です。ダブルクリックするとソースを編集できます。

診断 ​

VMark はパース+ Lint の診断をフォームパネル上部のバナーに表示します。行をクリックすると、ソースが該当する行にジャンプします。行を特定できない場合(例: プレビューモード)は、該当するジョブが選択されます:

コードのプレフィックス意味
GHA-PARSE-*YAML の形式不正、または必須キーの欠落
GHA-JOB-*ジョブレベルの問題(重複 ID、uses: と steps: の競合)
GHA-NEEDS-*依存関係の問題(不明な参照、循環)
GHA-STEP-*ステップレベルの問題
GHA-EXPR-*不明なコンテキスト参照
GHA-MATRIX-*マトリックス展開の問題
GHA-SEC-*セキュリティ警告(例: pull_request_target のチェックアウトパターン)
GHA-ACTIONLINT-*actionlint がインストールされている場合に転送される

より豊富な式の診断のためには、actionlint をインストールしてください。設定 → 詳細設定(ワークフローファイル)の 利用可能な場合 actionlint を使用 がオンのとき(デフォルトでオン)、VMark はワークフローファイルのソースが変わるたびにログインシェルの PATH からバイナリを実行し、その結果を GHA-ACTIONLINT-<rule> のタグ付きでワークベンチの診断バナーに追加します。上記の組み込みチェックが actionlint を待つことはありません。トグルがオンなのにバイナリがインストールされていない場合、VMark はセッションごとに一度だけ通知し、それ以外は何も表示しません。バイナリはあるものの実行に失敗した場合は、actionlint 自身のメッセージとともに一度だけ報告されます。actionlint を完全にスキップするには、トグルをオフにしてください。MCP の workflow.validate 操作は、同じチェックを必要なときに実行します。

アクションメタデータ ​

公開 GitHub アクションを参照する uses: ステップに対して、VMark は各アクションの action.yml を取得して、構造化エディタに入力の説明を取り込みます。結果はディスクに 24 時間キャッシュされます。ワークスペースローカルのアクション(./…)はディスクから読み込まれ、ネットワークは使われません。

ワークフローエディタを完全にオフラインに保つには、設定 → 詳細設定(ワークフローファイル)で アクションメタデータを取得 をオフにします — オフの間はネットワークリクエストが行われず、with: フォームは自由形式のキー/値の行にフォールバックします。

エクスポート ​

キャンバス右上のエクスポートコントロールでは、3 つの形式を選べます:

形式用途
MermaidREADME やその他の Markdown ドキュメントへの埋め込み。クリップボードにコピーされます。情報の損失あり: 実行ステータス、アクションアイコン、カスタムバッジ、マトリックス展開の詳細は省略されます。
SVGベクターグラフィックスを必要とするドキュメントへの埋め込み。HTML コンテンツに foreignObject を使用します。
PNGチャットや SVG がサポートされていない場所での共有。キャンバスの現在のズームでレンダリングされます。

この機能でないもの ​

VMark は GitHub Actions ワークフローを実行しません。これはビューア兼エディタです — 実行は GitHub の役割のままです。この機能は純粋にワークフロー YAML の閲覧、レビュー、作成のためのものです。VMark 独自の実行可能なパイプラインは別の形式です: Genie ワークフロー を参照してください。