diff --git a/.agents/skills/exceptionless-dotnet/SKILL.md b/.agents/skills/exceptionless-dotnet/SKILL.md index acc25921..557a2588 100644 --- a/.agents/skills/exceptionless-dotnet/SKILL.md +++ b/.agents/skills/exceptionless-dotnet/SKILL.md @@ -1,46 +1,42 @@ --- name: exceptionless-dotnet -description: Use this skill when configuring, integrating, documenting, or reviewing Exceptionless .NET clients. Covers package selection and setup for Exceptionless, Exceptionless.AspNetCore, Extensions.Hosting, Extensions.Logging, MVC, Web API, WebForms, WCF, WPF, Windows Forms, NLog, log4net, Blazor, and serverless; client configuration, appsettings/app.config/environment variables, self-hosted URLs, storage, queue flushing, events, log levels, server-synced settings, plugins, privacy/data exclusions, troubleshooting, and upgrades. +description: Integrate, configure, document, review, or troubleshoot Exceptionless .NET clients using the appropriate platform package and current repository APIs. --- # Exceptionless .NET -## Core Workflow - -Use this skill to produce implementation-ready Exceptionless .NET guidance or patches. Prefer current repository source and package readmes over older public docs when they differ. - -1. Identify the app shape first: ASP.NET Core, Generic Host worker/service, console, legacy ASP.NET MVC/Web API/WebForms/WCF, WPF, Windows Forms, logging-only integration, Blazor WebAssembly, or serverless. -2. Read only the reference file that matches the requested package or advanced topic: - - `references/client-package-selection.md` for package choice, authoritative source files, and public docs. - - `references/client-console-services.md` for the root `Exceptionless` package in console apps, services, Blazor WebAssembly, and serverless functions. - - `references/client-aspnetcore.md` for `Exceptionless.AspNetCore`. - - `references/client-extensions-hosting.md` for `Exceptionless.Extensions.Hosting`. - - `references/client-extensions-logging.md` for `Exceptionless.Extensions.Logging`. - - `references/client-nlog.md` for `Exceptionless.NLog`. - - `references/client-log4net.md` for `Exceptionless.Log4net`. - - `references/client-mvc.md`, `references/client-webapi.md`, and `references/client-web-webforms-wcf.md` for legacy ASP.NET packages. - - `references/client-wpf.md` and `references/client-windows-forms.md` for desktop packages. - - `references/client-messagepack.md` for `Exceptionless.MessagePack`. - - `references/client-configuration-runtime-settings.md` for API keys, config sources, self-hosted URLs, storage, real-time settings, sessions, and serverless queue flushing. - - `references/client-plugins-event-pipeline.md` for plugins, priorities, cancellation, enrichment, and event exclusions. - - `references/client-log-levels-filtering.md` for log levels, remote log filters, type/source filters, and high-throughput logging. - - `references/client-privacy-data-exclusions-troubleshooting.md` for privacy, diagnostics, troubleshooting, proxies, de-duplication, and upgrades. -3. Choose the platform package before writing code. Do not use the root `Exceptionless` package alone when a platform package will capture richer context automatically. -4. Configure before the first event is submitted. Some settings are locked after queue/submission startup, including API key and server URLs. -5. Prefer dependency injection for ASP.NET Core and hosted services. Use `ExceptionlessClient.Default` for simple console apps, legacy integrations, and examples only when DI is not already available. -6. Treat privacy as a first-class requirement. Default collection includes potentially private metadata; explicitly decide on `IncludePrivateInformation`, data exclusions, and custom plugin redaction for production examples. -7. When changing code examples, update or add repository tests that exercise the documented API surface. Do not add executable scripts, generated validators, or other runnable code inside this skill. - -## Quality Bar - -- Include the package name, startup call, configuration source, queue-flush behavior, and privacy stance for every setup recommendation. -- For ASP.NET Core on current source, include `builder.AddExceptionless(...)`, `builder.Services.AddProblemDetails()`, `app.UseExceptionHandler()`, and `app.UseExceptionless()` when capturing unhandled HTTP exceptions. -- For Generic Host workers, include `builder.AddExceptionless(...)` plus `builder.UseExceptionless()` or explain how `ProcessQueueAsync()` is called during shutdown. -- For logging, explain the split between Microsoft logging rules and Exceptionless remote log-level settings. -- For advanced filtering, use server-synced settings or plugins instead of scattering ad hoc `if` statements around application code. -- For high-throughput logs, prefer in-memory storage for logging-only clients and document the durability tradeoff. -- For short-lived processes, serverless handlers, and CLI tools, flush with `await client.ProcessQueueAsync()` or an async-disposable scope before exit. +Prefer current repository source and package readmes over older public docs when they differ. Within the requested scope, choose the approach that best serves app users, developers, and agents together; preserve existing behavior and contracts except where the requested change requires otherwise. + +## Choose References + +Identify the host and package involved, then read only the references relevant to the request: + +- `references/client-package-selection.md` for package choice, source locations, and public docs. +- `references/client-console-services.md` for console apps, simple services, Blazor WebAssembly, and serverless functions. +- `references/client-aspnetcore.md` for ASP.NET Core setup and middleware. +- `references/client-extensions-hosting.md` for Generic Host setup and lifecycle. +- `references/client-extensions-logging.md` for Microsoft `ILogger` integration. +- `references/client-nlog.md` and `references/client-log4net.md` for those logging integrations. +- `references/client-mvc.md`, `references/client-webapi.md`, and `references/client-web-webforms-wcf.md` for legacy ASP.NET packages. +- `references/client-wpf.md` and `references/client-windows-forms.md` for desktop packages. +- `references/client-messagepack.md` for queue serialization. +- `references/client-configuration-runtime-settings.md` for API keys, config sources, self-hosted URLs, storage, server-synced settings, and sessions. +- `references/client-plugins-event-pipeline.md` for plugins, priorities, cancellation, enrichment, and event exclusions. +- `references/client-log-levels-filtering.md` for remote log filters, type/source filters, and high-throughput logging. +- `references/client-privacy-data-exclusions-troubleshooting.md` for privacy, diagnostics, proxies, de-duplication, and upgrades. + +## Integration Constraints + +- Prefer the platform package when it provides richer context and lifecycle handling than the root client. Use dependency injection for ASP.NET Core and hosted services; use `ExceptionlessClient.Default` when DI is not available. +- Configure before the first event is submitted. API key and server URLs lock after queue/submission startup. +- For production examples, explicitly choose `IncludePrivateInformation`, data exclusions, and any plugin redaction; default collection can include private metadata. +- Use server-synced settings or plugins for advanced filtering. Distinguish Microsoft logging rules from Exceptionless remote log-level settings. +- For high-throughput logging-only clients, prefer in-memory storage and explain the durability tradeoff. +- For short-lived processes and serverless handlers, await `ProcessQueueAsync()` or use an async-disposable flush scope before exit. For hosted apps, follow the package's shutdown lifecycle. +- Complete setup recommendations should identify the package, startup call, configuration source, queue-flush behavior, and privacy stance. A narrow question needs only the relevant details. ## Validation -Keep validation in the repository test suite, not in skill scripts. When editing this skill, verify the claims against current source/readmes and run the relevant `dotnet test` projects that cover the documented setup, configuration, logging, plugin, filtering, and privacy behavior. +Verify changed technical claims against current source and package readmes. For changes to examples or documented behavior, run the existing repository tests that exercise the affected API; add coverage only for a meaningful gap. Wording-only edits need metadata and reference checks, not unrelated application tests. + +Keep executable validation in the repository test suite. Do not add scripts, generated validators, or other runnable code inside this skill. diff --git a/.agents/skills/exceptionless-dotnet/agents/openai.yaml b/.agents/skills/exceptionless-dotnet/agents/openai.yaml index e89d9019..752630dd 100644 --- a/.agents/skills/exceptionless-dotnet/agents/openai.yaml +++ b/.agents/skills/exceptionless-dotnet/agents/openai.yaml @@ -1,4 +1,4 @@ interface: display_name: "Exceptionless .NET" - short_description: "Exceptionless .NET setup and best practices" - default_prompt: "Use $exceptionless-dotnet to configure or review Exceptionless .NET client setup, logging, plugins, runtime settings, privacy, and troubleshooting." + short_description: "Configure and troubleshoot Exceptionless .NET" + default_prompt: "Use $exceptionless-dotnet to configure, review, or troubleshoot the Exceptionless .NET integration for this app."