Agent Skill生成をEleventyプラグインへ移行

shoelace-style/webawesome

Web AwesomeのAgent Skill生成処理がEleventyのビルドフローに統合されました。これにより、ドキュメントアプリケーションが独自のEleventyプロセスを実行する際にも、Skillファイルが確実に生成されるようになります。

背景

Web Awesomeは Agent Skill と呼ばれる、AIエージェントがコンポーネントを理解するための構造化データを生成しています。従来はビルドスクリプト(build.js)内で生成処理を呼び出していましたが、ドキュメントアプリケーションが独自のEleventyプロセスを実行する際に、この生成処理が実行されない問題がありました。

EleventyはWeb Awesomeのドキュメントサイトを構築する静的サイトジェネレーターです。ドキュメントアプリケーションは開発モードで独立したEleventyプロセスを起動するため、ビルドスクリプト経由では生成処理が実行されず、Skillファイルが欠落していました。

技術的な変更

Eleventyの設定ファイル.eleventy.js)に eleventy.after イベントハンドラを追加し、ビルド完了後にAgent Skill生成を実行するようになりました。

変更後:

import { generateAgentSkill } from '../scripts/agent-skill.js';
import { getSiteDir } from '../scripts/utils.js';

eleventyConfig.on('eleventy.after', async () => {
  const siteDir = getSiteDir();
  await generateAgentSkill({
    siteDir,
  });
});

eleventy.after イベントは、Eleventyがすべてのファイルを生成した直後に発火します。このタイミングでSkill生成を実行することで、生成されたサイトディレクトリを参照しながら処理を行えます。

一方、ビルドスクリプトbuild.js)からは、Agent Skill生成の呼び出しを削除しました。

変更前:

// Generate Agent Skill (must run after Eleventy generates _site)
spinner.start('Generating Agent Skill');
await generateAgentSkill();
spinner.succeed();

変更後:

上記のコードブロックが削除され、generateAgentSkill のインポート文も削除されています。ビルドスクリプトは generateDocs() を呼び出し、その内部でEleventyが実行されるため、結果的にEleventyの eleventy.after イベントで生成処理が実行されます。

agent-skill.js では、引数の順序を調整して siteDircopyTo の前に配置していますが、これはコードの可読性向上のための変更で、機能への影響はありません。

設計判断

生成処理をEleventyのライフサイクルに組み込む方式 が採用されました。

PR説明文では「ドキュメントアプリが独自のEleventyプロセスを実行していたため、Skill生成が欠落していた」と述べられています。ビルドスクリプト側で制御する従来の方式では、Eleventyプロセスの実行タイミングによっては生成処理が実行されないケースが発生していました。

eleventy.after イベントを利用することで、Eleventyプロセスがどのように起動されても、ビルド完了時に必ず生成処理が実行される設計になっています。これは、開発モードとプロダクションビルドの両方で一貫した動作を保証する判断といえます。

まとめ

本PRは、Agent Skill生成のタイミングをビルドスクリプトからEleventyのイベントハンドラに移行した変更です。ドキュメントアプリケーションの実行方式に依存しない生成フローを確立し、開発・本番環境での動作の一貫性を確保しています。

記事メタデータ

Generated by:
Claude Sonnet 4.5 for DiffDaily

この記事はAIによって自動生成されています。内容の正確性については、必ずソースコードやPRを確認してください。

品質レビュー結果

Review Status:
承認済み
Review Count:
1回
Reviewed by:
Gemini 2.5 Pro for DiffDaily

Review Criteria:

記事構成 ✓ PASS

Title, Context, Technical Detailの存在と明確さ

記事構成は「総論→各論→結論」の3部構成が明確に適用されています。リード文で要旨を述べ、背景、技術詳細、設計判断で具体的に掘り下げ、最後にまとめで意義を述べるという理想的な構成です。

カスタムMarkdown構文 ✓ PASS

シンタックスハイライト・GitHubリンク記法の正確性

ファイル名付きシンタックスハイライト(```javascript:ファイルパス)およびGitHubのPRリンク記法([#2030](URL))が正しく使用されています。

対象読者への適合性 ✓ PASS

エンジニア向けの適切な技術レベルと表現

Eleventyのビルドプロセスやイベントハンドラに関する内容であり、専門知識を持つエンジニアという対象読者に適した技術レベルと表現になっています。

パラグラフ・ライティング ✓ PASS

トピックセンテンス・1段落1トピック・段落長

各セクションとパラグラフがトピックセンテンスで始まり、1段落1トピックの原則が守られています。これにより、非常に高い可読性が確保されています。

Diff内容との照合 ✓ PASS

コードブロックとDiff内容の一致

記事で引用されているコードブロックは、提供されたDiff情報(.eleventy.jsへの追加、build.jsからの削除)を正確に反映しています。agent-skill.jsの変更点に関する言及も正確です。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

「Eleventy」「eleventy.after」「イベントハンドラ」「ビルドスクリプト」といった技術用語が、文脈に沿って正確かつ適切に使用されています。

説明の技術的正確性 ✓ PASS

技術的主張の正確性と論理性

変更の理由(独自のEleventyプロセス実行時に生成が漏れる問題)と解決策(`eleventy.after`イベントへの移行)の因果関係が、技術的に正確かつ論理的に説明されています。

事実の突合 ✓ PASS

PR情報による主張の裏付け(ハルシネーション検出)

記事内の主張はすべてPRのDescriptionやDiffの内容によって裏付けられており、根拠のない推測や憶測(ハルシネーション)は一切含まれていません。

数値・固有名詞の確認 ✓ PASS

PR番号・コミットID・バージョン等の正確性

PR番号(#2030)、ファイルパス、関数名などの数値・固有名詞はすべて正確に記載されています。

タイトル・説明との一致 ✓ PASS

記事タイトル・説明とPR内容の一致

記事のタイトルは、PRのTitle「fix agent build」よりも具体的に変更内容を要約しており、PRの意図と完全に一致しています。

外部知識の正確性 ✓ PASS

PRに記載のない外部知識(LTS、サポート状況など)の不使用

PR情報に含まれないバージョン情報やサポート状況、リリース日程などの外部知識は記載されていません。

時間表現の正確性 ✓ PASS

時間表現がPR情報と一致しているか

「従来は」「変更後は」といった時間表現が、変更の前後関係を正確に反映しており、誤解を招く表現はありません。