第5章:ディスカバリメカニズム

5.1 概要

Discovery Mechanism(ディスカバリメカニズム)は、スキル消費者が分散ネットワーク内でSkill Descriptorを特定・取得する方法を定義します。プロトコルは柔軟性と拡張性を確保するため、3つの補完的な発見パスを提供します。

5.2 Well-Known URI発見

パス仕様

スキル提供者は自身のドメイン配下に標準化されたパスを公開します:

GET https://{domain}/.well-known/skill-sharing

レスポンス形式:スキルインデックス(Skill Index)

{
  "protocol": {
    "version": "1.0.0"
  },
  "provider": {
    "name": "Example Corp",
    "url": "https://example.com"
  },
  "skills": [
    {
      "id": "com.example.translate-v1",
      "name": "Universal Translator",
      "capability_type": "api",
      "description": "100以上の言語をサポートする高品質テキスト翻訳サービス",
      "descriptor_url": "https://example.com/skills/translate/descriptor.json",
      "access": "restricted",
      "version": "2.1.0"
    },
    {
      "id": "com.example.sentiment-v1",
      "name": "Sentiment Analyzer",
      "capability_type": "api",
      "description": "テキスト感情分析サービス",
      "descriptor_url": "https://example.com/skills/sentiment/descriptor.json",
      "access": "public",
      "version": "1.0.0"
    }
  ]
}

スキルインデックスフィールド

フィールド必須説明
protocolProtocolVersionはいプロトコルバージョン
providerobjectはい提供者情報
provider.namestringはい提供者名
provider.urlstringいいえ提供者ウェブサイト
skillsSkillIndexEntry[]はいスキルリスト

スキルインデックスエントリフィールド

フィールド必須説明
idstringはいスキル一意識別子
namestringはいスキル名
capability_typeCapabilityTypeはい能力タイプ
descriptionstringはい簡潔な説明
descriptor_urlstringはい完全なDescriptor URL
accessAccessPolicyはいアクセス制御ポリシー
versionstringはいスキルバージョン

5.3 直接URL発見

消費者がSkill Descriptorの完全なURLを既に知っている場合、直接取得できます:

GET https://example.com/skills/translate/descriptor.json

レスポンスは完全なSkill Descriptor JSONドキュメントです。

5.4 レジストリ発見(オプション)

Skill Registryはオプションのインデックスサービスであり、クロスドメインのスキル発見を加速するために使用されます。レジストリはプロトコル運用の必須条件ではありません。

クエリインターフェース

GET {registry_url}/skills?type={capability_type}

レスポンス形式

マッチするSkill Descriptor参照のリストを返します。形式はスキルインデックスエントリと同一です。

5.5 アクセス制御と発見

ディスカバリメカニズムはアクセス制御ポリシーと密接に関連しています:

アクセスポリシー未認証での発見認証後の発見呼び出し
public✓ 可視✓ 可視認証不要
restricted✓ 可視✓ 可視認証必要
private✗ 不可視✓ 可視認証必要

主要ルール:

  • 未認証リクエストがWell-Known URIにアクセスした場合、返されるスキルインデックスにはaccessprivateのスキルは含まれません
  • 認証済みリクエストはすべてのスキル(privateを含む)を参照可能

5.6 能力タイプフィルタリング

消費者は能力タイプでスキルをフィルタリングできます:

GET /.well-known/skill-sharing?type=api

フィルタリングルール:

  • 結果セット内の各スキルのcapability_typeはフィルタ値と等しい
  • 元のセット内でそのタイプに一致するすべてのスキルが結果に含まれる
  • フィルタリングはアクセス制御ルールに影響しない(privateスキルは未認証リクエストに対して不可視のまま)

5.7 スキル識別子の一意性

同一スキルインデックス内で、すべてのスキルのidフィールド値は互いに異なる必要があります。推奨されるID形式:

{reverse_domain}.{skill_name}-v{major_version}

例:

  • com.example.translate-v1
  • org.openai.gpt4-v1
  • io.github.user.code-review-v2