diff --git a/.github/skills/azsdk-common-apiview-feedback-resolution/evals/eval.yaml b/.github/skills/azsdk-common-apiview-feedback-resolution/evals/eval.yaml index c45ebd3f579b..17ded780baad 100644 --- a/.github/skills/azsdk-common-apiview-feedback-resolution/evals/eval.yaml +++ b/.github/skills/azsdk-common-apiview-feedback-resolution/evals/eval.yaml @@ -20,6 +20,10 @@ scoring: stimuli: - name: apiview-basic-001 prompt: "My Python SDK PR has APIView comments that I need to address. Can you help me retrieve and resolve them?" + environment: + # Load the real skill so the executor can route to it and call its tools. + skills: + - .. graders: - type: tool-calls config: diff --git a/.github/skills/azsdk-common-apiview-feedback-resolution/evals/trigger.eval.yaml b/.github/skills/azsdk-common-apiview-feedback-resolution/evals/trigger.eval.yaml index 60459af0f5d0..f4f7e50780dc 100644 --- a/.github/skills/azsdk-common-apiview-feedback-resolution/evals/trigger.eval.yaml +++ b/.github/skills/azsdk-common-apiview-feedback-resolution/evals/trigger.eval.yaml @@ -20,48 +20,72 @@ scoring: stimuli: - name: trigger-resolve-apiview-feedback-on-my-pr prompt: "resolve APIView feedback on my PR" + environment: + skills: + - .. graders: - type: skill-invocation config: required: ["azsdk-common-apiview-feedback-resolution"] - name: trigger-fix-apiview-comments prompt: "fix APIView comments" + environment: + skills: + - .. graders: - type: skill-invocation config: required: ["azsdk-common-apiview-feedback-resolution"] - name: trigger-address-api-review-feedback prompt: "address API review feedback" + environment: + skills: + - .. graders: - type: skill-invocation config: required: ["azsdk-common-apiview-feedback-resolution"] - name: trigger-apiview-shows-issues-with-my-sdk prompt: "APIView shows issues with my SDK" + environment: + skills: + - .. graders: - type: skill-invocation config: required: ["azsdk-common-apiview-feedback-resolution"] - name: trigger-help-me-with-apiview-suggestions prompt: "help me with APIView suggestions" + environment: + skills: + - .. graders: - type: skill-invocation config: required: ["azsdk-common-apiview-feedback-resolution"] - name: trigger-fix-comments-apiview-url-1 prompt: "Help me fix these comments: https://spa.apiview.dev/review/0qw98r9qwur9q823r?activeApiRevisionId=afiq948tquajf8jq9f" + environment: + skills: + - .. graders: - type: skill-invocation config: required: ["azsdk-common-apiview-feedback-resolution"] - name: trigger-address-feedback-apiview-url-2 prompt: "Address this feedback: https://spa.apiview.dev/review/akldfja9qjta498tjaejg0?activeApiRevisionId=odiufa9sefighj98439" + environment: + skills: + - .. graders: - type: skill-invocation config: required: ["azsdk-common-apiview-feedback-resolution"] - name: trigger-resolve-comments-staging-url prompt: "Resolve these comments: https://apiviewstagingtest.com/review/akldfja9qjta498tjaejg0?activeApiRevisionId=odiufa9sefighj98439" + environment: + skills: + - .. graders: - type: skill-invocation config: @@ -69,30 +93,45 @@ stimuli: - name: anti-trigger-deploy-my-azure-function prompt: "deploy my Azure Function" + environment: + skills: + - .. graders: - type: skill-invocation config: disallowed: ["azsdk-common-apiview-feedback-resolution"] - name: anti-trigger-fix-my-pipeline-build-error prompt: "fix my pipeline build error" + environment: + skills: + - .. graders: - type: skill-invocation config: disallowed: ["azsdk-common-apiview-feedback-resolution"] - name: anti-trigger-create-a-new-typespec-definition prompt: "create a new TypeSpec definition" + environment: + skills: + - .. graders: - type: skill-invocation config: disallowed: ["azsdk-common-apiview-feedback-resolution"] - name: anti-trigger-how-do-i-release-an-sdk-package prompt: "how do I release an SDK package" + environment: + skills: + - .. graders: - type: skill-invocation config: disallowed: ["azsdk-common-apiview-feedback-resolution"] - name: anti-trigger-set-up-azure-storage-account prompt: "set up Azure Storage account" + environment: + skills: + - .. graders: - type: skill-invocation config: diff --git a/.github/skills/azsdk-common-generate-sdk-locally/SKILL.md b/.github/skills/azsdk-common-generate-sdk-locally/SKILL.md index a94df960ff4e..4c5a169005f8 100644 --- a/.github/skills/azsdk-common-generate-sdk-locally/SKILL.md +++ b/.github/skills/azsdk-common-generate-sdk-locally/SKILL.md @@ -20,6 +20,8 @@ DO NOT USE FOR: publishing to package registries, CI pipeline configuration, API ## Rules +- 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. +- 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. - Requires the `azure-sdk-mcp` server for the MCP workflow; without MCP, use `npm exec --prefix eng/common/tsp-client -- tsp-client` CLI. - Verify the target language repo and the correct TypeSpec configuration file before generation. - 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 ## Troubleshooting +- 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. - Run `azure-sdk-mcp:azsdk_verify_setup` to confirm MCP and tools. - If build fails with type conflicts, breaking changes, analyzer errors, or customization drift, use `azure-sdk-mcp:azsdk_customized_code_update` to apply customizations. - The customization tool uses a two-phase approach: TypeSpec decorators first (Phase A), then code repairs if needed (Phase B). diff --git a/.github/skills/azsdk-common-generate-sdk-locally/evals/eval.yaml b/.github/skills/azsdk-common-generate-sdk-locally/evals/eval.yaml index 771d472dabbc..905f81549c46 100644 --- a/.github/skills/azsdk-common-generate-sdk-locally/evals/eval.yaml +++ b/.github/skills/azsdk-common-generate-sdk-locally/evals/eval.yaml @@ -20,6 +20,9 @@ scoring: stimuli: - name: sdk-local-basic-001 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." + environment: + skills: + - .. graders: - type: tool-calls config: @@ -29,6 +32,9 @@ stimuli: - name: sdk-local-negative-001 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." + environment: + skills: + - .. graders: - type: tool-calls config: @@ -37,7 +43,10 @@ stimuli: - name: azure-sdk-mcp-azsdk_package_generate_code - name: sdk-local-full-001 - 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." + 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." + environment: + skills: + - .. graders: - type: tool-calls config: @@ -53,6 +62,9 @@ stimuli: - name: sdk-local-edge-001 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." + environment: + skills: + - .. graders: - type: output-not-contains config: @@ -63,7 +75,10 @@ stimuli: - name: azure-sdk-mcp-azsdk_customized_code_update - name: sdk-local-breaking-changes-001 - 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." + 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." + environment: + skills: + - .. graders: - type: output-not-contains config: @@ -74,7 +89,10 @@ stimuli: - name: azure-sdk-mcp-azsdk_customized_code_update - name: sdk-local-customization-001 - 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." + 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." + environment: + skills: + - .. graders: - type: output-not-contains config: @@ -85,7 +103,10 @@ stimuli: - name: azure-sdk-mcp-azsdk_customized_code_update - name: sdk-local-hide-operation-001 - 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." + 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." + environment: + skills: + - .. graders: - type: output-not-contains config: @@ -96,7 +117,10 @@ stimuli: - name: azure-sdk-mcp-azsdk_customized_code_update - name: sdk-local-rename-client-001 - 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." + 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." + environment: + skills: + - .. graders: - type: output-not-contains config: @@ -108,6 +132,9 @@ stimuli: - name: sdk-local-update-changelog-001 prompt: "Update the changelog for the Python SDK package at sdk/compute/azure-mgmt-compute." + environment: + skills: + - .. graders: - type: output-not-contains config: @@ -118,7 +145,10 @@ stimuli: - name: azure-sdk-mcp-azsdk_package_update_changelog_content - name: sdk-local-update-metadata-001 - prompt: "Update the package metadata for the .NET SDK at sdk/contoso/Azure.ResourceManager.Contoso." + prompt: "Update the package metadata for the .NET SDK package at sdk/compute/Azure.ResourceManager.Compute (~/repos/azure-sdk-for-net)." + environment: + skills: + - .. graders: - type: output-not-contains config: @@ -129,7 +159,10 @@ stimuli: - name: azure-sdk-mcp-azsdk_package_update_metadata - name: sdk-local-update-version-001 - prompt: "Update the package version for the Java SDK at sdk/contoso/azure-resourcemanager-contoso." + 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." + environment: + skills: + - .. graders: - type: output-not-contains config: @@ -141,6 +174,9 @@ stimuli: - name: sdk-local-analyzer-errors-001 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." + environment: + skills: + - .. graders: - type: output-not-contains config: diff --git a/.github/skills/azsdk-common-generate-sdk-pipeline/SKILL.md b/.github/skills/azsdk-common-generate-sdk-pipeline/SKILL.md new file mode 100644 index 000000000000..9053f7e2c77d --- /dev/null +++ b/.github/skills/azsdk-common-generate-sdk-pipeline/SKILL.md @@ -0,0 +1,55 @@ +--- +name: azsdk-common-generate-sdk-pipeline +license: MIT +metadata: + version: "1.0.0" + distribution: shared +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 ", "generate SDK for release ", "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.' +compatibility: "azure-sdk-mcp server, existing release plan work item. Supports .NET, Java, JavaScript, Python, Go" +--- + +# Generate SDK via Pipeline + +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. + +## Triggers + +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 +WHEN: "run SDK generation, run SDK generation for all languages for release plan ", "generate SDK for release plan ", "generate SDK for release ", "pipeline SDK generation", "generate SDK without a local clone" +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 + +## Rules + +- **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. +- `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. +- 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. +- Requires the `azure-sdk-mcp` server; there is no CLI fallback for the pipeline generation workflow. +- 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`. + +## MCP Tools + +| Tool | Purpose | +| ----------------------------------------------- | -------------------------------------------------------------- | +| `azure-sdk-mcp:azsdk_get_release_plan` | Fetch the release plan to determine target languages / details | +| `azure-sdk-mcp:azsdk_run_generate_sdk` | Run the generation pipeline (once per language) | +| `azure-sdk-mcp:azsdk_get_sdk_pull_request_link` | Retrieve the generated SDK pull request link after generation | + +## Steps + +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. +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. +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. +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`. + +## Examples + +- "Run SDK generation for all languages for release 12345" +- "Generate the SDK for release plan 12345" +- "Generate the Python and .NET SDKs for release 12345 using the pipeline" + +## Troubleshooting + +- 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. +- 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`. +- If generation fails with a missing SDK details error, ensure the release plan has SDK details populated for the language before re-running. +- Requires the `azure-sdk-mcp` server. No CLI fallback — prompt the user to configure MCP if unavailable. diff --git a/.github/skills/azsdk-common-pipeline-analysis/evals/trigger.eval.yaml b/.github/skills/azsdk-common-pipeline-analysis/evals/trigger.eval.yaml index f43b7c37b081..f092df5c352c 100644 --- a/.github/skills/azsdk-common-pipeline-analysis/evals/trigger.eval.yaml +++ b/.github/skills/azsdk-common-pipeline-analysis/evals/trigger.eval.yaml @@ -21,30 +21,45 @@ stimuli: # Should trigger - name: trigger-my-ci-pipeline-is-failing prompt: "my Azure SDK CI pipeline build 6447834 is failing, can you help troubleshoot what went wrong?" + environment: + skills: + - .. graders: - type: skill-invocation config: required: ["azsdk-common-pipeline-analysis"] - name: trigger-debug-pipeline-build-error prompt: "debug the build error in my SDK generation pipeline, build 6447834" + environment: + skills: + - .. graders: - type: skill-invocation config: required: ["azsdk-common-pipeline-analysis"] - name: trigger-pipeline-analysis-help prompt: "I'm stuck on a failing Azure SDK pipeline — can you help me troubleshoot it?" + environment: + skills: + - .. graders: - type: skill-invocation config: required: ["azsdk-common-pipeline-analysis"] - name: trigger-analyze-failing-sdk-pipeline prompt: "analyze my failing Azure SDK generation pipeline https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6447834 and tell me what went wrong" + environment: + skills: + - .. graders: - type: skill-invocation config: required: ["azsdk-common-pipeline-analysis"] - name: trigger-ci-build-broke-after-my-change prompt: "the SDK CI build broke after my change, help me troubleshoot the pipeline" + environment: + skills: + - .. graders: - type: skill-invocation config: @@ -55,36 +70,54 @@ stimuli: # this analysis-only skill (see each skill's DO NOT USE FOR boundary). - name: anti-trigger-auto-fix-and-commit prompt: "auto-fix the failing tests in my pipeline and commit the changes to my PR" + environment: + skills: + - .. graders: - type: skill-invocation config: disallowed: ["azsdk-common-pipeline-analysis"] - name: anti-trigger-write-a-typespec-definition prompt: "write a TypeSpec definition" + environment: + skills: + - .. graders: - type: skill-invocation config: disallowed: ["azsdk-common-pipeline-analysis"] - name: anti-trigger-create-a-new-skill prompt: "create a new skill" + environment: + skills: + - .. graders: - type: skill-invocation config: disallowed: ["azsdk-common-pipeline-analysis"] - name: anti-trigger-optimize-markdown-tokens prompt: "optimize markdown tokens" + environment: + skills: + - .. graders: - type: skill-invocation config: disallowed: ["azsdk-common-pipeline-analysis"] - name: anti-trigger-how-do-i-release-an-sdk-package prompt: "how do I release an SDK package" + environment: + skills: + - .. graders: - type: skill-invocation config: disallowed: ["azsdk-common-pipeline-analysis"] - name: anti-trigger-resolve-apiview-feedback prompt: "resolve APIView feedback" + environment: + skills: + - .. graders: - type: skill-invocation config: diff --git a/.github/skills/azsdk-common-pipeline-fixer/evals/trigger.eval.yaml b/.github/skills/azsdk-common-pipeline-fixer/evals/trigger.eval.yaml index 16dad26093c7..9f05d00b6e66 100644 --- a/.github/skills/azsdk-common-pipeline-fixer/evals/trigger.eval.yaml +++ b/.github/skills/azsdk-common-pipeline-fixer/evals/trigger.eval.yaml @@ -25,30 +25,45 @@ stimuli: # Should trigger - name: trigger-fix-pipeline-failure prompt: "fix the pipeline failure for build 6447834" + environment: + skills: + - .. graders: - type: skill-invocation config: required: ["azsdk-common-pipeline-fixer"] - name: trigger-auto-fix-failing-tests prompt: "My Azure SDK PR has failing tests in CI: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6447834. Can you fix them?" + environment: + skills: + - .. graders: - type: skill-invocation config: required: ["azsdk-common-pipeline-fixer"] - name: trigger-resolve-pipeline-failure prompt: "resolve my Azure SDK pipeline failure" + environment: + skills: + - .. graders: - type: skill-invocation config: required: ["azsdk-common-pipeline-fixer"] - name: trigger-fix-build-error prompt: "fix the build error in my Azure SDK CI" + environment: + skills: + - .. graders: - type: skill-invocation config: required: ["azsdk-common-pipeline-fixer"] - name: trigger-fix-mypy-type-error prompt: "My Python SDK CI is failing with a mypy type error: https://dev.azure.com/azure-sdk/internal/_build/results?buildId=6447834. Can you fix it?" + environment: + skills: + - .. graders: - type: skill-invocation config: @@ -59,30 +74,45 @@ stimuli: # skill applies + verifies fixes and must stay out of pure-diagnosis requests. - name: anti-trigger-analyze-only prompt: "what went wrong in my pipeline build 12345? just tell me, don't fix anything" + environment: + skills: + - .. graders: - type: skill-invocation config: disallowed: ["azsdk-common-pipeline-fixer"] - name: anti-trigger-why-is-ci-red prompt: "why is my CI red? just diagnose the root cause, do not change any code" + environment: + skills: + - .. graders: - type: skill-invocation config: disallowed: ["azsdk-common-pipeline-fixer"] - name: anti-trigger-write-a-typespec-definition prompt: "write a TypeSpec definition" + environment: + skills: + - .. graders: - type: skill-invocation config: disallowed: ["azsdk-common-pipeline-fixer"] - name: anti-trigger-release-sdk-package prompt: "how do I release an SDK package" + environment: + skills: + - .. graders: - type: skill-invocation config: disallowed: ["azsdk-common-pipeline-fixer"] - name: anti-trigger-create-a-new-skill prompt: "create a new skill" + environment: + skills: + - .. graders: - type: skill-invocation config: diff --git a/.github/skills/azsdk-common-prepare-release-plan/SKILL.md b/.github/skills/azsdk-common-prepare-release-plan/SKILL.md index 5c4fec7f01a2..5fc2485fc67f 100644 --- a/.github/skills/azsdk-common-prepare-release-plan/SKILL.md +++ b/.github/skills/azsdk-common-prepare-release-plan/SKILL.md @@ -4,7 +4,7 @@ license: MIT metadata: version: "1.0.0" distribution: shared -description: 'Create, get, update, abandon, and link SDK PRs to release plan work items for Azure SDK releases. **UTILITY SKILL**. USE FOR: "create release plan", "get release plan", "update release plan", "update API spec in release plan", "update SDK details in release plan", "abandon release plan", "link SDK PR to plan", "namespace approval", "check release plan status". DO NOT USE FOR: SDK code generation, pipeline troubleshooting, API review feedback. INVOKES: azure-sdk-mcp:azsdk_create_release_plan, azure-sdk-mcp:azsdk_get_release_plan, azure-sdk-mcp:azsdk_get_release_plan_for_spec_pr, azure-sdk-mcp:azsdk_update_release_plan, azure-sdk-mcp:azsdk_update_api_spec_pull_request_in_release_plan, azure-sdk-mcp:azsdk_update_sdk_details_in_release_plan, azure-sdk-mcp:azsdk_abandon_release_plan, azure-sdk-mcp:azsdk_link_sdk_pull_request_to_release_plan, azure-sdk-mcp:azsdk_link_namespace_approval_issue.' +description: 'Manage Azure SDK release plans and associated SDK PRs. **UTILITY SKILL**. USE FOR: "prepare a release plan", "plan the next SDK release", "create release plan for my package", "get or update release plan", "update API spec or SDK details in release plan", "abandon release plan", "link SDK PR", "namespace approval", "check release plan status". DO NOT USE FOR: SDK generation, pipeline troubleshooting, API review. INVOKES: azure-sdk-mcp:azsdk_create_release_plan, azure-sdk-mcp:azsdk_get_release_plan, azure-sdk-mcp:azsdk_get_release_plan_for_spec_pr, azure-sdk-mcp:azsdk_update_release_plan, azure-sdk-mcp:azsdk_update_api_spec_pull_request_in_release_plan, azure-sdk-mcp:azsdk_update_sdk_details_in_release_plan, azure-sdk-mcp:azsdk_abandon_release_plan, azure-sdk-mcp:azsdk_link_sdk_pull_request_to_release_plan, azure-sdk-mcp:azsdk_link_namespace_approval_issue.' compatibility: "azure-sdk-mcp server, API spec PR in Azure/azure-rest-api-specs" --- @@ -14,8 +14,8 @@ This skill creates, gets, updates, abandons, and links SDK PRs to release plan w ## Triggers -USE FOR: create release plan, get release plan, update release plan, update API spec in release plan, update SDK details in release plan, abandon release plan, link SDK PR to plan, namespace approval, check release plan status -WHEN: "create release plan", "get release plan", "update release plan", "abandon release plan", "link SDK PR to plan", "namespace approval", "check release plan status" +USE FOR: prepare release plan, create release plan, get release plan, update release plan, update API spec in release plan, update SDK details in release plan, abandon release plan, link SDK PR to plan, namespace approval, check release plan status +WHEN: "prepare a release plan", "plan the next SDK release", "create release plan for my package", "create a release plan for my new Azure SDK service", "help me prepare a release plan for my new Azure SDK package", "create release plan", "get release plan", "update release plan", "abandon release plan", "link SDK PR to plan", "namespace approval", "check release plan status" DO NOT USE FOR: SDK code generation, pipeline troubleshooting, API review feedback ## Rules diff --git a/.github/skills/azsdk-common-prepare-release-plan/evals/trigger.eval.yaml b/.github/skills/azsdk-common-prepare-release-plan/evals/trigger.eval.yaml index c90bb2bcc669..f68d44474d56 100644 --- a/.github/skills/azsdk-common-prepare-release-plan/evals/trigger.eval.yaml +++ b/.github/skills/azsdk-common-prepare-release-plan/evals/trigger.eval.yaml @@ -20,30 +20,45 @@ scoring: stimuli: - name: trigger-prepare-a-release-plan prompt: "prepare a release plan" + environment: + skills: + - .. graders: - type: skill-invocation config: required: ["azsdk-common-prepare-release-plan"] - name: trigger-plan-the-next-sdk-release prompt: "plan the next SDK release" + environment: + skills: + - .. graders: - type: skill-invocation config: required: ["azsdk-common-prepare-release-plan"] - name: trigger-create-release-plan-for-my-package prompt: "create release plan for my package" + environment: + skills: + - .. graders: - type: skill-invocation config: required: ["azsdk-common-prepare-release-plan"] - name: trigger-what-goes-in-a-release-plan prompt: "create a release plan for my new Azure SDK service" + environment: + skills: + - .. graders: - type: skill-invocation config: required: ["azsdk-common-prepare-release-plan"] - name: trigger-help-me-prepare-for-sdk-release prompt: "help me prepare a release plan for my new Azure SDK package" + environment: + skills: + - .. graders: - type: skill-invocation config: @@ -51,30 +66,45 @@ stimuli: - name: anti-trigger-deploy-my-azure-function prompt: "deploy my Azure Function" + environment: + skills: + - .. graders: - type: skill-invocation config: disallowed: ["azsdk-common-prepare-release-plan"] - name: anti-trigger-fix-my-pipeline-build-error prompt: "fix my pipeline build error" + environment: + skills: + - .. graders: - type: skill-invocation config: disallowed: ["azsdk-common-prepare-release-plan"] - name: anti-trigger-create-a-new-typespec-definition prompt: "create a new TypeSpec definition" + environment: + skills: + - .. graders: - type: skill-invocation config: disallowed: ["azsdk-common-prepare-release-plan"] - name: anti-trigger-configure-azure-logging prompt: "configure Azure logging" + environment: + skills: + - .. graders: - type: skill-invocation config: disallowed: ["azsdk-common-prepare-release-plan"] - name: anti-trigger-resolve-apiview-feedback prompt: "resolve APIView feedback" + environment: + skills: + - .. graders: - type: skill-invocation config: diff --git a/.github/skills/azsdk-common-sdk-release/SKILL.md b/.github/skills/azsdk-common-sdk-release/SKILL.md index 10fef179d696..04b076f45a4d 100644 --- a/.github/skills/azsdk-common-sdk-release/SKILL.md +++ b/.github/skills/azsdk-common-sdk-release/SKILL.md @@ -4,7 +4,7 @@ license: MIT metadata: version: "1.0.0" distribution: shared -description: 'Check release readiness and trigger the release pipeline for Azure SDK packages. **UTILITY SKILL**. USE FOR: "release SDK", "trigger release", "check release readiness", "release pipeline", "publish package", "ship SDK". DO NOT USE FOR: SDK development, code generation, pipeline debugging, release plan creation. INVOKES: azure-sdk-mcp:azsdk_release_sdk.' +description: 'Check release readiness and trigger the release pipeline for Azure SDK packages. **UTILITY SKILL**. USE FOR: "release SDK", "trigger release", "check release readiness", "release pipeline", "publish package", "ship SDK", "release checklist", "release process", "publish a new SDK version", "how to release/publish an SDK". DO NOT USE FOR: SDK development, code generation, pipeline debugging, release plan creation. INVOKES: azure-sdk-mcp:azsdk_release_sdk.' compatibility: "azure-sdk-mcp server, SDK package merged on release branch. Supports .NET, Java, JavaScript, Python, Go" --- @@ -14,10 +14,12 @@ This skill checks release readiness and triggers the Azure SDK release pipeline ## Triggers -USE FOR: release SDK, trigger release, check release readiness, release pipeline, publish package, ship SDK -WHEN: "release SDK", "trigger release", "check release readiness", "release pipeline", "publish package", "ship SDK" +USE FOR: release SDK, trigger release, check release readiness, release pipeline, publish package, ship SDK, release checklist, release process, publish a new SDK version, how to release/publish an SDK +WHEN: "release SDK", "trigger release", "check release readiness", "release pipeline", "publish package", "ship SDK", "SDK release checklist", "walk me through the SDK release process", "how to publish a new SDK version", "release a new version of azure-sdk" DO NOT USE FOR: SDK development, code generation, pipeline debugging, release plan creation +Also use this skill for informational/how-to questions about releasing or publishing an SDK package (e.g. release checklists, walkthroughs of the release process) — answer using the Steps and Rules below rather than only triggering on direct action requests. + ## Rules - Requires the `azure-sdk-mcp` server; there is no CLI fallback for the release workflow. @@ -41,6 +43,10 @@ DO NOT USE FOR: SDK development, code generation, pipeline debugging, release pl - "Check if azure-storage-blob is ready for release" - "Trigger release for @azure/core-rest-pipeline on JavaScript" +- "What's the SDK release checklist?" +- "Walk me through the SDK release process" +- "How do I publish a new SDK version?" +- "Release a new version of azure-sdk" ## Troubleshooting diff --git a/.github/skills/azsdk-common-sdk-release/evals/trigger.eval.yaml b/.github/skills/azsdk-common-sdk-release/evals/trigger.eval.yaml index c82800b29d53..e0be6d210268 100644 --- a/.github/skills/azsdk-common-sdk-release/evals/trigger.eval.yaml +++ b/.github/skills/azsdk-common-sdk-release/evals/trigger.eval.yaml @@ -20,30 +20,45 @@ scoring: stimuli: - name: trigger-release-my-sdk-package prompt: "release my SDK package" + environment: + skills: + - .. graders: - type: skill-invocation config: required: ["azsdk-common-sdk-release"] - name: trigger-how-to-publish-a-new-sdk-version prompt: "how to publish a new SDK version" + environment: + skills: + - .. graders: - type: skill-invocation config: required: ["azsdk-common-sdk-release"] - name: trigger-walk-me-through-sdk-release-process prompt: "walk me through SDK release process" + environment: + skills: + - .. graders: - type: skill-invocation config: required: ["azsdk-common-sdk-release"] - name: trigger-release-a-new-version-of-azure-sdk prompt: "release a new version of azure-sdk" + environment: + skills: + - .. graders: - type: skill-invocation config: required: ["azsdk-common-sdk-release"] - name: trigger-sdk-release-checklist prompt: "SDK release checklist" + environment: + skills: + - .. graders: - type: skill-invocation config: @@ -51,30 +66,45 @@ stimuli: - name: anti-trigger-write-unit-tests prompt: "write unit tests" + environment: + skills: + - .. graders: - type: skill-invocation config: disallowed: ["azsdk-common-sdk-release"] - name: anti-trigger-fix-my-pipeline-build-error prompt: "fix my pipeline build error" + environment: + skills: + - .. graders: - type: skill-invocation config: disallowed: ["azsdk-common-sdk-release"] - name: anti-trigger-create-a-new-typespec-definition prompt: "create a new TypeSpec definition" + environment: + skills: + - .. graders: - type: skill-invocation config: disallowed: ["azsdk-common-sdk-release"] - name: anti-trigger-optimize-markdown-tokens prompt: "optimize markdown tokens" + environment: + skills: + - .. graders: - type: skill-invocation config: disallowed: ["azsdk-common-sdk-release"] - name: anti-trigger-resolve-apiview-feedback prompt: "resolve APIView feedback" + environment: + skills: + - .. graders: - type: skill-invocation config: