Skip to content

Commit d8af35d

Browse files
authored
Merge branch 'main' into sync-eng-common-apiviewFailureUpdate-16323
2 parents af301a7 + a07b229 commit d8af35d

2,478 files changed

Lines changed: 69324 additions & 31086 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/skills/azsdk-common-apiview-feedback-resolution/evals/eval.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ scoring:
2020
stimuli:
2121
- name: apiview-basic-001
2222
prompt: "My Python SDK PR has APIView comments that I need to address. Can you help me retrieve and resolve them?"
23+
environment:
24+
# Load the real skill so the executor can route to it and call its tools.
25+
skills:
26+
- ..
2327
graders:
2428
- type: tool-calls
2529
config:

.github/skills/azsdk-common-apiview-feedback-resolution/evals/trigger.eval.yaml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,79 +20,118 @@ scoring:
2020
stimuli:
2121
- name: trigger-resolve-apiview-feedback-on-my-pr
2222
prompt: "resolve APIView feedback on my PR"
23+
environment:
24+
skills:
25+
- ..
2326
graders:
2427
- type: skill-invocation
2528
config:
2629
required: ["azsdk-common-apiview-feedback-resolution"]
2730
- name: trigger-fix-apiview-comments
2831
prompt: "fix APIView comments"
32+
environment:
33+
skills:
34+
- ..
2935
graders:
3036
- type: skill-invocation
3137
config:
3238
required: ["azsdk-common-apiview-feedback-resolution"]
3339
- name: trigger-address-api-review-feedback
3440
prompt: "address API review feedback"
41+
environment:
42+
skills:
43+
- ..
3544
graders:
3645
- type: skill-invocation
3746
config:
3847
required: ["azsdk-common-apiview-feedback-resolution"]
3948
- name: trigger-apiview-shows-issues-with-my-sdk
4049
prompt: "APIView shows issues with my SDK"
50+
environment:
51+
skills:
52+
- ..
4153
graders:
4254
- type: skill-invocation
4355
config:
4456
required: ["azsdk-common-apiview-feedback-resolution"]
4557
- name: trigger-help-me-with-apiview-suggestions
4658
prompt: "help me with APIView suggestions"
59+
environment:
60+
skills:
61+
- ..
4762
graders:
4863
- type: skill-invocation
4964
config:
5065
required: ["azsdk-common-apiview-feedback-resolution"]
5166
- name: trigger-fix-comments-apiview-url-1
5267
prompt: "Help me fix these comments: https://spa.apiview.dev/review/0qw98r9qwur9q823r?activeApiRevisionId=afiq948tquajf8jq9f"
68+
environment:
69+
skills:
70+
- ..
5371
graders:
5472
- type: skill-invocation
5573
config:
5674
required: ["azsdk-common-apiview-feedback-resolution"]
5775
- name: trigger-address-feedback-apiview-url-2
5876
prompt: "Address this feedback: https://spa.apiview.dev/review/akldfja9qjta498tjaejg0?activeApiRevisionId=odiufa9sefighj98439"
77+
environment:
78+
skills:
79+
- ..
5980
graders:
6081
- type: skill-invocation
6182
config:
6283
required: ["azsdk-common-apiview-feedback-resolution"]
6384
- name: trigger-resolve-comments-staging-url
6485
prompt: "Resolve these comments: https://apiviewstagingtest.com/review/akldfja9qjta498tjaejg0?activeApiRevisionId=odiufa9sefighj98439"
86+
environment:
87+
skills:
88+
- ..
6589
graders:
6690
- type: skill-invocation
6791
config:
6892
required: ["azsdk-common-apiview-feedback-resolution"]
6993

7094
- name: anti-trigger-deploy-my-azure-function
7195
prompt: "deploy my Azure Function"
96+
environment:
97+
skills:
98+
- ..
7299
graders:
73100
- type: skill-invocation
74101
config:
75102
disallowed: ["azsdk-common-apiview-feedback-resolution"]
76103
- name: anti-trigger-fix-my-pipeline-build-error
77104
prompt: "fix my pipeline build error"
105+
environment:
106+
skills:
107+
- ..
78108
graders:
79109
- type: skill-invocation
80110
config:
81111
disallowed: ["azsdk-common-apiview-feedback-resolution"]
82112
- name: anti-trigger-create-a-new-typespec-definition
83113
prompt: "create a new TypeSpec definition"
114+
environment:
115+
skills:
116+
- ..
84117
graders:
85118
- type: skill-invocation
86119
config:
87120
disallowed: ["azsdk-common-apiview-feedback-resolution"]
88121
- name: anti-trigger-how-do-i-release-an-sdk-package
89122
prompt: "how do I release an SDK package"
123+
environment:
124+
skills:
125+
- ..
90126
graders:
91127
- type: skill-invocation
92128
config:
93129
disallowed: ["azsdk-common-apiview-feedback-resolution"]
94130
- name: anti-trigger-set-up-azure-storage-account
95131
prompt: "set up Azure Storage account"
132+
environment:
133+
skills:
134+
- ..
96135
graders:
97136
- type: skill-invocation
98137
config:

.github/skills/azsdk-common-generate-sdk-locally/SKILL.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ DO NOT USE FOR: publishing to package registries, CI pipeline configuration, API
2020

2121
## Rules
2222

23+
- This skill generates a **single language** SDK **locally**. If the user asks to "generate SDK for **all languages**", to generate **without a local clone**, or wants SDK **pull requests created** for them (release plan / pipeline flow), do **not** generate locally — call `azure-sdk-mcp:azsdk_run_generate_sdk` instead. It runs the SDK generation pipeline for each language and produces the SDK pull requests.
24+
- Never use `azure-sdk-mcp:azsdk_get_sdk_pull_request_link` or `azure-sdk-mcp:azsdk_get_pull_request` to _generate_ an SDK; those only retrieve links for SDKs that were already generated.
2325
- Requires the `azure-sdk-mcp` server for the MCP workflow; without MCP, use `npm exec --prefix eng/common/tsp-client -- tsp-client` CLI.
2426
- Verify the target language repo and the correct TypeSpec configuration file before generation.
2527
- After generation or customization, run the check and test steps before updating metadata or finalizing changes.
@@ -83,6 +85,7 @@ Prerequisites: azure-sdk-mcp server must be running. Without MCP, use `npx tsp-c
8385

8486
## Troubleshooting
8587

88+
- For "generate SDK for all languages", pipeline-based generation, or when no local SDK clone exists, call `azure-sdk-mcp:azsdk_run_generate_sdk` instead of the local generate flow, and never substitute `azure-sdk-mcp:azsdk_get_sdk_pull_request_link` / `azure-sdk-mcp:azsdk_get_pull_request` for generation.
8689
- Run `azure-sdk-mcp:azsdk_verify_setup` to confirm MCP and tools.
8790
- If build fails with type conflicts, breaking changes, analyzer errors, or customization drift, use `azure-sdk-mcp:azsdk_customized_code_update` to apply customizations.
8891
- The customization tool uses a two-phase approach: TypeSpec decorators first (Phase A), then code repairs if needed (Phase B).

.github/skills/azsdk-common-generate-sdk-locally/evals/eval.yaml

Lines changed: 43 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ scoring:
2020
stimuli:
2121
- name: sdk-local-basic-001
2222
prompt: "Generate the Python SDK locally from my TypeSpec project at specification/compute/resource-manager/Microsoft.Compute/ComputeRP/tspconfig.yaml. My azure-sdk-for-python repo is at ~/repos/azure-sdk-for-python."
23+
environment:
24+
skills:
25+
- ..
2326
graders:
2427
- type: tool-calls
2528
config:
@@ -29,6 +32,9 @@ stimuli:
2932

3033
- name: sdk-local-negative-001
3134
prompt: "I want to use the Azure DevOps pipeline to generate SDKs automatically and have PRs created for me. I don't want to set up local tools."
35+
environment:
36+
skills:
37+
- ..
3238
graders:
3339
- type: tool-calls
3440
config:
@@ -37,7 +43,10 @@ stimuli:
3743
- name: azure-sdk-mcp-azsdk_package_generate_code
3844

3945
- name: sdk-local-full-001
40-
prompt: "Generate the Java SDK locally, build it, run tests, and prepare it for a PR. Use the SDK generation tools to do the full workflow."
46+
prompt: "Generate the Java SDK locally for the compute service, build it, run tests, and prepare it for a PR. My azure-sdk-for-java repo is at ~/repos/azure-sdk-for-java and the package is sdk/compute/azure-resourcemanager-compute. Bump the version to 1.2.0-beta.1 (beta, release date 2026-07-16). Use the SDK generation tools to do the full workflow."
47+
environment:
48+
skills:
49+
- ..
4150
graders:
4251
- type: tool-calls
4352
config:
@@ -53,6 +62,9 @@ stimuli:
5362

5463
- name: sdk-local-edge-001
5564
prompt: "I generated the .NET SDK locally but the build is failing with compilation errors. The error says a type name conflicts with a reserved keyword. Use the customization tools to fix it."
65+
environment:
66+
skills:
67+
- ..
5668
graders:
5769
- type: output-not-contains
5870
config:
@@ -63,7 +75,10 @@ stimuli:
6375
- name: azure-sdk-mcp-azsdk_customized_code_update
6476

6577
- name: sdk-local-breaking-changes-001
66-
prompt: "After regenerating the Java SDK, the build is failing because the service team renamed 'displayName' to 'name' in the TypeSpec. Our customization class still references getField('displayName'). Use the SDK customization tools to fix this breaking change."
78+
prompt: "After regenerating the Java SDK package at sdk/compute/azure-resourcemanager-compute (~/repos/azure-sdk-for-java), the build is failing because the service team renamed 'displayName' to 'name' in the TypeSpec. Our customization class still references getField('displayName'). Use the SDK customization tools to fix this breaking change."
79+
environment:
80+
skills:
81+
- ..
6782
graders:
6883
- type: output-not-contains
6984
config:
@@ -74,7 +89,10 @@ stimuli:
7489
- name: azure-sdk-mcp-azsdk_customized_code_update
7590

7691
- name: sdk-local-customization-001
77-
prompt: "The Java SDK build is failing after regeneration. The error says 'variable operationId is already defined in class AnalyzeOperationDetails'. The service team added operationId to the TypeSpec, but our customization already injects that field. Use the SDK customization tools to resolve this duplicate."
92+
prompt: "The Java SDK package at sdk/compute/azure-resourcemanager-compute (~/repos/azure-sdk-for-java) is failing to build after regeneration. The error says 'variable operationId is already defined in class AnalyzeOperationDetails'. The service team added operationId to the TypeSpec, but our customization already injects that field. Use the SDK customization tools to resolve this duplicate."
93+
environment:
94+
skills:
95+
- ..
7896
graders:
7997
- type: output-not-contains
8098
config:
@@ -85,7 +103,10 @@ stimuli:
85103
- name: azure-sdk-mcp-azsdk_customized_code_update
86104

87105
- name: sdk-local-hide-operation-001
88-
prompt: "Hide the get_create_project_status polling operation from the Python SDK public API. It's an internal operation that shouldn't be exposed to users. Use the SDK customization tools."
106+
prompt: "Hide the get_create_project_status polling operation from the public API of the Python SDK package at sdk/compute/azure-mgmt-compute (~/repos/azure-sdk-for-python). It's an internal operation that shouldn't be exposed to users. Use the SDK customization tools."
107+
environment:
108+
skills:
109+
- ..
89110
graders:
90111
- type: output-not-contains
91112
config:
@@ -96,7 +117,10 @@ stimuli:
96117
- name: azure-sdk-mcp-azsdk_customized_code_update
97118

98119
- name: sdk-local-rename-client-001
99-
prompt: "Rename the AIProjectConnectionEntraIDCredential model to use 'Id' instead of 'ID' in the .NET SDK. This was flagged in API review. Use the SDK customization tools to apply this rename."
120+
prompt: "Rename the AIProjectConnectionEntraIDCredential model to use 'Id' instead of 'ID' in the .NET SDK package at sdk/compute/Azure.ResourceManager.Compute (~/repos/azure-sdk-for-net). This was flagged in API review. Use the SDK customization tools to apply this rename."
121+
environment:
122+
skills:
123+
- ..
100124
graders:
101125
- type: output-not-contains
102126
config:
@@ -108,6 +132,9 @@ stimuli:
108132

109133
- name: sdk-local-update-changelog-001
110134
prompt: "Update the changelog for the Python SDK package at sdk/compute/azure-mgmt-compute."
135+
environment:
136+
skills:
137+
- ..
111138
graders:
112139
- type: output-not-contains
113140
config:
@@ -118,7 +145,10 @@ stimuli:
118145
- name: azure-sdk-mcp-azsdk_package_update_changelog_content
119146

120147
- name: sdk-local-update-metadata-001
121-
prompt: "Update the package metadata for the .NET SDK at sdk/contoso/Azure.ResourceManager.Contoso."
148+
prompt: "Update the package metadata for the .NET SDK package at sdk/compute/Azure.ResourceManager.Compute (~/repos/azure-sdk-for-net)."
149+
environment:
150+
skills:
151+
- ..
122152
graders:
123153
- type: output-not-contains
124154
config:
@@ -129,7 +159,10 @@ stimuli:
129159
- name: azure-sdk-mcp-azsdk_package_update_metadata
130160

131161
- name: sdk-local-update-version-001
132-
prompt: "Update the package version for the Java SDK at sdk/contoso/azure-resourcemanager-contoso."
162+
prompt: "Update the package version for the Java SDK package at sdk/compute/azure-resourcemanager-compute (~/repos/azure-sdk-for-java) to 1.2.0-beta.1, release type beta, release date 2026-07-16."
163+
environment:
164+
skills:
165+
- ..
133166
graders:
134167
- type: output-not-contains
135168
config:
@@ -141,6 +174,9 @@ stimuli:
141174

142175
- name: sdk-local-analyzer-errors-001
143176
prompt: "The .NET SDK build is failing with analyzer errors: AZC0030 says the model name ends with 'Parameters' and AZC0012 says type name 'Tasks' is too generic. Use the SDK customization tools to fix these analyzer errors."
177+
environment:
178+
skills:
179+
- ..
144180
graders:
145181
- type: output-not-contains
146182
config:
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
---
2+
name: azsdk-common-generate-sdk-pipeline
3+
license: MIT
4+
metadata:
5+
version: "1.0.0"
6+
distribution: shared
7+
description: 'Run the Azure SDK generation pipeline for a release plan and create the generated SDK pull requests, for one language or for all languages. **UTILITY SKILL**. USE FOR: "run SDK generation for all languages", "generate SDK for release plan <id>", "generate SDK for release <id>", "pipeline SDK generation", "generate SDK without a local clone", "create SDK pull requests". DO NOT USE FOR: generating a single SDK locally from a local clone (use azsdk-common-generate-sdk-locally), releasing/publishing an already-generated package (use azsdk-common-sdk-release), API design review. INVOKES: azure-sdk-mcp:azsdk_get_release_plan, azure-sdk-mcp:azsdk_run_generate_sdk, azure-sdk-mcp:azsdk_get_sdk_pull_request_link.'
8+
compatibility: "azure-sdk-mcp server, existing release plan work item. Supports .NET, Java, JavaScript, Python, Go"
9+
---
10+
11+
# Generate SDK via Pipeline
12+
13+
This skill runs the Azure SDK generation pipeline for a release plan and produces the generated SDK pull request(s). It is the correct workflow when the user asks to generate SDKs **for all languages**, to generate **for a release plan / release ID**, or to generate **without a local clone** — none of which the local-generation workflow handles.
14+
15+
## Triggers
16+
17+
USE FOR: run SDK generation for all languages, generate SDK for a release plan, generate SDK for a release ID, pipeline SDK generation, generate SDK without a local clone, create SDK pull requests
18+
WHEN: "run SDK generation, run SDK generation for all languages for release plan <id>", "generate SDK for release plan <id>", "generate SDK for release <id>", "pipeline SDK generation", "generate SDK without a local clone"
19+
DO NOT USE FOR: generating a single SDK locally from a local clone (use `azsdk-common-generate-sdk-locally`); releasing or publishing an already-generated package (use `azsdk-common-sdk-release`); API design review
20+
21+
## Rules
22+
23+
- **Always call `azure-sdk-mcp:azsdk_run_generate_sdk`** to generate. Do **not** use `azure-sdk-mcp:azsdk_release_sdk` (that publishes an already-generated package, it does not generate) or `azure-sdk-mcp:azsdk_get_sdk_pull_request_link` / `azure-sdk-mcp:azsdk_get_pull_request` (those only retrieve links) to generate an SDK.
24+
- `azure-sdk-mcp:azsdk_run_generate_sdk` generates **one language per call**. To generate for **all languages**, call it **once per language** the release plan targets.
25+
- A **release plan work item ID (or release plan ID)** is required. `azsdk_run_generate_sdk` **also** requires the **TypeSpec project path** and the **SDK release type** (`beta` or `stable`) as explicit inputs, and it validates them — it does **not** read them from the release plan. First call `azure-sdk-mcp:azsdk_get_release_plan` to obtain the TypeSpec project path, SDK release type, and target languages, then pass those into each generation call along with the work item ID.
26+
- Requires the `azure-sdk-mcp` server; there is no CLI fallback for the pipeline generation workflow.
27+
- Private Preview release plans cannot generate SDKs via the pipeline — only the API spec PR needs to merge. If needed for validation, direct the user to generate locally via `azsdk-common-generate-sdk-locally`.
28+
29+
## MCP Tools
30+
31+
| Tool | Purpose |
32+
| ----------------------------------------------- | -------------------------------------------------------------- |
33+
| `azure-sdk-mcp:azsdk_get_release_plan` | Fetch the release plan to determine target languages / details |
34+
| `azure-sdk-mcp:azsdk_run_generate_sdk` | Run the generation pipeline (once per language) |
35+
| `azure-sdk-mcp:azsdk_get_sdk_pull_request_link` | Retrieve the generated SDK pull request link after generation |
36+
37+
## Steps
38+
39+
1. **Collect release plan** — Get the release plan work item ID (or release plan ID) from the user, then call `azure-sdk-mcp:azsdk_get_release_plan` to fetch it.
40+
2. **Determine languages** — If the user asked for "all languages", determine the languages the release plan targets (e.g. via `azure-sdk-mcp:azsdk_get_release_plan`). Otherwise use the single language requested.
41+
3. **Generate per language** — For each target language, run `azure-sdk-mcp:azsdk_run_generate_sdk` passing the **TypeSpec project path**, the **SDK release type** (`beta` or `stable`), and the **language** taken from the release plan, plus the release plan **work item ID**. These inputs are required and validated — an invalid TypeSpec project path, or a release type other than `beta`/`stable`, fails the run.
42+
4. **Report pull requests** — After each run completes, retrieve and show the generated SDK pull request link with `azure-sdk-mcp:azsdk_get_sdk_pull_request_link`.
43+
44+
## Examples
45+
46+
- "Run SDK generation for all languages for release 12345"
47+
- "Generate the SDK for release plan 12345"
48+
- "Generate the Python and .NET SDKs for release 12345 using the pipeline"
49+
50+
## Troubleshooting
51+
52+
- If the agent tries `azsdk_release_sdk`, get-artifact, or get-service-details tools instead of generating, redirect it to `azure-sdk-mcp:azsdk_run_generate_sdk` — that is the only tool that runs the generation pipeline.
53+
- If the correct tool is not yet available in the session, activate/load the `azure-sdk-mcp` TypeSpec SDK toolset first, then call `azure-sdk-mcp:azsdk_run_generate_sdk`.
54+
- If generation fails with a missing SDK details error, ensure the release plan has SDK details populated for the language before re-running.
55+
- Requires the `azure-sdk-mcp` server. No CLI fallback — prompt the user to configure MCP if unavailable.

0 commit comments

Comments
 (0)