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: ConfigureAppLoggingとenableUnoLogging: 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
- ライセンス
- MIT
- 最終更新
- 2026/5/8
Source: https://github.com/VincentH-Net/dotnet-agentic-engineering / ライセンス: MIT
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。