From a5725eedb89480667905a1cd7facb1343582ddef Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Mon, 29 Dec 2025 11:08:39 -0800 Subject: [PATCH 1/7] Add appinsights-instrumentation skill --- .../appinsights-instrumentation/ASPNETCORE.md | 29 +++++++++++ skills/appinsights-instrumentation/AUTO.md | 13 +++++ skills/appinsights-instrumentation/NODEJS.md | 28 +++++++++++ skills/appinsights-instrumentation/PYTHON.md | 48 +++++++++++++++++++ skills/appinsights-instrumentation/SKILL.md | 48 +++++++++++++++++++ .../examples/appinsights.bicep | 30 ++++++++++++ .../scripts/appinsights.ps1 | 20 ++++++++ 7 files changed, 216 insertions(+) create mode 100644 skills/appinsights-instrumentation/ASPNETCORE.md create mode 100644 skills/appinsights-instrumentation/AUTO.md create mode 100644 skills/appinsights-instrumentation/NODEJS.md create mode 100644 skills/appinsights-instrumentation/PYTHON.md create mode 100644 skills/appinsights-instrumentation/SKILL.md create mode 100644 skills/appinsights-instrumentation/examples/appinsights.bicep create mode 100644 skills/appinsights-instrumentation/scripts/appinsights.ps1 diff --git a/skills/appinsights-instrumentation/ASPNETCORE.md b/skills/appinsights-instrumentation/ASPNETCORE.md new file mode 100644 index 00000000..6f0caa38 --- /dev/null +++ b/skills/appinsights-instrumentation/ASPNETCORE.md @@ -0,0 +1,29 @@ +## Modify code + +Make these necessary changes to the app. + +- Install client library +``` +dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore +``` + +- Configure the app to use Azure Monitor +An AspNetCore app typically has a Program.cs file that "builds" the app. Find this file and apply these changes. + - Add `using Azure.Monitor.OpenTelemetry.AspNetCore;` at the top + - Before calling `builder.Build()`, add this line `builder.Services.AddOpenTelemetry().UseAzureMonitor();`. + +> Note: since we modified the code of the app, the app needs to be deployed to take effect. + +## Configure App Insights connection string + +The App Insights resource has a connection string. Add the connection string as an environment variable of the running app. You can use Azure CLI to query the connection string of the App Insights resource. See [scripts/appinsights.ps1](scripts/appinsights.ps1) for what Azure CLI command to execute for querying the connection string. + +After getting the connection string, set this environment variable with its value. + +``` +"APPLICATIONINSIGHTS_CONNECTION_STRING={your_application_insights_connection_string}" +``` + +If the app has IaC template such as Bicep or terraform files representing its cloud instance, this environment variable should be added to the IaC template to be applied in each deployment. Otherwise, use Azure CLI to manually apply the environment variable to the cloud instance of the app. See [scripts/appinsights.ps1](scripts/appinsights.ps1) for what Azure CLI command to execute for setting this environment variable. + +> Important: Don't modify appsettings.json. It was a deprecated way to configure App Insights. The environment variable is the new recommended way. diff --git a/skills/appinsights-instrumentation/AUTO.md b/skills/appinsights-instrumentation/AUTO.md new file mode 100644 index 00000000..81d9f9e4 --- /dev/null +++ b/skills/appinsights-instrumentation/AUTO.md @@ -0,0 +1,13 @@ +# Auto-instrument app + +Use Azure Portal to auto-instrument a webapp hosted in Azure App Service for App Insights without making any code changes. Only the following types of app can be auto-instrumented. See [supported environments and resource providers](https://learn.microsoft.com/azure/azure-monitor/app/codeless-overview#supported-environments-languages-and-resource-providers). + +- AspNetCore app hosted in Azure App Service +- Node.js app hosted in Azure App Service + +Construct a url to bring the user to the Application Insights blade in Azure Portal for the App Service App. +``` +https://portal.azure.com/#resource/subscriptions/{subscription_id}/resourceGroups/{resource_group_name}/providers/Microsoft.Web/sites/{app_service_name}/monitoringSettings +``` + +Use the context or ask the user to get the subscription_id, resource_group_name, and the app_service_name hosting the webapp. diff --git a/skills/appinsights-instrumentation/NODEJS.md b/skills/appinsights-instrumentation/NODEJS.md new file mode 100644 index 00000000..d67299dd --- /dev/null +++ b/skills/appinsights-instrumentation/NODEJS.md @@ -0,0 +1,28 @@ +## Modify code + +Make these necessary changes to the app. + +- Install client library +``` +npm install @azure/monitor-opentelemetry +``` + +- Configure the app to use Azure Monitor +An nodjs app typically has an entry file that is listed as the "main" property in package.json. Find this file and apply these changes in it. + - Require the client library at the top. `const { useAzureMonitor } = require("@azure/monitor-opentelemetry");` + - Call the setup method. `useAzureMonitor();` + +> Note: The setup method should be called as early as possible but it must be after the environment variables are configured since it needs the App Insights connection string from the environment variable. For example, if the app uses dotenv to load environment variables, the setup method should be called after it but before anything else. +> Note: since we modified the code of the app, it needs to be deployed to take effect. + +## Configure App Insights connection string + +The App Insights resource has a connection string. Add the connection string as an environment variable of the running app. You can use Azure CLI to query the connection string of the App Insights resource. See [scripts/appinsights.ps1] for what Azure CLI command to execute for querying the connection string. + +After getting the connection string, set this environment variable with its value. + +``` +"APPLICATIONINSIGHTS_CONNECTION_STRING={your_application_insights_connection_string}" +``` + +If the app has IaC template such as Bicep or terraform files representing its cloud instance, this environment variable should be added to the IaC template to be applied in each deployment. Otherwise, use Azure CLI to manually apply the environment variable to the cloud instance of the app. See what Azure CLI command to execute for setting this environment variable. diff --git a/skills/appinsights-instrumentation/PYTHON.md b/skills/appinsights-instrumentation/PYTHON.md new file mode 100644 index 00000000..98e6fced --- /dev/null +++ b/skills/appinsights-instrumentation/PYTHON.md @@ -0,0 +1,48 @@ +## Modify code + +Make these necessary changes to the app. + +- Install client library +``` +pip install azure-monitor-opentelemetry +``` + +- Configure the app to use Azure Monitor +Python applications send telemtry via the logger class in Python standard library. Create a module that configures and creates a logger that can send telemetry. + +```python +import logging +from azure.monitor.opentelemetry import configure_azure_monitor + +configure_azure_monitor( + logger_name="" +) +logger = logging.getLogger(" Note: since we modified the code of the app, it needs to be deployed to take effect. + +## Configure App Insights connection string + +The App Insights resource has a connection string. Add the connection string as an environment variable of the running app. You can use Azure CLI to query the connection string of the App Insights resource. See [scripts/appinsights.ps1] for what Azure CLI command to execute for querying the connection string. + +After getting the connection string, set this environment variable with its value. + +``` +"APPLICATIONINSIGHTS_CONNECTION_STRING={your_application_insights_connection_string}" +``` + +If the app has IaC template such as Bicep or terraform files representing its cloud instance, this environment variable should be added to the IaC template to be applied in each deployment. Otherwise, use Azure CLI to manually apply the environment variable to the cloud instance of the app. See what Azure CLI command to execute for setting this environment variable. + +## Send data + +Create a logger that is configured to send telemetry. +```python +logger = logging.getLogger("") +logger.setLevel(logging.INFO) +``` + +Then send telemetry events by calling its logging methods. +```python +logger.info("info log") +``` diff --git a/skills/appinsights-instrumentation/SKILL.md b/skills/appinsights-instrumentation/SKILL.md new file mode 100644 index 00000000..8273eebe --- /dev/null +++ b/skills/appinsights-instrumentation/SKILL.md @@ -0,0 +1,48 @@ +--- +name: appinsights-instrumentation +description: Instrument a webapp to send useful telemetry data to Azure App Insights +--- + +# AppInsights instrumentation + +This skill enables sending telemetry data of a webapp to Azure App Insights for better observability of the app's health. + +## When to use this skill + +Use this skill when the user wants to enable telemetry for their webapp. + +## Prerequisites + +The app in the workspace must be one of these kinds + +- An AspNetCore app hosted in Azure +- A NodeJS app hosted in Azure + +## Guidelines + +### Collect context information + +Find out the (programming language, application framework, hosting) tuple of the application the user is trying to add telemetry support in. This determines how the application can be instrumented. Read the source code to make an educated guess. Confirm with the user on anything you don't know. You must always ask the user where the application is hosted (e.g. on a personal computer, in an Azure App Service as code, in an Azure App Service as container, in an Azure Container App, etc.). + +### Prefer auto-instrument if possible + +If the app is a C# AspNetCore app hosted in Azure App Service, use [AUTO.md](AUTO.md) to help user auto-instrument the app. + +### Manually instrument + +Manually instrument the app by creating the AppInsights resource and update the app's code. + +#### Create AppInsights resource + +Use one of the following options that fits the environment. + +- Add AppInsights to existing Bicep template. See [examples/appinsights.bicep](examples/appinsights.bicep) for what to add. This is the best option if there are existing Bicep template files in the workspace. +- Use Azure CLI. See [scripts/create-appinsights.ps1](scripts/create-appinsights.ps1) for what Azure CLI command to execute to create the App Insights resource. + +No matter which option you choose, recommend the user to create the App Insights resource in a meaningful resource group that makes managing resources easier. A good candidate will be the same resource group that contains the resources for the hosted app in Azure. + +#### Modify application code + +- If the app is an AspNetCore app, see [ASPNETCORE.md](ASPNETCORE.md) for how to modify the C# code. +- If the app is a NodeJS app, see [NODEJS.md](NODEJS.md) for how to modify the JavaScript/TypeScript code. +- If the app is a Python app, see [PYTHON.md](PYTHON.md) for how to modify the Python code. diff --git a/skills/appinsights-instrumentation/examples/appinsights.bicep b/skills/appinsights-instrumentation/examples/appinsights.bicep new file mode 100644 index 00000000..192d988c --- /dev/null +++ b/skills/appinsights-instrumentation/examples/appinsights.bicep @@ -0,0 +1,30 @@ +@description('Location for all resources') +param location string = resourceGroup().location + +@description('Name for new Application Insights') +param name string + +// Create Log Analytics Workspace +resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2022-10-01' = { + name: '${name}-workspace' + location: location + properties: { + sku: { + name: 'PerGB2018' + } + retentionInDays: 30 + } +} + +// Create Application Insights +resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = { + name: name + location: location + kind: 'web' + properties: { + Application_Type: 'web' + WorkspaceResourceId: logAnalyticsWorkspace.id + } +} + +output connectionString string = applicationInsights.?properties.ConnectionString diff --git a/skills/appinsights-instrumentation/scripts/appinsights.ps1 b/skills/appinsights-instrumentation/scripts/appinsights.ps1 new file mode 100644 index 00000000..9b70c59f --- /dev/null +++ b/skills/appinsights-instrumentation/scripts/appinsights.ps1 @@ -0,0 +1,20 @@ +# Create App Insights resource (3 steps) +## Add the Application Insights extension +az extension add -n application-insights +## Create a Log Analytics workspace +az monitor log-analytics workspace create --resource-group $resourceGroupName --workspace-name $logAnalyticsWorkspaceName --location $azureRegionName +## Create the Application Insights resource +az monitor app-insights component create --app $applicationInsightsResourceName --location $azureRegionName --resource-group $resourceGroupName --workspace $logAnalyticsWorkspaceName + +# Query connection string of App Insights +az monitor app-insights component show --app $applicationInsightsResourceName --resource-group $resourceGroupName --query connectionString --output tsv + +# Set environment variable of App Service +az webapp config appsettings set --resource-group $resourceGroup --name $appName --settings $key='$value' + +# Set environment variable of Container App +# Or update an existing container app +az containerapp update -n $containerAppName -g $resourceGroupName --set-env-vars $key=$value + +# Set environment variable of Function App +az functionapp config appsettings set --name $functionName --resource-group $myResourceGroup --settings $key=$value From c8d5d3ab82e7fad4455cc6d25b86bc989f7f01a2 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Mon, 29 Dec 2025 11:14:05 -0800 Subject: [PATCH 2/7] Add license --- .../appinsights-instrumentation/LICENSE.txt | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 skills/appinsights-instrumentation/LICENSE.txt diff --git a/skills/appinsights-instrumentation/LICENSE.txt b/skills/appinsights-instrumentation/LICENSE.txt new file mode 100644 index 00000000..8dfb11f8 --- /dev/null +++ b/skills/appinsights-instrumentation/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright 2025 (c) Microsoft Corporation. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE From e12591994c0afb4918f2f99406d287da6c37fbe2 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Mon, 29 Dec 2025 11:17:44 -0800 Subject: [PATCH 3/7] Update README.skills.md --- docs/README.skills.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/README.skills.md b/docs/README.skills.md index 53e9d296..57e30371 100644 --- a/docs/README.skills.md +++ b/docs/README.skills.md @@ -24,4 +24,5 @@ Skills differ from other primitives by supporting bundled assets (scripts, code | ---- | ----------- | -------------- | | [azure-role-selector](../skills/azure-role-selector/SKILL.md) | When user is asking for guidance for which role to assign to an identity given desired permissions, this agent helps them understand the role that will meet the requirements with least privilege access and how to apply that role. | `LICENSE.txt` | | [snowflake-semanticview](../skills/snowflake-semanticview/SKILL.md) | Create, alter, and validate Snowflake semantic views using Snowflake CLI (snow). Use when asked to build or troubleshoot semantic views/semantic layer definitions with CREATE/ALTER SEMANTIC VIEW, to validate semantic-view DDL against Snowflake via CLI, or to guide Snowflake CLI installation and connection setup. | None | +| [appinsights-instrumentation](../skills/appinsights-instrumentation/SKILL.md) | Instrument a webapp to send useful telemetry data to Azure App Insights | `ASPNETCORE.md`
`AUTO.md`
`LICENSE.txt`
`NODEJS.md`
`PYTHON.md`
`examples\appinsights.bicep`
`scripts\appinsights.ps1` | | [webapp-testing](../skills/webapp-testing/SKILL.md) | Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs. | `test-helper.js` | From a5a365b19bb92fe5214b70775c2696f6ccfbbceb Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Mon, 29 Dec 2025 11:35:34 -0800 Subject: [PATCH 4/7] Address copilot feedback --- skills/appinsights-instrumentation/ASPNETCORE.md | 2 +- skills/appinsights-instrumentation/AUTO.md | 2 +- skills/appinsights-instrumentation/NODEJS.md | 2 +- skills/appinsights-instrumentation/PYTHON.md | 4 ++-- skills/appinsights-instrumentation/SKILL.md | 14 +++++++------- .../examples/appinsights.bicep | 2 +- .../scripts/appinsights.ps1 | 4 ++-- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/skills/appinsights-instrumentation/ASPNETCORE.md b/skills/appinsights-instrumentation/ASPNETCORE.md index 6f0caa38..6a61bc46 100644 --- a/skills/appinsights-instrumentation/ASPNETCORE.md +++ b/skills/appinsights-instrumentation/ASPNETCORE.md @@ -8,7 +8,7 @@ dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore ``` - Configure the app to use Azure Monitor -An AspNetCore app typically has a Program.cs file that "builds" the app. Find this file and apply these changes. +An ASP.NET Core app typically has a Program.cs file that "builds" the app. Find this file and apply these changes. - Add `using Azure.Monitor.OpenTelemetry.AspNetCore;` at the top - Before calling `builder.Build()`, add this line `builder.Services.AddOpenTelemetry().UseAzureMonitor();`. diff --git a/skills/appinsights-instrumentation/AUTO.md b/skills/appinsights-instrumentation/AUTO.md index 81d9f9e4..40890f42 100644 --- a/skills/appinsights-instrumentation/AUTO.md +++ b/skills/appinsights-instrumentation/AUTO.md @@ -2,7 +2,7 @@ Use Azure Portal to auto-instrument a webapp hosted in Azure App Service for App Insights without making any code changes. Only the following types of app can be auto-instrumented. See [supported environments and resource providers](https://learn.microsoft.com/azure/azure-monitor/app/codeless-overview#supported-environments-languages-and-resource-providers). -- AspNetCore app hosted in Azure App Service +- ASP.NET Core app hosted in Azure App Service - Node.js app hosted in Azure App Service Construct a url to bring the user to the Application Insights blade in Azure Portal for the App Service App. diff --git a/skills/appinsights-instrumentation/NODEJS.md b/skills/appinsights-instrumentation/NODEJS.md index d67299dd..f67690fb 100644 --- a/skills/appinsights-instrumentation/NODEJS.md +++ b/skills/appinsights-instrumentation/NODEJS.md @@ -8,7 +8,7 @@ npm install @azure/monitor-opentelemetry ``` - Configure the app to use Azure Monitor -An nodjs app typically has an entry file that is listed as the "main" property in package.json. Find this file and apply these changes in it. +A Node.js app typically has an entry file that is listed as the "main" property in package.json. Find this file and apply these changes in it. - Require the client library at the top. `const { useAzureMonitor } = require("@azure/monitor-opentelemetry");` - Call the setup method. `useAzureMonitor();` diff --git a/skills/appinsights-instrumentation/PYTHON.md b/skills/appinsights-instrumentation/PYTHON.md index 98e6fced..3bb44c4b 100644 --- a/skills/appinsights-instrumentation/PYTHON.md +++ b/skills/appinsights-instrumentation/PYTHON.md @@ -8,7 +8,7 @@ pip install azure-monitor-opentelemetry ``` - Configure the app to use Azure Monitor -Python applications send telemtry via the logger class in Python standard library. Create a module that configures and creates a logger that can send telemetry. +Python applications send telemetry via the logger class in Python standard library. Create a module that configures and creates a logger that can send telemetry. ```python import logging @@ -17,7 +17,7 @@ from azure.monitor.opentelemetry import configure_azure_monitor configure_azure_monitor( logger_name="" ) -logger = logging.getLogger("") ``` > Note: since we modified the code of the app, it needs to be deployed to take effect. diff --git a/skills/appinsights-instrumentation/SKILL.md b/skills/appinsights-instrumentation/SKILL.md index 8273eebe..8db62114 100644 --- a/skills/appinsights-instrumentation/SKILL.md +++ b/skills/appinsights-instrumentation/SKILL.md @@ -1,6 +1,6 @@ --- name: appinsights-instrumentation -description: Instrument a webapp to send useful telemetry data to Azure App Insights +description: 'Instrument a webapp to send useful telemetry data to Azure App Insights' --- # AppInsights instrumentation @@ -15,8 +15,8 @@ Use this skill when the user wants to enable telemetry for their webapp. The app in the workspace must be one of these kinds -- An AspNetCore app hosted in Azure -- A NodeJS app hosted in Azure +- An ASP.NET Core app hosted in Azure +- A Node.js app hosted in Azure ## Guidelines @@ -26,7 +26,7 @@ Find out the (programming language, application framework, hosting) tuple of the ### Prefer auto-instrument if possible -If the app is a C# AspNetCore app hosted in Azure App Service, use [AUTO.md](AUTO.md) to help user auto-instrument the app. +If the app is a C# ASP.NET Core app hosted in Azure App Service, use [AUTO.md](AUTO.md) to help user auto-instrument the app. ### Manually instrument @@ -37,12 +37,12 @@ Manually instrument the app by creating the AppInsights resource and update the Use one of the following options that fits the environment. - Add AppInsights to existing Bicep template. See [examples/appinsights.bicep](examples/appinsights.bicep) for what to add. This is the best option if there are existing Bicep template files in the workspace. -- Use Azure CLI. See [scripts/create-appinsights.ps1](scripts/create-appinsights.ps1) for what Azure CLI command to execute to create the App Insights resource. +- Use Azure CLI. See [scripts/appinsights.ps1](scripts/appinsights.ps1) for what Azure CLI command to execute to create the App Insights resource. No matter which option you choose, recommend the user to create the App Insights resource in a meaningful resource group that makes managing resources easier. A good candidate will be the same resource group that contains the resources for the hosted app in Azure. #### Modify application code -- If the app is an AspNetCore app, see [ASPNETCORE.md](ASPNETCORE.md) for how to modify the C# code. -- If the app is a NodeJS app, see [NODEJS.md](NODEJS.md) for how to modify the JavaScript/TypeScript code. +- If the app is an ASP.NET Core app, see [ASPNETCORE.md](ASPNETCORE.md) for how to modify the C# code. +- If the app is a Node.js app, see [NODEJS.md](NODEJS.md) for how to modify the JavaScript/TypeScript code. - If the app is a Python app, see [PYTHON.md](PYTHON.md) for how to modify the Python code. diff --git a/skills/appinsights-instrumentation/examples/appinsights.bicep b/skills/appinsights-instrumentation/examples/appinsights.bicep index 192d988c..e60ea800 100644 --- a/skills/appinsights-instrumentation/examples/appinsights.bicep +++ b/skills/appinsights-instrumentation/examples/appinsights.bicep @@ -27,4 +27,4 @@ resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = { } } -output connectionString string = applicationInsights.?properties.ConnectionString +output connectionString string = applicationInsights.properties.ConnectionString diff --git a/skills/appinsights-instrumentation/scripts/appinsights.ps1 b/skills/appinsights-instrumentation/scripts/appinsights.ps1 index 9b70c59f..e014cf0c 100644 --- a/skills/appinsights-instrumentation/scripts/appinsights.ps1 +++ b/skills/appinsights-instrumentation/scripts/appinsights.ps1 @@ -10,11 +10,11 @@ az monitor app-insights component create --app $applicationInsightsResourceName az monitor app-insights component show --app $applicationInsightsResourceName --resource-group $resourceGroupName --query connectionString --output tsv # Set environment variable of App Service -az webapp config appsettings set --resource-group $resourceGroup --name $appName --settings $key='$value' +az webapp config appsettings set --resource-group $resourceGroupName --name $appName --settings $key=$value # Set environment variable of Container App # Or update an existing container app az containerapp update -n $containerAppName -g $resourceGroupName --set-env-vars $key=$value # Set environment variable of Function App -az functionapp config appsettings set --name $functionName --resource-group $myResourceGroup --settings $key=$value +az functionapp config appsettings set --name $functionName --resource-group $ResourceGroupName --settings $key=$value From 284d97fa194f5224792b0673c512b0667b83a3c6 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Mon, 29 Dec 2025 11:41:22 -0800 Subject: [PATCH 5/7] Use forward slash in file path --- docs/README.skills.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.skills.md b/docs/README.skills.md index 57e30371..001debc1 100644 --- a/docs/README.skills.md +++ b/docs/README.skills.md @@ -24,5 +24,5 @@ Skills differ from other primitives by supporting bundled assets (scripts, code | ---- | ----------- | -------------- | | [azure-role-selector](../skills/azure-role-selector/SKILL.md) | When user is asking for guidance for which role to assign to an identity given desired permissions, this agent helps them understand the role that will meet the requirements with least privilege access and how to apply that role. | `LICENSE.txt` | | [snowflake-semanticview](../skills/snowflake-semanticview/SKILL.md) | Create, alter, and validate Snowflake semantic views using Snowflake CLI (snow). Use when asked to build or troubleshoot semantic views/semantic layer definitions with CREATE/ALTER SEMANTIC VIEW, to validate semantic-view DDL against Snowflake via CLI, or to guide Snowflake CLI installation and connection setup. | None | -| [appinsights-instrumentation](../skills/appinsights-instrumentation/SKILL.md) | Instrument a webapp to send useful telemetry data to Azure App Insights | `ASPNETCORE.md`
`AUTO.md`
`LICENSE.txt`
`NODEJS.md`
`PYTHON.md`
`examples\appinsights.bicep`
`scripts\appinsights.ps1` | +| [appinsights-instrumentation](../skills/appinsights-instrumentation/SKILL.md) | Instrument a webapp to send useful telemetry data to Azure App Insights | `ASPNETCORE.md`
`AUTO.md`
`LICENSE.txt`
`NODEJS.md`
`PYTHON.md`
`examples/appinsights.bicep`
`scripts/appinsights.ps1` | | [webapp-testing](../skills/webapp-testing/SKILL.md) | Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs. | `test-helper.js` | From 6641fb8c7395701195d0a6dbb34dbc729f8ae7bc Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Fri, 9 Jan 2026 11:25:32 -0800 Subject: [PATCH 6/7] Move language specific instructions to sub references folder --- skills/appinsights-instrumentation/SKILL.md | 8 ++++---- .../{ => references}/ASPNETCORE.md | 0 .../appinsights-instrumentation/{ => references}/AUTO.md | 0 .../{ => references}/NODEJS.md | 0 .../{ => references}/PYTHON.md | 0 5 files changed, 4 insertions(+), 4 deletions(-) rename skills/appinsights-instrumentation/{ => references}/ASPNETCORE.md (100%) rename skills/appinsights-instrumentation/{ => references}/AUTO.md (100%) rename skills/appinsights-instrumentation/{ => references}/NODEJS.md (100%) rename skills/appinsights-instrumentation/{ => references}/PYTHON.md (100%) diff --git a/skills/appinsights-instrumentation/SKILL.md b/skills/appinsights-instrumentation/SKILL.md index 8db62114..81056fdc 100644 --- a/skills/appinsights-instrumentation/SKILL.md +++ b/skills/appinsights-instrumentation/SKILL.md @@ -26,7 +26,7 @@ Find out the (programming language, application framework, hosting) tuple of the ### Prefer auto-instrument if possible -If the app is a C# ASP.NET Core app hosted in Azure App Service, use [AUTO.md](AUTO.md) to help user auto-instrument the app. +If the app is a C# ASP.NET Core app hosted in Azure App Service, use [AUTO guide](references/AUTO.md) to help user auto-instrument the app. ### Manually instrument @@ -43,6 +43,6 @@ No matter which option you choose, recommend the user to create the App Insights #### Modify application code -- If the app is an ASP.NET Core app, see [ASPNETCORE.md](ASPNETCORE.md) for how to modify the C# code. -- If the app is a Node.js app, see [NODEJS.md](NODEJS.md) for how to modify the JavaScript/TypeScript code. -- If the app is a Python app, see [PYTHON.md](PYTHON.md) for how to modify the Python code. +- If the app is an ASP.NET Core app, see [ASPNETCORE guide](references/ASPNETCORE.md) for how to modify the C# code. +- If the app is a Node.js app, see [NODEJS guide](references/NODEJS.md) for how to modify the JavaScript/TypeScript code. +- If the app is a Python app, see [PYTHON guide](references/PYTHON.md) for how to modify the Python code. diff --git a/skills/appinsights-instrumentation/ASPNETCORE.md b/skills/appinsights-instrumentation/references/ASPNETCORE.md similarity index 100% rename from skills/appinsights-instrumentation/ASPNETCORE.md rename to skills/appinsights-instrumentation/references/ASPNETCORE.md diff --git a/skills/appinsights-instrumentation/AUTO.md b/skills/appinsights-instrumentation/references/AUTO.md similarity index 100% rename from skills/appinsights-instrumentation/AUTO.md rename to skills/appinsights-instrumentation/references/AUTO.md diff --git a/skills/appinsights-instrumentation/NODEJS.md b/skills/appinsights-instrumentation/references/NODEJS.md similarity index 100% rename from skills/appinsights-instrumentation/NODEJS.md rename to skills/appinsights-instrumentation/references/NODEJS.md diff --git a/skills/appinsights-instrumentation/PYTHON.md b/skills/appinsights-instrumentation/references/PYTHON.md similarity index 100% rename from skills/appinsights-instrumentation/PYTHON.md rename to skills/appinsights-instrumentation/references/PYTHON.md From 33d4dbb8120170eebdec714e229689f4360e6726 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Fri, 9 Jan 2026 11:27:15 -0800 Subject: [PATCH 7/7] Update README.skills.md --- docs/README.skills.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.skills.md b/docs/README.skills.md index 001debc1..421d14ff 100644 --- a/docs/README.skills.md +++ b/docs/README.skills.md @@ -22,7 +22,7 @@ Skills differ from other primitives by supporting bundled assets (scripts, code | Name | Description | Bundled Assets | | ---- | ----------- | -------------- | +| [appinsights-instrumentation](../skills/appinsights-instrumentation/SKILL.md) | Instrument a webapp to send useful telemetry data to Azure App Insights | `LICENSE.txt`
`examples/appinsights.bicep`
`references/ASPNETCORE.md`
`references/AUTO.md`
`references/NODEJS.md`
`references/PYTHON.md`
`scripts/appinsights.ps1` | | [azure-role-selector](../skills/azure-role-selector/SKILL.md) | When user is asking for guidance for which role to assign to an identity given desired permissions, this agent helps them understand the role that will meet the requirements with least privilege access and how to apply that role. | `LICENSE.txt` | | [snowflake-semanticview](../skills/snowflake-semanticview/SKILL.md) | Create, alter, and validate Snowflake semantic views using Snowflake CLI (snow). Use when asked to build or troubleshoot semantic views/semantic layer definitions with CREATE/ALTER SEMANTIC VIEW, to validate semantic-view DDL against Snowflake via CLI, or to guide Snowflake CLI installation and connection setup. | None | -| [appinsights-instrumentation](../skills/appinsights-instrumentation/SKILL.md) | Instrument a webapp to send useful telemetry data to Azure App Insights | `ASPNETCORE.md`
`AUTO.md`
`LICENSE.txt`
`NODEJS.md`
`PYTHON.md`
`examples/appinsights.bicep`
`scripts/appinsights.ps1` | | [webapp-testing](../skills/webapp-testing/SKILL.md) | Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs. | `test-helper.js` |