Initial commit
This commit is contained in:
22
.claude-plugin/plugin.json
Normal file
22
.claude-plugin/plugin.json
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"name": "dd-trace-dotnet",
|
||||||
|
"description": "Datadog .NET APM Tracer development plugin with commands and context for the dd-trace-dotnet repository",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"author": {
|
||||||
|
"name": "Lucas Pimentel",
|
||||||
|
"github": "lucaspimentel"
|
||||||
|
},
|
||||||
|
"commands": [
|
||||||
|
"./commands/build-tracer.md",
|
||||||
|
"./commands/check-logs.md",
|
||||||
|
"./commands/check-pr.md",
|
||||||
|
"./commands/create-integration.md",
|
||||||
|
"./commands/find-integration.md",
|
||||||
|
"./commands/review-and-comment.md",
|
||||||
|
"./commands/run-tests.md",
|
||||||
|
"./commands/troubleshoot-ci.md"
|
||||||
|
],
|
||||||
|
"mcp": [
|
||||||
|
"./.mcp.json"
|
||||||
|
]
|
||||||
|
}
|
||||||
12
.mcp.json
Normal file
12
.mcp.json
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"azure-devops-pipelines": {
|
||||||
|
"command": "npx",
|
||||||
|
"args": [
|
||||||
|
"-y",
|
||||||
|
"github:lucaspimentel/azure-devops-mcp",
|
||||||
|
"${AZURE_DEVOPS_ORG:-datadoghq}"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
3
README.md
Normal file
3
README.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# dd-trace-dotnet
|
||||||
|
|
||||||
|
Datadog .NET APM Tracer development plugin with commands and context for the dd-trace-dotnet repository
|
||||||
19
commands/build-tracer.md
Normal file
19
commands/build-tracer.md
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
---
|
||||||
|
description: Build the Datadog .NET tracer
|
||||||
|
---
|
||||||
|
|
||||||
|
Build the Datadog .NET tracer using the Nuke build system.
|
||||||
|
|
||||||
|
Before building:
|
||||||
|
1. Check the current working directory - you should be in the dd-trace-dotnet repository root
|
||||||
|
2. Verify the build will succeed by checking for any obvious issues
|
||||||
|
|
||||||
|
Build options:
|
||||||
|
- Quick build for testing: `dotnet build tracer/src/Datadog.Trace/ -c Release -f net6.0`
|
||||||
|
- Full tracer home build: `.\build.cmd BuildTracerHome` (Windows) or `./build.sh BuildTracerHome` (Linux/macOS)
|
||||||
|
- Clean and build: `.\build.cmd Clean BuildTracerHome`
|
||||||
|
|
||||||
|
After building:
|
||||||
|
- Report the build result (success/failure)
|
||||||
|
- If there are errors, analyze them and suggest fixes
|
||||||
|
- Show the output location if successful
|
||||||
41
commands/check-logs.md
Normal file
41
commands/check-logs.md
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
---
|
||||||
|
description: Check and analyze tracer logs
|
||||||
|
---
|
||||||
|
|
||||||
|
Check and analyze Datadog .NET tracer logs for debugging.
|
||||||
|
|
||||||
|
Log locations:
|
||||||
|
- **Windows**: `%ProgramData%\Datadog .NET Tracer\logs\`
|
||||||
|
- **Linux**: `/var/log/datadog/dotnet/`
|
||||||
|
- **Application logs**: Look for logs in the application directory
|
||||||
|
|
||||||
|
Log files:
|
||||||
|
- **dotnet-tracer-managed-{ProcessName}-{PID}.log** - Managed tracer logs
|
||||||
|
- **dotnet-tracer-native-{ProcessName}-{PID}.log** - Native loader logs
|
||||||
|
- **dotnet-profiler-{ProcessName}-{PID}.log** - Native profiler logs
|
||||||
|
|
||||||
|
Log levels:
|
||||||
|
- ERROR - Errors that prevent functionality
|
||||||
|
- WARN - Potential issues or degraded functionality
|
||||||
|
- INFO - Normal operation information
|
||||||
|
- DEBUG - Detailed debugging information
|
||||||
|
|
||||||
|
Common log patterns to check:
|
||||||
|
1. **Initialization**: "Datadog.Trace.ClrProfiler.Managed.Loader" messages
|
||||||
|
2. **Configuration**: "Configuration" or "Settings" messages
|
||||||
|
3. **Instrumentation**: "Instrumentation" or "CallTarget" messages
|
||||||
|
4. **Errors**: "Error" or "Exception" messages
|
||||||
|
5. **Performance**: Timing or "elapsed" messages
|
||||||
|
|
||||||
|
When analyzing logs:
|
||||||
|
1. Check for initialization errors first
|
||||||
|
2. Verify configuration is loaded correctly
|
||||||
|
3. Look for integration-specific messages
|
||||||
|
4. Identify any errors or warnings
|
||||||
|
5. Check for performance issues (slow initialization, etc.)
|
||||||
|
|
||||||
|
Suggest solutions based on common patterns:
|
||||||
|
- Missing dependencies
|
||||||
|
- Configuration issues
|
||||||
|
- Version mismatches
|
||||||
|
- Permission problems
|
||||||
60
commands/check-pr.md
Normal file
60
commands/check-pr.md
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
---
|
||||||
|
description: Check pull request status and CI results
|
||||||
|
---
|
||||||
|
|
||||||
|
Check pull request status, CI results, and review details.
|
||||||
|
|
||||||
|
GitHub CLI commands:
|
||||||
|
|
||||||
|
1. **List Recent PRs**:
|
||||||
|
```bash
|
||||||
|
gh pr list --repo DataDog/dd-trace-dotnet
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **View PR Details**:
|
||||||
|
```bash
|
||||||
|
gh pr view <pr-number> --repo DataDog/dd-trace-dotnet
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Check PR Status/Checks**:
|
||||||
|
```bash
|
||||||
|
gh pr checks <pr-number> --repo DataDog/dd-trace-dotnet
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **View PR Diff**:
|
||||||
|
```bash
|
||||||
|
gh pr diff <pr-number> --repo DataDog/dd-trace-dotnet
|
||||||
|
```
|
||||||
|
|
||||||
|
Azure DevOps commands:
|
||||||
|
|
||||||
|
1. **List Pipeline Runs**:
|
||||||
|
```bash
|
||||||
|
az pipelines runs list --org https://dev.azure.com/datadoghq --project dd-trace-dotnet
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **View Run Details**:
|
||||||
|
```bash
|
||||||
|
az pipelines runs show --id <run-id> --org https://dev.azure.com/datadoghq --project dd-trace-dotnet
|
||||||
|
```
|
||||||
|
|
||||||
|
What to check:
|
||||||
|
- **Build status**: All builds passing
|
||||||
|
- **Test results**: No failing tests
|
||||||
|
- **Code coverage**: Coverage maintained or improved
|
||||||
|
- **Integration tests**: All integration tests passing
|
||||||
|
- **Smoke tests**: Smoke tests successful
|
||||||
|
- **PR template**: All sections filled out
|
||||||
|
- **Reviews**: Required reviewers approved
|
||||||
|
|
||||||
|
Common issues:
|
||||||
|
- Flaky tests: Check test history for patterns
|
||||||
|
- Timeout: Look for long-running tests
|
||||||
|
- Docker issues: Verify Docker services are healthy
|
||||||
|
- Dependencies: Check for version conflicts
|
||||||
|
|
||||||
|
After checking:
|
||||||
|
- Report status summary (passed/failed/running)
|
||||||
|
- Identify any blocking issues
|
||||||
|
- Suggest fixes for failures
|
||||||
|
- Provide links to detailed results
|
||||||
54
commands/create-integration.md
Normal file
54
commands/create-integration.md
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
---
|
||||||
|
description: Create a new auto-instrumentation integration
|
||||||
|
---
|
||||||
|
|
||||||
|
Create a new auto-instrumentation integration for the Datadog .NET tracer.
|
||||||
|
|
||||||
|
Follow these steps:
|
||||||
|
|
||||||
|
1. **Gather requirements**:
|
||||||
|
- Target library name and NuGet package
|
||||||
|
- Supported version range
|
||||||
|
- Methods to instrument (assembly, type, method signatures)
|
||||||
|
- Integration category (e.g., HTTP, Database, Messaging, etc.)
|
||||||
|
|
||||||
|
2. **Create integration class**:
|
||||||
|
- Location: `tracer/src/Datadog.Trace/ClrProfiler/AutoInstrumentation/<Area>/<Integration>.cs`
|
||||||
|
- Add `[InstrumentMethod]` attribute with:
|
||||||
|
- `AssemblyName`: Target assembly
|
||||||
|
- `TypeName`: Fully qualified type name
|
||||||
|
- `MethodName`: Method to instrument
|
||||||
|
- `ReturnTypeName`: Method return type
|
||||||
|
- `ParameterTypeNames`: Array of parameter types
|
||||||
|
- `MinimumVersion` and `MaximumVersion`: Version range
|
||||||
|
- `IntegrationName`: Unique integration identifier
|
||||||
|
- Implement `OnMethodBegin` (for method entry)
|
||||||
|
- Implement `OnMethodEnd` or `OnAsyncMethodEnd` (for method exit)
|
||||||
|
|
||||||
|
3. **Use duck typing for third-party types**:
|
||||||
|
- Define interface with required properties/methods
|
||||||
|
- Use `where TTarget : IMyInterface, IDuckType` constraint
|
||||||
|
- Or use `target.DuckCast<IMyInterface>()` for runtime casting
|
||||||
|
|
||||||
|
4. **Add integration tests**:
|
||||||
|
- Location: `tracer/test/Datadog.Trace.ClrProfiler.IntegrationTests/<Area>/`
|
||||||
|
- Create sample application: `tracer/test/test-applications/integrations/<Library>/`
|
||||||
|
- Test multiple library versions (package_versions.props)
|
||||||
|
- Verify spans are created with correct tags
|
||||||
|
|
||||||
|
5. **Generate boilerplate**:
|
||||||
|
- Run: `./tracer/build.ps1 RunInstrumentationGenerator`
|
||||||
|
|
||||||
|
6. **Update documentation**:
|
||||||
|
- Add integration to supported libraries list if needed
|
||||||
|
|
||||||
|
Reference files:
|
||||||
|
- `docs/development/AutomaticInstrumentation.md` - Complete integration guide
|
||||||
|
- `docs/development/DuckTyping.md` - Duck typing patterns
|
||||||
|
- `tracer/src/Datadog.Trace/ClrProfiler/AutoInstrumentation/` - Existing integrations
|
||||||
|
|
||||||
|
After creating:
|
||||||
|
- Run the instrumentation generator
|
||||||
|
- Build the tracer
|
||||||
|
- Run integration tests
|
||||||
|
- Verify spans in test output
|
||||||
40
commands/find-integration.md
Normal file
40
commands/find-integration.md
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
---
|
||||||
|
description: Find an existing integration in the tracer
|
||||||
|
---
|
||||||
|
|
||||||
|
Find an existing auto-instrumentation integration in the Datadog .NET tracer.
|
||||||
|
|
||||||
|
Search strategies:
|
||||||
|
1. **By library name**: Search for the library name in integration files
|
||||||
|
2. **By technology**: Look in specific directories under `tracer/src/Datadog.Trace/ClrProfiler/AutoInstrumentation/`
|
||||||
|
3. **By assembly**: Search for `[InstrumentMethod(AssemblyName = "...")]` attributes
|
||||||
|
|
||||||
|
Available integration categories:
|
||||||
|
- **AdoNet** - Database drivers (SqlClient, MySql, Npgsql, etc.)
|
||||||
|
- **AspNet** / **AspNetCore** - ASP.NET web frameworks
|
||||||
|
- **AWS** - AWS SDK integrations
|
||||||
|
- **Azure** - Azure SDK integrations
|
||||||
|
- **Couchbase** - Couchbase client
|
||||||
|
- **Elasticsearch** - Elasticsearch client
|
||||||
|
- **GraphQL** - GraphQL libraries
|
||||||
|
- **Grpc** - gRPC client/server
|
||||||
|
- **Http** - HttpClient and related
|
||||||
|
- **IbmMq** - IBM MQ client
|
||||||
|
- **Kafka** - Kafka client
|
||||||
|
- **Logging** - Logging frameworks (Serilog, NLog, log4net)
|
||||||
|
- **MongoDb** - MongoDB client
|
||||||
|
- **Msmq** - MSMQ messaging
|
||||||
|
- **OpenTelemetry** - OpenTelemetry interop
|
||||||
|
- **Process** - Process execution
|
||||||
|
- **RabbitMQ** - RabbitMQ client
|
||||||
|
- **Redis** - Redis clients (StackExchange.Redis, ServiceStack.Redis)
|
||||||
|
- **Remoting** - .NET Remoting
|
||||||
|
- **Testing** - Test frameworks (xUnit, NUnit, MSTest)
|
||||||
|
- **Wcf** - WCF services
|
||||||
|
|
||||||
|
After finding:
|
||||||
|
- Show the integration file path with line numbers
|
||||||
|
- Display the `[InstrumentMethod]` attributes
|
||||||
|
- Show which methods are instrumented
|
||||||
|
- Identify the supported version range
|
||||||
|
- Link to integration tests if available
|
||||||
5
commands/review-and-comment.md
Normal file
5
commands/review-and-comment.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
description: Review PR and post comments to GitHub
|
||||||
|
---
|
||||||
|
|
||||||
|
Review this PR, and post the comments to GitHub, making it clear that the comments are from Claude Code. Only mention specific issues not general positive feelings, create an over-arching PR review, ensure all comments are associated with that review, and make individual comments at a specific file and line.
|
||||||
29
commands/run-tests.md
Normal file
29
commands/run-tests.md
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
description: Run tests for the .NET tracer
|
||||||
|
---
|
||||||
|
|
||||||
|
Run tests for the Datadog .NET tracer.
|
||||||
|
|
||||||
|
Test types available:
|
||||||
|
1. **Managed unit tests**: `.\build.cmd BuildAndRunManagedUnitTests`
|
||||||
|
2. **Native unit tests**: `.\build.cmd BuildAndRunNativeUnitTests`
|
||||||
|
3. **Windows integration tests**: `.\build.cmd BuildAndRunWindowsIntegrationTests`
|
||||||
|
4. **Linux integration tests**: `.\build.cmd BuildAndRunLinuxIntegrationTests`
|
||||||
|
5. **macOS integration tests**: `.\build.cmd BuildAndRunOsxIntegrationTests`
|
||||||
|
6. **Azure Functions tests**: `.\build.cmd BuildAndRunWindowsAzureFunctionsTests`
|
||||||
|
7. **Smoke tests**: Use `--filter "Category=Smoke"` parameter
|
||||||
|
|
||||||
|
Additional options:
|
||||||
|
- Filter by framework: `--framework net6.0`
|
||||||
|
- Filter by category: `--filter "Category=Smoke"`
|
||||||
|
- Skip Docker tests: Use environment variable to skip tests requiring Docker
|
||||||
|
|
||||||
|
Before running:
|
||||||
|
1. Ask the user which type of tests to run if not specified
|
||||||
|
2. Check if Docker is required and running (for integration tests)
|
||||||
|
3. Verify you're in the correct directory
|
||||||
|
|
||||||
|
After running:
|
||||||
|
- Report test results (passed/failed/skipped counts)
|
||||||
|
- If tests fail, analyze failures and suggest fixes
|
||||||
|
- Show relevant error messages or stack traces
|
||||||
35
commands/troubleshoot-ci.md
Normal file
35
commands/troubleshoot-ci.md
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
---
|
||||||
|
description: Troubleshoot CI/CD pipeline failures
|
||||||
|
---
|
||||||
|
|
||||||
|
Troubleshoot CI/CD pipeline failures in the dd-trace-dotnet repository.
|
||||||
|
|
||||||
|
Available CI systems:
|
||||||
|
1. **Azure DevOps** - Primary CI/CD system (`.azure-pipelines/`)
|
||||||
|
2. **GitHub Actions** - Secondary workflows (`.github/workflows/`)
|
||||||
|
|
||||||
|
Common failure types:
|
||||||
|
- **Build failures**: Check build logs for compilation errors
|
||||||
|
- **Test failures**: Analyze test output for specific failures
|
||||||
|
- **Integration test failures**: Check Docker containers, network issues
|
||||||
|
- **Timeout issues**: Look for hung tests or long-running operations
|
||||||
|
- **Flaky tests**: Identify intermittent failures and patterns
|
||||||
|
|
||||||
|
Steps to troubleshoot:
|
||||||
|
1. **Identify the failed stage**: Build, test, or deployment
|
||||||
|
2. **Review logs**: Look for error messages, stack traces, or warnings
|
||||||
|
3. **Check for known issues**: Search recent PRs or issues
|
||||||
|
4. **Reproduce locally**: Try to run the same build/test locally
|
||||||
|
5. **Use pipeline tools**:
|
||||||
|
- Azure DevOps: `az pipelines runs show --id <run-id>`
|
||||||
|
- GitHub Actions: `gh run view <run-id>`
|
||||||
|
|
||||||
|
Documentation:
|
||||||
|
- See `docs/development/CI/TroubleshootingCIFailures.md` for detailed guidance
|
||||||
|
- See `docs/development/CI/RunSmokeTestsLocally.md` for local testing
|
||||||
|
|
||||||
|
Common solutions:
|
||||||
|
- Restart the pipeline if infrastructure issue
|
||||||
|
- Update test package versions if dependency issue
|
||||||
|
- Increase timeout for slow tests
|
||||||
|
- Fix test data or mocks for integration tests
|
||||||
77
plugin.lock.json
Normal file
77
plugin.lock.json
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
{
|
||||||
|
"$schema": "internal://schemas/plugin.lock.v1.json",
|
||||||
|
"pluginId": "gh:lucaspimentel/claude-code-plugins:plugins/dd-trace-dotnet",
|
||||||
|
"normalized": {
|
||||||
|
"repo": null,
|
||||||
|
"ref": "refs/tags/v20251128.0",
|
||||||
|
"commit": "6a4a1df7e0301244aea9e8302a02443d08176cea",
|
||||||
|
"treeHash": "265d538e37ec7aad4caf24dd26d7082244cd3e0df648fbe1e11a0fb570b85ea4",
|
||||||
|
"generatedAt": "2025-11-28T10:20:22.494600Z",
|
||||||
|
"toolVersion": "publish_plugins.py@0.2.0"
|
||||||
|
},
|
||||||
|
"origin": {
|
||||||
|
"remote": "git@github.com:zhongweili/42plugin-data.git",
|
||||||
|
"branch": "master",
|
||||||
|
"commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390",
|
||||||
|
"repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data"
|
||||||
|
},
|
||||||
|
"manifest": {
|
||||||
|
"name": "dd-trace-dotnet",
|
||||||
|
"description": "Datadog .NET APM Tracer development plugin with commands and context for the dd-trace-dotnet repository",
|
||||||
|
"version": "1.0.0"
|
||||||
|
},
|
||||||
|
"content": {
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"path": ".mcp.json",
|
||||||
|
"sha256": "c4f2274e4b7ad5f3ea85c829d983bfa2662fd3641e7e1af55da7ff7c53961032"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "README.md",
|
||||||
|
"sha256": "2ae8bb68b84d5e1a53a20495292678cfdc3cf4c4c1b43cc46fc61dd81219ce43"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": ".claude-plugin/plugin.json",
|
||||||
|
"sha256": "963d84c8d02b3421021233e20a624c87c45b472233c7955b45bc66e82315648d"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/run-tests.md",
|
||||||
|
"sha256": "7d666eea54824e0637d33ba603888be817de576b0397d0ff0a8abd167c223abf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/check-logs.md",
|
||||||
|
"sha256": "60d7a53d3f4d130e6664000217251a0c31c37bd723e25f12e57e73811ddc8f41"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/find-integration.md",
|
||||||
|
"sha256": "7ca8d93424a79f16c9c08d0693a790490f54cd6aceb5a7dcf3fa67fd73c957d4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/review-and-comment.md",
|
||||||
|
"sha256": "df5f0c39f7b8f7a6c4b3856432e5b9ebe61613dfad8c1a09d163d883d12ba359"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/create-integration.md",
|
||||||
|
"sha256": "cac43391c80999cfdcbfbf74b1c974fe87d4c0ac79220c20a2e0bd0905c39ded"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/troubleshoot-ci.md",
|
||||||
|
"sha256": "e04142c7a250fa0e4acd0433f3e55bf871e149c58372dd45fb7a270b85d4b45a"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/check-pr.md",
|
||||||
|
"sha256": "feb5d4fdc866a6c4abfcf491347df3d99e89f9a9601e6065096c9291528d0d8e"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/build-tracer.md",
|
||||||
|
"sha256": "a116aa23a454140d05057a63eb96332246909a7ca0cd858ddd79f454ec700304"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dirSha256": "265d538e37ec7aad4caf24dd26d7082244cd3e0df648fbe1e11a0fb570b85ea4"
|
||||||
|
},
|
||||||
|
"security": {
|
||||||
|
"scannedAt": null,
|
||||||
|
"scannerVersion": null,
|
||||||
|
"flags": []
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user