Agent Skills by ALSEL
汎用LLM・AI開発⭐ リポ 0品質スコア 70/100

uno-agentic-support

Uno Platformアプリのエージェント駆動型開発向けのアプリ内サポート機能です。uno_app_startでUno Platformアプリを実行または準備する際に使用できます。また、AGENT_CONSOLE_LOGで指定されたログファイルが見つからない場合、「uno-agentic-support」エントリが不足している場合、またはエージェントUIテスト中にHot ReloadやHot Designが表示されたままになっている場合にも使用します。

description の原文を見る

In-app support for agentic development of Uno Platform apps. Use when running or preparing a Uno Platform app for agent-driven execution with uno_app_start. Also use when the expected log file specified in AGENT_CONSOLE_LOG is missing or lacks "uno-agentic-support" entry, or Hot Reload / Hot Design remains visible during agent UI testing.

SKILL.md 本文

Uno Platform アプリのエージェント開発向けアプリ内サポート

エージェントを使用して Uno Platform アプリを実行する場合に使用します。 このスキルは、Uno アプリがエージェント開発をサポートするための適切な設定が行われていることを確保します。

アプリがエージェントによって実行される場合(つまり、AGENT_CONSOLE_LOG がコマンドライン引数として渡されるか、AGENT_CONSOLE_LOG 環境変数が設定されている場合)、このスキルは以下を確保します:

  • アプリからの包括的で早期段階のログが、エージェントによって指定されたログファイルで利用可能である
  • Uno Studio Hot Reload / Hot Design UI が無効化され、アプリ UI テストへの干渉やアプリスタートアップの遅延を防ぐ

1. このスキルを使用する場合

以下のいずれかに該当する場合、このスキルを選択してください:

  • エージェントが現在のワーキングフォルダ内の Uno アプリを実行することが予定されている
  • エージェントが現在のワーキングフォルダ内の Uno アプリを実行し、AGENT_CONSOLE_LOG がコマンドライン引数として渡されたか、AGENT_CONSOLE_LOG 環境変数が設定されていて、以下のいずれかが当てはまる:
    • 指定されたログファイルが作成されていない、または uno-agentic-support に言及するログエントリが含まれていない
    • 指定されたログファイルに uno-agentic-support: true に言及するログエントリが含まれているが、エージェントによって起動された Uno アプリが依然として Hot Reload / Hot Design UI を表示している

2. 一時停止 — 編集を適用する前の前提条件ゲート

このスキルからの編集を適用する前に、現在のワーキングフォルダでこの前提条件チェックを実行し、結果に基づいて対応してください。

Uno Platform アプリプロジェクトがワーキングフォルダに存在する必要があります。ワーキングフォルダから Uno アプリの .csproj を探してください。有効な Uno アプリプロジェクトは Uno SDK を使用し、プロジェクトフォルダ内またはその下に App.xaml.cs を含む必要があります。

Uno Platform アプリプロジェクトが見つからない場合は、ユーザーにこの旨を報告し、一時停止してください。

3. App.xaml.cs がエージェント開発用にワイヤアップされていることを確認

App.xaml.cs で:

  • 盲目的に貼り付けるのではなく、適応させてください。Uno テンプレートとアプリケーションホストセットアップは異なります。既存のアプリ動作、ロギングプロバイダー、フィルター、ホスト設定、名前空間、およびコメントは、エージェントサポートと直接的に競合しない限り、保持してください。

  • App クラスがこれらのコードスニペットを含むことを確認してください:

    #if DEBUG
        readonly bool startedByAgent;
    #endif
    
    #if DEBUG
        bool InitializeAgentSupport()
        {
            string? agentConsoleLogPath = ResolveAgentConsoleLogPath();
            if (agentConsoleLogPath is not null)
            {
                var stream = new FileStream(agentConsoleLogPath, FileMode.CreateNew, FileAccess.Write, FileShare.Read);
                var writer = new StreamWriter(stream) { AutoFlush = true };
                Console.SetOut(writer);
                Console.SetError(writer);
            }
            // Make sure that loggings made before the application host is initialized are captured
            LogExtensionPoint.AmbientLoggerFactory = LoggerFactory.Create(ConfigureAppLogging);
            #if HAS_UNO
                Uno.UI.Adapter.Microsoft.Extensions.Logging.LoggingAdapter.Initialize();
            #endif
    
            return agentConsoleLogPath is not null;
        }
    
        static string? ResolveAgentConsoleLogPath()
        {
            const string Key = "AGENT_CONSOLE_LOG";
    
            string prefix = Key + "=";
            foreach (string arg in Environment.GetCommandLineArgs())
            {
                if (arg.StartsWith(prefix, StringComparison.Ordinal))
                {
                    string value = arg[prefix.Length..];
                    if (!string.IsNullOrEmpty(value)) return value;
                }
            }
    
            string? fromEnv = Environment.GetEnvironmentVariable(Key);
            return string.IsNullOrEmpty(fromEnv) ? null : fromEnv;
        }
    #endif
    
        void ConfigureAppLogging(ILoggingBuilder logBuilder)
        {
            _ = logBuilder.SetMinimumLevel(LogLevel.Warning);
        #if DEBUG
            // Set the default log level for the app's own namespace to Debug
            _ = logBuilder.AddFilter(GetType().Namespace!.Split('.')[0], LogLevel.Debug);
            // Make sure that agents receive the logs in the console
            if (startedByAgent) _ = logBuilder.AddConsole();
    
            // Uno Platform namespace filter groups
            // Uncomment individual methods to see more detailed logging
            //// Generic Xaml events
            //logBuilder.XamlLogLevel(LogLevel.Debug);
            //// Layout specific messages
            //logBuilder.XamlLayoutLogLevel(LogLevel.Debug);
            //// Storage messages
            //logBuilder.StorageLogLevel(LogLevel.Debug);
            //// Binding related messages
            //logBuilder.XamlBindingLogLevel(LogLevel.Debug);
            //// Binder memory references tracking
            //logBuilder.BinderMemoryReferenceLogLevel(LogLevel.Debug);
            //// DevServer and HotReload related
            //logBuilder.HotReloadCoreLogLevel(LogLevel.Information);
            //// Debug JS interop
            //logBuilder.WebAssemblyLogLevel(LogLevel.Debug);
        #endif
        }
    
  • App コンストラクタは以下のステートメントで始まる必要があります。存在しない場合は追加するか、存在しているが先頭にない場合はコンストラクタの最上部に移動してください:

    #if DEBUG
        startedByAgent = InitializeAgentSupport();
        var logger = this.Log();
        if (logger.IsEnabled(LogLevel.Debug)) logger.LogDebug("Application Launched in DEBUG mode. uno-agentic-support: {StartedByAgent}", startedByAgent);
    #endif
    
  • OnLaunched メソッド内:

    • アプリケーションホスト設定は configure: ConfigureAppLoggingenableUnoLogging: true を指定して .UseLogging() を呼び出す必要があります。
    • .UseLogging() が既に存在する場合は、既存のアプリ固有のロギング設定を保持し、ConfigureAppLogging が依然として実行され、Uno ロギングが有効のままになるように適応させてください。
    • .UseLogging() がない場合は、既存のホスト設定チェーンに追加してください:
          .UseLogging(
              configure: ConfigureAppLogging,
              enableUnoLogging: true
          )
      
    • ConfigureAppLogging 内で、既存のアプリ固有のフィルターとプロバイダーを保持してください。エージェント固有の部分がない場合のみ追加してください:
      • logBuilder.SetMinimumLevel(LogLevel.Warning);
      • logBuilder.AddFilter(GetType().Namespace!.Split('.')[0], LogLevel.Debug);
      • if (startedByAgent) logBuilder.AddConsole();
    • 既存の UseStudio 呼び出しが存在する場合は、以下のように置き換えてください:
          #if DEBUG
          MainWindow.UseStudio(showHotReloadIndicator: !startedByAgent, launchHotDesignOnStart: !startedByAgent);
          #endif
      

4. 検証

編集後:

  • リポジトリのアクティブなビルドと実行ディレクティブを使用してアプリをビルドまたは起動します。AGENT_CONSOLE_LOG=<new-log-path> を指定してください。
  • ログファイルが存在することを確認してください。
  • uno-agentic-support: True を含むことを確認してください。
  • Hot Reload / Hot Design UI が表示されていないことを確認してください。

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
VincentH-Net
リポジトリ
VincentH-Net/dotnet-agentic-engineering
ライセンス
MIT
最終更新
2026/5/8

Source: https://github.com/VincentH-Net/dotnet-agentic-engineering / ライセンス: MIT

本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: VincentH-Net · VincentH-Net/dotnet-agentic-engineering · ライセンス: MIT