{"owner":"dotnet","repo":"dotnet-monitor","hasSkills":true,"totalSkillsCount":5,"totalTokensCount":1656,"categories":["anthropic-skill","copilot-instructions"],"hasMcp":false,"mcpConfig":null,"found":["src/Tools/dotnet-monitor/appsettings.Development.json",".github/copilot-instructions.md","src/Extensions/S3Storage/extension.json","src/Tools/dotnet-monitor/appsettings.json","src/Extensions/AzureBlobStorage/extension.json"],"skills":{"src/Tools/dotnet-monitor/appsettings.Development.json":"{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Debug\",\n      \"System\": \"Information\",\n      \"Microsoft\": \"Information\"\n    }\n  }\n}\n",".github/copilot-instructions.md":"# dotnet-monitor Repository - Copilot Instructions\n\n## Project Overview\n\n`dotnet-monitor` is a diagnostic tool for capturing diagnostic artifacts from .NET applications in an operator-driven or automated manner. It provides a unified HTTP API for collecting diagnostics regardless of where the application runs (local, Docker, Kubernetes).\n\n**Key Features:**\n- HTTP API for on-demand collection of diagnostic artifacts (dumps, traces, logs, metrics)\n- Collection Rules for automated, rule-based artifact collection based on triggers\n- Egress providers for storing artifacts in various destinations\n- Cross-platform support (Windows, Linux, macOS)\n\n## Technology Stack\n\n- **Primary Language:** C# \n- **.NET SDK:** 10.0\n- **Target Frameworks:** .NET 8.0, 9.0, 10.0\n- **ASP.NET Core:** Multi-version support (8.0, 9.0, 10.0)\n- **Build System:** MSBuild with .NET Arcade SDK\n- **Native Code:** C++ (for profilers and native components)\n- **Testing:** xUnit\n- **Documentation:** Markdown\n- **Package Management:** NuGet with Central Package Management\n\n## Repository Structure\n\n- **`src/Tools/dotnet-monitor/`** - Main dotnet-monitor tool\n- **`src/Microsoft.Diagnostics.Monitoring.WebApi/`** - Core Web API implementation\n- **`src/Microsoft.Diagnostics.Monitoring.Options/`** - Configuration options\n- **`src/Microsoft.Diagnostics.Monitoring.StartupHook/`** - Startup hook for in-process features\n- **`src/Extensions/`** - Extension implementations (Azure Blob, S3 storage, etc.)\n- **`src/Profilers/`** - Native profiler implementations\n- **`src/Tests/`** - All test projects\n- **`documentation/`** - User-facing documentation\n- **`eng/`** - Build and engineering infrastructure\n\n## Build and Test Commands\n\n### Build\n```bash\n# Windows\n.\\Build.cmd\n\n# Linux/macOS\n./build.sh\n```\n\n### Test\n```bash\n# Windows\n.\\Test.cmd\n\n# Linux/macOS  \n./test.sh\n```\n\n### Restore Dependencies\n```bash\n# Windows\n.\\Restore.cmd\n\n# Linux/macOS\n./restore.sh\n```\n\n## Coding Guidelines\n\n### C# Code Style\n\n1. **File Headers:** All C# files must include the .NET Foundation license header:\n   ```csharp\n   // Licensed to the .NET Foundation under one or more agreements.\n   // The .NET Foundation licenses this file to you under the MIT license.\n   ```\n\n2. **Language Version:** Use `Latest` C# language features\n\n3. **Code Style Preferences:**\n   - Do NOT use `var` - use explicit types\n   - Prefer explicit types for locals, parameters, and member access\n   - Use `this.` qualification: NO (avoid using `this.` unless necessary)\n   - Expression-bodied members: Use for properties, accessors, indexers, lambdas\n   - Expression-bodied members: DO NOT use for methods, constructors, operators\n   - Pattern matching: Prefer pattern matching over `as` with null checks\n   - Null-checking: Use null-conditional operators and null-coalescing\n   - Using directives: Place outside namespace\n   - Namespace style: Use block-scoped namespaces (not file-scoped)\n   - Braces: Always use braces even for single-line blocks\n\n4. **Modifier Order:**\n   ```\n   public, private, protected, internal, static, extern, new, virtual, \n   abstract, sealed, override, readonly, unsafe, volatile, async\n   ```\n\n5. **Documentation:** Generate XML documentation files for all projects\n\n6. **Warnings:** Treat all warnings as errors (`TreatWarningsAsErrors=true`)\n\n7. **Code Style Enforcement:** Code style rules are enforced during build (`EnforceCodeStyleInBuild=true`)\n\n### Formatting\n\n- **Indentation:** 4 spaces (2 spaces for XML/YAML/JSON config files)\n- **Line Endings:** Insert final newline\n- **Trailing Whitespace:** Trim trailing whitespace\n- **C++ Code:** Use Allman brace style\n\n### Testing\n\n- All test projects are in `src/Tests/`\n- Use xUnit for unit tests\n- Test project naming: `<Component>.UnitTests` or `<Component>.IntegrationTests`\n- Always add tests when adding new features\n- Start with a failing test when fixing bugs\n\n## Security Considerations\n\n1. **Authentication:** dotnet-monitor supports API Key authentication (recommended) and Windows authentication\n2. **Sensitive Data:** Never commit secrets or API keys to source code\n3. **Security Documentation:** See `documentation/security-considerations.md` for security topics\n\n## Pull Request Process\n\n1. Create an issue for non-trivial changes\n2. Fork the repository and create a feature branch from `main`\n3. Make focused, minimal changes\n4. Add tests for new features or bug fixes\n5. Ensure builds are clean and all tests pass\n6. Sign the .NET Foundation CLA (automated on first PR)\n7. Wait for review from Microsoft team members\n8. Address feedback and iterate\n\n## Key Configuration Files\n\n- **`Directory.Build.props`** - Common MSBuild properties for all projects\n- **`Directory.Packages.props`** - Central package version management\n- **`.editorconfig`** - Code style and formatting rules\n- **`global.json`** - .NET SDK version pinning\n- **`NuGet.config`** - NuGet feed configuration\n\n## Common Patterns\n\n1. **Options Pattern:** Use strongly-typed options classes in `Microsoft.Diagnostics.Monitoring.Options`\n2. **Collection Rules:** Implement triggers and actions following existing patterns\n3. **Egress Providers:** Extend `IEgressProvider` for new storage backends\n4. **API Endpoints:** Follow RESTful conventions in `Microsoft.Diagnostics.Monitoring.WebApi`\n5. **Configuration:** Use IConfiguration with JSON/environment variable support\n6. **Learning Paths:** Guidance for developers on the various components in `dotnet-monitor`. It may need to be updated based on product changes.\n\n## Documentation\n\n- User documentation in `documentation/` directory\n- API documentation at `documentation/api/`\n- Configuration schema: `documentation/schema.json`\n- Keep documentation synchronized with code changes\n- Follow existing markdown structure and formatting\n\n## Useful Links\n\n- [Contributing Guidelines](CONTRIBUTING.md)\n- [Building Instructions](documentation/building.md)\n- [Security Policy](SECURITY.md)\n- [API Documentation](documentation/api/README.md)\n- [Configuration Guide](documentation/configuration/README.md)\n","src/Extensions/S3Storage/extension.json":"{\n    \"Name\": \"S3Storage\",\n    \"AssemblyFileName\": \"dotnet-monitor-egress-s3storage\",\n    \"Modes\": [ \"Validate\" ]\n}\n","src/Tools/dotnet-monitor/appsettings.json":"{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft\": \"Warning\",\n      \"Microsoft.Diagnostics\": \"Information\",\n      \"Microsoft.Hosting.Lifetime\": \"Information\"\n    },\n    \"Console\": {\n      \"FormatterName\": \"simple\",\n      \"FormatterOptions\": {\n        \"IncludeScopes\": true,\n        \"TimestampFormat\": \"HH:mm:ss \"\n      }\n    },\n    \"EventLog\": {\n      \"LogLevel\": {\n        \"Default\": \"Information\",\n        \"Microsoft\": \"Warning\",\n        \"Microsoft.Diagnostics\": \"Information\",\n        \"Microsoft.Hosting.Lifetime\": \"Information\"\n      }\n    }\n  },\n  \"AllowedHosts\": \"*\"\n}\n","src/Extensions/AzureBlobStorage/extension.json":"{\n    \"Name\": \"AzureBlobStorage\",\n    \"AssemblyFileName\": \"dotnet-monitor-egress-azureblobstorage\",\n    \"Modes\": [\"Validate\"]\n}\n"},"files":{"src/Tools/dotnet-monitor/appsettings.Development.json":"{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Debug\",\n      \"System\": \"Information\",\n      \"Microsoft\": \"Information\"\n    }\n  }\n}\n",".github/copilot-instructions.md":"# dotnet-monitor Repository - Copilot Instructions\n\n## Project Overview\n\n`dotnet-monitor` is a diagnostic tool for capturing diagnostic artifacts from .NET applications in an operator-driven or automated manner. It provides a unified HTTP API for collecting diagnostics regardless of where the application runs (local, Docker, Kubernetes).\n\n**Key Features:**\n- HTTP API for on-demand collection of diagnostic artifacts (dumps, traces, logs, metrics)\n- Collection Rules for automated, rule-based artifact collection based on triggers\n- Egress providers for storing artifacts in various destinations\n- Cross-platform support (Windows, Linux, macOS)\n\n## Technology Stack\n\n- **Primary Language:** C# \n- **.NET SDK:** 10.0\n- **Target Frameworks:** .NET 8.0, 9.0, 10.0\n- **ASP.NET Core:** Multi-version support (8.0, 9.0, 10.0)\n- **Build System:** MSBuild with .NET Arcade SDK\n- **Native Code:** C++ (for profilers and native components)\n- **Testing:** xUnit\n- **Documentation:** Markdown\n- **Package Management:** NuGet with Central Package Management\n\n## Repository Structure\n\n- **`src/Tools/dotnet-monitor/`** - Main dotnet-monitor tool\n- **`src/Microsoft.Diagnostics.Monitoring.WebApi/`** - Core Web API implementation\n- **`src/Microsoft.Diagnostics.Monitoring.Options/`** - Configuration options\n- **`src/Microsoft.Diagnostics.Monitoring.StartupHook/`** - Startup hook for in-process features\n- **`src/Extensions/`** - Extension implementations (Azure Blob, S3 storage, etc.)\n- **`src/Profilers/`** - Native profiler implementations\n- **`src/Tests/`** - All test projects\n- **`documentation/`** - User-facing documentation\n- **`eng/`** - Build and engineering infrastructure\n\n## Build and Test Commands\n\n### Build\n```bash\n# Windows\n.\\Build.cmd\n\n# Linux/macOS\n./build.sh\n```\n\n### Test\n```bash\n# Windows\n.\\Test.cmd\n\n# Linux/macOS  \n./test.sh\n```\n\n### Restore Dependencies\n```bash\n# Windows\n.\\Restore.cmd\n\n# Linux/macOS\n./restore.sh\n```\n\n## Coding Guidelines\n\n### C# Code Style\n\n1. **File Headers:** All C# files must include the .NET Foundation license header:\n   ```csharp\n   // Licensed to the .NET Foundation under one or more agreements.\n   // The .NET Foundation licenses this file to you under the MIT license.\n   ```\n\n2. **Language Version:** Use `Latest` C# language features\n\n3. **Code Style Preferences:**\n   - Do NOT use `var` - use explicit types\n   - Prefer explicit types for locals, parameters, and member access\n   - Use `this.` qualification: NO (avoid using `this.` unless necessary)\n   - Expression-bodied members: Use for properties, accessors, indexers, lambdas\n   - Expression-bodied members: DO NOT use for methods, constructors, operators\n   - Pattern matching: Prefer pattern matching over `as` with null checks\n   - Null-checking: Use null-conditional operators and null-coalescing\n   - Using directives: Place outside namespace\n   - Namespace style: Use block-scoped namespaces (not file-scoped)\n   - Braces: Always use braces even for single-line blocks\n\n4. **Modifier Order:**\n   ```\n   public, private, protected, internal, static, extern, new, virtual, \n   abstract, sealed, override, readonly, unsafe, volatile, async\n   ```\n\n5. **Documentation:** Generate XML documentation files for all projects\n\n6. **Warnings:** Treat all warnings as errors (`TreatWarningsAsErrors=true`)\n\n7. **Code Style Enforcement:** Code style rules are enforced during build (`EnforceCodeStyleInBuild=true`)\n\n### Formatting\n\n- **Indentation:** 4 spaces (2 spaces for XML/YAML/JSON config files)\n- **Line Endings:** Insert final newline\n- **Trailing Whitespace:** Trim trailing whitespace\n- **C++ Code:** Use Allman brace style\n\n### Testing\n\n- All test projects are in `src/Tests/`\n- Use xUnit for unit tests\n- Test project naming: `<Component>.UnitTests` or `<Component>.IntegrationTests`\n- Always add tests when adding new features\n- Start with a failing test when fixing bugs\n\n## Security Considerations\n\n1. **Authentication:** dotnet-monitor supports API Key authentication (recommended) and Windows authentication\n2. **Sensitive Data:** Never commit secrets or API keys to source code\n3. **Security Documentation:** See `documentation/security-considerations.md` for security topics\n\n## Pull Request Process\n\n1. Create an issue for non-trivial changes\n2. Fork the repository and create a feature branch from `main`\n3. Make focused, minimal changes\n4. Add tests for new features or bug fixes\n5. Ensure builds are clean and all tests pass\n6. Sign the .NET Foundation CLA (automated on first PR)\n7. Wait for review from Microsoft team members\n8. Address feedback and iterate\n\n## Key Configuration Files\n\n- **`Directory.Build.props`** - Common MSBuild properties for all projects\n- **`Directory.Packages.props`** - Central package version management\n- **`.editorconfig`** - Code style and formatting rules\n- **`global.json`** - .NET SDK version pinning\n- **`NuGet.config`** - NuGet feed configuration\n\n## Common Patterns\n\n1. **Options Pattern:** Use strongly-typed options classes in `Microsoft.Diagnostics.Monitoring.Options`\n2. **Collection Rules:** Implement triggers and actions following existing patterns\n3. **Egress Providers:** Extend `IEgressProvider` for new storage backends\n4. **API Endpoints:** Follow RESTful conventions in `Microsoft.Diagnostics.Monitoring.WebApi`\n5. **Configuration:** Use IConfiguration with JSON/environment variable support\n6. **Learning Paths:** Guidance for developers on the various components in `dotnet-monitor`. It may need to be updated based on product changes.\n\n## Documentation\n\n- User documentation in `documentation/` directory\n- API documentation at `documentation/api/`\n- Configuration schema: `documentation/schema.json`\n- Keep documentation synchronized with code changes\n- Follow existing markdown structure and formatting\n\n## Useful Links\n\n- [Contributing Guidelines](CONTRIBUTING.md)\n- [Building Instructions](documentation/building.md)\n- [Security Policy](SECURITY.md)\n- [API Documentation](documentation/api/README.md)\n- [Configuration Guide](documentation/configuration/README.md)\n","src/Extensions/S3Storage/extension.json":"{\n    \"Name\": \"S3Storage\",\n    \"AssemblyFileName\": \"dotnet-monitor-egress-s3storage\",\n    \"Modes\": [ \"Validate\" ]\n}\n","src/Tools/dotnet-monitor/appsettings.json":"{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft\": \"Warning\",\n      \"Microsoft.Diagnostics\": \"Information\",\n      \"Microsoft.Hosting.Lifetime\": \"Information\"\n    },\n    \"Console\": {\n      \"FormatterName\": \"simple\",\n      \"FormatterOptions\": {\n        \"IncludeScopes\": true,\n        \"TimestampFormat\": \"HH:mm:ss \"\n      }\n    },\n    \"EventLog\": {\n      \"LogLevel\": {\n        \"Default\": \"Information\",\n        \"Microsoft\": \"Warning\",\n        \"Microsoft.Diagnostics\": \"Information\",\n        \"Microsoft.Hosting.Lifetime\": \"Information\"\n      }\n    }\n  },\n  \"AllowedHosts\": \"*\"\n}\n","src/Extensions/AzureBlobStorage/extension.json":"{\n    \"Name\": \"AzureBlobStorage\",\n    \"AssemblyFileName\": \"dotnet-monitor-egress-azureblobstorage\",\n    \"Modes\": [\"Validate\"]\n}\n"},"items":[{"name":"extension.json","path":"src/Extensions/AzureBlobStorage/extension.json","rawUrl":"https://raw.githubusercontent.com/dotnet/dotnet-monitor/HEAD/src/Extensions/AzureBlobStorage/extension.json","title":"AzureBlobStorage Skill","category":"anthropic-skill","format":"json","content":"{\n    \"Name\": \"AzureBlobStorage\",\n    \"AssemblyFileName\": \"dotnet-monitor-egress-azureblobstorage\",\n    \"Modes\": [\"Validate\"]\n}\n","frontmatter":{"Name":"AzureBlobStorage","AssemblyFileName":"dotnet-monitor-egress-azureblobstorage","Modes":["Validate"]},"isInternal":false,"tokens":35,"sizeBytes":128},{"name":"extension.json","path":"src/Extensions/S3Storage/extension.json","rawUrl":"https://raw.githubusercontent.com/dotnet/dotnet-monitor/HEAD/src/Extensions/S3Storage/extension.json","title":"S3Storage Skill","category":"anthropic-skill","format":"json","content":"{\n    \"Name\": \"S3Storage\",\n    \"AssemblyFileName\": \"dotnet-monitor-egress-s3storage\",\n    \"Modes\": [ \"Validate\" ]\n}\n","frontmatter":{"Name":"S3Storage","AssemblyFileName":"dotnet-monitor-egress-s3storage","Modes":["Validate"]},"isInternal":false,"tokens":36,"sizeBytes":116},{"name":"appsettings.Development.json","path":"src/Tools/dotnet-monitor/appsettings.Development.json","rawUrl":"https://raw.githubusercontent.com/dotnet/dotnet-monitor/HEAD/src/Tools/dotnet-monitor/appsettings.Development.json","title":"Dotnet-monitor Skill","category":"anthropic-skill","format":"json","content":"{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Debug\",\n      \"System\": \"Information\",\n      \"Microsoft\": \"Information\"\n    }\n  }\n}\n","frontmatter":{"Logging":{"LogLevel":{"Default":"Debug","System":"Information","Microsoft":"Information"}}},"isInternal":false,"tokens":37,"sizeBytes":137},{"name":"appsettings.json","path":"src/Tools/dotnet-monitor/appsettings.json","rawUrl":"https://raw.githubusercontent.com/dotnet/dotnet-monitor/HEAD/src/Tools/dotnet-monitor/appsettings.json","title":"Dotnet-monitor Skill","category":"anthropic-skill","format":"json","content":"{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft\": \"Warning\",\n      \"Microsoft.Diagnostics\": \"Information\",\n      \"Microsoft.Hosting.Lifetime\": \"Information\"\n    },\n    \"Console\": {\n      \"FormatterName\": \"simple\",\n      \"FormatterOptions\": {\n        \"IncludeScopes\": true,\n        \"TimestampFormat\": \"HH:mm:ss \"\n      }\n    },\n    \"EventLog\": {\n      \"LogLevel\": {\n        \"Default\": \"Information\",\n        \"Microsoft\": \"Warning\",\n        \"Microsoft.Diagnostics\": \"Information\",\n        \"Microsoft.Hosting.Lifetime\": \"Information\"\n      }\n    }\n  },\n  \"AllowedHosts\": \"*\"\n}\n","frontmatter":{"Logging":{"LogLevel":{"Default":"Information","Microsoft":"Warning","Microsoft.Diagnostics":"Information","Microsoft.Hosting.Lifetime":"Information"},"Console":{"FormatterName":"simple","FormatterOptions":{"IncludeScopes":true,"TimestampFormat":"HH:mm:ss "}},"EventLog":{"LogLevel":{"Default":"Information","Microsoft":"Warning","Microsoft.Diagnostics":"Information","Microsoft.Hosting.Lifetime":"Information"}}},"AllowedHosts":"*"},"isInternal":false,"tokens":144,"sizeBytes":610},{"name":"copilot-instructions.md","path":".github/copilot-instructions.md","rawUrl":"https://raw.githubusercontent.com/dotnet/dotnet-monitor/HEAD/.github/copilot-instructions.md","title":"GitHub Copilot Instructions","category":"copilot-instructions","format":"markdown","content":"# dotnet-monitor Repository - Copilot Instructions\n\n## Project Overview\n\n`dotnet-monitor` is a diagnostic tool for capturing diagnostic artifacts from .NET applications in an operator-driven or automated manner. It provides a unified HTTP API for collecting diagnostics regardless of where the application runs (local, Docker, Kubernetes).\n\n**Key Features:**\n- HTTP API for on-demand collection of diagnostic artifacts (dumps, traces, logs, metrics)\n- Collection Rules for automated, rule-based artifact collection based on triggers\n- Egress providers for storing artifacts in various destinations\n- Cross-platform support (Windows, Linux, macOS)\n\n## Technology Stack\n\n- **Primary Language:** C# \n- **.NET SDK:** 10.0\n- **Target Frameworks:** .NET 8.0, 9.0, 10.0\n- **ASP.NET Core:** Multi-version support (8.0, 9.0, 10.0)\n- **Build System:** MSBuild with .NET Arcade SDK\n- **Native Code:** C++ (for profilers and native components)\n- **Testing:** xUnit\n- **Documentation:** Markdown\n- **Package Management:** NuGet with Central Package Management\n\n## Repository Structure\n\n- **`src/Tools/dotnet-monitor/`** - Main dotnet-monitor tool\n- **`src/Microsoft.Diagnostics.Monitoring.WebApi/`** - Core Web API implementation\n- **`src/Microsoft.Diagnostics.Monitoring.Options/`** - Configuration options\n- **`src/Microsoft.Diagnostics.Monitoring.StartupHook/`** - Startup hook for in-process features\n- **`src/Extensions/`** - Extension implementations (Azure Blob, S3 storage, etc.)\n- **`src/Profilers/`** - Native profiler implementations\n- **`src/Tests/`** - All test projects\n- **`documentation/`** - User-facing documentation\n- **`eng/`** - Build and engineering infrastructure\n\n## Build and Test Commands\n\n### Build\n```bash\n# Windows\n.\\Build.cmd\n\n# Linux/macOS\n./build.sh\n```\n\n### Test\n```bash\n# Windows\n.\\Test.cmd\n\n# Linux/macOS  \n./test.sh\n```\n\n### Restore Dependencies\n```bash\n# Windows\n.\\Restore.cmd\n\n# Linux/macOS\n./restore.sh\n```\n\n## Coding Guidelines\n\n### C# Code Style\n\n1. **File Headers:** All C# files must include the .NET Foundation license header:\n   ```csharp\n   // Licensed to the .NET Foundation under one or more agreements.\n   // The .NET Foundation licenses this file to you under the MIT license.\n   ```\n\n2. **Language Version:** Use `Latest` C# language features\n\n3. **Code Style Preferences:**\n   - Do NOT use `var` - use explicit types\n   - Prefer explicit types for locals, parameters, and member access\n   - Use `this.` qualification: NO (avoid using `this.` unless necessary)\n   - Expression-bodied members: Use for properties, accessors, indexers, lambdas\n   - Expression-bodied members: DO NOT use for methods, constructors, operators\n   - Pattern matching: Prefer pattern matching over `as` with null checks\n   - Null-checking: Use null-conditional operators and null-coalescing\n   - Using directives: Place outside namespace\n   - Namespace style: Use block-scoped namespaces (not file-scoped)\n   - Braces: Always use braces even for single-line blocks\n\n4. **Modifier Order:**\n   ```\n   public, private, protected, internal, static, extern, new, virtual, \n   abstract, sealed, override, readonly, unsafe, volatile, async\n   ```\n\n5. **Documentation:** Generate XML documentation files for all projects\n\n6. **Warnings:** Treat all warnings as errors (`TreatWarningsAsErrors=true`)\n\n7. **Code Style Enforcement:** Code style rules are enforced during build (`EnforceCodeStyleInBuild=true`)\n\n### Formatting\n\n- **Indentation:** 4 spaces (2 spaces for XML/YAML/JSON config files)\n- **Line Endings:** Insert final newline\n- **Trailing Whitespace:** Trim trailing whitespace\n- **C++ Code:** Use Allman brace style\n\n### Testing\n\n- All test projects are in `src/Tests/`\n- Use xUnit for unit tests\n- Test project naming: `<Component>.UnitTests` or `<Component>.IntegrationTests`\n- Always add tests when adding new features\n- Start with a failing test when fixing bugs\n\n## Security Considerations\n\n1. **Authentication:** dotnet-monitor supports API Key authentication (recommended) and Windows authentication\n2. **Sensitive Data:** Never commit secrets or API keys to source code\n3. **Security Documentation:** See `documentation/security-considerations.md` for security topics\n\n## Pull Request Process\n\n1. Create an issue for non-trivial changes\n2. Fork the repository and create a feature branch from `main`\n3. Make focused, minimal changes\n4. Add tests for new features or bug fixes\n5. Ensure builds are clean and all tests pass\n6. Sign the .NET Foundation CLA (automated on first PR)\n7. Wait for review from Microsoft team members\n8. Address feedback and iterate\n\n## Key Configuration Files\n\n- **`Directory.Build.props`** - Common MSBuild properties for all projects\n- **`Directory.Packages.props`** - Central package version management\n- **`.editorconfig`** - Code style and formatting rules\n- **`global.json`** - .NET SDK version pinning\n- **`NuGet.config`** - NuGet feed configuration\n\n## Common Patterns\n\n1. **Options Pattern:** Use strongly-typed options classes in `Microsoft.Diagnostics.Monitoring.Options`\n2. **Collection Rules:** Implement triggers and actions following existing patterns\n3. **Egress Providers:** Extend `IEgressProvider` for new storage backends\n4. **API Endpoints:** Follow RESTful conventions in `Microsoft.Diagnostics.Monitoring.WebApi`\n5. **Configuration:** Use IConfiguration with JSON/environment variable support\n6. **Learning Paths:** Guidance for developers on the various components in `dotnet-monitor`. It may need to be updated based on product changes.\n\n## Documentation\n\n- User documentation in `documentation/` directory\n- API documentation at `documentation/api/`\n- Configuration schema: `documentation/schema.json`\n- Keep documentation synchronized with code changes\n- Follow existing markdown structure and formatting\n\n## Useful Links\n\n- [Contributing Guidelines](CONTRIBUTING.md)\n- [Building Instructions](documentation/building.md)\n- [Security Policy](SECURITY.md)\n- [API Documentation](documentation/api/README.md)\n- [Configuration Guide](documentation/configuration/README.md)\n","isInternal":false,"tokens":1404,"sizeBytes":6044}],"systemPromptSnippet":"<yakaai_skills repo=\"dotnet/dotnet-monitor\">\n<!-- File: src/Extensions/AzureBlobStorage/extension.json (Tokens: ~35 | Category: anthropic-skill) -->\n{\n    \"Name\": \"AzureBlobStorage\",\n    \"AssemblyFileName\": \"dotnet-monitor-egress-azureblobstorage\",\n    \"Modes\": [\"Validate\"]\n}\n\n<!-- File: src/Extensions/S3Storage/extension.json (Tokens: ~36 | Category: anthropic-skill) -->\n{\n    \"Name\": \"S3Storage\",\n    \"AssemblyFileName\": \"dotnet-monitor-egress-s3storage\",\n    \"Modes\": [ \"Validate\" ]\n}\n\n<!-- File: src/Tools/dotnet-monitor/appsettings.Development.json (Tokens: ~37 | Category: anthropic-skill) -->\n{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Debug\",\n      \"System\": \"Information\",\n      \"Microsoft\": \"Information\"\n    }\n  }\n}\n\n<!-- File: src/Tools/dotnet-monitor/appsettings.json (Tokens: ~144 | Category: anthropic-skill) -->\n{\n  \"Logging\": {\n    \"LogLevel\": {\n      \"Default\": \"Information\",\n      \"Microsoft\": \"Warning\",\n      \"Microsoft.Diagnostics\": \"Information\",\n      \"Microsoft.Hosting.Lifetime\": \"Information\"\n    },\n    \"Console\": {\n      \"FormatterName\": \"simple\",\n      \"FormatterOptions\": {\n        \"IncludeScopes\": true,\n        \"TimestampFormat\": \"HH:mm:ss \"\n      }\n    },\n    \"EventLog\": {\n      \"LogLevel\": {\n        \"Default\": \"Information\",\n        \"Microsoft\": \"Warning\",\n        \"Microsoft.Diagnostics\": \"Information\",\n        \"Microsoft.Hosting.Lifetime\": \"Information\"\n      }\n    }\n  },\n  \"AllowedHosts\": \"*\"\n}\n\n<!-- File: .github/copilot-instructions.md (Tokens: ~1404 | Category: copilot-instructions) -->\n# dotnet-monitor Repository - Copilot Instructions\n\n## Project Overview\n\n`dotnet-monitor` is a diagnostic tool for capturing diagnostic artifacts from .NET applications in an operator-driven or automated manner. It provides a unified HTTP API for collecting diagnostics regardless of where the application runs (local, Docker, Kubernetes).\n\n**Key Features:**\n- HTTP API for on-demand collection of diagnostic artifacts (dumps, traces, logs, metrics)\n- Collection Rules for automated, rule-based artifact collection based on triggers\n- Egress providers for storing artifacts in various destinations\n- Cross-platform support (Windows, Linux, macOS)\n\n## Technology Stack\n\n- **Primary Language:** C# \n- **.NET SDK:** 10.0\n- **Target Frameworks:** .NET 8.0, 9.0, 10.0\n- **ASP.NET Core:** Multi-version support (8.0, 9.0, 10.0)\n- **Build System:** MSBuild with .NET Arcade SDK\n- **Native Code:** C++ (for profilers and native components)\n- **Testing:** xUnit\n- **Documentation:** Markdown\n- **Package Management:** NuGet with Central Package Management\n\n## Repository Structure\n\n- **`src/Tools/dotnet-monitor/`** - Main dotnet-monitor tool\n- **`src/Microsoft.Diagnostics.Monitoring.WebApi/`** - Core Web API implementation\n- **`src/Microsoft.Diagnostics.Monitoring.Options/`** - Configuration options\n- **`src/Microsoft.Diagnostics.Monitoring.StartupHook/`** - Startup hook for in-process features\n- **`src/Extensions/`** - Extension implementations (Azure Blob, S3 storage, etc.)\n- **`src/Profilers/`** - Native profiler implementations\n- **`src/Tests/`** - All test projects\n- **`documentation/`** - User-facing documentation\n- **`eng/`** - Build and engineering infrastructure\n\n## Build and Test Commands\n\n### Build\n```bash\n# Windows\n.\\Build.cmd\n\n# Linux/macOS\n./build.sh\n```\n\n### Test\n```bash\n# Windows\n.\\Test.cmd\n\n# Linux/macOS  \n./test.sh\n```\n\n### Restore Dependencies\n```bash\n# Windows\n.\\Restore.cmd\n\n# Linux/macOS\n./restore.sh\n```\n\n## Coding Guidelines\n\n### C# Code Style\n\n1. **File Headers:** All C# files must include the .NET Foundation license header:\n   ```csharp\n   // Licensed to the .NET Foundation under one or more agreements.\n   // The .NET Foundation licenses this file to you under the MIT license.\n   ```\n\n2. **Language Version:** Use `Latest` C# language features\n\n3. **Code Style Preferences:**\n   - Do NOT use `var` - use explicit types\n   - Prefer explicit types for locals, parameters, and member access\n   - Use `this.` qualification: NO (avoid using `this.` unless necessary)\n   - Expression-bodied members: Use for properties, accessors, indexers, lambdas\n   - Expression-bodied members: DO NOT use for methods, constructors, operators\n   - Pattern matching: Prefer pattern matching over `as` with null checks\n   - Null-checking: Use null-conditional operators and null-coalescing\n   - Using directives: Place outside namespace\n   - Namespace style: Use block-scoped namespaces (not file-scoped)\n   - Braces: Always use braces even for single-line blocks\n\n4. **Modifier Order:**\n   ```\n   public, private, protected, internal, static, extern, new, virtual, \n   abstract, sealed, override, readonly, unsafe, volatile, async\n   ```\n\n5. **Documentation:** Generate XML documentation files for all projects\n\n6. **Warnings:** Treat all warnings as errors (`TreatWarningsAsErrors=true`)\n\n7. **Code Style Enforcement:** Code style rules are enforced during build (`EnforceCodeStyleInBuild=true`)\n\n### Formatting\n\n- **Indentation:** 4 spaces (2 spaces for XML/YAML/JSON config files)\n- **Line Endings:** Insert final newline\n- **Trailing Whitespace:** Trim trailing whitespace\n- **C++ Code:** Use Allman brace style\n\n### Testing\n\n- All test projects are in `src/Tests/`\n- Use xUnit for unit tests\n- Test project naming: `<Component>.UnitTests` or `<Component>.IntegrationTests`\n- Always add tests when adding new features\n- Start with a failing test when fixing bugs\n\n## Security Considerations\n\n1. **Authentication:** dotnet-monitor supports API Key authentication (recommended) and Windows authentication\n2. **Sensitive Data:** Never commit secrets or API keys to source code\n3. **Security Documentation:** See `documentation/security-considerations.md` for security topics\n\n## Pull Request Process\n\n1. Create an issue for non-trivial changes\n2. Fork the repository and create a feature branch from `main`\n3. Make focused, minimal changes\n4. Add tests for new features or bug fixes\n5. Ensure builds are clean and all tests pass\n6. Sign the .NET Foundation CLA (automated on first PR)\n7. Wait for review from Microsoft team members\n8. Address feedback and iterate\n\n## Key Configuration Files\n\n- **`Directory.Build.props`** - Common MSBuild properties for all projects\n- **`Directory.Packages.props`** - Central package version management\n- **`.editorconfig`** - Code style and formatting rules\n- **`global.json`** - .NET SDK version pinning\n- **`NuGet.config`** - NuGet feed configuration\n\n## Common Patterns\n\n1. **Options Pattern:** Use strongly-typed options classes in `Microsoft.Diagnostics.Monitoring.Options`\n2. **Collection Rules:** Implement triggers and actions following existing patterns\n3. **Egress Providers:** Extend `IEgressProvider` for new storage backends\n4. **API Endpoints:** Follow RESTful conventions in `Microsoft.Diagnostics.Monitoring.WebApi`\n5. **Configuration:** Use IConfiguration with JSON/environment variable support\n6. **Learning Paths:** Guidance for developers on the various components in `dotnet-monitor`. It may need to be updated based on product changes.\n\n## Documentation\n\n- User documentation in `documentation/` directory\n- API documentation at `documentation/api/`\n- Configuration schema: `documentation/schema.json`\n- Keep documentation synchronized with code changes\n- Follow existing markdown structure and formatting\n\n## Useful Links\n\n- [Contributing Guidelines](CONTRIBUTING.md)\n- [Building Instructions](documentation/building.md)\n- [Security Policy](SECURITY.md)\n- [API Documentation](documentation/api/README.md)\n- [Configuration Guide](documentation/configuration/README.md)\n</yakaai_skills>"}