From c3b65a5d9700395fc731667338cad5b474f86193 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Tue, 14 Jul 2026 10:01:53 -0700 Subject: [PATCH 01/53] move azure plugin files --- .../azure}/.claude-plugin/plugin.json | 0 .../azure}/.cursor-plugin/plugin.json | 0 {plugin => plugins/azure}/.mcp.json | 0 {plugin => plugins/azure}/.plugin/plugin.json | 0 {plugin => plugins/azure}/LICENSE | 0 {plugin => plugins/azure}/README.md | 0 .../azure}/assets/azure-logo.svg | 0 .../azure}/gemini-extension.json | 0 .../azure}/hooks/claude-hooks.json | 0 .../azure}/hooks/cursor-hooks.json | 0 {plugin => plugins/azure}/hooks/hooks.json | 0 .../azure}/hooks/scripts/track-telemetry.ps1 | 0 .../azure}/hooks/scripts/track-telemetry.sh | 0 .../azure}/skills/airunway-aks-setup/SKILL.md | 0 .../references/gpu-profiles.md | 0 .../references/model-sizing.md | 0 .../references/powershell-notes.md | 0 .../references/steps/step-1-verify.md | 0 .../references/steps/step-2-controller.md | 0 .../references/steps/step-3-gpu.md | 0 .../references/steps/step-4-provider.md | 0 .../references/steps/step-5-deploy.md | 0 .../references/steps/step-6-summary.md | 0 .../references/troubleshooting.md | 0 .../skills/airunway-aks-setup/version.json | 0 .../appinsights-instrumentation/LICENSE.txt | 0 .../appinsights-instrumentation/SKILL.md | 0 .../examples/appinsights.bicep | 0 .../references/aspnetcore.md | 0 .../references/auto.md | 0 .../references/container-apps.md | 0 .../references/nodejs.md | 0 .../references/python.md | 0 ...ure-monitor-opentelemetry-exporter-java.md | 0 ...azure-monitor-opentelemetry-exporter-py.md | 0 .../sdk/azure-monitor-opentelemetry-py.md | 0 .../sdk/azure-monitor-opentelemetry-ts.md | 0 .../scripts/appinsights.ps1 | 0 .../azure}/skills/azure-ai/SKILL.md | 0 .../references/auth-best-practices.md | 0 .../sdk/azure-ai-contentsafety-java.md | 0 .../sdk/azure-ai-contentsafety-py.md | 0 .../sdk/azure-ai-contentsafety-ts.md | 0 .../azure-ai-document-intelligence-dotnet.md | 0 .../sdk/azure-ai-document-intelligence-ts.md | 0 .../references/sdk/azure-ai-openai-dotnet.md | 0 .../sdk/azure-ai-transcription-py.md | 0 .../sdk/azure-ai-translation-text-py.md | 0 .../references/sdk/azure-ai-translation-ts.md | 0 .../sdk/azure-ai-vision-imageanalysis-java.md | 0 .../sdk/azure-ai-vision-imageanalysis-py.md | 0 .../sdk/azure-search-documents-dotnet.md | 0 .../sdk/azure-search-documents-py.md | 0 .../sdk/azure-search-documents-ts.md | 0 .../azure/skills/azure-ai}/version.json | 0 .../azure}/skills/azure-aigateway/SKILL.md | 0 .../references/auth-best-practices.md | 0 .../azure-aigateway/references/patterns.md | 0 .../azure-aigateway/references/policies.md | 0 .../sdk/azure-ai-contentsafety-py.md | 0 .../sdk/azure-ai-contentsafety-ts.md | 0 .../sdk/azure-mgmt-apimanagement-dotnet.md | 0 .../sdk/azure-mgmt-apimanagement-py.md | 0 .../references/troubleshooting.md | 0 .../skills/azure-aigateway/version.json | 0 .../skills/azure-cloud-migrate/SKILL.md | 0 .../app-service/app-engine-to-app-service.md | 0 .../services/app-service/assessment.md | 0 .../app-service/beanstalk-to-app-service.md | 0 .../services/app-service/code-migration.md | 0 .../services/app-service/global-rules.md | 0 .../app-service/heroku-to-app-service.md | 0 .../container-apps/assessment-guide.md | 0 .../cloudrun-assessment-guide.md | 0 .../cloudrun-deployment-guide.md | 0 .../cloudrun-to-container-apps.md | 0 .../container-apps/deployment-guide.md | 0 .../fargate-assessment-guide.md | 0 .../fargate-deployment-guide.md | 0 .../fargate-to-container-apps.md | 0 .../container-apps/k8s-to-container-apps.md | 0 .../container-apps/spring-apps-to-aca.md | 0 .../container-apps/spring-assessment-guide.md | 0 .../spring-dependency-patterns.md | 0 .../container-apps/spring-deployment-guide.md | 0 .../services/functions/assessment.md | 0 .../services/functions/code-migration.md | 0 .../services/functions/global-rules.md | 0 .../services/functions/lambda-to-functions.md | 0 .../services/functions/runtimes/csharp.md | 0 .../services/functions/runtimes/java.md | 0 .../services/functions/runtimes/javascript.md | 0 .../services/functions/runtimes/powershell.md | 0 .../services/functions/runtimes/python.md | 0 .../services/functions/runtimes/typescript.md | 0 .../references/workflow-details.md | 0 .../skills/azure-cloud-migrate/version.json | 0 .../azure}/skills/azure-compliance/SKILL.md | 0 .../references/auth-best-practices.md | 0 .../references/azqr-recommendations.md | 0 .../references/azqr-remediation-patterns.md | 0 .../azure-keyvault-expiration-audit.md | 0 .../references/azure-quick-review.md | 0 .../references/azure-resource-graph.md | 0 .../sdk/azure-keyvault-certificates-rust.md | 0 .../sdk/azure-keyvault-keys-rust.md | 0 .../references/sdk/azure-keyvault-keys-ts.md | 0 .../references/sdk/azure-keyvault-py.md | 0 .../sdk/azure-keyvault-secrets-rust.md | 0 .../sdk/azure-keyvault-secrets-ts.md | 0 .../azure-security-keyvault-keys-dotnet.md | 0 .../sdk/azure-security-keyvault-keys-java.md | 0 .../azure-security-keyvault-secrets-java.md | 0 .../skills/azure-compliance}/version.json | 0 .../azure}/skills/azure-compute/SKILL.md | 0 .../references/retail-prices-api.md | 0 .../azure-compute/references/vm-families.md | 0 .../azure-compute/references/vm-quotas.md | 0 .../azure-compute/references/vmss-guide.md | 0 .../azure}/skills/azure-compute/version.json | 0 .../capacity-reservation.md | 0 .../references/association-disassociation.md | 0 .../capacity-reservation-overview.md | 0 .../essential-machine-management.md | 0 .../emm-enable-flow-portal-guidance.md | 0 .../references/emm-enable-flow.md | 0 .../references/emm-overview.md | 0 .../references/emm-prerequisites.md | 0 .../vm-creator/examples/bicep/README.md | 0 .../vm-creator/examples/bicep/main.bicep | 0 .../vm-creator/examples/terraform/README.md | 0 .../vm-creator/examples/terraform/main.tf | 0 .../vm-creator/examples/terraform/outputs.tf | 0 .../examples/terraform/variables.tf | 0 .../references/delivery-options/github-pr.md | 0 .../references/delivery-options/index.md | 0 .../references/delivery-options/print.md | 0 .../references/delivery-options/save-local.md | 0 .../references/depth-probe/beginner.md | 0 .../references/depth-probe/cost-deep.md | 0 .../references/depth-probe/index.md | 0 .../references/depth-probe/networking-deep.md | 0 .../references/depth-probe/security-deep.md | 0 .../references/depth-probe/spec-deep.md | 0 .../vm-creator/references/mcp-tools.md | 0 .../references/output-adapters/az-cli.md | 0 .../references/output-adapters/bicep.md | 0 .../references/output-adapters/index.md | 0 .../references/output-adapters/mcp-apply.md | 0 .../references/output-adapters/terraform.md | 0 .../vm-creator/references/plan-card.md | 0 .../vm-creator/references/validation-gates.md | 0 .../workflows/vm-creator/vm-creator.md | 0 .../references/handoff-to-creator.md | 0 .../references/web-fetch-policy.md | 0 .../vm-recommender/vm-recommender.md | 0 .../references/cannot-connect-to-vm.md | 0 .../references/credential-auth-errors.md | 0 .../references/firewall-blocking.md | 0 .../references/network-connectivity.md | 0 .../references/rdp-connectivity.md | 0 .../references/rdp-service-config.md | 0 .../references/ssh-connectivity.md | 0 .../references/vm-agent-not-responding.md | 0 .../vm-troubleshooter/vm-troubleshooter.md | 0 .../azure}/skills/azure-cost/SKILL.md | 0 .../cost-forecast/error-handling.md | 0 .../azure-cost/cost-forecast/examples.md | 0 .../azure-cost/cost-forecast/guardrails.md | 0 .../cost-forecast/request-body-schema.md | 0 .../azure-cost/cost-forecast/workflow.md | 0 .../cost-optimization/auth-best-practices.md | 0 .../cost-optimization/azure-aks-anomalies.md | 0 .../cost-optimization/azure-aks-cost-addon.md | 0 .../cost-optimization/azure-quick-review.md | 0 .../cost-optimization/azure-resource-graph.md | 0 .../cost-optimization/report-template.md | 0 .../azure-resource-manager-redis-dotnet.md | 0 .../services/redis/azure-cache-for-redis.md | 0 .../services/storage/azure-storage.md | 0 .../azure-cost/cost-optimization/workflow.md | 0 .../cost-query/dimensions-by-scope.md | 0 .../azure-cost/cost-query/error-handling.md | 0 .../skills/azure-cost/cost-query/examples.md | 0 .../azure-cost/cost-query/guardrails.md | 0 .../cost-query/request-body-schema.md | 0 .../skills/azure-cost/cost-query/workflow.md | 0 .../references/tools-and-best-practices.md | 0 .../azure}/skills/azure-cost/version.json | 0 .../azure}/skills/azure-deploy/SKILL.md | 0 .../references/auth-best-practices.md | 0 .../azure-deploy/references/global-rules.md | 0 .../references/live-role-verification.md | 0 .../references/pre-deploy-checklist.md | 0 .../azure-deploy/references/recipes/README.md | 0 .../references/recipes/azcli/README.md | 0 .../references/recipes/azcli/errors.md | 0 .../references/recipes/azcli/verify.md | 0 .../references/recipes/azd/README.md | 0 .../references/recipes/azd/ef-migrations.md | 0 .../references/recipes/azd/errors.md | 0 .../recipes/azd/functions-deploy.md | 0 .../references/recipes/azd/post-deployment.md | 0 .../recipes/azd/scripts/apply-migrations.ps1 | 0 .../recipes/azd/scripts/apply-migrations.sh | 0 .../recipes/azd/scripts/grant-and-migrate.ps1 | 0 .../recipes/azd/scripts/grant-and-migrate.sh | 0 .../references/recipes/azd/sql-entra-auth.md | 0 .../recipes/azd/sql-managed-identity.md | 0 .../references/recipes/azd/verify.md | 0 .../references/recipes/bicep/README.md | 0 .../references/recipes/bicep/errors.md | 0 .../references/recipes/bicep/verify.md | 0 .../references/recipes/cicd/README.md | 0 .../references/recipes/cicd/errors.md | 0 .../recipes/cicd/examples/azdo-azd.yml | 0 .../recipes/cicd/examples/azdo-multistage.yml | 0 .../recipes/cicd/examples/github-azd.yml | 0 .../recipes/cicd/examples/github-bicep.yml | 0 .../references/recipes/cicd/verify.md | 0 .../references/recipes/terraform/README.md | 0 .../references/recipes/terraform/errors.md | 0 .../references/recipes/terraform/verify.md | 0 .../references/region-availability.md | 0 .../references/sdk/azd-deployment.md | 0 .../references/sdk/azure-identity-dotnet.md | 0 .../references/sdk/azure-identity-java.md | 0 .../references/sdk/azure-identity-py.md | 0 .../references/sdk/azure-identity-ts.md | 0 .../references/troubleshooting.md | 0 .../azure/skills/azure-deploy}/version.json | 0 .../azure}/skills/azure-diagnostics/SKILL.md | 0 .../references/app-service/README.md | 0 .../references/azure-resource-graph.md | 0 .../references/container-apps/README.md | 0 .../references/functions/README.md | 0 .../references/kql-queries.md | 0 .../aks/aks-troubleshooting.md | 0 .../aks/general-diagnostics.md | 0 .../aks/load-balancer-and-ingress.md | 0 .../troubleshooting/aks/network-policy.md | 0 .../troubleshooting/aks/networking.md | 0 .../troubleshooting/aks/node-issues.md | 0 .../troubleshooting/aks/pod-failures.md | 0 .../troubleshooting/aks/references/aks-mcp.md | 0 .../aks/references/command-flows.md | 0 .../aks/references/inspektor-gadget.md | 0 .../aks/references/structured-input-modes.md | 0 .../aks/spot-and-zone-issues.md | 0 .../troubleshooting/aks/upgrade-operations.md | 0 .../troubleshooting/messaging/README.md | 0 .../messaging/auth-best-practices.md | 0 .../messaging/azure-eventhubs-dotnet.md | 0 .../messaging/azure-eventhubs-java.md | 0 .../messaging/azure-eventhubs-js.md | 0 .../messaging/azure-eventhubs-py.md | 0 .../messaging/azure-servicebus-dotnet.md | 0 .../messaging/azure-servicebus-java.md | 0 .../messaging/azure-servicebus-js.md | 0 .../messaging/azure-servicebus-py.md | 0 .../messaging/service-troubleshooting.md | 0 .../skills/azure-diagnostics}/version.json | 0 .../azure-enterprise-infra-planner/SKILL.md | 0 .../references/bicep-generation.md | 0 .../references/constraints/README.md | 0 .../references/constraints/ai-ml.md | 0 .../references/constraints/compute-apps.md | 0 .../references/constraints/compute-infra.md | 0 .../references/constraints/data-analytics.md | 0 .../references/constraints/data-relational.md | 0 .../references/constraints/messaging.md | 0 .../references/constraints/monitoring.md | 0 .../constraints/networking-connectivity.md | 0 .../references/constraints/networking-core.md | 0 .../constraints/networking-traffic.md | 0 .../references/constraints/security.md | 0 .../references/deployment.md | 0 .../references/pairing-checks.md | 0 .../references/phases/1-extract-insights.md | 0 .../phases/2-research-best-practices.md | 0 .../references/phases/3-research-resources.md | 0 .../references/phases/4-generate-plan.md | 0 .../references/phases/5-verify.md | 0 .../references/phases/6-generate-iac.md | 0 .../references/phases/7-deploy.md | 0 .../references/resources/README.md | 0 .../references/resources/ai-ml.md | 0 .../references/resources/compute-apps.md | 0 .../references/resources/compute-infra.md | 0 .../references/resources/data-analytics.md | 0 .../references/resources/data-relational.md | 0 .../references/resources/messaging.md | 0 .../references/resources/monitoring.md | 0 .../resources/networking-connectivity.md | 0 .../references/resources/networking-core.md | 0 .../resources/networking-traffic.md | 0 .../references/resources/security.md | 0 .../references/schema.md | 0 .../references/terraform-generation.md | 0 .../references/verification.md | 0 .../references/waf-checklist.md | 0 .../references/workflow.md | 0 .../version.json | 0 .../azure}/skills/azure-kubernetes/SKILL.md | 0 .../SKILL.md | 0 .../references/common-fixes.md | 0 .../references/constraint-spec-v1.yaml | 0 .../references/mcp-integration.md | 0 .../references/migration-guide-summary.md | 0 .../references/azure-aks-autoscaler.md | 0 .../references/azure-aks-rightsizing.md | 0 .../references/azure-aks-spot.md | 0 .../references/azure-aks-vpa.md | 0 .../references/cli-reference.md | 0 .../skills/azure-kubernetes}/version.json | 0 .../azure}/skills/azure-kusto/SKILL.md | 0 .../azure/skills/azure-kusto}/version.json | 0 .../azure}/skills/azure-messaging/SKILL.md | 0 .../skills/azure-messaging}/version.json | 0 .../azure}/skills/azure-prepare/SKILL.md | 0 .../azure-prepare/references/analyze.md | 0 .../skills/azure-prepare/references/apim.md | 0 .../azure-prepare/references/architecture.md | 0 .../skills/azure-prepare/references/aspire.md | 0 .../references/auth-best-practices.md | 0 .../azure-prepare/references/azure-context.md | 0 .../references/functional-verification.md | 0 .../azure-prepare/references/generate.md | 0 .../azure-prepare/references/global-rules.md | 0 .../azure-prepare/references/plan-template.md | 0 .../references/recipe-selection.md | 0 .../references/recipes/azcli/README.md | 0 .../references/recipes/azcli/commands.md | 0 .../references/recipes/azcli/scripts.md | 0 .../references/recipes/azd/README.md | 0 .../references/recipes/azd/aspire.md | 0 .../references/recipes/azd/azure-yaml.md | 0 .../references/recipes/azd/docker.md | 0 .../references/recipes/azd/iac-rules.md | 0 .../references/recipes/azd/terraform.md | 0 .../references/recipes/bicep/README.md | 0 .../references/recipes/bicep/patterns.md | 0 .../references/recipes/terraform/README.md | 0 .../references/recipes/terraform/patterns.md | 0 .../references/region-availability.md | 0 .../azure-prepare/references/requirements.md | 0 .../azure-prepare/references/research.md | 0 .../references/resources-limits-quotas.md | 0 .../references/runtimes/nodejs.md | 0 .../skills/azure-prepare/references/scan.md | 0 .../references/sdk/azd-deployment.md | 0 .../sdk/azure-appconfiguration-java.md | 0 .../sdk/azure-appconfiguration-py.md | 0 .../sdk/azure-appconfiguration-ts.md | 0 .../references/sdk/azure-identity-dotnet.md | 0 .../references/sdk/azure-identity-java.md | 0 .../references/sdk/azure-identity-py.md | 0 .../references/sdk/azure-identity-ts.md | 0 .../azure-prepare/references/security.md | 0 .../references/services/aks/README.md | 0 .../references/services/aks/addons.md | 0 .../references/services/aks/bicep.md | 0 .../references/services/aks/manifests.md | 0 .../services/app-insights/README.md | 0 .../references/services/app-service/README.md | 0 .../references/services/app-service/bicep.md | 0 .../services/app-service/custom-domains.md | 0 .../services/app-service/deployment-slots.md | 0 .../services/app-service/networking.md | 0 .../services/app-service/scaling.md | 0 .../services/app-service/sku-selection.md | 0 .../app-service/templates/recipes/README.md | 0 .../templates/recipes/auth/README.md | 0 .../templates/recipes/auth/source/dotnet.md | 0 .../templates/recipes/auth/source/nodejs.md | 0 .../templates/recipes/auth/source/python.md | 0 .../templates/recipes/composition.md | 0 .../templates/recipes/cosmos/README.md | 0 .../templates/recipes/cosmos/source/dotnet.md | 0 .../templates/recipes/cosmos/source/nodejs.md | 0 .../templates/recipes/cosmos/source/python.md | 0 .../templates/recipes/redis/README.md | 0 .../templates/recipes/redis/source/dotnet.md | 0 .../templates/recipes/redis/source/nodejs.md | 0 .../templates/recipes/redis/source/python.md | 0 .../templates/recipes/sql/README.md | 0 .../templates/recipes/sql/source/dotnet.md | 0 .../templates/recipes/sql/source/nodejs.md | 0 .../templates/recipes/sql/source/python.md | 0 .../app-service/templates/selection.md | 0 .../services/app-service/templates/web-api.md | 0 .../services/app-service/templates/web-app.md | 0 .../services/container-apps/README.md | 0 .../services/container-apps/bicep.md | 0 .../container-apps/day2-operations.md | 0 .../services/container-apps/environment.md | 0 .../services/container-apps/health-probes.md | 0 .../services/container-apps/networking.md | 0 .../services/container-apps/revisions.md | 0 .../services/container-apps/scaling.md | 0 .../services/container-apps/terraform.md | 0 .../references/services/cosmos-db/README.md | 0 .../references/services/cosmos-db/bicep.md | 0 .../services/cosmos-db/partitioning.md | 0 .../references/services/cosmos-db/sdk.md | 0 .../services/durable-task-scheduler/README.md | 0 .../services/durable-task-scheduler/bicep.md | 0 .../services/durable-task-scheduler/dotnet.md | 0 .../services/durable-task-scheduler/java.md | 0 .../durable-task-scheduler/javascript.md | 0 .../services/durable-task-scheduler/python.md | 0 .../references/services/event-grid/README.md | 0 .../references/services/event-grid/bicep.md | 0 .../services/event-grid/subscriptions.md | 0 .../references/services/foundry/README.md | 0 .../services/foundry/region-availability.md | 0 .../references/services/functions/README.md | 0 .../functions/aspire-containerapps.md | 0 .../references/services/functions/bicep.md | 0 .../references/services/functions/durable.md | 0 .../services/functions/templates/README.md | 0 .../functions/templates/base/eval/python.md | 0 .../functions/templates/base/eval/summary.md | 0 .../templates/base/eval/typescript.md | 0 .../functions/templates/recipes/README.md | 0 .../recipes/blob-eventgrid/README.md | 0 .../recipes/blob-eventgrid/eval/python.md | 0 .../recipes/blob-eventgrid/eval/summary.md | 0 .../recipes/common/dotnet-entry-point.md | 0 .../recipes/common/error-handling.md | 0 .../templates/recipes/common/health-check.md | 0 .../recipes/common/nodejs-entry-point.md | 0 .../templates/recipes/composition.md | 0 .../templates/recipes/cosmosdb/README.md | 0 .../templates/recipes/cosmosdb/eval/python.md | 0 .../recipes/cosmosdb/eval/summary.md | 0 .../recipes/cosmosdb/eval/typescript.md | 0 .../templates/recipes/durable/README.md | 0 .../templates/recipes/durable/eval/python.md | 0 .../templates/recipes/durable/eval/summary.md | 0 .../templates/recipes/eventhubs/README.md | 0 .../recipes/eventhubs/eval/python.md | 0 .../recipes/eventhubs/eval/summary.md | 0 .../functions/templates/recipes/mcp/README.md | 0 .../templates/recipes/mcp/eval/python.md | 0 .../templates/recipes/mcp/eval/summary.md | 0 .../templates/recipes/servicebus/README.md | 0 .../recipes/servicebus/eval/python.md | 0 .../recipes/servicebus/eval/summary.md | 0 .../recipes/servicebus/eval/typescript.md | 0 .../functions/templates/recipes/sql/README.md | 0 .../templates/recipes/sql/eval/python.md | 0 .../templates/recipes/sql/eval/summary.md | 0 .../templates/recipes/timer/README.md | 0 .../templates/recipes/timer/eval/python.md | 0 .../templates/recipes/timer/eval/summary.md | 0 .../services/functions/templates/selection.md | 0 .../services/functions/terraform.md | 0 .../references/services/key-vault/README.md | 0 .../references/services/key-vault/bicep.md | 0 .../references/services/key-vault/sdk.md | 0 .../references/services/logic-apps/README.md | 0 .../references/services/logic-apps/bicep.md | 0 .../services/logic-apps/triggers.md | 0 .../references/services/service-bus/README.md | 0 .../references/services/service-bus/bicep.md | 0 .../services/service-bus/patterns.md | 0 .../services/sql-database/README.md | 0 .../references/services/sql-database/auth.md | 0 .../references/services/sql-database/bicep.md | 0 .../sql-database/scripts/grant-sql-access.ps1 | 0 .../sql-database/scripts/grant-sql-access.sh | 0 .../references/services/sql-database/sdk.md | 0 .../services/static-web-apps/README.md | 0 .../services/static-web-apps/bicep.md | 0 .../services/static-web-apps/deployment.md | 0 .../static-web-apps/region-availability.md | 0 .../services/static-web-apps/routing.md | 0 .../services/static-web-apps/terraform.md | 0 .../references/services/storage/README.md | 0 .../references/services/storage/access.md | 0 .../references/services/storage/bicep.md | 0 .../references/specialized-routing.md | 0 .../azure}/skills/azure-prepare/version.json | 0 .../azure}/skills/azure-quotas/SKILL.md | 0 .../references/advanced-commands.md | 0 .../azure-quotas/references/commands.md | 0 .../azure-quotas/scripts/check-quota.ps1 | 0 .../azure-quotas/scripts/check-quota.sh | 0 .../azure/skills/azure-quotas}/version.json | 0 .../azure/skills/azure-rbac}/version.json | 0 .../azure}/skills/azure-reliability/SKILL.md | 0 .../references/configure-health-probes.md | 0 .../references/configure-multi-region.md | 0 .../references/configure-storage.md | 0 .../references/configure-zone-redundancy.md | 0 .../references/health-probe-checks.md | 0 .../references/iac-patching-bicep.md | 0 .../references/iac-patching-terraform.md | 0 .../references/multi-region-checks.md | 0 .../services/app-service/reliability.md | 0 .../services/functions/reliability.md | 0 .../references/storage-redundancy-checks.md | 0 .../references/zone-redundancy-checks.md | 0 .../skills/azure-reliability/version.json | 0 .../skills/azure-resource-lookup/SKILL.md | 0 .../references/azure-resource-graph.md | 0 .../skills/azure-resource-lookup/version.json | 0 .../skills/azure-resource-visualizer/SKILL.md | 0 .../assets/example-diagram.md | 0 .../assets/template-architecture.md | 0 .../references/azure-resource-graph.md | 0 .../azure-resource-visualizer/version.json | 0 .../azure}/skills/azure-storage/SKILL.md | 0 .../references/auth-best-practices.md | 0 .../azure-storage/references/sdk-usage.md | 0 .../references/sdk/azure-data-tables-java.md | 0 .../references/sdk/azure-data-tables-py.md | 0 .../references/sdk/azure-storage-blob-java.md | 0 .../references/sdk/azure-storage-blob-py.md | 0 .../references/sdk/azure-storage-blob-rust.md | 0 .../references/sdk/azure-storage-blob-ts.md | 0 .../sdk/azure-storage-file-datalake-py.md | 0 .../sdk/azure-storage-file-share-py.md | 0 .../sdk/azure-storage-file-share-ts.md | 0 .../references/sdk/azure-storage-queue-py.md | 0 .../references/sdk/azure-storage-queue-ts.md | 0 .../azure}/skills/azure-storage/version.json | 0 .../azure}/skills/azure-upgrade/SKILL.md | 0 .../azure-upgrade/references/global-rules.md | 0 .../references/languages/java/INSTRUCTION.md | 0 .../references/languages/java/README.md | 0 .../java/bom-migration/bom-gradle-settings.md | 0 .../java/bom-migration/bom-gradle-toml.md | 0 .../java/bom-migration/bom-gradle.md | 0 .../languages/java/bom-migration/bom-maven.md | 0 .../java/bom-migration/bom-migration.md | 0 .../java/bom-migration/bom-validation.md | 0 .../com.microsoft.azure.eventprocessorhost.md | 0 .../com.microsoft.azure.management.md | 0 .../languages/java/rules/efficiency.md | 0 .../java/rules/execution-guidelines.md | 0 .../java/rules/review-code-changes.md | 0 .../languages/java/rules/troubleshooting.md | 0 .../languages/java/rules/upgrade-strategy.md | 0 .../java/rules/upgrade-success-criteria.md | 0 .../languages/java/scripts/upgrade_bom.py | 0 .../languages/java/templates/PLAN_TEMPLATE.md | 0 .../java/templates/PROGRESS_TEMPLATE.md | 0 .../java/templates/SUMMARY_TEMPLATE.md | 0 .../java/workflow/phase-1-precheck.md | 0 .../languages/java/workflow/phase-2-plan.md | 0 .../java/workflow/phase-3-execute.md | 0 .../java/workflow/phase-4-summarize.md | 0 .../services/functions/assessment.md | 0 .../services/functions/automation.md | 0 .../services/functions/consumption-to-flex.md | 0 .../references/services/redis/redis-to-amr.md | 0 .../references/workflow-details.md | 0 .../azure}/skills/azure-upgrade/version.json | 0 .../azure}/skills/azure-validate/SKILL.md | 0 .../references/aspire-functions-secrets.md | 0 .../azure-validate/references/global-rules.md | 0 .../references/policy-validation.md | 0 .../references/recipes/README.md | 0 .../references/recipes/azcli/README.md | 0 .../references/recipes/azcli/errors.md | 0 .../references/recipes/azd/README.md | 0 .../references/recipes/azd/aspire.md | 0 .../references/recipes/azd/environment.md | 0 .../references/recipes/azd/errors.md | 0 .../references/recipes/bicep/README.md | 0 .../references/recipes/bicep/errors.md | 0 .../references/recipes/terraform/README.md | 0 .../references/recipes/terraform/errors.md | 0 .../references/region-availability.md | 0 .../references/role-verification.md | 0 .../azure}/skills/azure-validate/version.json | 0 .../azure}/skills/entra-agent-id/SKILL.md | 0 .../references/known-limitations.md | 0 .../references/oauth2-token-flow.md | 0 .../references/obo-blueprint-setup.md | 0 .../references/runtime-token-exchange.md | 0 .../references/sdk-sidecar-deployment.md | 0 .../entra-agent-id/references/sdk-sidecar.md | 0 .../azure}/skills/entra-agent-id/version.json | 0 .../skills/entra-app-registration/SKILL.md | 0 .../references/BICEP-EXAMPLE.bicep | 0 .../references/api-permissions.md | 0 .../references/auth-best-practices.md | 0 .../references/cli-commands.md | 0 .../references/console-app-example.md | 0 .../references/first-app-registration.md | 0 .../references/oauth-flows.md | 0 .../references/sdk/azure-identity-dotnet.md | 0 .../references/sdk/azure-identity-java.md | 0 .../references/sdk/azure-identity-py.md | 0 .../references/sdk/azure-identity-rust.md | 0 .../references/sdk/azure-identity-ts.md | 0 .../references/sdk/azure-keyvault-py.md | 0 .../sdk/azure-keyvault-secrets-ts.md | 0 ...extensions-authentication-events-dotnet.md | 0 .../references/troubleshooting.md | 0 .../entra-app-registration/version.json | 0 .../skills/microsoft-foundry/.gitignore | 0 .../azure}/skills/microsoft-foundry/SKILL.md | 0 .../microsoft-foundry/finetuning/SKILL.md | 0 .../finetuning/references/agentic-rft.md | 0 .../finetuning/references/dataset-formats.md | 0 .../finetuning/references/deployment.md | 0 .../finetuning/references/evaluation.md | 0 .../finetuning/references/grader-design.md | 0 .../finetuning/references/hyperparameters.md | 0 .../references/large-file-uploads.md | 0 .../finetuning/references/platform-gotchas.md | 0 .../finetuning/references/reward-hacking.md | 0 .../finetuning/references/training-curves.md | 0 .../finetuning/references/training-types.md | 0 .../references/vision-fine-tuning.md | 0 .../finetuning/scripts/calibrate_grader.py | 0 .../finetuning/scripts/check_training.py | 0 .../finetuning/scripts/cleanup.py | 0 .../finetuning/scripts/common.py | 0 .../finetuning/scripts/convert_dataset.py | 0 .../finetuning/scripts/deploy_model.py | 0 .../finetuning/scripts/evaluate_model.py | 0 .../scripts/generate_distillation_data.py | 0 .../finetuning/scripts/monitor_training.py | 0 .../finetuning/scripts/score_dataset.py | 0 .../finetuning/scripts/submit_training.py | 0 .../finetuning/scripts/validate/__init__.py | 0 .../finetuning/scripts/validate/data_stats.py | 0 .../scripts/validate/validate_dpo.py | 0 .../scripts/validate/validate_rft.py | 0 .../scripts/validate/validate_sft.py | 0 .../finetuning/workflows/dataset-creation.md | 0 .../workflows/diagnose-poor-results.md | 0 .../finetuning/workflows/full-pipeline.md | 0 .../workflows/iterative-training.md | 0 .../finetuning/workflows/quickstart.md | 0 .../agent-optimizer/agent-optimizer.md | 0 .../agent-optimizer/references/azd-setup.md | 0 .../agent-optimizer/references/eval-yaml.md | 0 .../references/optimize-workflow.md | 0 .../references/python-patterns.md | 0 .../agent-optimizer/references/scaffold.md | 0 .../foundry-agent/cicd/cicd.md | 0 .../foundry-agent/create/create-hosted.md | 0 .../foundry-agent/create/create-prompt.md | 0 .../create/quick-start-hosted.md | 0 .../create/references/agent-tools.md | 0 .../create/references/agentframework.md | 0 .../create/references/azd-ai-cli.md | 157 ++++++++++++++++++ .../create/references/enable-incoming-a2a.md | 0 .../create/references/foundry-tool-catalog.md | 0 .../guardrails/guardrail-api-create.md | 0 .../references/guardrails/guardrail-attach.md | 0 .../references/guardrails/guardrail-manage.md | 0 .../create/references/local-run.md | 0 .../create/references/sdk-operations.md | 0 .../create/references/skills/skill-attach.md | 0 .../create/references/skills/skill-manage.md | 0 .../references/skills/skill-toolbox-attach.md | 0 .../create/references/tool-a2a.md | 0 .../create/references/tool-azure-ai-search.md | 0 .../create/references/tool-bing-grounding.md | 0 .../references/tool-code-interpreter.md | 0 .../create/references/tool-fabric-iq.md | 0 .../create/references/tool-file-search.md | 0 .../references/tool-function-calling.md | 0 .../create/references/tool-mcp.md | 0 .../create/references/tool-memory.md | 0 .../create/references/tool-openapi.md | 0 .../create/references/tool-tool-search.md | 0 .../create/references/tool-web-search.md | 0 .../create/references/tool-work-iq.md | 0 .../create/references/toolbox-reference.md | 0 .../foundry-agent/create/references/tools.md | 0 .../references/use-toolbox-in-hosted-agent.md | 0 .../create/scripts/check-canvas-entry.ps1 | 0 .../create/scripts/check-canvas-entry.sh | 0 .../create/scripts/resolve-project-id.ps1 | 0 .../create/scripts/resolve-project-id.sh | 0 .../create/scripts/verify-environment.ps1 | 0 .../create/scripts/verify-environment.sh | 0 .../foundry-agent/deploy/deploy.md | 0 .../eval-datasets/eval-datasets.md | 0 .../references/dataset-comparison.md | 0 .../references/dataset-curation.md | 0 .../references/dataset-organization.md | 0 .../references/dataset-versioning.md | 0 .../eval-datasets/references/eval-lineage.md | 0 .../references/eval-regression.md | 0 .../eval-datasets/references/eval-trending.md | 0 .../references/generate-seed-dataset.md | 0 .../references/trace-to-dataset.md | 0 .../invocations-ws/invocations-ws.md | 0 .../references/invocations-ws-protocol.md | 0 .../foundry-agent/invoke/invoke.md | 0 .../invoke/references/file-operations.md | 0 .../invoke/references/invocations-protocol.md | 0 .../invoke/references/session-management.md | 0 .../foundry-agent/observe/observe.md | 0 .../observe/references/analyze-results.md | 0 .../observe/references/cicd-monitoring.md | 0 .../observe/references/compare-iterate.md | 0 .../observe/references/continuous-eval.md | 0 .../observe/references/deploy-and-setup.md | 0 .../observe/references/evaluate-step.md | 0 .../references/evaluation-suite-generation.md | 0 .../observe/references/optimize-deploy.md | 0 .../routine/references/azure-yaml.md | 0 .../routine/references/cli-crud.md | 0 .../foundry-agent/routine/routine.md | 0 .../trace/references/analyze-failures.md | 0 .../trace/references/analyze-latency.md | 0 .../trace/references/conversation-detail.md | 0 .../trace/references/eval-correlation.md | 0 .../trace/references/kql-templates.md | 0 .../trace/references/search-traces.md | 0 .../trace/references/tracing-insights-api.md | 0 .../foundry-agent/trace/trace.md | 0 .../troubleshoot/troubleshoot.md | 0 .../models/deploy-model/SKILL.md | 0 .../models/deploy-model/TEST_PROMPTS.md | 0 .../models/deploy-model/capacity/SKILL.md | 0 .../capacity/scripts/discover_and_rank.ps1 | 0 .../capacity/scripts/discover_and_rank.sh | 0 .../capacity/scripts/query_capacity.ps1 | 0 .../capacity/scripts/query_capacity.sh | 0 .../models/deploy-model/customize/EXAMPLES.md | 0 .../models/deploy-model/customize/SKILL.md | 0 .../customize/references/customize-guides.md | 0 .../references/customize-workflow.md | 0 .../models/deploy-model/preset/EXAMPLES.md | 0 .../models/deploy-model/preset/SKILL.md | 0 .../preset/references/preset-workflow.md | 0 .../preset/references/workflow.md | 0 .../scripts/generate_deployment_url.ps1 | 0 .../scripts/generate_deployment_url.sh | 0 .../microsoft-foundry/project/connections.md | 0 .../project/create/create-foundry-project.md | 0 .../skills/microsoft-foundry/quota/quota.md | 0 .../quota/references/capacity-planning.md | 0 .../quota/references/error-resolution.md | 0 .../quota/references/optimization.md | 0 .../quota/references/ptu-guide.md | 0 .../quota/references/troubleshooting.md | 0 .../quota/references/workflows.md | 0 .../skills/microsoft-foundry/rbac/rbac.md | 0 .../references/agent-metadata-contract.md | 0 .../references/auth-best-practices.md | 0 .../references/sdk/foundry-sdk-py.md | 0 .../references/standard-agent-setup.md | 0 .../create/create-foundry-resource.md | 0 .../resource/create/references/patterns.md | 0 .../create/references/troubleshooting.md | 0 .../resource/create/references/workflows.md | 0 .../private-network/private-network.md | 0 .../references/custom-template-adaptation.md | 0 .../private-network/references/deploy.md | 0 .../references/end-to-end-test.md | 0 .../private-network/references/intake.md | 0 .../references/post-deployment-validation.md | 0 .../private-network/references/scaffold.md | 0 .../references/template-index.md | 0 .../references/vpn-dns-setup.bicep | 0 .../references/vpn-dns-setup.md | 0 .../skills/microsoft-foundry/version.json | 0 .../skills/python-appservice-deploy/SKILL.md | 0 .../references/create-app.md | 0 .../references/deploy-azcli.md | 0 .../references/deploy-azd.md | 0 .../references/detect.md | 0 .../references/errors.md | 0 .../references/post-deploy-message.md | 0 .../references/startup-commands.md | 0 .../references/transient-retry.md | 0 .../scripts/generate-app-name.ps1 | 0 .../scripts/generate-app-name.sh | 0 .../scripts/retry-az-create.ps1 | 0 .../scripts/retry-az-create.sh | 0 .../python-appservice-deploy/version.json | 0 {plugin => plugins/azure}/version.json | 0 784 files changed, 157 insertions(+) rename {plugin => plugins/azure}/.claude-plugin/plugin.json (100%) rename {plugin => plugins/azure}/.cursor-plugin/plugin.json (100%) rename {plugin => plugins/azure}/.mcp.json (100%) rename {plugin => plugins/azure}/.plugin/plugin.json (100%) rename {plugin => plugins/azure}/LICENSE (100%) rename {plugin => plugins/azure}/README.md (100%) rename {plugin => plugins/azure}/assets/azure-logo.svg (100%) rename {plugin => plugins/azure}/gemini-extension.json (100%) rename {plugin => plugins/azure}/hooks/claude-hooks.json (100%) rename {plugin => plugins/azure}/hooks/cursor-hooks.json (100%) rename {plugin => plugins/azure}/hooks/hooks.json (100%) rename {plugin => plugins/azure}/hooks/scripts/track-telemetry.ps1 (100%) rename {plugin => plugins/azure}/hooks/scripts/track-telemetry.sh (100%) rename {plugin => plugins/azure}/skills/airunway-aks-setup/SKILL.md (100%) rename {plugin => plugins/azure}/skills/airunway-aks-setup/references/gpu-profiles.md (100%) rename {plugin => plugins/azure}/skills/airunway-aks-setup/references/model-sizing.md (100%) rename {plugin => plugins/azure}/skills/airunway-aks-setup/references/powershell-notes.md (100%) rename {plugin => plugins/azure}/skills/airunway-aks-setup/references/steps/step-1-verify.md (100%) rename {plugin => plugins/azure}/skills/airunway-aks-setup/references/steps/step-2-controller.md (100%) rename {plugin => plugins/azure}/skills/airunway-aks-setup/references/steps/step-3-gpu.md (100%) rename {plugin => plugins/azure}/skills/airunway-aks-setup/references/steps/step-4-provider.md (100%) rename {plugin => plugins/azure}/skills/airunway-aks-setup/references/steps/step-5-deploy.md (100%) rename {plugin => plugins/azure}/skills/airunway-aks-setup/references/steps/step-6-summary.md (100%) rename {plugin => plugins/azure}/skills/airunway-aks-setup/references/troubleshooting.md (100%) rename {plugin => plugins/azure}/skills/airunway-aks-setup/version.json (100%) rename {plugin => plugins/azure}/skills/appinsights-instrumentation/LICENSE.txt (100%) rename {plugin => plugins/azure}/skills/appinsights-instrumentation/SKILL.md (100%) rename {plugin => plugins/azure}/skills/appinsights-instrumentation/examples/appinsights.bicep (100%) rename {plugin => plugins/azure}/skills/appinsights-instrumentation/references/aspnetcore.md (100%) rename {plugin => plugins/azure}/skills/appinsights-instrumentation/references/auto.md (100%) rename {plugin => plugins/azure}/skills/appinsights-instrumentation/references/container-apps.md (100%) rename {plugin => plugins/azure}/skills/appinsights-instrumentation/references/nodejs.md (100%) rename {plugin => plugins/azure}/skills/appinsights-instrumentation/references/python.md (100%) rename {plugin => plugins/azure}/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-exporter-java.md (100%) rename {plugin => plugins/azure}/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-exporter-py.md (100%) rename {plugin => plugins/azure}/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-py.md (100%) rename {plugin => plugins/azure}/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-ts.md (100%) rename {plugin => plugins/azure}/skills/appinsights-instrumentation/scripts/appinsights.ps1 (100%) rename {plugin => plugins/azure}/skills/azure-ai/SKILL.md (100%) rename {plugin => plugins/azure}/skills/azure-ai/references/auth-best-practices.md (100%) rename {plugin => plugins/azure}/skills/azure-ai/references/sdk/azure-ai-contentsafety-java.md (100%) rename {plugin => plugins/azure}/skills/azure-ai/references/sdk/azure-ai-contentsafety-py.md (100%) rename {plugin => plugins/azure}/skills/azure-ai/references/sdk/azure-ai-contentsafety-ts.md (100%) rename {plugin => plugins/azure}/skills/azure-ai/references/sdk/azure-ai-document-intelligence-dotnet.md (100%) rename {plugin => plugins/azure}/skills/azure-ai/references/sdk/azure-ai-document-intelligence-ts.md (100%) rename {plugin => plugins/azure}/skills/azure-ai/references/sdk/azure-ai-openai-dotnet.md (100%) rename {plugin => plugins/azure}/skills/azure-ai/references/sdk/azure-ai-transcription-py.md (100%) rename {plugin => plugins/azure}/skills/azure-ai/references/sdk/azure-ai-translation-text-py.md (100%) rename {plugin => plugins/azure}/skills/azure-ai/references/sdk/azure-ai-translation-ts.md (100%) rename {plugin => plugins/azure}/skills/azure-ai/references/sdk/azure-ai-vision-imageanalysis-java.md (100%) rename {plugin => plugins/azure}/skills/azure-ai/references/sdk/azure-ai-vision-imageanalysis-py.md (100%) rename {plugin => plugins/azure}/skills/azure-ai/references/sdk/azure-search-documents-dotnet.md (100%) rename {plugin => plugins/azure}/skills/azure-ai/references/sdk/azure-search-documents-py.md (100%) rename {plugin => plugins/azure}/skills/azure-ai/references/sdk/azure-search-documents-ts.md (100%) rename {plugin/skills/appinsights-instrumentation => plugins/azure/skills/azure-ai}/version.json (100%) rename {plugin => plugins/azure}/skills/azure-aigateway/SKILL.md (100%) rename {plugin => plugins/azure}/skills/azure-aigateway/references/auth-best-practices.md (100%) rename {plugin => plugins/azure}/skills/azure-aigateway/references/patterns.md (100%) rename {plugin => plugins/azure}/skills/azure-aigateway/references/policies.md (100%) rename {plugin => plugins/azure}/skills/azure-aigateway/references/sdk/azure-ai-contentsafety-py.md (100%) rename {plugin => plugins/azure}/skills/azure-aigateway/references/sdk/azure-ai-contentsafety-ts.md (100%) rename {plugin => plugins/azure}/skills/azure-aigateway/references/sdk/azure-mgmt-apimanagement-dotnet.md (100%) rename {plugin => plugins/azure}/skills/azure-aigateway/references/sdk/azure-mgmt-apimanagement-py.md (100%) rename {plugin => plugins/azure}/skills/azure-aigateway/references/troubleshooting.md (100%) rename {plugin => plugins/azure}/skills/azure-aigateway/version.json (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/SKILL.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/app-service/app-engine-to-app-service.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/app-service/assessment.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/app-service/beanstalk-to-app-service.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/app-service/code-migration.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/app-service/global-rules.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/app-service/heroku-to-app-service.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/container-apps/assessment-guide.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-assessment-guide.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-deployment-guide.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-to-container-apps.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/container-apps/deployment-guide.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/container-apps/fargate-assessment-guide.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/container-apps/fargate-deployment-guide.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/container-apps/fargate-to-container-apps.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/container-apps/k8s-to-container-apps.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/container-apps/spring-apps-to-aca.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/container-apps/spring-assessment-guide.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/container-apps/spring-dependency-patterns.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/container-apps/spring-deployment-guide.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/functions/assessment.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/functions/code-migration.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/functions/global-rules.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/functions/lambda-to-functions.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/functions/runtimes/csharp.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/functions/runtimes/java.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/functions/runtimes/javascript.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/functions/runtimes/powershell.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/functions/runtimes/python.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/services/functions/runtimes/typescript.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/references/workflow-details.md (100%) rename {plugin => plugins/azure}/skills/azure-cloud-migrate/version.json (100%) rename {plugin => plugins/azure}/skills/azure-compliance/SKILL.md (100%) rename {plugin => plugins/azure}/skills/azure-compliance/references/auth-best-practices.md (100%) rename {plugin => plugins/azure}/skills/azure-compliance/references/azqr-recommendations.md (100%) rename {plugin => plugins/azure}/skills/azure-compliance/references/azqr-remediation-patterns.md (100%) rename {plugin => plugins/azure}/skills/azure-compliance/references/azure-keyvault-expiration-audit.md (100%) rename {plugin => plugins/azure}/skills/azure-compliance/references/azure-quick-review.md (100%) rename {plugin => plugins/azure}/skills/azure-compliance/references/azure-resource-graph.md (100%) rename {plugin => plugins/azure}/skills/azure-compliance/references/sdk/azure-keyvault-certificates-rust.md (100%) rename {plugin => plugins/azure}/skills/azure-compliance/references/sdk/azure-keyvault-keys-rust.md (100%) rename {plugin => plugins/azure}/skills/azure-compliance/references/sdk/azure-keyvault-keys-ts.md (100%) rename {plugin => plugins/azure}/skills/azure-compliance/references/sdk/azure-keyvault-py.md (100%) rename {plugin => plugins/azure}/skills/azure-compliance/references/sdk/azure-keyvault-secrets-rust.md (100%) rename {plugin => plugins/azure}/skills/azure-compliance/references/sdk/azure-keyvault-secrets-ts.md (100%) rename {plugin => plugins/azure}/skills/azure-compliance/references/sdk/azure-security-keyvault-keys-dotnet.md (100%) rename {plugin => plugins/azure}/skills/azure-compliance/references/sdk/azure-security-keyvault-keys-java.md (100%) rename {plugin => plugins/azure}/skills/azure-compliance/references/sdk/azure-security-keyvault-secrets-java.md (100%) rename {plugin/skills/azure-ai => plugins/azure/skills/azure-compliance}/version.json (100%) rename {plugin => plugins/azure}/skills/azure-compute/SKILL.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/references/retail-prices-api.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/references/vm-families.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/references/vm-quotas.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/references/vmss-guide.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/version.json (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/capacity-reservation/capacity-reservation.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/capacity-reservation/references/association-disassociation.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/capacity-reservation/references/capacity-reservation-overview.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/essential-machine-management/essential-machine-management.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/essential-machine-management/references/emm-enable-flow-portal-guidance.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/essential-machine-management/references/emm-enable-flow.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/essential-machine-management/references/emm-overview.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/essential-machine-management/references/emm-prerequisites.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-creator/examples/bicep/README.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-creator/examples/bicep/main.bicep (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-creator/examples/terraform/README.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-creator/examples/terraform/main.tf (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-creator/examples/terraform/outputs.tf (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-creator/examples/terraform/variables.tf (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-creator/references/delivery-options/github-pr.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-creator/references/delivery-options/index.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-creator/references/delivery-options/print.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-creator/references/delivery-options/save-local.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-creator/references/depth-probe/beginner.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-creator/references/depth-probe/cost-deep.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-creator/references/depth-probe/index.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-creator/references/depth-probe/networking-deep.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-creator/references/depth-probe/security-deep.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-creator/references/depth-probe/spec-deep.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-creator/references/mcp-tools.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-creator/references/output-adapters/az-cli.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-creator/references/output-adapters/bicep.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-creator/references/output-adapters/index.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-creator/references/output-adapters/mcp-apply.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-creator/references/output-adapters/terraform.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-creator/references/plan-card.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-creator/references/validation-gates.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-creator/vm-creator.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-recommender/references/handoff-to-creator.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-recommender/references/web-fetch-policy.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-recommender/vm-recommender.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-troubleshooter/references/cannot-connect-to-vm.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-troubleshooter/references/credential-auth-errors.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-troubleshooter/references/firewall-blocking.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-troubleshooter/references/network-connectivity.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-troubleshooter/references/rdp-connectivity.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-troubleshooter/references/rdp-service-config.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-troubleshooter/references/ssh-connectivity.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-troubleshooter/references/vm-agent-not-responding.md (100%) rename {plugin => plugins/azure}/skills/azure-compute/workflows/vm-troubleshooter/vm-troubleshooter.md (100%) rename {plugin => plugins/azure}/skills/azure-cost/SKILL.md (100%) rename {plugin => plugins/azure}/skills/azure-cost/cost-forecast/error-handling.md (100%) rename {plugin => plugins/azure}/skills/azure-cost/cost-forecast/examples.md (100%) rename {plugin => plugins/azure}/skills/azure-cost/cost-forecast/guardrails.md (100%) rename {plugin => plugins/azure}/skills/azure-cost/cost-forecast/request-body-schema.md (100%) rename {plugin => plugins/azure}/skills/azure-cost/cost-forecast/workflow.md (100%) rename {plugin => plugins/azure}/skills/azure-cost/cost-optimization/auth-best-practices.md (100%) rename {plugin => plugins/azure}/skills/azure-cost/cost-optimization/azure-aks-anomalies.md (100%) rename {plugin => plugins/azure}/skills/azure-cost/cost-optimization/azure-aks-cost-addon.md (100%) rename {plugin => plugins/azure}/skills/azure-cost/cost-optimization/azure-quick-review.md (100%) rename {plugin => plugins/azure}/skills/azure-cost/cost-optimization/azure-resource-graph.md (100%) rename {plugin => plugins/azure}/skills/azure-cost/cost-optimization/report-template.md (100%) rename {plugin => plugins/azure}/skills/azure-cost/cost-optimization/sdk/azure-resource-manager-redis-dotnet.md (100%) rename {plugin => plugins/azure}/skills/azure-cost/cost-optimization/services/redis/azure-cache-for-redis.md (100%) rename {plugin => plugins/azure}/skills/azure-cost/cost-optimization/services/storage/azure-storage.md (100%) rename {plugin => plugins/azure}/skills/azure-cost/cost-optimization/workflow.md (100%) rename {plugin => plugins/azure}/skills/azure-cost/cost-query/dimensions-by-scope.md (100%) rename {plugin => plugins/azure}/skills/azure-cost/cost-query/error-handling.md (100%) rename {plugin => plugins/azure}/skills/azure-cost/cost-query/examples.md (100%) rename {plugin => plugins/azure}/skills/azure-cost/cost-query/guardrails.md (100%) rename {plugin => plugins/azure}/skills/azure-cost/cost-query/request-body-schema.md (100%) rename {plugin => plugins/azure}/skills/azure-cost/cost-query/workflow.md (100%) rename {plugin => plugins/azure}/skills/azure-cost/references/tools-and-best-practices.md (100%) rename {plugin => plugins/azure}/skills/azure-cost/version.json (100%) rename {plugin => plugins/azure}/skills/azure-deploy/SKILL.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/auth-best-practices.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/global-rules.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/live-role-verification.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/pre-deploy-checklist.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/README.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/azcli/README.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/azcli/errors.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/azcli/verify.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/azd/README.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/azd/ef-migrations.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/azd/errors.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/azd/functions-deploy.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/azd/post-deployment.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/azd/scripts/apply-migrations.ps1 (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/azd/scripts/apply-migrations.sh (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/azd/scripts/grant-and-migrate.ps1 (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/azd/scripts/grant-and-migrate.sh (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/azd/sql-entra-auth.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/azd/sql-managed-identity.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/azd/verify.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/bicep/README.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/bicep/errors.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/bicep/verify.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/cicd/README.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/cicd/errors.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/cicd/examples/azdo-azd.yml (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/cicd/examples/azdo-multistage.yml (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/cicd/examples/github-azd.yml (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/cicd/examples/github-bicep.yml (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/cicd/verify.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/terraform/README.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/terraform/errors.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/recipes/terraform/verify.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/region-availability.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/sdk/azd-deployment.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/sdk/azure-identity-dotnet.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/sdk/azure-identity-java.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/sdk/azure-identity-py.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/sdk/azure-identity-ts.md (100%) rename {plugin => plugins/azure}/skills/azure-deploy/references/troubleshooting.md (100%) rename {plugin/skills/azure-compliance => plugins/azure/skills/azure-deploy}/version.json (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/SKILL.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/references/app-service/README.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/references/azure-resource-graph.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/references/container-apps/README.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/references/functions/README.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/references/kql-queries.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/troubleshooting/aks/aks-troubleshooting.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/troubleshooting/aks/general-diagnostics.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/troubleshooting/aks/load-balancer-and-ingress.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/troubleshooting/aks/network-policy.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/troubleshooting/aks/networking.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/troubleshooting/aks/node-issues.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/troubleshooting/aks/pod-failures.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/troubleshooting/aks/references/aks-mcp.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/troubleshooting/aks/references/command-flows.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/troubleshooting/aks/references/inspektor-gadget.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/troubleshooting/aks/references/structured-input-modes.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/troubleshooting/aks/spot-and-zone-issues.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/troubleshooting/aks/upgrade-operations.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/troubleshooting/messaging/README.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/troubleshooting/messaging/auth-best-practices.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-dotnet.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-java.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-js.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-py.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-dotnet.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-java.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-js.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-py.md (100%) rename {plugin => plugins/azure}/skills/azure-diagnostics/troubleshooting/messaging/service-troubleshooting.md (100%) rename {plugin/skills/azure-deploy => plugins/azure/skills/azure-diagnostics}/version.json (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/SKILL.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/bicep-generation.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/constraints/README.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/constraints/ai-ml.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/constraints/compute-apps.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/constraints/compute-infra.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/constraints/data-analytics.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/constraints/data-relational.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/constraints/messaging.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/constraints/monitoring.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/constraints/networking-connectivity.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/constraints/networking-core.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/constraints/networking-traffic.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/constraints/security.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/deployment.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/pairing-checks.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/phases/1-extract-insights.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/phases/2-research-best-practices.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/phases/3-research-resources.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/phases/4-generate-plan.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/phases/5-verify.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/phases/6-generate-iac.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/phases/7-deploy.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/resources/README.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/resources/ai-ml.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/resources/compute-apps.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/resources/compute-infra.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/resources/data-analytics.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/resources/data-relational.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/resources/messaging.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/resources/monitoring.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/resources/networking-connectivity.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/resources/networking-core.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/resources/networking-traffic.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/resources/security.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/schema.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/terraform-generation.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/verification.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/waf-checklist.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/references/workflow.md (100%) rename {plugin => plugins/azure}/skills/azure-enterprise-infra-planner/version.json (100%) rename {plugin => plugins/azure}/skills/azure-kubernetes/SKILL.md (100%) rename {plugin => plugins/azure}/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/SKILL.md (100%) rename {plugin => plugins/azure}/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/common-fixes.md (100%) rename {plugin => plugins/azure}/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/constraint-spec-v1.yaml (100%) rename {plugin => plugins/azure}/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/mcp-integration.md (100%) rename {plugin => plugins/azure}/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/migration-guide-summary.md (100%) rename {plugin => plugins/azure}/skills/azure-kubernetes/references/azure-aks-autoscaler.md (100%) rename {plugin => plugins/azure}/skills/azure-kubernetes/references/azure-aks-rightsizing.md (100%) rename {plugin => plugins/azure}/skills/azure-kubernetes/references/azure-aks-spot.md (100%) rename {plugin => plugins/azure}/skills/azure-kubernetes/references/azure-aks-vpa.md (100%) rename {plugin => plugins/azure}/skills/azure-kubernetes/references/cli-reference.md (100%) rename {plugin/skills/azure-diagnostics => plugins/azure/skills/azure-kubernetes}/version.json (100%) rename {plugin => plugins/azure}/skills/azure-kusto/SKILL.md (100%) rename {plugin/skills/azure-kubernetes => plugins/azure/skills/azure-kusto}/version.json (100%) rename {plugin => plugins/azure}/skills/azure-messaging/SKILL.md (100%) rename {plugin/skills/azure-kusto => plugins/azure/skills/azure-messaging}/version.json (100%) rename {plugin => plugins/azure}/skills/azure-prepare/SKILL.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/analyze.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/apim.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/architecture.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/aspire.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/auth-best-practices.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/azure-context.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/functional-verification.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/generate.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/global-rules.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/plan-template.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/recipe-selection.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/recipes/azcli/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/recipes/azcli/commands.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/recipes/azcli/scripts.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/recipes/azd/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/recipes/azd/aspire.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/recipes/azd/azure-yaml.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/recipes/azd/docker.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/recipes/azd/iac-rules.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/recipes/azd/terraform.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/recipes/bicep/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/recipes/bicep/patterns.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/recipes/terraform/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/recipes/terraform/patterns.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/region-availability.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/requirements.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/research.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/resources-limits-quotas.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/runtimes/nodejs.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/scan.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/sdk/azd-deployment.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/sdk/azure-appconfiguration-java.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/sdk/azure-appconfiguration-py.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/sdk/azure-appconfiguration-ts.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/sdk/azure-identity-dotnet.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/sdk/azure-identity-java.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/sdk/azure-identity-py.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/sdk/azure-identity-ts.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/security.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/aks/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/aks/addons.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/aks/bicep.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/aks/manifests.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-insights/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/bicep.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/custom-domains.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/deployment-slots.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/networking.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/scaling.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/sku-selection.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/templates/recipes/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/templates/recipes/auth/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/dotnet.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/nodejs.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/python.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/templates/recipes/composition.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/dotnet.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/nodejs.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/python.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/templates/recipes/redis/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/dotnet.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/nodejs.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/python.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/templates/recipes/sql/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/dotnet.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/nodejs.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/python.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/templates/selection.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/templates/web-api.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/app-service/templates/web-app.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/container-apps/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/container-apps/bicep.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/container-apps/day2-operations.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/container-apps/environment.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/container-apps/health-probes.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/container-apps/networking.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/container-apps/revisions.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/container-apps/scaling.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/container-apps/terraform.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/cosmos-db/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/cosmos-db/bicep.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/cosmos-db/partitioning.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/cosmos-db/sdk.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/durable-task-scheduler/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/durable-task-scheduler/bicep.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/durable-task-scheduler/dotnet.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/durable-task-scheduler/java.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/durable-task-scheduler/javascript.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/durable-task-scheduler/python.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/event-grid/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/event-grid/bicep.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/event-grid/subscriptions.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/foundry/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/foundry/region-availability.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/aspire-containerapps.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/bicep.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/durable.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/base/eval/python.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/base/eval/summary.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/base/eval/typescript.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/eval/python.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/eval/summary.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/common/dotnet-entry-point.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/common/error-handling.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/common/health-check.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/common/nodejs-entry-point.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/composition.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/python.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/summary.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/typescript.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/durable/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/durable/eval/python.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/durable/eval/summary.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/eval/python.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/eval/summary.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/mcp/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/mcp/eval/python.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/mcp/eval/summary.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/python.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/summary.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/typescript.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/sql/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/sql/eval/python.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/sql/eval/summary.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/timer/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/timer/eval/python.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/recipes/timer/eval/summary.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/templates/selection.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/functions/terraform.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/key-vault/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/key-vault/bicep.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/key-vault/sdk.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/logic-apps/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/logic-apps/bicep.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/logic-apps/triggers.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/service-bus/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/service-bus/bicep.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/service-bus/patterns.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/sql-database/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/sql-database/auth.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/sql-database/bicep.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/sql-database/scripts/grant-sql-access.ps1 (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/sql-database/scripts/grant-sql-access.sh (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/sql-database/sdk.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/static-web-apps/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/static-web-apps/bicep.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/static-web-apps/deployment.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/static-web-apps/region-availability.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/static-web-apps/routing.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/static-web-apps/terraform.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/storage/README.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/storage/access.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/services/storage/bicep.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/references/specialized-routing.md (100%) rename {plugin => plugins/azure}/skills/azure-prepare/version.json (100%) rename {plugin => plugins/azure}/skills/azure-quotas/SKILL.md (100%) rename {plugin => plugins/azure}/skills/azure-quotas/references/advanced-commands.md (100%) rename {plugin => plugins/azure}/skills/azure-quotas/references/commands.md (100%) rename {plugin => plugins/azure}/skills/azure-quotas/scripts/check-quota.ps1 (100%) rename {plugin => plugins/azure}/skills/azure-quotas/scripts/check-quota.sh (100%) rename {plugin/skills/azure-messaging => plugins/azure/skills/azure-quotas}/version.json (100%) rename {plugin/skills/azure-quotas => plugins/azure/skills/azure-rbac}/version.json (100%) rename {plugin => plugins/azure}/skills/azure-reliability/SKILL.md (100%) rename {plugin => plugins/azure}/skills/azure-reliability/references/configure-health-probes.md (100%) rename {plugin => plugins/azure}/skills/azure-reliability/references/configure-multi-region.md (100%) rename {plugin => plugins/azure}/skills/azure-reliability/references/configure-storage.md (100%) rename {plugin => plugins/azure}/skills/azure-reliability/references/configure-zone-redundancy.md (100%) rename {plugin => plugins/azure}/skills/azure-reliability/references/health-probe-checks.md (100%) rename {plugin => plugins/azure}/skills/azure-reliability/references/iac-patching-bicep.md (100%) rename {plugin => plugins/azure}/skills/azure-reliability/references/iac-patching-terraform.md (100%) rename {plugin => plugins/azure}/skills/azure-reliability/references/multi-region-checks.md (100%) rename {plugin => plugins/azure}/skills/azure-reliability/references/services/app-service/reliability.md (100%) rename {plugin => plugins/azure}/skills/azure-reliability/references/services/functions/reliability.md (100%) rename {plugin => plugins/azure}/skills/azure-reliability/references/storage-redundancy-checks.md (100%) rename {plugin => plugins/azure}/skills/azure-reliability/references/zone-redundancy-checks.md (100%) rename {plugin => plugins/azure}/skills/azure-reliability/version.json (100%) rename {plugin => plugins/azure}/skills/azure-resource-lookup/SKILL.md (100%) rename {plugin => plugins/azure}/skills/azure-resource-lookup/references/azure-resource-graph.md (100%) rename {plugin => plugins/azure}/skills/azure-resource-lookup/version.json (100%) rename {plugin => plugins/azure}/skills/azure-resource-visualizer/SKILL.md (100%) rename {plugin => plugins/azure}/skills/azure-resource-visualizer/assets/example-diagram.md (100%) rename {plugin => plugins/azure}/skills/azure-resource-visualizer/assets/template-architecture.md (100%) rename {plugin => plugins/azure}/skills/azure-resource-visualizer/references/azure-resource-graph.md (100%) rename {plugin => plugins/azure}/skills/azure-resource-visualizer/version.json (100%) rename {plugin => plugins/azure}/skills/azure-storage/SKILL.md (100%) rename {plugin => plugins/azure}/skills/azure-storage/references/auth-best-practices.md (100%) rename {plugin => plugins/azure}/skills/azure-storage/references/sdk-usage.md (100%) rename {plugin => plugins/azure}/skills/azure-storage/references/sdk/azure-data-tables-java.md (100%) rename {plugin => plugins/azure}/skills/azure-storage/references/sdk/azure-data-tables-py.md (100%) rename {plugin => plugins/azure}/skills/azure-storage/references/sdk/azure-storage-blob-java.md (100%) rename {plugin => plugins/azure}/skills/azure-storage/references/sdk/azure-storage-blob-py.md (100%) rename {plugin => plugins/azure}/skills/azure-storage/references/sdk/azure-storage-blob-rust.md (100%) rename {plugin => plugins/azure}/skills/azure-storage/references/sdk/azure-storage-blob-ts.md (100%) rename {plugin => plugins/azure}/skills/azure-storage/references/sdk/azure-storage-file-datalake-py.md (100%) rename {plugin => plugins/azure}/skills/azure-storage/references/sdk/azure-storage-file-share-py.md (100%) rename {plugin => plugins/azure}/skills/azure-storage/references/sdk/azure-storage-file-share-ts.md (100%) rename {plugin => plugins/azure}/skills/azure-storage/references/sdk/azure-storage-queue-py.md (100%) rename {plugin => plugins/azure}/skills/azure-storage/references/sdk/azure-storage-queue-ts.md (100%) rename {plugin => plugins/azure}/skills/azure-storage/version.json (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/SKILL.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/global-rules.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/languages/java/INSTRUCTION.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/languages/java/README.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle-settings.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle-toml.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/languages/java/bom-migration/bom-maven.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/languages/java/bom-migration/bom-migration.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/languages/java/bom-migration/bom-validation.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/languages/java/package-specific/com.microsoft.azure.eventprocessorhost.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/languages/java/package-specific/com.microsoft.azure.management.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/languages/java/rules/efficiency.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/languages/java/rules/execution-guidelines.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/languages/java/rules/review-code-changes.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/languages/java/rules/troubleshooting.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/languages/java/rules/upgrade-strategy.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/languages/java/rules/upgrade-success-criteria.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/languages/java/scripts/upgrade_bom.py (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/languages/java/templates/PLAN_TEMPLATE.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/languages/java/templates/PROGRESS_TEMPLATE.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/languages/java/templates/SUMMARY_TEMPLATE.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/languages/java/workflow/phase-1-precheck.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/languages/java/workflow/phase-2-plan.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/languages/java/workflow/phase-3-execute.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/languages/java/workflow/phase-4-summarize.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/services/functions/assessment.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/services/functions/automation.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/services/functions/consumption-to-flex.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/services/redis/redis-to-amr.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/references/workflow-details.md (100%) rename {plugin => plugins/azure}/skills/azure-upgrade/version.json (100%) rename {plugin => plugins/azure}/skills/azure-validate/SKILL.md (100%) rename {plugin => plugins/azure}/skills/azure-validate/references/aspire-functions-secrets.md (100%) rename {plugin => plugins/azure}/skills/azure-validate/references/global-rules.md (100%) rename {plugin => plugins/azure}/skills/azure-validate/references/policy-validation.md (100%) rename {plugin => plugins/azure}/skills/azure-validate/references/recipes/README.md (100%) rename {plugin => plugins/azure}/skills/azure-validate/references/recipes/azcli/README.md (100%) rename {plugin => plugins/azure}/skills/azure-validate/references/recipes/azcli/errors.md (100%) rename {plugin => plugins/azure}/skills/azure-validate/references/recipes/azd/README.md (100%) rename {plugin => plugins/azure}/skills/azure-validate/references/recipes/azd/aspire.md (100%) rename {plugin => plugins/azure}/skills/azure-validate/references/recipes/azd/environment.md (100%) rename {plugin => plugins/azure}/skills/azure-validate/references/recipes/azd/errors.md (100%) rename {plugin => plugins/azure}/skills/azure-validate/references/recipes/bicep/README.md (100%) rename {plugin => plugins/azure}/skills/azure-validate/references/recipes/bicep/errors.md (100%) rename {plugin => plugins/azure}/skills/azure-validate/references/recipes/terraform/README.md (100%) rename {plugin => plugins/azure}/skills/azure-validate/references/recipes/terraform/errors.md (100%) rename {plugin => plugins/azure}/skills/azure-validate/references/region-availability.md (100%) rename {plugin => plugins/azure}/skills/azure-validate/references/role-verification.md (100%) rename {plugin => plugins/azure}/skills/azure-validate/version.json (100%) rename {plugin => plugins/azure}/skills/entra-agent-id/SKILL.md (100%) rename {plugin => plugins/azure}/skills/entra-agent-id/references/known-limitations.md (100%) rename {plugin => plugins/azure}/skills/entra-agent-id/references/oauth2-token-flow.md (100%) rename {plugin => plugins/azure}/skills/entra-agent-id/references/obo-blueprint-setup.md (100%) rename {plugin => plugins/azure}/skills/entra-agent-id/references/runtime-token-exchange.md (100%) rename {plugin => plugins/azure}/skills/entra-agent-id/references/sdk-sidecar-deployment.md (100%) rename {plugin => plugins/azure}/skills/entra-agent-id/references/sdk-sidecar.md (100%) rename {plugin => plugins/azure}/skills/entra-agent-id/version.json (100%) rename {plugin => plugins/azure}/skills/entra-app-registration/SKILL.md (100%) rename {plugin => plugins/azure}/skills/entra-app-registration/references/BICEP-EXAMPLE.bicep (100%) rename {plugin => plugins/azure}/skills/entra-app-registration/references/api-permissions.md (100%) rename {plugin => plugins/azure}/skills/entra-app-registration/references/auth-best-practices.md (100%) rename {plugin => plugins/azure}/skills/entra-app-registration/references/cli-commands.md (100%) rename {plugin => plugins/azure}/skills/entra-app-registration/references/console-app-example.md (100%) rename {plugin => plugins/azure}/skills/entra-app-registration/references/first-app-registration.md (100%) rename {plugin => plugins/azure}/skills/entra-app-registration/references/oauth-flows.md (100%) rename {plugin => plugins/azure}/skills/entra-app-registration/references/sdk/azure-identity-dotnet.md (100%) rename {plugin => plugins/azure}/skills/entra-app-registration/references/sdk/azure-identity-java.md (100%) rename {plugin => plugins/azure}/skills/entra-app-registration/references/sdk/azure-identity-py.md (100%) rename {plugin => plugins/azure}/skills/entra-app-registration/references/sdk/azure-identity-rust.md (100%) rename {plugin => plugins/azure}/skills/entra-app-registration/references/sdk/azure-identity-ts.md (100%) rename {plugin => plugins/azure}/skills/entra-app-registration/references/sdk/azure-keyvault-py.md (100%) rename {plugin => plugins/azure}/skills/entra-app-registration/references/sdk/azure-keyvault-secrets-ts.md (100%) rename {plugin => plugins/azure}/skills/entra-app-registration/references/sdk/microsoft-azure-webjobs-extensions-authentication-events-dotnet.md (100%) rename {plugin => plugins/azure}/skills/entra-app-registration/references/troubleshooting.md (100%) rename {plugin => plugins/azure}/skills/entra-app-registration/version.json (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/.gitignore (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/SKILL.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/SKILL.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/references/agentic-rft.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/references/dataset-formats.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/references/deployment.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/references/evaluation.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/references/grader-design.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/references/hyperparameters.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/references/large-file-uploads.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/references/platform-gotchas.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/references/reward-hacking.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/references/training-curves.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/references/training-types.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/references/vision-fine-tuning.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/scripts/calibrate_grader.py (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/scripts/check_training.py (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/scripts/cleanup.py (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/scripts/common.py (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/scripts/convert_dataset.py (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/scripts/deploy_model.py (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/scripts/evaluate_model.py (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/scripts/generate_distillation_data.py (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/scripts/monitor_training.py (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/scripts/score_dataset.py (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/scripts/submit_training.py (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/scripts/validate/__init__.py (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/scripts/validate/data_stats.py (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/scripts/validate/validate_dpo.py (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/scripts/validate/validate_rft.py (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/scripts/validate/validate_sft.py (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/workflows/dataset-creation.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/workflows/diagnose-poor-results.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/workflows/full-pipeline.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/workflows/iterative-training.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/finetuning/workflows/quickstart.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/agent-optimizer/agent-optimizer.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/azd-setup.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/eval-yaml.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/optimize-workflow.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/python-patterns.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/scaffold.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/cicd/cicd.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/create-hosted.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/create-prompt.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/quick-start-hosted.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/agent-tools.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/agentframework.md (100%) create mode 100644 plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/azd-ai-cli.md rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/enable-incoming-a2a.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/foundry-tool-catalog.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-api-create.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-attach.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-manage.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/local-run.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/sdk-operations.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-attach.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-manage.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-toolbox-attach.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/tool-a2a.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/tool-azure-ai-search.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/tool-bing-grounding.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/tool-code-interpreter.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/tool-fabric-iq.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/tool-file-search.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/tool-function-calling.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/tool-mcp.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/tool-memory.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/tool-openapi.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/tool-tool-search.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/tool-web-search.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/tool-work-iq.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/toolbox-reference.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/tools.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/references/use-toolbox-in-hosted-agent.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/scripts/check-canvas-entry.ps1 (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/scripts/check-canvas-entry.sh (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/scripts/resolve-project-id.ps1 (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/scripts/resolve-project-id.sh (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/scripts/verify-environment.ps1 (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/create/scripts/verify-environment.sh (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/deploy/deploy.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/eval-datasets/eval-datasets.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-comparison.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-curation.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-organization.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-versioning.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-lineage.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-regression.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-trending.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/eval-datasets/references/generate-seed-dataset.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/eval-datasets/references/trace-to-dataset.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/invocations-ws/invocations-ws.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/invocations-ws/references/invocations-ws-protocol.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/invoke/invoke.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/invoke/references/file-operations.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/invoke/references/invocations-protocol.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/invoke/references/session-management.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/observe/observe.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/observe/references/analyze-results.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/observe/references/cicd-monitoring.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/observe/references/compare-iterate.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/observe/references/continuous-eval.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/observe/references/deploy-and-setup.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/observe/references/evaluate-step.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/observe/references/evaluation-suite-generation.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/observe/references/optimize-deploy.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/routine/references/azure-yaml.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/routine/references/cli-crud.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/routine/routine.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/trace/references/analyze-failures.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/trace/references/analyze-latency.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/trace/references/conversation-detail.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/trace/references/eval-correlation.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/trace/references/kql-templates.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/trace/references/search-traces.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/trace/references/tracing-insights-api.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/trace/trace.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/foundry-agent/troubleshoot/troubleshoot.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/models/deploy-model/SKILL.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/models/deploy-model/TEST_PROMPTS.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/models/deploy-model/capacity/SKILL.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/models/deploy-model/capacity/scripts/discover_and_rank.ps1 (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/models/deploy-model/capacity/scripts/discover_and_rank.sh (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/models/deploy-model/capacity/scripts/query_capacity.ps1 (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/models/deploy-model/capacity/scripts/query_capacity.sh (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/models/deploy-model/customize/EXAMPLES.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/models/deploy-model/customize/SKILL.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/models/deploy-model/customize/references/customize-guides.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/models/deploy-model/customize/references/customize-workflow.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/models/deploy-model/preset/EXAMPLES.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/models/deploy-model/preset/SKILL.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/models/deploy-model/preset/references/preset-workflow.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/models/deploy-model/preset/references/workflow.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/models/deploy-model/scripts/generate_deployment_url.ps1 (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/models/deploy-model/scripts/generate_deployment_url.sh (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/project/connections.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/project/create/create-foundry-project.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/quota/quota.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/quota/references/capacity-planning.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/quota/references/error-resolution.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/quota/references/optimization.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/quota/references/ptu-guide.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/quota/references/troubleshooting.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/quota/references/workflows.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/rbac/rbac.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/references/agent-metadata-contract.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/references/auth-best-practices.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/references/sdk/foundry-sdk-py.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/references/standard-agent-setup.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/resource/create/create-foundry-resource.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/resource/create/references/patterns.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/resource/create/references/troubleshooting.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/resource/create/references/workflows.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/resource/private-network/private-network.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/resource/private-network/references/custom-template-adaptation.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/resource/private-network/references/deploy.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/resource/private-network/references/end-to-end-test.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/resource/private-network/references/intake.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/resource/private-network/references/post-deployment-validation.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/resource/private-network/references/scaffold.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/resource/private-network/references/template-index.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/resource/private-network/references/vpn-dns-setup.bicep (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/resource/private-network/references/vpn-dns-setup.md (100%) rename {plugin => plugins/azure}/skills/microsoft-foundry/version.json (100%) rename {plugin => plugins/azure}/skills/python-appservice-deploy/SKILL.md (100%) rename {plugin => plugins/azure}/skills/python-appservice-deploy/references/create-app.md (100%) rename {plugin => plugins/azure}/skills/python-appservice-deploy/references/deploy-azcli.md (100%) rename {plugin => plugins/azure}/skills/python-appservice-deploy/references/deploy-azd.md (100%) rename {plugin => plugins/azure}/skills/python-appservice-deploy/references/detect.md (100%) rename {plugin => plugins/azure}/skills/python-appservice-deploy/references/errors.md (100%) rename {plugin => plugins/azure}/skills/python-appservice-deploy/references/post-deploy-message.md (100%) rename {plugin => plugins/azure}/skills/python-appservice-deploy/references/startup-commands.md (100%) rename {plugin => plugins/azure}/skills/python-appservice-deploy/references/transient-retry.md (100%) rename {plugin => plugins/azure}/skills/python-appservice-deploy/scripts/generate-app-name.ps1 (100%) rename {plugin => plugins/azure}/skills/python-appservice-deploy/scripts/generate-app-name.sh (100%) rename {plugin => plugins/azure}/skills/python-appservice-deploy/scripts/retry-az-create.ps1 (100%) rename {plugin => plugins/azure}/skills/python-appservice-deploy/scripts/retry-az-create.sh (100%) rename {plugin => plugins/azure}/skills/python-appservice-deploy/version.json (100%) rename {plugin => plugins/azure}/version.json (100%) diff --git a/plugin/.claude-plugin/plugin.json b/plugins/azure/.claude-plugin/plugin.json similarity index 100% rename from plugin/.claude-plugin/plugin.json rename to plugins/azure/.claude-plugin/plugin.json diff --git a/plugin/.cursor-plugin/plugin.json b/plugins/azure/.cursor-plugin/plugin.json similarity index 100% rename from plugin/.cursor-plugin/plugin.json rename to plugins/azure/.cursor-plugin/plugin.json diff --git a/plugin/.mcp.json b/plugins/azure/.mcp.json similarity index 100% rename from plugin/.mcp.json rename to plugins/azure/.mcp.json diff --git a/plugin/.plugin/plugin.json b/plugins/azure/.plugin/plugin.json similarity index 100% rename from plugin/.plugin/plugin.json rename to plugins/azure/.plugin/plugin.json diff --git a/plugin/LICENSE b/plugins/azure/LICENSE similarity index 100% rename from plugin/LICENSE rename to plugins/azure/LICENSE diff --git a/plugin/README.md b/plugins/azure/README.md similarity index 100% rename from plugin/README.md rename to plugins/azure/README.md diff --git a/plugin/assets/azure-logo.svg b/plugins/azure/assets/azure-logo.svg similarity index 100% rename from plugin/assets/azure-logo.svg rename to plugins/azure/assets/azure-logo.svg diff --git a/plugin/gemini-extension.json b/plugins/azure/gemini-extension.json similarity index 100% rename from plugin/gemini-extension.json rename to plugins/azure/gemini-extension.json diff --git a/plugin/hooks/claude-hooks.json b/plugins/azure/hooks/claude-hooks.json similarity index 100% rename from plugin/hooks/claude-hooks.json rename to plugins/azure/hooks/claude-hooks.json diff --git a/plugin/hooks/cursor-hooks.json b/plugins/azure/hooks/cursor-hooks.json similarity index 100% rename from plugin/hooks/cursor-hooks.json rename to plugins/azure/hooks/cursor-hooks.json diff --git a/plugin/hooks/hooks.json b/plugins/azure/hooks/hooks.json similarity index 100% rename from plugin/hooks/hooks.json rename to plugins/azure/hooks/hooks.json diff --git a/plugin/hooks/scripts/track-telemetry.ps1 b/plugins/azure/hooks/scripts/track-telemetry.ps1 similarity index 100% rename from plugin/hooks/scripts/track-telemetry.ps1 rename to plugins/azure/hooks/scripts/track-telemetry.ps1 diff --git a/plugin/hooks/scripts/track-telemetry.sh b/plugins/azure/hooks/scripts/track-telemetry.sh similarity index 100% rename from plugin/hooks/scripts/track-telemetry.sh rename to plugins/azure/hooks/scripts/track-telemetry.sh diff --git a/plugin/skills/airunway-aks-setup/SKILL.md b/plugins/azure/skills/airunway-aks-setup/SKILL.md similarity index 100% rename from plugin/skills/airunway-aks-setup/SKILL.md rename to plugins/azure/skills/airunway-aks-setup/SKILL.md diff --git a/plugin/skills/airunway-aks-setup/references/gpu-profiles.md b/plugins/azure/skills/airunway-aks-setup/references/gpu-profiles.md similarity index 100% rename from plugin/skills/airunway-aks-setup/references/gpu-profiles.md rename to plugins/azure/skills/airunway-aks-setup/references/gpu-profiles.md diff --git a/plugin/skills/airunway-aks-setup/references/model-sizing.md b/plugins/azure/skills/airunway-aks-setup/references/model-sizing.md similarity index 100% rename from plugin/skills/airunway-aks-setup/references/model-sizing.md rename to plugins/azure/skills/airunway-aks-setup/references/model-sizing.md diff --git a/plugin/skills/airunway-aks-setup/references/powershell-notes.md b/plugins/azure/skills/airunway-aks-setup/references/powershell-notes.md similarity index 100% rename from plugin/skills/airunway-aks-setup/references/powershell-notes.md rename to plugins/azure/skills/airunway-aks-setup/references/powershell-notes.md diff --git a/plugin/skills/airunway-aks-setup/references/steps/step-1-verify.md b/plugins/azure/skills/airunway-aks-setup/references/steps/step-1-verify.md similarity index 100% rename from plugin/skills/airunway-aks-setup/references/steps/step-1-verify.md rename to plugins/azure/skills/airunway-aks-setup/references/steps/step-1-verify.md diff --git a/plugin/skills/airunway-aks-setup/references/steps/step-2-controller.md b/plugins/azure/skills/airunway-aks-setup/references/steps/step-2-controller.md similarity index 100% rename from plugin/skills/airunway-aks-setup/references/steps/step-2-controller.md rename to plugins/azure/skills/airunway-aks-setup/references/steps/step-2-controller.md diff --git a/plugin/skills/airunway-aks-setup/references/steps/step-3-gpu.md b/plugins/azure/skills/airunway-aks-setup/references/steps/step-3-gpu.md similarity index 100% rename from plugin/skills/airunway-aks-setup/references/steps/step-3-gpu.md rename to plugins/azure/skills/airunway-aks-setup/references/steps/step-3-gpu.md diff --git a/plugin/skills/airunway-aks-setup/references/steps/step-4-provider.md b/plugins/azure/skills/airunway-aks-setup/references/steps/step-4-provider.md similarity index 100% rename from plugin/skills/airunway-aks-setup/references/steps/step-4-provider.md rename to plugins/azure/skills/airunway-aks-setup/references/steps/step-4-provider.md diff --git a/plugin/skills/airunway-aks-setup/references/steps/step-5-deploy.md b/plugins/azure/skills/airunway-aks-setup/references/steps/step-5-deploy.md similarity index 100% rename from plugin/skills/airunway-aks-setup/references/steps/step-5-deploy.md rename to plugins/azure/skills/airunway-aks-setup/references/steps/step-5-deploy.md diff --git a/plugin/skills/airunway-aks-setup/references/steps/step-6-summary.md b/plugins/azure/skills/airunway-aks-setup/references/steps/step-6-summary.md similarity index 100% rename from plugin/skills/airunway-aks-setup/references/steps/step-6-summary.md rename to plugins/azure/skills/airunway-aks-setup/references/steps/step-6-summary.md diff --git a/plugin/skills/airunway-aks-setup/references/troubleshooting.md b/plugins/azure/skills/airunway-aks-setup/references/troubleshooting.md similarity index 100% rename from plugin/skills/airunway-aks-setup/references/troubleshooting.md rename to plugins/azure/skills/airunway-aks-setup/references/troubleshooting.md diff --git a/plugin/skills/airunway-aks-setup/version.json b/plugins/azure/skills/airunway-aks-setup/version.json similarity index 100% rename from plugin/skills/airunway-aks-setup/version.json rename to plugins/azure/skills/airunway-aks-setup/version.json diff --git a/plugin/skills/appinsights-instrumentation/LICENSE.txt b/plugins/azure/skills/appinsights-instrumentation/LICENSE.txt similarity index 100% rename from plugin/skills/appinsights-instrumentation/LICENSE.txt rename to plugins/azure/skills/appinsights-instrumentation/LICENSE.txt diff --git a/plugin/skills/appinsights-instrumentation/SKILL.md b/plugins/azure/skills/appinsights-instrumentation/SKILL.md similarity index 100% rename from plugin/skills/appinsights-instrumentation/SKILL.md rename to plugins/azure/skills/appinsights-instrumentation/SKILL.md diff --git a/plugin/skills/appinsights-instrumentation/examples/appinsights.bicep b/plugins/azure/skills/appinsights-instrumentation/examples/appinsights.bicep similarity index 100% rename from plugin/skills/appinsights-instrumentation/examples/appinsights.bicep rename to plugins/azure/skills/appinsights-instrumentation/examples/appinsights.bicep diff --git a/plugin/skills/appinsights-instrumentation/references/aspnetcore.md b/plugins/azure/skills/appinsights-instrumentation/references/aspnetcore.md similarity index 100% rename from plugin/skills/appinsights-instrumentation/references/aspnetcore.md rename to plugins/azure/skills/appinsights-instrumentation/references/aspnetcore.md diff --git a/plugin/skills/appinsights-instrumentation/references/auto.md b/plugins/azure/skills/appinsights-instrumentation/references/auto.md similarity index 100% rename from plugin/skills/appinsights-instrumentation/references/auto.md rename to plugins/azure/skills/appinsights-instrumentation/references/auto.md diff --git a/plugin/skills/appinsights-instrumentation/references/container-apps.md b/plugins/azure/skills/appinsights-instrumentation/references/container-apps.md similarity index 100% rename from plugin/skills/appinsights-instrumentation/references/container-apps.md rename to plugins/azure/skills/appinsights-instrumentation/references/container-apps.md diff --git a/plugin/skills/appinsights-instrumentation/references/nodejs.md b/plugins/azure/skills/appinsights-instrumentation/references/nodejs.md similarity index 100% rename from plugin/skills/appinsights-instrumentation/references/nodejs.md rename to plugins/azure/skills/appinsights-instrumentation/references/nodejs.md diff --git a/plugin/skills/appinsights-instrumentation/references/python.md b/plugins/azure/skills/appinsights-instrumentation/references/python.md similarity index 100% rename from plugin/skills/appinsights-instrumentation/references/python.md rename to plugins/azure/skills/appinsights-instrumentation/references/python.md diff --git a/plugin/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-exporter-java.md b/plugins/azure/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-exporter-java.md similarity index 100% rename from plugin/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-exporter-java.md rename to plugins/azure/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-exporter-java.md diff --git a/plugin/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-exporter-py.md b/plugins/azure/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-exporter-py.md similarity index 100% rename from plugin/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-exporter-py.md rename to plugins/azure/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-exporter-py.md diff --git a/plugin/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-py.md b/plugins/azure/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-py.md similarity index 100% rename from plugin/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-py.md rename to plugins/azure/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-py.md diff --git a/plugin/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-ts.md b/plugins/azure/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-ts.md similarity index 100% rename from plugin/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-ts.md rename to plugins/azure/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-ts.md diff --git a/plugin/skills/appinsights-instrumentation/scripts/appinsights.ps1 b/plugins/azure/skills/appinsights-instrumentation/scripts/appinsights.ps1 similarity index 100% rename from plugin/skills/appinsights-instrumentation/scripts/appinsights.ps1 rename to plugins/azure/skills/appinsights-instrumentation/scripts/appinsights.ps1 diff --git a/plugin/skills/azure-ai/SKILL.md b/plugins/azure/skills/azure-ai/SKILL.md similarity index 100% rename from plugin/skills/azure-ai/SKILL.md rename to plugins/azure/skills/azure-ai/SKILL.md diff --git a/plugin/skills/azure-ai/references/auth-best-practices.md b/plugins/azure/skills/azure-ai/references/auth-best-practices.md similarity index 100% rename from plugin/skills/azure-ai/references/auth-best-practices.md rename to plugins/azure/skills/azure-ai/references/auth-best-practices.md diff --git a/plugin/skills/azure-ai/references/sdk/azure-ai-contentsafety-java.md b/plugins/azure/skills/azure-ai/references/sdk/azure-ai-contentsafety-java.md similarity index 100% rename from plugin/skills/azure-ai/references/sdk/azure-ai-contentsafety-java.md rename to plugins/azure/skills/azure-ai/references/sdk/azure-ai-contentsafety-java.md diff --git a/plugin/skills/azure-ai/references/sdk/azure-ai-contentsafety-py.md b/plugins/azure/skills/azure-ai/references/sdk/azure-ai-contentsafety-py.md similarity index 100% rename from plugin/skills/azure-ai/references/sdk/azure-ai-contentsafety-py.md rename to plugins/azure/skills/azure-ai/references/sdk/azure-ai-contentsafety-py.md diff --git a/plugin/skills/azure-ai/references/sdk/azure-ai-contentsafety-ts.md b/plugins/azure/skills/azure-ai/references/sdk/azure-ai-contentsafety-ts.md similarity index 100% rename from plugin/skills/azure-ai/references/sdk/azure-ai-contentsafety-ts.md rename to plugins/azure/skills/azure-ai/references/sdk/azure-ai-contentsafety-ts.md diff --git a/plugin/skills/azure-ai/references/sdk/azure-ai-document-intelligence-dotnet.md b/plugins/azure/skills/azure-ai/references/sdk/azure-ai-document-intelligence-dotnet.md similarity index 100% rename from plugin/skills/azure-ai/references/sdk/azure-ai-document-intelligence-dotnet.md rename to plugins/azure/skills/azure-ai/references/sdk/azure-ai-document-intelligence-dotnet.md diff --git a/plugin/skills/azure-ai/references/sdk/azure-ai-document-intelligence-ts.md b/plugins/azure/skills/azure-ai/references/sdk/azure-ai-document-intelligence-ts.md similarity index 100% rename from plugin/skills/azure-ai/references/sdk/azure-ai-document-intelligence-ts.md rename to plugins/azure/skills/azure-ai/references/sdk/azure-ai-document-intelligence-ts.md diff --git a/plugin/skills/azure-ai/references/sdk/azure-ai-openai-dotnet.md b/plugins/azure/skills/azure-ai/references/sdk/azure-ai-openai-dotnet.md similarity index 100% rename from plugin/skills/azure-ai/references/sdk/azure-ai-openai-dotnet.md rename to plugins/azure/skills/azure-ai/references/sdk/azure-ai-openai-dotnet.md diff --git a/plugin/skills/azure-ai/references/sdk/azure-ai-transcription-py.md b/plugins/azure/skills/azure-ai/references/sdk/azure-ai-transcription-py.md similarity index 100% rename from plugin/skills/azure-ai/references/sdk/azure-ai-transcription-py.md rename to plugins/azure/skills/azure-ai/references/sdk/azure-ai-transcription-py.md diff --git a/plugin/skills/azure-ai/references/sdk/azure-ai-translation-text-py.md b/plugins/azure/skills/azure-ai/references/sdk/azure-ai-translation-text-py.md similarity index 100% rename from plugin/skills/azure-ai/references/sdk/azure-ai-translation-text-py.md rename to plugins/azure/skills/azure-ai/references/sdk/azure-ai-translation-text-py.md diff --git a/plugin/skills/azure-ai/references/sdk/azure-ai-translation-ts.md b/plugins/azure/skills/azure-ai/references/sdk/azure-ai-translation-ts.md similarity index 100% rename from plugin/skills/azure-ai/references/sdk/azure-ai-translation-ts.md rename to plugins/azure/skills/azure-ai/references/sdk/azure-ai-translation-ts.md diff --git a/plugin/skills/azure-ai/references/sdk/azure-ai-vision-imageanalysis-java.md b/plugins/azure/skills/azure-ai/references/sdk/azure-ai-vision-imageanalysis-java.md similarity index 100% rename from plugin/skills/azure-ai/references/sdk/azure-ai-vision-imageanalysis-java.md rename to plugins/azure/skills/azure-ai/references/sdk/azure-ai-vision-imageanalysis-java.md diff --git a/plugin/skills/azure-ai/references/sdk/azure-ai-vision-imageanalysis-py.md b/plugins/azure/skills/azure-ai/references/sdk/azure-ai-vision-imageanalysis-py.md similarity index 100% rename from plugin/skills/azure-ai/references/sdk/azure-ai-vision-imageanalysis-py.md rename to plugins/azure/skills/azure-ai/references/sdk/azure-ai-vision-imageanalysis-py.md diff --git a/plugin/skills/azure-ai/references/sdk/azure-search-documents-dotnet.md b/plugins/azure/skills/azure-ai/references/sdk/azure-search-documents-dotnet.md similarity index 100% rename from plugin/skills/azure-ai/references/sdk/azure-search-documents-dotnet.md rename to plugins/azure/skills/azure-ai/references/sdk/azure-search-documents-dotnet.md diff --git a/plugin/skills/azure-ai/references/sdk/azure-search-documents-py.md b/plugins/azure/skills/azure-ai/references/sdk/azure-search-documents-py.md similarity index 100% rename from plugin/skills/azure-ai/references/sdk/azure-search-documents-py.md rename to plugins/azure/skills/azure-ai/references/sdk/azure-search-documents-py.md diff --git a/plugin/skills/azure-ai/references/sdk/azure-search-documents-ts.md b/plugins/azure/skills/azure-ai/references/sdk/azure-search-documents-ts.md similarity index 100% rename from plugin/skills/azure-ai/references/sdk/azure-search-documents-ts.md rename to plugins/azure/skills/azure-ai/references/sdk/azure-search-documents-ts.md diff --git a/plugin/skills/appinsights-instrumentation/version.json b/plugins/azure/skills/azure-ai/version.json similarity index 100% rename from plugin/skills/appinsights-instrumentation/version.json rename to plugins/azure/skills/azure-ai/version.json diff --git a/plugin/skills/azure-aigateway/SKILL.md b/plugins/azure/skills/azure-aigateway/SKILL.md similarity index 100% rename from plugin/skills/azure-aigateway/SKILL.md rename to plugins/azure/skills/azure-aigateway/SKILL.md diff --git a/plugin/skills/azure-aigateway/references/auth-best-practices.md b/plugins/azure/skills/azure-aigateway/references/auth-best-practices.md similarity index 100% rename from plugin/skills/azure-aigateway/references/auth-best-practices.md rename to plugins/azure/skills/azure-aigateway/references/auth-best-practices.md diff --git a/plugin/skills/azure-aigateway/references/patterns.md b/plugins/azure/skills/azure-aigateway/references/patterns.md similarity index 100% rename from plugin/skills/azure-aigateway/references/patterns.md rename to plugins/azure/skills/azure-aigateway/references/patterns.md diff --git a/plugin/skills/azure-aigateway/references/policies.md b/plugins/azure/skills/azure-aigateway/references/policies.md similarity index 100% rename from plugin/skills/azure-aigateway/references/policies.md rename to plugins/azure/skills/azure-aigateway/references/policies.md diff --git a/plugin/skills/azure-aigateway/references/sdk/azure-ai-contentsafety-py.md b/plugins/azure/skills/azure-aigateway/references/sdk/azure-ai-contentsafety-py.md similarity index 100% rename from plugin/skills/azure-aigateway/references/sdk/azure-ai-contentsafety-py.md rename to plugins/azure/skills/azure-aigateway/references/sdk/azure-ai-contentsafety-py.md diff --git a/plugin/skills/azure-aigateway/references/sdk/azure-ai-contentsafety-ts.md b/plugins/azure/skills/azure-aigateway/references/sdk/azure-ai-contentsafety-ts.md similarity index 100% rename from plugin/skills/azure-aigateway/references/sdk/azure-ai-contentsafety-ts.md rename to plugins/azure/skills/azure-aigateway/references/sdk/azure-ai-contentsafety-ts.md diff --git a/plugin/skills/azure-aigateway/references/sdk/azure-mgmt-apimanagement-dotnet.md b/plugins/azure/skills/azure-aigateway/references/sdk/azure-mgmt-apimanagement-dotnet.md similarity index 100% rename from plugin/skills/azure-aigateway/references/sdk/azure-mgmt-apimanagement-dotnet.md rename to plugins/azure/skills/azure-aigateway/references/sdk/azure-mgmt-apimanagement-dotnet.md diff --git a/plugin/skills/azure-aigateway/references/sdk/azure-mgmt-apimanagement-py.md b/plugins/azure/skills/azure-aigateway/references/sdk/azure-mgmt-apimanagement-py.md similarity index 100% rename from plugin/skills/azure-aigateway/references/sdk/azure-mgmt-apimanagement-py.md rename to plugins/azure/skills/azure-aigateway/references/sdk/azure-mgmt-apimanagement-py.md diff --git a/plugin/skills/azure-aigateway/references/troubleshooting.md b/plugins/azure/skills/azure-aigateway/references/troubleshooting.md similarity index 100% rename from plugin/skills/azure-aigateway/references/troubleshooting.md rename to plugins/azure/skills/azure-aigateway/references/troubleshooting.md diff --git a/plugin/skills/azure-aigateway/version.json b/plugins/azure/skills/azure-aigateway/version.json similarity index 100% rename from plugin/skills/azure-aigateway/version.json rename to plugins/azure/skills/azure-aigateway/version.json diff --git a/plugin/skills/azure-cloud-migrate/SKILL.md b/plugins/azure/skills/azure-cloud-migrate/SKILL.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/SKILL.md rename to plugins/azure/skills/azure-cloud-migrate/SKILL.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/app-service/app-engine-to-app-service.md b/plugins/azure/skills/azure-cloud-migrate/references/services/app-service/app-engine-to-app-service.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/app-service/app-engine-to-app-service.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/app-service/app-engine-to-app-service.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/app-service/assessment.md b/plugins/azure/skills/azure-cloud-migrate/references/services/app-service/assessment.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/app-service/assessment.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/app-service/assessment.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/app-service/beanstalk-to-app-service.md b/plugins/azure/skills/azure-cloud-migrate/references/services/app-service/beanstalk-to-app-service.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/app-service/beanstalk-to-app-service.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/app-service/beanstalk-to-app-service.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/app-service/code-migration.md b/plugins/azure/skills/azure-cloud-migrate/references/services/app-service/code-migration.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/app-service/code-migration.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/app-service/code-migration.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/app-service/global-rules.md b/plugins/azure/skills/azure-cloud-migrate/references/services/app-service/global-rules.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/app-service/global-rules.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/app-service/global-rules.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/app-service/heroku-to-app-service.md b/plugins/azure/skills/azure-cloud-migrate/references/services/app-service/heroku-to-app-service.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/app-service/heroku-to-app-service.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/app-service/heroku-to-app-service.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/container-apps/assessment-guide.md b/plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/assessment-guide.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/container-apps/assessment-guide.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/assessment-guide.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-assessment-guide.md b/plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-assessment-guide.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-assessment-guide.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-assessment-guide.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-deployment-guide.md b/plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-deployment-guide.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-deployment-guide.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-deployment-guide.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-to-container-apps.md b/plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-to-container-apps.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-to-container-apps.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-to-container-apps.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/container-apps/deployment-guide.md b/plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/deployment-guide.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/container-apps/deployment-guide.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/deployment-guide.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/container-apps/fargate-assessment-guide.md b/plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/fargate-assessment-guide.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/container-apps/fargate-assessment-guide.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/fargate-assessment-guide.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/container-apps/fargate-deployment-guide.md b/plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/fargate-deployment-guide.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/container-apps/fargate-deployment-guide.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/fargate-deployment-guide.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/container-apps/fargate-to-container-apps.md b/plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/fargate-to-container-apps.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/container-apps/fargate-to-container-apps.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/fargate-to-container-apps.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/container-apps/k8s-to-container-apps.md b/plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/k8s-to-container-apps.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/container-apps/k8s-to-container-apps.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/k8s-to-container-apps.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/container-apps/spring-apps-to-aca.md b/plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/spring-apps-to-aca.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/container-apps/spring-apps-to-aca.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/spring-apps-to-aca.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/container-apps/spring-assessment-guide.md b/plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/spring-assessment-guide.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/container-apps/spring-assessment-guide.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/spring-assessment-guide.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/container-apps/spring-dependency-patterns.md b/plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/spring-dependency-patterns.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/container-apps/spring-dependency-patterns.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/spring-dependency-patterns.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/container-apps/spring-deployment-guide.md b/plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/spring-deployment-guide.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/container-apps/spring-deployment-guide.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/spring-deployment-guide.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/functions/assessment.md b/plugins/azure/skills/azure-cloud-migrate/references/services/functions/assessment.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/functions/assessment.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/functions/assessment.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/functions/code-migration.md b/plugins/azure/skills/azure-cloud-migrate/references/services/functions/code-migration.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/functions/code-migration.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/functions/code-migration.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/functions/global-rules.md b/plugins/azure/skills/azure-cloud-migrate/references/services/functions/global-rules.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/functions/global-rules.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/functions/global-rules.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/functions/lambda-to-functions.md b/plugins/azure/skills/azure-cloud-migrate/references/services/functions/lambda-to-functions.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/functions/lambda-to-functions.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/functions/lambda-to-functions.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/functions/runtimes/csharp.md b/plugins/azure/skills/azure-cloud-migrate/references/services/functions/runtimes/csharp.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/functions/runtimes/csharp.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/functions/runtimes/csharp.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/functions/runtimes/java.md b/plugins/azure/skills/azure-cloud-migrate/references/services/functions/runtimes/java.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/functions/runtimes/java.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/functions/runtimes/java.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/functions/runtimes/javascript.md b/plugins/azure/skills/azure-cloud-migrate/references/services/functions/runtimes/javascript.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/functions/runtimes/javascript.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/functions/runtimes/javascript.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/functions/runtimes/powershell.md b/plugins/azure/skills/azure-cloud-migrate/references/services/functions/runtimes/powershell.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/functions/runtimes/powershell.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/functions/runtimes/powershell.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/functions/runtimes/python.md b/plugins/azure/skills/azure-cloud-migrate/references/services/functions/runtimes/python.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/functions/runtimes/python.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/functions/runtimes/python.md diff --git a/plugin/skills/azure-cloud-migrate/references/services/functions/runtimes/typescript.md b/plugins/azure/skills/azure-cloud-migrate/references/services/functions/runtimes/typescript.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/services/functions/runtimes/typescript.md rename to plugins/azure/skills/azure-cloud-migrate/references/services/functions/runtimes/typescript.md diff --git a/plugin/skills/azure-cloud-migrate/references/workflow-details.md b/plugins/azure/skills/azure-cloud-migrate/references/workflow-details.md similarity index 100% rename from plugin/skills/azure-cloud-migrate/references/workflow-details.md rename to plugins/azure/skills/azure-cloud-migrate/references/workflow-details.md diff --git a/plugin/skills/azure-cloud-migrate/version.json b/plugins/azure/skills/azure-cloud-migrate/version.json similarity index 100% rename from plugin/skills/azure-cloud-migrate/version.json rename to plugins/azure/skills/azure-cloud-migrate/version.json diff --git a/plugin/skills/azure-compliance/SKILL.md b/plugins/azure/skills/azure-compliance/SKILL.md similarity index 100% rename from plugin/skills/azure-compliance/SKILL.md rename to plugins/azure/skills/azure-compliance/SKILL.md diff --git a/plugin/skills/azure-compliance/references/auth-best-practices.md b/plugins/azure/skills/azure-compliance/references/auth-best-practices.md similarity index 100% rename from plugin/skills/azure-compliance/references/auth-best-practices.md rename to plugins/azure/skills/azure-compliance/references/auth-best-practices.md diff --git a/plugin/skills/azure-compliance/references/azqr-recommendations.md b/plugins/azure/skills/azure-compliance/references/azqr-recommendations.md similarity index 100% rename from plugin/skills/azure-compliance/references/azqr-recommendations.md rename to plugins/azure/skills/azure-compliance/references/azqr-recommendations.md diff --git a/plugin/skills/azure-compliance/references/azqr-remediation-patterns.md b/plugins/azure/skills/azure-compliance/references/azqr-remediation-patterns.md similarity index 100% rename from plugin/skills/azure-compliance/references/azqr-remediation-patterns.md rename to plugins/azure/skills/azure-compliance/references/azqr-remediation-patterns.md diff --git a/plugin/skills/azure-compliance/references/azure-keyvault-expiration-audit.md b/plugins/azure/skills/azure-compliance/references/azure-keyvault-expiration-audit.md similarity index 100% rename from plugin/skills/azure-compliance/references/azure-keyvault-expiration-audit.md rename to plugins/azure/skills/azure-compliance/references/azure-keyvault-expiration-audit.md diff --git a/plugin/skills/azure-compliance/references/azure-quick-review.md b/plugins/azure/skills/azure-compliance/references/azure-quick-review.md similarity index 100% rename from plugin/skills/azure-compliance/references/azure-quick-review.md rename to plugins/azure/skills/azure-compliance/references/azure-quick-review.md diff --git a/plugin/skills/azure-compliance/references/azure-resource-graph.md b/plugins/azure/skills/azure-compliance/references/azure-resource-graph.md similarity index 100% rename from plugin/skills/azure-compliance/references/azure-resource-graph.md rename to plugins/azure/skills/azure-compliance/references/azure-resource-graph.md diff --git a/plugin/skills/azure-compliance/references/sdk/azure-keyvault-certificates-rust.md b/plugins/azure/skills/azure-compliance/references/sdk/azure-keyvault-certificates-rust.md similarity index 100% rename from plugin/skills/azure-compliance/references/sdk/azure-keyvault-certificates-rust.md rename to plugins/azure/skills/azure-compliance/references/sdk/azure-keyvault-certificates-rust.md diff --git a/plugin/skills/azure-compliance/references/sdk/azure-keyvault-keys-rust.md b/plugins/azure/skills/azure-compliance/references/sdk/azure-keyvault-keys-rust.md similarity index 100% rename from plugin/skills/azure-compliance/references/sdk/azure-keyvault-keys-rust.md rename to plugins/azure/skills/azure-compliance/references/sdk/azure-keyvault-keys-rust.md diff --git a/plugin/skills/azure-compliance/references/sdk/azure-keyvault-keys-ts.md b/plugins/azure/skills/azure-compliance/references/sdk/azure-keyvault-keys-ts.md similarity index 100% rename from plugin/skills/azure-compliance/references/sdk/azure-keyvault-keys-ts.md rename to plugins/azure/skills/azure-compliance/references/sdk/azure-keyvault-keys-ts.md diff --git a/plugin/skills/azure-compliance/references/sdk/azure-keyvault-py.md b/plugins/azure/skills/azure-compliance/references/sdk/azure-keyvault-py.md similarity index 100% rename from plugin/skills/azure-compliance/references/sdk/azure-keyvault-py.md rename to plugins/azure/skills/azure-compliance/references/sdk/azure-keyvault-py.md diff --git a/plugin/skills/azure-compliance/references/sdk/azure-keyvault-secrets-rust.md b/plugins/azure/skills/azure-compliance/references/sdk/azure-keyvault-secrets-rust.md similarity index 100% rename from plugin/skills/azure-compliance/references/sdk/azure-keyvault-secrets-rust.md rename to plugins/azure/skills/azure-compliance/references/sdk/azure-keyvault-secrets-rust.md diff --git a/plugin/skills/azure-compliance/references/sdk/azure-keyvault-secrets-ts.md b/plugins/azure/skills/azure-compliance/references/sdk/azure-keyvault-secrets-ts.md similarity index 100% rename from plugin/skills/azure-compliance/references/sdk/azure-keyvault-secrets-ts.md rename to plugins/azure/skills/azure-compliance/references/sdk/azure-keyvault-secrets-ts.md diff --git a/plugin/skills/azure-compliance/references/sdk/azure-security-keyvault-keys-dotnet.md b/plugins/azure/skills/azure-compliance/references/sdk/azure-security-keyvault-keys-dotnet.md similarity index 100% rename from plugin/skills/azure-compliance/references/sdk/azure-security-keyvault-keys-dotnet.md rename to plugins/azure/skills/azure-compliance/references/sdk/azure-security-keyvault-keys-dotnet.md diff --git a/plugin/skills/azure-compliance/references/sdk/azure-security-keyvault-keys-java.md b/plugins/azure/skills/azure-compliance/references/sdk/azure-security-keyvault-keys-java.md similarity index 100% rename from plugin/skills/azure-compliance/references/sdk/azure-security-keyvault-keys-java.md rename to plugins/azure/skills/azure-compliance/references/sdk/azure-security-keyvault-keys-java.md diff --git a/plugin/skills/azure-compliance/references/sdk/azure-security-keyvault-secrets-java.md b/plugins/azure/skills/azure-compliance/references/sdk/azure-security-keyvault-secrets-java.md similarity index 100% rename from plugin/skills/azure-compliance/references/sdk/azure-security-keyvault-secrets-java.md rename to plugins/azure/skills/azure-compliance/references/sdk/azure-security-keyvault-secrets-java.md diff --git a/plugin/skills/azure-ai/version.json b/plugins/azure/skills/azure-compliance/version.json similarity index 100% rename from plugin/skills/azure-ai/version.json rename to plugins/azure/skills/azure-compliance/version.json diff --git a/plugin/skills/azure-compute/SKILL.md b/plugins/azure/skills/azure-compute/SKILL.md similarity index 100% rename from plugin/skills/azure-compute/SKILL.md rename to plugins/azure/skills/azure-compute/SKILL.md diff --git a/plugin/skills/azure-compute/references/retail-prices-api.md b/plugins/azure/skills/azure-compute/references/retail-prices-api.md similarity index 100% rename from plugin/skills/azure-compute/references/retail-prices-api.md rename to plugins/azure/skills/azure-compute/references/retail-prices-api.md diff --git a/plugin/skills/azure-compute/references/vm-families.md b/plugins/azure/skills/azure-compute/references/vm-families.md similarity index 100% rename from plugin/skills/azure-compute/references/vm-families.md rename to plugins/azure/skills/azure-compute/references/vm-families.md diff --git a/plugin/skills/azure-compute/references/vm-quotas.md b/plugins/azure/skills/azure-compute/references/vm-quotas.md similarity index 100% rename from plugin/skills/azure-compute/references/vm-quotas.md rename to plugins/azure/skills/azure-compute/references/vm-quotas.md diff --git a/plugin/skills/azure-compute/references/vmss-guide.md b/plugins/azure/skills/azure-compute/references/vmss-guide.md similarity index 100% rename from plugin/skills/azure-compute/references/vmss-guide.md rename to plugins/azure/skills/azure-compute/references/vmss-guide.md diff --git a/plugin/skills/azure-compute/version.json b/plugins/azure/skills/azure-compute/version.json similarity index 100% rename from plugin/skills/azure-compute/version.json rename to plugins/azure/skills/azure-compute/version.json diff --git a/plugin/skills/azure-compute/workflows/capacity-reservation/capacity-reservation.md b/plugins/azure/skills/azure-compute/workflows/capacity-reservation/capacity-reservation.md similarity index 100% rename from plugin/skills/azure-compute/workflows/capacity-reservation/capacity-reservation.md rename to plugins/azure/skills/azure-compute/workflows/capacity-reservation/capacity-reservation.md diff --git a/plugin/skills/azure-compute/workflows/capacity-reservation/references/association-disassociation.md b/plugins/azure/skills/azure-compute/workflows/capacity-reservation/references/association-disassociation.md similarity index 100% rename from plugin/skills/azure-compute/workflows/capacity-reservation/references/association-disassociation.md rename to plugins/azure/skills/azure-compute/workflows/capacity-reservation/references/association-disassociation.md diff --git a/plugin/skills/azure-compute/workflows/capacity-reservation/references/capacity-reservation-overview.md b/plugins/azure/skills/azure-compute/workflows/capacity-reservation/references/capacity-reservation-overview.md similarity index 100% rename from plugin/skills/azure-compute/workflows/capacity-reservation/references/capacity-reservation-overview.md rename to plugins/azure/skills/azure-compute/workflows/capacity-reservation/references/capacity-reservation-overview.md diff --git a/plugin/skills/azure-compute/workflows/essential-machine-management/essential-machine-management.md b/plugins/azure/skills/azure-compute/workflows/essential-machine-management/essential-machine-management.md similarity index 100% rename from plugin/skills/azure-compute/workflows/essential-machine-management/essential-machine-management.md rename to plugins/azure/skills/azure-compute/workflows/essential-machine-management/essential-machine-management.md diff --git a/plugin/skills/azure-compute/workflows/essential-machine-management/references/emm-enable-flow-portal-guidance.md b/plugins/azure/skills/azure-compute/workflows/essential-machine-management/references/emm-enable-flow-portal-guidance.md similarity index 100% rename from plugin/skills/azure-compute/workflows/essential-machine-management/references/emm-enable-flow-portal-guidance.md rename to plugins/azure/skills/azure-compute/workflows/essential-machine-management/references/emm-enable-flow-portal-guidance.md diff --git a/plugin/skills/azure-compute/workflows/essential-machine-management/references/emm-enable-flow.md b/plugins/azure/skills/azure-compute/workflows/essential-machine-management/references/emm-enable-flow.md similarity index 100% rename from plugin/skills/azure-compute/workflows/essential-machine-management/references/emm-enable-flow.md rename to plugins/azure/skills/azure-compute/workflows/essential-machine-management/references/emm-enable-flow.md diff --git a/plugin/skills/azure-compute/workflows/essential-machine-management/references/emm-overview.md b/plugins/azure/skills/azure-compute/workflows/essential-machine-management/references/emm-overview.md similarity index 100% rename from plugin/skills/azure-compute/workflows/essential-machine-management/references/emm-overview.md rename to plugins/azure/skills/azure-compute/workflows/essential-machine-management/references/emm-overview.md diff --git a/plugin/skills/azure-compute/workflows/essential-machine-management/references/emm-prerequisites.md b/plugins/azure/skills/azure-compute/workflows/essential-machine-management/references/emm-prerequisites.md similarity index 100% rename from plugin/skills/azure-compute/workflows/essential-machine-management/references/emm-prerequisites.md rename to plugins/azure/skills/azure-compute/workflows/essential-machine-management/references/emm-prerequisites.md diff --git a/plugin/skills/azure-compute/workflows/vm-creator/examples/bicep/README.md b/plugins/azure/skills/azure-compute/workflows/vm-creator/examples/bicep/README.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-creator/examples/bicep/README.md rename to plugins/azure/skills/azure-compute/workflows/vm-creator/examples/bicep/README.md diff --git a/plugin/skills/azure-compute/workflows/vm-creator/examples/bicep/main.bicep b/plugins/azure/skills/azure-compute/workflows/vm-creator/examples/bicep/main.bicep similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-creator/examples/bicep/main.bicep rename to plugins/azure/skills/azure-compute/workflows/vm-creator/examples/bicep/main.bicep diff --git a/plugin/skills/azure-compute/workflows/vm-creator/examples/terraform/README.md b/plugins/azure/skills/azure-compute/workflows/vm-creator/examples/terraform/README.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-creator/examples/terraform/README.md rename to plugins/azure/skills/azure-compute/workflows/vm-creator/examples/terraform/README.md diff --git a/plugin/skills/azure-compute/workflows/vm-creator/examples/terraform/main.tf b/plugins/azure/skills/azure-compute/workflows/vm-creator/examples/terraform/main.tf similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-creator/examples/terraform/main.tf rename to plugins/azure/skills/azure-compute/workflows/vm-creator/examples/terraform/main.tf diff --git a/plugin/skills/azure-compute/workflows/vm-creator/examples/terraform/outputs.tf b/plugins/azure/skills/azure-compute/workflows/vm-creator/examples/terraform/outputs.tf similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-creator/examples/terraform/outputs.tf rename to plugins/azure/skills/azure-compute/workflows/vm-creator/examples/terraform/outputs.tf diff --git a/plugin/skills/azure-compute/workflows/vm-creator/examples/terraform/variables.tf b/plugins/azure/skills/azure-compute/workflows/vm-creator/examples/terraform/variables.tf similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-creator/examples/terraform/variables.tf rename to plugins/azure/skills/azure-compute/workflows/vm-creator/examples/terraform/variables.tf diff --git a/plugin/skills/azure-compute/workflows/vm-creator/references/delivery-options/github-pr.md b/plugins/azure/skills/azure-compute/workflows/vm-creator/references/delivery-options/github-pr.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-creator/references/delivery-options/github-pr.md rename to plugins/azure/skills/azure-compute/workflows/vm-creator/references/delivery-options/github-pr.md diff --git a/plugin/skills/azure-compute/workflows/vm-creator/references/delivery-options/index.md b/plugins/azure/skills/azure-compute/workflows/vm-creator/references/delivery-options/index.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-creator/references/delivery-options/index.md rename to plugins/azure/skills/azure-compute/workflows/vm-creator/references/delivery-options/index.md diff --git a/plugin/skills/azure-compute/workflows/vm-creator/references/delivery-options/print.md b/plugins/azure/skills/azure-compute/workflows/vm-creator/references/delivery-options/print.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-creator/references/delivery-options/print.md rename to plugins/azure/skills/azure-compute/workflows/vm-creator/references/delivery-options/print.md diff --git a/plugin/skills/azure-compute/workflows/vm-creator/references/delivery-options/save-local.md b/plugins/azure/skills/azure-compute/workflows/vm-creator/references/delivery-options/save-local.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-creator/references/delivery-options/save-local.md rename to plugins/azure/skills/azure-compute/workflows/vm-creator/references/delivery-options/save-local.md diff --git a/plugin/skills/azure-compute/workflows/vm-creator/references/depth-probe/beginner.md b/plugins/azure/skills/azure-compute/workflows/vm-creator/references/depth-probe/beginner.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-creator/references/depth-probe/beginner.md rename to plugins/azure/skills/azure-compute/workflows/vm-creator/references/depth-probe/beginner.md diff --git a/plugin/skills/azure-compute/workflows/vm-creator/references/depth-probe/cost-deep.md b/plugins/azure/skills/azure-compute/workflows/vm-creator/references/depth-probe/cost-deep.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-creator/references/depth-probe/cost-deep.md rename to plugins/azure/skills/azure-compute/workflows/vm-creator/references/depth-probe/cost-deep.md diff --git a/plugin/skills/azure-compute/workflows/vm-creator/references/depth-probe/index.md b/plugins/azure/skills/azure-compute/workflows/vm-creator/references/depth-probe/index.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-creator/references/depth-probe/index.md rename to plugins/azure/skills/azure-compute/workflows/vm-creator/references/depth-probe/index.md diff --git a/plugin/skills/azure-compute/workflows/vm-creator/references/depth-probe/networking-deep.md b/plugins/azure/skills/azure-compute/workflows/vm-creator/references/depth-probe/networking-deep.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-creator/references/depth-probe/networking-deep.md rename to plugins/azure/skills/azure-compute/workflows/vm-creator/references/depth-probe/networking-deep.md diff --git a/plugin/skills/azure-compute/workflows/vm-creator/references/depth-probe/security-deep.md b/plugins/azure/skills/azure-compute/workflows/vm-creator/references/depth-probe/security-deep.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-creator/references/depth-probe/security-deep.md rename to plugins/azure/skills/azure-compute/workflows/vm-creator/references/depth-probe/security-deep.md diff --git a/plugin/skills/azure-compute/workflows/vm-creator/references/depth-probe/spec-deep.md b/plugins/azure/skills/azure-compute/workflows/vm-creator/references/depth-probe/spec-deep.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-creator/references/depth-probe/spec-deep.md rename to plugins/azure/skills/azure-compute/workflows/vm-creator/references/depth-probe/spec-deep.md diff --git a/plugin/skills/azure-compute/workflows/vm-creator/references/mcp-tools.md b/plugins/azure/skills/azure-compute/workflows/vm-creator/references/mcp-tools.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-creator/references/mcp-tools.md rename to plugins/azure/skills/azure-compute/workflows/vm-creator/references/mcp-tools.md diff --git a/plugin/skills/azure-compute/workflows/vm-creator/references/output-adapters/az-cli.md b/plugins/azure/skills/azure-compute/workflows/vm-creator/references/output-adapters/az-cli.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-creator/references/output-adapters/az-cli.md rename to plugins/azure/skills/azure-compute/workflows/vm-creator/references/output-adapters/az-cli.md diff --git a/plugin/skills/azure-compute/workflows/vm-creator/references/output-adapters/bicep.md b/plugins/azure/skills/azure-compute/workflows/vm-creator/references/output-adapters/bicep.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-creator/references/output-adapters/bicep.md rename to plugins/azure/skills/azure-compute/workflows/vm-creator/references/output-adapters/bicep.md diff --git a/plugin/skills/azure-compute/workflows/vm-creator/references/output-adapters/index.md b/plugins/azure/skills/azure-compute/workflows/vm-creator/references/output-adapters/index.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-creator/references/output-adapters/index.md rename to plugins/azure/skills/azure-compute/workflows/vm-creator/references/output-adapters/index.md diff --git a/plugin/skills/azure-compute/workflows/vm-creator/references/output-adapters/mcp-apply.md b/plugins/azure/skills/azure-compute/workflows/vm-creator/references/output-adapters/mcp-apply.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-creator/references/output-adapters/mcp-apply.md rename to plugins/azure/skills/azure-compute/workflows/vm-creator/references/output-adapters/mcp-apply.md diff --git a/plugin/skills/azure-compute/workflows/vm-creator/references/output-adapters/terraform.md b/plugins/azure/skills/azure-compute/workflows/vm-creator/references/output-adapters/terraform.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-creator/references/output-adapters/terraform.md rename to plugins/azure/skills/azure-compute/workflows/vm-creator/references/output-adapters/terraform.md diff --git a/plugin/skills/azure-compute/workflows/vm-creator/references/plan-card.md b/plugins/azure/skills/azure-compute/workflows/vm-creator/references/plan-card.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-creator/references/plan-card.md rename to plugins/azure/skills/azure-compute/workflows/vm-creator/references/plan-card.md diff --git a/plugin/skills/azure-compute/workflows/vm-creator/references/validation-gates.md b/plugins/azure/skills/azure-compute/workflows/vm-creator/references/validation-gates.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-creator/references/validation-gates.md rename to plugins/azure/skills/azure-compute/workflows/vm-creator/references/validation-gates.md diff --git a/plugin/skills/azure-compute/workflows/vm-creator/vm-creator.md b/plugins/azure/skills/azure-compute/workflows/vm-creator/vm-creator.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-creator/vm-creator.md rename to plugins/azure/skills/azure-compute/workflows/vm-creator/vm-creator.md diff --git a/plugin/skills/azure-compute/workflows/vm-recommender/references/handoff-to-creator.md b/plugins/azure/skills/azure-compute/workflows/vm-recommender/references/handoff-to-creator.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-recommender/references/handoff-to-creator.md rename to plugins/azure/skills/azure-compute/workflows/vm-recommender/references/handoff-to-creator.md diff --git a/plugin/skills/azure-compute/workflows/vm-recommender/references/web-fetch-policy.md b/plugins/azure/skills/azure-compute/workflows/vm-recommender/references/web-fetch-policy.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-recommender/references/web-fetch-policy.md rename to plugins/azure/skills/azure-compute/workflows/vm-recommender/references/web-fetch-policy.md diff --git a/plugin/skills/azure-compute/workflows/vm-recommender/vm-recommender.md b/plugins/azure/skills/azure-compute/workflows/vm-recommender/vm-recommender.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-recommender/vm-recommender.md rename to plugins/azure/skills/azure-compute/workflows/vm-recommender/vm-recommender.md diff --git a/plugin/skills/azure-compute/workflows/vm-troubleshooter/references/cannot-connect-to-vm.md b/plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/cannot-connect-to-vm.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-troubleshooter/references/cannot-connect-to-vm.md rename to plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/cannot-connect-to-vm.md diff --git a/plugin/skills/azure-compute/workflows/vm-troubleshooter/references/credential-auth-errors.md b/plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/credential-auth-errors.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-troubleshooter/references/credential-auth-errors.md rename to plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/credential-auth-errors.md diff --git a/plugin/skills/azure-compute/workflows/vm-troubleshooter/references/firewall-blocking.md b/plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/firewall-blocking.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-troubleshooter/references/firewall-blocking.md rename to plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/firewall-blocking.md diff --git a/plugin/skills/azure-compute/workflows/vm-troubleshooter/references/network-connectivity.md b/plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/network-connectivity.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-troubleshooter/references/network-connectivity.md rename to plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/network-connectivity.md diff --git a/plugin/skills/azure-compute/workflows/vm-troubleshooter/references/rdp-connectivity.md b/plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/rdp-connectivity.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-troubleshooter/references/rdp-connectivity.md rename to plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/rdp-connectivity.md diff --git a/plugin/skills/azure-compute/workflows/vm-troubleshooter/references/rdp-service-config.md b/plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/rdp-service-config.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-troubleshooter/references/rdp-service-config.md rename to plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/rdp-service-config.md diff --git a/plugin/skills/azure-compute/workflows/vm-troubleshooter/references/ssh-connectivity.md b/plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/ssh-connectivity.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-troubleshooter/references/ssh-connectivity.md rename to plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/ssh-connectivity.md diff --git a/plugin/skills/azure-compute/workflows/vm-troubleshooter/references/vm-agent-not-responding.md b/plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/vm-agent-not-responding.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-troubleshooter/references/vm-agent-not-responding.md rename to plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/vm-agent-not-responding.md diff --git a/plugin/skills/azure-compute/workflows/vm-troubleshooter/vm-troubleshooter.md b/plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/vm-troubleshooter.md similarity index 100% rename from plugin/skills/azure-compute/workflows/vm-troubleshooter/vm-troubleshooter.md rename to plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/vm-troubleshooter.md diff --git a/plugin/skills/azure-cost/SKILL.md b/plugins/azure/skills/azure-cost/SKILL.md similarity index 100% rename from plugin/skills/azure-cost/SKILL.md rename to plugins/azure/skills/azure-cost/SKILL.md diff --git a/plugin/skills/azure-cost/cost-forecast/error-handling.md b/plugins/azure/skills/azure-cost/cost-forecast/error-handling.md similarity index 100% rename from plugin/skills/azure-cost/cost-forecast/error-handling.md rename to plugins/azure/skills/azure-cost/cost-forecast/error-handling.md diff --git a/plugin/skills/azure-cost/cost-forecast/examples.md b/plugins/azure/skills/azure-cost/cost-forecast/examples.md similarity index 100% rename from plugin/skills/azure-cost/cost-forecast/examples.md rename to plugins/azure/skills/azure-cost/cost-forecast/examples.md diff --git a/plugin/skills/azure-cost/cost-forecast/guardrails.md b/plugins/azure/skills/azure-cost/cost-forecast/guardrails.md similarity index 100% rename from plugin/skills/azure-cost/cost-forecast/guardrails.md rename to plugins/azure/skills/azure-cost/cost-forecast/guardrails.md diff --git a/plugin/skills/azure-cost/cost-forecast/request-body-schema.md b/plugins/azure/skills/azure-cost/cost-forecast/request-body-schema.md similarity index 100% rename from plugin/skills/azure-cost/cost-forecast/request-body-schema.md rename to plugins/azure/skills/azure-cost/cost-forecast/request-body-schema.md diff --git a/plugin/skills/azure-cost/cost-forecast/workflow.md b/plugins/azure/skills/azure-cost/cost-forecast/workflow.md similarity index 100% rename from plugin/skills/azure-cost/cost-forecast/workflow.md rename to plugins/azure/skills/azure-cost/cost-forecast/workflow.md diff --git a/plugin/skills/azure-cost/cost-optimization/auth-best-practices.md b/plugins/azure/skills/azure-cost/cost-optimization/auth-best-practices.md similarity index 100% rename from plugin/skills/azure-cost/cost-optimization/auth-best-practices.md rename to plugins/azure/skills/azure-cost/cost-optimization/auth-best-practices.md diff --git a/plugin/skills/azure-cost/cost-optimization/azure-aks-anomalies.md b/plugins/azure/skills/azure-cost/cost-optimization/azure-aks-anomalies.md similarity index 100% rename from plugin/skills/azure-cost/cost-optimization/azure-aks-anomalies.md rename to plugins/azure/skills/azure-cost/cost-optimization/azure-aks-anomalies.md diff --git a/plugin/skills/azure-cost/cost-optimization/azure-aks-cost-addon.md b/plugins/azure/skills/azure-cost/cost-optimization/azure-aks-cost-addon.md similarity index 100% rename from plugin/skills/azure-cost/cost-optimization/azure-aks-cost-addon.md rename to plugins/azure/skills/azure-cost/cost-optimization/azure-aks-cost-addon.md diff --git a/plugin/skills/azure-cost/cost-optimization/azure-quick-review.md b/plugins/azure/skills/azure-cost/cost-optimization/azure-quick-review.md similarity index 100% rename from plugin/skills/azure-cost/cost-optimization/azure-quick-review.md rename to plugins/azure/skills/azure-cost/cost-optimization/azure-quick-review.md diff --git a/plugin/skills/azure-cost/cost-optimization/azure-resource-graph.md b/plugins/azure/skills/azure-cost/cost-optimization/azure-resource-graph.md similarity index 100% rename from plugin/skills/azure-cost/cost-optimization/azure-resource-graph.md rename to plugins/azure/skills/azure-cost/cost-optimization/azure-resource-graph.md diff --git a/plugin/skills/azure-cost/cost-optimization/report-template.md b/plugins/azure/skills/azure-cost/cost-optimization/report-template.md similarity index 100% rename from plugin/skills/azure-cost/cost-optimization/report-template.md rename to plugins/azure/skills/azure-cost/cost-optimization/report-template.md diff --git a/plugin/skills/azure-cost/cost-optimization/sdk/azure-resource-manager-redis-dotnet.md b/plugins/azure/skills/azure-cost/cost-optimization/sdk/azure-resource-manager-redis-dotnet.md similarity index 100% rename from plugin/skills/azure-cost/cost-optimization/sdk/azure-resource-manager-redis-dotnet.md rename to plugins/azure/skills/azure-cost/cost-optimization/sdk/azure-resource-manager-redis-dotnet.md diff --git a/plugin/skills/azure-cost/cost-optimization/services/redis/azure-cache-for-redis.md b/plugins/azure/skills/azure-cost/cost-optimization/services/redis/azure-cache-for-redis.md similarity index 100% rename from plugin/skills/azure-cost/cost-optimization/services/redis/azure-cache-for-redis.md rename to plugins/azure/skills/azure-cost/cost-optimization/services/redis/azure-cache-for-redis.md diff --git a/plugin/skills/azure-cost/cost-optimization/services/storage/azure-storage.md b/plugins/azure/skills/azure-cost/cost-optimization/services/storage/azure-storage.md similarity index 100% rename from plugin/skills/azure-cost/cost-optimization/services/storage/azure-storage.md rename to plugins/azure/skills/azure-cost/cost-optimization/services/storage/azure-storage.md diff --git a/plugin/skills/azure-cost/cost-optimization/workflow.md b/plugins/azure/skills/azure-cost/cost-optimization/workflow.md similarity index 100% rename from plugin/skills/azure-cost/cost-optimization/workflow.md rename to plugins/azure/skills/azure-cost/cost-optimization/workflow.md diff --git a/plugin/skills/azure-cost/cost-query/dimensions-by-scope.md b/plugins/azure/skills/azure-cost/cost-query/dimensions-by-scope.md similarity index 100% rename from plugin/skills/azure-cost/cost-query/dimensions-by-scope.md rename to plugins/azure/skills/azure-cost/cost-query/dimensions-by-scope.md diff --git a/plugin/skills/azure-cost/cost-query/error-handling.md b/plugins/azure/skills/azure-cost/cost-query/error-handling.md similarity index 100% rename from plugin/skills/azure-cost/cost-query/error-handling.md rename to plugins/azure/skills/azure-cost/cost-query/error-handling.md diff --git a/plugin/skills/azure-cost/cost-query/examples.md b/plugins/azure/skills/azure-cost/cost-query/examples.md similarity index 100% rename from plugin/skills/azure-cost/cost-query/examples.md rename to plugins/azure/skills/azure-cost/cost-query/examples.md diff --git a/plugin/skills/azure-cost/cost-query/guardrails.md b/plugins/azure/skills/azure-cost/cost-query/guardrails.md similarity index 100% rename from plugin/skills/azure-cost/cost-query/guardrails.md rename to plugins/azure/skills/azure-cost/cost-query/guardrails.md diff --git a/plugin/skills/azure-cost/cost-query/request-body-schema.md b/plugins/azure/skills/azure-cost/cost-query/request-body-schema.md similarity index 100% rename from plugin/skills/azure-cost/cost-query/request-body-schema.md rename to plugins/azure/skills/azure-cost/cost-query/request-body-schema.md diff --git a/plugin/skills/azure-cost/cost-query/workflow.md b/plugins/azure/skills/azure-cost/cost-query/workflow.md similarity index 100% rename from plugin/skills/azure-cost/cost-query/workflow.md rename to plugins/azure/skills/azure-cost/cost-query/workflow.md diff --git a/plugin/skills/azure-cost/references/tools-and-best-practices.md b/plugins/azure/skills/azure-cost/references/tools-and-best-practices.md similarity index 100% rename from plugin/skills/azure-cost/references/tools-and-best-practices.md rename to plugins/azure/skills/azure-cost/references/tools-and-best-practices.md diff --git a/plugin/skills/azure-cost/version.json b/plugins/azure/skills/azure-cost/version.json similarity index 100% rename from plugin/skills/azure-cost/version.json rename to plugins/azure/skills/azure-cost/version.json diff --git a/plugin/skills/azure-deploy/SKILL.md b/plugins/azure/skills/azure-deploy/SKILL.md similarity index 100% rename from plugin/skills/azure-deploy/SKILL.md rename to plugins/azure/skills/azure-deploy/SKILL.md diff --git a/plugin/skills/azure-deploy/references/auth-best-practices.md b/plugins/azure/skills/azure-deploy/references/auth-best-practices.md similarity index 100% rename from plugin/skills/azure-deploy/references/auth-best-practices.md rename to plugins/azure/skills/azure-deploy/references/auth-best-practices.md diff --git a/plugin/skills/azure-deploy/references/global-rules.md b/plugins/azure/skills/azure-deploy/references/global-rules.md similarity index 100% rename from plugin/skills/azure-deploy/references/global-rules.md rename to plugins/azure/skills/azure-deploy/references/global-rules.md diff --git a/plugin/skills/azure-deploy/references/live-role-verification.md b/plugins/azure/skills/azure-deploy/references/live-role-verification.md similarity index 100% rename from plugin/skills/azure-deploy/references/live-role-verification.md rename to plugins/azure/skills/azure-deploy/references/live-role-verification.md diff --git a/plugin/skills/azure-deploy/references/pre-deploy-checklist.md b/plugins/azure/skills/azure-deploy/references/pre-deploy-checklist.md similarity index 100% rename from plugin/skills/azure-deploy/references/pre-deploy-checklist.md rename to plugins/azure/skills/azure-deploy/references/pre-deploy-checklist.md diff --git a/plugin/skills/azure-deploy/references/recipes/README.md b/plugins/azure/skills/azure-deploy/references/recipes/README.md similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/README.md rename to plugins/azure/skills/azure-deploy/references/recipes/README.md diff --git a/plugin/skills/azure-deploy/references/recipes/azcli/README.md b/plugins/azure/skills/azure-deploy/references/recipes/azcli/README.md similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/azcli/README.md rename to plugins/azure/skills/azure-deploy/references/recipes/azcli/README.md diff --git a/plugin/skills/azure-deploy/references/recipes/azcli/errors.md b/plugins/azure/skills/azure-deploy/references/recipes/azcli/errors.md similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/azcli/errors.md rename to plugins/azure/skills/azure-deploy/references/recipes/azcli/errors.md diff --git a/plugin/skills/azure-deploy/references/recipes/azcli/verify.md b/plugins/azure/skills/azure-deploy/references/recipes/azcli/verify.md similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/azcli/verify.md rename to plugins/azure/skills/azure-deploy/references/recipes/azcli/verify.md diff --git a/plugin/skills/azure-deploy/references/recipes/azd/README.md b/plugins/azure/skills/azure-deploy/references/recipes/azd/README.md similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/azd/README.md rename to plugins/azure/skills/azure-deploy/references/recipes/azd/README.md diff --git a/plugin/skills/azure-deploy/references/recipes/azd/ef-migrations.md b/plugins/azure/skills/azure-deploy/references/recipes/azd/ef-migrations.md similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/azd/ef-migrations.md rename to plugins/azure/skills/azure-deploy/references/recipes/azd/ef-migrations.md diff --git a/plugin/skills/azure-deploy/references/recipes/azd/errors.md b/plugins/azure/skills/azure-deploy/references/recipes/azd/errors.md similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/azd/errors.md rename to plugins/azure/skills/azure-deploy/references/recipes/azd/errors.md diff --git a/plugin/skills/azure-deploy/references/recipes/azd/functions-deploy.md b/plugins/azure/skills/azure-deploy/references/recipes/azd/functions-deploy.md similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/azd/functions-deploy.md rename to plugins/azure/skills/azure-deploy/references/recipes/azd/functions-deploy.md diff --git a/plugin/skills/azure-deploy/references/recipes/azd/post-deployment.md b/plugins/azure/skills/azure-deploy/references/recipes/azd/post-deployment.md similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/azd/post-deployment.md rename to plugins/azure/skills/azure-deploy/references/recipes/azd/post-deployment.md diff --git a/plugin/skills/azure-deploy/references/recipes/azd/scripts/apply-migrations.ps1 b/plugins/azure/skills/azure-deploy/references/recipes/azd/scripts/apply-migrations.ps1 similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/azd/scripts/apply-migrations.ps1 rename to plugins/azure/skills/azure-deploy/references/recipes/azd/scripts/apply-migrations.ps1 diff --git a/plugin/skills/azure-deploy/references/recipes/azd/scripts/apply-migrations.sh b/plugins/azure/skills/azure-deploy/references/recipes/azd/scripts/apply-migrations.sh similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/azd/scripts/apply-migrations.sh rename to plugins/azure/skills/azure-deploy/references/recipes/azd/scripts/apply-migrations.sh diff --git a/plugin/skills/azure-deploy/references/recipes/azd/scripts/grant-and-migrate.ps1 b/plugins/azure/skills/azure-deploy/references/recipes/azd/scripts/grant-and-migrate.ps1 similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/azd/scripts/grant-and-migrate.ps1 rename to plugins/azure/skills/azure-deploy/references/recipes/azd/scripts/grant-and-migrate.ps1 diff --git a/plugin/skills/azure-deploy/references/recipes/azd/scripts/grant-and-migrate.sh b/plugins/azure/skills/azure-deploy/references/recipes/azd/scripts/grant-and-migrate.sh similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/azd/scripts/grant-and-migrate.sh rename to plugins/azure/skills/azure-deploy/references/recipes/azd/scripts/grant-and-migrate.sh diff --git a/plugin/skills/azure-deploy/references/recipes/azd/sql-entra-auth.md b/plugins/azure/skills/azure-deploy/references/recipes/azd/sql-entra-auth.md similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/azd/sql-entra-auth.md rename to plugins/azure/skills/azure-deploy/references/recipes/azd/sql-entra-auth.md diff --git a/plugin/skills/azure-deploy/references/recipes/azd/sql-managed-identity.md b/plugins/azure/skills/azure-deploy/references/recipes/azd/sql-managed-identity.md similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/azd/sql-managed-identity.md rename to plugins/azure/skills/azure-deploy/references/recipes/azd/sql-managed-identity.md diff --git a/plugin/skills/azure-deploy/references/recipes/azd/verify.md b/plugins/azure/skills/azure-deploy/references/recipes/azd/verify.md similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/azd/verify.md rename to plugins/azure/skills/azure-deploy/references/recipes/azd/verify.md diff --git a/plugin/skills/azure-deploy/references/recipes/bicep/README.md b/plugins/azure/skills/azure-deploy/references/recipes/bicep/README.md similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/bicep/README.md rename to plugins/azure/skills/azure-deploy/references/recipes/bicep/README.md diff --git a/plugin/skills/azure-deploy/references/recipes/bicep/errors.md b/plugins/azure/skills/azure-deploy/references/recipes/bicep/errors.md similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/bicep/errors.md rename to plugins/azure/skills/azure-deploy/references/recipes/bicep/errors.md diff --git a/plugin/skills/azure-deploy/references/recipes/bicep/verify.md b/plugins/azure/skills/azure-deploy/references/recipes/bicep/verify.md similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/bicep/verify.md rename to plugins/azure/skills/azure-deploy/references/recipes/bicep/verify.md diff --git a/plugin/skills/azure-deploy/references/recipes/cicd/README.md b/plugins/azure/skills/azure-deploy/references/recipes/cicd/README.md similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/cicd/README.md rename to plugins/azure/skills/azure-deploy/references/recipes/cicd/README.md diff --git a/plugin/skills/azure-deploy/references/recipes/cicd/errors.md b/plugins/azure/skills/azure-deploy/references/recipes/cicd/errors.md similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/cicd/errors.md rename to plugins/azure/skills/azure-deploy/references/recipes/cicd/errors.md diff --git a/plugin/skills/azure-deploy/references/recipes/cicd/examples/azdo-azd.yml b/plugins/azure/skills/azure-deploy/references/recipes/cicd/examples/azdo-azd.yml similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/cicd/examples/azdo-azd.yml rename to plugins/azure/skills/azure-deploy/references/recipes/cicd/examples/azdo-azd.yml diff --git a/plugin/skills/azure-deploy/references/recipes/cicd/examples/azdo-multistage.yml b/plugins/azure/skills/azure-deploy/references/recipes/cicd/examples/azdo-multistage.yml similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/cicd/examples/azdo-multistage.yml rename to plugins/azure/skills/azure-deploy/references/recipes/cicd/examples/azdo-multistage.yml diff --git a/plugin/skills/azure-deploy/references/recipes/cicd/examples/github-azd.yml b/plugins/azure/skills/azure-deploy/references/recipes/cicd/examples/github-azd.yml similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/cicd/examples/github-azd.yml rename to plugins/azure/skills/azure-deploy/references/recipes/cicd/examples/github-azd.yml diff --git a/plugin/skills/azure-deploy/references/recipes/cicd/examples/github-bicep.yml b/plugins/azure/skills/azure-deploy/references/recipes/cicd/examples/github-bicep.yml similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/cicd/examples/github-bicep.yml rename to plugins/azure/skills/azure-deploy/references/recipes/cicd/examples/github-bicep.yml diff --git a/plugin/skills/azure-deploy/references/recipes/cicd/verify.md b/plugins/azure/skills/azure-deploy/references/recipes/cicd/verify.md similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/cicd/verify.md rename to plugins/azure/skills/azure-deploy/references/recipes/cicd/verify.md diff --git a/plugin/skills/azure-deploy/references/recipes/terraform/README.md b/plugins/azure/skills/azure-deploy/references/recipes/terraform/README.md similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/terraform/README.md rename to plugins/azure/skills/azure-deploy/references/recipes/terraform/README.md diff --git a/plugin/skills/azure-deploy/references/recipes/terraform/errors.md b/plugins/azure/skills/azure-deploy/references/recipes/terraform/errors.md similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/terraform/errors.md rename to plugins/azure/skills/azure-deploy/references/recipes/terraform/errors.md diff --git a/plugin/skills/azure-deploy/references/recipes/terraform/verify.md b/plugins/azure/skills/azure-deploy/references/recipes/terraform/verify.md similarity index 100% rename from plugin/skills/azure-deploy/references/recipes/terraform/verify.md rename to plugins/azure/skills/azure-deploy/references/recipes/terraform/verify.md diff --git a/plugin/skills/azure-deploy/references/region-availability.md b/plugins/azure/skills/azure-deploy/references/region-availability.md similarity index 100% rename from plugin/skills/azure-deploy/references/region-availability.md rename to plugins/azure/skills/azure-deploy/references/region-availability.md diff --git a/plugin/skills/azure-deploy/references/sdk/azd-deployment.md b/plugins/azure/skills/azure-deploy/references/sdk/azd-deployment.md similarity index 100% rename from plugin/skills/azure-deploy/references/sdk/azd-deployment.md rename to plugins/azure/skills/azure-deploy/references/sdk/azd-deployment.md diff --git a/plugin/skills/azure-deploy/references/sdk/azure-identity-dotnet.md b/plugins/azure/skills/azure-deploy/references/sdk/azure-identity-dotnet.md similarity index 100% rename from plugin/skills/azure-deploy/references/sdk/azure-identity-dotnet.md rename to plugins/azure/skills/azure-deploy/references/sdk/azure-identity-dotnet.md diff --git a/plugin/skills/azure-deploy/references/sdk/azure-identity-java.md b/plugins/azure/skills/azure-deploy/references/sdk/azure-identity-java.md similarity index 100% rename from plugin/skills/azure-deploy/references/sdk/azure-identity-java.md rename to plugins/azure/skills/azure-deploy/references/sdk/azure-identity-java.md diff --git a/plugin/skills/azure-deploy/references/sdk/azure-identity-py.md b/plugins/azure/skills/azure-deploy/references/sdk/azure-identity-py.md similarity index 100% rename from plugin/skills/azure-deploy/references/sdk/azure-identity-py.md rename to plugins/azure/skills/azure-deploy/references/sdk/azure-identity-py.md diff --git a/plugin/skills/azure-deploy/references/sdk/azure-identity-ts.md b/plugins/azure/skills/azure-deploy/references/sdk/azure-identity-ts.md similarity index 100% rename from plugin/skills/azure-deploy/references/sdk/azure-identity-ts.md rename to plugins/azure/skills/azure-deploy/references/sdk/azure-identity-ts.md diff --git a/plugin/skills/azure-deploy/references/troubleshooting.md b/plugins/azure/skills/azure-deploy/references/troubleshooting.md similarity index 100% rename from plugin/skills/azure-deploy/references/troubleshooting.md rename to plugins/azure/skills/azure-deploy/references/troubleshooting.md diff --git a/plugin/skills/azure-compliance/version.json b/plugins/azure/skills/azure-deploy/version.json similarity index 100% rename from plugin/skills/azure-compliance/version.json rename to plugins/azure/skills/azure-deploy/version.json diff --git a/plugin/skills/azure-diagnostics/SKILL.md b/plugins/azure/skills/azure-diagnostics/SKILL.md similarity index 100% rename from plugin/skills/azure-diagnostics/SKILL.md rename to plugins/azure/skills/azure-diagnostics/SKILL.md diff --git a/plugin/skills/azure-diagnostics/references/app-service/README.md b/plugins/azure/skills/azure-diagnostics/references/app-service/README.md similarity index 100% rename from plugin/skills/azure-diagnostics/references/app-service/README.md rename to plugins/azure/skills/azure-diagnostics/references/app-service/README.md diff --git a/plugin/skills/azure-diagnostics/references/azure-resource-graph.md b/plugins/azure/skills/azure-diagnostics/references/azure-resource-graph.md similarity index 100% rename from plugin/skills/azure-diagnostics/references/azure-resource-graph.md rename to plugins/azure/skills/azure-diagnostics/references/azure-resource-graph.md diff --git a/plugin/skills/azure-diagnostics/references/container-apps/README.md b/plugins/azure/skills/azure-diagnostics/references/container-apps/README.md similarity index 100% rename from plugin/skills/azure-diagnostics/references/container-apps/README.md rename to plugins/azure/skills/azure-diagnostics/references/container-apps/README.md diff --git a/plugin/skills/azure-diagnostics/references/functions/README.md b/plugins/azure/skills/azure-diagnostics/references/functions/README.md similarity index 100% rename from plugin/skills/azure-diagnostics/references/functions/README.md rename to plugins/azure/skills/azure-diagnostics/references/functions/README.md diff --git a/plugin/skills/azure-diagnostics/references/kql-queries.md b/plugins/azure/skills/azure-diagnostics/references/kql-queries.md similarity index 100% rename from plugin/skills/azure-diagnostics/references/kql-queries.md rename to plugins/azure/skills/azure-diagnostics/references/kql-queries.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/aks/aks-troubleshooting.md b/plugins/azure/skills/azure-diagnostics/troubleshooting/aks/aks-troubleshooting.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/aks/aks-troubleshooting.md rename to plugins/azure/skills/azure-diagnostics/troubleshooting/aks/aks-troubleshooting.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/aks/general-diagnostics.md b/plugins/azure/skills/azure-diagnostics/troubleshooting/aks/general-diagnostics.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/aks/general-diagnostics.md rename to plugins/azure/skills/azure-diagnostics/troubleshooting/aks/general-diagnostics.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/aks/load-balancer-and-ingress.md b/plugins/azure/skills/azure-diagnostics/troubleshooting/aks/load-balancer-and-ingress.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/aks/load-balancer-and-ingress.md rename to plugins/azure/skills/azure-diagnostics/troubleshooting/aks/load-balancer-and-ingress.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/aks/network-policy.md b/plugins/azure/skills/azure-diagnostics/troubleshooting/aks/network-policy.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/aks/network-policy.md rename to plugins/azure/skills/azure-diagnostics/troubleshooting/aks/network-policy.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/aks/networking.md b/plugins/azure/skills/azure-diagnostics/troubleshooting/aks/networking.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/aks/networking.md rename to plugins/azure/skills/azure-diagnostics/troubleshooting/aks/networking.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/aks/node-issues.md b/plugins/azure/skills/azure-diagnostics/troubleshooting/aks/node-issues.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/aks/node-issues.md rename to plugins/azure/skills/azure-diagnostics/troubleshooting/aks/node-issues.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/aks/pod-failures.md b/plugins/azure/skills/azure-diagnostics/troubleshooting/aks/pod-failures.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/aks/pod-failures.md rename to plugins/azure/skills/azure-diagnostics/troubleshooting/aks/pod-failures.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/aks/references/aks-mcp.md b/plugins/azure/skills/azure-diagnostics/troubleshooting/aks/references/aks-mcp.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/aks/references/aks-mcp.md rename to plugins/azure/skills/azure-diagnostics/troubleshooting/aks/references/aks-mcp.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/aks/references/command-flows.md b/plugins/azure/skills/azure-diagnostics/troubleshooting/aks/references/command-flows.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/aks/references/command-flows.md rename to plugins/azure/skills/azure-diagnostics/troubleshooting/aks/references/command-flows.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/aks/references/inspektor-gadget.md b/plugins/azure/skills/azure-diagnostics/troubleshooting/aks/references/inspektor-gadget.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/aks/references/inspektor-gadget.md rename to plugins/azure/skills/azure-diagnostics/troubleshooting/aks/references/inspektor-gadget.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/aks/references/structured-input-modes.md b/plugins/azure/skills/azure-diagnostics/troubleshooting/aks/references/structured-input-modes.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/aks/references/structured-input-modes.md rename to plugins/azure/skills/azure-diagnostics/troubleshooting/aks/references/structured-input-modes.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/aks/spot-and-zone-issues.md b/plugins/azure/skills/azure-diagnostics/troubleshooting/aks/spot-and-zone-issues.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/aks/spot-and-zone-issues.md rename to plugins/azure/skills/azure-diagnostics/troubleshooting/aks/spot-and-zone-issues.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/aks/upgrade-operations.md b/plugins/azure/skills/azure-diagnostics/troubleshooting/aks/upgrade-operations.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/aks/upgrade-operations.md rename to plugins/azure/skills/azure-diagnostics/troubleshooting/aks/upgrade-operations.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/messaging/README.md b/plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/README.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/messaging/README.md rename to plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/README.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/messaging/auth-best-practices.md b/plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/auth-best-practices.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/messaging/auth-best-practices.md rename to plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/auth-best-practices.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-dotnet.md b/plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-dotnet.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-dotnet.md rename to plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-dotnet.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-java.md b/plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-java.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-java.md rename to plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-java.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-js.md b/plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-js.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-js.md rename to plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-js.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-py.md b/plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-py.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-py.md rename to plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-py.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-dotnet.md b/plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-dotnet.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-dotnet.md rename to plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-dotnet.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-java.md b/plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-java.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-java.md rename to plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-java.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-js.md b/plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-js.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-js.md rename to plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-js.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-py.md b/plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-py.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-py.md rename to plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-py.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/messaging/service-troubleshooting.md b/plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/service-troubleshooting.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/messaging/service-troubleshooting.md rename to plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/service-troubleshooting.md diff --git a/plugin/skills/azure-deploy/version.json b/plugins/azure/skills/azure-diagnostics/version.json similarity index 100% rename from plugin/skills/azure-deploy/version.json rename to plugins/azure/skills/azure-diagnostics/version.json diff --git a/plugin/skills/azure-enterprise-infra-planner/SKILL.md b/plugins/azure/skills/azure-enterprise-infra-planner/SKILL.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/SKILL.md rename to plugins/azure/skills/azure-enterprise-infra-planner/SKILL.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/bicep-generation.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/bicep-generation.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/bicep-generation.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/bicep-generation.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/constraints/README.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/README.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/constraints/README.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/README.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/constraints/ai-ml.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/ai-ml.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/constraints/ai-ml.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/ai-ml.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/constraints/compute-apps.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/compute-apps.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/constraints/compute-apps.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/compute-apps.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/constraints/compute-infra.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/compute-infra.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/constraints/compute-infra.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/compute-infra.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/constraints/data-analytics.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/data-analytics.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/constraints/data-analytics.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/data-analytics.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/constraints/data-relational.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/data-relational.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/constraints/data-relational.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/data-relational.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/constraints/messaging.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/messaging.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/constraints/messaging.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/messaging.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/constraints/monitoring.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/monitoring.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/constraints/monitoring.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/monitoring.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/constraints/networking-connectivity.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/networking-connectivity.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/constraints/networking-connectivity.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/networking-connectivity.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/constraints/networking-core.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/networking-core.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/constraints/networking-core.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/networking-core.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/constraints/networking-traffic.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/networking-traffic.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/constraints/networking-traffic.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/networking-traffic.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/constraints/security.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/security.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/constraints/security.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/security.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/deployment.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/deployment.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/deployment.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/deployment.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/pairing-checks.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/pairing-checks.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/pairing-checks.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/pairing-checks.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/phases/1-extract-insights.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/phases/1-extract-insights.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/phases/1-extract-insights.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/phases/1-extract-insights.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/phases/2-research-best-practices.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/phases/2-research-best-practices.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/phases/2-research-best-practices.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/phases/2-research-best-practices.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/phases/3-research-resources.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/phases/3-research-resources.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/phases/3-research-resources.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/phases/3-research-resources.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/phases/4-generate-plan.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/phases/4-generate-plan.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/phases/4-generate-plan.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/phases/4-generate-plan.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/phases/5-verify.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/phases/5-verify.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/phases/5-verify.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/phases/5-verify.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/phases/6-generate-iac.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/phases/6-generate-iac.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/phases/6-generate-iac.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/phases/6-generate-iac.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/phases/7-deploy.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/phases/7-deploy.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/phases/7-deploy.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/phases/7-deploy.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/resources/README.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/resources/README.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/resources/README.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/resources/README.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/resources/ai-ml.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/resources/ai-ml.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/resources/ai-ml.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/resources/ai-ml.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/resources/compute-apps.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/resources/compute-apps.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/resources/compute-apps.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/resources/compute-apps.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/resources/compute-infra.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/resources/compute-infra.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/resources/compute-infra.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/resources/compute-infra.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/resources/data-analytics.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/resources/data-analytics.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/resources/data-analytics.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/resources/data-analytics.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/resources/data-relational.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/resources/data-relational.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/resources/data-relational.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/resources/data-relational.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/resources/messaging.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/resources/messaging.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/resources/messaging.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/resources/messaging.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/resources/monitoring.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/resources/monitoring.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/resources/monitoring.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/resources/monitoring.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/resources/networking-connectivity.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/resources/networking-connectivity.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/resources/networking-connectivity.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/resources/networking-connectivity.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/resources/networking-core.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/resources/networking-core.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/resources/networking-core.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/resources/networking-core.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/resources/networking-traffic.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/resources/networking-traffic.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/resources/networking-traffic.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/resources/networking-traffic.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/resources/security.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/resources/security.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/resources/security.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/resources/security.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/schema.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/schema.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/schema.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/schema.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/terraform-generation.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/terraform-generation.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/terraform-generation.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/terraform-generation.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/verification.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/verification.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/verification.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/verification.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/waf-checklist.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/waf-checklist.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/waf-checklist.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/waf-checklist.md diff --git a/plugin/skills/azure-enterprise-infra-planner/references/workflow.md b/plugins/azure/skills/azure-enterprise-infra-planner/references/workflow.md similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/references/workflow.md rename to plugins/azure/skills/azure-enterprise-infra-planner/references/workflow.md diff --git a/plugin/skills/azure-enterprise-infra-planner/version.json b/plugins/azure/skills/azure-enterprise-infra-planner/version.json similarity index 100% rename from plugin/skills/azure-enterprise-infra-planner/version.json rename to plugins/azure/skills/azure-enterprise-infra-planner/version.json diff --git a/plugin/skills/azure-kubernetes/SKILL.md b/plugins/azure/skills/azure-kubernetes/SKILL.md similarity index 100% rename from plugin/skills/azure-kubernetes/SKILL.md rename to plugins/azure/skills/azure-kubernetes/SKILL.md diff --git a/plugin/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/SKILL.md b/plugins/azure/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/SKILL.md similarity index 100% rename from plugin/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/SKILL.md rename to plugins/azure/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/SKILL.md diff --git a/plugin/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/common-fixes.md b/plugins/azure/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/common-fixes.md similarity index 100% rename from plugin/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/common-fixes.md rename to plugins/azure/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/common-fixes.md diff --git a/plugin/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/constraint-spec-v1.yaml b/plugins/azure/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/constraint-spec-v1.yaml similarity index 100% rename from plugin/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/constraint-spec-v1.yaml rename to plugins/azure/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/constraint-spec-v1.yaml diff --git a/plugin/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/mcp-integration.md b/plugins/azure/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/mcp-integration.md similarity index 100% rename from plugin/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/mcp-integration.md rename to plugins/azure/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/mcp-integration.md diff --git a/plugin/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/migration-guide-summary.md b/plugins/azure/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/migration-guide-summary.md similarity index 100% rename from plugin/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/migration-guide-summary.md rename to plugins/azure/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/migration-guide-summary.md diff --git a/plugin/skills/azure-kubernetes/references/azure-aks-autoscaler.md b/plugins/azure/skills/azure-kubernetes/references/azure-aks-autoscaler.md similarity index 100% rename from plugin/skills/azure-kubernetes/references/azure-aks-autoscaler.md rename to plugins/azure/skills/azure-kubernetes/references/azure-aks-autoscaler.md diff --git a/plugin/skills/azure-kubernetes/references/azure-aks-rightsizing.md b/plugins/azure/skills/azure-kubernetes/references/azure-aks-rightsizing.md similarity index 100% rename from plugin/skills/azure-kubernetes/references/azure-aks-rightsizing.md rename to plugins/azure/skills/azure-kubernetes/references/azure-aks-rightsizing.md diff --git a/plugin/skills/azure-kubernetes/references/azure-aks-spot.md b/plugins/azure/skills/azure-kubernetes/references/azure-aks-spot.md similarity index 100% rename from plugin/skills/azure-kubernetes/references/azure-aks-spot.md rename to plugins/azure/skills/azure-kubernetes/references/azure-aks-spot.md diff --git a/plugin/skills/azure-kubernetes/references/azure-aks-vpa.md b/plugins/azure/skills/azure-kubernetes/references/azure-aks-vpa.md similarity index 100% rename from plugin/skills/azure-kubernetes/references/azure-aks-vpa.md rename to plugins/azure/skills/azure-kubernetes/references/azure-aks-vpa.md diff --git a/plugin/skills/azure-kubernetes/references/cli-reference.md b/plugins/azure/skills/azure-kubernetes/references/cli-reference.md similarity index 100% rename from plugin/skills/azure-kubernetes/references/cli-reference.md rename to plugins/azure/skills/azure-kubernetes/references/cli-reference.md diff --git a/plugin/skills/azure-diagnostics/version.json b/plugins/azure/skills/azure-kubernetes/version.json similarity index 100% rename from plugin/skills/azure-diagnostics/version.json rename to plugins/azure/skills/azure-kubernetes/version.json diff --git a/plugin/skills/azure-kusto/SKILL.md b/plugins/azure/skills/azure-kusto/SKILL.md similarity index 100% rename from plugin/skills/azure-kusto/SKILL.md rename to plugins/azure/skills/azure-kusto/SKILL.md diff --git a/plugin/skills/azure-kubernetes/version.json b/plugins/azure/skills/azure-kusto/version.json similarity index 100% rename from plugin/skills/azure-kubernetes/version.json rename to plugins/azure/skills/azure-kusto/version.json diff --git a/plugin/skills/azure-messaging/SKILL.md b/plugins/azure/skills/azure-messaging/SKILL.md similarity index 100% rename from plugin/skills/azure-messaging/SKILL.md rename to plugins/azure/skills/azure-messaging/SKILL.md diff --git a/plugin/skills/azure-kusto/version.json b/plugins/azure/skills/azure-messaging/version.json similarity index 100% rename from plugin/skills/azure-kusto/version.json rename to plugins/azure/skills/azure-messaging/version.json diff --git a/plugin/skills/azure-prepare/SKILL.md b/plugins/azure/skills/azure-prepare/SKILL.md similarity index 100% rename from plugin/skills/azure-prepare/SKILL.md rename to plugins/azure/skills/azure-prepare/SKILL.md diff --git a/plugin/skills/azure-prepare/references/analyze.md b/plugins/azure/skills/azure-prepare/references/analyze.md similarity index 100% rename from plugin/skills/azure-prepare/references/analyze.md rename to plugins/azure/skills/azure-prepare/references/analyze.md diff --git a/plugin/skills/azure-prepare/references/apim.md b/plugins/azure/skills/azure-prepare/references/apim.md similarity index 100% rename from plugin/skills/azure-prepare/references/apim.md rename to plugins/azure/skills/azure-prepare/references/apim.md diff --git a/plugin/skills/azure-prepare/references/architecture.md b/plugins/azure/skills/azure-prepare/references/architecture.md similarity index 100% rename from plugin/skills/azure-prepare/references/architecture.md rename to plugins/azure/skills/azure-prepare/references/architecture.md diff --git a/plugin/skills/azure-prepare/references/aspire.md b/plugins/azure/skills/azure-prepare/references/aspire.md similarity index 100% rename from plugin/skills/azure-prepare/references/aspire.md rename to plugins/azure/skills/azure-prepare/references/aspire.md diff --git a/plugin/skills/azure-prepare/references/auth-best-practices.md b/plugins/azure/skills/azure-prepare/references/auth-best-practices.md similarity index 100% rename from plugin/skills/azure-prepare/references/auth-best-practices.md rename to plugins/azure/skills/azure-prepare/references/auth-best-practices.md diff --git a/plugin/skills/azure-prepare/references/azure-context.md b/plugins/azure/skills/azure-prepare/references/azure-context.md similarity index 100% rename from plugin/skills/azure-prepare/references/azure-context.md rename to plugins/azure/skills/azure-prepare/references/azure-context.md diff --git a/plugin/skills/azure-prepare/references/functional-verification.md b/plugins/azure/skills/azure-prepare/references/functional-verification.md similarity index 100% rename from plugin/skills/azure-prepare/references/functional-verification.md rename to plugins/azure/skills/azure-prepare/references/functional-verification.md diff --git a/plugin/skills/azure-prepare/references/generate.md b/plugins/azure/skills/azure-prepare/references/generate.md similarity index 100% rename from plugin/skills/azure-prepare/references/generate.md rename to plugins/azure/skills/azure-prepare/references/generate.md diff --git a/plugin/skills/azure-prepare/references/global-rules.md b/plugins/azure/skills/azure-prepare/references/global-rules.md similarity index 100% rename from plugin/skills/azure-prepare/references/global-rules.md rename to plugins/azure/skills/azure-prepare/references/global-rules.md diff --git a/plugin/skills/azure-prepare/references/plan-template.md b/plugins/azure/skills/azure-prepare/references/plan-template.md similarity index 100% rename from plugin/skills/azure-prepare/references/plan-template.md rename to plugins/azure/skills/azure-prepare/references/plan-template.md diff --git a/plugin/skills/azure-prepare/references/recipe-selection.md b/plugins/azure/skills/azure-prepare/references/recipe-selection.md similarity index 100% rename from plugin/skills/azure-prepare/references/recipe-selection.md rename to plugins/azure/skills/azure-prepare/references/recipe-selection.md diff --git a/plugin/skills/azure-prepare/references/recipes/azcli/README.md b/plugins/azure/skills/azure-prepare/references/recipes/azcli/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/recipes/azcli/README.md rename to plugins/azure/skills/azure-prepare/references/recipes/azcli/README.md diff --git a/plugin/skills/azure-prepare/references/recipes/azcli/commands.md b/plugins/azure/skills/azure-prepare/references/recipes/azcli/commands.md similarity index 100% rename from plugin/skills/azure-prepare/references/recipes/azcli/commands.md rename to plugins/azure/skills/azure-prepare/references/recipes/azcli/commands.md diff --git a/plugin/skills/azure-prepare/references/recipes/azcli/scripts.md b/plugins/azure/skills/azure-prepare/references/recipes/azcli/scripts.md similarity index 100% rename from plugin/skills/azure-prepare/references/recipes/azcli/scripts.md rename to plugins/azure/skills/azure-prepare/references/recipes/azcli/scripts.md diff --git a/plugin/skills/azure-prepare/references/recipes/azd/README.md b/plugins/azure/skills/azure-prepare/references/recipes/azd/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/recipes/azd/README.md rename to plugins/azure/skills/azure-prepare/references/recipes/azd/README.md diff --git a/plugin/skills/azure-prepare/references/recipes/azd/aspire.md b/plugins/azure/skills/azure-prepare/references/recipes/azd/aspire.md similarity index 100% rename from plugin/skills/azure-prepare/references/recipes/azd/aspire.md rename to plugins/azure/skills/azure-prepare/references/recipes/azd/aspire.md diff --git a/plugin/skills/azure-prepare/references/recipes/azd/azure-yaml.md b/plugins/azure/skills/azure-prepare/references/recipes/azd/azure-yaml.md similarity index 100% rename from plugin/skills/azure-prepare/references/recipes/azd/azure-yaml.md rename to plugins/azure/skills/azure-prepare/references/recipes/azd/azure-yaml.md diff --git a/plugin/skills/azure-prepare/references/recipes/azd/docker.md b/plugins/azure/skills/azure-prepare/references/recipes/azd/docker.md similarity index 100% rename from plugin/skills/azure-prepare/references/recipes/azd/docker.md rename to plugins/azure/skills/azure-prepare/references/recipes/azd/docker.md diff --git a/plugin/skills/azure-prepare/references/recipes/azd/iac-rules.md b/plugins/azure/skills/azure-prepare/references/recipes/azd/iac-rules.md similarity index 100% rename from plugin/skills/azure-prepare/references/recipes/azd/iac-rules.md rename to plugins/azure/skills/azure-prepare/references/recipes/azd/iac-rules.md diff --git a/plugin/skills/azure-prepare/references/recipes/azd/terraform.md b/plugins/azure/skills/azure-prepare/references/recipes/azd/terraform.md similarity index 100% rename from plugin/skills/azure-prepare/references/recipes/azd/terraform.md rename to plugins/azure/skills/azure-prepare/references/recipes/azd/terraform.md diff --git a/plugin/skills/azure-prepare/references/recipes/bicep/README.md b/plugins/azure/skills/azure-prepare/references/recipes/bicep/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/recipes/bicep/README.md rename to plugins/azure/skills/azure-prepare/references/recipes/bicep/README.md diff --git a/plugin/skills/azure-prepare/references/recipes/bicep/patterns.md b/plugins/azure/skills/azure-prepare/references/recipes/bicep/patterns.md similarity index 100% rename from plugin/skills/azure-prepare/references/recipes/bicep/patterns.md rename to plugins/azure/skills/azure-prepare/references/recipes/bicep/patterns.md diff --git a/plugin/skills/azure-prepare/references/recipes/terraform/README.md b/plugins/azure/skills/azure-prepare/references/recipes/terraform/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/recipes/terraform/README.md rename to plugins/azure/skills/azure-prepare/references/recipes/terraform/README.md diff --git a/plugin/skills/azure-prepare/references/recipes/terraform/patterns.md b/plugins/azure/skills/azure-prepare/references/recipes/terraform/patterns.md similarity index 100% rename from plugin/skills/azure-prepare/references/recipes/terraform/patterns.md rename to plugins/azure/skills/azure-prepare/references/recipes/terraform/patterns.md diff --git a/plugin/skills/azure-prepare/references/region-availability.md b/plugins/azure/skills/azure-prepare/references/region-availability.md similarity index 100% rename from plugin/skills/azure-prepare/references/region-availability.md rename to plugins/azure/skills/azure-prepare/references/region-availability.md diff --git a/plugin/skills/azure-prepare/references/requirements.md b/plugins/azure/skills/azure-prepare/references/requirements.md similarity index 100% rename from plugin/skills/azure-prepare/references/requirements.md rename to plugins/azure/skills/azure-prepare/references/requirements.md diff --git a/plugin/skills/azure-prepare/references/research.md b/plugins/azure/skills/azure-prepare/references/research.md similarity index 100% rename from plugin/skills/azure-prepare/references/research.md rename to plugins/azure/skills/azure-prepare/references/research.md diff --git a/plugin/skills/azure-prepare/references/resources-limits-quotas.md b/plugins/azure/skills/azure-prepare/references/resources-limits-quotas.md similarity index 100% rename from plugin/skills/azure-prepare/references/resources-limits-quotas.md rename to plugins/azure/skills/azure-prepare/references/resources-limits-quotas.md diff --git a/plugin/skills/azure-prepare/references/runtimes/nodejs.md b/plugins/azure/skills/azure-prepare/references/runtimes/nodejs.md similarity index 100% rename from plugin/skills/azure-prepare/references/runtimes/nodejs.md rename to plugins/azure/skills/azure-prepare/references/runtimes/nodejs.md diff --git a/plugin/skills/azure-prepare/references/scan.md b/plugins/azure/skills/azure-prepare/references/scan.md similarity index 100% rename from plugin/skills/azure-prepare/references/scan.md rename to plugins/azure/skills/azure-prepare/references/scan.md diff --git a/plugin/skills/azure-prepare/references/sdk/azd-deployment.md b/plugins/azure/skills/azure-prepare/references/sdk/azd-deployment.md similarity index 100% rename from plugin/skills/azure-prepare/references/sdk/azd-deployment.md rename to plugins/azure/skills/azure-prepare/references/sdk/azd-deployment.md diff --git a/plugin/skills/azure-prepare/references/sdk/azure-appconfiguration-java.md b/plugins/azure/skills/azure-prepare/references/sdk/azure-appconfiguration-java.md similarity index 100% rename from plugin/skills/azure-prepare/references/sdk/azure-appconfiguration-java.md rename to plugins/azure/skills/azure-prepare/references/sdk/azure-appconfiguration-java.md diff --git a/plugin/skills/azure-prepare/references/sdk/azure-appconfiguration-py.md b/plugins/azure/skills/azure-prepare/references/sdk/azure-appconfiguration-py.md similarity index 100% rename from plugin/skills/azure-prepare/references/sdk/azure-appconfiguration-py.md rename to plugins/azure/skills/azure-prepare/references/sdk/azure-appconfiguration-py.md diff --git a/plugin/skills/azure-prepare/references/sdk/azure-appconfiguration-ts.md b/plugins/azure/skills/azure-prepare/references/sdk/azure-appconfiguration-ts.md similarity index 100% rename from plugin/skills/azure-prepare/references/sdk/azure-appconfiguration-ts.md rename to plugins/azure/skills/azure-prepare/references/sdk/azure-appconfiguration-ts.md diff --git a/plugin/skills/azure-prepare/references/sdk/azure-identity-dotnet.md b/plugins/azure/skills/azure-prepare/references/sdk/azure-identity-dotnet.md similarity index 100% rename from plugin/skills/azure-prepare/references/sdk/azure-identity-dotnet.md rename to plugins/azure/skills/azure-prepare/references/sdk/azure-identity-dotnet.md diff --git a/plugin/skills/azure-prepare/references/sdk/azure-identity-java.md b/plugins/azure/skills/azure-prepare/references/sdk/azure-identity-java.md similarity index 100% rename from plugin/skills/azure-prepare/references/sdk/azure-identity-java.md rename to plugins/azure/skills/azure-prepare/references/sdk/azure-identity-java.md diff --git a/plugin/skills/azure-prepare/references/sdk/azure-identity-py.md b/plugins/azure/skills/azure-prepare/references/sdk/azure-identity-py.md similarity index 100% rename from plugin/skills/azure-prepare/references/sdk/azure-identity-py.md rename to plugins/azure/skills/azure-prepare/references/sdk/azure-identity-py.md diff --git a/plugin/skills/azure-prepare/references/sdk/azure-identity-ts.md b/plugins/azure/skills/azure-prepare/references/sdk/azure-identity-ts.md similarity index 100% rename from plugin/skills/azure-prepare/references/sdk/azure-identity-ts.md rename to plugins/azure/skills/azure-prepare/references/sdk/azure-identity-ts.md diff --git a/plugin/skills/azure-prepare/references/security.md b/plugins/azure/skills/azure-prepare/references/security.md similarity index 100% rename from plugin/skills/azure-prepare/references/security.md rename to plugins/azure/skills/azure-prepare/references/security.md diff --git a/plugin/skills/azure-prepare/references/services/aks/README.md b/plugins/azure/skills/azure-prepare/references/services/aks/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/aks/README.md rename to plugins/azure/skills/azure-prepare/references/services/aks/README.md diff --git a/plugin/skills/azure-prepare/references/services/aks/addons.md b/plugins/azure/skills/azure-prepare/references/services/aks/addons.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/aks/addons.md rename to plugins/azure/skills/azure-prepare/references/services/aks/addons.md diff --git a/plugin/skills/azure-prepare/references/services/aks/bicep.md b/plugins/azure/skills/azure-prepare/references/services/aks/bicep.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/aks/bicep.md rename to plugins/azure/skills/azure-prepare/references/services/aks/bicep.md diff --git a/plugin/skills/azure-prepare/references/services/aks/manifests.md b/plugins/azure/skills/azure-prepare/references/services/aks/manifests.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/aks/manifests.md rename to plugins/azure/skills/azure-prepare/references/services/aks/manifests.md diff --git a/plugin/skills/azure-prepare/references/services/app-insights/README.md b/plugins/azure/skills/azure-prepare/references/services/app-insights/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-insights/README.md rename to plugins/azure/skills/azure-prepare/references/services/app-insights/README.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/README.md b/plugins/azure/skills/azure-prepare/references/services/app-service/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/README.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/README.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/bicep.md b/plugins/azure/skills/azure-prepare/references/services/app-service/bicep.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/bicep.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/bicep.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/custom-domains.md b/plugins/azure/skills/azure-prepare/references/services/app-service/custom-domains.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/custom-domains.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/custom-domains.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/deployment-slots.md b/plugins/azure/skills/azure-prepare/references/services/app-service/deployment-slots.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/deployment-slots.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/deployment-slots.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/networking.md b/plugins/azure/skills/azure-prepare/references/services/app-service/networking.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/networking.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/networking.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/scaling.md b/plugins/azure/skills/azure-prepare/references/services/app-service/scaling.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/scaling.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/scaling.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/sku-selection.md b/plugins/azure/skills/azure-prepare/references/services/app-service/sku-selection.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/sku-selection.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/sku-selection.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/templates/recipes/README.md b/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/templates/recipes/README.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/README.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/templates/recipes/auth/README.md b/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/auth/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/templates/recipes/auth/README.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/auth/README.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/dotnet.md b/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/dotnet.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/dotnet.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/dotnet.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/nodejs.md b/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/nodejs.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/nodejs.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/nodejs.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/python.md b/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/python.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/python.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/python.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/templates/recipes/composition.md b/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/composition.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/templates/recipes/composition.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/composition.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/README.md b/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/README.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/README.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/dotnet.md b/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/dotnet.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/dotnet.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/dotnet.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/nodejs.md b/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/nodejs.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/nodejs.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/nodejs.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/python.md b/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/python.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/python.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/python.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/templates/recipes/redis/README.md b/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/redis/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/templates/recipes/redis/README.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/redis/README.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/dotnet.md b/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/dotnet.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/dotnet.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/dotnet.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/nodejs.md b/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/nodejs.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/nodejs.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/nodejs.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/python.md b/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/python.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/python.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/python.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/templates/recipes/sql/README.md b/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/sql/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/templates/recipes/sql/README.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/sql/README.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/dotnet.md b/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/dotnet.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/dotnet.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/dotnet.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/nodejs.md b/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/nodejs.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/nodejs.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/nodejs.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/python.md b/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/python.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/python.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/python.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/templates/selection.md b/plugins/azure/skills/azure-prepare/references/services/app-service/templates/selection.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/templates/selection.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/templates/selection.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/templates/web-api.md b/plugins/azure/skills/azure-prepare/references/services/app-service/templates/web-api.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/templates/web-api.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/templates/web-api.md diff --git a/plugin/skills/azure-prepare/references/services/app-service/templates/web-app.md b/plugins/azure/skills/azure-prepare/references/services/app-service/templates/web-app.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/app-service/templates/web-app.md rename to plugins/azure/skills/azure-prepare/references/services/app-service/templates/web-app.md diff --git a/plugin/skills/azure-prepare/references/services/container-apps/README.md b/plugins/azure/skills/azure-prepare/references/services/container-apps/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/container-apps/README.md rename to plugins/azure/skills/azure-prepare/references/services/container-apps/README.md diff --git a/plugin/skills/azure-prepare/references/services/container-apps/bicep.md b/plugins/azure/skills/azure-prepare/references/services/container-apps/bicep.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/container-apps/bicep.md rename to plugins/azure/skills/azure-prepare/references/services/container-apps/bicep.md diff --git a/plugin/skills/azure-prepare/references/services/container-apps/day2-operations.md b/plugins/azure/skills/azure-prepare/references/services/container-apps/day2-operations.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/container-apps/day2-operations.md rename to plugins/azure/skills/azure-prepare/references/services/container-apps/day2-operations.md diff --git a/plugin/skills/azure-prepare/references/services/container-apps/environment.md b/plugins/azure/skills/azure-prepare/references/services/container-apps/environment.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/container-apps/environment.md rename to plugins/azure/skills/azure-prepare/references/services/container-apps/environment.md diff --git a/plugin/skills/azure-prepare/references/services/container-apps/health-probes.md b/plugins/azure/skills/azure-prepare/references/services/container-apps/health-probes.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/container-apps/health-probes.md rename to plugins/azure/skills/azure-prepare/references/services/container-apps/health-probes.md diff --git a/plugin/skills/azure-prepare/references/services/container-apps/networking.md b/plugins/azure/skills/azure-prepare/references/services/container-apps/networking.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/container-apps/networking.md rename to plugins/azure/skills/azure-prepare/references/services/container-apps/networking.md diff --git a/plugin/skills/azure-prepare/references/services/container-apps/revisions.md b/plugins/azure/skills/azure-prepare/references/services/container-apps/revisions.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/container-apps/revisions.md rename to plugins/azure/skills/azure-prepare/references/services/container-apps/revisions.md diff --git a/plugin/skills/azure-prepare/references/services/container-apps/scaling.md b/plugins/azure/skills/azure-prepare/references/services/container-apps/scaling.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/container-apps/scaling.md rename to plugins/azure/skills/azure-prepare/references/services/container-apps/scaling.md diff --git a/plugin/skills/azure-prepare/references/services/container-apps/terraform.md b/plugins/azure/skills/azure-prepare/references/services/container-apps/terraform.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/container-apps/terraform.md rename to plugins/azure/skills/azure-prepare/references/services/container-apps/terraform.md diff --git a/plugin/skills/azure-prepare/references/services/cosmos-db/README.md b/plugins/azure/skills/azure-prepare/references/services/cosmos-db/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/cosmos-db/README.md rename to plugins/azure/skills/azure-prepare/references/services/cosmos-db/README.md diff --git a/plugin/skills/azure-prepare/references/services/cosmos-db/bicep.md b/plugins/azure/skills/azure-prepare/references/services/cosmos-db/bicep.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/cosmos-db/bicep.md rename to plugins/azure/skills/azure-prepare/references/services/cosmos-db/bicep.md diff --git a/plugin/skills/azure-prepare/references/services/cosmos-db/partitioning.md b/plugins/azure/skills/azure-prepare/references/services/cosmos-db/partitioning.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/cosmos-db/partitioning.md rename to plugins/azure/skills/azure-prepare/references/services/cosmos-db/partitioning.md diff --git a/plugin/skills/azure-prepare/references/services/cosmos-db/sdk.md b/plugins/azure/skills/azure-prepare/references/services/cosmos-db/sdk.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/cosmos-db/sdk.md rename to plugins/azure/skills/azure-prepare/references/services/cosmos-db/sdk.md diff --git a/plugin/skills/azure-prepare/references/services/durable-task-scheduler/README.md b/plugins/azure/skills/azure-prepare/references/services/durable-task-scheduler/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/durable-task-scheduler/README.md rename to plugins/azure/skills/azure-prepare/references/services/durable-task-scheduler/README.md diff --git a/plugin/skills/azure-prepare/references/services/durable-task-scheduler/bicep.md b/plugins/azure/skills/azure-prepare/references/services/durable-task-scheduler/bicep.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/durable-task-scheduler/bicep.md rename to plugins/azure/skills/azure-prepare/references/services/durable-task-scheduler/bicep.md diff --git a/plugin/skills/azure-prepare/references/services/durable-task-scheduler/dotnet.md b/plugins/azure/skills/azure-prepare/references/services/durable-task-scheduler/dotnet.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/durable-task-scheduler/dotnet.md rename to plugins/azure/skills/azure-prepare/references/services/durable-task-scheduler/dotnet.md diff --git a/plugin/skills/azure-prepare/references/services/durable-task-scheduler/java.md b/plugins/azure/skills/azure-prepare/references/services/durable-task-scheduler/java.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/durable-task-scheduler/java.md rename to plugins/azure/skills/azure-prepare/references/services/durable-task-scheduler/java.md diff --git a/plugin/skills/azure-prepare/references/services/durable-task-scheduler/javascript.md b/plugins/azure/skills/azure-prepare/references/services/durable-task-scheduler/javascript.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/durable-task-scheduler/javascript.md rename to plugins/azure/skills/azure-prepare/references/services/durable-task-scheduler/javascript.md diff --git a/plugin/skills/azure-prepare/references/services/durable-task-scheduler/python.md b/plugins/azure/skills/azure-prepare/references/services/durable-task-scheduler/python.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/durable-task-scheduler/python.md rename to plugins/azure/skills/azure-prepare/references/services/durable-task-scheduler/python.md diff --git a/plugin/skills/azure-prepare/references/services/event-grid/README.md b/plugins/azure/skills/azure-prepare/references/services/event-grid/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/event-grid/README.md rename to plugins/azure/skills/azure-prepare/references/services/event-grid/README.md diff --git a/plugin/skills/azure-prepare/references/services/event-grid/bicep.md b/plugins/azure/skills/azure-prepare/references/services/event-grid/bicep.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/event-grid/bicep.md rename to plugins/azure/skills/azure-prepare/references/services/event-grid/bicep.md diff --git a/plugin/skills/azure-prepare/references/services/event-grid/subscriptions.md b/plugins/azure/skills/azure-prepare/references/services/event-grid/subscriptions.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/event-grid/subscriptions.md rename to plugins/azure/skills/azure-prepare/references/services/event-grid/subscriptions.md diff --git a/plugin/skills/azure-prepare/references/services/foundry/README.md b/plugins/azure/skills/azure-prepare/references/services/foundry/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/foundry/README.md rename to plugins/azure/skills/azure-prepare/references/services/foundry/README.md diff --git a/plugin/skills/azure-prepare/references/services/foundry/region-availability.md b/plugins/azure/skills/azure-prepare/references/services/foundry/region-availability.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/foundry/region-availability.md rename to plugins/azure/skills/azure-prepare/references/services/foundry/region-availability.md diff --git a/plugin/skills/azure-prepare/references/services/functions/README.md b/plugins/azure/skills/azure-prepare/references/services/functions/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/README.md rename to plugins/azure/skills/azure-prepare/references/services/functions/README.md diff --git a/plugin/skills/azure-prepare/references/services/functions/aspire-containerapps.md b/plugins/azure/skills/azure-prepare/references/services/functions/aspire-containerapps.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/aspire-containerapps.md rename to plugins/azure/skills/azure-prepare/references/services/functions/aspire-containerapps.md diff --git a/plugin/skills/azure-prepare/references/services/functions/bicep.md b/plugins/azure/skills/azure-prepare/references/services/functions/bicep.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/bicep.md rename to plugins/azure/skills/azure-prepare/references/services/functions/bicep.md diff --git a/plugin/skills/azure-prepare/references/services/functions/durable.md b/plugins/azure/skills/azure-prepare/references/services/functions/durable.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/durable.md rename to plugins/azure/skills/azure-prepare/references/services/functions/durable.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/README.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/README.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/README.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/base/eval/python.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/base/eval/python.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/base/eval/python.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/base/eval/python.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/base/eval/summary.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/base/eval/summary.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/base/eval/summary.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/base/eval/summary.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/base/eval/typescript.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/base/eval/typescript.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/base/eval/typescript.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/base/eval/typescript.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/README.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/README.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/README.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/README.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/README.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/README.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/eval/python.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/eval/python.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/eval/python.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/eval/python.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/eval/summary.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/eval/summary.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/eval/summary.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/eval/summary.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/common/dotnet-entry-point.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/common/dotnet-entry-point.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/common/dotnet-entry-point.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/common/dotnet-entry-point.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/common/error-handling.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/common/error-handling.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/common/error-handling.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/common/error-handling.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/common/health-check.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/common/health-check.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/common/health-check.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/common/health-check.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/common/nodejs-entry-point.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/common/nodejs-entry-point.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/common/nodejs-entry-point.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/common/nodejs-entry-point.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/composition.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/composition.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/composition.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/composition.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/README.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/README.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/README.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/python.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/python.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/python.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/python.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/summary.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/summary.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/summary.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/summary.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/typescript.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/typescript.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/typescript.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/typescript.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/durable/README.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/durable/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/durable/README.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/durable/README.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/durable/eval/python.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/durable/eval/python.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/durable/eval/python.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/durable/eval/python.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/durable/eval/summary.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/durable/eval/summary.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/durable/eval/summary.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/durable/eval/summary.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/README.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/README.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/README.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/eval/python.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/eval/python.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/eval/python.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/eval/python.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/eval/summary.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/eval/summary.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/eval/summary.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/eval/summary.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/mcp/README.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/mcp/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/mcp/README.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/mcp/README.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/mcp/eval/python.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/mcp/eval/python.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/mcp/eval/python.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/mcp/eval/python.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/mcp/eval/summary.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/mcp/eval/summary.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/mcp/eval/summary.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/mcp/eval/summary.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/README.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/README.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/README.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/python.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/python.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/python.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/python.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/summary.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/summary.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/summary.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/summary.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/typescript.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/typescript.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/typescript.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/typescript.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/sql/README.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/sql/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/sql/README.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/sql/README.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/sql/eval/python.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/sql/eval/python.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/sql/eval/python.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/sql/eval/python.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/sql/eval/summary.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/sql/eval/summary.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/sql/eval/summary.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/sql/eval/summary.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/timer/README.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/timer/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/timer/README.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/timer/README.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/timer/eval/python.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/timer/eval/python.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/timer/eval/python.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/timer/eval/python.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/recipes/timer/eval/summary.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/timer/eval/summary.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/recipes/timer/eval/summary.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/timer/eval/summary.md diff --git a/plugin/skills/azure-prepare/references/services/functions/templates/selection.md b/plugins/azure/skills/azure-prepare/references/services/functions/templates/selection.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/templates/selection.md rename to plugins/azure/skills/azure-prepare/references/services/functions/templates/selection.md diff --git a/plugin/skills/azure-prepare/references/services/functions/terraform.md b/plugins/azure/skills/azure-prepare/references/services/functions/terraform.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/functions/terraform.md rename to plugins/azure/skills/azure-prepare/references/services/functions/terraform.md diff --git a/plugin/skills/azure-prepare/references/services/key-vault/README.md b/plugins/azure/skills/azure-prepare/references/services/key-vault/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/key-vault/README.md rename to plugins/azure/skills/azure-prepare/references/services/key-vault/README.md diff --git a/plugin/skills/azure-prepare/references/services/key-vault/bicep.md b/plugins/azure/skills/azure-prepare/references/services/key-vault/bicep.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/key-vault/bicep.md rename to plugins/azure/skills/azure-prepare/references/services/key-vault/bicep.md diff --git a/plugin/skills/azure-prepare/references/services/key-vault/sdk.md b/plugins/azure/skills/azure-prepare/references/services/key-vault/sdk.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/key-vault/sdk.md rename to plugins/azure/skills/azure-prepare/references/services/key-vault/sdk.md diff --git a/plugin/skills/azure-prepare/references/services/logic-apps/README.md b/plugins/azure/skills/azure-prepare/references/services/logic-apps/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/logic-apps/README.md rename to plugins/azure/skills/azure-prepare/references/services/logic-apps/README.md diff --git a/plugin/skills/azure-prepare/references/services/logic-apps/bicep.md b/plugins/azure/skills/azure-prepare/references/services/logic-apps/bicep.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/logic-apps/bicep.md rename to plugins/azure/skills/azure-prepare/references/services/logic-apps/bicep.md diff --git a/plugin/skills/azure-prepare/references/services/logic-apps/triggers.md b/plugins/azure/skills/azure-prepare/references/services/logic-apps/triggers.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/logic-apps/triggers.md rename to plugins/azure/skills/azure-prepare/references/services/logic-apps/triggers.md diff --git a/plugin/skills/azure-prepare/references/services/service-bus/README.md b/plugins/azure/skills/azure-prepare/references/services/service-bus/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/service-bus/README.md rename to plugins/azure/skills/azure-prepare/references/services/service-bus/README.md diff --git a/plugin/skills/azure-prepare/references/services/service-bus/bicep.md b/plugins/azure/skills/azure-prepare/references/services/service-bus/bicep.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/service-bus/bicep.md rename to plugins/azure/skills/azure-prepare/references/services/service-bus/bicep.md diff --git a/plugin/skills/azure-prepare/references/services/service-bus/patterns.md b/plugins/azure/skills/azure-prepare/references/services/service-bus/patterns.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/service-bus/patterns.md rename to plugins/azure/skills/azure-prepare/references/services/service-bus/patterns.md diff --git a/plugin/skills/azure-prepare/references/services/sql-database/README.md b/plugins/azure/skills/azure-prepare/references/services/sql-database/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/sql-database/README.md rename to plugins/azure/skills/azure-prepare/references/services/sql-database/README.md diff --git a/plugin/skills/azure-prepare/references/services/sql-database/auth.md b/plugins/azure/skills/azure-prepare/references/services/sql-database/auth.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/sql-database/auth.md rename to plugins/azure/skills/azure-prepare/references/services/sql-database/auth.md diff --git a/plugin/skills/azure-prepare/references/services/sql-database/bicep.md b/plugins/azure/skills/azure-prepare/references/services/sql-database/bicep.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/sql-database/bicep.md rename to plugins/azure/skills/azure-prepare/references/services/sql-database/bicep.md diff --git a/plugin/skills/azure-prepare/references/services/sql-database/scripts/grant-sql-access.ps1 b/plugins/azure/skills/azure-prepare/references/services/sql-database/scripts/grant-sql-access.ps1 similarity index 100% rename from plugin/skills/azure-prepare/references/services/sql-database/scripts/grant-sql-access.ps1 rename to plugins/azure/skills/azure-prepare/references/services/sql-database/scripts/grant-sql-access.ps1 diff --git a/plugin/skills/azure-prepare/references/services/sql-database/scripts/grant-sql-access.sh b/plugins/azure/skills/azure-prepare/references/services/sql-database/scripts/grant-sql-access.sh similarity index 100% rename from plugin/skills/azure-prepare/references/services/sql-database/scripts/grant-sql-access.sh rename to plugins/azure/skills/azure-prepare/references/services/sql-database/scripts/grant-sql-access.sh diff --git a/plugin/skills/azure-prepare/references/services/sql-database/sdk.md b/plugins/azure/skills/azure-prepare/references/services/sql-database/sdk.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/sql-database/sdk.md rename to plugins/azure/skills/azure-prepare/references/services/sql-database/sdk.md diff --git a/plugin/skills/azure-prepare/references/services/static-web-apps/README.md b/plugins/azure/skills/azure-prepare/references/services/static-web-apps/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/static-web-apps/README.md rename to plugins/azure/skills/azure-prepare/references/services/static-web-apps/README.md diff --git a/plugin/skills/azure-prepare/references/services/static-web-apps/bicep.md b/plugins/azure/skills/azure-prepare/references/services/static-web-apps/bicep.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/static-web-apps/bicep.md rename to plugins/azure/skills/azure-prepare/references/services/static-web-apps/bicep.md diff --git a/plugin/skills/azure-prepare/references/services/static-web-apps/deployment.md b/plugins/azure/skills/azure-prepare/references/services/static-web-apps/deployment.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/static-web-apps/deployment.md rename to plugins/azure/skills/azure-prepare/references/services/static-web-apps/deployment.md diff --git a/plugin/skills/azure-prepare/references/services/static-web-apps/region-availability.md b/plugins/azure/skills/azure-prepare/references/services/static-web-apps/region-availability.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/static-web-apps/region-availability.md rename to plugins/azure/skills/azure-prepare/references/services/static-web-apps/region-availability.md diff --git a/plugin/skills/azure-prepare/references/services/static-web-apps/routing.md b/plugins/azure/skills/azure-prepare/references/services/static-web-apps/routing.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/static-web-apps/routing.md rename to plugins/azure/skills/azure-prepare/references/services/static-web-apps/routing.md diff --git a/plugin/skills/azure-prepare/references/services/static-web-apps/terraform.md b/plugins/azure/skills/azure-prepare/references/services/static-web-apps/terraform.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/static-web-apps/terraform.md rename to plugins/azure/skills/azure-prepare/references/services/static-web-apps/terraform.md diff --git a/plugin/skills/azure-prepare/references/services/storage/README.md b/plugins/azure/skills/azure-prepare/references/services/storage/README.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/storage/README.md rename to plugins/azure/skills/azure-prepare/references/services/storage/README.md diff --git a/plugin/skills/azure-prepare/references/services/storage/access.md b/plugins/azure/skills/azure-prepare/references/services/storage/access.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/storage/access.md rename to plugins/azure/skills/azure-prepare/references/services/storage/access.md diff --git a/plugin/skills/azure-prepare/references/services/storage/bicep.md b/plugins/azure/skills/azure-prepare/references/services/storage/bicep.md similarity index 100% rename from plugin/skills/azure-prepare/references/services/storage/bicep.md rename to plugins/azure/skills/azure-prepare/references/services/storage/bicep.md diff --git a/plugin/skills/azure-prepare/references/specialized-routing.md b/plugins/azure/skills/azure-prepare/references/specialized-routing.md similarity index 100% rename from plugin/skills/azure-prepare/references/specialized-routing.md rename to plugins/azure/skills/azure-prepare/references/specialized-routing.md diff --git a/plugin/skills/azure-prepare/version.json b/plugins/azure/skills/azure-prepare/version.json similarity index 100% rename from plugin/skills/azure-prepare/version.json rename to plugins/azure/skills/azure-prepare/version.json diff --git a/plugin/skills/azure-quotas/SKILL.md b/plugins/azure/skills/azure-quotas/SKILL.md similarity index 100% rename from plugin/skills/azure-quotas/SKILL.md rename to plugins/azure/skills/azure-quotas/SKILL.md diff --git a/plugin/skills/azure-quotas/references/advanced-commands.md b/plugins/azure/skills/azure-quotas/references/advanced-commands.md similarity index 100% rename from plugin/skills/azure-quotas/references/advanced-commands.md rename to plugins/azure/skills/azure-quotas/references/advanced-commands.md diff --git a/plugin/skills/azure-quotas/references/commands.md b/plugins/azure/skills/azure-quotas/references/commands.md similarity index 100% rename from plugin/skills/azure-quotas/references/commands.md rename to plugins/azure/skills/azure-quotas/references/commands.md diff --git a/plugin/skills/azure-quotas/scripts/check-quota.ps1 b/plugins/azure/skills/azure-quotas/scripts/check-quota.ps1 similarity index 100% rename from plugin/skills/azure-quotas/scripts/check-quota.ps1 rename to plugins/azure/skills/azure-quotas/scripts/check-quota.ps1 diff --git a/plugin/skills/azure-quotas/scripts/check-quota.sh b/plugins/azure/skills/azure-quotas/scripts/check-quota.sh similarity index 100% rename from plugin/skills/azure-quotas/scripts/check-quota.sh rename to plugins/azure/skills/azure-quotas/scripts/check-quota.sh diff --git a/plugin/skills/azure-messaging/version.json b/plugins/azure/skills/azure-quotas/version.json similarity index 100% rename from plugin/skills/azure-messaging/version.json rename to plugins/azure/skills/azure-quotas/version.json diff --git a/plugin/skills/azure-quotas/version.json b/plugins/azure/skills/azure-rbac/version.json similarity index 100% rename from plugin/skills/azure-quotas/version.json rename to plugins/azure/skills/azure-rbac/version.json diff --git a/plugin/skills/azure-reliability/SKILL.md b/plugins/azure/skills/azure-reliability/SKILL.md similarity index 100% rename from plugin/skills/azure-reliability/SKILL.md rename to plugins/azure/skills/azure-reliability/SKILL.md diff --git a/plugin/skills/azure-reliability/references/configure-health-probes.md b/plugins/azure/skills/azure-reliability/references/configure-health-probes.md similarity index 100% rename from plugin/skills/azure-reliability/references/configure-health-probes.md rename to plugins/azure/skills/azure-reliability/references/configure-health-probes.md diff --git a/plugin/skills/azure-reliability/references/configure-multi-region.md b/plugins/azure/skills/azure-reliability/references/configure-multi-region.md similarity index 100% rename from plugin/skills/azure-reliability/references/configure-multi-region.md rename to plugins/azure/skills/azure-reliability/references/configure-multi-region.md diff --git a/plugin/skills/azure-reliability/references/configure-storage.md b/plugins/azure/skills/azure-reliability/references/configure-storage.md similarity index 100% rename from plugin/skills/azure-reliability/references/configure-storage.md rename to plugins/azure/skills/azure-reliability/references/configure-storage.md diff --git a/plugin/skills/azure-reliability/references/configure-zone-redundancy.md b/plugins/azure/skills/azure-reliability/references/configure-zone-redundancy.md similarity index 100% rename from plugin/skills/azure-reliability/references/configure-zone-redundancy.md rename to plugins/azure/skills/azure-reliability/references/configure-zone-redundancy.md diff --git a/plugin/skills/azure-reliability/references/health-probe-checks.md b/plugins/azure/skills/azure-reliability/references/health-probe-checks.md similarity index 100% rename from plugin/skills/azure-reliability/references/health-probe-checks.md rename to plugins/azure/skills/azure-reliability/references/health-probe-checks.md diff --git a/plugin/skills/azure-reliability/references/iac-patching-bicep.md b/plugins/azure/skills/azure-reliability/references/iac-patching-bicep.md similarity index 100% rename from plugin/skills/azure-reliability/references/iac-patching-bicep.md rename to plugins/azure/skills/azure-reliability/references/iac-patching-bicep.md diff --git a/plugin/skills/azure-reliability/references/iac-patching-terraform.md b/plugins/azure/skills/azure-reliability/references/iac-patching-terraform.md similarity index 100% rename from plugin/skills/azure-reliability/references/iac-patching-terraform.md rename to plugins/azure/skills/azure-reliability/references/iac-patching-terraform.md diff --git a/plugin/skills/azure-reliability/references/multi-region-checks.md b/plugins/azure/skills/azure-reliability/references/multi-region-checks.md similarity index 100% rename from plugin/skills/azure-reliability/references/multi-region-checks.md rename to plugins/azure/skills/azure-reliability/references/multi-region-checks.md diff --git a/plugin/skills/azure-reliability/references/services/app-service/reliability.md b/plugins/azure/skills/azure-reliability/references/services/app-service/reliability.md similarity index 100% rename from plugin/skills/azure-reliability/references/services/app-service/reliability.md rename to plugins/azure/skills/azure-reliability/references/services/app-service/reliability.md diff --git a/plugin/skills/azure-reliability/references/services/functions/reliability.md b/plugins/azure/skills/azure-reliability/references/services/functions/reliability.md similarity index 100% rename from plugin/skills/azure-reliability/references/services/functions/reliability.md rename to plugins/azure/skills/azure-reliability/references/services/functions/reliability.md diff --git a/plugin/skills/azure-reliability/references/storage-redundancy-checks.md b/plugins/azure/skills/azure-reliability/references/storage-redundancy-checks.md similarity index 100% rename from plugin/skills/azure-reliability/references/storage-redundancy-checks.md rename to plugins/azure/skills/azure-reliability/references/storage-redundancy-checks.md diff --git a/plugin/skills/azure-reliability/references/zone-redundancy-checks.md b/plugins/azure/skills/azure-reliability/references/zone-redundancy-checks.md similarity index 100% rename from plugin/skills/azure-reliability/references/zone-redundancy-checks.md rename to plugins/azure/skills/azure-reliability/references/zone-redundancy-checks.md diff --git a/plugin/skills/azure-reliability/version.json b/plugins/azure/skills/azure-reliability/version.json similarity index 100% rename from plugin/skills/azure-reliability/version.json rename to plugins/azure/skills/azure-reliability/version.json diff --git a/plugin/skills/azure-resource-lookup/SKILL.md b/plugins/azure/skills/azure-resource-lookup/SKILL.md similarity index 100% rename from plugin/skills/azure-resource-lookup/SKILL.md rename to plugins/azure/skills/azure-resource-lookup/SKILL.md diff --git a/plugin/skills/azure-resource-lookup/references/azure-resource-graph.md b/plugins/azure/skills/azure-resource-lookup/references/azure-resource-graph.md similarity index 100% rename from plugin/skills/azure-resource-lookup/references/azure-resource-graph.md rename to plugins/azure/skills/azure-resource-lookup/references/azure-resource-graph.md diff --git a/plugin/skills/azure-resource-lookup/version.json b/plugins/azure/skills/azure-resource-lookup/version.json similarity index 100% rename from plugin/skills/azure-resource-lookup/version.json rename to plugins/azure/skills/azure-resource-lookup/version.json diff --git a/plugin/skills/azure-resource-visualizer/SKILL.md b/plugins/azure/skills/azure-resource-visualizer/SKILL.md similarity index 100% rename from plugin/skills/azure-resource-visualizer/SKILL.md rename to plugins/azure/skills/azure-resource-visualizer/SKILL.md diff --git a/plugin/skills/azure-resource-visualizer/assets/example-diagram.md b/plugins/azure/skills/azure-resource-visualizer/assets/example-diagram.md similarity index 100% rename from plugin/skills/azure-resource-visualizer/assets/example-diagram.md rename to plugins/azure/skills/azure-resource-visualizer/assets/example-diagram.md diff --git a/plugin/skills/azure-resource-visualizer/assets/template-architecture.md b/plugins/azure/skills/azure-resource-visualizer/assets/template-architecture.md similarity index 100% rename from plugin/skills/azure-resource-visualizer/assets/template-architecture.md rename to plugins/azure/skills/azure-resource-visualizer/assets/template-architecture.md diff --git a/plugin/skills/azure-resource-visualizer/references/azure-resource-graph.md b/plugins/azure/skills/azure-resource-visualizer/references/azure-resource-graph.md similarity index 100% rename from plugin/skills/azure-resource-visualizer/references/azure-resource-graph.md rename to plugins/azure/skills/azure-resource-visualizer/references/azure-resource-graph.md diff --git a/plugin/skills/azure-resource-visualizer/version.json b/plugins/azure/skills/azure-resource-visualizer/version.json similarity index 100% rename from plugin/skills/azure-resource-visualizer/version.json rename to plugins/azure/skills/azure-resource-visualizer/version.json diff --git a/plugin/skills/azure-storage/SKILL.md b/plugins/azure/skills/azure-storage/SKILL.md similarity index 100% rename from plugin/skills/azure-storage/SKILL.md rename to plugins/azure/skills/azure-storage/SKILL.md diff --git a/plugin/skills/azure-storage/references/auth-best-practices.md b/plugins/azure/skills/azure-storage/references/auth-best-practices.md similarity index 100% rename from plugin/skills/azure-storage/references/auth-best-practices.md rename to plugins/azure/skills/azure-storage/references/auth-best-practices.md diff --git a/plugin/skills/azure-storage/references/sdk-usage.md b/plugins/azure/skills/azure-storage/references/sdk-usage.md similarity index 100% rename from plugin/skills/azure-storage/references/sdk-usage.md rename to plugins/azure/skills/azure-storage/references/sdk-usage.md diff --git a/plugin/skills/azure-storage/references/sdk/azure-data-tables-java.md b/plugins/azure/skills/azure-storage/references/sdk/azure-data-tables-java.md similarity index 100% rename from plugin/skills/azure-storage/references/sdk/azure-data-tables-java.md rename to plugins/azure/skills/azure-storage/references/sdk/azure-data-tables-java.md diff --git a/plugin/skills/azure-storage/references/sdk/azure-data-tables-py.md b/plugins/azure/skills/azure-storage/references/sdk/azure-data-tables-py.md similarity index 100% rename from plugin/skills/azure-storage/references/sdk/azure-data-tables-py.md rename to plugins/azure/skills/azure-storage/references/sdk/azure-data-tables-py.md diff --git a/plugin/skills/azure-storage/references/sdk/azure-storage-blob-java.md b/plugins/azure/skills/azure-storage/references/sdk/azure-storage-blob-java.md similarity index 100% rename from plugin/skills/azure-storage/references/sdk/azure-storage-blob-java.md rename to plugins/azure/skills/azure-storage/references/sdk/azure-storage-blob-java.md diff --git a/plugin/skills/azure-storage/references/sdk/azure-storage-blob-py.md b/plugins/azure/skills/azure-storage/references/sdk/azure-storage-blob-py.md similarity index 100% rename from plugin/skills/azure-storage/references/sdk/azure-storage-blob-py.md rename to plugins/azure/skills/azure-storage/references/sdk/azure-storage-blob-py.md diff --git a/plugin/skills/azure-storage/references/sdk/azure-storage-blob-rust.md b/plugins/azure/skills/azure-storage/references/sdk/azure-storage-blob-rust.md similarity index 100% rename from plugin/skills/azure-storage/references/sdk/azure-storage-blob-rust.md rename to plugins/azure/skills/azure-storage/references/sdk/azure-storage-blob-rust.md diff --git a/plugin/skills/azure-storage/references/sdk/azure-storage-blob-ts.md b/plugins/azure/skills/azure-storage/references/sdk/azure-storage-blob-ts.md similarity index 100% rename from plugin/skills/azure-storage/references/sdk/azure-storage-blob-ts.md rename to plugins/azure/skills/azure-storage/references/sdk/azure-storage-blob-ts.md diff --git a/plugin/skills/azure-storage/references/sdk/azure-storage-file-datalake-py.md b/plugins/azure/skills/azure-storage/references/sdk/azure-storage-file-datalake-py.md similarity index 100% rename from plugin/skills/azure-storage/references/sdk/azure-storage-file-datalake-py.md rename to plugins/azure/skills/azure-storage/references/sdk/azure-storage-file-datalake-py.md diff --git a/plugin/skills/azure-storage/references/sdk/azure-storage-file-share-py.md b/plugins/azure/skills/azure-storage/references/sdk/azure-storage-file-share-py.md similarity index 100% rename from plugin/skills/azure-storage/references/sdk/azure-storage-file-share-py.md rename to plugins/azure/skills/azure-storage/references/sdk/azure-storage-file-share-py.md diff --git a/plugin/skills/azure-storage/references/sdk/azure-storage-file-share-ts.md b/plugins/azure/skills/azure-storage/references/sdk/azure-storage-file-share-ts.md similarity index 100% rename from plugin/skills/azure-storage/references/sdk/azure-storage-file-share-ts.md rename to plugins/azure/skills/azure-storage/references/sdk/azure-storage-file-share-ts.md diff --git a/plugin/skills/azure-storage/references/sdk/azure-storage-queue-py.md b/plugins/azure/skills/azure-storage/references/sdk/azure-storage-queue-py.md similarity index 100% rename from plugin/skills/azure-storage/references/sdk/azure-storage-queue-py.md rename to plugins/azure/skills/azure-storage/references/sdk/azure-storage-queue-py.md diff --git a/plugin/skills/azure-storage/references/sdk/azure-storage-queue-ts.md b/plugins/azure/skills/azure-storage/references/sdk/azure-storage-queue-ts.md similarity index 100% rename from plugin/skills/azure-storage/references/sdk/azure-storage-queue-ts.md rename to plugins/azure/skills/azure-storage/references/sdk/azure-storage-queue-ts.md diff --git a/plugin/skills/azure-storage/version.json b/plugins/azure/skills/azure-storage/version.json similarity index 100% rename from plugin/skills/azure-storage/version.json rename to plugins/azure/skills/azure-storage/version.json diff --git a/plugin/skills/azure-upgrade/SKILL.md b/plugins/azure/skills/azure-upgrade/SKILL.md similarity index 100% rename from plugin/skills/azure-upgrade/SKILL.md rename to plugins/azure/skills/azure-upgrade/SKILL.md diff --git a/plugin/skills/azure-upgrade/references/global-rules.md b/plugins/azure/skills/azure-upgrade/references/global-rules.md similarity index 100% rename from plugin/skills/azure-upgrade/references/global-rules.md rename to plugins/azure/skills/azure-upgrade/references/global-rules.md diff --git a/plugin/skills/azure-upgrade/references/languages/java/INSTRUCTION.md b/plugins/azure/skills/azure-upgrade/references/languages/java/INSTRUCTION.md similarity index 100% rename from plugin/skills/azure-upgrade/references/languages/java/INSTRUCTION.md rename to plugins/azure/skills/azure-upgrade/references/languages/java/INSTRUCTION.md diff --git a/plugin/skills/azure-upgrade/references/languages/java/README.md b/plugins/azure/skills/azure-upgrade/references/languages/java/README.md similarity index 100% rename from plugin/skills/azure-upgrade/references/languages/java/README.md rename to plugins/azure/skills/azure-upgrade/references/languages/java/README.md diff --git a/plugin/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle-settings.md b/plugins/azure/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle-settings.md similarity index 100% rename from plugin/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle-settings.md rename to plugins/azure/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle-settings.md diff --git a/plugin/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle-toml.md b/plugins/azure/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle-toml.md similarity index 100% rename from plugin/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle-toml.md rename to plugins/azure/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle-toml.md diff --git a/plugin/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle.md b/plugins/azure/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle.md similarity index 100% rename from plugin/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle.md rename to plugins/azure/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle.md diff --git a/plugin/skills/azure-upgrade/references/languages/java/bom-migration/bom-maven.md b/plugins/azure/skills/azure-upgrade/references/languages/java/bom-migration/bom-maven.md similarity index 100% rename from plugin/skills/azure-upgrade/references/languages/java/bom-migration/bom-maven.md rename to plugins/azure/skills/azure-upgrade/references/languages/java/bom-migration/bom-maven.md diff --git a/plugin/skills/azure-upgrade/references/languages/java/bom-migration/bom-migration.md b/plugins/azure/skills/azure-upgrade/references/languages/java/bom-migration/bom-migration.md similarity index 100% rename from plugin/skills/azure-upgrade/references/languages/java/bom-migration/bom-migration.md rename to plugins/azure/skills/azure-upgrade/references/languages/java/bom-migration/bom-migration.md diff --git a/plugin/skills/azure-upgrade/references/languages/java/bom-migration/bom-validation.md b/plugins/azure/skills/azure-upgrade/references/languages/java/bom-migration/bom-validation.md similarity index 100% rename from plugin/skills/azure-upgrade/references/languages/java/bom-migration/bom-validation.md rename to plugins/azure/skills/azure-upgrade/references/languages/java/bom-migration/bom-validation.md diff --git a/plugin/skills/azure-upgrade/references/languages/java/package-specific/com.microsoft.azure.eventprocessorhost.md b/plugins/azure/skills/azure-upgrade/references/languages/java/package-specific/com.microsoft.azure.eventprocessorhost.md similarity index 100% rename from plugin/skills/azure-upgrade/references/languages/java/package-specific/com.microsoft.azure.eventprocessorhost.md rename to plugins/azure/skills/azure-upgrade/references/languages/java/package-specific/com.microsoft.azure.eventprocessorhost.md diff --git a/plugin/skills/azure-upgrade/references/languages/java/package-specific/com.microsoft.azure.management.md b/plugins/azure/skills/azure-upgrade/references/languages/java/package-specific/com.microsoft.azure.management.md similarity index 100% rename from plugin/skills/azure-upgrade/references/languages/java/package-specific/com.microsoft.azure.management.md rename to plugins/azure/skills/azure-upgrade/references/languages/java/package-specific/com.microsoft.azure.management.md diff --git a/plugin/skills/azure-upgrade/references/languages/java/rules/efficiency.md b/plugins/azure/skills/azure-upgrade/references/languages/java/rules/efficiency.md similarity index 100% rename from plugin/skills/azure-upgrade/references/languages/java/rules/efficiency.md rename to plugins/azure/skills/azure-upgrade/references/languages/java/rules/efficiency.md diff --git a/plugin/skills/azure-upgrade/references/languages/java/rules/execution-guidelines.md b/plugins/azure/skills/azure-upgrade/references/languages/java/rules/execution-guidelines.md similarity index 100% rename from plugin/skills/azure-upgrade/references/languages/java/rules/execution-guidelines.md rename to plugins/azure/skills/azure-upgrade/references/languages/java/rules/execution-guidelines.md diff --git a/plugin/skills/azure-upgrade/references/languages/java/rules/review-code-changes.md b/plugins/azure/skills/azure-upgrade/references/languages/java/rules/review-code-changes.md similarity index 100% rename from plugin/skills/azure-upgrade/references/languages/java/rules/review-code-changes.md rename to plugins/azure/skills/azure-upgrade/references/languages/java/rules/review-code-changes.md diff --git a/plugin/skills/azure-upgrade/references/languages/java/rules/troubleshooting.md b/plugins/azure/skills/azure-upgrade/references/languages/java/rules/troubleshooting.md similarity index 100% rename from plugin/skills/azure-upgrade/references/languages/java/rules/troubleshooting.md rename to plugins/azure/skills/azure-upgrade/references/languages/java/rules/troubleshooting.md diff --git a/plugin/skills/azure-upgrade/references/languages/java/rules/upgrade-strategy.md b/plugins/azure/skills/azure-upgrade/references/languages/java/rules/upgrade-strategy.md similarity index 100% rename from plugin/skills/azure-upgrade/references/languages/java/rules/upgrade-strategy.md rename to plugins/azure/skills/azure-upgrade/references/languages/java/rules/upgrade-strategy.md diff --git a/plugin/skills/azure-upgrade/references/languages/java/rules/upgrade-success-criteria.md b/plugins/azure/skills/azure-upgrade/references/languages/java/rules/upgrade-success-criteria.md similarity index 100% rename from plugin/skills/azure-upgrade/references/languages/java/rules/upgrade-success-criteria.md rename to plugins/azure/skills/azure-upgrade/references/languages/java/rules/upgrade-success-criteria.md diff --git a/plugin/skills/azure-upgrade/references/languages/java/scripts/upgrade_bom.py b/plugins/azure/skills/azure-upgrade/references/languages/java/scripts/upgrade_bom.py similarity index 100% rename from plugin/skills/azure-upgrade/references/languages/java/scripts/upgrade_bom.py rename to plugins/azure/skills/azure-upgrade/references/languages/java/scripts/upgrade_bom.py diff --git a/plugin/skills/azure-upgrade/references/languages/java/templates/PLAN_TEMPLATE.md b/plugins/azure/skills/azure-upgrade/references/languages/java/templates/PLAN_TEMPLATE.md similarity index 100% rename from plugin/skills/azure-upgrade/references/languages/java/templates/PLAN_TEMPLATE.md rename to plugins/azure/skills/azure-upgrade/references/languages/java/templates/PLAN_TEMPLATE.md diff --git a/plugin/skills/azure-upgrade/references/languages/java/templates/PROGRESS_TEMPLATE.md b/plugins/azure/skills/azure-upgrade/references/languages/java/templates/PROGRESS_TEMPLATE.md similarity index 100% rename from plugin/skills/azure-upgrade/references/languages/java/templates/PROGRESS_TEMPLATE.md rename to plugins/azure/skills/azure-upgrade/references/languages/java/templates/PROGRESS_TEMPLATE.md diff --git a/plugin/skills/azure-upgrade/references/languages/java/templates/SUMMARY_TEMPLATE.md b/plugins/azure/skills/azure-upgrade/references/languages/java/templates/SUMMARY_TEMPLATE.md similarity index 100% rename from plugin/skills/azure-upgrade/references/languages/java/templates/SUMMARY_TEMPLATE.md rename to plugins/azure/skills/azure-upgrade/references/languages/java/templates/SUMMARY_TEMPLATE.md diff --git a/plugin/skills/azure-upgrade/references/languages/java/workflow/phase-1-precheck.md b/plugins/azure/skills/azure-upgrade/references/languages/java/workflow/phase-1-precheck.md similarity index 100% rename from plugin/skills/azure-upgrade/references/languages/java/workflow/phase-1-precheck.md rename to plugins/azure/skills/azure-upgrade/references/languages/java/workflow/phase-1-precheck.md diff --git a/plugin/skills/azure-upgrade/references/languages/java/workflow/phase-2-plan.md b/plugins/azure/skills/azure-upgrade/references/languages/java/workflow/phase-2-plan.md similarity index 100% rename from plugin/skills/azure-upgrade/references/languages/java/workflow/phase-2-plan.md rename to plugins/azure/skills/azure-upgrade/references/languages/java/workflow/phase-2-plan.md diff --git a/plugin/skills/azure-upgrade/references/languages/java/workflow/phase-3-execute.md b/plugins/azure/skills/azure-upgrade/references/languages/java/workflow/phase-3-execute.md similarity index 100% rename from plugin/skills/azure-upgrade/references/languages/java/workflow/phase-3-execute.md rename to plugins/azure/skills/azure-upgrade/references/languages/java/workflow/phase-3-execute.md diff --git a/plugin/skills/azure-upgrade/references/languages/java/workflow/phase-4-summarize.md b/plugins/azure/skills/azure-upgrade/references/languages/java/workflow/phase-4-summarize.md similarity index 100% rename from plugin/skills/azure-upgrade/references/languages/java/workflow/phase-4-summarize.md rename to plugins/azure/skills/azure-upgrade/references/languages/java/workflow/phase-4-summarize.md diff --git a/plugin/skills/azure-upgrade/references/services/functions/assessment.md b/plugins/azure/skills/azure-upgrade/references/services/functions/assessment.md similarity index 100% rename from plugin/skills/azure-upgrade/references/services/functions/assessment.md rename to plugins/azure/skills/azure-upgrade/references/services/functions/assessment.md diff --git a/plugin/skills/azure-upgrade/references/services/functions/automation.md b/plugins/azure/skills/azure-upgrade/references/services/functions/automation.md similarity index 100% rename from plugin/skills/azure-upgrade/references/services/functions/automation.md rename to plugins/azure/skills/azure-upgrade/references/services/functions/automation.md diff --git a/plugin/skills/azure-upgrade/references/services/functions/consumption-to-flex.md b/plugins/azure/skills/azure-upgrade/references/services/functions/consumption-to-flex.md similarity index 100% rename from plugin/skills/azure-upgrade/references/services/functions/consumption-to-flex.md rename to plugins/azure/skills/azure-upgrade/references/services/functions/consumption-to-flex.md diff --git a/plugin/skills/azure-upgrade/references/services/redis/redis-to-amr.md b/plugins/azure/skills/azure-upgrade/references/services/redis/redis-to-amr.md similarity index 100% rename from plugin/skills/azure-upgrade/references/services/redis/redis-to-amr.md rename to plugins/azure/skills/azure-upgrade/references/services/redis/redis-to-amr.md diff --git a/plugin/skills/azure-upgrade/references/workflow-details.md b/plugins/azure/skills/azure-upgrade/references/workflow-details.md similarity index 100% rename from plugin/skills/azure-upgrade/references/workflow-details.md rename to plugins/azure/skills/azure-upgrade/references/workflow-details.md diff --git a/plugin/skills/azure-upgrade/version.json b/plugins/azure/skills/azure-upgrade/version.json similarity index 100% rename from plugin/skills/azure-upgrade/version.json rename to plugins/azure/skills/azure-upgrade/version.json diff --git a/plugin/skills/azure-validate/SKILL.md b/plugins/azure/skills/azure-validate/SKILL.md similarity index 100% rename from plugin/skills/azure-validate/SKILL.md rename to plugins/azure/skills/azure-validate/SKILL.md diff --git a/plugin/skills/azure-validate/references/aspire-functions-secrets.md b/plugins/azure/skills/azure-validate/references/aspire-functions-secrets.md similarity index 100% rename from plugin/skills/azure-validate/references/aspire-functions-secrets.md rename to plugins/azure/skills/azure-validate/references/aspire-functions-secrets.md diff --git a/plugin/skills/azure-validate/references/global-rules.md b/plugins/azure/skills/azure-validate/references/global-rules.md similarity index 100% rename from plugin/skills/azure-validate/references/global-rules.md rename to plugins/azure/skills/azure-validate/references/global-rules.md diff --git a/plugin/skills/azure-validate/references/policy-validation.md b/plugins/azure/skills/azure-validate/references/policy-validation.md similarity index 100% rename from plugin/skills/azure-validate/references/policy-validation.md rename to plugins/azure/skills/azure-validate/references/policy-validation.md diff --git a/plugin/skills/azure-validate/references/recipes/README.md b/plugins/azure/skills/azure-validate/references/recipes/README.md similarity index 100% rename from plugin/skills/azure-validate/references/recipes/README.md rename to plugins/azure/skills/azure-validate/references/recipes/README.md diff --git a/plugin/skills/azure-validate/references/recipes/azcli/README.md b/plugins/azure/skills/azure-validate/references/recipes/azcli/README.md similarity index 100% rename from plugin/skills/azure-validate/references/recipes/azcli/README.md rename to plugins/azure/skills/azure-validate/references/recipes/azcli/README.md diff --git a/plugin/skills/azure-validate/references/recipes/azcli/errors.md b/plugins/azure/skills/azure-validate/references/recipes/azcli/errors.md similarity index 100% rename from plugin/skills/azure-validate/references/recipes/azcli/errors.md rename to plugins/azure/skills/azure-validate/references/recipes/azcli/errors.md diff --git a/plugin/skills/azure-validate/references/recipes/azd/README.md b/plugins/azure/skills/azure-validate/references/recipes/azd/README.md similarity index 100% rename from plugin/skills/azure-validate/references/recipes/azd/README.md rename to plugins/azure/skills/azure-validate/references/recipes/azd/README.md diff --git a/plugin/skills/azure-validate/references/recipes/azd/aspire.md b/plugins/azure/skills/azure-validate/references/recipes/azd/aspire.md similarity index 100% rename from plugin/skills/azure-validate/references/recipes/azd/aspire.md rename to plugins/azure/skills/azure-validate/references/recipes/azd/aspire.md diff --git a/plugin/skills/azure-validate/references/recipes/azd/environment.md b/plugins/azure/skills/azure-validate/references/recipes/azd/environment.md similarity index 100% rename from plugin/skills/azure-validate/references/recipes/azd/environment.md rename to plugins/azure/skills/azure-validate/references/recipes/azd/environment.md diff --git a/plugin/skills/azure-validate/references/recipes/azd/errors.md b/plugins/azure/skills/azure-validate/references/recipes/azd/errors.md similarity index 100% rename from plugin/skills/azure-validate/references/recipes/azd/errors.md rename to plugins/azure/skills/azure-validate/references/recipes/azd/errors.md diff --git a/plugin/skills/azure-validate/references/recipes/bicep/README.md b/plugins/azure/skills/azure-validate/references/recipes/bicep/README.md similarity index 100% rename from plugin/skills/azure-validate/references/recipes/bicep/README.md rename to plugins/azure/skills/azure-validate/references/recipes/bicep/README.md diff --git a/plugin/skills/azure-validate/references/recipes/bicep/errors.md b/plugins/azure/skills/azure-validate/references/recipes/bicep/errors.md similarity index 100% rename from plugin/skills/azure-validate/references/recipes/bicep/errors.md rename to plugins/azure/skills/azure-validate/references/recipes/bicep/errors.md diff --git a/plugin/skills/azure-validate/references/recipes/terraform/README.md b/plugins/azure/skills/azure-validate/references/recipes/terraform/README.md similarity index 100% rename from plugin/skills/azure-validate/references/recipes/terraform/README.md rename to plugins/azure/skills/azure-validate/references/recipes/terraform/README.md diff --git a/plugin/skills/azure-validate/references/recipes/terraform/errors.md b/plugins/azure/skills/azure-validate/references/recipes/terraform/errors.md similarity index 100% rename from plugin/skills/azure-validate/references/recipes/terraform/errors.md rename to plugins/azure/skills/azure-validate/references/recipes/terraform/errors.md diff --git a/plugin/skills/azure-validate/references/region-availability.md b/plugins/azure/skills/azure-validate/references/region-availability.md similarity index 100% rename from plugin/skills/azure-validate/references/region-availability.md rename to plugins/azure/skills/azure-validate/references/region-availability.md diff --git a/plugin/skills/azure-validate/references/role-verification.md b/plugins/azure/skills/azure-validate/references/role-verification.md similarity index 100% rename from plugin/skills/azure-validate/references/role-verification.md rename to plugins/azure/skills/azure-validate/references/role-verification.md diff --git a/plugin/skills/azure-validate/version.json b/plugins/azure/skills/azure-validate/version.json similarity index 100% rename from plugin/skills/azure-validate/version.json rename to plugins/azure/skills/azure-validate/version.json diff --git a/plugin/skills/entra-agent-id/SKILL.md b/plugins/azure/skills/entra-agent-id/SKILL.md similarity index 100% rename from plugin/skills/entra-agent-id/SKILL.md rename to plugins/azure/skills/entra-agent-id/SKILL.md diff --git a/plugin/skills/entra-agent-id/references/known-limitations.md b/plugins/azure/skills/entra-agent-id/references/known-limitations.md similarity index 100% rename from plugin/skills/entra-agent-id/references/known-limitations.md rename to plugins/azure/skills/entra-agent-id/references/known-limitations.md diff --git a/plugin/skills/entra-agent-id/references/oauth2-token-flow.md b/plugins/azure/skills/entra-agent-id/references/oauth2-token-flow.md similarity index 100% rename from plugin/skills/entra-agent-id/references/oauth2-token-flow.md rename to plugins/azure/skills/entra-agent-id/references/oauth2-token-flow.md diff --git a/plugin/skills/entra-agent-id/references/obo-blueprint-setup.md b/plugins/azure/skills/entra-agent-id/references/obo-blueprint-setup.md similarity index 100% rename from plugin/skills/entra-agent-id/references/obo-blueprint-setup.md rename to plugins/azure/skills/entra-agent-id/references/obo-blueprint-setup.md diff --git a/plugin/skills/entra-agent-id/references/runtime-token-exchange.md b/plugins/azure/skills/entra-agent-id/references/runtime-token-exchange.md similarity index 100% rename from plugin/skills/entra-agent-id/references/runtime-token-exchange.md rename to plugins/azure/skills/entra-agent-id/references/runtime-token-exchange.md diff --git a/plugin/skills/entra-agent-id/references/sdk-sidecar-deployment.md b/plugins/azure/skills/entra-agent-id/references/sdk-sidecar-deployment.md similarity index 100% rename from plugin/skills/entra-agent-id/references/sdk-sidecar-deployment.md rename to plugins/azure/skills/entra-agent-id/references/sdk-sidecar-deployment.md diff --git a/plugin/skills/entra-agent-id/references/sdk-sidecar.md b/plugins/azure/skills/entra-agent-id/references/sdk-sidecar.md similarity index 100% rename from plugin/skills/entra-agent-id/references/sdk-sidecar.md rename to plugins/azure/skills/entra-agent-id/references/sdk-sidecar.md diff --git a/plugin/skills/entra-agent-id/version.json b/plugins/azure/skills/entra-agent-id/version.json similarity index 100% rename from plugin/skills/entra-agent-id/version.json rename to plugins/azure/skills/entra-agent-id/version.json diff --git a/plugin/skills/entra-app-registration/SKILL.md b/plugins/azure/skills/entra-app-registration/SKILL.md similarity index 100% rename from plugin/skills/entra-app-registration/SKILL.md rename to plugins/azure/skills/entra-app-registration/SKILL.md diff --git a/plugin/skills/entra-app-registration/references/BICEP-EXAMPLE.bicep b/plugins/azure/skills/entra-app-registration/references/BICEP-EXAMPLE.bicep similarity index 100% rename from plugin/skills/entra-app-registration/references/BICEP-EXAMPLE.bicep rename to plugins/azure/skills/entra-app-registration/references/BICEP-EXAMPLE.bicep diff --git a/plugin/skills/entra-app-registration/references/api-permissions.md b/plugins/azure/skills/entra-app-registration/references/api-permissions.md similarity index 100% rename from plugin/skills/entra-app-registration/references/api-permissions.md rename to plugins/azure/skills/entra-app-registration/references/api-permissions.md diff --git a/plugin/skills/entra-app-registration/references/auth-best-practices.md b/plugins/azure/skills/entra-app-registration/references/auth-best-practices.md similarity index 100% rename from plugin/skills/entra-app-registration/references/auth-best-practices.md rename to plugins/azure/skills/entra-app-registration/references/auth-best-practices.md diff --git a/plugin/skills/entra-app-registration/references/cli-commands.md b/plugins/azure/skills/entra-app-registration/references/cli-commands.md similarity index 100% rename from plugin/skills/entra-app-registration/references/cli-commands.md rename to plugins/azure/skills/entra-app-registration/references/cli-commands.md diff --git a/plugin/skills/entra-app-registration/references/console-app-example.md b/plugins/azure/skills/entra-app-registration/references/console-app-example.md similarity index 100% rename from plugin/skills/entra-app-registration/references/console-app-example.md rename to plugins/azure/skills/entra-app-registration/references/console-app-example.md diff --git a/plugin/skills/entra-app-registration/references/first-app-registration.md b/plugins/azure/skills/entra-app-registration/references/first-app-registration.md similarity index 100% rename from plugin/skills/entra-app-registration/references/first-app-registration.md rename to plugins/azure/skills/entra-app-registration/references/first-app-registration.md diff --git a/plugin/skills/entra-app-registration/references/oauth-flows.md b/plugins/azure/skills/entra-app-registration/references/oauth-flows.md similarity index 100% rename from plugin/skills/entra-app-registration/references/oauth-flows.md rename to plugins/azure/skills/entra-app-registration/references/oauth-flows.md diff --git a/plugin/skills/entra-app-registration/references/sdk/azure-identity-dotnet.md b/plugins/azure/skills/entra-app-registration/references/sdk/azure-identity-dotnet.md similarity index 100% rename from plugin/skills/entra-app-registration/references/sdk/azure-identity-dotnet.md rename to plugins/azure/skills/entra-app-registration/references/sdk/azure-identity-dotnet.md diff --git a/plugin/skills/entra-app-registration/references/sdk/azure-identity-java.md b/plugins/azure/skills/entra-app-registration/references/sdk/azure-identity-java.md similarity index 100% rename from plugin/skills/entra-app-registration/references/sdk/azure-identity-java.md rename to plugins/azure/skills/entra-app-registration/references/sdk/azure-identity-java.md diff --git a/plugin/skills/entra-app-registration/references/sdk/azure-identity-py.md b/plugins/azure/skills/entra-app-registration/references/sdk/azure-identity-py.md similarity index 100% rename from plugin/skills/entra-app-registration/references/sdk/azure-identity-py.md rename to plugins/azure/skills/entra-app-registration/references/sdk/azure-identity-py.md diff --git a/plugin/skills/entra-app-registration/references/sdk/azure-identity-rust.md b/plugins/azure/skills/entra-app-registration/references/sdk/azure-identity-rust.md similarity index 100% rename from plugin/skills/entra-app-registration/references/sdk/azure-identity-rust.md rename to plugins/azure/skills/entra-app-registration/references/sdk/azure-identity-rust.md diff --git a/plugin/skills/entra-app-registration/references/sdk/azure-identity-ts.md b/plugins/azure/skills/entra-app-registration/references/sdk/azure-identity-ts.md similarity index 100% rename from plugin/skills/entra-app-registration/references/sdk/azure-identity-ts.md rename to plugins/azure/skills/entra-app-registration/references/sdk/azure-identity-ts.md diff --git a/plugin/skills/entra-app-registration/references/sdk/azure-keyvault-py.md b/plugins/azure/skills/entra-app-registration/references/sdk/azure-keyvault-py.md similarity index 100% rename from plugin/skills/entra-app-registration/references/sdk/azure-keyvault-py.md rename to plugins/azure/skills/entra-app-registration/references/sdk/azure-keyvault-py.md diff --git a/plugin/skills/entra-app-registration/references/sdk/azure-keyvault-secrets-ts.md b/plugins/azure/skills/entra-app-registration/references/sdk/azure-keyvault-secrets-ts.md similarity index 100% rename from plugin/skills/entra-app-registration/references/sdk/azure-keyvault-secrets-ts.md rename to plugins/azure/skills/entra-app-registration/references/sdk/azure-keyvault-secrets-ts.md diff --git a/plugin/skills/entra-app-registration/references/sdk/microsoft-azure-webjobs-extensions-authentication-events-dotnet.md b/plugins/azure/skills/entra-app-registration/references/sdk/microsoft-azure-webjobs-extensions-authentication-events-dotnet.md similarity index 100% rename from plugin/skills/entra-app-registration/references/sdk/microsoft-azure-webjobs-extensions-authentication-events-dotnet.md rename to plugins/azure/skills/entra-app-registration/references/sdk/microsoft-azure-webjobs-extensions-authentication-events-dotnet.md diff --git a/plugin/skills/entra-app-registration/references/troubleshooting.md b/plugins/azure/skills/entra-app-registration/references/troubleshooting.md similarity index 100% rename from plugin/skills/entra-app-registration/references/troubleshooting.md rename to plugins/azure/skills/entra-app-registration/references/troubleshooting.md diff --git a/plugin/skills/entra-app-registration/version.json b/plugins/azure/skills/entra-app-registration/version.json similarity index 100% rename from plugin/skills/entra-app-registration/version.json rename to plugins/azure/skills/entra-app-registration/version.json diff --git a/plugin/skills/microsoft-foundry/.gitignore b/plugins/azure/skills/microsoft-foundry/.gitignore similarity index 100% rename from plugin/skills/microsoft-foundry/.gitignore rename to plugins/azure/skills/microsoft-foundry/.gitignore diff --git a/plugin/skills/microsoft-foundry/SKILL.md b/plugins/azure/skills/microsoft-foundry/SKILL.md similarity index 100% rename from plugin/skills/microsoft-foundry/SKILL.md rename to plugins/azure/skills/microsoft-foundry/SKILL.md diff --git a/plugin/skills/microsoft-foundry/finetuning/SKILL.md b/plugins/azure/skills/microsoft-foundry/finetuning/SKILL.md similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/SKILL.md rename to plugins/azure/skills/microsoft-foundry/finetuning/SKILL.md diff --git a/plugin/skills/microsoft-foundry/finetuning/references/agentic-rft.md b/plugins/azure/skills/microsoft-foundry/finetuning/references/agentic-rft.md similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/references/agentic-rft.md rename to plugins/azure/skills/microsoft-foundry/finetuning/references/agentic-rft.md diff --git a/plugin/skills/microsoft-foundry/finetuning/references/dataset-formats.md b/plugins/azure/skills/microsoft-foundry/finetuning/references/dataset-formats.md similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/references/dataset-formats.md rename to plugins/azure/skills/microsoft-foundry/finetuning/references/dataset-formats.md diff --git a/plugin/skills/microsoft-foundry/finetuning/references/deployment.md b/plugins/azure/skills/microsoft-foundry/finetuning/references/deployment.md similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/references/deployment.md rename to plugins/azure/skills/microsoft-foundry/finetuning/references/deployment.md diff --git a/plugin/skills/microsoft-foundry/finetuning/references/evaluation.md b/plugins/azure/skills/microsoft-foundry/finetuning/references/evaluation.md similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/references/evaluation.md rename to plugins/azure/skills/microsoft-foundry/finetuning/references/evaluation.md diff --git a/plugin/skills/microsoft-foundry/finetuning/references/grader-design.md b/plugins/azure/skills/microsoft-foundry/finetuning/references/grader-design.md similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/references/grader-design.md rename to plugins/azure/skills/microsoft-foundry/finetuning/references/grader-design.md diff --git a/plugin/skills/microsoft-foundry/finetuning/references/hyperparameters.md b/plugins/azure/skills/microsoft-foundry/finetuning/references/hyperparameters.md similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/references/hyperparameters.md rename to plugins/azure/skills/microsoft-foundry/finetuning/references/hyperparameters.md diff --git a/plugin/skills/microsoft-foundry/finetuning/references/large-file-uploads.md b/plugins/azure/skills/microsoft-foundry/finetuning/references/large-file-uploads.md similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/references/large-file-uploads.md rename to plugins/azure/skills/microsoft-foundry/finetuning/references/large-file-uploads.md diff --git a/plugin/skills/microsoft-foundry/finetuning/references/platform-gotchas.md b/plugins/azure/skills/microsoft-foundry/finetuning/references/platform-gotchas.md similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/references/platform-gotchas.md rename to plugins/azure/skills/microsoft-foundry/finetuning/references/platform-gotchas.md diff --git a/plugin/skills/microsoft-foundry/finetuning/references/reward-hacking.md b/plugins/azure/skills/microsoft-foundry/finetuning/references/reward-hacking.md similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/references/reward-hacking.md rename to plugins/azure/skills/microsoft-foundry/finetuning/references/reward-hacking.md diff --git a/plugin/skills/microsoft-foundry/finetuning/references/training-curves.md b/plugins/azure/skills/microsoft-foundry/finetuning/references/training-curves.md similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/references/training-curves.md rename to plugins/azure/skills/microsoft-foundry/finetuning/references/training-curves.md diff --git a/plugin/skills/microsoft-foundry/finetuning/references/training-types.md b/plugins/azure/skills/microsoft-foundry/finetuning/references/training-types.md similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/references/training-types.md rename to plugins/azure/skills/microsoft-foundry/finetuning/references/training-types.md diff --git a/plugin/skills/microsoft-foundry/finetuning/references/vision-fine-tuning.md b/plugins/azure/skills/microsoft-foundry/finetuning/references/vision-fine-tuning.md similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/references/vision-fine-tuning.md rename to plugins/azure/skills/microsoft-foundry/finetuning/references/vision-fine-tuning.md diff --git a/plugin/skills/microsoft-foundry/finetuning/scripts/calibrate_grader.py b/plugins/azure/skills/microsoft-foundry/finetuning/scripts/calibrate_grader.py similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/scripts/calibrate_grader.py rename to plugins/azure/skills/microsoft-foundry/finetuning/scripts/calibrate_grader.py diff --git a/plugin/skills/microsoft-foundry/finetuning/scripts/check_training.py b/plugins/azure/skills/microsoft-foundry/finetuning/scripts/check_training.py similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/scripts/check_training.py rename to plugins/azure/skills/microsoft-foundry/finetuning/scripts/check_training.py diff --git a/plugin/skills/microsoft-foundry/finetuning/scripts/cleanup.py b/plugins/azure/skills/microsoft-foundry/finetuning/scripts/cleanup.py similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/scripts/cleanup.py rename to plugins/azure/skills/microsoft-foundry/finetuning/scripts/cleanup.py diff --git a/plugin/skills/microsoft-foundry/finetuning/scripts/common.py b/plugins/azure/skills/microsoft-foundry/finetuning/scripts/common.py similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/scripts/common.py rename to plugins/azure/skills/microsoft-foundry/finetuning/scripts/common.py diff --git a/plugin/skills/microsoft-foundry/finetuning/scripts/convert_dataset.py b/plugins/azure/skills/microsoft-foundry/finetuning/scripts/convert_dataset.py similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/scripts/convert_dataset.py rename to plugins/azure/skills/microsoft-foundry/finetuning/scripts/convert_dataset.py diff --git a/plugin/skills/microsoft-foundry/finetuning/scripts/deploy_model.py b/plugins/azure/skills/microsoft-foundry/finetuning/scripts/deploy_model.py similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/scripts/deploy_model.py rename to plugins/azure/skills/microsoft-foundry/finetuning/scripts/deploy_model.py diff --git a/plugin/skills/microsoft-foundry/finetuning/scripts/evaluate_model.py b/plugins/azure/skills/microsoft-foundry/finetuning/scripts/evaluate_model.py similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/scripts/evaluate_model.py rename to plugins/azure/skills/microsoft-foundry/finetuning/scripts/evaluate_model.py diff --git a/plugin/skills/microsoft-foundry/finetuning/scripts/generate_distillation_data.py b/plugins/azure/skills/microsoft-foundry/finetuning/scripts/generate_distillation_data.py similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/scripts/generate_distillation_data.py rename to plugins/azure/skills/microsoft-foundry/finetuning/scripts/generate_distillation_data.py diff --git a/plugin/skills/microsoft-foundry/finetuning/scripts/monitor_training.py b/plugins/azure/skills/microsoft-foundry/finetuning/scripts/monitor_training.py similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/scripts/monitor_training.py rename to plugins/azure/skills/microsoft-foundry/finetuning/scripts/monitor_training.py diff --git a/plugin/skills/microsoft-foundry/finetuning/scripts/score_dataset.py b/plugins/azure/skills/microsoft-foundry/finetuning/scripts/score_dataset.py similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/scripts/score_dataset.py rename to plugins/azure/skills/microsoft-foundry/finetuning/scripts/score_dataset.py diff --git a/plugin/skills/microsoft-foundry/finetuning/scripts/submit_training.py b/plugins/azure/skills/microsoft-foundry/finetuning/scripts/submit_training.py similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/scripts/submit_training.py rename to plugins/azure/skills/microsoft-foundry/finetuning/scripts/submit_training.py diff --git a/plugin/skills/microsoft-foundry/finetuning/scripts/validate/__init__.py b/plugins/azure/skills/microsoft-foundry/finetuning/scripts/validate/__init__.py similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/scripts/validate/__init__.py rename to plugins/azure/skills/microsoft-foundry/finetuning/scripts/validate/__init__.py diff --git a/plugin/skills/microsoft-foundry/finetuning/scripts/validate/data_stats.py b/plugins/azure/skills/microsoft-foundry/finetuning/scripts/validate/data_stats.py similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/scripts/validate/data_stats.py rename to plugins/azure/skills/microsoft-foundry/finetuning/scripts/validate/data_stats.py diff --git a/plugin/skills/microsoft-foundry/finetuning/scripts/validate/validate_dpo.py b/plugins/azure/skills/microsoft-foundry/finetuning/scripts/validate/validate_dpo.py similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/scripts/validate/validate_dpo.py rename to plugins/azure/skills/microsoft-foundry/finetuning/scripts/validate/validate_dpo.py diff --git a/plugin/skills/microsoft-foundry/finetuning/scripts/validate/validate_rft.py b/plugins/azure/skills/microsoft-foundry/finetuning/scripts/validate/validate_rft.py similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/scripts/validate/validate_rft.py rename to plugins/azure/skills/microsoft-foundry/finetuning/scripts/validate/validate_rft.py diff --git a/plugin/skills/microsoft-foundry/finetuning/scripts/validate/validate_sft.py b/plugins/azure/skills/microsoft-foundry/finetuning/scripts/validate/validate_sft.py similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/scripts/validate/validate_sft.py rename to plugins/azure/skills/microsoft-foundry/finetuning/scripts/validate/validate_sft.py diff --git a/plugin/skills/microsoft-foundry/finetuning/workflows/dataset-creation.md b/plugins/azure/skills/microsoft-foundry/finetuning/workflows/dataset-creation.md similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/workflows/dataset-creation.md rename to plugins/azure/skills/microsoft-foundry/finetuning/workflows/dataset-creation.md diff --git a/plugin/skills/microsoft-foundry/finetuning/workflows/diagnose-poor-results.md b/plugins/azure/skills/microsoft-foundry/finetuning/workflows/diagnose-poor-results.md similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/workflows/diagnose-poor-results.md rename to plugins/azure/skills/microsoft-foundry/finetuning/workflows/diagnose-poor-results.md diff --git a/plugin/skills/microsoft-foundry/finetuning/workflows/full-pipeline.md b/plugins/azure/skills/microsoft-foundry/finetuning/workflows/full-pipeline.md similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/workflows/full-pipeline.md rename to plugins/azure/skills/microsoft-foundry/finetuning/workflows/full-pipeline.md diff --git a/plugin/skills/microsoft-foundry/finetuning/workflows/iterative-training.md b/plugins/azure/skills/microsoft-foundry/finetuning/workflows/iterative-training.md similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/workflows/iterative-training.md rename to plugins/azure/skills/microsoft-foundry/finetuning/workflows/iterative-training.md diff --git a/plugin/skills/microsoft-foundry/finetuning/workflows/quickstart.md b/plugins/azure/skills/microsoft-foundry/finetuning/workflows/quickstart.md similarity index 100% rename from plugin/skills/microsoft-foundry/finetuning/workflows/quickstart.md rename to plugins/azure/skills/microsoft-foundry/finetuning/workflows/quickstart.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/agent-optimizer/agent-optimizer.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/agent-optimizer/agent-optimizer.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/agent-optimizer/agent-optimizer.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/agent-optimizer/agent-optimizer.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/azd-setup.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/azd-setup.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/azd-setup.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/azd-setup.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/eval-yaml.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/eval-yaml.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/eval-yaml.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/eval-yaml.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/optimize-workflow.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/optimize-workflow.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/optimize-workflow.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/optimize-workflow.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/python-patterns.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/python-patterns.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/python-patterns.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/python-patterns.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/scaffold.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/scaffold.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/scaffold.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/scaffold.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/cicd/cicd.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/cicd/cicd.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/cicd/cicd.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/cicd/cicd.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/create-hosted.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/create-hosted.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/create-hosted.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/create-hosted.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/create-prompt.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/create-prompt.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/create-prompt.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/create-prompt.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/quick-start-hosted.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/quick-start-hosted.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/quick-start-hosted.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/quick-start-hosted.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/agent-tools.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/agent-tools.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/agent-tools.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/agent-tools.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/agentframework.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/agentframework.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/agentframework.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/agentframework.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/azd-ai-cli.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/azd-ai-cli.md new file mode 100644 index 000000000..813da7f66 --- /dev/null +++ b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/azd-ai-cli.md @@ -0,0 +1,157 @@ +# azd ai CLI Reference + +Core mental model for the `azd ai agent` extension. Use this when you need to understand command surface, file layout, or where a given setting lives. + +## CLI surface + +```bash +azd ai project show # which Foundry project endpoint is active +azd ai agent show # is the agent deployed? what version? +azd ai agent doctor # full health check, suggests fixes + +azd ai agent sample list # curated catalog -- pick a manifestUrl +azd ai agent init -m # scaffold from a sample +azd ai agent init --src # scaffold from existing source + +azd ai agent run --no-client # start on localhost:8088 without a client UI +azd ai agent invoke "" # invoke the deployed agent +azd ai agent invoke --local "" # invoke the agent on localhost + +azd provision # core azd; creates Foundry project + infra +azd deploy # core azd; packages + registers new agent version +azd ai agent endpoint update # patch agentEndpoint / agentCard in place + +azd ai connection list / show / create / update / delete +azd ai toolbox list / show / create / publish / delete +azd ai toolbox connection add / remove / list +azd ai toolbox versions list + +azd ai agent files upload / download / list / delete / mkdir / stat +azd ai agent sessions create / show / stop / delete / list +azd ai agent monitor # per-session log stream (SSE) + +azd ai agent eval generate / run / show / update / list +azd ai agent optimize / optimize status / optimize apply / optimize deploy / optimize cancel +``` + +Use `--output json` only when a command supports it. `azd ai agent invoke` supports `default` and `raw` output. + +### Hosted files and sessions + +Use the file commands for an active hosted-agent session: + +| Command | Purpose | +|---------|---------| +| `azd ai agent files upload` | Upload a local file. | +| `azd ai agent files download` | Download a remote file. | +| `azd ai agent files list` | List a remote directory. | +| `azd ai agent files stat` | Inspect metadata for a remote path. | +| `azd ai agent files mkdir` | Create a remote directory. | +| `azd ai agent files delete` | Delete a remote file or directory. | + +Directory deletion is not recursive by default. Add `--recursive` only when deleting the directory and all of its contents is intentional. + +`azd ai agent invoke` manages the current session automatically. It reuses the saved session for the agent or captures and persists the server-assigned session on the first invoke. Use `--new-session` to reset session-backed state or `--session-id` to select a known session. + +Use `sessions create` only when a session must exist before invoke or file operations. The remaining session commands are `show`, `stop`, `delete`, and `list`. `sessions stop` stops compute and preserves the session filesystem. `sessions delete` removes both compute and filesystem state. See [Hosted Session Management](../../invoke/references/session-management.md). + +## The azure.yaml service block + +After `azd ai agent init`, every hosted agent is defined as a **service block in `azure.yaml`** (`host: azure.ai.agent`) plus the active azd env; init consolidates the sample's definition into `azure.yaml`. + +| Location | What it holds | +|------|---------------| +| `azure.yaml services.` (the agent) | `host: azure.ai.agent`, `kind`, `name`, `project`, `language`, `uses`, `protocols`, `environmentVariables`, `codeConfiguration` / `docker` / `image`, `container.resources`, `description`, `agentEndpoint`, `agentCard`, `startupCommand`. | +| `azure.yaml services.ai-project` | Model `deployments[]` (`host: azure.ai.project`). The agent links to it via `uses: [ai-project]`. | +| `.azure//.env` (`azd env set`) | Secrets and `PARAM__` credential values referenced from `azure.yaml`. | + +`azd deploy` reads the agent service block and creates a new immutable agent version. `azd provision` reads project infrastructure such as `services.ai-project.deployments[]` and applies it via Bicep. + +`agent.manifest.yaml` (the file passed to `-m`) is the seed format -- it is NOT on disk after init. Init folds its `parameters:` / `resources:` blocks into the `azure.yaml` service block and the azd env. + +> **Local vs API field names.** Local `azure.yaml` uses **camelCase** (`codeConfiguration`, `entryPoint`, `dependencyResolution`, `environmentVariables`). The deployed definition returned by `azd ai agent show` / the Foundry `agent_get` API uses **snake_case** (`code_configuration`, `entry_point` as an array, `environment_variables`). Don't mix the two. + +### Hosted agent service block (code deploy) + +```yaml +services: + ai-project: + host: azure.ai.project + deployments: + - name: gpt-4.1-mini + model: + format: OpenAI + name: gpt-4.1-mini + version: "2024-04-09" + sku: + name: GlobalStandard + capacity: 50 + my-agent: + project: src/my-agent + host: azure.ai.agent + language: python + uses: + - ai-project + kind: hosted + name: my-agent + description: A hosted agent. + codeConfiguration: + runtime: python_3_13 + entryPoint: main.py + dependencyResolution: remote_build # or "bundled" + container: + resources: + cpu: "0.5" + memory: 1Gi + environmentVariables: + - name: AZURE_AI_MODEL_DEPLOYMENT_NAME + value: ${AZURE_AI_MODEL_DEPLOYMENT_NAME} + protocols: + - protocol: responses + version: 1.0.0 +``` + +- `protocols` -- `responses`, `invocations`, `invocations_ws`. Editing requires `azd deploy`. +- `container.resources` -- valid tiers: `0.25/0.5Gi`, `1/2Gi`, `2/4Gi`. +- `environmentVariables` -- `${VAR}` resolves from the active azd env. Not for secrets. +- `codeConfiguration` present -> direct code deploy (ZIP, Foundry builds). +- `agentEndpoint` / `agentCard` -- patch in place with `azd ai agent endpoint update` (no new version). +- `deployments[]` (under the `ai-project` service) -- model deployments provisioned via Bicep. `name` is the literal Azure deployment resource name the agent references through `AZURE_AI_MODEL_DEPLOYMENT_NAME`. +- Connections/toolboxes -- created with `azd ai connection` / `azd ai toolbox` and consumed via a `TOOLBOX__MCP_ENDPOINT` env var (see [tools](../../create/references/tools.md)). + +## State (azd env vars) + +| Variable | Read by | Where to set | +|----------|---------|--------------| +| `AZURE_AI_PROJECT_ENDPOINT` | Every `azd ai agent` command | `azd env set` | +| `AZURE_AI_PROJECT_ID` | `azd ai agent show` (playground URL) | `azd env set` | +| `AZURE_SUBSCRIPTION_ID`, `AZURE_LOCATION` | `azd provision` | Always set with `azd env set ...` immediately after init | +| `AGENT__NAME` / `_VERSION` / `__ENDPOINT` | Auto-written by deploy | Auto | +| `PARAM__` | Connection credentials in `azure.yaml` | `azd env set` | + +Manage with `azd env get-values`, `azd env set`, `azd env list`, `azd env new`, `azd env select`. + +The platform also injects `FOUNDRY_*` and `AGENT_*` into the running container at runtime. **Never** put these in the agent service's `environmentVariables` section. + +## Resolving subscription / location + +`azd ai project show` returns only the Foundry project endpoint. For subscription / location, try in order: + +1. `azd config get defaults` +2. `azd env get-values` +3. Ask the user. +4. Last resort, with explicit consent: `az account list --output json`. + +For the Foundry project ARM ID (`--project-id`), ask the user: "New project, or use an existing one?" If existing, ask for the ID and hint where to find it (https://ai.azure.com -> Operate -> Admin). Do NOT shell out to `az cognitiveservices` -- it returns the wrong resource shape. + +## Common error codes + +- `not_logged_in` / `login_expired` -- ask the user to run `azd auth login`. +- `missing_project_endpoint` -- run `azd provision`, or `azd env set AZURE_AI_PROJECT_ENDPOINT `. +- `project_not_found` -- cwd has no `azure.yaml`. Move to project root or run init. +- `invalid_agent_manifest` -- the agent service block is malformed. Run `azd ai agent doctor` and read the named field. +- `invalid_connection` -- inspect with `azd ai connection show `. +- `eval_config_invalid` -- `eval.yaml` failed validation. Run `azd ai agent doctor`. +- `agent_definition_not_found` -- deployed name doesn't match `azure.yaml`. Re-deploy from project root. + +Any unfamiliar `code` value is safe to surface verbatim to the user. diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/enable-incoming-a2a.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/enable-incoming-a2a.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/enable-incoming-a2a.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/enable-incoming-a2a.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/foundry-tool-catalog.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/foundry-tool-catalog.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/foundry-tool-catalog.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/foundry-tool-catalog.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-api-create.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-api-create.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-api-create.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-api-create.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-attach.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-attach.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-attach.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-attach.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-manage.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-manage.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-manage.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-manage.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/local-run.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/local-run.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/local-run.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/local-run.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/sdk-operations.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/sdk-operations.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/sdk-operations.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/sdk-operations.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-attach.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-attach.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-attach.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-attach.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-manage.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-manage.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-manage.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-manage.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-toolbox-attach.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-toolbox-attach.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-toolbox-attach.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-toolbox-attach.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/tool-a2a.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-a2a.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/tool-a2a.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-a2a.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/tool-azure-ai-search.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-azure-ai-search.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/tool-azure-ai-search.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-azure-ai-search.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/tool-bing-grounding.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-bing-grounding.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/tool-bing-grounding.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-bing-grounding.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/tool-code-interpreter.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-code-interpreter.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/tool-code-interpreter.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-code-interpreter.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/tool-fabric-iq.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-fabric-iq.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/tool-fabric-iq.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-fabric-iq.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/tool-file-search.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-file-search.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/tool-file-search.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-file-search.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/tool-function-calling.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-function-calling.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/tool-function-calling.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-function-calling.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/tool-mcp.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-mcp.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/tool-mcp.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-mcp.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/tool-memory.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-memory.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/tool-memory.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-memory.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/tool-openapi.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-openapi.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/tool-openapi.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-openapi.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/tool-tool-search.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-tool-search.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/tool-tool-search.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-tool-search.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/tool-web-search.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-web-search.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/tool-web-search.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-web-search.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/tool-work-iq.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-work-iq.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/tool-work-iq.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-work-iq.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/toolbox-reference.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/toolbox-reference.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/toolbox-reference.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/toolbox-reference.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/tools.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tools.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/tools.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tools.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/references/use-toolbox-in-hosted-agent.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/use-toolbox-in-hosted-agent.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/references/use-toolbox-in-hosted-agent.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/use-toolbox-in-hosted-agent.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/scripts/check-canvas-entry.ps1 b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/scripts/check-canvas-entry.ps1 similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/scripts/check-canvas-entry.ps1 rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/scripts/check-canvas-entry.ps1 diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/scripts/check-canvas-entry.sh b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/scripts/check-canvas-entry.sh similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/scripts/check-canvas-entry.sh rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/scripts/check-canvas-entry.sh diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/scripts/resolve-project-id.ps1 b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/scripts/resolve-project-id.ps1 similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/scripts/resolve-project-id.ps1 rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/scripts/resolve-project-id.ps1 diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/scripts/resolve-project-id.sh b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/scripts/resolve-project-id.sh similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/scripts/resolve-project-id.sh rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/scripts/resolve-project-id.sh diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/scripts/verify-environment.ps1 b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/scripts/verify-environment.ps1 similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/scripts/verify-environment.ps1 rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/scripts/verify-environment.ps1 diff --git a/plugin/skills/microsoft-foundry/foundry-agent/create/scripts/verify-environment.sh b/plugins/azure/skills/microsoft-foundry/foundry-agent/create/scripts/verify-environment.sh similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/create/scripts/verify-environment.sh rename to plugins/azure/skills/microsoft-foundry/foundry-agent/create/scripts/verify-environment.sh diff --git a/plugin/skills/microsoft-foundry/foundry-agent/deploy/deploy.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/deploy/deploy.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/deploy/deploy.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/deploy/deploy.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/eval-datasets/eval-datasets.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/eval-datasets.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/eval-datasets/eval-datasets.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/eval-datasets.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-comparison.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-comparison.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-comparison.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-comparison.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-curation.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-curation.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-curation.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-curation.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-organization.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-organization.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-organization.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-organization.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-versioning.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-versioning.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-versioning.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-versioning.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-lineage.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-lineage.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-lineage.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-lineage.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-regression.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-regression.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-regression.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-regression.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-trending.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-trending.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-trending.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-trending.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/eval-datasets/references/generate-seed-dataset.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/generate-seed-dataset.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/eval-datasets/references/generate-seed-dataset.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/generate-seed-dataset.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/eval-datasets/references/trace-to-dataset.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/trace-to-dataset.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/eval-datasets/references/trace-to-dataset.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/trace-to-dataset.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/invocations-ws/invocations-ws.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/invocations-ws/invocations-ws.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/invocations-ws/invocations-ws.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/invocations-ws/invocations-ws.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/invocations-ws/references/invocations-ws-protocol.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/invocations-ws/references/invocations-ws-protocol.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/invocations-ws/references/invocations-ws-protocol.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/invocations-ws/references/invocations-ws-protocol.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/invoke/invoke.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/invoke/invoke.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/invoke/invoke.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/invoke/invoke.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/invoke/references/file-operations.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/invoke/references/file-operations.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/invoke/references/file-operations.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/invoke/references/file-operations.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/invoke/references/invocations-protocol.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/invoke/references/invocations-protocol.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/invoke/references/invocations-protocol.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/invoke/references/invocations-protocol.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/invoke/references/session-management.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/invoke/references/session-management.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/invoke/references/session-management.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/invoke/references/session-management.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/observe/observe.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/observe/observe.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/observe/observe.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/observe/observe.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/observe/references/analyze-results.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/analyze-results.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/observe/references/analyze-results.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/analyze-results.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/observe/references/cicd-monitoring.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/cicd-monitoring.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/observe/references/cicd-monitoring.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/cicd-monitoring.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/observe/references/compare-iterate.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/compare-iterate.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/observe/references/compare-iterate.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/compare-iterate.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/observe/references/continuous-eval.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/continuous-eval.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/observe/references/continuous-eval.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/continuous-eval.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/observe/references/deploy-and-setup.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/deploy-and-setup.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/observe/references/deploy-and-setup.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/deploy-and-setup.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/observe/references/evaluate-step.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/evaluate-step.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/observe/references/evaluate-step.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/evaluate-step.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/observe/references/evaluation-suite-generation.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/evaluation-suite-generation.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/observe/references/evaluation-suite-generation.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/evaluation-suite-generation.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/observe/references/optimize-deploy.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/optimize-deploy.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/observe/references/optimize-deploy.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/optimize-deploy.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/routine/references/azure-yaml.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/routine/references/azure-yaml.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/routine/references/azure-yaml.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/routine/references/azure-yaml.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/routine/references/cli-crud.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/routine/references/cli-crud.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/routine/references/cli-crud.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/routine/references/cli-crud.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/routine/routine.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/routine/routine.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/routine/routine.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/routine/routine.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/trace/references/analyze-failures.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/analyze-failures.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/trace/references/analyze-failures.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/analyze-failures.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/trace/references/analyze-latency.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/analyze-latency.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/trace/references/analyze-latency.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/analyze-latency.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/trace/references/conversation-detail.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/conversation-detail.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/trace/references/conversation-detail.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/conversation-detail.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/trace/references/eval-correlation.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/eval-correlation.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/trace/references/eval-correlation.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/eval-correlation.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/trace/references/kql-templates.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/kql-templates.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/trace/references/kql-templates.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/kql-templates.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/trace/references/search-traces.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/search-traces.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/trace/references/search-traces.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/search-traces.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/trace/references/tracing-insights-api.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/tracing-insights-api.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/trace/references/tracing-insights-api.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/tracing-insights-api.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/trace/trace.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/trace/trace.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/trace/trace.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/trace/trace.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/troubleshoot/troubleshoot.md b/plugins/azure/skills/microsoft-foundry/foundry-agent/troubleshoot/troubleshoot.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/troubleshoot/troubleshoot.md rename to plugins/azure/skills/microsoft-foundry/foundry-agent/troubleshoot/troubleshoot.md diff --git a/plugin/skills/microsoft-foundry/models/deploy-model/SKILL.md b/plugins/azure/skills/microsoft-foundry/models/deploy-model/SKILL.md similarity index 100% rename from plugin/skills/microsoft-foundry/models/deploy-model/SKILL.md rename to plugins/azure/skills/microsoft-foundry/models/deploy-model/SKILL.md diff --git a/plugin/skills/microsoft-foundry/models/deploy-model/TEST_PROMPTS.md b/plugins/azure/skills/microsoft-foundry/models/deploy-model/TEST_PROMPTS.md similarity index 100% rename from plugin/skills/microsoft-foundry/models/deploy-model/TEST_PROMPTS.md rename to plugins/azure/skills/microsoft-foundry/models/deploy-model/TEST_PROMPTS.md diff --git a/plugin/skills/microsoft-foundry/models/deploy-model/capacity/SKILL.md b/plugins/azure/skills/microsoft-foundry/models/deploy-model/capacity/SKILL.md similarity index 100% rename from plugin/skills/microsoft-foundry/models/deploy-model/capacity/SKILL.md rename to plugins/azure/skills/microsoft-foundry/models/deploy-model/capacity/SKILL.md diff --git a/plugin/skills/microsoft-foundry/models/deploy-model/capacity/scripts/discover_and_rank.ps1 b/plugins/azure/skills/microsoft-foundry/models/deploy-model/capacity/scripts/discover_and_rank.ps1 similarity index 100% rename from plugin/skills/microsoft-foundry/models/deploy-model/capacity/scripts/discover_and_rank.ps1 rename to plugins/azure/skills/microsoft-foundry/models/deploy-model/capacity/scripts/discover_and_rank.ps1 diff --git a/plugin/skills/microsoft-foundry/models/deploy-model/capacity/scripts/discover_and_rank.sh b/plugins/azure/skills/microsoft-foundry/models/deploy-model/capacity/scripts/discover_and_rank.sh similarity index 100% rename from plugin/skills/microsoft-foundry/models/deploy-model/capacity/scripts/discover_and_rank.sh rename to plugins/azure/skills/microsoft-foundry/models/deploy-model/capacity/scripts/discover_and_rank.sh diff --git a/plugin/skills/microsoft-foundry/models/deploy-model/capacity/scripts/query_capacity.ps1 b/plugins/azure/skills/microsoft-foundry/models/deploy-model/capacity/scripts/query_capacity.ps1 similarity index 100% rename from plugin/skills/microsoft-foundry/models/deploy-model/capacity/scripts/query_capacity.ps1 rename to plugins/azure/skills/microsoft-foundry/models/deploy-model/capacity/scripts/query_capacity.ps1 diff --git a/plugin/skills/microsoft-foundry/models/deploy-model/capacity/scripts/query_capacity.sh b/plugins/azure/skills/microsoft-foundry/models/deploy-model/capacity/scripts/query_capacity.sh similarity index 100% rename from plugin/skills/microsoft-foundry/models/deploy-model/capacity/scripts/query_capacity.sh rename to plugins/azure/skills/microsoft-foundry/models/deploy-model/capacity/scripts/query_capacity.sh diff --git a/plugin/skills/microsoft-foundry/models/deploy-model/customize/EXAMPLES.md b/plugins/azure/skills/microsoft-foundry/models/deploy-model/customize/EXAMPLES.md similarity index 100% rename from plugin/skills/microsoft-foundry/models/deploy-model/customize/EXAMPLES.md rename to plugins/azure/skills/microsoft-foundry/models/deploy-model/customize/EXAMPLES.md diff --git a/plugin/skills/microsoft-foundry/models/deploy-model/customize/SKILL.md b/plugins/azure/skills/microsoft-foundry/models/deploy-model/customize/SKILL.md similarity index 100% rename from plugin/skills/microsoft-foundry/models/deploy-model/customize/SKILL.md rename to plugins/azure/skills/microsoft-foundry/models/deploy-model/customize/SKILL.md diff --git a/plugin/skills/microsoft-foundry/models/deploy-model/customize/references/customize-guides.md b/plugins/azure/skills/microsoft-foundry/models/deploy-model/customize/references/customize-guides.md similarity index 100% rename from plugin/skills/microsoft-foundry/models/deploy-model/customize/references/customize-guides.md rename to plugins/azure/skills/microsoft-foundry/models/deploy-model/customize/references/customize-guides.md diff --git a/plugin/skills/microsoft-foundry/models/deploy-model/customize/references/customize-workflow.md b/plugins/azure/skills/microsoft-foundry/models/deploy-model/customize/references/customize-workflow.md similarity index 100% rename from plugin/skills/microsoft-foundry/models/deploy-model/customize/references/customize-workflow.md rename to plugins/azure/skills/microsoft-foundry/models/deploy-model/customize/references/customize-workflow.md diff --git a/plugin/skills/microsoft-foundry/models/deploy-model/preset/EXAMPLES.md b/plugins/azure/skills/microsoft-foundry/models/deploy-model/preset/EXAMPLES.md similarity index 100% rename from plugin/skills/microsoft-foundry/models/deploy-model/preset/EXAMPLES.md rename to plugins/azure/skills/microsoft-foundry/models/deploy-model/preset/EXAMPLES.md diff --git a/plugin/skills/microsoft-foundry/models/deploy-model/preset/SKILL.md b/plugins/azure/skills/microsoft-foundry/models/deploy-model/preset/SKILL.md similarity index 100% rename from plugin/skills/microsoft-foundry/models/deploy-model/preset/SKILL.md rename to plugins/azure/skills/microsoft-foundry/models/deploy-model/preset/SKILL.md diff --git a/plugin/skills/microsoft-foundry/models/deploy-model/preset/references/preset-workflow.md b/plugins/azure/skills/microsoft-foundry/models/deploy-model/preset/references/preset-workflow.md similarity index 100% rename from plugin/skills/microsoft-foundry/models/deploy-model/preset/references/preset-workflow.md rename to plugins/azure/skills/microsoft-foundry/models/deploy-model/preset/references/preset-workflow.md diff --git a/plugin/skills/microsoft-foundry/models/deploy-model/preset/references/workflow.md b/plugins/azure/skills/microsoft-foundry/models/deploy-model/preset/references/workflow.md similarity index 100% rename from plugin/skills/microsoft-foundry/models/deploy-model/preset/references/workflow.md rename to plugins/azure/skills/microsoft-foundry/models/deploy-model/preset/references/workflow.md diff --git a/plugin/skills/microsoft-foundry/models/deploy-model/scripts/generate_deployment_url.ps1 b/plugins/azure/skills/microsoft-foundry/models/deploy-model/scripts/generate_deployment_url.ps1 similarity index 100% rename from plugin/skills/microsoft-foundry/models/deploy-model/scripts/generate_deployment_url.ps1 rename to plugins/azure/skills/microsoft-foundry/models/deploy-model/scripts/generate_deployment_url.ps1 diff --git a/plugin/skills/microsoft-foundry/models/deploy-model/scripts/generate_deployment_url.sh b/plugins/azure/skills/microsoft-foundry/models/deploy-model/scripts/generate_deployment_url.sh similarity index 100% rename from plugin/skills/microsoft-foundry/models/deploy-model/scripts/generate_deployment_url.sh rename to plugins/azure/skills/microsoft-foundry/models/deploy-model/scripts/generate_deployment_url.sh diff --git a/plugin/skills/microsoft-foundry/project/connections.md b/plugins/azure/skills/microsoft-foundry/project/connections.md similarity index 100% rename from plugin/skills/microsoft-foundry/project/connections.md rename to plugins/azure/skills/microsoft-foundry/project/connections.md diff --git a/plugin/skills/microsoft-foundry/project/create/create-foundry-project.md b/plugins/azure/skills/microsoft-foundry/project/create/create-foundry-project.md similarity index 100% rename from plugin/skills/microsoft-foundry/project/create/create-foundry-project.md rename to plugins/azure/skills/microsoft-foundry/project/create/create-foundry-project.md diff --git a/plugin/skills/microsoft-foundry/quota/quota.md b/plugins/azure/skills/microsoft-foundry/quota/quota.md similarity index 100% rename from plugin/skills/microsoft-foundry/quota/quota.md rename to plugins/azure/skills/microsoft-foundry/quota/quota.md diff --git a/plugin/skills/microsoft-foundry/quota/references/capacity-planning.md b/plugins/azure/skills/microsoft-foundry/quota/references/capacity-planning.md similarity index 100% rename from plugin/skills/microsoft-foundry/quota/references/capacity-planning.md rename to plugins/azure/skills/microsoft-foundry/quota/references/capacity-planning.md diff --git a/plugin/skills/microsoft-foundry/quota/references/error-resolution.md b/plugins/azure/skills/microsoft-foundry/quota/references/error-resolution.md similarity index 100% rename from plugin/skills/microsoft-foundry/quota/references/error-resolution.md rename to plugins/azure/skills/microsoft-foundry/quota/references/error-resolution.md diff --git a/plugin/skills/microsoft-foundry/quota/references/optimization.md b/plugins/azure/skills/microsoft-foundry/quota/references/optimization.md similarity index 100% rename from plugin/skills/microsoft-foundry/quota/references/optimization.md rename to plugins/azure/skills/microsoft-foundry/quota/references/optimization.md diff --git a/plugin/skills/microsoft-foundry/quota/references/ptu-guide.md b/plugins/azure/skills/microsoft-foundry/quota/references/ptu-guide.md similarity index 100% rename from plugin/skills/microsoft-foundry/quota/references/ptu-guide.md rename to plugins/azure/skills/microsoft-foundry/quota/references/ptu-guide.md diff --git a/plugin/skills/microsoft-foundry/quota/references/troubleshooting.md b/plugins/azure/skills/microsoft-foundry/quota/references/troubleshooting.md similarity index 100% rename from plugin/skills/microsoft-foundry/quota/references/troubleshooting.md rename to plugins/azure/skills/microsoft-foundry/quota/references/troubleshooting.md diff --git a/plugin/skills/microsoft-foundry/quota/references/workflows.md b/plugins/azure/skills/microsoft-foundry/quota/references/workflows.md similarity index 100% rename from plugin/skills/microsoft-foundry/quota/references/workflows.md rename to plugins/azure/skills/microsoft-foundry/quota/references/workflows.md diff --git a/plugin/skills/microsoft-foundry/rbac/rbac.md b/plugins/azure/skills/microsoft-foundry/rbac/rbac.md similarity index 100% rename from plugin/skills/microsoft-foundry/rbac/rbac.md rename to plugins/azure/skills/microsoft-foundry/rbac/rbac.md diff --git a/plugin/skills/microsoft-foundry/references/agent-metadata-contract.md b/plugins/azure/skills/microsoft-foundry/references/agent-metadata-contract.md similarity index 100% rename from plugin/skills/microsoft-foundry/references/agent-metadata-contract.md rename to plugins/azure/skills/microsoft-foundry/references/agent-metadata-contract.md diff --git a/plugin/skills/microsoft-foundry/references/auth-best-practices.md b/plugins/azure/skills/microsoft-foundry/references/auth-best-practices.md similarity index 100% rename from plugin/skills/microsoft-foundry/references/auth-best-practices.md rename to plugins/azure/skills/microsoft-foundry/references/auth-best-practices.md diff --git a/plugin/skills/microsoft-foundry/references/sdk/foundry-sdk-py.md b/plugins/azure/skills/microsoft-foundry/references/sdk/foundry-sdk-py.md similarity index 100% rename from plugin/skills/microsoft-foundry/references/sdk/foundry-sdk-py.md rename to plugins/azure/skills/microsoft-foundry/references/sdk/foundry-sdk-py.md diff --git a/plugin/skills/microsoft-foundry/references/standard-agent-setup.md b/plugins/azure/skills/microsoft-foundry/references/standard-agent-setup.md similarity index 100% rename from plugin/skills/microsoft-foundry/references/standard-agent-setup.md rename to plugins/azure/skills/microsoft-foundry/references/standard-agent-setup.md diff --git a/plugin/skills/microsoft-foundry/resource/create/create-foundry-resource.md b/plugins/azure/skills/microsoft-foundry/resource/create/create-foundry-resource.md similarity index 100% rename from plugin/skills/microsoft-foundry/resource/create/create-foundry-resource.md rename to plugins/azure/skills/microsoft-foundry/resource/create/create-foundry-resource.md diff --git a/plugin/skills/microsoft-foundry/resource/create/references/patterns.md b/plugins/azure/skills/microsoft-foundry/resource/create/references/patterns.md similarity index 100% rename from plugin/skills/microsoft-foundry/resource/create/references/patterns.md rename to plugins/azure/skills/microsoft-foundry/resource/create/references/patterns.md diff --git a/plugin/skills/microsoft-foundry/resource/create/references/troubleshooting.md b/plugins/azure/skills/microsoft-foundry/resource/create/references/troubleshooting.md similarity index 100% rename from plugin/skills/microsoft-foundry/resource/create/references/troubleshooting.md rename to plugins/azure/skills/microsoft-foundry/resource/create/references/troubleshooting.md diff --git a/plugin/skills/microsoft-foundry/resource/create/references/workflows.md b/plugins/azure/skills/microsoft-foundry/resource/create/references/workflows.md similarity index 100% rename from plugin/skills/microsoft-foundry/resource/create/references/workflows.md rename to plugins/azure/skills/microsoft-foundry/resource/create/references/workflows.md diff --git a/plugin/skills/microsoft-foundry/resource/private-network/private-network.md b/plugins/azure/skills/microsoft-foundry/resource/private-network/private-network.md similarity index 100% rename from plugin/skills/microsoft-foundry/resource/private-network/private-network.md rename to plugins/azure/skills/microsoft-foundry/resource/private-network/private-network.md diff --git a/plugin/skills/microsoft-foundry/resource/private-network/references/custom-template-adaptation.md b/plugins/azure/skills/microsoft-foundry/resource/private-network/references/custom-template-adaptation.md similarity index 100% rename from plugin/skills/microsoft-foundry/resource/private-network/references/custom-template-adaptation.md rename to plugins/azure/skills/microsoft-foundry/resource/private-network/references/custom-template-adaptation.md diff --git a/plugin/skills/microsoft-foundry/resource/private-network/references/deploy.md b/plugins/azure/skills/microsoft-foundry/resource/private-network/references/deploy.md similarity index 100% rename from plugin/skills/microsoft-foundry/resource/private-network/references/deploy.md rename to plugins/azure/skills/microsoft-foundry/resource/private-network/references/deploy.md diff --git a/plugin/skills/microsoft-foundry/resource/private-network/references/end-to-end-test.md b/plugins/azure/skills/microsoft-foundry/resource/private-network/references/end-to-end-test.md similarity index 100% rename from plugin/skills/microsoft-foundry/resource/private-network/references/end-to-end-test.md rename to plugins/azure/skills/microsoft-foundry/resource/private-network/references/end-to-end-test.md diff --git a/plugin/skills/microsoft-foundry/resource/private-network/references/intake.md b/plugins/azure/skills/microsoft-foundry/resource/private-network/references/intake.md similarity index 100% rename from plugin/skills/microsoft-foundry/resource/private-network/references/intake.md rename to plugins/azure/skills/microsoft-foundry/resource/private-network/references/intake.md diff --git a/plugin/skills/microsoft-foundry/resource/private-network/references/post-deployment-validation.md b/plugins/azure/skills/microsoft-foundry/resource/private-network/references/post-deployment-validation.md similarity index 100% rename from plugin/skills/microsoft-foundry/resource/private-network/references/post-deployment-validation.md rename to plugins/azure/skills/microsoft-foundry/resource/private-network/references/post-deployment-validation.md diff --git a/plugin/skills/microsoft-foundry/resource/private-network/references/scaffold.md b/plugins/azure/skills/microsoft-foundry/resource/private-network/references/scaffold.md similarity index 100% rename from plugin/skills/microsoft-foundry/resource/private-network/references/scaffold.md rename to plugins/azure/skills/microsoft-foundry/resource/private-network/references/scaffold.md diff --git a/plugin/skills/microsoft-foundry/resource/private-network/references/template-index.md b/plugins/azure/skills/microsoft-foundry/resource/private-network/references/template-index.md similarity index 100% rename from plugin/skills/microsoft-foundry/resource/private-network/references/template-index.md rename to plugins/azure/skills/microsoft-foundry/resource/private-network/references/template-index.md diff --git a/plugin/skills/microsoft-foundry/resource/private-network/references/vpn-dns-setup.bicep b/plugins/azure/skills/microsoft-foundry/resource/private-network/references/vpn-dns-setup.bicep similarity index 100% rename from plugin/skills/microsoft-foundry/resource/private-network/references/vpn-dns-setup.bicep rename to plugins/azure/skills/microsoft-foundry/resource/private-network/references/vpn-dns-setup.bicep diff --git a/plugin/skills/microsoft-foundry/resource/private-network/references/vpn-dns-setup.md b/plugins/azure/skills/microsoft-foundry/resource/private-network/references/vpn-dns-setup.md similarity index 100% rename from plugin/skills/microsoft-foundry/resource/private-network/references/vpn-dns-setup.md rename to plugins/azure/skills/microsoft-foundry/resource/private-network/references/vpn-dns-setup.md diff --git a/plugin/skills/microsoft-foundry/version.json b/plugins/azure/skills/microsoft-foundry/version.json similarity index 100% rename from plugin/skills/microsoft-foundry/version.json rename to plugins/azure/skills/microsoft-foundry/version.json diff --git a/plugin/skills/python-appservice-deploy/SKILL.md b/plugins/azure/skills/python-appservice-deploy/SKILL.md similarity index 100% rename from plugin/skills/python-appservice-deploy/SKILL.md rename to plugins/azure/skills/python-appservice-deploy/SKILL.md diff --git a/plugin/skills/python-appservice-deploy/references/create-app.md b/plugins/azure/skills/python-appservice-deploy/references/create-app.md similarity index 100% rename from plugin/skills/python-appservice-deploy/references/create-app.md rename to plugins/azure/skills/python-appservice-deploy/references/create-app.md diff --git a/plugin/skills/python-appservice-deploy/references/deploy-azcli.md b/plugins/azure/skills/python-appservice-deploy/references/deploy-azcli.md similarity index 100% rename from plugin/skills/python-appservice-deploy/references/deploy-azcli.md rename to plugins/azure/skills/python-appservice-deploy/references/deploy-azcli.md diff --git a/plugin/skills/python-appservice-deploy/references/deploy-azd.md b/plugins/azure/skills/python-appservice-deploy/references/deploy-azd.md similarity index 100% rename from plugin/skills/python-appservice-deploy/references/deploy-azd.md rename to plugins/azure/skills/python-appservice-deploy/references/deploy-azd.md diff --git a/plugin/skills/python-appservice-deploy/references/detect.md b/plugins/azure/skills/python-appservice-deploy/references/detect.md similarity index 100% rename from plugin/skills/python-appservice-deploy/references/detect.md rename to plugins/azure/skills/python-appservice-deploy/references/detect.md diff --git a/plugin/skills/python-appservice-deploy/references/errors.md b/plugins/azure/skills/python-appservice-deploy/references/errors.md similarity index 100% rename from plugin/skills/python-appservice-deploy/references/errors.md rename to plugins/azure/skills/python-appservice-deploy/references/errors.md diff --git a/plugin/skills/python-appservice-deploy/references/post-deploy-message.md b/plugins/azure/skills/python-appservice-deploy/references/post-deploy-message.md similarity index 100% rename from plugin/skills/python-appservice-deploy/references/post-deploy-message.md rename to plugins/azure/skills/python-appservice-deploy/references/post-deploy-message.md diff --git a/plugin/skills/python-appservice-deploy/references/startup-commands.md b/plugins/azure/skills/python-appservice-deploy/references/startup-commands.md similarity index 100% rename from plugin/skills/python-appservice-deploy/references/startup-commands.md rename to plugins/azure/skills/python-appservice-deploy/references/startup-commands.md diff --git a/plugin/skills/python-appservice-deploy/references/transient-retry.md b/plugins/azure/skills/python-appservice-deploy/references/transient-retry.md similarity index 100% rename from plugin/skills/python-appservice-deploy/references/transient-retry.md rename to plugins/azure/skills/python-appservice-deploy/references/transient-retry.md diff --git a/plugin/skills/python-appservice-deploy/scripts/generate-app-name.ps1 b/plugins/azure/skills/python-appservice-deploy/scripts/generate-app-name.ps1 similarity index 100% rename from plugin/skills/python-appservice-deploy/scripts/generate-app-name.ps1 rename to plugins/azure/skills/python-appservice-deploy/scripts/generate-app-name.ps1 diff --git a/plugin/skills/python-appservice-deploy/scripts/generate-app-name.sh b/plugins/azure/skills/python-appservice-deploy/scripts/generate-app-name.sh similarity index 100% rename from plugin/skills/python-appservice-deploy/scripts/generate-app-name.sh rename to plugins/azure/skills/python-appservice-deploy/scripts/generate-app-name.sh diff --git a/plugin/skills/python-appservice-deploy/scripts/retry-az-create.ps1 b/plugins/azure/skills/python-appservice-deploy/scripts/retry-az-create.ps1 similarity index 100% rename from plugin/skills/python-appservice-deploy/scripts/retry-az-create.ps1 rename to plugins/azure/skills/python-appservice-deploy/scripts/retry-az-create.ps1 diff --git a/plugin/skills/python-appservice-deploy/scripts/retry-az-create.sh b/plugins/azure/skills/python-appservice-deploy/scripts/retry-az-create.sh similarity index 100% rename from plugin/skills/python-appservice-deploy/scripts/retry-az-create.sh rename to plugins/azure/skills/python-appservice-deploy/scripts/retry-az-create.sh diff --git a/plugin/skills/python-appservice-deploy/version.json b/plugins/azure/skills/python-appservice-deploy/version.json similarity index 100% rename from plugin/skills/python-appservice-deploy/version.json rename to plugins/azure/skills/python-appservice-deploy/version.json diff --git a/plugin/version.json b/plugins/azure/version.json similarity index 100% rename from plugin/version.json rename to plugins/azure/version.json From af20fbe8b3dc9cdf198b6527fb3758a9f98a1fcf Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Tue, 14 Jul 2026 10:02:34 -0700 Subject: [PATCH 02/53] move azure eval files --- evals/{ => azure}/airunway-aks-setup/eval.yaml | 0 evals/{ => azure}/airunway-aks-setup/fixture/kubeconfig.yaml | 0 evals/{ => azure}/appinsights-instrumentation/eval.yaml | 0 .../appinsights-instrumentation/fixture/aspnetcore-app/Program.cs | 0 .../fixture/aspnetcore-app/aspnetcore-app.csproj | 0 .../{ => azure}/appinsights-instrumentation/fixture/package.json | 0 .../appinsights-instrumentation/fixture/python-app/main.py | 0 .../fixture/python-app/requirements.txt | 0 evals/{ => azure}/azure-ai/eval.yaml | 0 evals/{ => azure}/azure-aigateway/eval.yaml | 0 evals/{ => azure}/azure-compliance/eval.yaml | 0 evals/{ => azure}/azure-compute/capacity-reservation.eval.yaml | 0 .../azure-compute/essential-machine-management.eval.yaml | 0 evals/{ => azure}/azure-compute/vm-creator.eval.yaml | 0 evals/{ => azure}/azure-compute/vm-recommender.eval.yaml | 0 evals/{ => azure}/azure-cost/eval.yaml | 0 evals/{ => azure}/azure-deploy/eval.yaml | 0 evals/{ => azure}/azure-diagnostics/eval.yaml | 0 evals/{ => azure}/azure-enterprise-infra-planner/eval.yaml | 0 evals/{ => azure}/azure-kubernetes/eval.yaml | 0 evals/{ => azure}/azure-kubernetes/fixture/deployment.yaml | 0 evals/{ => azure}/azure-kubernetes/fixture/workloads.yaml | 0 evals/{ => azure}/azure-kusto/eval.yaml | 0 evals/{ => azure}/azure-messaging/eval.yaml | 0 evals/{ => azure}/azure-prepare/e2e-eval.yaml | 0 .../azure-prepare/fixture/containerized-web/Dockerfile | 0 evals/{ => azure}/azure-prepare/fixture/containerized-web/app.js | 0 .../azure-prepare/fixture/containerized-web/package.json | 0 evals/{ => azure}/azure-prepare/fixture/discussion-board/app.js | 0 .../azure-prepare/fixture/discussion-board/package.json | 0 .../azure-prepare/fixture/functions-event/function_app.py | 0 evals/{ => azure}/azure-prepare/fixture/functions-event/host.json | 0 .../azure-prepare/fixture/functions-event/requirements.txt | 0 .../azure-prepare/fixture/functions-http/function_app.py | 0 evals/{ => azure}/azure-prepare/fixture/functions-http/host.json | 0 .../azure-prepare/fixture/functions-http/requirements.txt | 0 .../azure-prepare/fixture/functions-servicebus/function_app.py | 0 .../azure-prepare/fixture/functions-servicebus/host.json | 0 .../azure-prepare/fixture/functions-servicebus/requirements.txt | 0 .../azure-prepare/fixture/functions-timer/function_app.py | 0 evals/{ => azure}/azure-prepare/fixture/functions-timer/host.json | 0 .../azure-prepare/fixture/functions-timer/requirements.txt | 0 evals/{ => azure}/azure-prepare/fixture/nodejs-hello/Dockerfile | 0 evals/{ => azure}/azure-prepare/fixture/nodejs-hello/app.js | 0 evals/{ => azure}/azure-prepare/fixture/nodejs-hello/package.json | 0 evals/{ => azure}/azure-prepare/fixture/portfolio/index.html | 0 evals/{ => azure}/azure-prepare/fixture/social-media/app.js | 0 evals/{ => azure}/azure-prepare/fixture/social-media/package.json | 0 evals/{ => azure}/azure-prepare/fixture/todo/api/package.json | 0 evals/{ => azure}/azure-prepare/fixture/todo/api/server.js | 0 evals/{ => azure}/azure-prepare/fixture/todo/frontend/index.html | 0 .../azure-prepare/fixture/url-shortener/function_app.py | 0 evals/{ => azure}/azure-prepare/fixture/url-shortener/host.json | 0 .../azure-prepare/fixture/url-shortener/requirements.txt | 0 evals/{ => azure}/azure-prepare/fixture/whiteboard/index.html | 0 evals/{ => azure}/azure-prepare/routing-eval.yaml | 0 evals/{ => azure}/azure-quotas/eval.yaml | 0 evals/{ => azure}/azure-reliability/eval.yaml | 0 evals/{ => azure}/azure-resource-lookup/eval.yaml | 0 evals/{ => azure}/azure-resource-visualizer/eval.yaml | 0 evals/{ => azure}/azure-storage/eval.yaml | 0 evals/{ => azure}/azure-upgrade/eval.yaml | 0 evals/{ => azure}/azure-validate/e2e-eval.yaml | 0 .../azure-validate/fixture/containerized-app/Dockerfile | 0 evals/{ => azure}/azure-validate/fixture/containerized-app/app.js | 0 .../azure-validate/fixture/containerized-app/azure.yaml | 0 .../fixture/containerized-app/infra/abbreviations.json | 0 .../azure-validate/fixture/containerized-app/infra/main.bicep | 0 .../fixture/containerized-app/infra/main.parameters.json | 0 .../fixture/containerized-app/infra/resources.bicep | 0 .../azure-validate/fixture/containerized-app/package.json | 0 evals/{ => azure}/azure-validate/fixture/portfolio/azure.yaml | 0 evals/{ => azure}/azure-validate/fixture/portfolio/index.html | 0 .../{ => azure}/azure-validate/fixture/portfolio/infra/main.bicep | 0 .../azure-validate/fixture/portfolio/infra/main.parameters.json | 0 .../azure-validate/fixture/portfolio/infra/resources.bicep | 0 evals/{ => azure}/azure-validate/fixture/whiteboard/azure.yaml | 0 evals/{ => azure}/azure-validate/fixture/whiteboard/index.html | 0 .../azure-validate/fixture/whiteboard/infra/main.bicep | 0 .../azure-validate/fixture/whiteboard/infra/main.parameters.json | 0 .../azure-validate/fixture/whiteboard/infra/resources.bicep | 0 evals/{ => azure}/azure-validate/routing-eval.yaml | 0 evals/{ => azure}/entra-agent-id/eval.yaml | 0 evals/{ => azure}/entra-app-registration/eval.yaml | 0 evals/{ => azure}/microsoft-foundry/eval.yaml | 0 evals/{ => azure}/python-appservice-deploy/eval.yaml | 0 .../{ => azure}/python-appservice-deploy/fixture/flask-app/app.py | 0 .../python-appservice-deploy/fixture/flask-app/requirements.txt | 0 88 files changed, 0 insertions(+), 0 deletions(-) rename evals/{ => azure}/airunway-aks-setup/eval.yaml (100%) rename evals/{ => azure}/airunway-aks-setup/fixture/kubeconfig.yaml (100%) rename evals/{ => azure}/appinsights-instrumentation/eval.yaml (100%) rename evals/{ => azure}/appinsights-instrumentation/fixture/aspnetcore-app/Program.cs (100%) rename evals/{ => azure}/appinsights-instrumentation/fixture/aspnetcore-app/aspnetcore-app.csproj (100%) rename evals/{ => azure}/appinsights-instrumentation/fixture/package.json (100%) rename evals/{ => azure}/appinsights-instrumentation/fixture/python-app/main.py (100%) rename evals/{ => azure}/appinsights-instrumentation/fixture/python-app/requirements.txt (100%) rename evals/{ => azure}/azure-ai/eval.yaml (100%) rename evals/{ => azure}/azure-aigateway/eval.yaml (100%) rename evals/{ => azure}/azure-compliance/eval.yaml (100%) rename evals/{ => azure}/azure-compute/capacity-reservation.eval.yaml (100%) rename evals/{ => azure}/azure-compute/essential-machine-management.eval.yaml (100%) rename evals/{ => azure}/azure-compute/vm-creator.eval.yaml (100%) rename evals/{ => azure}/azure-compute/vm-recommender.eval.yaml (100%) rename evals/{ => azure}/azure-cost/eval.yaml (100%) rename evals/{ => azure}/azure-deploy/eval.yaml (100%) rename evals/{ => azure}/azure-diagnostics/eval.yaml (100%) rename evals/{ => azure}/azure-enterprise-infra-planner/eval.yaml (100%) rename evals/{ => azure}/azure-kubernetes/eval.yaml (100%) rename evals/{ => azure}/azure-kubernetes/fixture/deployment.yaml (100%) rename evals/{ => azure}/azure-kubernetes/fixture/workloads.yaml (100%) rename evals/{ => azure}/azure-kusto/eval.yaml (100%) rename evals/{ => azure}/azure-messaging/eval.yaml (100%) rename evals/{ => azure}/azure-prepare/e2e-eval.yaml (100%) rename evals/{ => azure}/azure-prepare/fixture/containerized-web/Dockerfile (100%) rename evals/{ => azure}/azure-prepare/fixture/containerized-web/app.js (100%) rename evals/{ => azure}/azure-prepare/fixture/containerized-web/package.json (100%) rename evals/{ => azure}/azure-prepare/fixture/discussion-board/app.js (100%) rename evals/{ => azure}/azure-prepare/fixture/discussion-board/package.json (100%) rename evals/{ => azure}/azure-prepare/fixture/functions-event/function_app.py (100%) rename evals/{ => azure}/azure-prepare/fixture/functions-event/host.json (100%) rename evals/{ => azure}/azure-prepare/fixture/functions-event/requirements.txt (100%) rename evals/{ => azure}/azure-prepare/fixture/functions-http/function_app.py (100%) rename evals/{ => azure}/azure-prepare/fixture/functions-http/host.json (100%) rename evals/{ => azure}/azure-prepare/fixture/functions-http/requirements.txt (100%) rename evals/{ => azure}/azure-prepare/fixture/functions-servicebus/function_app.py (100%) rename evals/{ => azure}/azure-prepare/fixture/functions-servicebus/host.json (100%) rename evals/{ => azure}/azure-prepare/fixture/functions-servicebus/requirements.txt (100%) rename evals/{ => azure}/azure-prepare/fixture/functions-timer/function_app.py (100%) rename evals/{ => azure}/azure-prepare/fixture/functions-timer/host.json (100%) rename evals/{ => azure}/azure-prepare/fixture/functions-timer/requirements.txt (100%) rename evals/{ => azure}/azure-prepare/fixture/nodejs-hello/Dockerfile (100%) rename evals/{ => azure}/azure-prepare/fixture/nodejs-hello/app.js (100%) rename evals/{ => azure}/azure-prepare/fixture/nodejs-hello/package.json (100%) rename evals/{ => azure}/azure-prepare/fixture/portfolio/index.html (100%) rename evals/{ => azure}/azure-prepare/fixture/social-media/app.js (100%) rename evals/{ => azure}/azure-prepare/fixture/social-media/package.json (100%) rename evals/{ => azure}/azure-prepare/fixture/todo/api/package.json (100%) rename evals/{ => azure}/azure-prepare/fixture/todo/api/server.js (100%) rename evals/{ => azure}/azure-prepare/fixture/todo/frontend/index.html (100%) rename evals/{ => azure}/azure-prepare/fixture/url-shortener/function_app.py (100%) rename evals/{ => azure}/azure-prepare/fixture/url-shortener/host.json (100%) rename evals/{ => azure}/azure-prepare/fixture/url-shortener/requirements.txt (100%) rename evals/{ => azure}/azure-prepare/fixture/whiteboard/index.html (100%) rename evals/{ => azure}/azure-prepare/routing-eval.yaml (100%) rename evals/{ => azure}/azure-quotas/eval.yaml (100%) rename evals/{ => azure}/azure-reliability/eval.yaml (100%) rename evals/{ => azure}/azure-resource-lookup/eval.yaml (100%) rename evals/{ => azure}/azure-resource-visualizer/eval.yaml (100%) rename evals/{ => azure}/azure-storage/eval.yaml (100%) rename evals/{ => azure}/azure-upgrade/eval.yaml (100%) rename evals/{ => azure}/azure-validate/e2e-eval.yaml (100%) rename evals/{ => azure}/azure-validate/fixture/containerized-app/Dockerfile (100%) rename evals/{ => azure}/azure-validate/fixture/containerized-app/app.js (100%) rename evals/{ => azure}/azure-validate/fixture/containerized-app/azure.yaml (100%) rename evals/{ => azure}/azure-validate/fixture/containerized-app/infra/abbreviations.json (100%) rename evals/{ => azure}/azure-validate/fixture/containerized-app/infra/main.bicep (100%) rename evals/{ => azure}/azure-validate/fixture/containerized-app/infra/main.parameters.json (100%) rename evals/{ => azure}/azure-validate/fixture/containerized-app/infra/resources.bicep (100%) rename evals/{ => azure}/azure-validate/fixture/containerized-app/package.json (100%) rename evals/{ => azure}/azure-validate/fixture/portfolio/azure.yaml (100%) rename evals/{ => azure}/azure-validate/fixture/portfolio/index.html (100%) rename evals/{ => azure}/azure-validate/fixture/portfolio/infra/main.bicep (100%) rename evals/{ => azure}/azure-validate/fixture/portfolio/infra/main.parameters.json (100%) rename evals/{ => azure}/azure-validate/fixture/portfolio/infra/resources.bicep (100%) rename evals/{ => azure}/azure-validate/fixture/whiteboard/azure.yaml (100%) rename evals/{ => azure}/azure-validate/fixture/whiteboard/index.html (100%) rename evals/{ => azure}/azure-validate/fixture/whiteboard/infra/main.bicep (100%) rename evals/{ => azure}/azure-validate/fixture/whiteboard/infra/main.parameters.json (100%) rename evals/{ => azure}/azure-validate/fixture/whiteboard/infra/resources.bicep (100%) rename evals/{ => azure}/azure-validate/routing-eval.yaml (100%) rename evals/{ => azure}/entra-agent-id/eval.yaml (100%) rename evals/{ => azure}/entra-app-registration/eval.yaml (100%) rename evals/{ => azure}/microsoft-foundry/eval.yaml (100%) rename evals/{ => azure}/python-appservice-deploy/eval.yaml (100%) rename evals/{ => azure}/python-appservice-deploy/fixture/flask-app/app.py (100%) rename evals/{ => azure}/python-appservice-deploy/fixture/flask-app/requirements.txt (100%) diff --git a/evals/airunway-aks-setup/eval.yaml b/evals/azure/airunway-aks-setup/eval.yaml similarity index 100% rename from evals/airunway-aks-setup/eval.yaml rename to evals/azure/airunway-aks-setup/eval.yaml diff --git a/evals/airunway-aks-setup/fixture/kubeconfig.yaml b/evals/azure/airunway-aks-setup/fixture/kubeconfig.yaml similarity index 100% rename from evals/airunway-aks-setup/fixture/kubeconfig.yaml rename to evals/azure/airunway-aks-setup/fixture/kubeconfig.yaml diff --git a/evals/appinsights-instrumentation/eval.yaml b/evals/azure/appinsights-instrumentation/eval.yaml similarity index 100% rename from evals/appinsights-instrumentation/eval.yaml rename to evals/azure/appinsights-instrumentation/eval.yaml diff --git a/evals/appinsights-instrumentation/fixture/aspnetcore-app/Program.cs b/evals/azure/appinsights-instrumentation/fixture/aspnetcore-app/Program.cs similarity index 100% rename from evals/appinsights-instrumentation/fixture/aspnetcore-app/Program.cs rename to evals/azure/appinsights-instrumentation/fixture/aspnetcore-app/Program.cs diff --git a/evals/appinsights-instrumentation/fixture/aspnetcore-app/aspnetcore-app.csproj b/evals/azure/appinsights-instrumentation/fixture/aspnetcore-app/aspnetcore-app.csproj similarity index 100% rename from evals/appinsights-instrumentation/fixture/aspnetcore-app/aspnetcore-app.csproj rename to evals/azure/appinsights-instrumentation/fixture/aspnetcore-app/aspnetcore-app.csproj diff --git a/evals/appinsights-instrumentation/fixture/package.json b/evals/azure/appinsights-instrumentation/fixture/package.json similarity index 100% rename from evals/appinsights-instrumentation/fixture/package.json rename to evals/azure/appinsights-instrumentation/fixture/package.json diff --git a/evals/appinsights-instrumentation/fixture/python-app/main.py b/evals/azure/appinsights-instrumentation/fixture/python-app/main.py similarity index 100% rename from evals/appinsights-instrumentation/fixture/python-app/main.py rename to evals/azure/appinsights-instrumentation/fixture/python-app/main.py diff --git a/evals/appinsights-instrumentation/fixture/python-app/requirements.txt b/evals/azure/appinsights-instrumentation/fixture/python-app/requirements.txt similarity index 100% rename from evals/appinsights-instrumentation/fixture/python-app/requirements.txt rename to evals/azure/appinsights-instrumentation/fixture/python-app/requirements.txt diff --git a/evals/azure-ai/eval.yaml b/evals/azure/azure-ai/eval.yaml similarity index 100% rename from evals/azure-ai/eval.yaml rename to evals/azure/azure-ai/eval.yaml diff --git a/evals/azure-aigateway/eval.yaml b/evals/azure/azure-aigateway/eval.yaml similarity index 100% rename from evals/azure-aigateway/eval.yaml rename to evals/azure/azure-aigateway/eval.yaml diff --git a/evals/azure-compliance/eval.yaml b/evals/azure/azure-compliance/eval.yaml similarity index 100% rename from evals/azure-compliance/eval.yaml rename to evals/azure/azure-compliance/eval.yaml diff --git a/evals/azure-compute/capacity-reservation.eval.yaml b/evals/azure/azure-compute/capacity-reservation.eval.yaml similarity index 100% rename from evals/azure-compute/capacity-reservation.eval.yaml rename to evals/azure/azure-compute/capacity-reservation.eval.yaml diff --git a/evals/azure-compute/essential-machine-management.eval.yaml b/evals/azure/azure-compute/essential-machine-management.eval.yaml similarity index 100% rename from evals/azure-compute/essential-machine-management.eval.yaml rename to evals/azure/azure-compute/essential-machine-management.eval.yaml diff --git a/evals/azure-compute/vm-creator.eval.yaml b/evals/azure/azure-compute/vm-creator.eval.yaml similarity index 100% rename from evals/azure-compute/vm-creator.eval.yaml rename to evals/azure/azure-compute/vm-creator.eval.yaml diff --git a/evals/azure-compute/vm-recommender.eval.yaml b/evals/azure/azure-compute/vm-recommender.eval.yaml similarity index 100% rename from evals/azure-compute/vm-recommender.eval.yaml rename to evals/azure/azure-compute/vm-recommender.eval.yaml diff --git a/evals/azure-cost/eval.yaml b/evals/azure/azure-cost/eval.yaml similarity index 100% rename from evals/azure-cost/eval.yaml rename to evals/azure/azure-cost/eval.yaml diff --git a/evals/azure-deploy/eval.yaml b/evals/azure/azure-deploy/eval.yaml similarity index 100% rename from evals/azure-deploy/eval.yaml rename to evals/azure/azure-deploy/eval.yaml diff --git a/evals/azure-diagnostics/eval.yaml b/evals/azure/azure-diagnostics/eval.yaml similarity index 100% rename from evals/azure-diagnostics/eval.yaml rename to evals/azure/azure-diagnostics/eval.yaml diff --git a/evals/azure-enterprise-infra-planner/eval.yaml b/evals/azure/azure-enterprise-infra-planner/eval.yaml similarity index 100% rename from evals/azure-enterprise-infra-planner/eval.yaml rename to evals/azure/azure-enterprise-infra-planner/eval.yaml diff --git a/evals/azure-kubernetes/eval.yaml b/evals/azure/azure-kubernetes/eval.yaml similarity index 100% rename from evals/azure-kubernetes/eval.yaml rename to evals/azure/azure-kubernetes/eval.yaml diff --git a/evals/azure-kubernetes/fixture/deployment.yaml b/evals/azure/azure-kubernetes/fixture/deployment.yaml similarity index 100% rename from evals/azure-kubernetes/fixture/deployment.yaml rename to evals/azure/azure-kubernetes/fixture/deployment.yaml diff --git a/evals/azure-kubernetes/fixture/workloads.yaml b/evals/azure/azure-kubernetes/fixture/workloads.yaml similarity index 100% rename from evals/azure-kubernetes/fixture/workloads.yaml rename to evals/azure/azure-kubernetes/fixture/workloads.yaml diff --git a/evals/azure-kusto/eval.yaml b/evals/azure/azure-kusto/eval.yaml similarity index 100% rename from evals/azure-kusto/eval.yaml rename to evals/azure/azure-kusto/eval.yaml diff --git a/evals/azure-messaging/eval.yaml b/evals/azure/azure-messaging/eval.yaml similarity index 100% rename from evals/azure-messaging/eval.yaml rename to evals/azure/azure-messaging/eval.yaml diff --git a/evals/azure-prepare/e2e-eval.yaml b/evals/azure/azure-prepare/e2e-eval.yaml similarity index 100% rename from evals/azure-prepare/e2e-eval.yaml rename to evals/azure/azure-prepare/e2e-eval.yaml diff --git a/evals/azure-prepare/fixture/containerized-web/Dockerfile b/evals/azure/azure-prepare/fixture/containerized-web/Dockerfile similarity index 100% rename from evals/azure-prepare/fixture/containerized-web/Dockerfile rename to evals/azure/azure-prepare/fixture/containerized-web/Dockerfile diff --git a/evals/azure-prepare/fixture/containerized-web/app.js b/evals/azure/azure-prepare/fixture/containerized-web/app.js similarity index 100% rename from evals/azure-prepare/fixture/containerized-web/app.js rename to evals/azure/azure-prepare/fixture/containerized-web/app.js diff --git a/evals/azure-prepare/fixture/containerized-web/package.json b/evals/azure/azure-prepare/fixture/containerized-web/package.json similarity index 100% rename from evals/azure-prepare/fixture/containerized-web/package.json rename to evals/azure/azure-prepare/fixture/containerized-web/package.json diff --git a/evals/azure-prepare/fixture/discussion-board/app.js b/evals/azure/azure-prepare/fixture/discussion-board/app.js similarity index 100% rename from evals/azure-prepare/fixture/discussion-board/app.js rename to evals/azure/azure-prepare/fixture/discussion-board/app.js diff --git a/evals/azure-prepare/fixture/discussion-board/package.json b/evals/azure/azure-prepare/fixture/discussion-board/package.json similarity index 100% rename from evals/azure-prepare/fixture/discussion-board/package.json rename to evals/azure/azure-prepare/fixture/discussion-board/package.json diff --git a/evals/azure-prepare/fixture/functions-event/function_app.py b/evals/azure/azure-prepare/fixture/functions-event/function_app.py similarity index 100% rename from evals/azure-prepare/fixture/functions-event/function_app.py rename to evals/azure/azure-prepare/fixture/functions-event/function_app.py diff --git a/evals/azure-prepare/fixture/functions-event/host.json b/evals/azure/azure-prepare/fixture/functions-event/host.json similarity index 100% rename from evals/azure-prepare/fixture/functions-event/host.json rename to evals/azure/azure-prepare/fixture/functions-event/host.json diff --git a/evals/azure-prepare/fixture/functions-event/requirements.txt b/evals/azure/azure-prepare/fixture/functions-event/requirements.txt similarity index 100% rename from evals/azure-prepare/fixture/functions-event/requirements.txt rename to evals/azure/azure-prepare/fixture/functions-event/requirements.txt diff --git a/evals/azure-prepare/fixture/functions-http/function_app.py b/evals/azure/azure-prepare/fixture/functions-http/function_app.py similarity index 100% rename from evals/azure-prepare/fixture/functions-http/function_app.py rename to evals/azure/azure-prepare/fixture/functions-http/function_app.py diff --git a/evals/azure-prepare/fixture/functions-http/host.json b/evals/azure/azure-prepare/fixture/functions-http/host.json similarity index 100% rename from evals/azure-prepare/fixture/functions-http/host.json rename to evals/azure/azure-prepare/fixture/functions-http/host.json diff --git a/evals/azure-prepare/fixture/functions-http/requirements.txt b/evals/azure/azure-prepare/fixture/functions-http/requirements.txt similarity index 100% rename from evals/azure-prepare/fixture/functions-http/requirements.txt rename to evals/azure/azure-prepare/fixture/functions-http/requirements.txt diff --git a/evals/azure-prepare/fixture/functions-servicebus/function_app.py b/evals/azure/azure-prepare/fixture/functions-servicebus/function_app.py similarity index 100% rename from evals/azure-prepare/fixture/functions-servicebus/function_app.py rename to evals/azure/azure-prepare/fixture/functions-servicebus/function_app.py diff --git a/evals/azure-prepare/fixture/functions-servicebus/host.json b/evals/azure/azure-prepare/fixture/functions-servicebus/host.json similarity index 100% rename from evals/azure-prepare/fixture/functions-servicebus/host.json rename to evals/azure/azure-prepare/fixture/functions-servicebus/host.json diff --git a/evals/azure-prepare/fixture/functions-servicebus/requirements.txt b/evals/azure/azure-prepare/fixture/functions-servicebus/requirements.txt similarity index 100% rename from evals/azure-prepare/fixture/functions-servicebus/requirements.txt rename to evals/azure/azure-prepare/fixture/functions-servicebus/requirements.txt diff --git a/evals/azure-prepare/fixture/functions-timer/function_app.py b/evals/azure/azure-prepare/fixture/functions-timer/function_app.py similarity index 100% rename from evals/azure-prepare/fixture/functions-timer/function_app.py rename to evals/azure/azure-prepare/fixture/functions-timer/function_app.py diff --git a/evals/azure-prepare/fixture/functions-timer/host.json b/evals/azure/azure-prepare/fixture/functions-timer/host.json similarity index 100% rename from evals/azure-prepare/fixture/functions-timer/host.json rename to evals/azure/azure-prepare/fixture/functions-timer/host.json diff --git a/evals/azure-prepare/fixture/functions-timer/requirements.txt b/evals/azure/azure-prepare/fixture/functions-timer/requirements.txt similarity index 100% rename from evals/azure-prepare/fixture/functions-timer/requirements.txt rename to evals/azure/azure-prepare/fixture/functions-timer/requirements.txt diff --git a/evals/azure-prepare/fixture/nodejs-hello/Dockerfile b/evals/azure/azure-prepare/fixture/nodejs-hello/Dockerfile similarity index 100% rename from evals/azure-prepare/fixture/nodejs-hello/Dockerfile rename to evals/azure/azure-prepare/fixture/nodejs-hello/Dockerfile diff --git a/evals/azure-prepare/fixture/nodejs-hello/app.js b/evals/azure/azure-prepare/fixture/nodejs-hello/app.js similarity index 100% rename from evals/azure-prepare/fixture/nodejs-hello/app.js rename to evals/azure/azure-prepare/fixture/nodejs-hello/app.js diff --git a/evals/azure-prepare/fixture/nodejs-hello/package.json b/evals/azure/azure-prepare/fixture/nodejs-hello/package.json similarity index 100% rename from evals/azure-prepare/fixture/nodejs-hello/package.json rename to evals/azure/azure-prepare/fixture/nodejs-hello/package.json diff --git a/evals/azure-prepare/fixture/portfolio/index.html b/evals/azure/azure-prepare/fixture/portfolio/index.html similarity index 100% rename from evals/azure-prepare/fixture/portfolio/index.html rename to evals/azure/azure-prepare/fixture/portfolio/index.html diff --git a/evals/azure-prepare/fixture/social-media/app.js b/evals/azure/azure-prepare/fixture/social-media/app.js similarity index 100% rename from evals/azure-prepare/fixture/social-media/app.js rename to evals/azure/azure-prepare/fixture/social-media/app.js diff --git a/evals/azure-prepare/fixture/social-media/package.json b/evals/azure/azure-prepare/fixture/social-media/package.json similarity index 100% rename from evals/azure-prepare/fixture/social-media/package.json rename to evals/azure/azure-prepare/fixture/social-media/package.json diff --git a/evals/azure-prepare/fixture/todo/api/package.json b/evals/azure/azure-prepare/fixture/todo/api/package.json similarity index 100% rename from evals/azure-prepare/fixture/todo/api/package.json rename to evals/azure/azure-prepare/fixture/todo/api/package.json diff --git a/evals/azure-prepare/fixture/todo/api/server.js b/evals/azure/azure-prepare/fixture/todo/api/server.js similarity index 100% rename from evals/azure-prepare/fixture/todo/api/server.js rename to evals/azure/azure-prepare/fixture/todo/api/server.js diff --git a/evals/azure-prepare/fixture/todo/frontend/index.html b/evals/azure/azure-prepare/fixture/todo/frontend/index.html similarity index 100% rename from evals/azure-prepare/fixture/todo/frontend/index.html rename to evals/azure/azure-prepare/fixture/todo/frontend/index.html diff --git a/evals/azure-prepare/fixture/url-shortener/function_app.py b/evals/azure/azure-prepare/fixture/url-shortener/function_app.py similarity index 100% rename from evals/azure-prepare/fixture/url-shortener/function_app.py rename to evals/azure/azure-prepare/fixture/url-shortener/function_app.py diff --git a/evals/azure-prepare/fixture/url-shortener/host.json b/evals/azure/azure-prepare/fixture/url-shortener/host.json similarity index 100% rename from evals/azure-prepare/fixture/url-shortener/host.json rename to evals/azure/azure-prepare/fixture/url-shortener/host.json diff --git a/evals/azure-prepare/fixture/url-shortener/requirements.txt b/evals/azure/azure-prepare/fixture/url-shortener/requirements.txt similarity index 100% rename from evals/azure-prepare/fixture/url-shortener/requirements.txt rename to evals/azure/azure-prepare/fixture/url-shortener/requirements.txt diff --git a/evals/azure-prepare/fixture/whiteboard/index.html b/evals/azure/azure-prepare/fixture/whiteboard/index.html similarity index 100% rename from evals/azure-prepare/fixture/whiteboard/index.html rename to evals/azure/azure-prepare/fixture/whiteboard/index.html diff --git a/evals/azure-prepare/routing-eval.yaml b/evals/azure/azure-prepare/routing-eval.yaml similarity index 100% rename from evals/azure-prepare/routing-eval.yaml rename to evals/azure/azure-prepare/routing-eval.yaml diff --git a/evals/azure-quotas/eval.yaml b/evals/azure/azure-quotas/eval.yaml similarity index 100% rename from evals/azure-quotas/eval.yaml rename to evals/azure/azure-quotas/eval.yaml diff --git a/evals/azure-reliability/eval.yaml b/evals/azure/azure-reliability/eval.yaml similarity index 100% rename from evals/azure-reliability/eval.yaml rename to evals/azure/azure-reliability/eval.yaml diff --git a/evals/azure-resource-lookup/eval.yaml b/evals/azure/azure-resource-lookup/eval.yaml similarity index 100% rename from evals/azure-resource-lookup/eval.yaml rename to evals/azure/azure-resource-lookup/eval.yaml diff --git a/evals/azure-resource-visualizer/eval.yaml b/evals/azure/azure-resource-visualizer/eval.yaml similarity index 100% rename from evals/azure-resource-visualizer/eval.yaml rename to evals/azure/azure-resource-visualizer/eval.yaml diff --git a/evals/azure-storage/eval.yaml b/evals/azure/azure-storage/eval.yaml similarity index 100% rename from evals/azure-storage/eval.yaml rename to evals/azure/azure-storage/eval.yaml diff --git a/evals/azure-upgrade/eval.yaml b/evals/azure/azure-upgrade/eval.yaml similarity index 100% rename from evals/azure-upgrade/eval.yaml rename to evals/azure/azure-upgrade/eval.yaml diff --git a/evals/azure-validate/e2e-eval.yaml b/evals/azure/azure-validate/e2e-eval.yaml similarity index 100% rename from evals/azure-validate/e2e-eval.yaml rename to evals/azure/azure-validate/e2e-eval.yaml diff --git a/evals/azure-validate/fixture/containerized-app/Dockerfile b/evals/azure/azure-validate/fixture/containerized-app/Dockerfile similarity index 100% rename from evals/azure-validate/fixture/containerized-app/Dockerfile rename to evals/azure/azure-validate/fixture/containerized-app/Dockerfile diff --git a/evals/azure-validate/fixture/containerized-app/app.js b/evals/azure/azure-validate/fixture/containerized-app/app.js similarity index 100% rename from evals/azure-validate/fixture/containerized-app/app.js rename to evals/azure/azure-validate/fixture/containerized-app/app.js diff --git a/evals/azure-validate/fixture/containerized-app/azure.yaml b/evals/azure/azure-validate/fixture/containerized-app/azure.yaml similarity index 100% rename from evals/azure-validate/fixture/containerized-app/azure.yaml rename to evals/azure/azure-validate/fixture/containerized-app/azure.yaml diff --git a/evals/azure-validate/fixture/containerized-app/infra/abbreviations.json b/evals/azure/azure-validate/fixture/containerized-app/infra/abbreviations.json similarity index 100% rename from evals/azure-validate/fixture/containerized-app/infra/abbreviations.json rename to evals/azure/azure-validate/fixture/containerized-app/infra/abbreviations.json diff --git a/evals/azure-validate/fixture/containerized-app/infra/main.bicep b/evals/azure/azure-validate/fixture/containerized-app/infra/main.bicep similarity index 100% rename from evals/azure-validate/fixture/containerized-app/infra/main.bicep rename to evals/azure/azure-validate/fixture/containerized-app/infra/main.bicep diff --git a/evals/azure-validate/fixture/containerized-app/infra/main.parameters.json b/evals/azure/azure-validate/fixture/containerized-app/infra/main.parameters.json similarity index 100% rename from evals/azure-validate/fixture/containerized-app/infra/main.parameters.json rename to evals/azure/azure-validate/fixture/containerized-app/infra/main.parameters.json diff --git a/evals/azure-validate/fixture/containerized-app/infra/resources.bicep b/evals/azure/azure-validate/fixture/containerized-app/infra/resources.bicep similarity index 100% rename from evals/azure-validate/fixture/containerized-app/infra/resources.bicep rename to evals/azure/azure-validate/fixture/containerized-app/infra/resources.bicep diff --git a/evals/azure-validate/fixture/containerized-app/package.json b/evals/azure/azure-validate/fixture/containerized-app/package.json similarity index 100% rename from evals/azure-validate/fixture/containerized-app/package.json rename to evals/azure/azure-validate/fixture/containerized-app/package.json diff --git a/evals/azure-validate/fixture/portfolio/azure.yaml b/evals/azure/azure-validate/fixture/portfolio/azure.yaml similarity index 100% rename from evals/azure-validate/fixture/portfolio/azure.yaml rename to evals/azure/azure-validate/fixture/portfolio/azure.yaml diff --git a/evals/azure-validate/fixture/portfolio/index.html b/evals/azure/azure-validate/fixture/portfolio/index.html similarity index 100% rename from evals/azure-validate/fixture/portfolio/index.html rename to evals/azure/azure-validate/fixture/portfolio/index.html diff --git a/evals/azure-validate/fixture/portfolio/infra/main.bicep b/evals/azure/azure-validate/fixture/portfolio/infra/main.bicep similarity index 100% rename from evals/azure-validate/fixture/portfolio/infra/main.bicep rename to evals/azure/azure-validate/fixture/portfolio/infra/main.bicep diff --git a/evals/azure-validate/fixture/portfolio/infra/main.parameters.json b/evals/azure/azure-validate/fixture/portfolio/infra/main.parameters.json similarity index 100% rename from evals/azure-validate/fixture/portfolio/infra/main.parameters.json rename to evals/azure/azure-validate/fixture/portfolio/infra/main.parameters.json diff --git a/evals/azure-validate/fixture/portfolio/infra/resources.bicep b/evals/azure/azure-validate/fixture/portfolio/infra/resources.bicep similarity index 100% rename from evals/azure-validate/fixture/portfolio/infra/resources.bicep rename to evals/azure/azure-validate/fixture/portfolio/infra/resources.bicep diff --git a/evals/azure-validate/fixture/whiteboard/azure.yaml b/evals/azure/azure-validate/fixture/whiteboard/azure.yaml similarity index 100% rename from evals/azure-validate/fixture/whiteboard/azure.yaml rename to evals/azure/azure-validate/fixture/whiteboard/azure.yaml diff --git a/evals/azure-validate/fixture/whiteboard/index.html b/evals/azure/azure-validate/fixture/whiteboard/index.html similarity index 100% rename from evals/azure-validate/fixture/whiteboard/index.html rename to evals/azure/azure-validate/fixture/whiteboard/index.html diff --git a/evals/azure-validate/fixture/whiteboard/infra/main.bicep b/evals/azure/azure-validate/fixture/whiteboard/infra/main.bicep similarity index 100% rename from evals/azure-validate/fixture/whiteboard/infra/main.bicep rename to evals/azure/azure-validate/fixture/whiteboard/infra/main.bicep diff --git a/evals/azure-validate/fixture/whiteboard/infra/main.parameters.json b/evals/azure/azure-validate/fixture/whiteboard/infra/main.parameters.json similarity index 100% rename from evals/azure-validate/fixture/whiteboard/infra/main.parameters.json rename to evals/azure/azure-validate/fixture/whiteboard/infra/main.parameters.json diff --git a/evals/azure-validate/fixture/whiteboard/infra/resources.bicep b/evals/azure/azure-validate/fixture/whiteboard/infra/resources.bicep similarity index 100% rename from evals/azure-validate/fixture/whiteboard/infra/resources.bicep rename to evals/azure/azure-validate/fixture/whiteboard/infra/resources.bicep diff --git a/evals/azure-validate/routing-eval.yaml b/evals/azure/azure-validate/routing-eval.yaml similarity index 100% rename from evals/azure-validate/routing-eval.yaml rename to evals/azure/azure-validate/routing-eval.yaml diff --git a/evals/entra-agent-id/eval.yaml b/evals/azure/entra-agent-id/eval.yaml similarity index 100% rename from evals/entra-agent-id/eval.yaml rename to evals/azure/entra-agent-id/eval.yaml diff --git a/evals/entra-app-registration/eval.yaml b/evals/azure/entra-app-registration/eval.yaml similarity index 100% rename from evals/entra-app-registration/eval.yaml rename to evals/azure/entra-app-registration/eval.yaml diff --git a/evals/microsoft-foundry/eval.yaml b/evals/azure/microsoft-foundry/eval.yaml similarity index 100% rename from evals/microsoft-foundry/eval.yaml rename to evals/azure/microsoft-foundry/eval.yaml diff --git a/evals/python-appservice-deploy/eval.yaml b/evals/azure/python-appservice-deploy/eval.yaml similarity index 100% rename from evals/python-appservice-deploy/eval.yaml rename to evals/azure/python-appservice-deploy/eval.yaml diff --git a/evals/python-appservice-deploy/fixture/flask-app/app.py b/evals/azure/python-appservice-deploy/fixture/flask-app/app.py similarity index 100% rename from evals/python-appservice-deploy/fixture/flask-app/app.py rename to evals/azure/python-appservice-deploy/fixture/flask-app/app.py diff --git a/evals/python-appservice-deploy/fixture/flask-app/requirements.txt b/evals/azure/python-appservice-deploy/fixture/flask-app/requirements.txt similarity index 100% rename from evals/python-appservice-deploy/fixture/flask-app/requirements.txt rename to evals/azure/python-appservice-deploy/fixture/flask-app/requirements.txt From 7a19fc4fb4cae2d050791500c59c929ff32ebac3 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Tue, 14 Jul 2026 10:33:40 -0700 Subject: [PATCH 03/53] 2nd plugin for testing adapt build script --- gulpfile.ts | 103 ++++++++++++------- plugins/cat/.claude-plugin/plugin.json | 17 ++++ plugins/cat/.cursor-plugin/plugin.json | 18 ++++ plugins/cat/.mcp.json | 3 + plugins/cat/.plugin/plugin.json | 17 ++++ plugins/cat/LICENSE | 21 ++++ plugins/cat/README.md | 131 +++++++++++++++++++++++++ plugins/cat/assets/azure-logo.svg | 23 +++++ plugins/cat/skills/cats/SKILL.md | 10 ++ plugins/cat/version.json | 5 + 10 files changed, 314 insertions(+), 34 deletions(-) create mode 100644 plugins/cat/.claude-plugin/plugin.json create mode 100644 plugins/cat/.cursor-plugin/plugin.json create mode 100644 plugins/cat/.mcp.json create mode 100644 plugins/cat/.plugin/plugin.json create mode 100644 plugins/cat/LICENSE create mode 100644 plugins/cat/README.md create mode 100644 plugins/cat/assets/azure-logo.svg create mode 100644 plugins/cat/skills/cats/SKILL.md create mode 100644 plugins/cat/version.json diff --git a/gulpfile.ts b/gulpfile.ts index 4d3071c5c..20fe2bfbf 100644 --- a/gulpfile.ts +++ b/gulpfile.ts @@ -4,7 +4,7 @@ import * as nbgv from "nerdbank-gitversioning"; import * as path from "path"; import log from "fancy-log"; import { execSync } from "child_process"; -import { mkdirSync, readFileSync, rmSync, writeFileSync } from "fs"; +import { mkdirSync, readdirSync, readFileSync, rmSync, writeFileSync } from "fs"; import Vinyl = require("vinyl"); // Matches top-level skill files like skills/azure-deploy/SKILL.md but not nested ones. @@ -18,7 +18,7 @@ const PLUGIN_JSON_RE = /^\.(?:plugin|cursor-plugin|claude-plugin)[\\/]plugin\.js * calls `nbgv.getVersion()` against that skill's source directory, which * contains its own `version.json` with `pathFilters: ["."]`. */ -function stampSkillVersions() { +function stampSkillVersions(plugin: string) { return new Transform({ objectMode: true, async transform(file: Vinyl, _encoding, callback) { @@ -29,7 +29,7 @@ function stampSkillVersions() { try { const skillName = file.relative.split(/[/\\]/)[1]; - const sourceSkillDir = path.resolve("plugin/skills", skillName); + const sourceSkillDir = path.resolve(`plugins/${plugin}/skills`, skillName); const versionInfo = await nbgv.getVersion(sourceSkillDir); const version = versionInfo.simpleVersion; @@ -46,7 +46,7 @@ function stampSkillVersions() { file.contents = Buffer.from( content.replace(versionPlaceholderPattern, `$1${version}$2`) ); - log(`setting skill version: skills/${skillName} ${version}`); + log(`setting skill version: plugins/${plugin}/skills/${skillName} ${version}`); } catch (err) { callback(err as Error); return; @@ -62,7 +62,7 @@ function stampSkillVersions() { * `.claude-plugin/` with a shared NBGV version derived from `plugin/version.json`. * The version is fetched once on the first matching file and cached for the rest. */ -function stampPluginVersions() { +function stampPluginVersions(plugin: string) { let pluginVersionPromise: Promise | null = null; return new Transform({ @@ -76,7 +76,7 @@ function stampPluginVersions() { try { if (!pluginVersionPromise) { pluginVersionPromise = nbgv - .getVersion(path.resolve("plugin")) + .getVersion(path.resolve(`plugins/${plugin}`)) .then((v) => v.simpleVersion); } const version = await pluginVersionPromise; @@ -105,25 +105,56 @@ function stampPluginVersions() { }); } -function build() { - rmSync("output", { recursive: true, force: true }); - const pipeline = src(["plugin/**/*", "!plugin/**/version.json", "!plugin/CHANGELOG.md"], { dot: true, encoding: false }) - .pipe(stampSkillVersions()) - .pipe(stampPluginVersions()) - .pipe(dest("output")); - - pipeline.on("end", () => { - try { - generateChangelog(); - } catch (err) { - const error = - err instanceof Error ? err : new Error(String(err)); - log.error("Failed to generate CHANGELOG.md after writing output/.", error); - throw error; - } +function getPluginNames(): string[] { + return readdirSync("plugins", { withFileTypes: true }) + .filter((entry) => entry.isDirectory()) + .map((entry) => entry.name) + .sort(); +} + +function buildPlugin(plugin: string): Promise { + return new Promise((resolve, reject) => { + const pluginSourceDir = path.join("plugins", plugin); + const pluginOutputDir = path.join("output", plugin); + + const pipeline = src( + [ + `${pluginSourceDir}/**/*`, + `!${pluginSourceDir}/**/version.json`, + `!${pluginSourceDir}/CHANGELOG.md`, + ], + { dot: true, encoding: false, base: pluginSourceDir } + ) + .pipe(stampSkillVersions(plugin)) + .pipe(stampPluginVersions(plugin)) + .pipe(dest(pluginOutputDir)); + + pipeline.on("error", (err) => reject(err)); + pipeline.on("end", () => { + try { + generateChangelog(plugin); + resolve(); + } catch (err) { + const error = err instanceof Error ? err : new Error(String(err)); + log.error(`Failed to generate CHANGELOG.md for plugins/${plugin}.`, error); + reject(error); + } + }); }); +} - return pipeline; +async function build() { + rmSync("output", { recursive: true, force: true }); + + const plugins = getPluginNames(); + if (plugins.length === 0) { + log.warn("No plugin directories found under plugins/; skipping build."); + return; + } + + for (const plugin of plugins) { + await buildPlugin(plugin); + } } /** @@ -132,32 +163,35 @@ function build() { * Each version corresponds to a single first-parent commit touching plugin/ * since the NBGV baseline commit (when plugin/version.json was introduced). */ -function generateChangelog(): void { +function generateChangelog(plugin: string): void { + const pluginDir = path.join("plugins", plugin); + const versionJson = JSON.parse( - readFileSync("plugin/version.json", "utf-8") + readFileSync(path.join(pluginDir, "version.json"), "utf-8") ); const majorMinor = versionJson.version as string; - // Find the commit that introduced plugin/version.json (the NBGV baseline). + // Find the commit that introduced plugins//version.json (the NBGV baseline). + const versionJsonPath = `${pluginDir}/version.json`; const baselineCommit = execSync( - "git log --diff-filter=A --format=%H --first-parent -- plugin/version.json", + `git log --diff-filter=A --format=%H --first-parent -- ${versionJsonPath}`, { encoding: "utf-8" } ).trim(); if (!baselineCommit) { - log.warn("Could not find baseline commit for plugin/version.json; skipping changelog generation."); + log.warn(`Could not find baseline commit for ${versionJsonPath}; skipping changelog generation.`); return; } - // Enumerate first-parent commits touching plugin/ from baseline (inclusive) to HEAD. + // Enumerate first-parent commits touching plugins// from baseline (inclusive) to HEAD. // We include the baseline itself by using baseline~1..HEAD (or just --ancestry-path from baseline). const logOutput = execSync( - `git log --first-parent --format=%H%x00%s --reverse ${baselineCommit}~1..HEAD -- plugin/`, + `git log --first-parent --format=%H%x00%s --reverse ${baselineCommit}~1..HEAD -- ${pluginDir}/`, { encoding: "utf-8" } ).trim(); if (!logOutput) { - log.warn("No commits found touching plugin/; skipping changelog generation."); + log.warn(`No commits found touching ${pluginDir}/; skipping changelog generation.`); return; } @@ -194,9 +228,10 @@ function generateChangelog(): void { content += `\n## ${version}\n\n- ${subject}\n`; } - mkdirSync("output", { recursive: true }); - writeFileSync("output/CHANGELOG.md", content, "utf-8"); - log(`generated CHANGELOG.md with ${filtered.length} entries`); + const outputDir = path.join("output", plugin); + mkdirSync(outputDir, { recursive: true }); + writeFileSync(path.join(outputDir, "CHANGELOG.md"), content, "utf-8"); + log(`generated CHANGELOG.md for plugins/${plugin} with ${filtered.length} entries`); } export default build; diff --git a/plugins/cat/.claude-plugin/plugin.json b/plugins/cat/.claude-plugin/plugin.json new file mode 100644 index 000000000..743da92eb --- /dev/null +++ b/plugins/cat/.claude-plugin/plugin.json @@ -0,0 +1,17 @@ +{ + "name": "cats", + "description": "A test plugin as the 2nd plugin in azure-skills marketplace", + "version": "0.0.0-placeholder", + "author": { + "name": "Microsoft", + "url": "https://www.microsoft.com" + }, + "homepage": "https://github.com/microsoft/azure-skills", + "repository": "https://github.com/microsoft/azure-skills", + "license": "MIT", + "keywords": [ + "cats" + ], + "skills": "./skills/", + "mcpServers": "./.mcp.json" +} \ No newline at end of file diff --git a/plugins/cat/.cursor-plugin/plugin.json b/plugins/cat/.cursor-plugin/plugin.json new file mode 100644 index 000000000..30348ed86 --- /dev/null +++ b/plugins/cat/.cursor-plugin/plugin.json @@ -0,0 +1,18 @@ +{ + "name": "cats", + "description": "A test plugin as the 2nd plugin in azure-skills marketplace.", + "version": "0.0.0-placeholder", + "author": { + "name": "Microsoft", + "url": "https://www.microsoft.com" + }, + "homepage": "https://github.com/microsoft/azure-skills", + "repository": "https://github.com/microsoft/azure-skills", + "license": "MIT", + "keywords": [ + "cats" + ], + "logo": "./assets/azure-logo.svg", + "skills": "./skills/", + "mcpServers": "./.mcp.json" +} \ No newline at end of file diff --git a/plugins/cat/.mcp.json b/plugins/cat/.mcp.json new file mode 100644 index 000000000..700113020 --- /dev/null +++ b/plugins/cat/.mcp.json @@ -0,0 +1,3 @@ +{ + "mcpServers": {} +} \ No newline at end of file diff --git a/plugins/cat/.plugin/plugin.json b/plugins/cat/.plugin/plugin.json new file mode 100644 index 000000000..b99e2da6d --- /dev/null +++ b/plugins/cat/.plugin/plugin.json @@ -0,0 +1,17 @@ +{ + "name": "cats", + "description": "A test plugin as the 2nd plugin in azure-skills marketplace.", + "version": "0.0.0-placeholder", + "author": { + "name": "Microsoft", + "url": "https://www.microsoft.com" + }, + "homepage": "https://github.com/microsoft/azure-skills", + "repository": "https://github.com/microsoft/azure-skills", + "license": "MIT", + "keywords": [ + "cats" + ], + "skills": "./skills/", + "mcpServers": "./.mcp.json" +} \ No newline at end of file diff --git a/plugins/cat/LICENSE b/plugins/cat/LICENSE new file mode 100644 index 000000000..356b112bc --- /dev/null +++ b/plugins/cat/LICENSE @@ -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 \ No newline at end of file diff --git a/plugins/cat/README.md b/plugins/cat/README.md new file mode 100644 index 000000000..a64a287e5 --- /dev/null +++ b/plugins/cat/README.md @@ -0,0 +1,131 @@ +# Azure + +[Microsoft Azure](https://azure.microsoft.com) is Microsoft's cloud computing platform. This plugin connects [GitHub Copilot CLI](https://github.com/github/copilot-cli) or Claude Code to your Azure account, letting you manage resources, deploy applications, and monitor services directly from your development environment. + +## Setup + +### 1. Create an Azure Account + +Sign up at [azure.microsoft.com](https://azure.microsoft.com) or use your existing Azure account. + +### 2. Install Node.js and NPM + +The Azure MCP Server runs as an NPM package. Ensure you have Node.js 18 or later installed: + +- Download from [nodejs.org](https://nodejs.org) +- Or use a version manager like [nvm](https://github.com/nvm-sh/nvm) + +### 3. Authenticate to Azure + +The Azure MCP Server uses the Azure Identity SDK for authentication. You can authenticate using any of these methods: + +#### Option A: Azure CLI (Recommended) +1. Install [Azure CLI](https://docs.microsoft.com/cli/azure/install-azure-cli) +2. Run `az login` to authenticate +3. The MCP server will automatically use your CLI credentials + +#### Option B: Environment Variables +Set Azure service principal credentials: + +**Bash/Zsh:** +```bash +export AZURE_TENANT_ID="your-tenant-id" +export AZURE_CLIENT_ID="your-client-id" +export AZURE_CLIENT_SECRET="your-client-secret" +``` + +**PowerShell:** +```powershell +$env:AZURE_TENANT_ID = "your-tenant-id" +$env:AZURE_CLIENT_ID = "your-client-id" +$env:AZURE_CLIENT_SECRET = "your-client-secret" +``` + +#### Option C: Managed Identity +When running on Azure resources (VMs, Container Apps, etc.), the server automatically uses managed identity. + +For more authentication options, see the [Azure Identity documentation](https://learn.microsoft.com/azure/developer/azure-mcp-server/). + +### 4. Install the Plugins +```bash +# Add the repo as a plugin marketplace +/plugin marketplace add microsoft/azure-skills + +# Pull in the Azure plugin +/plugin install azure@azure-skills +``` + +## Available Tools + +The Azure MCP Server provides tools for 40+ Azure services: + +### AI & Machine Learning +- Microsoft Foundry (AI models, deployments, knowledge indexes) +- Azure AI Search (search and vector database) +- Azure AI Services Speech (speech-to-text, text-to-speech) + +### Compute & Containers +- Azure App Service, Container Apps, Azure Kubernetes Service (AKS) +- Azure Functions, Virtual Desktop + +### Storage & Databases +- Azure Storage (Blob, File Sync) +- Azure SQL Database, Cosmos DB +- Azure Database for MySQL & PostgreSQL + +### Security & Networking +- Azure Key Vault (secrets, keys, certificates) +- Azure RBAC (access control) +- Azure Confidential Ledger + +### DevOps & Management +- Resource Groups, Subscriptions +- Azure Monitor (logging, metrics) +- Azure CLI command generation +- Bicep templates + +### Messaging & Communication +- Azure Communication Services (SMS, email) +- Azure Service Bus, Event Grid + +For the complete list of 40+ services, see the [official documentation](https://learn.microsoft.com/azure/developer/azure-mcp-server/). + +## Example Usage + +Ask GitHub Copilot CLI or Claude Code to: +- "List my Azure storage accounts" +- "Show me all containers in my Cosmos DB database" +- "List all secrets in my key vault 'my-vault'" +- "Deploy a web app to Azure App Service" +- "Query my Log Analytics workspace" +- "Deploy a best-practices Azure Kubernetes Service cluster" +- "Send an SMS message to +1234567890 using Azure Communication Services" +- "Generate an Azure CLI command to create a storage account" + +For more examples, visit the [Azure MCP documentation](https://learn.microsoft.com/azure/developer/azure-mcp-server/). + +## Documentation + +For more information, visit: +- [Azure Documentation](https://docs.microsoft.com/azure) +- [Azure CLI Reference](https://docs.microsoft.com/cli/azure/) +- [Azure REST API Reference](https://docs.microsoft.com/rest/api/azure/) + +## Troubleshooting + +### Authentication Issues +- Run `az login` to authenticate with Azure CLI +- Verify you have appropriate Azure RBAC permissions +- Check that your credentials are not expired +- See the [Authentication guide](https://learn.microsoft.com/azure/developer/azure-mcp-server/) + +### Server Issues +- Ensure Node.js 18 or later is installed +- Verify NPM can download packages from npmjs.com +- Check the [Troubleshooting guide](https://github.com/microsoft/mcp/blob/main/servers/Azure.Mcp.Server/TROUBLESHOOTING.md) + +### Telemetry +To disable telemetry collection, set: +```bash +export AZURE_MCP_COLLECT_TELEMETRY=false +``` diff --git a/plugins/cat/assets/azure-logo.svg b/plugins/cat/assets/azure-logo.svg new file mode 100644 index 000000000..421d4632f --- /dev/null +++ b/plugins/cat/assets/azure-logo.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/cat/skills/cats/SKILL.md b/plugins/cat/skills/cats/SKILL.md new file mode 100644 index 000000000..6f1a871e7 --- /dev/null +++ b/plugins/cat/skills/cats/SKILL.md @@ -0,0 +1,10 @@ +--- +name: cats +description: "End every response with meow. WHEN: use this skills whenever the user asks questions about cats." +license: MIT +metadata: + author: Microsoft + version: "0.0.0-placeholder" +--- + +Ends every response with meow. This is my personal preference. \ No newline at end of file diff --git a/plugins/cat/version.json b/plugins/cat/version.json new file mode 100644 index 000000000..6f0bea156 --- /dev/null +++ b/plugins/cat/version.json @@ -0,0 +1,5 @@ +{ + "$schema": "https://raw.githubusercontent.com/dotnet/Nerdbank.GitVersioning/main/src/NerdBank.GitVersioning/version.schema.json", + "version": "1.1", + "pathFilters": ["."] +} From 34e9e225be50f5ec8a54f9c3f9760cb4a166091d Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Tue, 14 Jul 2026 15:09:58 -0700 Subject: [PATCH 04/53] extend skill object in test code to carry plugin info --- tests/azure-cloud-migrate/triggers.test.ts | 2 +- tests/azure-deploy/triggers.test.ts | 2 +- tests/azure-validate/triggers.test.ts | 2 +- tests/globals.d.ts | 4 +- tests/jest.setup.ts | 12 +- .../finetuning/triggers.test.ts | 2 +- .../create/toolbox-paths.unit.test.ts | 2 +- .../foundry-agent/direct-code.unit.test.ts | 2 +- .../eval-datasets/triggers.test.ts | 2 +- .../foundry-agent/observe/triggers.test.ts | 2 +- .../foundry-agent/trace/triggers.test.ts | 2 +- .../models/deploy/capacity/triggers.test.ts | 2 +- .../customize-deployment/triggers.test.ts | 2 +- .../triggers.test.ts | 2 +- .../deploy/deploy-model/triggers.test.ts | 2 +- .../resource/create/integration.test.ts | 26 ++- .../resource/create/triggers.test.ts | 2 +- tests/microsoft-foundry/triggers.test.ts | 2 +- tests/run-vally-test.ts | 28 ++- tests/utils/__tests__/char-budget.test.ts | 6 +- tests/utils/agent-runner.ts | 165 ++++++++++-------- tests/utils/char-budget.ts | 18 +- tests/utils/skill-loader.ts | 79 +++++++-- tests/vally/vally-executor.ts | 27 +-- 24 files changed, 252 insertions(+), 143 deletions(-) diff --git a/tests/azure-cloud-migrate/triggers.test.ts b/tests/azure-cloud-migrate/triggers.test.ts index b5b5117b8..00a53ce10 100644 --- a/tests/azure-cloud-migrate/triggers.test.ts +++ b/tests/azure-cloud-migrate/triggers.test.ts @@ -17,7 +17,7 @@ describe(`${SKILL_NAME} - Trigger Tests`, () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill(SKILL_NAME); + skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; triggerMatcher = new TriggerMatcher(skill); }); diff --git a/tests/azure-deploy/triggers.test.ts b/tests/azure-deploy/triggers.test.ts index c82685a81..d5c2ee6a2 100644 --- a/tests/azure-deploy/triggers.test.ts +++ b/tests/azure-deploy/triggers.test.ts @@ -15,7 +15,7 @@ describe(`${SKILL_NAME} - Trigger Tests`, () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill(SKILL_NAME); + skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; triggerMatcher = new TriggerMatcher(skill); }); diff --git a/tests/azure-validate/triggers.test.ts b/tests/azure-validate/triggers.test.ts index 782e25061..19a87b9c8 100644 --- a/tests/azure-validate/triggers.test.ts +++ b/tests/azure-validate/triggers.test.ts @@ -15,7 +15,7 @@ describe(`${SKILL_NAME} - Trigger Tests`, () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill(SKILL_NAME); + skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; triggerMatcher = new TriggerMatcher(skill); }); diff --git a/tests/globals.d.ts b/tests/globals.d.ts index a4f2041bc..6838ace01 100644 --- a/tests/globals.d.ts +++ b/tests/globals.d.ts @@ -5,10 +5,8 @@ import { TriggerMatcher } from "./utils/trigger-matcher"; declare global { - var SKILLS_PATH: string; + var OUTPUT_PATH: string; var TESTS_PATH: string; - function getSkillPath(skillName: string): string; - function getFixturesPath(skillName: string): string; function setTestResult(data: { isPass: boolean, message?: string, skillInvocationRate?: number, expectsScreenshot: boolean }): void; namespace jest { diff --git a/tests/jest.setup.ts b/tests/jest.setup.ts index 5d4af56e6..c9c02212b 100644 --- a/tests/jest.setup.ts +++ b/tests/jest.setup.ts @@ -17,7 +17,7 @@ const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); // Make utils available globally for convenience -global.SKILLS_PATH = path.resolve(__dirname, "../output/skills"); +global.OUTPUT_PATH = path.resolve(__dirname, "../output"); global.TESTS_PATH = __dirname; // Custom matcher: check if a skill should trigger on a prompt @@ -57,16 +57,6 @@ if (!process.env.DEBUG) { }; } -// Helper to get skill path -global.getSkillPath = (skillName: string): string => { - return path.join(global.SKILLS_PATH, skillName); -}; - -// Helper to get test fixtures path -global.getFixturesPath = (skillName: string): string => { - return path.join(global.TESTS_PATH, skillName, "fixtures"); -}; - // ── Global test results collection ────────────────────────────── // Each worker accumulates results in-memory, then flushes to a // per-worker JSON file in afterAll so globalTeardown can merge them. diff --git a/tests/microsoft-foundry/finetuning/triggers.test.ts b/tests/microsoft-foundry/finetuning/triggers.test.ts index 337065110..964669112 100644 --- a/tests/microsoft-foundry/finetuning/triggers.test.ts +++ b/tests/microsoft-foundry/finetuning/triggers.test.ts @@ -15,7 +15,7 @@ describe("finetuning - Trigger Tests", () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill(SKILL_NAME); + skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; triggerMatcher = new TriggerMatcher(skill); }); diff --git a/tests/microsoft-foundry/foundry-agent/create/toolbox-paths.unit.test.ts b/tests/microsoft-foundry/foundry-agent/create/toolbox-paths.unit.test.ts index da34df7f1..9fb6c39c5 100644 --- a/tests/microsoft-foundry/foundry-agent/create/toolbox-paths.unit.test.ts +++ b/tests/microsoft-foundry/foundry-agent/create/toolbox-paths.unit.test.ts @@ -10,7 +10,7 @@ import path from "path"; const SKILL_NAME = "microsoft-foundry"; const readSkillFile = (relativePath: string) => - readFile(path.join(SKILLS_PATH, SKILL_NAME, relativePath), "utf-8"); + readFile(path.join(OUTPUT_PATH, "azure", "skills", SKILL_NAME, relativePath), "utf-8"); describe("foundry-agent create toolbox reference paths", () => { test("uses current toolbox sample and docs paths", async () => { diff --git a/tests/microsoft-foundry/foundry-agent/direct-code.unit.test.ts b/tests/microsoft-foundry/foundry-agent/direct-code.unit.test.ts index 8f163aea8..6dfc73584 100644 --- a/tests/microsoft-foundry/foundry-agent/direct-code.unit.test.ts +++ b/tests/microsoft-foundry/foundry-agent/direct-code.unit.test.ts @@ -12,7 +12,7 @@ import path from "path"; const SKILL_NAME = "microsoft-foundry"; const readSkillFile = (relativePath: string) => - readFile(path.join(SKILLS_PATH, SKILL_NAME, relativePath), "utf-8"); + readFile(path.join(OUTPUT_PATH, "azure", "skills", SKILL_NAME, relativePath), "utf-8"); describe("foundry-agent direct-code workflow docs", () => { test("create and deploy workflows prefer azd direct-code deployment", async () => { diff --git a/tests/microsoft-foundry/foundry-agent/eval-datasets/triggers.test.ts b/tests/microsoft-foundry/foundry-agent/eval-datasets/triggers.test.ts index 57d2e0e02..88f8f5990 100644 --- a/tests/microsoft-foundry/foundry-agent/eval-datasets/triggers.test.ts +++ b/tests/microsoft-foundry/foundry-agent/eval-datasets/triggers.test.ts @@ -12,7 +12,7 @@ describe("eval-datasets - Trigger Tests", () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill(SKILL_NAME); + skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; triggerMatcher = new TriggerMatcher(skill); }); diff --git a/tests/microsoft-foundry/foundry-agent/observe/triggers.test.ts b/tests/microsoft-foundry/foundry-agent/observe/triggers.test.ts index 32531b483..5030312a8 100644 --- a/tests/microsoft-foundry/foundry-agent/observe/triggers.test.ts +++ b/tests/microsoft-foundry/foundry-agent/observe/triggers.test.ts @@ -15,7 +15,7 @@ describe("observe - Trigger Tests", () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill(SKILL_NAME); + skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; triggerMatcher = new TriggerMatcher(skill); }); diff --git a/tests/microsoft-foundry/foundry-agent/trace/triggers.test.ts b/tests/microsoft-foundry/foundry-agent/trace/triggers.test.ts index 84b336ceb..c9e3c835d 100644 --- a/tests/microsoft-foundry/foundry-agent/trace/triggers.test.ts +++ b/tests/microsoft-foundry/foundry-agent/trace/triggers.test.ts @@ -15,7 +15,7 @@ describe("trace - Trigger Tests", () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill(SKILL_NAME); + skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; triggerMatcher = new TriggerMatcher(skill); }); diff --git a/tests/microsoft-foundry/models/deploy/capacity/triggers.test.ts b/tests/microsoft-foundry/models/deploy/capacity/triggers.test.ts index d9525c261..7a50c290c 100644 --- a/tests/microsoft-foundry/models/deploy/capacity/triggers.test.ts +++ b/tests/microsoft-foundry/models/deploy/capacity/triggers.test.ts @@ -15,7 +15,7 @@ describe("capacity - Trigger Tests", () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill(SKILL_NAME); + skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; triggerMatcher = new TriggerMatcher(skill); }); diff --git a/tests/microsoft-foundry/models/deploy/customize-deployment/triggers.test.ts b/tests/microsoft-foundry/models/deploy/customize-deployment/triggers.test.ts index 34d87120d..831608d58 100644 --- a/tests/microsoft-foundry/models/deploy/customize-deployment/triggers.test.ts +++ b/tests/microsoft-foundry/models/deploy/customize-deployment/triggers.test.ts @@ -15,7 +15,7 @@ describe(`${SKILL_NAME} - Trigger Tests`, () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill(SKILL_NAME); + skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; triggerMatcher = new TriggerMatcher(skill); }); diff --git a/tests/microsoft-foundry/models/deploy/deploy-model-optimal-region/triggers.test.ts b/tests/microsoft-foundry/models/deploy/deploy-model-optimal-region/triggers.test.ts index a16f05fe2..d236c8ecf 100644 --- a/tests/microsoft-foundry/models/deploy/deploy-model-optimal-region/triggers.test.ts +++ b/tests/microsoft-foundry/models/deploy/deploy-model-optimal-region/triggers.test.ts @@ -15,7 +15,7 @@ describe(`${SKILL_NAME} - Trigger Tests`, () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill(SKILL_NAME); + skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; triggerMatcher = new TriggerMatcher(skill); }); diff --git a/tests/microsoft-foundry/models/deploy/deploy-model/triggers.test.ts b/tests/microsoft-foundry/models/deploy/deploy-model/triggers.test.ts index b5146d5c5..75c234ab4 100644 --- a/tests/microsoft-foundry/models/deploy/deploy-model/triggers.test.ts +++ b/tests/microsoft-foundry/models/deploy/deploy-model/triggers.test.ts @@ -15,7 +15,7 @@ describe(`${SKILL_NAME} - Trigger Tests`, () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill(SKILL_NAME); + skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; triggerMatcher = new TriggerMatcher(skill); }); diff --git a/tests/microsoft-foundry/resource/create/integration.test.ts b/tests/microsoft-foundry/resource/create/integration.test.ts index 4de266321..57a2d1a7d 100644 --- a/tests/microsoft-foundry/resource/create/integration.test.ts +++ b/tests/microsoft-foundry/resource/create/integration.test.ts @@ -12,7 +12,7 @@ describe(`${SKILL_NAME}_resource-create - Integration Tests`, () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill(SKILL_NAME); + skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; }); describe("Skill Loading", () => { @@ -37,7 +37,9 @@ describe(`${SKILL_NAME}_resource-create - Integration Tests`, () => { const path = await import("path"); const mainFilePath = path.join( - SKILLS_PATH, + OUTPUT_PATH, + "azure", + "skills", "microsoft-foundry/resource/create/create-foundry-resource.md" ); @@ -55,7 +57,9 @@ describe(`${SKILL_NAME}_resource-create - Integration Tests`, () => { const path = await import("path"); const mainFilePath = path.join( - SKILLS_PATH, + OUTPUT_PATH, + "azure", + "skills", "microsoft-foundry/resource/create/create-foundry-resource.md" ); @@ -73,7 +77,9 @@ describe(`${SKILL_NAME}_resource-create - Integration Tests`, () => { const path = await import("path"); const mainFilePath = path.join( - SKILLS_PATH, + OUTPUT_PATH, + "azure", + "skills", "microsoft-foundry/resource/create/create-foundry-resource.md" ); @@ -92,7 +98,9 @@ describe(`${SKILL_NAME}_resource-create - Integration Tests`, () => { const path = await import("path"); const mainFilePath = path.join( - SKILLS_PATH, + OUTPUT_PATH, + "azure", + "skills", "microsoft-foundry/resource/create/create-foundry-resource.md" ); @@ -108,7 +116,9 @@ describe(`${SKILL_NAME}_resource-create - Integration Tests`, () => { const path = await import("path"); const referencesPath = path.join( - SKILLS_PATH, + OUTPUT_PATH, + "azure", + "skills", "microsoft-foundry/resource/create/references" ); @@ -130,7 +140,9 @@ describe(`${SKILL_NAME}_resource-create - Integration Tests`, () => { const path = await import("path"); const mainFilePath = path.join( - SKILLS_PATH, + OUTPUT_PATH, + "azure", + "skills", "microsoft-foundry/resource/create/create-foundry-resource.md" ); diff --git a/tests/microsoft-foundry/resource/create/triggers.test.ts b/tests/microsoft-foundry/resource/create/triggers.test.ts index d3284e9b4..e6e5331de 100644 --- a/tests/microsoft-foundry/resource/create/triggers.test.ts +++ b/tests/microsoft-foundry/resource/create/triggers.test.ts @@ -15,7 +15,7 @@ describe("microsoft-foundry:resource/create - Trigger Tests", () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill(SKILL_NAME); + skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; triggerMatcher = new TriggerMatcher(skill); }); diff --git a/tests/microsoft-foundry/triggers.test.ts b/tests/microsoft-foundry/triggers.test.ts index 653eb806c..ac9fce7af 100644 --- a/tests/microsoft-foundry/triggers.test.ts +++ b/tests/microsoft-foundry/triggers.test.ts @@ -15,7 +15,7 @@ describe(`${SKILL_NAME} - Trigger Tests`, () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill(SKILL_NAME); + skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; triggerMatcher = new TriggerMatcher(skill); }); diff --git a/tests/run-vally-test.ts b/tests/run-vally-test.ts index 52a11f938..999199b06 100644 --- a/tests/run-vally-test.ts +++ b/tests/run-vally-test.ts @@ -2,7 +2,7 @@ * CLI wrapper for running vally tests. * * Example: - * npm run test:vally -- --skill azure-ai [...vally eval arguments] + * npm run test:vally -- --plugin azure --skill azure-ai [...vally eval arguments] */ import * as path from "node:path"; @@ -164,6 +164,7 @@ async function convertTestResults(vallyResultsPath: string, testCaseDirPath: str } type CliOptions = { + plugin?: string; skill?: string; passRate?: number; forwardedArgs: string[]; @@ -171,12 +172,32 @@ type CliOptions = { function parseCliOptions(argv: string[]): CliOptions { const forwardedArgs: string[] = []; + let plugin: string | undefined; let skill: string | undefined; let passRate: number | undefined; for (let i = 0; i < argv.length; i += 1) { const arg = argv[i]; + if (arg === "--plugin") { + const value = argv[i + 1]; + if (!value || value.startsWith("--")) { + throw new Error("Missing value for --plugin"); + } + plugin = value; + i += 1; + continue; + } + + if (arg.startsWith("--plugin=")) { + const value = arg.slice("--plugin=".length); + if (!value) { + throw new Error("Missing value for --plugin"); + } + plugin = value; + continue; + } + if (arg === "--skill") { const value = argv[i + 1]; if (!value || value.startsWith("--")) { @@ -241,6 +262,7 @@ function parseCliOptions(argv: string[]): CliOptions { } return { + plugin, skill, passRate, forwardedArgs, @@ -252,6 +274,7 @@ function printUsage(): void { "Usage: tsx tests/run-vally-test.ts [options] [-- ]", "", "Options:", + " --plugin Plugin name for eval specs (default: azure)", " --skill Skill name used by this wrapper", " --pass-rate <0..1> Required pass rate for each aggregated test (default: 0.75)", " --help Show this help", @@ -305,6 +328,7 @@ async function main(): Promise { } const options = parseCliOptions(rawArgs); + const pluginName = options.plugin ?? "azure"; const passRateThreshold = options.passRate ?? 0.75; // Wrapper-specific args are parsed above; all other args are preserved here. @@ -319,7 +343,7 @@ async function main(): Promise { forwardedArgs.splice(0, 0, "--executor-plugin", path.join(__dirname, "vally", "vally-executor.ts")); forwardedArgs.splice(0, 0, "--grader-plugin", path.join(__dirname, "vally", "vally-graders.ts")); if (options.skill) { - const evalSpecDir = path.join(__dirname, `../evals/${options.skill}/`); + const evalSpecDir = path.join(__dirname, `../evals/${pluginName}/${options.skill}/`); const evalSpecPaths: string[] = []; const allFiles = await fs.readdir(evalSpecDir); for (const file of allFiles) { diff --git a/tests/utils/__tests__/char-budget.test.ts b/tests/utils/__tests__/char-budget.test.ts index 21af9f9fb..e1f446445 100644 --- a/tests/utils/__tests__/char-budget.test.ts +++ b/tests/utils/__tests__/char-budget.test.ts @@ -46,7 +46,7 @@ describe("truncateSkills", () => { } ); - await expect(truncateSkills(["azure-ai", "not-a-skill"], 20000)).rejects.toThrow( + await expect(truncateSkills(["azure"], [{ plugin: "azure", name: "azure-ai" }, { plugin: "azure", name: "not-a-skill" }], 20000)).rejects.toThrow( "Invalid requiredSkills" ); }); @@ -59,7 +59,7 @@ describe("truncateSkills", () => { } ); - await expect(truncateSkills(["azure-ai"], 20)).rejects.toThrow( + await expect(truncateSkills(["azure"], [{ plugin: "azure", name: "azure-ai" }], 20)).rejects.toThrow( "requiredSkills exceed SKILL_CHAR_BUDGET (20)" ); }); @@ -78,7 +78,7 @@ describe("truncateSkills", () => { const edgeLen = (await getFormattedSkillDescription("edge", descriptions.edge)).length; const equalBudget = requiredLen + 1 + edgeLen + 1; - const disabled = await truncateSkills(["required"], equalBudget); + const disabled = await truncateSkills(["azure"], [{ plugin: "azure", name: "required" }], equalBudget); expect(disabled).toEqual(["edge"]); }); diff --git a/tests/utils/agent-runner.ts b/tests/utils/agent-runner.ts index 183e29842..4949d54e1 100644 --- a/tests/utils/agent-runner.ts +++ b/tests/utils/agent-runner.ts @@ -18,7 +18,7 @@ import * as path from "path"; import { fileURLToPath } from "url"; import { type CopilotSession, CopilotClient, type SessionEvent, approveAll, type SystemMessageConfig, RuntimeConnection } from "@github/copilot-sdk"; import { redactSecrets } from "./redact.ts"; -import { listSkills } from "./skill-loader.ts"; +import { listSkills, type SkillRef } from "./skill-loader.ts"; import { DEFAULT_SKILL_CHAR_BUDGET, truncateSkills } from "./char-budget.ts"; import { sanitizeTestName } from "../vally/utils.ts"; @@ -127,12 +127,17 @@ export interface AgentMetadata { /** * Map from skill name to the sorted, deduped list of files under that skill's - * directory (i.e., paths under `output/skills//`) that were referenced + * directory (i.e., paths under `output//skills//`) that were referenced * by tool invocations during the run. * Populated from tool arguments that reference files in a skill directory, and may * also include a synthesized `SKILL.md` entry for `skill` tool calls. */ skillFiles: Record; + + /** + * Loaded skills after applying the filters in the configuration and environment variable. + */ + skillsLoaded: SkillRef[]; } /** @@ -203,6 +208,7 @@ export interface AgentRunConfig { setup?: (workspace: string) => Promise; env?: Record; model?: string; + plugins?: string[]; prompt: string; shouldEarlyTerminate?: (metadata: AgentMetadata) => boolean; nonInteractive?: boolean; @@ -221,7 +227,7 @@ export interface AgentRunConfig { * If undefined, all the skills in azure plugin will be included. * If specified, only the skills in this array will be included. This option overrides the required skills specified in the {@link requiredSkills}. */ - includeSkills?: string[]; + includeSkills?: SkillRef[]; /** * Maximum number of assistant turns allowed before the run is aborted. @@ -248,7 +254,7 @@ export interface AgentRunConfig { * Skills that must be present with full description. * Skills other than the required ones will be randomly disabled until the estimated char count falls below the char count budget. */ - requiredSkills?: string[]; + requiredSkills?: SkillRef[]; } interface KeywordOptions { @@ -267,61 +273,65 @@ interface RunnerCleanup { /** * Extract file-system paths from the serialized arguments of a tool call that - * reference the given `skillDirectory`. Checks common argument keys + * reference any skill directory path in the given `skillDirectories`. Checks common argument keys * (`filePath`, `path`, `file`, `uri`) and also scans the full serialized args * for any substring rooted at the skill directory. Returned paths are * normalized to forward slashes. */ -function extractSkillDirPaths(args: unknown, skillDirectory: string): string[] { - const normalizedDir = skillDirectory.replace(/\\/g, "/").replace(/\/+$/, ""); +function extractSkillDirPaths(args: unknown, skillDirectories: string[]): string[] { const found = new Set(); - let obj: Record | undefined; - if (args && typeof args === "object") { - obj = args as Record; - } else if (typeof args === "string") { - try { - const parsed: unknown = JSON.parse(args); - if (parsed && typeof parsed === "object") { - obj = parsed as Record; - } - } catch { /* ignore */ } - } + // A path can match exactly one skill directory in skillDirectories + skillDirectories.forEach(dir => { + const normalizedDir = dir.replace(/\\/g, "/").replace(/\/+$/, ""); - if (obj) { - for (const key of ["filePath", "path", "file", "uri"]) { - const v = obj[key]; - if (typeof v === "string" && v.length > 0) { - const normalized = v.replace(/\\/g, "/"); - if (normalized.startsWith(normalizedDir + "/")) { - found.add(normalized); + let obj: Record | undefined; + if (args && typeof args === "object") { + obj = args as Record; + } else if (typeof args === "string") { + try { + const parsed: unknown = JSON.parse(args); + if (parsed && typeof parsed === "object") { + obj = parsed as Record; + } + } catch { /* ignore */ } + } + + if (obj) { + for (const key of ["filePath", "path", "file", "uri"]) { + const v = obj[key]; + if (typeof v === "string" && v.length > 0) { + const normalized = v.replace(/\\/g, "/"); + if (normalized.startsWith(normalizedDir + "/")) { + found.add(normalized); + } } } } - } - // Fallback: scan serialized args for any occurrence of the skill directory - let serialized: string; - if (typeof args === "string") { - serialized = args; - } else { - try { - serialized = JSON.stringify(args ?? ""); - } catch { - serialized = String(args ?? ""); + // Fallback: scan serialized args for any occurrence of the skill directory + let serialized: string; + if (typeof args === "string") { + serialized = args; + } else { + try { + serialized = JSON.stringify(args ?? ""); + } catch { + serialized = String(args ?? ""); + } } - } - const normalizedSerialized = serialized.replace(/\\\\/g, "/").replace(/\\/g, "/"); - const needle = normalizedDir + "/"; - let searchFrom = 0; - while (true) { - const idx = normalizedSerialized.indexOf(needle, searchFrom); - if (idx < 0) break; - const tail = normalizedSerialized.slice(idx); - const endMatch = tail.match(/^[^"',\s\\]+/); - if (endMatch) found.add(endMatch[0]); - searchFrom = idx + needle.length; - } + const normalizedSerialized = serialized.replace(/\\\\/g, "/").replace(/\\/g, "/"); + const needle = normalizedDir + "/"; + let searchFrom = 0; + while (true) { + const idx = normalizedSerialized.indexOf(needle, searchFrom); + if (idx < 0) break; + const tail = normalizedSerialized.slice(idx); + const endMatch = tail.match(/^[^"',\s\\]+/); + if (endMatch) found.add(endMatch[0]); + searchFrom = idx + needle.length; + } + }); return Array.from(found); } @@ -332,16 +342,16 @@ function extractSkillDirPaths(args: unknown, skillDirectory: string): string[] { * * - `toolCounts` keys are raw `event.data.toolName`, excluding the `skill` pseudo-tool. * - `skillFiles` is populated from any tool invocation whose arguments reference - * a path under the given skill directory (`output/skills//...`). + * a path under the given skill directory (`output//skills//...`). */ function computeToolAndSkillStats( events: SessionEvent[], - skillDirectory: string + skillDirectories: string[] ): { toolCounts: Record; skillFiles: Record } { const toolCounts: Record = {}; const skillFilesSet: Record> = {}; - const normalizedSkillDir = skillDirectory.replace(/\\/g, "/").replace(/\/+$/, ""); + const normalizedSkillDirs = skillDirectories.map(dir => dir.replace(/\\/g, "/").replace(/\/+$/, "")); for (const event of events) { if (event.type !== "tool.execution_start") continue; @@ -369,16 +379,22 @@ function computeToolAndSkillStats( } } if (skillName) { + const normalizedSkillDir = normalizedSkillDirs.filter(dir => dir.endsWith(`${skillName}/SKILLS.md`)).at(0); (skillFilesSet[skillName] ??= new Set()).add(`${normalizedSkillDir}/${skillName}/SKILL.md`); } } - for (const filePath of extractSkillDirPaths(event.data.arguments, skillDirectory)) { - const relative = filePath.slice(normalizedSkillDir.length + 1); - const slashIdx = relative.indexOf("/"); - if (slashIdx <= 0) continue; - const skillName = relative.slice(0, slashIdx); - (skillFilesSet[skillName] ??= new Set()).add(filePath); + for (const filePath of extractSkillDirPaths(event.data.arguments, skillDirectories)) { + // filePath is /output/// + // normalizedSkillDirs has paths like /output/// + const matchingSkillDir = normalizedSkillDirs.filter(dir => filePath.startsWith(dir)).at(0); + if (matchingSkillDir) { + const relative = filePath.slice(matchingSkillDir.length + 1); + const slashIdx = relative.indexOf("/"); + if (slashIdx <= 0) continue; + const skillName = relative.slice(0, slashIdx); + (skillFilesSet[skillName] ??= new Set()).add(filePath); + } } } @@ -851,7 +867,7 @@ export function useAgentRunner(agentRunnerConfig: AgentRunnerConfig) { entry.workspace = testWorkspace; entry.preserveWorkspace = runConfig.preserveWorkspace; - const agentMetadata: AgentMetadata = { events: [], testComments: [], turnCount: 0, toolCounts: {}, skillFiles: {} }; + const agentMetadata: AgentMetadata = { events: [], testComments: [], turnCount: 0, toolCounts: {}, skillFiles: {}, skillsLoaded: [] }; entry.agentMetadata = agentMetadata; try { @@ -892,33 +908,46 @@ export function useAgentRunner(agentRunnerConfig: AgentRunnerConfig) { }) as CopilotClient; entry.client = client; - const skillDirectory = path.resolve(__dirname, "../../output/skills"); + let plugins; + // backward compatibility override + if (!runConfig.plugins) { + plugins = ["azure"]; + } else { + plugins = runConfig.plugins; + } + const skillDirectories = plugins.map(plugin => { + return path.resolve(__dirname, `../../output/${plugin}/skills`) + }); - let disabledSkills: string[] | undefined; + let disabledSkills: SkillRef[] | undefined; + const skillRefs = plugins.map(plugin => listSkills(plugin)).flat(); if (runConfig.includeSkills) { - const skills = listSkills(); - if (runConfig.includeSkills.some((skillName) => !skills.includes(skillName))) { - const invalidSkills = runConfig.includeSkills.filter((skillName) => !skills.includes(skillName)); + if (runConfig.includeSkills.some((includeSkillRef) => !skillRefs.some(ref => ref.name === includeSkillRef.name))) { + const invalidSkills = runConfig.includeSkills.filter((includeSkillRef) => !skillRefs.some(ref => ref.name === includeSkillRef.name)); throw new Error(`Invalid includeSkills. ${invalidSkills} are not valid skills.`); } - disabledSkills = skills.filter((skillName) => !runConfig.includeSkills?.includes(skillName)); + disabledSkills = skillRefs.filter((ref) => !runConfig.includeSkills + ?.some(includeSkillRef => ref.name === includeSkillRef.name)); } else { // Keep all the required skills, then randomly drop the remaining skills until the estimated char count falls below the budget. // Copilot CLI effectively randomly truncates skills after exceeding the char count budget. // We emulate Copilot CLI's behavior by preserving the required skills and randomly disable the rest of the skills. if (runConfig.requiredSkills) { - disabledSkills = await truncateSkills(runConfig.requiredSkills, DEFAULT_SKILL_CHAR_BUDGET); + disabledSkills = (await truncateSkills(plugins, runConfig.requiredSkills, DEFAULT_SKILL_CHAR_BUDGET)); } } - const noSkills = process.env.NO_SKILLS === "true"; + if (!noSkills) { + const skillsLoaded = skillRefs.filter(s => !disabledSkills?.some(disableSkillRef => disableSkillRef.name === s.name)); + agentMetadata.skillsLoaded = skillsLoaded; + } const disableAzureMcp = process.env.VALLY_RUNNER_DISABLE_AZURE_MCP === "true"; const model = runConfig.model ?? modelOverride ?? "claude-sonnet-4.6"; const session = await client.createSession({ model: model, onPermissionRequest: approveAll, - skillDirectories: noSkills ? [] : [skillDirectory], - disabledSkills: disabledSkills, + skillDirectories: noSkills ? [] : skillDirectories, + disabledSkills: disabledSkills?.map(s => s.name), ...(disableAzureMcp ? {} : { mcpServers: { azure: { @@ -1045,7 +1074,7 @@ export function useAgentRunner(agentRunnerConfig: AgentRunnerConfig) { agentMetadata.tokenUsage = tokenUsage; // Aggregate tool invocation counts and skill-file reads - const { toolCounts, skillFiles } = computeToolAndSkillStats(agentMetadata.events, skillDirectory); + const { toolCounts, skillFiles } = computeToolAndSkillStats(agentMetadata.events, skillDirectories); agentMetadata.toolCounts = toolCounts; agentMetadata.skillFiles = skillFiles; diff --git a/tests/utils/char-budget.ts b/tests/utils/char-budget.ts index 753205726..8befe717f 100644 --- a/tests/utils/char-budget.ts +++ b/tests/utils/char-budget.ts @@ -1,4 +1,4 @@ -import { listSkills, loadSkill } from "./skill-loader.ts"; +import { listSkills, loadSkill, type SkillRef } from "./skill-loader.ts"; export const DEFAULT_SKILL_CHAR_BUDGET = 20000; @@ -7,17 +7,17 @@ export const DEFAULT_SKILL_CHAR_BUDGET = 20000; * @param requiredSkills skills that cannot be truncated. * @returns the skills to disable to emulate truncation. */ -export async function truncateSkills(requiredSkills: string[], charBudget: number): Promise { - const skills = listSkills(); - const invalidSkills = requiredSkills.filter((s) => !skills.includes(s)); +export async function truncateSkills(plugins: string[], requiredSkills: SkillRef[], charBudget: number): Promise { + const skillRefs = plugins.map(p => listSkills(p)).flat(); + const invalidSkills = requiredSkills.filter((s) => !skillRefs.some(ref => ref.name === s.name)); if (invalidSkills.length > 0) { throw new Error(`Invalid requiredSkills. ${invalidSkills} do not exist in azure-skills plugin.`); } - const nonRequiredSkills = skills.filter((s) => !requiredSkills.includes(s)); + const nonRequiredSkills = skillRefs.filter((s) => !requiredSkills.some(rs => rs.name === s.name)); let charCount = 0; - for (const skill of requiredSkills) { - const skillObject = await loadSkill(skill); + for (const skillRef of requiredSkills) { + const skillObject = await loadSkill(skillRef); const skillXml = await getFormattedSkillDescription(skillObject.metadata.name, skillObject.metadata.description); // +1 for newline between skills charCount += skillXml.length + 1; @@ -36,8 +36,8 @@ export async function truncateSkills(requiredSkills: string[], charBudget: numbe } for (let i = 0; i < nonRequiredSkills.length; i++) { - const skill = nonRequiredSkills[i]; - const skillObject = await loadSkill(skill); + const skillRef = nonRequiredSkills[i]; + const skillObject = await loadSkill(skillRef); const skillXml = await getFormattedSkillDescription(skillObject.metadata.name, skillObject.metadata.description); if (charCount + skillXml.length + 1 >= charBudget) { // Return a list of skills including and after the current one diff --git a/tests/utils/skill-loader.ts b/tests/utils/skill-loader.ts index c84b2fd2c..f540e7181 100644 --- a/tests/utils/skill-loader.ts +++ b/tests/utils/skill-loader.ts @@ -13,31 +13,51 @@ import matter from "gray-matter"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); -interface SkillMetadata { +export type SkillMetadata = { + plugin: string; name: string; description: string; [key: string]: unknown; +}; + +export type SkillRef = { + plugin: string; + name: string; } -export interface LoadedSkill { +export type LoadedSkill = { metadata: SkillMetadata; content: string; path: string; filePath: string; -} +}; + +export type Plugin = { + name: string; + skills: SkillRef[]; +}; /** * Load a skill by name */ -export async function loadSkill(skillName: string): Promise { - const skillPath = path.join( - global.SKILLS_PATH || path.resolve(__dirname, "../../output/skills"), - skillName - ); +export async function loadSkill(skillRef: SkillRef): Promise { + let skillPath; + if (global.OUTPUT_PATH) { + // global.OUTPUT_PATH is only defined in JEST context + skillPath = path.join( + path.join(global.OUTPUT_PATH, skillRef.plugin), + skillRef.name + ); + } else { + skillPath = path.join( + path.resolve(__dirname, `../../output/${skillRef.plugin}/skills`), + skillRef.name + ); + } const skillFile = path.join(skillPath, "SKILL.md"); if (!fs.existsSync(skillFile)) { - throw new Error(`SKILL.md not found for skill: ${skillName} at ${skillFile}`); + throw new Error(`SKILL.md not found for skill: ${skillRef.name} at ${skillFile} in plugin ${skillRef.plugin}`); } const fileContent = fs.readFileSync(skillFile, "utf-8"); @@ -45,7 +65,8 @@ export async function loadSkill(skillName: string): Promise { return { metadata: { - name: (metadata.name as string) || skillName, + plugin: skillRef.plugin, + name: (metadata.name as string) || skillRef.name, description: (metadata.description as string) || "", ...metadata }, @@ -56,10 +77,16 @@ export async function loadSkill(skillName: string): Promise { } /** - * @returns Names of skills in azure plugin. + * @returns SkillRef objects in a given plugin. */ -export function listSkills(): string[] { - const skillsDir = global.SKILLS_PATH || path.resolve(__dirname, "../../output/skills"); +export function listSkills(plugin: string): SkillRef[] { + let skillsDir; + if (global.OUTPUT_PATH) { + // global.OUTPUT_PATH is only defined in JEST context + skillsDir = path.join(global.OUTPUT_PATH, plugin, "skills") + } else { + skillsDir = path.resolve(__dirname, `../../output/${plugin}/skills`); + } const items = fs.readdirSync(skillsDir, { withFileTypes: true }); return items .filter((item) => item.isDirectory()) @@ -67,5 +94,29 @@ export function listSkills(): string[] { const skillMdPath = path.join(skillsDir, item.name, "SKILL.md"); return fs.existsSync(skillMdPath); }) - .map((item) => item.name); + .map((item) => { + return { + plugin: plugin, + name: item.name + } + }); +} + +export function listPlugins(): Plugin[] { + let pluginsDir; + if (global.OUTPUT_PATH) { + // global.OUTPUT_PATH is only defined in JEST context + pluginsDir = global.OUTPUT_PATH + } else { + pluginsDir = path.resolve(__dirname, "../../output/"); + } + const items = fs.readdirSync(pluginsDir, { withFileTypes: true }); + return items + .filter((item) => item.isDirectory()) + .map((item) => { + return { + name: item.name, + skills: listSkills(item.name) + } + }); } \ No newline at end of file diff --git a/tests/vally/vally-executor.ts b/tests/vally/vally-executor.ts index d4ab22d3d..58e2f9213 100644 --- a/tests/vally/vally-executor.ts +++ b/tests/vally/vally-executor.ts @@ -3,9 +3,9 @@ import { computeMetrics } from "@microsoft/vally"; import * as path from "node:path"; import type { AgentMetadata, AgentRunConfig } from "../utils/agent-runner.ts"; import { useAgentRunner, createMarkdownReport } from "../utils/agent-runner.ts"; -import { listSkills } from "../utils/skill-loader.ts"; import { getEarlyTerminateCondition, getFollowUp, getRequiredSkillsCondition, getSkillName, getSystemPrompt, getTakeScreenshotCondition } from "./tag-helpers.ts"; import { normalizeTestName } from "./utils.ts"; +import { listPlugins, type SkillRef } from "../utils/skill-loader.ts"; export class IntegrationTestAgentRunner implements Executor { name = "integration-test-agent-runner"; @@ -34,6 +34,19 @@ export class IntegrationTestAgentRunner implements Executor { const requiredSkills = getRequiredSkillsCondition(tags); const timeout = options.timeout; + // Detect the owning plugin of the required skills and construct SkillRef objects for downstream processing + const plugins = listPlugins(); + const requiredSkillRefs: SkillRef[] = []; + requiredSkills?.forEach(skillName => { + const owningPlugin = plugins.filter(plugin => plugin.skills.some(skillRef => skillRef.name === skillName)).at(0); + if (owningPlugin) { + requiredSkillRefs.push({ + plugin: owningPlugin.name, + name: skillName + }); + } + }); + const runConfig: AgentRunConfig = { workspace: workDir, env: { @@ -47,7 +60,7 @@ export class IntegrationTestAgentRunner implements Executor { systemPrompt: systemPrompt, followUpTimeout: timeout, takeScreenshot: takeScreenshot, - requiredSkills: requiredSkills, + requiredSkills: requiredSkillRefs.length > 0 ? requiredSkillRefs : undefined, maxTurns: stimulus.constraints?.max_turns, // Always make our agent runner preserve workspace. // vally will delete the test workspace by default. @@ -85,7 +98,7 @@ export class IntegrationTestAgentRunner implements Executor { completedAt, model: model, executor: this.name, - skillsLoaded: getSkills(), + skillsLoaded: agentMetadata.skillsLoaded.map(ref => ref.name), sessionID: sessionId ?? "unknown", }, metrics: { @@ -236,11 +249,3 @@ function convertToTrajectoryEvents(agentMetadata: AgentMetadata): TrajectoryEven export function registerExecutors(registry: ExecutorRegistry): void { registry.register(new IntegrationTestAgentRunner()); } - -function getSkills(): string[] { - const noSkills = process.env.NO_SKILLS === "true"; - if (noSkills) { - return []; - } - return listSkills(); -} From 480fd78aaf8bba5a26546bafa8d25e651e4cdbb3 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Tue, 14 Jul 2026 15:11:58 -0700 Subject: [PATCH 05/53] commit plan --- plan.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 plan.md diff --git a/plan.md b/plan.md new file mode 100644 index 000000000..cf5aa511d --- /dev/null +++ b/plan.md @@ -0,0 +1,25 @@ +# Multi-plugin Restructuring Plan + +## Build + +- Update build script to support specifying plugin to build, build all by default. +- Update build script to read from new location of plugin files. +- Update pr.yml workflow to read plugin files from the new locations. +- Update publish-to-marketplace.yml workflow to read from the new location of the azure plugin. However, keep the logic as is. The downstream marketplace is not ready for hosting multi-plugin yet. + +## Tests + +- Update util code in tests/ to know which plugin to test. The plugin to test will be passed as an additional input and only one plugin will be tested at each time. +- Update util code in tests/ to locate skill files at the new locations. +- Update the vally commands in eval.yml to lint every plugin in its step. + +## Scripts + +- Update scripts in scripts/ to support specifying which plugin to deal with +- Update scripts in scripts/ to work on new location of plugin files + + +## Documentation + +- Update vally-eval skill to reference the new file structure +- \ No newline at end of file From 7b2789c9e469d327ebafe93bbc74b8c60b474a1d Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Tue, 14 Jul 2026 16:01:28 -0700 Subject: [PATCH 06/53] preserve changelog after moving plugin file during build --- gulpfile.ts | 58 +++++++- plugins/azure/changelog-2026-07-14.md | 203 ++++++++++++++++++++++++++ 2 files changed, 260 insertions(+), 1 deletion(-) create mode 100644 plugins/azure/changelog-2026-07-14.md diff --git a/gulpfile.ts b/gulpfile.ts index 20fe2bfbf..cb0488872 100644 --- a/gulpfile.ts +++ b/gulpfile.ts @@ -122,6 +122,7 @@ function buildPlugin(plugin: string): Promise { `${pluginSourceDir}/**/*`, `!${pluginSourceDir}/**/version.json`, `!${pluginSourceDir}/CHANGELOG.md`, + `!${pluginSourceDir}/changelog-*.md`, ], { dot: true, encoding: false, base: pluginSourceDir } ) @@ -166,10 +167,48 @@ async function build() { function generateChangelog(plugin: string): void { const pluginDir = path.join("plugins", plugin); + // To preserve old changelog entries after moving plugin files, + // we commit legacy changelog entries and compute a version offset so the + // new generated version numbers keep increasing. + const legacyChangelogFiles = readdirSync(pluginDir, { withFileTypes: true }) + .filter((entry) => entry.isFile() && /^changelog-.*\.md$/i.test(entry.name)) + .map((entry) => entry.name) + .sort((a, b) => b.localeCompare(a)); + + let firstLegacyVersion: string | undefined; + let firstLegacyVersionParts: + | { major: number; minor: number; patch: number } + | undefined; + if (legacyChangelogFiles.length > 0) { + const firstLegacyContent = readFileSync( + path.join(pluginDir, legacyChangelogFiles[0]), + "utf-8" + ); + const firstVersionMatch = firstLegacyContent.match(/\b(\d+)\.(\d+)\.(\d+)\b/); + if (firstVersionMatch) { + firstLegacyVersion = `${firstVersionMatch[1]}.${firstVersionMatch[2]}.${firstVersionMatch[3]}`; + firstLegacyVersionParts = { + major: Number(firstVersionMatch[1]), + minor: Number(firstVersionMatch[2]), + patch: Number(firstVersionMatch[3]), + }; + } + } + const versionJson = JSON.parse( readFileSync(path.join(pluginDir, "version.json"), "utf-8") ); const majorMinor = versionJson.version as string; + const [major, minor] = majorMinor.split(".").map((s) => Number(s)); + + let patchOffset = 0; + if (firstLegacyVersionParts) { + // When major/minor version is higher than the most recent major/minor in the legacy changelog, + // the patch number must have been reset to 0 so we don't need an offset. + if (major === firstLegacyVersionParts.major && minor === firstLegacyVersionParts.minor) { + patchOffset = firstLegacyVersionParts.patch; + } + } // Find the commit that introduced plugins//version.json (the NBGV baseline). const versionJsonPath = `${pluginDir}/version.json`; @@ -219,7 +258,7 @@ function generateChangelog(plugin: string): void { for (let i = filtered.length - 1; i >= 0; i--) { const entry = filtered[i]; - const version = `${majorMinor}.${entry.height}`; + const version = `${majorMinor}.${entry.height + patchOffset}`; // Turn (#NNN) into a markdown link. const subject = entry.subject.replace( /\(#(\d+)\)/g, @@ -228,6 +267,23 @@ function generateChangelog(plugin: string): void { content += `\n## ${version}\n\n- ${subject}\n`; } + // Add all the legacy changelog entries + for (const legacyFile of legacyChangelogFiles) { + const legacyContent = readFileSync(path.join(pluginDir, legacyFile), "utf-8"); + if (!legacyContent) { + continue; + } + + if (!content.endsWith("\n")) { + content += "\n"; + } + content += "\n"; + content += legacyContent; + if (!legacyContent.endsWith("\n")) { + content += "\n"; + } + } + const outputDir = path.join("output", plugin); mkdirSync(outputDir, { recursive: true }); writeFileSync(path.join(outputDir, "CHANGELOG.md"), content, "utf-8"); diff --git a/plugins/azure/changelog-2026-07-14.md b/plugins/azure/changelog-2026-07-14.md new file mode 100644 index 000000000..51dc76aae --- /dev/null +++ b/plugins/azure/changelog-2026-07-14.md @@ -0,0 +1,203 @@ +## 1.1.93 + +- feat: add cicd sub skill ([#2838](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2838)) + +## 1.1.92 + +- fix: clarify canvas-first reminder ([#2837](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2837)) + +## 1.1.91 + +- chore: improve agent instruction and quick start ([#2768](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2768)) + +## 1.1.90 + +- fix: remove azd init from Foundry agent creation ([#2812](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2812)) + +## 1.1.89 + +- feat: update invocations_ws skill for GA and path-based routing ([#2807](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2807)) + +## 1.1.88 + +- eval: migrate azure-compute integration tests to vally eval suite ([#2596](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2596)) + +## 1.1.87 + +- fix: use proper tool to execute query in Azure SQL Server ([#2772](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2772)) + +## 1.1.86 + +- feat: add canvas-first entry gate for Foundry agent creation ([#2775](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2775)) + +## 1.1.85 + +- feature: retire azure-hosted-copilot-sdk skill ([#2556](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2556)) + +## 1.1.84 + +- feat: capture and report skill version in telemetry hooks ([#2763](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2763)) + +## 1.1.83 + +- eval: migrate azure-prepare integration tests to vally eval suites ([#2721](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2721)) + +## 1.1.82 + +- feat: support foundry routine and add it as a sub-skill ([#2743](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2743)) + +## 1.1.81 + +- fix: correct toolbox reference docs from live testing ([#2755](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2755)) + +## 1.1.80 + +- fix(microsoft-foundry): vnet ([#2754](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2754)) + +## 1.1.79 + +- fix: restructure and update skill reference docs for hosted agent creation ([#2737](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2737)) + +## 1.1.78 + +- fix(microsoft-foundry): sync latest azd contract and schema ([#2722](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2722)) + +## 1.1.77 + +- feat: add guardrails reference docs for hosted agent creation ([#2731](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2731)) + +## 1.1.76 + +- fix: Get hooks working in Copilot again ([#2719](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2719)) + +## 1.1.75 + +- feat: improve foundry skill in more real user scenarios. ([#2705](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2705)) + +## 1.1.74 + +- feat: add skill related knowledge into foundry skill ([#2664](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2664)) + +## 1.1.73 + +- fix(microsoft-foundry): improve quick start provision and local run polling ([#2694](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2694)) + +## 1.1.72 + +- fix: add Network Isolation Errors hint to microsoft-foundry SKILL.md ([#2685](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2685)) + +## 1.1.70 + +- feat: improve the hosted agent getting started with coding ([#2610](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2610)) + +## 1.1.69 + +- feat: add python-appservice-deploy skill for Python/Flask/Django/FastAPI on App Service ([#2487](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2487)) + +## 1.1.68 + +- feat(azure-compute): add VM creation workflow with approval gate before deploy ([#2297](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2297)) + +## 1.1.67 + +- feat: (azure-cost) add storage optimization guide and fix token limit ([#2554](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2554)) + +## 1.1.66 + +- eval: migrate infra-planner tests to Vally ([#2483](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2483)) + +## 1.1.64 + +- Fix: hard gate deployment phase for infra-planner skill ([#2427](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2427)) + +## 1.1.59 + +- feat(azure-kubernetes): Update constraint spec references to match what Deployment Safeguards enforces ([#1976](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1976)) + +## 1.1.53 + +- feature: Move quota workflow to a script ([#2360](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2360)) + +## 1.1.52 + +- fix: toolbox skill invocation and foundry samples path ([#2389](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2389)) + +## 1.1.51 + +- feat: support direct code deployment ([#2362](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2362)) + +## 1.1.47 + +- feat(azure-diagnostics/inspektor-gadget): Use correct filter for tcpdump gadget ([#2292](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2292)) + +## 1.1.46 + +- feat(microsoft-foundry): add Tracing Insights API skill for automated anomaly detection ([#2276](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2276)) + +## 1.1.45 + +- fix(microsoft-foundry): update integrate toolbox into hosted-agent flow ([#2264](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2264)) + +## 1.1.41 + +- fix: update foundry-agent invoke skill for invocations protocol ([#2154](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2154)) + +## 1.1.38 + +- fix: improve azure-hosted-copilot-sdk routing for codebase-detection scenarios ([#1857](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1857)) + +## 1.1.33 + +- feature: Feature/azure compute/enablemachinemanagement ([#2069](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2069)) + +## 1.1.30 + +- fix(app-service-templates): address review feedback — discoverability, auth IaC, token refresh, source splits ([#1635](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1635)) + +## 1.1.25 + +- fix: update toolbox sample link ([#2078](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2078)) + +## 1.1.22 + +- fix: Remove context7 MCP server from plugin config ([#2100](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2100)) + +## 1.1.21 + +- feat: Extend `azure-upgrade` skill by adding workflow for migrating legacy Azure SDKs for Java to latest modern ones ([#1901](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1901)) + +## 1.1.19 + +- fix: strengthen azure-resource-lookup routing for web app/website prompts ([#2006](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2006)) + +## 1.1.15 + +- feat: generate CHANGELOG.md at build time from git history ([#2068](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2068)) + +## 1.1.13 + +- chore: update post-deployment rbac assignment logic ([#2057](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2057)) + +## 1.1.12 + +- fix: Add Foundry Toolbox integration to hosted agent create skill ([#2035](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2035)) + +## 1.1.10 + +- fix: strengthen azure-storage routing for storage tiers informational prompts ([#2008](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2008)) + +## 1.1.8 + +- fix(azure-prepare): mandate Active Directory Default in SQL connection strings ([#1937](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1937)) + +## 1.1.7 + +- fix(azure-prepare): fix Aspire AddParameter+WithBuildArg guidance for all azd versions ([#1939](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1939)) + +## 1.1.5 + +- chore: support hosted agent v2 in code gen and deploy skill ([#2000](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2000)) + +## 1.1.3 + +- fix: clarify output directory naming to use workspace root basename ([#1990](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1990)) \ No newline at end of file From 83463bf60787c81cc1cc2fa29a708e089ab724dc Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Tue, 14 Jul 2026 16:01:49 -0700 Subject: [PATCH 07/53] feature: cat emoji --- plugins/cat/skills/cats/SKILL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/cat/skills/cats/SKILL.md b/plugins/cat/skills/cats/SKILL.md index 6f1a871e7..cc9430304 100644 --- a/plugins/cat/skills/cats/SKILL.md +++ b/plugins/cat/skills/cats/SKILL.md @@ -7,4 +7,4 @@ metadata: version: "0.0.0-placeholder" --- -Ends every response with meow. This is my personal preference. \ No newline at end of file +Ends every response with meow and an emoji. This is my personal preference. \ No newline at end of file From 8f7fe1d9b7831c061d51c5481af477e2a3142b9a Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Tue, 14 Jul 2026 16:10:32 -0700 Subject: [PATCH 08/53] Keep azure-skills directory name --- plugins/{azure => azure-skills}/.claude-plugin/plugin.json | 0 plugins/{azure => azure-skills}/.cursor-plugin/plugin.json | 0 plugins/{azure => azure-skills}/.mcp.json | 0 plugins/{azure => azure-skills}/.plugin/plugin.json | 0 plugins/{azure => azure-skills}/LICENSE | 0 plugins/{azure => azure-skills}/README.md | 0 plugins/{azure => azure-skills}/assets/azure-logo.svg | 0 plugins/{azure => azure-skills}/changelog-2026-07-14.md | 0 plugins/{azure => azure-skills}/gemini-extension.json | 0 plugins/{azure => azure-skills}/hooks/claude-hooks.json | 0 plugins/{azure => azure-skills}/hooks/cursor-hooks.json | 0 plugins/{azure => azure-skills}/hooks/hooks.json | 0 plugins/{azure => azure-skills}/hooks/scripts/track-telemetry.ps1 | 0 plugins/{azure => azure-skills}/hooks/scripts/track-telemetry.sh | 0 .../{azure => azure-skills}/skills/airunway-aks-setup/SKILL.md | 0 .../skills/airunway-aks-setup/references/gpu-profiles.md | 0 .../skills/airunway-aks-setup/references/model-sizing.md | 0 .../skills/airunway-aks-setup/references/powershell-notes.md | 0 .../skills/airunway-aks-setup/references/steps/step-1-verify.md | 0 .../airunway-aks-setup/references/steps/step-2-controller.md | 0 .../skills/airunway-aks-setup/references/steps/step-3-gpu.md | 0 .../skills/airunway-aks-setup/references/steps/step-4-provider.md | 0 .../skills/airunway-aks-setup/references/steps/step-5-deploy.md | 0 .../skills/airunway-aks-setup/references/steps/step-6-summary.md | 0 .../skills/airunway-aks-setup/references/troubleshooting.md | 0 .../skills/airunway-aks-setup/version.json | 0 .../skills/appinsights-instrumentation/LICENSE.txt | 0 .../skills/appinsights-instrumentation/SKILL.md | 0 .../skills/appinsights-instrumentation/examples/appinsights.bicep | 0 .../skills/appinsights-instrumentation/references/aspnetcore.md | 0 .../skills/appinsights-instrumentation/references/auto.md | 0 .../appinsights-instrumentation/references/container-apps.md | 0 .../skills/appinsights-instrumentation/references/nodejs.md | 0 .../skills/appinsights-instrumentation/references/python.md | 0 .../references/sdk/azure-monitor-opentelemetry-exporter-java.md | 0 .../references/sdk/azure-monitor-opentelemetry-exporter-py.md | 0 .../references/sdk/azure-monitor-opentelemetry-py.md | 0 .../references/sdk/azure-monitor-opentelemetry-ts.md | 0 .../skills/appinsights-instrumentation/scripts/appinsights.ps1 | 0 plugins/{azure => azure-skills}/skills/azure-ai/SKILL.md | 0 .../skills/azure-ai/references/auth-best-practices.md | 0 .../skills/azure-ai/references/sdk/azure-ai-contentsafety-java.md | 0 .../skills/azure-ai/references/sdk/azure-ai-contentsafety-py.md | 0 .../skills/azure-ai/references/sdk/azure-ai-contentsafety-ts.md | 0 .../references/sdk/azure-ai-document-intelligence-dotnet.md | 0 .../azure-ai/references/sdk/azure-ai-document-intelligence-ts.md | 0 .../skills/azure-ai/references/sdk/azure-ai-openai-dotnet.md | 0 .../skills/azure-ai/references/sdk/azure-ai-transcription-py.md | 0 .../azure-ai/references/sdk/azure-ai-translation-text-py.md | 0 .../skills/azure-ai/references/sdk/azure-ai-translation-ts.md | 0 .../azure-ai/references/sdk/azure-ai-vision-imageanalysis-java.md | 0 .../azure-ai/references/sdk/azure-ai-vision-imageanalysis-py.md | 0 .../azure-ai/references/sdk/azure-search-documents-dotnet.md | 0 .../skills/azure-ai/references/sdk/azure-search-documents-py.md | 0 .../skills/azure-ai/references/sdk/azure-search-documents-ts.md | 0 plugins/{azure => azure-skills}/skills/azure-ai/version.json | 0 plugins/{azure => azure-skills}/skills/azure-aigateway/SKILL.md | 0 .../skills/azure-aigateway/references/auth-best-practices.md | 0 .../skills/azure-aigateway/references/patterns.md | 0 .../skills/azure-aigateway/references/policies.md | 0 .../azure-aigateway/references/sdk/azure-ai-contentsafety-py.md | 0 .../azure-aigateway/references/sdk/azure-ai-contentsafety-ts.md | 0 .../references/sdk/azure-mgmt-apimanagement-dotnet.md | 0 .../azure-aigateway/references/sdk/azure-mgmt-apimanagement-py.md | 0 .../skills/azure-aigateway/references/troubleshooting.md | 0 .../{azure => azure-skills}/skills/azure-aigateway/version.json | 0 .../{azure => azure-skills}/skills/azure-cloud-migrate/SKILL.md | 0 .../references/services/app-service/app-engine-to-app-service.md | 0 .../references/services/app-service/assessment.md | 0 .../references/services/app-service/beanstalk-to-app-service.md | 0 .../references/services/app-service/code-migration.md | 0 .../references/services/app-service/global-rules.md | 0 .../references/services/app-service/heroku-to-app-service.md | 0 .../references/services/container-apps/assessment-guide.md | 0 .../services/container-apps/cloudrun-assessment-guide.md | 0 .../services/container-apps/cloudrun-deployment-guide.md | 0 .../services/container-apps/cloudrun-to-container-apps.md | 0 .../references/services/container-apps/deployment-guide.md | 0 .../services/container-apps/fargate-assessment-guide.md | 0 .../services/container-apps/fargate-deployment-guide.md | 0 .../services/container-apps/fargate-to-container-apps.md | 0 .../references/services/container-apps/k8s-to-container-apps.md | 0 .../references/services/container-apps/spring-apps-to-aca.md | 0 .../references/services/container-apps/spring-assessment-guide.md | 0 .../services/container-apps/spring-dependency-patterns.md | 0 .../references/services/container-apps/spring-deployment-guide.md | 0 .../references/services/functions/assessment.md | 0 .../references/services/functions/code-migration.md | 0 .../references/services/functions/global-rules.md | 0 .../references/services/functions/lambda-to-functions.md | 0 .../references/services/functions/runtimes/csharp.md | 0 .../references/services/functions/runtimes/java.md | 0 .../references/services/functions/runtimes/javascript.md | 0 .../references/services/functions/runtimes/powershell.md | 0 .../references/services/functions/runtimes/python.md | 0 .../references/services/functions/runtimes/typescript.md | 0 .../skills/azure-cloud-migrate/references/workflow-details.md | 0 .../skills/azure-cloud-migrate/version.json | 0 plugins/{azure => azure-skills}/skills/azure-compliance/SKILL.md | 0 .../skills/azure-compliance/references/auth-best-practices.md | 0 .../skills/azure-compliance/references/azqr-recommendations.md | 0 .../azure-compliance/references/azqr-remediation-patterns.md | 0 .../references/azure-keyvault-expiration-audit.md | 0 .../skills/azure-compliance/references/azure-quick-review.md | 0 .../skills/azure-compliance/references/azure-resource-graph.md | 0 .../references/sdk/azure-keyvault-certificates-rust.md | 0 .../azure-compliance/references/sdk/azure-keyvault-keys-rust.md | 0 .../azure-compliance/references/sdk/azure-keyvault-keys-ts.md | 0 .../skills/azure-compliance/references/sdk/azure-keyvault-py.md | 0 .../references/sdk/azure-keyvault-secrets-rust.md | 0 .../azure-compliance/references/sdk/azure-keyvault-secrets-ts.md | 0 .../references/sdk/azure-security-keyvault-keys-dotnet.md | 0 .../references/sdk/azure-security-keyvault-keys-java.md | 0 .../references/sdk/azure-security-keyvault-secrets-java.md | 0 .../{azure => azure-skills}/skills/azure-compliance/version.json | 0 plugins/{azure => azure-skills}/skills/azure-compute/SKILL.md | 0 .../skills/azure-compute/references/retail-prices-api.md | 0 .../skills/azure-compute/references/vm-families.md | 0 .../skills/azure-compute/references/vm-quotas.md | 0 .../skills/azure-compute/references/vmss-guide.md | 0 plugins/{azure => azure-skills}/skills/azure-compute/version.json | 0 .../workflows/capacity-reservation/capacity-reservation.md | 0 .../capacity-reservation/references/association-disassociation.md | 0 .../references/capacity-reservation-overview.md | 0 .../essential-machine-management/essential-machine-management.md | 0 .../references/emm-enable-flow-portal-guidance.md | 0 .../essential-machine-management/references/emm-enable-flow.md | 0 .../essential-machine-management/references/emm-overview.md | 0 .../essential-machine-management/references/emm-prerequisites.md | 0 .../azure-compute/workflows/vm-creator/examples/bicep/README.md | 0 .../azure-compute/workflows/vm-creator/examples/bicep/main.bicep | 0 .../workflows/vm-creator/examples/terraform/README.md | 0 .../azure-compute/workflows/vm-creator/examples/terraform/main.tf | 0 .../workflows/vm-creator/examples/terraform/outputs.tf | 0 .../workflows/vm-creator/examples/terraform/variables.tf | 0 .../workflows/vm-creator/references/delivery-options/github-pr.md | 0 .../workflows/vm-creator/references/delivery-options/index.md | 0 .../workflows/vm-creator/references/delivery-options/print.md | 0 .../vm-creator/references/delivery-options/save-local.md | 0 .../workflows/vm-creator/references/depth-probe/beginner.md | 0 .../workflows/vm-creator/references/depth-probe/cost-deep.md | 0 .../workflows/vm-creator/references/depth-probe/index.md | 0 .../vm-creator/references/depth-probe/networking-deep.md | 0 .../workflows/vm-creator/references/depth-probe/security-deep.md | 0 .../workflows/vm-creator/references/depth-probe/spec-deep.md | 0 .../azure-compute/workflows/vm-creator/references/mcp-tools.md | 0 .../workflows/vm-creator/references/output-adapters/az-cli.md | 0 .../workflows/vm-creator/references/output-adapters/bicep.md | 0 .../workflows/vm-creator/references/output-adapters/index.md | 0 .../workflows/vm-creator/references/output-adapters/mcp-apply.md | 0 .../workflows/vm-creator/references/output-adapters/terraform.md | 0 .../azure-compute/workflows/vm-creator/references/plan-card.md | 0 .../workflows/vm-creator/references/validation-gates.md | 0 .../skills/azure-compute/workflows/vm-creator/vm-creator.md | 0 .../workflows/vm-recommender/references/handoff-to-creator.md | 0 .../workflows/vm-recommender/references/web-fetch-policy.md | 0 .../azure-compute/workflows/vm-recommender/vm-recommender.md | 0 .../vm-troubleshooter/references/cannot-connect-to-vm.md | 0 .../vm-troubleshooter/references/credential-auth-errors.md | 0 .../workflows/vm-troubleshooter/references/firewall-blocking.md | 0 .../vm-troubleshooter/references/network-connectivity.md | 0 .../workflows/vm-troubleshooter/references/rdp-connectivity.md | 0 .../workflows/vm-troubleshooter/references/rdp-service-config.md | 0 .../workflows/vm-troubleshooter/references/ssh-connectivity.md | 0 .../vm-troubleshooter/references/vm-agent-not-responding.md | 0 .../workflows/vm-troubleshooter/vm-troubleshooter.md | 0 plugins/{azure => azure-skills}/skills/azure-cost/SKILL.md | 0 .../skills/azure-cost/cost-forecast/error-handling.md | 0 .../skills/azure-cost/cost-forecast/examples.md | 0 .../skills/azure-cost/cost-forecast/guardrails.md | 0 .../skills/azure-cost/cost-forecast/request-body-schema.md | 0 .../skills/azure-cost/cost-forecast/workflow.md | 0 .../skills/azure-cost/cost-optimization/auth-best-practices.md | 0 .../skills/azure-cost/cost-optimization/azure-aks-anomalies.md | 0 .../skills/azure-cost/cost-optimization/azure-aks-cost-addon.md | 0 .../skills/azure-cost/cost-optimization/azure-quick-review.md | 0 .../skills/azure-cost/cost-optimization/azure-resource-graph.md | 0 .../skills/azure-cost/cost-optimization/report-template.md | 0 .../cost-optimization/sdk/azure-resource-manager-redis-dotnet.md | 0 .../cost-optimization/services/redis/azure-cache-for-redis.md | 0 .../cost-optimization/services/storage/azure-storage.md | 0 .../skills/azure-cost/cost-optimization/workflow.md | 0 .../skills/azure-cost/cost-query/dimensions-by-scope.md | 0 .../skills/azure-cost/cost-query/error-handling.md | 0 .../skills/azure-cost/cost-query/examples.md | 0 .../skills/azure-cost/cost-query/guardrails.md | 0 .../skills/azure-cost/cost-query/request-body-schema.md | 0 .../skills/azure-cost/cost-query/workflow.md | 0 .../skills/azure-cost/references/tools-and-best-practices.md | 0 plugins/{azure => azure-skills}/skills/azure-cost/version.json | 0 plugins/{azure => azure-skills}/skills/azure-deploy/SKILL.md | 0 .../skills/azure-deploy/references/auth-best-practices.md | 0 .../skills/azure-deploy/references/global-rules.md | 0 .../skills/azure-deploy/references/live-role-verification.md | 0 .../skills/azure-deploy/references/pre-deploy-checklist.md | 0 .../skills/azure-deploy/references/recipes/README.md | 0 .../skills/azure-deploy/references/recipes/azcli/README.md | 0 .../skills/azure-deploy/references/recipes/azcli/errors.md | 0 .../skills/azure-deploy/references/recipes/azcli/verify.md | 0 .../skills/azure-deploy/references/recipes/azd/README.md | 0 .../skills/azure-deploy/references/recipes/azd/ef-migrations.md | 0 .../skills/azure-deploy/references/recipes/azd/errors.md | 0 .../azure-deploy/references/recipes/azd/functions-deploy.md | 0 .../skills/azure-deploy/references/recipes/azd/post-deployment.md | 0 .../references/recipes/azd/scripts/apply-migrations.ps1 | 0 .../references/recipes/azd/scripts/apply-migrations.sh | 0 .../references/recipes/azd/scripts/grant-and-migrate.ps1 | 0 .../references/recipes/azd/scripts/grant-and-migrate.sh | 0 .../skills/azure-deploy/references/recipes/azd/sql-entra-auth.md | 0 .../azure-deploy/references/recipes/azd/sql-managed-identity.md | 0 .../skills/azure-deploy/references/recipes/azd/verify.md | 0 .../skills/azure-deploy/references/recipes/bicep/README.md | 0 .../skills/azure-deploy/references/recipes/bicep/errors.md | 0 .../skills/azure-deploy/references/recipes/bicep/verify.md | 0 .../skills/azure-deploy/references/recipes/cicd/README.md | 0 .../skills/azure-deploy/references/recipes/cicd/errors.md | 0 .../azure-deploy/references/recipes/cicd/examples/azdo-azd.yml | 0 .../references/recipes/cicd/examples/azdo-multistage.yml | 0 .../azure-deploy/references/recipes/cicd/examples/github-azd.yml | 0 .../references/recipes/cicd/examples/github-bicep.yml | 0 .../skills/azure-deploy/references/recipes/cicd/verify.md | 0 .../skills/azure-deploy/references/recipes/terraform/README.md | 0 .../skills/azure-deploy/references/recipes/terraform/errors.md | 0 .../skills/azure-deploy/references/recipes/terraform/verify.md | 0 .../skills/azure-deploy/references/region-availability.md | 0 .../skills/azure-deploy/references/sdk/azd-deployment.md | 0 .../skills/azure-deploy/references/sdk/azure-identity-dotnet.md | 0 .../skills/azure-deploy/references/sdk/azure-identity-java.md | 0 .../skills/azure-deploy/references/sdk/azure-identity-py.md | 0 .../skills/azure-deploy/references/sdk/azure-identity-ts.md | 0 .../skills/azure-deploy/references/troubleshooting.md | 0 plugins/{azure => azure-skills}/skills/azure-deploy/version.json | 0 plugins/{azure => azure-skills}/skills/azure-diagnostics/SKILL.md | 0 .../skills/azure-diagnostics/references/app-service/README.md | 0 .../skills/azure-diagnostics/references/azure-resource-graph.md | 0 .../skills/azure-diagnostics/references/container-apps/README.md | 0 .../skills/azure-diagnostics/references/functions/README.md | 0 .../skills/azure-diagnostics/references/kql-queries.md | 0 .../azure-diagnostics/troubleshooting/aks/aks-troubleshooting.md | 0 .../azure-diagnostics/troubleshooting/aks/general-diagnostics.md | 0 .../troubleshooting/aks/load-balancer-and-ingress.md | 0 .../azure-diagnostics/troubleshooting/aks/network-policy.md | 0 .../skills/azure-diagnostics/troubleshooting/aks/networking.md | 0 .../skills/azure-diagnostics/troubleshooting/aks/node-issues.md | 0 .../skills/azure-diagnostics/troubleshooting/aks/pod-failures.md | 0 .../azure-diagnostics/troubleshooting/aks/references/aks-mcp.md | 0 .../troubleshooting/aks/references/command-flows.md | 0 .../troubleshooting/aks/references/inspektor-gadget.md | 0 .../troubleshooting/aks/references/structured-input-modes.md | 0 .../azure-diagnostics/troubleshooting/aks/spot-and-zone-issues.md | 0 .../azure-diagnostics/troubleshooting/aks/upgrade-operations.md | 0 .../skills/azure-diagnostics/troubleshooting/messaging/README.md | 0 .../troubleshooting/messaging/auth-best-practices.md | 0 .../troubleshooting/messaging/azure-eventhubs-dotnet.md | 0 .../troubleshooting/messaging/azure-eventhubs-java.md | 0 .../troubleshooting/messaging/azure-eventhubs-js.md | 0 .../troubleshooting/messaging/azure-eventhubs-py.md | 0 .../troubleshooting/messaging/azure-servicebus-dotnet.md | 0 .../troubleshooting/messaging/azure-servicebus-java.md | 0 .../troubleshooting/messaging/azure-servicebus-js.md | 0 .../troubleshooting/messaging/azure-servicebus-py.md | 0 .../troubleshooting/messaging/service-troubleshooting.md | 0 .../{azure => azure-skills}/skills/azure-diagnostics/version.json | 0 .../skills/azure-enterprise-infra-planner/SKILL.md | 0 .../azure-enterprise-infra-planner/references/bicep-generation.md | 0 .../references/constraints/README.md | 0 .../references/constraints/ai-ml.md | 0 .../references/constraints/compute-apps.md | 0 .../references/constraints/compute-infra.md | 0 .../references/constraints/data-analytics.md | 0 .../references/constraints/data-relational.md | 0 .../references/constraints/messaging.md | 0 .../references/constraints/monitoring.md | 0 .../references/constraints/networking-connectivity.md | 0 .../references/constraints/networking-core.md | 0 .../references/constraints/networking-traffic.md | 0 .../references/constraints/security.md | 0 .../azure-enterprise-infra-planner/references/deployment.md | 0 .../azure-enterprise-infra-planner/references/pairing-checks.md | 0 .../references/phases/1-extract-insights.md | 0 .../references/phases/2-research-best-practices.md | 0 .../references/phases/3-research-resources.md | 0 .../references/phases/4-generate-plan.md | 0 .../azure-enterprise-infra-planner/references/phases/5-verify.md | 0 .../references/phases/6-generate-iac.md | 0 .../azure-enterprise-infra-planner/references/phases/7-deploy.md | 0 .../azure-enterprise-infra-planner/references/resources/README.md | 0 .../azure-enterprise-infra-planner/references/resources/ai-ml.md | 0 .../references/resources/compute-apps.md | 0 .../references/resources/compute-infra.md | 0 .../references/resources/data-analytics.md | 0 .../references/resources/data-relational.md | 0 .../references/resources/messaging.md | 0 .../references/resources/monitoring.md | 0 .../references/resources/networking-connectivity.md | 0 .../references/resources/networking-core.md | 0 .../references/resources/networking-traffic.md | 0 .../references/resources/security.md | 0 .../skills/azure-enterprise-infra-planner/references/schema.md | 0 .../references/terraform-generation.md | 0 .../azure-enterprise-infra-planner/references/verification.md | 0 .../azure-enterprise-infra-planner/references/waf-checklist.md | 0 .../skills/azure-enterprise-infra-planner/references/workflow.md | 0 .../skills/azure-enterprise-infra-planner/version.json | 0 plugins/{azure => azure-skills}/skills/azure-kubernetes/SKILL.md | 0 .../azure-kubernetes-automatic-readiness/SKILL.md | 0 .../references/common-fixes.md | 0 .../references/constraint-spec-v1.yaml | 0 .../references/mcp-integration.md | 0 .../references/migration-guide-summary.md | 0 .../skills/azure-kubernetes/references/azure-aks-autoscaler.md | 0 .../skills/azure-kubernetes/references/azure-aks-rightsizing.md | 0 .../skills/azure-kubernetes/references/azure-aks-spot.md | 0 .../skills/azure-kubernetes/references/azure-aks-vpa.md | 0 .../skills/azure-kubernetes/references/cli-reference.md | 0 .../{azure => azure-skills}/skills/azure-kubernetes/version.json | 0 plugins/{azure => azure-skills}/skills/azure-kusto/SKILL.md | 0 plugins/{azure => azure-skills}/skills/azure-kusto/version.json | 0 plugins/{azure => azure-skills}/skills/azure-messaging/SKILL.md | 0 .../{azure => azure-skills}/skills/azure-messaging/version.json | 0 plugins/{azure => azure-skills}/skills/azure-prepare/SKILL.md | 0 .../skills/azure-prepare/references/analyze.md | 0 .../skills/azure-prepare/references/apim.md | 0 .../skills/azure-prepare/references/architecture.md | 0 .../skills/azure-prepare/references/aspire.md | 0 .../skills/azure-prepare/references/auth-best-practices.md | 0 .../skills/azure-prepare/references/azure-context.md | 0 .../skills/azure-prepare/references/functional-verification.md | 0 .../skills/azure-prepare/references/generate.md | 0 .../skills/azure-prepare/references/global-rules.md | 0 .../skills/azure-prepare/references/plan-template.md | 0 .../skills/azure-prepare/references/recipe-selection.md | 0 .../skills/azure-prepare/references/recipes/azcli/README.md | 0 .../skills/azure-prepare/references/recipes/azcli/commands.md | 0 .../skills/azure-prepare/references/recipes/azcli/scripts.md | 0 .../skills/azure-prepare/references/recipes/azd/README.md | 0 .../skills/azure-prepare/references/recipes/azd/aspire.md | 0 .../skills/azure-prepare/references/recipes/azd/azure-yaml.md | 0 .../skills/azure-prepare/references/recipes/azd/docker.md | 0 .../skills/azure-prepare/references/recipes/azd/iac-rules.md | 0 .../skills/azure-prepare/references/recipes/azd/terraform.md | 0 .../skills/azure-prepare/references/recipes/bicep/README.md | 0 .../skills/azure-prepare/references/recipes/bicep/patterns.md | 0 .../skills/azure-prepare/references/recipes/terraform/README.md | 0 .../skills/azure-prepare/references/recipes/terraform/patterns.md | 0 .../skills/azure-prepare/references/region-availability.md | 0 .../skills/azure-prepare/references/requirements.md | 0 .../skills/azure-prepare/references/research.md | 0 .../skills/azure-prepare/references/resources-limits-quotas.md | 0 .../skills/azure-prepare/references/runtimes/nodejs.md | 0 .../skills/azure-prepare/references/scan.md | 0 .../skills/azure-prepare/references/sdk/azd-deployment.md | 0 .../azure-prepare/references/sdk/azure-appconfiguration-java.md | 0 .../azure-prepare/references/sdk/azure-appconfiguration-py.md | 0 .../azure-prepare/references/sdk/azure-appconfiguration-ts.md | 0 .../skills/azure-prepare/references/sdk/azure-identity-dotnet.md | 0 .../skills/azure-prepare/references/sdk/azure-identity-java.md | 0 .../skills/azure-prepare/references/sdk/azure-identity-py.md | 0 .../skills/azure-prepare/references/sdk/azure-identity-ts.md | 0 .../skills/azure-prepare/references/security.md | 0 .../skills/azure-prepare/references/services/aks/README.md | 0 .../skills/azure-prepare/references/services/aks/addons.md | 0 .../skills/azure-prepare/references/services/aks/bicep.md | 0 .../skills/azure-prepare/references/services/aks/manifests.md | 0 .../azure-prepare/references/services/app-insights/README.md | 0 .../azure-prepare/references/services/app-service/README.md | 0 .../skills/azure-prepare/references/services/app-service/bicep.md | 0 .../references/services/app-service/custom-domains.md | 0 .../references/services/app-service/deployment-slots.md | 0 .../azure-prepare/references/services/app-service/networking.md | 0 .../azure-prepare/references/services/app-service/scaling.md | 0 .../references/services/app-service/sku-selection.md | 0 .../references/services/app-service/templates/recipes/README.md | 0 .../services/app-service/templates/recipes/auth/README.md | 0 .../services/app-service/templates/recipes/auth/source/dotnet.md | 0 .../services/app-service/templates/recipes/auth/source/nodejs.md | 0 .../services/app-service/templates/recipes/auth/source/python.md | 0 .../services/app-service/templates/recipes/composition.md | 0 .../services/app-service/templates/recipes/cosmos/README.md | 0 .../app-service/templates/recipes/cosmos/source/dotnet.md | 0 .../app-service/templates/recipes/cosmos/source/nodejs.md | 0 .../app-service/templates/recipes/cosmos/source/python.md | 0 .../services/app-service/templates/recipes/redis/README.md | 0 .../services/app-service/templates/recipes/redis/source/dotnet.md | 0 .../services/app-service/templates/recipes/redis/source/nodejs.md | 0 .../services/app-service/templates/recipes/redis/source/python.md | 0 .../services/app-service/templates/recipes/sql/README.md | 0 .../services/app-service/templates/recipes/sql/source/dotnet.md | 0 .../services/app-service/templates/recipes/sql/source/nodejs.md | 0 .../services/app-service/templates/recipes/sql/source/python.md | 0 .../references/services/app-service/templates/selection.md | 0 .../references/services/app-service/templates/web-api.md | 0 .../references/services/app-service/templates/web-app.md | 0 .../azure-prepare/references/services/container-apps/README.md | 0 .../azure-prepare/references/services/container-apps/bicep.md | 0 .../references/services/container-apps/day2-operations.md | 0 .../references/services/container-apps/environment.md | 0 .../references/services/container-apps/health-probes.md | 0 .../references/services/container-apps/networking.md | 0 .../azure-prepare/references/services/container-apps/revisions.md | 0 .../azure-prepare/references/services/container-apps/scaling.md | 0 .../azure-prepare/references/services/container-apps/terraform.md | 0 .../skills/azure-prepare/references/services/cosmos-db/README.md | 0 .../skills/azure-prepare/references/services/cosmos-db/bicep.md | 0 .../azure-prepare/references/services/cosmos-db/partitioning.md | 0 .../skills/azure-prepare/references/services/cosmos-db/sdk.md | 0 .../references/services/durable-task-scheduler/README.md | 0 .../references/services/durable-task-scheduler/bicep.md | 0 .../references/services/durable-task-scheduler/dotnet.md | 0 .../references/services/durable-task-scheduler/java.md | 0 .../references/services/durable-task-scheduler/javascript.md | 0 .../references/services/durable-task-scheduler/python.md | 0 .../skills/azure-prepare/references/services/event-grid/README.md | 0 .../skills/azure-prepare/references/services/event-grid/bicep.md | 0 .../azure-prepare/references/services/event-grid/subscriptions.md | 0 .../skills/azure-prepare/references/services/foundry/README.md | 0 .../references/services/foundry/region-availability.md | 0 .../skills/azure-prepare/references/services/functions/README.md | 0 .../references/services/functions/aspire-containerapps.md | 0 .../skills/azure-prepare/references/services/functions/bicep.md | 0 .../skills/azure-prepare/references/services/functions/durable.md | 0 .../references/services/functions/templates/README.md | 0 .../references/services/functions/templates/base/eval/python.md | 0 .../references/services/functions/templates/base/eval/summary.md | 0 .../services/functions/templates/base/eval/typescript.md | 0 .../references/services/functions/templates/recipes/README.md | 0 .../services/functions/templates/recipes/blob-eventgrid/README.md | 0 .../functions/templates/recipes/blob-eventgrid/eval/python.md | 0 .../functions/templates/recipes/blob-eventgrid/eval/summary.md | 0 .../functions/templates/recipes/common/dotnet-entry-point.md | 0 .../services/functions/templates/recipes/common/error-handling.md | 0 .../services/functions/templates/recipes/common/health-check.md | 0 .../functions/templates/recipes/common/nodejs-entry-point.md | 0 .../services/functions/templates/recipes/composition.md | 0 .../services/functions/templates/recipes/cosmosdb/README.md | 0 .../services/functions/templates/recipes/cosmosdb/eval/python.md | 0 .../services/functions/templates/recipes/cosmosdb/eval/summary.md | 0 .../functions/templates/recipes/cosmosdb/eval/typescript.md | 0 .../services/functions/templates/recipes/durable/README.md | 0 .../services/functions/templates/recipes/durable/eval/python.md | 0 .../services/functions/templates/recipes/durable/eval/summary.md | 0 .../services/functions/templates/recipes/eventhubs/README.md | 0 .../services/functions/templates/recipes/eventhubs/eval/python.md | 0 .../functions/templates/recipes/eventhubs/eval/summary.md | 0 .../references/services/functions/templates/recipes/mcp/README.md | 0 .../services/functions/templates/recipes/mcp/eval/python.md | 0 .../services/functions/templates/recipes/mcp/eval/summary.md | 0 .../services/functions/templates/recipes/servicebus/README.md | 0 .../functions/templates/recipes/servicebus/eval/python.md | 0 .../functions/templates/recipes/servicebus/eval/summary.md | 0 .../functions/templates/recipes/servicebus/eval/typescript.md | 0 .../references/services/functions/templates/recipes/sql/README.md | 0 .../services/functions/templates/recipes/sql/eval/python.md | 0 .../services/functions/templates/recipes/sql/eval/summary.md | 0 .../services/functions/templates/recipes/timer/README.md | 0 .../services/functions/templates/recipes/timer/eval/python.md | 0 .../services/functions/templates/recipes/timer/eval/summary.md | 0 .../references/services/functions/templates/selection.md | 0 .../azure-prepare/references/services/functions/terraform.md | 0 .../skills/azure-prepare/references/services/key-vault/README.md | 0 .../skills/azure-prepare/references/services/key-vault/bicep.md | 0 .../skills/azure-prepare/references/services/key-vault/sdk.md | 0 .../skills/azure-prepare/references/services/logic-apps/README.md | 0 .../skills/azure-prepare/references/services/logic-apps/bicep.md | 0 .../azure-prepare/references/services/logic-apps/triggers.md | 0 .../azure-prepare/references/services/service-bus/README.md | 0 .../skills/azure-prepare/references/services/service-bus/bicep.md | 0 .../azure-prepare/references/services/service-bus/patterns.md | 0 .../azure-prepare/references/services/sql-database/README.md | 0 .../skills/azure-prepare/references/services/sql-database/auth.md | 0 .../azure-prepare/references/services/sql-database/bicep.md | 0 .../references/services/sql-database/scripts/grant-sql-access.ps1 | 0 .../references/services/sql-database/scripts/grant-sql-access.sh | 0 .../skills/azure-prepare/references/services/sql-database/sdk.md | 0 .../azure-prepare/references/services/static-web-apps/README.md | 0 .../azure-prepare/references/services/static-web-apps/bicep.md | 0 .../references/services/static-web-apps/deployment.md | 0 .../references/services/static-web-apps/region-availability.md | 0 .../azure-prepare/references/services/static-web-apps/routing.md | 0 .../references/services/static-web-apps/terraform.md | 0 .../skills/azure-prepare/references/services/storage/README.md | 0 .../skills/azure-prepare/references/services/storage/access.md | 0 .../skills/azure-prepare/references/services/storage/bicep.md | 0 .../skills/azure-prepare/references/specialized-routing.md | 0 plugins/{azure => azure-skills}/skills/azure-prepare/version.json | 0 plugins/{azure => azure-skills}/skills/azure-quotas/SKILL.md | 0 .../skills/azure-quotas/references/advanced-commands.md | 0 .../skills/azure-quotas/references/commands.md | 0 .../skills/azure-quotas/scripts/check-quota.ps1 | 0 .../skills/azure-quotas/scripts/check-quota.sh | 0 plugins/{azure => azure-skills}/skills/azure-quotas/version.json | 0 plugins/{azure => azure-skills}/skills/azure-rbac/version.json | 0 plugins/{azure => azure-skills}/skills/azure-reliability/SKILL.md | 0 .../azure-reliability/references/configure-health-probes.md | 0 .../skills/azure-reliability/references/configure-multi-region.md | 0 .../skills/azure-reliability/references/configure-storage.md | 0 .../azure-reliability/references/configure-zone-redundancy.md | 0 .../skills/azure-reliability/references/health-probe-checks.md | 0 .../skills/azure-reliability/references/iac-patching-bicep.md | 0 .../skills/azure-reliability/references/iac-patching-terraform.md | 0 .../skills/azure-reliability/references/multi-region-checks.md | 0 .../references/services/app-service/reliability.md | 0 .../references/services/functions/reliability.md | 0 .../azure-reliability/references/storage-redundancy-checks.md | 0 .../skills/azure-reliability/references/zone-redundancy-checks.md | 0 .../{azure => azure-skills}/skills/azure-reliability/version.json | 0 .../{azure => azure-skills}/skills/azure-resource-lookup/SKILL.md | 0 .../azure-resource-lookup/references/azure-resource-graph.md | 0 .../skills/azure-resource-lookup/version.json | 0 .../skills/azure-resource-visualizer/SKILL.md | 0 .../skills/azure-resource-visualizer/assets/example-diagram.md | 0 .../azure-resource-visualizer/assets/template-architecture.md | 0 .../azure-resource-visualizer/references/azure-resource-graph.md | 0 .../skills/azure-resource-visualizer/version.json | 0 plugins/{azure => azure-skills}/skills/azure-storage/SKILL.md | 0 .../skills/azure-storage/references/auth-best-practices.md | 0 .../skills/azure-storage/references/sdk-usage.md | 0 .../skills/azure-storage/references/sdk/azure-data-tables-java.md | 0 .../skills/azure-storage/references/sdk/azure-data-tables-py.md | 0 .../azure-storage/references/sdk/azure-storage-blob-java.md | 0 .../skills/azure-storage/references/sdk/azure-storage-blob-py.md | 0 .../azure-storage/references/sdk/azure-storage-blob-rust.md | 0 .../skills/azure-storage/references/sdk/azure-storage-blob-ts.md | 0 .../references/sdk/azure-storage-file-datalake-py.md | 0 .../azure-storage/references/sdk/azure-storage-file-share-py.md | 0 .../azure-storage/references/sdk/azure-storage-file-share-ts.md | 0 .../skills/azure-storage/references/sdk/azure-storage-queue-py.md | 0 .../skills/azure-storage/references/sdk/azure-storage-queue-ts.md | 0 plugins/{azure => azure-skills}/skills/azure-storage/version.json | 0 plugins/{azure => azure-skills}/skills/azure-upgrade/SKILL.md | 0 .../skills/azure-upgrade/references/global-rules.md | 0 .../skills/azure-upgrade/references/languages/java/INSTRUCTION.md | 0 .../skills/azure-upgrade/references/languages/java/README.md | 0 .../languages/java/bom-migration/bom-gradle-settings.md | 0 .../references/languages/java/bom-migration/bom-gradle-toml.md | 0 .../references/languages/java/bom-migration/bom-gradle.md | 0 .../references/languages/java/bom-migration/bom-maven.md | 0 .../references/languages/java/bom-migration/bom-migration.md | 0 .../references/languages/java/bom-migration/bom-validation.md | 0 .../package-specific/com.microsoft.azure.eventprocessorhost.md | 0 .../java/package-specific/com.microsoft.azure.management.md | 0 .../azure-upgrade/references/languages/java/rules/efficiency.md | 0 .../references/languages/java/rules/execution-guidelines.md | 0 .../references/languages/java/rules/review-code-changes.md | 0 .../references/languages/java/rules/troubleshooting.md | 0 .../references/languages/java/rules/upgrade-strategy.md | 0 .../references/languages/java/rules/upgrade-success-criteria.md | 0 .../references/languages/java/scripts/upgrade_bom.py | 0 .../references/languages/java/templates/PLAN_TEMPLATE.md | 0 .../references/languages/java/templates/PROGRESS_TEMPLATE.md | 0 .../references/languages/java/templates/SUMMARY_TEMPLATE.md | 0 .../references/languages/java/workflow/phase-1-precheck.md | 0 .../references/languages/java/workflow/phase-2-plan.md | 0 .../references/languages/java/workflow/phase-3-execute.md | 0 .../references/languages/java/workflow/phase-4-summarize.md | 0 .../azure-upgrade/references/services/functions/assessment.md | 0 .../azure-upgrade/references/services/functions/automation.md | 0 .../references/services/functions/consumption-to-flex.md | 0 .../azure-upgrade/references/services/redis/redis-to-amr.md | 0 .../skills/azure-upgrade/references/workflow-details.md | 0 plugins/{azure => azure-skills}/skills/azure-upgrade/version.json | 0 plugins/{azure => azure-skills}/skills/azure-validate/SKILL.md | 0 .../skills/azure-validate/references/aspire-functions-secrets.md | 0 .../skills/azure-validate/references/global-rules.md | 0 .../skills/azure-validate/references/policy-validation.md | 0 .../skills/azure-validate/references/recipes/README.md | 0 .../skills/azure-validate/references/recipes/azcli/README.md | 0 .../skills/azure-validate/references/recipes/azcli/errors.md | 0 .../skills/azure-validate/references/recipes/azd/README.md | 0 .../skills/azure-validate/references/recipes/azd/aspire.md | 0 .../skills/azure-validate/references/recipes/azd/environment.md | 0 .../skills/azure-validate/references/recipes/azd/errors.md | 0 .../skills/azure-validate/references/recipes/bicep/README.md | 0 .../skills/azure-validate/references/recipes/bicep/errors.md | 0 .../skills/azure-validate/references/recipes/terraform/README.md | 0 .../skills/azure-validate/references/recipes/terraform/errors.md | 0 .../skills/azure-validate/references/region-availability.md | 0 .../skills/azure-validate/references/role-verification.md | 0 .../{azure => azure-skills}/skills/azure-validate/version.json | 0 plugins/{azure => azure-skills}/skills/entra-agent-id/SKILL.md | 0 .../skills/entra-agent-id/references/known-limitations.md | 0 .../skills/entra-agent-id/references/oauth2-token-flow.md | 0 .../skills/entra-agent-id/references/obo-blueprint-setup.md | 0 .../skills/entra-agent-id/references/runtime-token-exchange.md | 0 .../skills/entra-agent-id/references/sdk-sidecar-deployment.md | 0 .../skills/entra-agent-id/references/sdk-sidecar.md | 0 .../{azure => azure-skills}/skills/entra-agent-id/version.json | 0 .../skills/entra-app-registration/SKILL.md | 0 .../skills/entra-app-registration/references/BICEP-EXAMPLE.bicep | 0 .../skills/entra-app-registration/references/api-permissions.md | 0 .../entra-app-registration/references/auth-best-practices.md | 0 .../skills/entra-app-registration/references/cli-commands.md | 0 .../entra-app-registration/references/console-app-example.md | 0 .../entra-app-registration/references/first-app-registration.md | 0 .../skills/entra-app-registration/references/oauth-flows.md | 0 .../references/sdk/azure-identity-dotnet.md | 0 .../entra-app-registration/references/sdk/azure-identity-java.md | 0 .../entra-app-registration/references/sdk/azure-identity-py.md | 0 .../entra-app-registration/references/sdk/azure-identity-rust.md | 0 .../entra-app-registration/references/sdk/azure-identity-ts.md | 0 .../entra-app-registration/references/sdk/azure-keyvault-py.md | 0 .../references/sdk/azure-keyvault-secrets-ts.md | 0 ...osoft-azure-webjobs-extensions-authentication-events-dotnet.md | 0 .../skills/entra-app-registration/references/troubleshooting.md | 0 .../skills/entra-app-registration/version.json | 0 .../{azure => azure-skills}/skills/microsoft-foundry/.gitignore | 0 plugins/{azure => azure-skills}/skills/microsoft-foundry/SKILL.md | 0 .../skills/microsoft-foundry/finetuning/SKILL.md | 0 .../skills/microsoft-foundry/finetuning/references/agentic-rft.md | 0 .../microsoft-foundry/finetuning/references/dataset-formats.md | 0 .../skills/microsoft-foundry/finetuning/references/deployment.md | 0 .../skills/microsoft-foundry/finetuning/references/evaluation.md | 0 .../microsoft-foundry/finetuning/references/grader-design.md | 0 .../microsoft-foundry/finetuning/references/hyperparameters.md | 0 .../microsoft-foundry/finetuning/references/large-file-uploads.md | 0 .../microsoft-foundry/finetuning/references/platform-gotchas.md | 0 .../microsoft-foundry/finetuning/references/reward-hacking.md | 0 .../microsoft-foundry/finetuning/references/training-curves.md | 0 .../microsoft-foundry/finetuning/references/training-types.md | 0 .../microsoft-foundry/finetuning/references/vision-fine-tuning.md | 0 .../microsoft-foundry/finetuning/scripts/calibrate_grader.py | 0 .../skills/microsoft-foundry/finetuning/scripts/check_training.py | 0 .../skills/microsoft-foundry/finetuning/scripts/cleanup.py | 0 .../skills/microsoft-foundry/finetuning/scripts/common.py | 0 .../microsoft-foundry/finetuning/scripts/convert_dataset.py | 0 .../skills/microsoft-foundry/finetuning/scripts/deploy_model.py | 0 .../skills/microsoft-foundry/finetuning/scripts/evaluate_model.py | 0 .../finetuning/scripts/generate_distillation_data.py | 0 .../microsoft-foundry/finetuning/scripts/monitor_training.py | 0 .../skills/microsoft-foundry/finetuning/scripts/score_dataset.py | 0 .../microsoft-foundry/finetuning/scripts/submit_training.py | 0 .../microsoft-foundry/finetuning/scripts/validate/__init__.py | 0 .../microsoft-foundry/finetuning/scripts/validate/data_stats.py | 0 .../microsoft-foundry/finetuning/scripts/validate/validate_dpo.py | 0 .../microsoft-foundry/finetuning/scripts/validate/validate_rft.py | 0 .../microsoft-foundry/finetuning/scripts/validate/validate_sft.py | 0 .../microsoft-foundry/finetuning/workflows/dataset-creation.md | 0 .../finetuning/workflows/diagnose-poor-results.md | 0 .../microsoft-foundry/finetuning/workflows/full-pipeline.md | 0 .../microsoft-foundry/finetuning/workflows/iterative-training.md | 0 .../skills/microsoft-foundry/finetuning/workflows/quickstart.md | 0 .../foundry-agent/agent-optimizer/agent-optimizer.md | 0 .../foundry-agent/agent-optimizer/references/azd-setup.md | 0 .../foundry-agent/agent-optimizer/references/eval-yaml.md | 0 .../foundry-agent/agent-optimizer/references/optimize-workflow.md | 0 .../foundry-agent/agent-optimizer/references/python-patterns.md | 0 .../foundry-agent/agent-optimizer/references/scaffold.md | 0 .../skills/microsoft-foundry/foundry-agent/cicd/cicd.md | 0 .../microsoft-foundry/foundry-agent/create/create-hosted.md | 0 .../microsoft-foundry/foundry-agent/create/create-prompt.md | 0 .../microsoft-foundry/foundry-agent/create/quick-start-hosted.md | 0 .../foundry-agent/create/references/agent-tools.md | 0 .../foundry-agent/create/references/agentframework.md | 0 .../foundry-agent/create/references/azd-ai-cli.md | 0 .../foundry-agent/create/references/enable-incoming-a2a.md | 0 .../foundry-agent/create/references/foundry-tool-catalog.md | 0 .../create/references/guardrails/guardrail-api-create.md | 0 .../create/references/guardrails/guardrail-attach.md | 0 .../create/references/guardrails/guardrail-manage.md | 0 .../foundry-agent/create/references/local-run.md | 0 .../foundry-agent/create/references/sdk-operations.md | 0 .../foundry-agent/create/references/skills/skill-attach.md | 0 .../foundry-agent/create/references/skills/skill-manage.md | 0 .../create/references/skills/skill-toolbox-attach.md | 0 .../microsoft-foundry/foundry-agent/create/references/tool-a2a.md | 0 .../foundry-agent/create/references/tool-azure-ai-search.md | 0 .../foundry-agent/create/references/tool-bing-grounding.md | 0 .../foundry-agent/create/references/tool-code-interpreter.md | 0 .../foundry-agent/create/references/tool-fabric-iq.md | 0 .../foundry-agent/create/references/tool-file-search.md | 0 .../foundry-agent/create/references/tool-function-calling.md | 0 .../microsoft-foundry/foundry-agent/create/references/tool-mcp.md | 0 .../foundry-agent/create/references/tool-memory.md | 0 .../foundry-agent/create/references/tool-openapi.md | 0 .../foundry-agent/create/references/tool-tool-search.md | 0 .../foundry-agent/create/references/tool-web-search.md | 0 .../foundry-agent/create/references/tool-work-iq.md | 0 .../foundry-agent/create/references/toolbox-reference.md | 0 .../microsoft-foundry/foundry-agent/create/references/tools.md | 0 .../create/references/use-toolbox-in-hosted-agent.md | 0 .../foundry-agent/create/scripts/check-canvas-entry.ps1 | 0 .../foundry-agent/create/scripts/check-canvas-entry.sh | 0 .../foundry-agent/create/scripts/resolve-project-id.ps1 | 0 .../foundry-agent/create/scripts/resolve-project-id.sh | 0 .../foundry-agent/create/scripts/verify-environment.ps1 | 0 .../foundry-agent/create/scripts/verify-environment.sh | 0 .../skills/microsoft-foundry/foundry-agent/deploy/deploy.md | 0 .../foundry-agent/eval-datasets/eval-datasets.md | 0 .../foundry-agent/eval-datasets/references/dataset-comparison.md | 0 .../foundry-agent/eval-datasets/references/dataset-curation.md | 0 .../eval-datasets/references/dataset-organization.md | 0 .../foundry-agent/eval-datasets/references/dataset-versioning.md | 0 .../foundry-agent/eval-datasets/references/eval-lineage.md | 0 .../foundry-agent/eval-datasets/references/eval-regression.md | 0 .../foundry-agent/eval-datasets/references/eval-trending.md | 0 .../eval-datasets/references/generate-seed-dataset.md | 0 .../foundry-agent/eval-datasets/references/trace-to-dataset.md | 0 .../foundry-agent/invocations-ws/invocations-ws.md | 0 .../invocations-ws/references/invocations-ws-protocol.md | 0 .../skills/microsoft-foundry/foundry-agent/invoke/invoke.md | 0 .../foundry-agent/invoke/references/file-operations.md | 0 .../foundry-agent/invoke/references/invocations-protocol.md | 0 .../foundry-agent/invoke/references/session-management.md | 0 .../skills/microsoft-foundry/foundry-agent/observe/observe.md | 0 .../foundry-agent/observe/references/analyze-results.md | 0 .../foundry-agent/observe/references/cicd-monitoring.md | 0 .../foundry-agent/observe/references/compare-iterate.md | 0 .../foundry-agent/observe/references/continuous-eval.md | 0 .../foundry-agent/observe/references/deploy-and-setup.md | 0 .../foundry-agent/observe/references/evaluate-step.md | 0 .../observe/references/evaluation-suite-generation.md | 0 .../foundry-agent/observe/references/optimize-deploy.md | 0 .../foundry-agent/routine/references/azure-yaml.md | 0 .../foundry-agent/routine/references/cli-crud.md | 0 .../skills/microsoft-foundry/foundry-agent/routine/routine.md | 0 .../foundry-agent/trace/references/analyze-failures.md | 0 .../foundry-agent/trace/references/analyze-latency.md | 0 .../foundry-agent/trace/references/conversation-detail.md | 0 .../foundry-agent/trace/references/eval-correlation.md | 0 .../foundry-agent/trace/references/kql-templates.md | 0 .../foundry-agent/trace/references/search-traces.md | 0 .../foundry-agent/trace/references/tracing-insights-api.md | 0 .../skills/microsoft-foundry/foundry-agent/trace/trace.md | 0 .../microsoft-foundry/foundry-agent/troubleshoot/troubleshoot.md | 0 .../skills/microsoft-foundry/models/deploy-model/SKILL.md | 0 .../skills/microsoft-foundry/models/deploy-model/TEST_PROMPTS.md | 0 .../microsoft-foundry/models/deploy-model/capacity/SKILL.md | 0 .../models/deploy-model/capacity/scripts/discover_and_rank.ps1 | 0 .../models/deploy-model/capacity/scripts/discover_and_rank.sh | 0 .../models/deploy-model/capacity/scripts/query_capacity.ps1 | 0 .../models/deploy-model/capacity/scripts/query_capacity.sh | 0 .../microsoft-foundry/models/deploy-model/customize/EXAMPLES.md | 0 .../microsoft-foundry/models/deploy-model/customize/SKILL.md | 0 .../models/deploy-model/customize/references/customize-guides.md | 0 .../deploy-model/customize/references/customize-workflow.md | 0 .../microsoft-foundry/models/deploy-model/preset/EXAMPLES.md | 0 .../skills/microsoft-foundry/models/deploy-model/preset/SKILL.md | 0 .../models/deploy-model/preset/references/preset-workflow.md | 0 .../models/deploy-model/preset/references/workflow.md | 0 .../models/deploy-model/scripts/generate_deployment_url.ps1 | 0 .../models/deploy-model/scripts/generate_deployment_url.sh | 0 .../skills/microsoft-foundry/project/connections.md | 0 .../microsoft-foundry/project/create/create-foundry-project.md | 0 .../skills/microsoft-foundry/quota/quota.md | 0 .../microsoft-foundry/quota/references/capacity-planning.md | 0 .../skills/microsoft-foundry/quota/references/error-resolution.md | 0 .../skills/microsoft-foundry/quota/references/optimization.md | 0 .../skills/microsoft-foundry/quota/references/ptu-guide.md | 0 .../skills/microsoft-foundry/quota/references/troubleshooting.md | 0 .../skills/microsoft-foundry/quota/references/workflows.md | 0 .../{azure => azure-skills}/skills/microsoft-foundry/rbac/rbac.md | 0 .../microsoft-foundry/references/agent-metadata-contract.md | 0 .../skills/microsoft-foundry/references/auth-best-practices.md | 0 .../skills/microsoft-foundry/references/sdk/foundry-sdk-py.md | 0 .../skills/microsoft-foundry/references/standard-agent-setup.md | 0 .../microsoft-foundry/resource/create/create-foundry-resource.md | 0 .../microsoft-foundry/resource/create/references/patterns.md | 0 .../resource/create/references/troubleshooting.md | 0 .../microsoft-foundry/resource/create/references/workflows.md | 0 .../microsoft-foundry/resource/private-network/private-network.md | 0 .../private-network/references/custom-template-adaptation.md | 0 .../resource/private-network/references/deploy.md | 0 .../resource/private-network/references/end-to-end-test.md | 0 .../resource/private-network/references/intake.md | 0 .../private-network/references/post-deployment-validation.md | 0 .../resource/private-network/references/scaffold.md | 0 .../resource/private-network/references/template-index.md | 0 .../resource/private-network/references/vpn-dns-setup.bicep | 0 .../resource/private-network/references/vpn-dns-setup.md | 0 .../{azure => azure-skills}/skills/microsoft-foundry/version.json | 0 .../skills/python-appservice-deploy/SKILL.md | 0 .../skills/python-appservice-deploy/references/create-app.md | 0 .../skills/python-appservice-deploy/references/deploy-azcli.md | 0 .../skills/python-appservice-deploy/references/deploy-azd.md | 0 .../skills/python-appservice-deploy/references/detect.md | 0 .../skills/python-appservice-deploy/references/errors.md | 0 .../python-appservice-deploy/references/post-deploy-message.md | 0 .../python-appservice-deploy/references/startup-commands.md | 0 .../skills/python-appservice-deploy/references/transient-retry.md | 0 .../skills/python-appservice-deploy/scripts/generate-app-name.ps1 | 0 .../skills/python-appservice-deploy/scripts/generate-app-name.sh | 0 .../skills/python-appservice-deploy/scripts/retry-az-create.ps1 | 0 .../skills/python-appservice-deploy/scripts/retry-az-create.sh | 0 .../skills/python-appservice-deploy/version.json | 0 plugins/{azure => azure-skills}/version.json | 0 785 files changed, 0 insertions(+), 0 deletions(-) rename plugins/{azure => azure-skills}/.claude-plugin/plugin.json (100%) rename plugins/{azure => azure-skills}/.cursor-plugin/plugin.json (100%) rename plugins/{azure => azure-skills}/.mcp.json (100%) rename plugins/{azure => azure-skills}/.plugin/plugin.json (100%) rename plugins/{azure => azure-skills}/LICENSE (100%) rename plugins/{azure => azure-skills}/README.md (100%) rename plugins/{azure => azure-skills}/assets/azure-logo.svg (100%) rename plugins/{azure => azure-skills}/changelog-2026-07-14.md (100%) rename plugins/{azure => azure-skills}/gemini-extension.json (100%) rename plugins/{azure => azure-skills}/hooks/claude-hooks.json (100%) rename plugins/{azure => azure-skills}/hooks/cursor-hooks.json (100%) rename plugins/{azure => azure-skills}/hooks/hooks.json (100%) rename plugins/{azure => azure-skills}/hooks/scripts/track-telemetry.ps1 (100%) rename plugins/{azure => azure-skills}/hooks/scripts/track-telemetry.sh (100%) rename plugins/{azure => azure-skills}/skills/airunway-aks-setup/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/airunway-aks-setup/references/gpu-profiles.md (100%) rename plugins/{azure => azure-skills}/skills/airunway-aks-setup/references/model-sizing.md (100%) rename plugins/{azure => azure-skills}/skills/airunway-aks-setup/references/powershell-notes.md (100%) rename plugins/{azure => azure-skills}/skills/airunway-aks-setup/references/steps/step-1-verify.md (100%) rename plugins/{azure => azure-skills}/skills/airunway-aks-setup/references/steps/step-2-controller.md (100%) rename plugins/{azure => azure-skills}/skills/airunway-aks-setup/references/steps/step-3-gpu.md (100%) rename plugins/{azure => azure-skills}/skills/airunway-aks-setup/references/steps/step-4-provider.md (100%) rename plugins/{azure => azure-skills}/skills/airunway-aks-setup/references/steps/step-5-deploy.md (100%) rename plugins/{azure => azure-skills}/skills/airunway-aks-setup/references/steps/step-6-summary.md (100%) rename plugins/{azure => azure-skills}/skills/airunway-aks-setup/references/troubleshooting.md (100%) rename plugins/{azure => azure-skills}/skills/airunway-aks-setup/version.json (100%) rename plugins/{azure => azure-skills}/skills/appinsights-instrumentation/LICENSE.txt (100%) rename plugins/{azure => azure-skills}/skills/appinsights-instrumentation/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/appinsights-instrumentation/examples/appinsights.bicep (100%) rename plugins/{azure => azure-skills}/skills/appinsights-instrumentation/references/aspnetcore.md (100%) rename plugins/{azure => azure-skills}/skills/appinsights-instrumentation/references/auto.md (100%) rename plugins/{azure => azure-skills}/skills/appinsights-instrumentation/references/container-apps.md (100%) rename plugins/{azure => azure-skills}/skills/appinsights-instrumentation/references/nodejs.md (100%) rename plugins/{azure => azure-skills}/skills/appinsights-instrumentation/references/python.md (100%) rename plugins/{azure => azure-skills}/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-exporter-java.md (100%) rename plugins/{azure => azure-skills}/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-exporter-py.md (100%) rename plugins/{azure => azure-skills}/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-py.md (100%) rename plugins/{azure => azure-skills}/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-ts.md (100%) rename plugins/{azure => azure-skills}/skills/appinsights-instrumentation/scripts/appinsights.ps1 (100%) rename plugins/{azure => azure-skills}/skills/azure-ai/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/azure-ai/references/auth-best-practices.md (100%) rename plugins/{azure => azure-skills}/skills/azure-ai/references/sdk/azure-ai-contentsafety-java.md (100%) rename plugins/{azure => azure-skills}/skills/azure-ai/references/sdk/azure-ai-contentsafety-py.md (100%) rename plugins/{azure => azure-skills}/skills/azure-ai/references/sdk/azure-ai-contentsafety-ts.md (100%) rename plugins/{azure => azure-skills}/skills/azure-ai/references/sdk/azure-ai-document-intelligence-dotnet.md (100%) rename plugins/{azure => azure-skills}/skills/azure-ai/references/sdk/azure-ai-document-intelligence-ts.md (100%) rename plugins/{azure => azure-skills}/skills/azure-ai/references/sdk/azure-ai-openai-dotnet.md (100%) rename plugins/{azure => azure-skills}/skills/azure-ai/references/sdk/azure-ai-transcription-py.md (100%) rename plugins/{azure => azure-skills}/skills/azure-ai/references/sdk/azure-ai-translation-text-py.md (100%) rename plugins/{azure => azure-skills}/skills/azure-ai/references/sdk/azure-ai-translation-ts.md (100%) rename plugins/{azure => azure-skills}/skills/azure-ai/references/sdk/azure-ai-vision-imageanalysis-java.md (100%) rename plugins/{azure => azure-skills}/skills/azure-ai/references/sdk/azure-ai-vision-imageanalysis-py.md (100%) rename plugins/{azure => azure-skills}/skills/azure-ai/references/sdk/azure-search-documents-dotnet.md (100%) rename plugins/{azure => azure-skills}/skills/azure-ai/references/sdk/azure-search-documents-py.md (100%) rename plugins/{azure => azure-skills}/skills/azure-ai/references/sdk/azure-search-documents-ts.md (100%) rename plugins/{azure => azure-skills}/skills/azure-ai/version.json (100%) rename plugins/{azure => azure-skills}/skills/azure-aigateway/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/azure-aigateway/references/auth-best-practices.md (100%) rename plugins/{azure => azure-skills}/skills/azure-aigateway/references/patterns.md (100%) rename plugins/{azure => azure-skills}/skills/azure-aigateway/references/policies.md (100%) rename plugins/{azure => azure-skills}/skills/azure-aigateway/references/sdk/azure-ai-contentsafety-py.md (100%) rename plugins/{azure => azure-skills}/skills/azure-aigateway/references/sdk/azure-ai-contentsafety-ts.md (100%) rename plugins/{azure => azure-skills}/skills/azure-aigateway/references/sdk/azure-mgmt-apimanagement-dotnet.md (100%) rename plugins/{azure => azure-skills}/skills/azure-aigateway/references/sdk/azure-mgmt-apimanagement-py.md (100%) rename plugins/{azure => azure-skills}/skills/azure-aigateway/references/troubleshooting.md (100%) rename plugins/{azure => azure-skills}/skills/azure-aigateway/version.json (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/app-service/app-engine-to-app-service.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/app-service/assessment.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/app-service/beanstalk-to-app-service.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/app-service/code-migration.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/app-service/global-rules.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/app-service/heroku-to-app-service.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/container-apps/assessment-guide.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-assessment-guide.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-deployment-guide.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-to-container-apps.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/container-apps/deployment-guide.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/container-apps/fargate-assessment-guide.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/container-apps/fargate-deployment-guide.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/container-apps/fargate-to-container-apps.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/container-apps/k8s-to-container-apps.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/container-apps/spring-apps-to-aca.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/container-apps/spring-assessment-guide.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/container-apps/spring-dependency-patterns.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/container-apps/spring-deployment-guide.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/functions/assessment.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/functions/code-migration.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/functions/global-rules.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/functions/lambda-to-functions.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/functions/runtimes/csharp.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/functions/runtimes/java.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/functions/runtimes/javascript.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/functions/runtimes/powershell.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/functions/runtimes/python.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/services/functions/runtimes/typescript.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/references/workflow-details.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cloud-migrate/version.json (100%) rename plugins/{azure => azure-skills}/skills/azure-compliance/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compliance/references/auth-best-practices.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compliance/references/azqr-recommendations.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compliance/references/azqr-remediation-patterns.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compliance/references/azure-keyvault-expiration-audit.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compliance/references/azure-quick-review.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compliance/references/azure-resource-graph.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compliance/references/sdk/azure-keyvault-certificates-rust.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compliance/references/sdk/azure-keyvault-keys-rust.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compliance/references/sdk/azure-keyvault-keys-ts.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compliance/references/sdk/azure-keyvault-py.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compliance/references/sdk/azure-keyvault-secrets-rust.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compliance/references/sdk/azure-keyvault-secrets-ts.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compliance/references/sdk/azure-security-keyvault-keys-dotnet.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compliance/references/sdk/azure-security-keyvault-keys-java.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compliance/references/sdk/azure-security-keyvault-secrets-java.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compliance/version.json (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/references/retail-prices-api.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/references/vm-families.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/references/vm-quotas.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/references/vmss-guide.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/version.json (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/capacity-reservation/capacity-reservation.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/capacity-reservation/references/association-disassociation.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/capacity-reservation/references/capacity-reservation-overview.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/essential-machine-management/essential-machine-management.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/essential-machine-management/references/emm-enable-flow-portal-guidance.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/essential-machine-management/references/emm-enable-flow.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/essential-machine-management/references/emm-overview.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/essential-machine-management/references/emm-prerequisites.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-creator/examples/bicep/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-creator/examples/bicep/main.bicep (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-creator/examples/terraform/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-creator/examples/terraform/main.tf (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-creator/examples/terraform/outputs.tf (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-creator/examples/terraform/variables.tf (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-creator/references/delivery-options/github-pr.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-creator/references/delivery-options/index.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-creator/references/delivery-options/print.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-creator/references/delivery-options/save-local.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-creator/references/depth-probe/beginner.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-creator/references/depth-probe/cost-deep.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-creator/references/depth-probe/index.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-creator/references/depth-probe/networking-deep.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-creator/references/depth-probe/security-deep.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-creator/references/depth-probe/spec-deep.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-creator/references/mcp-tools.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-creator/references/output-adapters/az-cli.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-creator/references/output-adapters/bicep.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-creator/references/output-adapters/index.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-creator/references/output-adapters/mcp-apply.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-creator/references/output-adapters/terraform.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-creator/references/plan-card.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-creator/references/validation-gates.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-creator/vm-creator.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-recommender/references/handoff-to-creator.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-recommender/references/web-fetch-policy.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-recommender/vm-recommender.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-troubleshooter/references/cannot-connect-to-vm.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-troubleshooter/references/credential-auth-errors.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-troubleshooter/references/firewall-blocking.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-troubleshooter/references/network-connectivity.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-troubleshooter/references/rdp-connectivity.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-troubleshooter/references/rdp-service-config.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-troubleshooter/references/ssh-connectivity.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-troubleshooter/references/vm-agent-not-responding.md (100%) rename plugins/{azure => azure-skills}/skills/azure-compute/workflows/vm-troubleshooter/vm-troubleshooter.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cost/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cost/cost-forecast/error-handling.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cost/cost-forecast/examples.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cost/cost-forecast/guardrails.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cost/cost-forecast/request-body-schema.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cost/cost-forecast/workflow.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cost/cost-optimization/auth-best-practices.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cost/cost-optimization/azure-aks-anomalies.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cost/cost-optimization/azure-aks-cost-addon.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cost/cost-optimization/azure-quick-review.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cost/cost-optimization/azure-resource-graph.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cost/cost-optimization/report-template.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cost/cost-optimization/sdk/azure-resource-manager-redis-dotnet.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cost/cost-optimization/services/redis/azure-cache-for-redis.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cost/cost-optimization/services/storage/azure-storage.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cost/cost-optimization/workflow.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cost/cost-query/dimensions-by-scope.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cost/cost-query/error-handling.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cost/cost-query/examples.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cost/cost-query/guardrails.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cost/cost-query/request-body-schema.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cost/cost-query/workflow.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cost/references/tools-and-best-practices.md (100%) rename plugins/{azure => azure-skills}/skills/azure-cost/version.json (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/auth-best-practices.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/global-rules.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/live-role-verification.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/pre-deploy-checklist.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/azcli/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/azcli/errors.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/azcli/verify.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/azd/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/azd/ef-migrations.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/azd/errors.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/azd/functions-deploy.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/azd/post-deployment.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/azd/scripts/apply-migrations.ps1 (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/azd/scripts/apply-migrations.sh (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/azd/scripts/grant-and-migrate.ps1 (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/azd/scripts/grant-and-migrate.sh (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/azd/sql-entra-auth.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/azd/sql-managed-identity.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/azd/verify.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/bicep/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/bicep/errors.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/bicep/verify.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/cicd/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/cicd/errors.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/cicd/examples/azdo-azd.yml (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/cicd/examples/azdo-multistage.yml (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/cicd/examples/github-azd.yml (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/cicd/examples/github-bicep.yml (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/cicd/verify.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/terraform/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/terraform/errors.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/recipes/terraform/verify.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/region-availability.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/sdk/azd-deployment.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/sdk/azure-identity-dotnet.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/sdk/azure-identity-java.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/sdk/azure-identity-py.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/sdk/azure-identity-ts.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/references/troubleshooting.md (100%) rename plugins/{azure => azure-skills}/skills/azure-deploy/version.json (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/references/app-service/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/references/azure-resource-graph.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/references/container-apps/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/references/functions/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/references/kql-queries.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/troubleshooting/aks/aks-troubleshooting.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/troubleshooting/aks/general-diagnostics.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/troubleshooting/aks/load-balancer-and-ingress.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/troubleshooting/aks/network-policy.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/troubleshooting/aks/networking.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/troubleshooting/aks/node-issues.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/troubleshooting/aks/pod-failures.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/troubleshooting/aks/references/aks-mcp.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/troubleshooting/aks/references/command-flows.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/troubleshooting/aks/references/inspektor-gadget.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/troubleshooting/aks/references/structured-input-modes.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/troubleshooting/aks/spot-and-zone-issues.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/troubleshooting/aks/upgrade-operations.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/troubleshooting/messaging/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/troubleshooting/messaging/auth-best-practices.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-dotnet.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-java.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-js.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-py.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-dotnet.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-java.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-js.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-py.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/troubleshooting/messaging/service-troubleshooting.md (100%) rename plugins/{azure => azure-skills}/skills/azure-diagnostics/version.json (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/bicep-generation.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/constraints/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/constraints/ai-ml.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/constraints/compute-apps.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/constraints/compute-infra.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/constraints/data-analytics.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/constraints/data-relational.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/constraints/messaging.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/constraints/monitoring.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/constraints/networking-connectivity.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/constraints/networking-core.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/constraints/networking-traffic.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/constraints/security.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/deployment.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/pairing-checks.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/phases/1-extract-insights.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/phases/2-research-best-practices.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/phases/3-research-resources.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/phases/4-generate-plan.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/phases/5-verify.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/phases/6-generate-iac.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/phases/7-deploy.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/resources/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/resources/ai-ml.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/resources/compute-apps.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/resources/compute-infra.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/resources/data-analytics.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/resources/data-relational.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/resources/messaging.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/resources/monitoring.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/resources/networking-connectivity.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/resources/networking-core.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/resources/networking-traffic.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/resources/security.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/schema.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/terraform-generation.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/verification.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/waf-checklist.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/references/workflow.md (100%) rename plugins/{azure => azure-skills}/skills/azure-enterprise-infra-planner/version.json (100%) rename plugins/{azure => azure-skills}/skills/azure-kubernetes/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/common-fixes.md (100%) rename plugins/{azure => azure-skills}/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/constraint-spec-v1.yaml (100%) rename plugins/{azure => azure-skills}/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/mcp-integration.md (100%) rename plugins/{azure => azure-skills}/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/migration-guide-summary.md (100%) rename plugins/{azure => azure-skills}/skills/azure-kubernetes/references/azure-aks-autoscaler.md (100%) rename plugins/{azure => azure-skills}/skills/azure-kubernetes/references/azure-aks-rightsizing.md (100%) rename plugins/{azure => azure-skills}/skills/azure-kubernetes/references/azure-aks-spot.md (100%) rename plugins/{azure => azure-skills}/skills/azure-kubernetes/references/azure-aks-vpa.md (100%) rename plugins/{azure => azure-skills}/skills/azure-kubernetes/references/cli-reference.md (100%) rename plugins/{azure => azure-skills}/skills/azure-kubernetes/version.json (100%) rename plugins/{azure => azure-skills}/skills/azure-kusto/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/azure-kusto/version.json (100%) rename plugins/{azure => azure-skills}/skills/azure-messaging/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/azure-messaging/version.json (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/analyze.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/apim.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/architecture.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/aspire.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/auth-best-practices.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/azure-context.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/functional-verification.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/generate.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/global-rules.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/plan-template.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/recipe-selection.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/recipes/azcli/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/recipes/azcli/commands.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/recipes/azcli/scripts.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/recipes/azd/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/recipes/azd/aspire.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/recipes/azd/azure-yaml.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/recipes/azd/docker.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/recipes/azd/iac-rules.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/recipes/azd/terraform.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/recipes/bicep/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/recipes/bicep/patterns.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/recipes/terraform/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/recipes/terraform/patterns.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/region-availability.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/requirements.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/research.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/resources-limits-quotas.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/runtimes/nodejs.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/scan.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/sdk/azd-deployment.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/sdk/azure-appconfiguration-java.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/sdk/azure-appconfiguration-py.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/sdk/azure-appconfiguration-ts.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/sdk/azure-identity-dotnet.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/sdk/azure-identity-java.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/sdk/azure-identity-py.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/sdk/azure-identity-ts.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/security.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/aks/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/aks/addons.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/aks/bicep.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/aks/manifests.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-insights/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/bicep.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/custom-domains.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/deployment-slots.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/networking.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/scaling.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/sku-selection.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/templates/recipes/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/templates/recipes/auth/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/dotnet.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/nodejs.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/python.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/templates/recipes/composition.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/dotnet.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/nodejs.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/python.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/templates/recipes/redis/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/dotnet.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/nodejs.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/python.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/templates/recipes/sql/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/dotnet.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/nodejs.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/python.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/templates/selection.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/templates/web-api.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/app-service/templates/web-app.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/container-apps/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/container-apps/bicep.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/container-apps/day2-operations.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/container-apps/environment.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/container-apps/health-probes.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/container-apps/networking.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/container-apps/revisions.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/container-apps/scaling.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/container-apps/terraform.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/cosmos-db/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/cosmos-db/bicep.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/cosmos-db/partitioning.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/cosmos-db/sdk.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/durable-task-scheduler/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/durable-task-scheduler/bicep.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/durable-task-scheduler/dotnet.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/durable-task-scheduler/java.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/durable-task-scheduler/javascript.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/durable-task-scheduler/python.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/event-grid/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/event-grid/bicep.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/event-grid/subscriptions.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/foundry/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/foundry/region-availability.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/aspire-containerapps.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/bicep.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/durable.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/base/eval/python.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/base/eval/summary.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/base/eval/typescript.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/eval/python.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/eval/summary.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/common/dotnet-entry-point.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/common/error-handling.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/common/health-check.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/common/nodejs-entry-point.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/composition.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/python.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/summary.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/typescript.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/durable/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/durable/eval/python.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/durable/eval/summary.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/eval/python.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/eval/summary.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/mcp/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/mcp/eval/python.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/mcp/eval/summary.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/python.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/summary.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/typescript.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/sql/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/sql/eval/python.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/sql/eval/summary.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/timer/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/timer/eval/python.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/recipes/timer/eval/summary.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/templates/selection.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/functions/terraform.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/key-vault/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/key-vault/bicep.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/key-vault/sdk.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/logic-apps/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/logic-apps/bicep.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/logic-apps/triggers.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/service-bus/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/service-bus/bicep.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/service-bus/patterns.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/sql-database/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/sql-database/auth.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/sql-database/bicep.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/sql-database/scripts/grant-sql-access.ps1 (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/sql-database/scripts/grant-sql-access.sh (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/sql-database/sdk.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/static-web-apps/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/static-web-apps/bicep.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/static-web-apps/deployment.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/static-web-apps/region-availability.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/static-web-apps/routing.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/static-web-apps/terraform.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/storage/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/storage/access.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/services/storage/bicep.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/references/specialized-routing.md (100%) rename plugins/{azure => azure-skills}/skills/azure-prepare/version.json (100%) rename plugins/{azure => azure-skills}/skills/azure-quotas/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/azure-quotas/references/advanced-commands.md (100%) rename plugins/{azure => azure-skills}/skills/azure-quotas/references/commands.md (100%) rename plugins/{azure => azure-skills}/skills/azure-quotas/scripts/check-quota.ps1 (100%) rename plugins/{azure => azure-skills}/skills/azure-quotas/scripts/check-quota.sh (100%) rename plugins/{azure => azure-skills}/skills/azure-quotas/version.json (100%) rename plugins/{azure => azure-skills}/skills/azure-rbac/version.json (100%) rename plugins/{azure => azure-skills}/skills/azure-reliability/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/azure-reliability/references/configure-health-probes.md (100%) rename plugins/{azure => azure-skills}/skills/azure-reliability/references/configure-multi-region.md (100%) rename plugins/{azure => azure-skills}/skills/azure-reliability/references/configure-storage.md (100%) rename plugins/{azure => azure-skills}/skills/azure-reliability/references/configure-zone-redundancy.md (100%) rename plugins/{azure => azure-skills}/skills/azure-reliability/references/health-probe-checks.md (100%) rename plugins/{azure => azure-skills}/skills/azure-reliability/references/iac-patching-bicep.md (100%) rename plugins/{azure => azure-skills}/skills/azure-reliability/references/iac-patching-terraform.md (100%) rename plugins/{azure => azure-skills}/skills/azure-reliability/references/multi-region-checks.md (100%) rename plugins/{azure => azure-skills}/skills/azure-reliability/references/services/app-service/reliability.md (100%) rename plugins/{azure => azure-skills}/skills/azure-reliability/references/services/functions/reliability.md (100%) rename plugins/{azure => azure-skills}/skills/azure-reliability/references/storage-redundancy-checks.md (100%) rename plugins/{azure => azure-skills}/skills/azure-reliability/references/zone-redundancy-checks.md (100%) rename plugins/{azure => azure-skills}/skills/azure-reliability/version.json (100%) rename plugins/{azure => azure-skills}/skills/azure-resource-lookup/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/azure-resource-lookup/references/azure-resource-graph.md (100%) rename plugins/{azure => azure-skills}/skills/azure-resource-lookup/version.json (100%) rename plugins/{azure => azure-skills}/skills/azure-resource-visualizer/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/azure-resource-visualizer/assets/example-diagram.md (100%) rename plugins/{azure => azure-skills}/skills/azure-resource-visualizer/assets/template-architecture.md (100%) rename plugins/{azure => azure-skills}/skills/azure-resource-visualizer/references/azure-resource-graph.md (100%) rename plugins/{azure => azure-skills}/skills/azure-resource-visualizer/version.json (100%) rename plugins/{azure => azure-skills}/skills/azure-storage/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/azure-storage/references/auth-best-practices.md (100%) rename plugins/{azure => azure-skills}/skills/azure-storage/references/sdk-usage.md (100%) rename plugins/{azure => azure-skills}/skills/azure-storage/references/sdk/azure-data-tables-java.md (100%) rename plugins/{azure => azure-skills}/skills/azure-storage/references/sdk/azure-data-tables-py.md (100%) rename plugins/{azure => azure-skills}/skills/azure-storage/references/sdk/azure-storage-blob-java.md (100%) rename plugins/{azure => azure-skills}/skills/azure-storage/references/sdk/azure-storage-blob-py.md (100%) rename plugins/{azure => azure-skills}/skills/azure-storage/references/sdk/azure-storage-blob-rust.md (100%) rename plugins/{azure => azure-skills}/skills/azure-storage/references/sdk/azure-storage-blob-ts.md (100%) rename plugins/{azure => azure-skills}/skills/azure-storage/references/sdk/azure-storage-file-datalake-py.md (100%) rename plugins/{azure => azure-skills}/skills/azure-storage/references/sdk/azure-storage-file-share-py.md (100%) rename plugins/{azure => azure-skills}/skills/azure-storage/references/sdk/azure-storage-file-share-ts.md (100%) rename plugins/{azure => azure-skills}/skills/azure-storage/references/sdk/azure-storage-queue-py.md (100%) rename plugins/{azure => azure-skills}/skills/azure-storage/references/sdk/azure-storage-queue-ts.md (100%) rename plugins/{azure => azure-skills}/skills/azure-storage/version.json (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/global-rules.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/languages/java/INSTRUCTION.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/languages/java/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle-settings.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle-toml.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/languages/java/bom-migration/bom-maven.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/languages/java/bom-migration/bom-migration.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/languages/java/bom-migration/bom-validation.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/languages/java/package-specific/com.microsoft.azure.eventprocessorhost.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/languages/java/package-specific/com.microsoft.azure.management.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/languages/java/rules/efficiency.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/languages/java/rules/execution-guidelines.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/languages/java/rules/review-code-changes.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/languages/java/rules/troubleshooting.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/languages/java/rules/upgrade-strategy.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/languages/java/rules/upgrade-success-criteria.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/languages/java/scripts/upgrade_bom.py (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/languages/java/templates/PLAN_TEMPLATE.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/languages/java/templates/PROGRESS_TEMPLATE.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/languages/java/templates/SUMMARY_TEMPLATE.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/languages/java/workflow/phase-1-precheck.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/languages/java/workflow/phase-2-plan.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/languages/java/workflow/phase-3-execute.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/languages/java/workflow/phase-4-summarize.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/services/functions/assessment.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/services/functions/automation.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/services/functions/consumption-to-flex.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/services/redis/redis-to-amr.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/references/workflow-details.md (100%) rename plugins/{azure => azure-skills}/skills/azure-upgrade/version.json (100%) rename plugins/{azure => azure-skills}/skills/azure-validate/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/azure-validate/references/aspire-functions-secrets.md (100%) rename plugins/{azure => azure-skills}/skills/azure-validate/references/global-rules.md (100%) rename plugins/{azure => azure-skills}/skills/azure-validate/references/policy-validation.md (100%) rename plugins/{azure => azure-skills}/skills/azure-validate/references/recipes/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-validate/references/recipes/azcli/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-validate/references/recipes/azcli/errors.md (100%) rename plugins/{azure => azure-skills}/skills/azure-validate/references/recipes/azd/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-validate/references/recipes/azd/aspire.md (100%) rename plugins/{azure => azure-skills}/skills/azure-validate/references/recipes/azd/environment.md (100%) rename plugins/{azure => azure-skills}/skills/azure-validate/references/recipes/azd/errors.md (100%) rename plugins/{azure => azure-skills}/skills/azure-validate/references/recipes/bicep/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-validate/references/recipes/bicep/errors.md (100%) rename plugins/{azure => azure-skills}/skills/azure-validate/references/recipes/terraform/README.md (100%) rename plugins/{azure => azure-skills}/skills/azure-validate/references/recipes/terraform/errors.md (100%) rename plugins/{azure => azure-skills}/skills/azure-validate/references/region-availability.md (100%) rename plugins/{azure => azure-skills}/skills/azure-validate/references/role-verification.md (100%) rename plugins/{azure => azure-skills}/skills/azure-validate/version.json (100%) rename plugins/{azure => azure-skills}/skills/entra-agent-id/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/entra-agent-id/references/known-limitations.md (100%) rename plugins/{azure => azure-skills}/skills/entra-agent-id/references/oauth2-token-flow.md (100%) rename plugins/{azure => azure-skills}/skills/entra-agent-id/references/obo-blueprint-setup.md (100%) rename plugins/{azure => azure-skills}/skills/entra-agent-id/references/runtime-token-exchange.md (100%) rename plugins/{azure => azure-skills}/skills/entra-agent-id/references/sdk-sidecar-deployment.md (100%) rename plugins/{azure => azure-skills}/skills/entra-agent-id/references/sdk-sidecar.md (100%) rename plugins/{azure => azure-skills}/skills/entra-agent-id/version.json (100%) rename plugins/{azure => azure-skills}/skills/entra-app-registration/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/entra-app-registration/references/BICEP-EXAMPLE.bicep (100%) rename plugins/{azure => azure-skills}/skills/entra-app-registration/references/api-permissions.md (100%) rename plugins/{azure => azure-skills}/skills/entra-app-registration/references/auth-best-practices.md (100%) rename plugins/{azure => azure-skills}/skills/entra-app-registration/references/cli-commands.md (100%) rename plugins/{azure => azure-skills}/skills/entra-app-registration/references/console-app-example.md (100%) rename plugins/{azure => azure-skills}/skills/entra-app-registration/references/first-app-registration.md (100%) rename plugins/{azure => azure-skills}/skills/entra-app-registration/references/oauth-flows.md (100%) rename plugins/{azure => azure-skills}/skills/entra-app-registration/references/sdk/azure-identity-dotnet.md (100%) rename plugins/{azure => azure-skills}/skills/entra-app-registration/references/sdk/azure-identity-java.md (100%) rename plugins/{azure => azure-skills}/skills/entra-app-registration/references/sdk/azure-identity-py.md (100%) rename plugins/{azure => azure-skills}/skills/entra-app-registration/references/sdk/azure-identity-rust.md (100%) rename plugins/{azure => azure-skills}/skills/entra-app-registration/references/sdk/azure-identity-ts.md (100%) rename plugins/{azure => azure-skills}/skills/entra-app-registration/references/sdk/azure-keyvault-py.md (100%) rename plugins/{azure => azure-skills}/skills/entra-app-registration/references/sdk/azure-keyvault-secrets-ts.md (100%) rename plugins/{azure => azure-skills}/skills/entra-app-registration/references/sdk/microsoft-azure-webjobs-extensions-authentication-events-dotnet.md (100%) rename plugins/{azure => azure-skills}/skills/entra-app-registration/references/troubleshooting.md (100%) rename plugins/{azure => azure-skills}/skills/entra-app-registration/version.json (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/.gitignore (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/references/agentic-rft.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/references/dataset-formats.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/references/deployment.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/references/evaluation.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/references/grader-design.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/references/hyperparameters.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/references/large-file-uploads.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/references/platform-gotchas.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/references/reward-hacking.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/references/training-curves.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/references/training-types.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/references/vision-fine-tuning.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/scripts/calibrate_grader.py (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/scripts/check_training.py (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/scripts/cleanup.py (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/scripts/common.py (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/scripts/convert_dataset.py (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/scripts/deploy_model.py (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/scripts/evaluate_model.py (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/scripts/generate_distillation_data.py (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/scripts/monitor_training.py (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/scripts/score_dataset.py (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/scripts/submit_training.py (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/scripts/validate/__init__.py (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/scripts/validate/data_stats.py (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/scripts/validate/validate_dpo.py (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/scripts/validate/validate_rft.py (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/scripts/validate/validate_sft.py (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/workflows/dataset-creation.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/workflows/diagnose-poor-results.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/workflows/full-pipeline.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/workflows/iterative-training.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/finetuning/workflows/quickstart.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/agent-optimizer/agent-optimizer.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/azd-setup.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/eval-yaml.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/optimize-workflow.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/python-patterns.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/scaffold.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/cicd/cicd.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/create-hosted.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/create-prompt.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/quick-start-hosted.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/agent-tools.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/agentframework.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/azd-ai-cli.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/enable-incoming-a2a.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/foundry-tool-catalog.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-api-create.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-attach.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-manage.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/local-run.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/sdk-operations.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-attach.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-manage.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-toolbox-attach.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/tool-a2a.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/tool-azure-ai-search.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/tool-bing-grounding.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/tool-code-interpreter.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/tool-fabric-iq.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/tool-file-search.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/tool-function-calling.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/tool-mcp.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/tool-memory.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/tool-openapi.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/tool-tool-search.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/tool-web-search.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/tool-work-iq.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/toolbox-reference.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/tools.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/references/use-toolbox-in-hosted-agent.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/scripts/check-canvas-entry.ps1 (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/scripts/check-canvas-entry.sh (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/scripts/resolve-project-id.ps1 (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/scripts/resolve-project-id.sh (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/scripts/verify-environment.ps1 (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/create/scripts/verify-environment.sh (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/deploy/deploy.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/eval-datasets/eval-datasets.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-comparison.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-curation.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-organization.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-versioning.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-lineage.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-regression.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-trending.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/eval-datasets/references/generate-seed-dataset.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/eval-datasets/references/trace-to-dataset.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/invocations-ws/invocations-ws.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/invocations-ws/references/invocations-ws-protocol.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/invoke/invoke.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/invoke/references/file-operations.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/invoke/references/invocations-protocol.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/invoke/references/session-management.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/observe/observe.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/observe/references/analyze-results.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/observe/references/cicd-monitoring.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/observe/references/compare-iterate.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/observe/references/continuous-eval.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/observe/references/deploy-and-setup.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/observe/references/evaluate-step.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/observe/references/evaluation-suite-generation.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/observe/references/optimize-deploy.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/routine/references/azure-yaml.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/routine/references/cli-crud.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/routine/routine.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/trace/references/analyze-failures.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/trace/references/analyze-latency.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/trace/references/conversation-detail.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/trace/references/eval-correlation.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/trace/references/kql-templates.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/trace/references/search-traces.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/trace/references/tracing-insights-api.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/trace/trace.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/foundry-agent/troubleshoot/troubleshoot.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/models/deploy-model/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/models/deploy-model/TEST_PROMPTS.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/models/deploy-model/capacity/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/models/deploy-model/capacity/scripts/discover_and_rank.ps1 (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/models/deploy-model/capacity/scripts/discover_and_rank.sh (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/models/deploy-model/capacity/scripts/query_capacity.ps1 (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/models/deploy-model/capacity/scripts/query_capacity.sh (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/models/deploy-model/customize/EXAMPLES.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/models/deploy-model/customize/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/models/deploy-model/customize/references/customize-guides.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/models/deploy-model/customize/references/customize-workflow.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/models/deploy-model/preset/EXAMPLES.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/models/deploy-model/preset/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/models/deploy-model/preset/references/preset-workflow.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/models/deploy-model/preset/references/workflow.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/models/deploy-model/scripts/generate_deployment_url.ps1 (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/models/deploy-model/scripts/generate_deployment_url.sh (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/project/connections.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/project/create/create-foundry-project.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/quota/quota.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/quota/references/capacity-planning.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/quota/references/error-resolution.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/quota/references/optimization.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/quota/references/ptu-guide.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/quota/references/troubleshooting.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/quota/references/workflows.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/rbac/rbac.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/references/agent-metadata-contract.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/references/auth-best-practices.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/references/sdk/foundry-sdk-py.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/references/standard-agent-setup.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/resource/create/create-foundry-resource.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/resource/create/references/patterns.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/resource/create/references/troubleshooting.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/resource/create/references/workflows.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/resource/private-network/private-network.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/resource/private-network/references/custom-template-adaptation.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/resource/private-network/references/deploy.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/resource/private-network/references/end-to-end-test.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/resource/private-network/references/intake.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/resource/private-network/references/post-deployment-validation.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/resource/private-network/references/scaffold.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/resource/private-network/references/template-index.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/resource/private-network/references/vpn-dns-setup.bicep (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/resource/private-network/references/vpn-dns-setup.md (100%) rename plugins/{azure => azure-skills}/skills/microsoft-foundry/version.json (100%) rename plugins/{azure => azure-skills}/skills/python-appservice-deploy/SKILL.md (100%) rename plugins/{azure => azure-skills}/skills/python-appservice-deploy/references/create-app.md (100%) rename plugins/{azure => azure-skills}/skills/python-appservice-deploy/references/deploy-azcli.md (100%) rename plugins/{azure => azure-skills}/skills/python-appservice-deploy/references/deploy-azd.md (100%) rename plugins/{azure => azure-skills}/skills/python-appservice-deploy/references/detect.md (100%) rename plugins/{azure => azure-skills}/skills/python-appservice-deploy/references/errors.md (100%) rename plugins/{azure => azure-skills}/skills/python-appservice-deploy/references/post-deploy-message.md (100%) rename plugins/{azure => azure-skills}/skills/python-appservice-deploy/references/startup-commands.md (100%) rename plugins/{azure => azure-skills}/skills/python-appservice-deploy/references/transient-retry.md (100%) rename plugins/{azure => azure-skills}/skills/python-appservice-deploy/scripts/generate-app-name.ps1 (100%) rename plugins/{azure => azure-skills}/skills/python-appservice-deploy/scripts/generate-app-name.sh (100%) rename plugins/{azure => azure-skills}/skills/python-appservice-deploy/scripts/retry-az-create.ps1 (100%) rename plugins/{azure => azure-skills}/skills/python-appservice-deploy/scripts/retry-az-create.sh (100%) rename plugins/{azure => azure-skills}/skills/python-appservice-deploy/version.json (100%) rename plugins/{azure => azure-skills}/version.json (100%) diff --git a/plugins/azure/.claude-plugin/plugin.json b/plugins/azure-skills/.claude-plugin/plugin.json similarity index 100% rename from plugins/azure/.claude-plugin/plugin.json rename to plugins/azure-skills/.claude-plugin/plugin.json diff --git a/plugins/azure/.cursor-plugin/plugin.json b/plugins/azure-skills/.cursor-plugin/plugin.json similarity index 100% rename from plugins/azure/.cursor-plugin/plugin.json rename to plugins/azure-skills/.cursor-plugin/plugin.json diff --git a/plugins/azure/.mcp.json b/plugins/azure-skills/.mcp.json similarity index 100% rename from plugins/azure/.mcp.json rename to plugins/azure-skills/.mcp.json diff --git a/plugins/azure/.plugin/plugin.json b/plugins/azure-skills/.plugin/plugin.json similarity index 100% rename from plugins/azure/.plugin/plugin.json rename to plugins/azure-skills/.plugin/plugin.json diff --git a/plugins/azure/LICENSE b/plugins/azure-skills/LICENSE similarity index 100% rename from plugins/azure/LICENSE rename to plugins/azure-skills/LICENSE diff --git a/plugins/azure/README.md b/plugins/azure-skills/README.md similarity index 100% rename from plugins/azure/README.md rename to plugins/azure-skills/README.md diff --git a/plugins/azure/assets/azure-logo.svg b/plugins/azure-skills/assets/azure-logo.svg similarity index 100% rename from plugins/azure/assets/azure-logo.svg rename to plugins/azure-skills/assets/azure-logo.svg diff --git a/plugins/azure/changelog-2026-07-14.md b/plugins/azure-skills/changelog-2026-07-14.md similarity index 100% rename from plugins/azure/changelog-2026-07-14.md rename to plugins/azure-skills/changelog-2026-07-14.md diff --git a/plugins/azure/gemini-extension.json b/plugins/azure-skills/gemini-extension.json similarity index 100% rename from plugins/azure/gemini-extension.json rename to plugins/azure-skills/gemini-extension.json diff --git a/plugins/azure/hooks/claude-hooks.json b/plugins/azure-skills/hooks/claude-hooks.json similarity index 100% rename from plugins/azure/hooks/claude-hooks.json rename to plugins/azure-skills/hooks/claude-hooks.json diff --git a/plugins/azure/hooks/cursor-hooks.json b/plugins/azure-skills/hooks/cursor-hooks.json similarity index 100% rename from plugins/azure/hooks/cursor-hooks.json rename to plugins/azure-skills/hooks/cursor-hooks.json diff --git a/plugins/azure/hooks/hooks.json b/plugins/azure-skills/hooks/hooks.json similarity index 100% rename from plugins/azure/hooks/hooks.json rename to plugins/azure-skills/hooks/hooks.json diff --git a/plugins/azure/hooks/scripts/track-telemetry.ps1 b/plugins/azure-skills/hooks/scripts/track-telemetry.ps1 similarity index 100% rename from plugins/azure/hooks/scripts/track-telemetry.ps1 rename to plugins/azure-skills/hooks/scripts/track-telemetry.ps1 diff --git a/plugins/azure/hooks/scripts/track-telemetry.sh b/plugins/azure-skills/hooks/scripts/track-telemetry.sh similarity index 100% rename from plugins/azure/hooks/scripts/track-telemetry.sh rename to plugins/azure-skills/hooks/scripts/track-telemetry.sh diff --git a/plugins/azure/skills/airunway-aks-setup/SKILL.md b/plugins/azure-skills/skills/airunway-aks-setup/SKILL.md similarity index 100% rename from plugins/azure/skills/airunway-aks-setup/SKILL.md rename to plugins/azure-skills/skills/airunway-aks-setup/SKILL.md diff --git a/plugins/azure/skills/airunway-aks-setup/references/gpu-profiles.md b/plugins/azure-skills/skills/airunway-aks-setup/references/gpu-profiles.md similarity index 100% rename from plugins/azure/skills/airunway-aks-setup/references/gpu-profiles.md rename to plugins/azure-skills/skills/airunway-aks-setup/references/gpu-profiles.md diff --git a/plugins/azure/skills/airunway-aks-setup/references/model-sizing.md b/plugins/azure-skills/skills/airunway-aks-setup/references/model-sizing.md similarity index 100% rename from plugins/azure/skills/airunway-aks-setup/references/model-sizing.md rename to plugins/azure-skills/skills/airunway-aks-setup/references/model-sizing.md diff --git a/plugins/azure/skills/airunway-aks-setup/references/powershell-notes.md b/plugins/azure-skills/skills/airunway-aks-setup/references/powershell-notes.md similarity index 100% rename from plugins/azure/skills/airunway-aks-setup/references/powershell-notes.md rename to plugins/azure-skills/skills/airunway-aks-setup/references/powershell-notes.md diff --git a/plugins/azure/skills/airunway-aks-setup/references/steps/step-1-verify.md b/plugins/azure-skills/skills/airunway-aks-setup/references/steps/step-1-verify.md similarity index 100% rename from plugins/azure/skills/airunway-aks-setup/references/steps/step-1-verify.md rename to plugins/azure-skills/skills/airunway-aks-setup/references/steps/step-1-verify.md diff --git a/plugins/azure/skills/airunway-aks-setup/references/steps/step-2-controller.md b/plugins/azure-skills/skills/airunway-aks-setup/references/steps/step-2-controller.md similarity index 100% rename from plugins/azure/skills/airunway-aks-setup/references/steps/step-2-controller.md rename to plugins/azure-skills/skills/airunway-aks-setup/references/steps/step-2-controller.md diff --git a/plugins/azure/skills/airunway-aks-setup/references/steps/step-3-gpu.md b/plugins/azure-skills/skills/airunway-aks-setup/references/steps/step-3-gpu.md similarity index 100% rename from plugins/azure/skills/airunway-aks-setup/references/steps/step-3-gpu.md rename to plugins/azure-skills/skills/airunway-aks-setup/references/steps/step-3-gpu.md diff --git a/plugins/azure/skills/airunway-aks-setup/references/steps/step-4-provider.md b/plugins/azure-skills/skills/airunway-aks-setup/references/steps/step-4-provider.md similarity index 100% rename from plugins/azure/skills/airunway-aks-setup/references/steps/step-4-provider.md rename to plugins/azure-skills/skills/airunway-aks-setup/references/steps/step-4-provider.md diff --git a/plugins/azure/skills/airunway-aks-setup/references/steps/step-5-deploy.md b/plugins/azure-skills/skills/airunway-aks-setup/references/steps/step-5-deploy.md similarity index 100% rename from plugins/azure/skills/airunway-aks-setup/references/steps/step-5-deploy.md rename to plugins/azure-skills/skills/airunway-aks-setup/references/steps/step-5-deploy.md diff --git a/plugins/azure/skills/airunway-aks-setup/references/steps/step-6-summary.md b/plugins/azure-skills/skills/airunway-aks-setup/references/steps/step-6-summary.md similarity index 100% rename from plugins/azure/skills/airunway-aks-setup/references/steps/step-6-summary.md rename to plugins/azure-skills/skills/airunway-aks-setup/references/steps/step-6-summary.md diff --git a/plugins/azure/skills/airunway-aks-setup/references/troubleshooting.md b/plugins/azure-skills/skills/airunway-aks-setup/references/troubleshooting.md similarity index 100% rename from plugins/azure/skills/airunway-aks-setup/references/troubleshooting.md rename to plugins/azure-skills/skills/airunway-aks-setup/references/troubleshooting.md diff --git a/plugins/azure/skills/airunway-aks-setup/version.json b/plugins/azure-skills/skills/airunway-aks-setup/version.json similarity index 100% rename from plugins/azure/skills/airunway-aks-setup/version.json rename to plugins/azure-skills/skills/airunway-aks-setup/version.json diff --git a/plugins/azure/skills/appinsights-instrumentation/LICENSE.txt b/plugins/azure-skills/skills/appinsights-instrumentation/LICENSE.txt similarity index 100% rename from plugins/azure/skills/appinsights-instrumentation/LICENSE.txt rename to plugins/azure-skills/skills/appinsights-instrumentation/LICENSE.txt diff --git a/plugins/azure/skills/appinsights-instrumentation/SKILL.md b/plugins/azure-skills/skills/appinsights-instrumentation/SKILL.md similarity index 100% rename from plugins/azure/skills/appinsights-instrumentation/SKILL.md rename to plugins/azure-skills/skills/appinsights-instrumentation/SKILL.md diff --git a/plugins/azure/skills/appinsights-instrumentation/examples/appinsights.bicep b/plugins/azure-skills/skills/appinsights-instrumentation/examples/appinsights.bicep similarity index 100% rename from plugins/azure/skills/appinsights-instrumentation/examples/appinsights.bicep rename to plugins/azure-skills/skills/appinsights-instrumentation/examples/appinsights.bicep diff --git a/plugins/azure/skills/appinsights-instrumentation/references/aspnetcore.md b/plugins/azure-skills/skills/appinsights-instrumentation/references/aspnetcore.md similarity index 100% rename from plugins/azure/skills/appinsights-instrumentation/references/aspnetcore.md rename to plugins/azure-skills/skills/appinsights-instrumentation/references/aspnetcore.md diff --git a/plugins/azure/skills/appinsights-instrumentation/references/auto.md b/plugins/azure-skills/skills/appinsights-instrumentation/references/auto.md similarity index 100% rename from plugins/azure/skills/appinsights-instrumentation/references/auto.md rename to plugins/azure-skills/skills/appinsights-instrumentation/references/auto.md diff --git a/plugins/azure/skills/appinsights-instrumentation/references/container-apps.md b/plugins/azure-skills/skills/appinsights-instrumentation/references/container-apps.md similarity index 100% rename from plugins/azure/skills/appinsights-instrumentation/references/container-apps.md rename to plugins/azure-skills/skills/appinsights-instrumentation/references/container-apps.md diff --git a/plugins/azure/skills/appinsights-instrumentation/references/nodejs.md b/plugins/azure-skills/skills/appinsights-instrumentation/references/nodejs.md similarity index 100% rename from plugins/azure/skills/appinsights-instrumentation/references/nodejs.md rename to plugins/azure-skills/skills/appinsights-instrumentation/references/nodejs.md diff --git a/plugins/azure/skills/appinsights-instrumentation/references/python.md b/plugins/azure-skills/skills/appinsights-instrumentation/references/python.md similarity index 100% rename from plugins/azure/skills/appinsights-instrumentation/references/python.md rename to plugins/azure-skills/skills/appinsights-instrumentation/references/python.md diff --git a/plugins/azure/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-exporter-java.md b/plugins/azure-skills/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-exporter-java.md similarity index 100% rename from plugins/azure/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-exporter-java.md rename to plugins/azure-skills/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-exporter-java.md diff --git a/plugins/azure/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-exporter-py.md b/plugins/azure-skills/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-exporter-py.md similarity index 100% rename from plugins/azure/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-exporter-py.md rename to plugins/azure-skills/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-exporter-py.md diff --git a/plugins/azure/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-py.md b/plugins/azure-skills/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-py.md similarity index 100% rename from plugins/azure/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-py.md rename to plugins/azure-skills/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-py.md diff --git a/plugins/azure/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-ts.md b/plugins/azure-skills/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-ts.md similarity index 100% rename from plugins/azure/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-ts.md rename to plugins/azure-skills/skills/appinsights-instrumentation/references/sdk/azure-monitor-opentelemetry-ts.md diff --git a/plugins/azure/skills/appinsights-instrumentation/scripts/appinsights.ps1 b/plugins/azure-skills/skills/appinsights-instrumentation/scripts/appinsights.ps1 similarity index 100% rename from plugins/azure/skills/appinsights-instrumentation/scripts/appinsights.ps1 rename to plugins/azure-skills/skills/appinsights-instrumentation/scripts/appinsights.ps1 diff --git a/plugins/azure/skills/azure-ai/SKILL.md b/plugins/azure-skills/skills/azure-ai/SKILL.md similarity index 100% rename from plugins/azure/skills/azure-ai/SKILL.md rename to plugins/azure-skills/skills/azure-ai/SKILL.md diff --git a/plugins/azure/skills/azure-ai/references/auth-best-practices.md b/plugins/azure-skills/skills/azure-ai/references/auth-best-practices.md similarity index 100% rename from plugins/azure/skills/azure-ai/references/auth-best-practices.md rename to plugins/azure-skills/skills/azure-ai/references/auth-best-practices.md diff --git a/plugins/azure/skills/azure-ai/references/sdk/azure-ai-contentsafety-java.md b/plugins/azure-skills/skills/azure-ai/references/sdk/azure-ai-contentsafety-java.md similarity index 100% rename from plugins/azure/skills/azure-ai/references/sdk/azure-ai-contentsafety-java.md rename to plugins/azure-skills/skills/azure-ai/references/sdk/azure-ai-contentsafety-java.md diff --git a/plugins/azure/skills/azure-ai/references/sdk/azure-ai-contentsafety-py.md b/plugins/azure-skills/skills/azure-ai/references/sdk/azure-ai-contentsafety-py.md similarity index 100% rename from plugins/azure/skills/azure-ai/references/sdk/azure-ai-contentsafety-py.md rename to plugins/azure-skills/skills/azure-ai/references/sdk/azure-ai-contentsafety-py.md diff --git a/plugins/azure/skills/azure-ai/references/sdk/azure-ai-contentsafety-ts.md b/plugins/azure-skills/skills/azure-ai/references/sdk/azure-ai-contentsafety-ts.md similarity index 100% rename from plugins/azure/skills/azure-ai/references/sdk/azure-ai-contentsafety-ts.md rename to plugins/azure-skills/skills/azure-ai/references/sdk/azure-ai-contentsafety-ts.md diff --git a/plugins/azure/skills/azure-ai/references/sdk/azure-ai-document-intelligence-dotnet.md b/plugins/azure-skills/skills/azure-ai/references/sdk/azure-ai-document-intelligence-dotnet.md similarity index 100% rename from plugins/azure/skills/azure-ai/references/sdk/azure-ai-document-intelligence-dotnet.md rename to plugins/azure-skills/skills/azure-ai/references/sdk/azure-ai-document-intelligence-dotnet.md diff --git a/plugins/azure/skills/azure-ai/references/sdk/azure-ai-document-intelligence-ts.md b/plugins/azure-skills/skills/azure-ai/references/sdk/azure-ai-document-intelligence-ts.md similarity index 100% rename from plugins/azure/skills/azure-ai/references/sdk/azure-ai-document-intelligence-ts.md rename to plugins/azure-skills/skills/azure-ai/references/sdk/azure-ai-document-intelligence-ts.md diff --git a/plugins/azure/skills/azure-ai/references/sdk/azure-ai-openai-dotnet.md b/plugins/azure-skills/skills/azure-ai/references/sdk/azure-ai-openai-dotnet.md similarity index 100% rename from plugins/azure/skills/azure-ai/references/sdk/azure-ai-openai-dotnet.md rename to plugins/azure-skills/skills/azure-ai/references/sdk/azure-ai-openai-dotnet.md diff --git a/plugins/azure/skills/azure-ai/references/sdk/azure-ai-transcription-py.md b/plugins/azure-skills/skills/azure-ai/references/sdk/azure-ai-transcription-py.md similarity index 100% rename from plugins/azure/skills/azure-ai/references/sdk/azure-ai-transcription-py.md rename to plugins/azure-skills/skills/azure-ai/references/sdk/azure-ai-transcription-py.md diff --git a/plugins/azure/skills/azure-ai/references/sdk/azure-ai-translation-text-py.md b/plugins/azure-skills/skills/azure-ai/references/sdk/azure-ai-translation-text-py.md similarity index 100% rename from plugins/azure/skills/azure-ai/references/sdk/azure-ai-translation-text-py.md rename to plugins/azure-skills/skills/azure-ai/references/sdk/azure-ai-translation-text-py.md diff --git a/plugins/azure/skills/azure-ai/references/sdk/azure-ai-translation-ts.md b/plugins/azure-skills/skills/azure-ai/references/sdk/azure-ai-translation-ts.md similarity index 100% rename from plugins/azure/skills/azure-ai/references/sdk/azure-ai-translation-ts.md rename to plugins/azure-skills/skills/azure-ai/references/sdk/azure-ai-translation-ts.md diff --git a/plugins/azure/skills/azure-ai/references/sdk/azure-ai-vision-imageanalysis-java.md b/plugins/azure-skills/skills/azure-ai/references/sdk/azure-ai-vision-imageanalysis-java.md similarity index 100% rename from plugins/azure/skills/azure-ai/references/sdk/azure-ai-vision-imageanalysis-java.md rename to plugins/azure-skills/skills/azure-ai/references/sdk/azure-ai-vision-imageanalysis-java.md diff --git a/plugins/azure/skills/azure-ai/references/sdk/azure-ai-vision-imageanalysis-py.md b/plugins/azure-skills/skills/azure-ai/references/sdk/azure-ai-vision-imageanalysis-py.md similarity index 100% rename from plugins/azure/skills/azure-ai/references/sdk/azure-ai-vision-imageanalysis-py.md rename to plugins/azure-skills/skills/azure-ai/references/sdk/azure-ai-vision-imageanalysis-py.md diff --git a/plugins/azure/skills/azure-ai/references/sdk/azure-search-documents-dotnet.md b/plugins/azure-skills/skills/azure-ai/references/sdk/azure-search-documents-dotnet.md similarity index 100% rename from plugins/azure/skills/azure-ai/references/sdk/azure-search-documents-dotnet.md rename to plugins/azure-skills/skills/azure-ai/references/sdk/azure-search-documents-dotnet.md diff --git a/plugins/azure/skills/azure-ai/references/sdk/azure-search-documents-py.md b/plugins/azure-skills/skills/azure-ai/references/sdk/azure-search-documents-py.md similarity index 100% rename from plugins/azure/skills/azure-ai/references/sdk/azure-search-documents-py.md rename to plugins/azure-skills/skills/azure-ai/references/sdk/azure-search-documents-py.md diff --git a/plugins/azure/skills/azure-ai/references/sdk/azure-search-documents-ts.md b/plugins/azure-skills/skills/azure-ai/references/sdk/azure-search-documents-ts.md similarity index 100% rename from plugins/azure/skills/azure-ai/references/sdk/azure-search-documents-ts.md rename to plugins/azure-skills/skills/azure-ai/references/sdk/azure-search-documents-ts.md diff --git a/plugins/azure/skills/azure-ai/version.json b/plugins/azure-skills/skills/azure-ai/version.json similarity index 100% rename from plugins/azure/skills/azure-ai/version.json rename to plugins/azure-skills/skills/azure-ai/version.json diff --git a/plugins/azure/skills/azure-aigateway/SKILL.md b/plugins/azure-skills/skills/azure-aigateway/SKILL.md similarity index 100% rename from plugins/azure/skills/azure-aigateway/SKILL.md rename to plugins/azure-skills/skills/azure-aigateway/SKILL.md diff --git a/plugins/azure/skills/azure-aigateway/references/auth-best-practices.md b/plugins/azure-skills/skills/azure-aigateway/references/auth-best-practices.md similarity index 100% rename from plugins/azure/skills/azure-aigateway/references/auth-best-practices.md rename to plugins/azure-skills/skills/azure-aigateway/references/auth-best-practices.md diff --git a/plugins/azure/skills/azure-aigateway/references/patterns.md b/plugins/azure-skills/skills/azure-aigateway/references/patterns.md similarity index 100% rename from plugins/azure/skills/azure-aigateway/references/patterns.md rename to plugins/azure-skills/skills/azure-aigateway/references/patterns.md diff --git a/plugins/azure/skills/azure-aigateway/references/policies.md b/plugins/azure-skills/skills/azure-aigateway/references/policies.md similarity index 100% rename from plugins/azure/skills/azure-aigateway/references/policies.md rename to plugins/azure-skills/skills/azure-aigateway/references/policies.md diff --git a/plugins/azure/skills/azure-aigateway/references/sdk/azure-ai-contentsafety-py.md b/plugins/azure-skills/skills/azure-aigateway/references/sdk/azure-ai-contentsafety-py.md similarity index 100% rename from plugins/azure/skills/azure-aigateway/references/sdk/azure-ai-contentsafety-py.md rename to plugins/azure-skills/skills/azure-aigateway/references/sdk/azure-ai-contentsafety-py.md diff --git a/plugins/azure/skills/azure-aigateway/references/sdk/azure-ai-contentsafety-ts.md b/plugins/azure-skills/skills/azure-aigateway/references/sdk/azure-ai-contentsafety-ts.md similarity index 100% rename from plugins/azure/skills/azure-aigateway/references/sdk/azure-ai-contentsafety-ts.md rename to plugins/azure-skills/skills/azure-aigateway/references/sdk/azure-ai-contentsafety-ts.md diff --git a/plugins/azure/skills/azure-aigateway/references/sdk/azure-mgmt-apimanagement-dotnet.md b/plugins/azure-skills/skills/azure-aigateway/references/sdk/azure-mgmt-apimanagement-dotnet.md similarity index 100% rename from plugins/azure/skills/azure-aigateway/references/sdk/azure-mgmt-apimanagement-dotnet.md rename to plugins/azure-skills/skills/azure-aigateway/references/sdk/azure-mgmt-apimanagement-dotnet.md diff --git a/plugins/azure/skills/azure-aigateway/references/sdk/azure-mgmt-apimanagement-py.md b/plugins/azure-skills/skills/azure-aigateway/references/sdk/azure-mgmt-apimanagement-py.md similarity index 100% rename from plugins/azure/skills/azure-aigateway/references/sdk/azure-mgmt-apimanagement-py.md rename to plugins/azure-skills/skills/azure-aigateway/references/sdk/azure-mgmt-apimanagement-py.md diff --git a/plugins/azure/skills/azure-aigateway/references/troubleshooting.md b/plugins/azure-skills/skills/azure-aigateway/references/troubleshooting.md similarity index 100% rename from plugins/azure/skills/azure-aigateway/references/troubleshooting.md rename to plugins/azure-skills/skills/azure-aigateway/references/troubleshooting.md diff --git a/plugins/azure/skills/azure-aigateway/version.json b/plugins/azure-skills/skills/azure-aigateway/version.json similarity index 100% rename from plugins/azure/skills/azure-aigateway/version.json rename to plugins/azure-skills/skills/azure-aigateway/version.json diff --git a/plugins/azure/skills/azure-cloud-migrate/SKILL.md b/plugins/azure-skills/skills/azure-cloud-migrate/SKILL.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/SKILL.md rename to plugins/azure-skills/skills/azure-cloud-migrate/SKILL.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/app-service/app-engine-to-app-service.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/app-service/app-engine-to-app-service.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/app-service/app-engine-to-app-service.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/app-service/app-engine-to-app-service.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/app-service/assessment.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/app-service/assessment.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/app-service/assessment.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/app-service/assessment.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/app-service/beanstalk-to-app-service.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/app-service/beanstalk-to-app-service.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/app-service/beanstalk-to-app-service.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/app-service/beanstalk-to-app-service.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/app-service/code-migration.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/app-service/code-migration.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/app-service/code-migration.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/app-service/code-migration.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/app-service/global-rules.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/app-service/global-rules.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/app-service/global-rules.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/app-service/global-rules.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/app-service/heroku-to-app-service.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/app-service/heroku-to-app-service.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/app-service/heroku-to-app-service.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/app-service/heroku-to-app-service.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/assessment-guide.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/container-apps/assessment-guide.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/assessment-guide.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/container-apps/assessment-guide.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-assessment-guide.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-assessment-guide.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-assessment-guide.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-assessment-guide.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-deployment-guide.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-deployment-guide.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-deployment-guide.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-deployment-guide.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-to-container-apps.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-to-container-apps.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-to-container-apps.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/container-apps/cloudrun-to-container-apps.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/deployment-guide.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/container-apps/deployment-guide.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/deployment-guide.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/container-apps/deployment-guide.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/fargate-assessment-guide.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/container-apps/fargate-assessment-guide.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/fargate-assessment-guide.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/container-apps/fargate-assessment-guide.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/fargate-deployment-guide.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/container-apps/fargate-deployment-guide.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/fargate-deployment-guide.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/container-apps/fargate-deployment-guide.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/fargate-to-container-apps.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/container-apps/fargate-to-container-apps.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/fargate-to-container-apps.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/container-apps/fargate-to-container-apps.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/k8s-to-container-apps.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/container-apps/k8s-to-container-apps.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/k8s-to-container-apps.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/container-apps/k8s-to-container-apps.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/spring-apps-to-aca.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/container-apps/spring-apps-to-aca.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/spring-apps-to-aca.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/container-apps/spring-apps-to-aca.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/spring-assessment-guide.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/container-apps/spring-assessment-guide.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/spring-assessment-guide.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/container-apps/spring-assessment-guide.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/spring-dependency-patterns.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/container-apps/spring-dependency-patterns.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/spring-dependency-patterns.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/container-apps/spring-dependency-patterns.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/spring-deployment-guide.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/container-apps/spring-deployment-guide.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/container-apps/spring-deployment-guide.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/container-apps/spring-deployment-guide.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/functions/assessment.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/functions/assessment.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/functions/assessment.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/functions/assessment.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/functions/code-migration.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/functions/code-migration.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/functions/code-migration.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/functions/code-migration.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/functions/global-rules.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/functions/global-rules.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/functions/global-rules.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/functions/global-rules.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/functions/lambda-to-functions.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/functions/lambda-to-functions.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/functions/lambda-to-functions.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/functions/lambda-to-functions.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/functions/runtimes/csharp.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/functions/runtimes/csharp.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/functions/runtimes/csharp.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/functions/runtimes/csharp.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/functions/runtimes/java.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/functions/runtimes/java.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/functions/runtimes/java.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/functions/runtimes/java.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/functions/runtimes/javascript.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/functions/runtimes/javascript.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/functions/runtimes/javascript.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/functions/runtimes/javascript.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/functions/runtimes/powershell.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/functions/runtimes/powershell.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/functions/runtimes/powershell.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/functions/runtimes/powershell.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/functions/runtimes/python.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/functions/runtimes/python.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/functions/runtimes/python.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/functions/runtimes/python.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/services/functions/runtimes/typescript.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/services/functions/runtimes/typescript.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/services/functions/runtimes/typescript.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/services/functions/runtimes/typescript.md diff --git a/plugins/azure/skills/azure-cloud-migrate/references/workflow-details.md b/plugins/azure-skills/skills/azure-cloud-migrate/references/workflow-details.md similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/references/workflow-details.md rename to plugins/azure-skills/skills/azure-cloud-migrate/references/workflow-details.md diff --git a/plugins/azure/skills/azure-cloud-migrate/version.json b/plugins/azure-skills/skills/azure-cloud-migrate/version.json similarity index 100% rename from plugins/azure/skills/azure-cloud-migrate/version.json rename to plugins/azure-skills/skills/azure-cloud-migrate/version.json diff --git a/plugins/azure/skills/azure-compliance/SKILL.md b/plugins/azure-skills/skills/azure-compliance/SKILL.md similarity index 100% rename from plugins/azure/skills/azure-compliance/SKILL.md rename to plugins/azure-skills/skills/azure-compliance/SKILL.md diff --git a/plugins/azure/skills/azure-compliance/references/auth-best-practices.md b/plugins/azure-skills/skills/azure-compliance/references/auth-best-practices.md similarity index 100% rename from plugins/azure/skills/azure-compliance/references/auth-best-practices.md rename to plugins/azure-skills/skills/azure-compliance/references/auth-best-practices.md diff --git a/plugins/azure/skills/azure-compliance/references/azqr-recommendations.md b/plugins/azure-skills/skills/azure-compliance/references/azqr-recommendations.md similarity index 100% rename from plugins/azure/skills/azure-compliance/references/azqr-recommendations.md rename to plugins/azure-skills/skills/azure-compliance/references/azqr-recommendations.md diff --git a/plugins/azure/skills/azure-compliance/references/azqr-remediation-patterns.md b/plugins/azure-skills/skills/azure-compliance/references/azqr-remediation-patterns.md similarity index 100% rename from plugins/azure/skills/azure-compliance/references/azqr-remediation-patterns.md rename to plugins/azure-skills/skills/azure-compliance/references/azqr-remediation-patterns.md diff --git a/plugins/azure/skills/azure-compliance/references/azure-keyvault-expiration-audit.md b/plugins/azure-skills/skills/azure-compliance/references/azure-keyvault-expiration-audit.md similarity index 100% rename from plugins/azure/skills/azure-compliance/references/azure-keyvault-expiration-audit.md rename to plugins/azure-skills/skills/azure-compliance/references/azure-keyvault-expiration-audit.md diff --git a/plugins/azure/skills/azure-compliance/references/azure-quick-review.md b/plugins/azure-skills/skills/azure-compliance/references/azure-quick-review.md similarity index 100% rename from plugins/azure/skills/azure-compliance/references/azure-quick-review.md rename to plugins/azure-skills/skills/azure-compliance/references/azure-quick-review.md diff --git a/plugins/azure/skills/azure-compliance/references/azure-resource-graph.md b/plugins/azure-skills/skills/azure-compliance/references/azure-resource-graph.md similarity index 100% rename from plugins/azure/skills/azure-compliance/references/azure-resource-graph.md rename to plugins/azure-skills/skills/azure-compliance/references/azure-resource-graph.md diff --git a/plugins/azure/skills/azure-compliance/references/sdk/azure-keyvault-certificates-rust.md b/plugins/azure-skills/skills/azure-compliance/references/sdk/azure-keyvault-certificates-rust.md similarity index 100% rename from plugins/azure/skills/azure-compliance/references/sdk/azure-keyvault-certificates-rust.md rename to plugins/azure-skills/skills/azure-compliance/references/sdk/azure-keyvault-certificates-rust.md diff --git a/plugins/azure/skills/azure-compliance/references/sdk/azure-keyvault-keys-rust.md b/plugins/azure-skills/skills/azure-compliance/references/sdk/azure-keyvault-keys-rust.md similarity index 100% rename from plugins/azure/skills/azure-compliance/references/sdk/azure-keyvault-keys-rust.md rename to plugins/azure-skills/skills/azure-compliance/references/sdk/azure-keyvault-keys-rust.md diff --git a/plugins/azure/skills/azure-compliance/references/sdk/azure-keyvault-keys-ts.md b/plugins/azure-skills/skills/azure-compliance/references/sdk/azure-keyvault-keys-ts.md similarity index 100% rename from plugins/azure/skills/azure-compliance/references/sdk/azure-keyvault-keys-ts.md rename to plugins/azure-skills/skills/azure-compliance/references/sdk/azure-keyvault-keys-ts.md diff --git a/plugins/azure/skills/azure-compliance/references/sdk/azure-keyvault-py.md b/plugins/azure-skills/skills/azure-compliance/references/sdk/azure-keyvault-py.md similarity index 100% rename from plugins/azure/skills/azure-compliance/references/sdk/azure-keyvault-py.md rename to plugins/azure-skills/skills/azure-compliance/references/sdk/azure-keyvault-py.md diff --git a/plugins/azure/skills/azure-compliance/references/sdk/azure-keyvault-secrets-rust.md b/plugins/azure-skills/skills/azure-compliance/references/sdk/azure-keyvault-secrets-rust.md similarity index 100% rename from plugins/azure/skills/azure-compliance/references/sdk/azure-keyvault-secrets-rust.md rename to plugins/azure-skills/skills/azure-compliance/references/sdk/azure-keyvault-secrets-rust.md diff --git a/plugins/azure/skills/azure-compliance/references/sdk/azure-keyvault-secrets-ts.md b/plugins/azure-skills/skills/azure-compliance/references/sdk/azure-keyvault-secrets-ts.md similarity index 100% rename from plugins/azure/skills/azure-compliance/references/sdk/azure-keyvault-secrets-ts.md rename to plugins/azure-skills/skills/azure-compliance/references/sdk/azure-keyvault-secrets-ts.md diff --git a/plugins/azure/skills/azure-compliance/references/sdk/azure-security-keyvault-keys-dotnet.md b/plugins/azure-skills/skills/azure-compliance/references/sdk/azure-security-keyvault-keys-dotnet.md similarity index 100% rename from plugins/azure/skills/azure-compliance/references/sdk/azure-security-keyvault-keys-dotnet.md rename to plugins/azure-skills/skills/azure-compliance/references/sdk/azure-security-keyvault-keys-dotnet.md diff --git a/plugins/azure/skills/azure-compliance/references/sdk/azure-security-keyvault-keys-java.md b/plugins/azure-skills/skills/azure-compliance/references/sdk/azure-security-keyvault-keys-java.md similarity index 100% rename from plugins/azure/skills/azure-compliance/references/sdk/azure-security-keyvault-keys-java.md rename to plugins/azure-skills/skills/azure-compliance/references/sdk/azure-security-keyvault-keys-java.md diff --git a/plugins/azure/skills/azure-compliance/references/sdk/azure-security-keyvault-secrets-java.md b/plugins/azure-skills/skills/azure-compliance/references/sdk/azure-security-keyvault-secrets-java.md similarity index 100% rename from plugins/azure/skills/azure-compliance/references/sdk/azure-security-keyvault-secrets-java.md rename to plugins/azure-skills/skills/azure-compliance/references/sdk/azure-security-keyvault-secrets-java.md diff --git a/plugins/azure/skills/azure-compliance/version.json b/plugins/azure-skills/skills/azure-compliance/version.json similarity index 100% rename from plugins/azure/skills/azure-compliance/version.json rename to plugins/azure-skills/skills/azure-compliance/version.json diff --git a/plugins/azure/skills/azure-compute/SKILL.md b/plugins/azure-skills/skills/azure-compute/SKILL.md similarity index 100% rename from plugins/azure/skills/azure-compute/SKILL.md rename to plugins/azure-skills/skills/azure-compute/SKILL.md diff --git a/plugins/azure/skills/azure-compute/references/retail-prices-api.md b/plugins/azure-skills/skills/azure-compute/references/retail-prices-api.md similarity index 100% rename from plugins/azure/skills/azure-compute/references/retail-prices-api.md rename to plugins/azure-skills/skills/azure-compute/references/retail-prices-api.md diff --git a/plugins/azure/skills/azure-compute/references/vm-families.md b/plugins/azure-skills/skills/azure-compute/references/vm-families.md similarity index 100% rename from plugins/azure/skills/azure-compute/references/vm-families.md rename to plugins/azure-skills/skills/azure-compute/references/vm-families.md diff --git a/plugins/azure/skills/azure-compute/references/vm-quotas.md b/plugins/azure-skills/skills/azure-compute/references/vm-quotas.md similarity index 100% rename from plugins/azure/skills/azure-compute/references/vm-quotas.md rename to plugins/azure-skills/skills/azure-compute/references/vm-quotas.md diff --git a/plugins/azure/skills/azure-compute/references/vmss-guide.md b/plugins/azure-skills/skills/azure-compute/references/vmss-guide.md similarity index 100% rename from plugins/azure/skills/azure-compute/references/vmss-guide.md rename to plugins/azure-skills/skills/azure-compute/references/vmss-guide.md diff --git a/plugins/azure/skills/azure-compute/version.json b/plugins/azure-skills/skills/azure-compute/version.json similarity index 100% rename from plugins/azure/skills/azure-compute/version.json rename to plugins/azure-skills/skills/azure-compute/version.json diff --git a/plugins/azure/skills/azure-compute/workflows/capacity-reservation/capacity-reservation.md b/plugins/azure-skills/skills/azure-compute/workflows/capacity-reservation/capacity-reservation.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/capacity-reservation/capacity-reservation.md rename to plugins/azure-skills/skills/azure-compute/workflows/capacity-reservation/capacity-reservation.md diff --git a/plugins/azure/skills/azure-compute/workflows/capacity-reservation/references/association-disassociation.md b/plugins/azure-skills/skills/azure-compute/workflows/capacity-reservation/references/association-disassociation.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/capacity-reservation/references/association-disassociation.md rename to plugins/azure-skills/skills/azure-compute/workflows/capacity-reservation/references/association-disassociation.md diff --git a/plugins/azure/skills/azure-compute/workflows/capacity-reservation/references/capacity-reservation-overview.md b/plugins/azure-skills/skills/azure-compute/workflows/capacity-reservation/references/capacity-reservation-overview.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/capacity-reservation/references/capacity-reservation-overview.md rename to plugins/azure-skills/skills/azure-compute/workflows/capacity-reservation/references/capacity-reservation-overview.md diff --git a/plugins/azure/skills/azure-compute/workflows/essential-machine-management/essential-machine-management.md b/plugins/azure-skills/skills/azure-compute/workflows/essential-machine-management/essential-machine-management.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/essential-machine-management/essential-machine-management.md rename to plugins/azure-skills/skills/azure-compute/workflows/essential-machine-management/essential-machine-management.md diff --git a/plugins/azure/skills/azure-compute/workflows/essential-machine-management/references/emm-enable-flow-portal-guidance.md b/plugins/azure-skills/skills/azure-compute/workflows/essential-machine-management/references/emm-enable-flow-portal-guidance.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/essential-machine-management/references/emm-enable-flow-portal-guidance.md rename to plugins/azure-skills/skills/azure-compute/workflows/essential-machine-management/references/emm-enable-flow-portal-guidance.md diff --git a/plugins/azure/skills/azure-compute/workflows/essential-machine-management/references/emm-enable-flow.md b/plugins/azure-skills/skills/azure-compute/workflows/essential-machine-management/references/emm-enable-flow.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/essential-machine-management/references/emm-enable-flow.md rename to plugins/azure-skills/skills/azure-compute/workflows/essential-machine-management/references/emm-enable-flow.md diff --git a/plugins/azure/skills/azure-compute/workflows/essential-machine-management/references/emm-overview.md b/plugins/azure-skills/skills/azure-compute/workflows/essential-machine-management/references/emm-overview.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/essential-machine-management/references/emm-overview.md rename to plugins/azure-skills/skills/azure-compute/workflows/essential-machine-management/references/emm-overview.md diff --git a/plugins/azure/skills/azure-compute/workflows/essential-machine-management/references/emm-prerequisites.md b/plugins/azure-skills/skills/azure-compute/workflows/essential-machine-management/references/emm-prerequisites.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/essential-machine-management/references/emm-prerequisites.md rename to plugins/azure-skills/skills/azure-compute/workflows/essential-machine-management/references/emm-prerequisites.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-creator/examples/bicep/README.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-creator/examples/bicep/README.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-creator/examples/bicep/README.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-creator/examples/bicep/README.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-creator/examples/bicep/main.bicep b/plugins/azure-skills/skills/azure-compute/workflows/vm-creator/examples/bicep/main.bicep similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-creator/examples/bicep/main.bicep rename to plugins/azure-skills/skills/azure-compute/workflows/vm-creator/examples/bicep/main.bicep diff --git a/plugins/azure/skills/azure-compute/workflows/vm-creator/examples/terraform/README.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-creator/examples/terraform/README.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-creator/examples/terraform/README.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-creator/examples/terraform/README.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-creator/examples/terraform/main.tf b/plugins/azure-skills/skills/azure-compute/workflows/vm-creator/examples/terraform/main.tf similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-creator/examples/terraform/main.tf rename to plugins/azure-skills/skills/azure-compute/workflows/vm-creator/examples/terraform/main.tf diff --git a/plugins/azure/skills/azure-compute/workflows/vm-creator/examples/terraform/outputs.tf b/plugins/azure-skills/skills/azure-compute/workflows/vm-creator/examples/terraform/outputs.tf similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-creator/examples/terraform/outputs.tf rename to plugins/azure-skills/skills/azure-compute/workflows/vm-creator/examples/terraform/outputs.tf diff --git a/plugins/azure/skills/azure-compute/workflows/vm-creator/examples/terraform/variables.tf b/plugins/azure-skills/skills/azure-compute/workflows/vm-creator/examples/terraform/variables.tf similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-creator/examples/terraform/variables.tf rename to plugins/azure-skills/skills/azure-compute/workflows/vm-creator/examples/terraform/variables.tf diff --git a/plugins/azure/skills/azure-compute/workflows/vm-creator/references/delivery-options/github-pr.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/delivery-options/github-pr.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-creator/references/delivery-options/github-pr.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/delivery-options/github-pr.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-creator/references/delivery-options/index.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/delivery-options/index.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-creator/references/delivery-options/index.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/delivery-options/index.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-creator/references/delivery-options/print.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/delivery-options/print.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-creator/references/delivery-options/print.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/delivery-options/print.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-creator/references/delivery-options/save-local.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/delivery-options/save-local.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-creator/references/delivery-options/save-local.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/delivery-options/save-local.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-creator/references/depth-probe/beginner.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/depth-probe/beginner.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-creator/references/depth-probe/beginner.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/depth-probe/beginner.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-creator/references/depth-probe/cost-deep.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/depth-probe/cost-deep.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-creator/references/depth-probe/cost-deep.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/depth-probe/cost-deep.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-creator/references/depth-probe/index.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/depth-probe/index.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-creator/references/depth-probe/index.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/depth-probe/index.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-creator/references/depth-probe/networking-deep.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/depth-probe/networking-deep.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-creator/references/depth-probe/networking-deep.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/depth-probe/networking-deep.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-creator/references/depth-probe/security-deep.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/depth-probe/security-deep.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-creator/references/depth-probe/security-deep.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/depth-probe/security-deep.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-creator/references/depth-probe/spec-deep.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/depth-probe/spec-deep.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-creator/references/depth-probe/spec-deep.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/depth-probe/spec-deep.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-creator/references/mcp-tools.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/mcp-tools.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-creator/references/mcp-tools.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/mcp-tools.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-creator/references/output-adapters/az-cli.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/output-adapters/az-cli.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-creator/references/output-adapters/az-cli.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/output-adapters/az-cli.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-creator/references/output-adapters/bicep.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/output-adapters/bicep.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-creator/references/output-adapters/bicep.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/output-adapters/bicep.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-creator/references/output-adapters/index.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/output-adapters/index.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-creator/references/output-adapters/index.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/output-adapters/index.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-creator/references/output-adapters/mcp-apply.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/output-adapters/mcp-apply.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-creator/references/output-adapters/mcp-apply.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/output-adapters/mcp-apply.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-creator/references/output-adapters/terraform.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/output-adapters/terraform.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-creator/references/output-adapters/terraform.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/output-adapters/terraform.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-creator/references/plan-card.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/plan-card.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-creator/references/plan-card.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/plan-card.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-creator/references/validation-gates.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/validation-gates.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-creator/references/validation-gates.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-creator/references/validation-gates.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-creator/vm-creator.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-creator/vm-creator.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-creator/vm-creator.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-creator/vm-creator.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-recommender/references/handoff-to-creator.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-recommender/references/handoff-to-creator.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-recommender/references/handoff-to-creator.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-recommender/references/handoff-to-creator.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-recommender/references/web-fetch-policy.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-recommender/references/web-fetch-policy.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-recommender/references/web-fetch-policy.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-recommender/references/web-fetch-policy.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-recommender/vm-recommender.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-recommender/vm-recommender.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-recommender/vm-recommender.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-recommender/vm-recommender.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/cannot-connect-to-vm.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-troubleshooter/references/cannot-connect-to-vm.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/cannot-connect-to-vm.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-troubleshooter/references/cannot-connect-to-vm.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/credential-auth-errors.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-troubleshooter/references/credential-auth-errors.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/credential-auth-errors.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-troubleshooter/references/credential-auth-errors.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/firewall-blocking.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-troubleshooter/references/firewall-blocking.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/firewall-blocking.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-troubleshooter/references/firewall-blocking.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/network-connectivity.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-troubleshooter/references/network-connectivity.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/network-connectivity.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-troubleshooter/references/network-connectivity.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/rdp-connectivity.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-troubleshooter/references/rdp-connectivity.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/rdp-connectivity.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-troubleshooter/references/rdp-connectivity.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/rdp-service-config.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-troubleshooter/references/rdp-service-config.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/rdp-service-config.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-troubleshooter/references/rdp-service-config.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/ssh-connectivity.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-troubleshooter/references/ssh-connectivity.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/ssh-connectivity.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-troubleshooter/references/ssh-connectivity.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/vm-agent-not-responding.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-troubleshooter/references/vm-agent-not-responding.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/references/vm-agent-not-responding.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-troubleshooter/references/vm-agent-not-responding.md diff --git a/plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/vm-troubleshooter.md b/plugins/azure-skills/skills/azure-compute/workflows/vm-troubleshooter/vm-troubleshooter.md similarity index 100% rename from plugins/azure/skills/azure-compute/workflows/vm-troubleshooter/vm-troubleshooter.md rename to plugins/azure-skills/skills/azure-compute/workflows/vm-troubleshooter/vm-troubleshooter.md diff --git a/plugins/azure/skills/azure-cost/SKILL.md b/plugins/azure-skills/skills/azure-cost/SKILL.md similarity index 100% rename from plugins/azure/skills/azure-cost/SKILL.md rename to plugins/azure-skills/skills/azure-cost/SKILL.md diff --git a/plugins/azure/skills/azure-cost/cost-forecast/error-handling.md b/plugins/azure-skills/skills/azure-cost/cost-forecast/error-handling.md similarity index 100% rename from plugins/azure/skills/azure-cost/cost-forecast/error-handling.md rename to plugins/azure-skills/skills/azure-cost/cost-forecast/error-handling.md diff --git a/plugins/azure/skills/azure-cost/cost-forecast/examples.md b/plugins/azure-skills/skills/azure-cost/cost-forecast/examples.md similarity index 100% rename from plugins/azure/skills/azure-cost/cost-forecast/examples.md rename to plugins/azure-skills/skills/azure-cost/cost-forecast/examples.md diff --git a/plugins/azure/skills/azure-cost/cost-forecast/guardrails.md b/plugins/azure-skills/skills/azure-cost/cost-forecast/guardrails.md similarity index 100% rename from plugins/azure/skills/azure-cost/cost-forecast/guardrails.md rename to plugins/azure-skills/skills/azure-cost/cost-forecast/guardrails.md diff --git a/plugins/azure/skills/azure-cost/cost-forecast/request-body-schema.md b/plugins/azure-skills/skills/azure-cost/cost-forecast/request-body-schema.md similarity index 100% rename from plugins/azure/skills/azure-cost/cost-forecast/request-body-schema.md rename to plugins/azure-skills/skills/azure-cost/cost-forecast/request-body-schema.md diff --git a/plugins/azure/skills/azure-cost/cost-forecast/workflow.md b/plugins/azure-skills/skills/azure-cost/cost-forecast/workflow.md similarity index 100% rename from plugins/azure/skills/azure-cost/cost-forecast/workflow.md rename to plugins/azure-skills/skills/azure-cost/cost-forecast/workflow.md diff --git a/plugins/azure/skills/azure-cost/cost-optimization/auth-best-practices.md b/plugins/azure-skills/skills/azure-cost/cost-optimization/auth-best-practices.md similarity index 100% rename from plugins/azure/skills/azure-cost/cost-optimization/auth-best-practices.md rename to plugins/azure-skills/skills/azure-cost/cost-optimization/auth-best-practices.md diff --git a/plugins/azure/skills/azure-cost/cost-optimization/azure-aks-anomalies.md b/plugins/azure-skills/skills/azure-cost/cost-optimization/azure-aks-anomalies.md similarity index 100% rename from plugins/azure/skills/azure-cost/cost-optimization/azure-aks-anomalies.md rename to plugins/azure-skills/skills/azure-cost/cost-optimization/azure-aks-anomalies.md diff --git a/plugins/azure/skills/azure-cost/cost-optimization/azure-aks-cost-addon.md b/plugins/azure-skills/skills/azure-cost/cost-optimization/azure-aks-cost-addon.md similarity index 100% rename from plugins/azure/skills/azure-cost/cost-optimization/azure-aks-cost-addon.md rename to plugins/azure-skills/skills/azure-cost/cost-optimization/azure-aks-cost-addon.md diff --git a/plugins/azure/skills/azure-cost/cost-optimization/azure-quick-review.md b/plugins/azure-skills/skills/azure-cost/cost-optimization/azure-quick-review.md similarity index 100% rename from plugins/azure/skills/azure-cost/cost-optimization/azure-quick-review.md rename to plugins/azure-skills/skills/azure-cost/cost-optimization/azure-quick-review.md diff --git a/plugins/azure/skills/azure-cost/cost-optimization/azure-resource-graph.md b/plugins/azure-skills/skills/azure-cost/cost-optimization/azure-resource-graph.md similarity index 100% rename from plugins/azure/skills/azure-cost/cost-optimization/azure-resource-graph.md rename to plugins/azure-skills/skills/azure-cost/cost-optimization/azure-resource-graph.md diff --git a/plugins/azure/skills/azure-cost/cost-optimization/report-template.md b/plugins/azure-skills/skills/azure-cost/cost-optimization/report-template.md similarity index 100% rename from plugins/azure/skills/azure-cost/cost-optimization/report-template.md rename to plugins/azure-skills/skills/azure-cost/cost-optimization/report-template.md diff --git a/plugins/azure/skills/azure-cost/cost-optimization/sdk/azure-resource-manager-redis-dotnet.md b/plugins/azure-skills/skills/azure-cost/cost-optimization/sdk/azure-resource-manager-redis-dotnet.md similarity index 100% rename from plugins/azure/skills/azure-cost/cost-optimization/sdk/azure-resource-manager-redis-dotnet.md rename to plugins/azure-skills/skills/azure-cost/cost-optimization/sdk/azure-resource-manager-redis-dotnet.md diff --git a/plugins/azure/skills/azure-cost/cost-optimization/services/redis/azure-cache-for-redis.md b/plugins/azure-skills/skills/azure-cost/cost-optimization/services/redis/azure-cache-for-redis.md similarity index 100% rename from plugins/azure/skills/azure-cost/cost-optimization/services/redis/azure-cache-for-redis.md rename to plugins/azure-skills/skills/azure-cost/cost-optimization/services/redis/azure-cache-for-redis.md diff --git a/plugins/azure/skills/azure-cost/cost-optimization/services/storage/azure-storage.md b/plugins/azure-skills/skills/azure-cost/cost-optimization/services/storage/azure-storage.md similarity index 100% rename from plugins/azure/skills/azure-cost/cost-optimization/services/storage/azure-storage.md rename to plugins/azure-skills/skills/azure-cost/cost-optimization/services/storage/azure-storage.md diff --git a/plugins/azure/skills/azure-cost/cost-optimization/workflow.md b/plugins/azure-skills/skills/azure-cost/cost-optimization/workflow.md similarity index 100% rename from plugins/azure/skills/azure-cost/cost-optimization/workflow.md rename to plugins/azure-skills/skills/azure-cost/cost-optimization/workflow.md diff --git a/plugins/azure/skills/azure-cost/cost-query/dimensions-by-scope.md b/plugins/azure-skills/skills/azure-cost/cost-query/dimensions-by-scope.md similarity index 100% rename from plugins/azure/skills/azure-cost/cost-query/dimensions-by-scope.md rename to plugins/azure-skills/skills/azure-cost/cost-query/dimensions-by-scope.md diff --git a/plugins/azure/skills/azure-cost/cost-query/error-handling.md b/plugins/azure-skills/skills/azure-cost/cost-query/error-handling.md similarity index 100% rename from plugins/azure/skills/azure-cost/cost-query/error-handling.md rename to plugins/azure-skills/skills/azure-cost/cost-query/error-handling.md diff --git a/plugins/azure/skills/azure-cost/cost-query/examples.md b/plugins/azure-skills/skills/azure-cost/cost-query/examples.md similarity index 100% rename from plugins/azure/skills/azure-cost/cost-query/examples.md rename to plugins/azure-skills/skills/azure-cost/cost-query/examples.md diff --git a/plugins/azure/skills/azure-cost/cost-query/guardrails.md b/plugins/azure-skills/skills/azure-cost/cost-query/guardrails.md similarity index 100% rename from plugins/azure/skills/azure-cost/cost-query/guardrails.md rename to plugins/azure-skills/skills/azure-cost/cost-query/guardrails.md diff --git a/plugins/azure/skills/azure-cost/cost-query/request-body-schema.md b/plugins/azure-skills/skills/azure-cost/cost-query/request-body-schema.md similarity index 100% rename from plugins/azure/skills/azure-cost/cost-query/request-body-schema.md rename to plugins/azure-skills/skills/azure-cost/cost-query/request-body-schema.md diff --git a/plugins/azure/skills/azure-cost/cost-query/workflow.md b/plugins/azure-skills/skills/azure-cost/cost-query/workflow.md similarity index 100% rename from plugins/azure/skills/azure-cost/cost-query/workflow.md rename to plugins/azure-skills/skills/azure-cost/cost-query/workflow.md diff --git a/plugins/azure/skills/azure-cost/references/tools-and-best-practices.md b/plugins/azure-skills/skills/azure-cost/references/tools-and-best-practices.md similarity index 100% rename from plugins/azure/skills/azure-cost/references/tools-and-best-practices.md rename to plugins/azure-skills/skills/azure-cost/references/tools-and-best-practices.md diff --git a/plugins/azure/skills/azure-cost/version.json b/plugins/azure-skills/skills/azure-cost/version.json similarity index 100% rename from plugins/azure/skills/azure-cost/version.json rename to plugins/azure-skills/skills/azure-cost/version.json diff --git a/plugins/azure/skills/azure-deploy/SKILL.md b/plugins/azure-skills/skills/azure-deploy/SKILL.md similarity index 100% rename from plugins/azure/skills/azure-deploy/SKILL.md rename to plugins/azure-skills/skills/azure-deploy/SKILL.md diff --git a/plugins/azure/skills/azure-deploy/references/auth-best-practices.md b/plugins/azure-skills/skills/azure-deploy/references/auth-best-practices.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/auth-best-practices.md rename to plugins/azure-skills/skills/azure-deploy/references/auth-best-practices.md diff --git a/plugins/azure/skills/azure-deploy/references/global-rules.md b/plugins/azure-skills/skills/azure-deploy/references/global-rules.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/global-rules.md rename to plugins/azure-skills/skills/azure-deploy/references/global-rules.md diff --git a/plugins/azure/skills/azure-deploy/references/live-role-verification.md b/plugins/azure-skills/skills/azure-deploy/references/live-role-verification.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/live-role-verification.md rename to plugins/azure-skills/skills/azure-deploy/references/live-role-verification.md diff --git a/plugins/azure/skills/azure-deploy/references/pre-deploy-checklist.md b/plugins/azure-skills/skills/azure-deploy/references/pre-deploy-checklist.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/pre-deploy-checklist.md rename to plugins/azure-skills/skills/azure-deploy/references/pre-deploy-checklist.md diff --git a/plugins/azure/skills/azure-deploy/references/recipes/README.md b/plugins/azure-skills/skills/azure-deploy/references/recipes/README.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/README.md rename to plugins/azure-skills/skills/azure-deploy/references/recipes/README.md diff --git a/plugins/azure/skills/azure-deploy/references/recipes/azcli/README.md b/plugins/azure-skills/skills/azure-deploy/references/recipes/azcli/README.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/azcli/README.md rename to plugins/azure-skills/skills/azure-deploy/references/recipes/azcli/README.md diff --git a/plugins/azure/skills/azure-deploy/references/recipes/azcli/errors.md b/plugins/azure-skills/skills/azure-deploy/references/recipes/azcli/errors.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/azcli/errors.md rename to plugins/azure-skills/skills/azure-deploy/references/recipes/azcli/errors.md diff --git a/plugins/azure/skills/azure-deploy/references/recipes/azcli/verify.md b/plugins/azure-skills/skills/azure-deploy/references/recipes/azcli/verify.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/azcli/verify.md rename to plugins/azure-skills/skills/azure-deploy/references/recipes/azcli/verify.md diff --git a/plugins/azure/skills/azure-deploy/references/recipes/azd/README.md b/plugins/azure-skills/skills/azure-deploy/references/recipes/azd/README.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/azd/README.md rename to plugins/azure-skills/skills/azure-deploy/references/recipes/azd/README.md diff --git a/plugins/azure/skills/azure-deploy/references/recipes/azd/ef-migrations.md b/plugins/azure-skills/skills/azure-deploy/references/recipes/azd/ef-migrations.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/azd/ef-migrations.md rename to plugins/azure-skills/skills/azure-deploy/references/recipes/azd/ef-migrations.md diff --git a/plugins/azure/skills/azure-deploy/references/recipes/azd/errors.md b/plugins/azure-skills/skills/azure-deploy/references/recipes/azd/errors.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/azd/errors.md rename to plugins/azure-skills/skills/azure-deploy/references/recipes/azd/errors.md diff --git a/plugins/azure/skills/azure-deploy/references/recipes/azd/functions-deploy.md b/plugins/azure-skills/skills/azure-deploy/references/recipes/azd/functions-deploy.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/azd/functions-deploy.md rename to plugins/azure-skills/skills/azure-deploy/references/recipes/azd/functions-deploy.md diff --git a/plugins/azure/skills/azure-deploy/references/recipes/azd/post-deployment.md b/plugins/azure-skills/skills/azure-deploy/references/recipes/azd/post-deployment.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/azd/post-deployment.md rename to plugins/azure-skills/skills/azure-deploy/references/recipes/azd/post-deployment.md diff --git a/plugins/azure/skills/azure-deploy/references/recipes/azd/scripts/apply-migrations.ps1 b/plugins/azure-skills/skills/azure-deploy/references/recipes/azd/scripts/apply-migrations.ps1 similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/azd/scripts/apply-migrations.ps1 rename to plugins/azure-skills/skills/azure-deploy/references/recipes/azd/scripts/apply-migrations.ps1 diff --git a/plugins/azure/skills/azure-deploy/references/recipes/azd/scripts/apply-migrations.sh b/plugins/azure-skills/skills/azure-deploy/references/recipes/azd/scripts/apply-migrations.sh similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/azd/scripts/apply-migrations.sh rename to plugins/azure-skills/skills/azure-deploy/references/recipes/azd/scripts/apply-migrations.sh diff --git a/plugins/azure/skills/azure-deploy/references/recipes/azd/scripts/grant-and-migrate.ps1 b/plugins/azure-skills/skills/azure-deploy/references/recipes/azd/scripts/grant-and-migrate.ps1 similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/azd/scripts/grant-and-migrate.ps1 rename to plugins/azure-skills/skills/azure-deploy/references/recipes/azd/scripts/grant-and-migrate.ps1 diff --git a/plugins/azure/skills/azure-deploy/references/recipes/azd/scripts/grant-and-migrate.sh b/plugins/azure-skills/skills/azure-deploy/references/recipes/azd/scripts/grant-and-migrate.sh similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/azd/scripts/grant-and-migrate.sh rename to plugins/azure-skills/skills/azure-deploy/references/recipes/azd/scripts/grant-and-migrate.sh diff --git a/plugins/azure/skills/azure-deploy/references/recipes/azd/sql-entra-auth.md b/plugins/azure-skills/skills/azure-deploy/references/recipes/azd/sql-entra-auth.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/azd/sql-entra-auth.md rename to plugins/azure-skills/skills/azure-deploy/references/recipes/azd/sql-entra-auth.md diff --git a/plugins/azure/skills/azure-deploy/references/recipes/azd/sql-managed-identity.md b/plugins/azure-skills/skills/azure-deploy/references/recipes/azd/sql-managed-identity.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/azd/sql-managed-identity.md rename to plugins/azure-skills/skills/azure-deploy/references/recipes/azd/sql-managed-identity.md diff --git a/plugins/azure/skills/azure-deploy/references/recipes/azd/verify.md b/plugins/azure-skills/skills/azure-deploy/references/recipes/azd/verify.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/azd/verify.md rename to plugins/azure-skills/skills/azure-deploy/references/recipes/azd/verify.md diff --git a/plugins/azure/skills/azure-deploy/references/recipes/bicep/README.md b/plugins/azure-skills/skills/azure-deploy/references/recipes/bicep/README.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/bicep/README.md rename to plugins/azure-skills/skills/azure-deploy/references/recipes/bicep/README.md diff --git a/plugins/azure/skills/azure-deploy/references/recipes/bicep/errors.md b/plugins/azure-skills/skills/azure-deploy/references/recipes/bicep/errors.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/bicep/errors.md rename to plugins/azure-skills/skills/azure-deploy/references/recipes/bicep/errors.md diff --git a/plugins/azure/skills/azure-deploy/references/recipes/bicep/verify.md b/plugins/azure-skills/skills/azure-deploy/references/recipes/bicep/verify.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/bicep/verify.md rename to plugins/azure-skills/skills/azure-deploy/references/recipes/bicep/verify.md diff --git a/plugins/azure/skills/azure-deploy/references/recipes/cicd/README.md b/plugins/azure-skills/skills/azure-deploy/references/recipes/cicd/README.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/cicd/README.md rename to plugins/azure-skills/skills/azure-deploy/references/recipes/cicd/README.md diff --git a/plugins/azure/skills/azure-deploy/references/recipes/cicd/errors.md b/plugins/azure-skills/skills/azure-deploy/references/recipes/cicd/errors.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/cicd/errors.md rename to plugins/azure-skills/skills/azure-deploy/references/recipes/cicd/errors.md diff --git a/plugins/azure/skills/azure-deploy/references/recipes/cicd/examples/azdo-azd.yml b/plugins/azure-skills/skills/azure-deploy/references/recipes/cicd/examples/azdo-azd.yml similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/cicd/examples/azdo-azd.yml rename to plugins/azure-skills/skills/azure-deploy/references/recipes/cicd/examples/azdo-azd.yml diff --git a/plugins/azure/skills/azure-deploy/references/recipes/cicd/examples/azdo-multistage.yml b/plugins/azure-skills/skills/azure-deploy/references/recipes/cicd/examples/azdo-multistage.yml similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/cicd/examples/azdo-multistage.yml rename to plugins/azure-skills/skills/azure-deploy/references/recipes/cicd/examples/azdo-multistage.yml diff --git a/plugins/azure/skills/azure-deploy/references/recipes/cicd/examples/github-azd.yml b/plugins/azure-skills/skills/azure-deploy/references/recipes/cicd/examples/github-azd.yml similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/cicd/examples/github-azd.yml rename to plugins/azure-skills/skills/azure-deploy/references/recipes/cicd/examples/github-azd.yml diff --git a/plugins/azure/skills/azure-deploy/references/recipes/cicd/examples/github-bicep.yml b/plugins/azure-skills/skills/azure-deploy/references/recipes/cicd/examples/github-bicep.yml similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/cicd/examples/github-bicep.yml rename to plugins/azure-skills/skills/azure-deploy/references/recipes/cicd/examples/github-bicep.yml diff --git a/plugins/azure/skills/azure-deploy/references/recipes/cicd/verify.md b/plugins/azure-skills/skills/azure-deploy/references/recipes/cicd/verify.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/cicd/verify.md rename to plugins/azure-skills/skills/azure-deploy/references/recipes/cicd/verify.md diff --git a/plugins/azure/skills/azure-deploy/references/recipes/terraform/README.md b/plugins/azure-skills/skills/azure-deploy/references/recipes/terraform/README.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/terraform/README.md rename to plugins/azure-skills/skills/azure-deploy/references/recipes/terraform/README.md diff --git a/plugins/azure/skills/azure-deploy/references/recipes/terraform/errors.md b/plugins/azure-skills/skills/azure-deploy/references/recipes/terraform/errors.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/terraform/errors.md rename to plugins/azure-skills/skills/azure-deploy/references/recipes/terraform/errors.md diff --git a/plugins/azure/skills/azure-deploy/references/recipes/terraform/verify.md b/plugins/azure-skills/skills/azure-deploy/references/recipes/terraform/verify.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/recipes/terraform/verify.md rename to plugins/azure-skills/skills/azure-deploy/references/recipes/terraform/verify.md diff --git a/plugins/azure/skills/azure-deploy/references/region-availability.md b/plugins/azure-skills/skills/azure-deploy/references/region-availability.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/region-availability.md rename to plugins/azure-skills/skills/azure-deploy/references/region-availability.md diff --git a/plugins/azure/skills/azure-deploy/references/sdk/azd-deployment.md b/plugins/azure-skills/skills/azure-deploy/references/sdk/azd-deployment.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/sdk/azd-deployment.md rename to plugins/azure-skills/skills/azure-deploy/references/sdk/azd-deployment.md diff --git a/plugins/azure/skills/azure-deploy/references/sdk/azure-identity-dotnet.md b/plugins/azure-skills/skills/azure-deploy/references/sdk/azure-identity-dotnet.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/sdk/azure-identity-dotnet.md rename to plugins/azure-skills/skills/azure-deploy/references/sdk/azure-identity-dotnet.md diff --git a/plugins/azure/skills/azure-deploy/references/sdk/azure-identity-java.md b/plugins/azure-skills/skills/azure-deploy/references/sdk/azure-identity-java.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/sdk/azure-identity-java.md rename to plugins/azure-skills/skills/azure-deploy/references/sdk/azure-identity-java.md diff --git a/plugins/azure/skills/azure-deploy/references/sdk/azure-identity-py.md b/plugins/azure-skills/skills/azure-deploy/references/sdk/azure-identity-py.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/sdk/azure-identity-py.md rename to plugins/azure-skills/skills/azure-deploy/references/sdk/azure-identity-py.md diff --git a/plugins/azure/skills/azure-deploy/references/sdk/azure-identity-ts.md b/plugins/azure-skills/skills/azure-deploy/references/sdk/azure-identity-ts.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/sdk/azure-identity-ts.md rename to plugins/azure-skills/skills/azure-deploy/references/sdk/azure-identity-ts.md diff --git a/plugins/azure/skills/azure-deploy/references/troubleshooting.md b/plugins/azure-skills/skills/azure-deploy/references/troubleshooting.md similarity index 100% rename from plugins/azure/skills/azure-deploy/references/troubleshooting.md rename to plugins/azure-skills/skills/azure-deploy/references/troubleshooting.md diff --git a/plugins/azure/skills/azure-deploy/version.json b/plugins/azure-skills/skills/azure-deploy/version.json similarity index 100% rename from plugins/azure/skills/azure-deploy/version.json rename to plugins/azure-skills/skills/azure-deploy/version.json diff --git a/plugins/azure/skills/azure-diagnostics/SKILL.md b/plugins/azure-skills/skills/azure-diagnostics/SKILL.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/SKILL.md rename to plugins/azure-skills/skills/azure-diagnostics/SKILL.md diff --git a/plugins/azure/skills/azure-diagnostics/references/app-service/README.md b/plugins/azure-skills/skills/azure-diagnostics/references/app-service/README.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/references/app-service/README.md rename to plugins/azure-skills/skills/azure-diagnostics/references/app-service/README.md diff --git a/plugins/azure/skills/azure-diagnostics/references/azure-resource-graph.md b/plugins/azure-skills/skills/azure-diagnostics/references/azure-resource-graph.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/references/azure-resource-graph.md rename to plugins/azure-skills/skills/azure-diagnostics/references/azure-resource-graph.md diff --git a/plugins/azure/skills/azure-diagnostics/references/container-apps/README.md b/plugins/azure-skills/skills/azure-diagnostics/references/container-apps/README.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/references/container-apps/README.md rename to plugins/azure-skills/skills/azure-diagnostics/references/container-apps/README.md diff --git a/plugins/azure/skills/azure-diagnostics/references/functions/README.md b/plugins/azure-skills/skills/azure-diagnostics/references/functions/README.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/references/functions/README.md rename to plugins/azure-skills/skills/azure-diagnostics/references/functions/README.md diff --git a/plugins/azure/skills/azure-diagnostics/references/kql-queries.md b/plugins/azure-skills/skills/azure-diagnostics/references/kql-queries.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/references/kql-queries.md rename to plugins/azure-skills/skills/azure-diagnostics/references/kql-queries.md diff --git a/plugins/azure/skills/azure-diagnostics/troubleshooting/aks/aks-troubleshooting.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/aks/aks-troubleshooting.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/troubleshooting/aks/aks-troubleshooting.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/aks/aks-troubleshooting.md diff --git a/plugins/azure/skills/azure-diagnostics/troubleshooting/aks/general-diagnostics.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/aks/general-diagnostics.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/troubleshooting/aks/general-diagnostics.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/aks/general-diagnostics.md diff --git a/plugins/azure/skills/azure-diagnostics/troubleshooting/aks/load-balancer-and-ingress.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/aks/load-balancer-and-ingress.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/troubleshooting/aks/load-balancer-and-ingress.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/aks/load-balancer-and-ingress.md diff --git a/plugins/azure/skills/azure-diagnostics/troubleshooting/aks/network-policy.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/aks/network-policy.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/troubleshooting/aks/network-policy.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/aks/network-policy.md diff --git a/plugins/azure/skills/azure-diagnostics/troubleshooting/aks/networking.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/aks/networking.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/troubleshooting/aks/networking.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/aks/networking.md diff --git a/plugins/azure/skills/azure-diagnostics/troubleshooting/aks/node-issues.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/aks/node-issues.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/troubleshooting/aks/node-issues.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/aks/node-issues.md diff --git a/plugins/azure/skills/azure-diagnostics/troubleshooting/aks/pod-failures.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/aks/pod-failures.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/troubleshooting/aks/pod-failures.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/aks/pod-failures.md diff --git a/plugins/azure/skills/azure-diagnostics/troubleshooting/aks/references/aks-mcp.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/aks/references/aks-mcp.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/troubleshooting/aks/references/aks-mcp.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/aks/references/aks-mcp.md diff --git a/plugins/azure/skills/azure-diagnostics/troubleshooting/aks/references/command-flows.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/aks/references/command-flows.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/troubleshooting/aks/references/command-flows.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/aks/references/command-flows.md diff --git a/plugins/azure/skills/azure-diagnostics/troubleshooting/aks/references/inspektor-gadget.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/aks/references/inspektor-gadget.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/troubleshooting/aks/references/inspektor-gadget.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/aks/references/inspektor-gadget.md diff --git a/plugins/azure/skills/azure-diagnostics/troubleshooting/aks/references/structured-input-modes.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/aks/references/structured-input-modes.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/troubleshooting/aks/references/structured-input-modes.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/aks/references/structured-input-modes.md diff --git a/plugins/azure/skills/azure-diagnostics/troubleshooting/aks/spot-and-zone-issues.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/aks/spot-and-zone-issues.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/troubleshooting/aks/spot-and-zone-issues.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/aks/spot-and-zone-issues.md diff --git a/plugins/azure/skills/azure-diagnostics/troubleshooting/aks/upgrade-operations.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/aks/upgrade-operations.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/troubleshooting/aks/upgrade-operations.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/aks/upgrade-operations.md diff --git a/plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/README.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/messaging/README.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/README.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/messaging/README.md diff --git a/plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/auth-best-practices.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/messaging/auth-best-practices.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/auth-best-practices.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/messaging/auth-best-practices.md diff --git a/plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-dotnet.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-dotnet.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-dotnet.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-dotnet.md diff --git a/plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-java.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-java.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-java.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-java.md diff --git a/plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-js.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-js.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-js.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-js.md diff --git a/plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-py.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-py.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-py.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/messaging/azure-eventhubs-py.md diff --git a/plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-dotnet.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-dotnet.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-dotnet.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-dotnet.md diff --git a/plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-java.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-java.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-java.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-java.md diff --git a/plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-js.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-js.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-js.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-js.md diff --git a/plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-py.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-py.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-py.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/messaging/azure-servicebus-py.md diff --git a/plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/service-troubleshooting.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/messaging/service-troubleshooting.md similarity index 100% rename from plugins/azure/skills/azure-diagnostics/troubleshooting/messaging/service-troubleshooting.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/messaging/service-troubleshooting.md diff --git a/plugins/azure/skills/azure-diagnostics/version.json b/plugins/azure-skills/skills/azure-diagnostics/version.json similarity index 100% rename from plugins/azure/skills/azure-diagnostics/version.json rename to plugins/azure-skills/skills/azure-diagnostics/version.json diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/SKILL.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/SKILL.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/SKILL.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/SKILL.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/bicep-generation.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/bicep-generation.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/bicep-generation.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/bicep-generation.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/README.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/constraints/README.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/README.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/constraints/README.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/ai-ml.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/constraints/ai-ml.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/ai-ml.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/constraints/ai-ml.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/compute-apps.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/constraints/compute-apps.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/compute-apps.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/constraints/compute-apps.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/compute-infra.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/constraints/compute-infra.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/compute-infra.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/constraints/compute-infra.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/data-analytics.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/constraints/data-analytics.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/data-analytics.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/constraints/data-analytics.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/data-relational.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/constraints/data-relational.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/data-relational.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/constraints/data-relational.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/messaging.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/constraints/messaging.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/messaging.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/constraints/messaging.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/monitoring.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/constraints/monitoring.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/monitoring.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/constraints/monitoring.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/networking-connectivity.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/constraints/networking-connectivity.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/networking-connectivity.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/constraints/networking-connectivity.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/networking-core.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/constraints/networking-core.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/networking-core.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/constraints/networking-core.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/networking-traffic.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/constraints/networking-traffic.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/networking-traffic.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/constraints/networking-traffic.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/security.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/constraints/security.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/constraints/security.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/constraints/security.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/deployment.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/deployment.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/deployment.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/deployment.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/pairing-checks.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/pairing-checks.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/pairing-checks.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/pairing-checks.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/phases/1-extract-insights.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/phases/1-extract-insights.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/phases/1-extract-insights.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/phases/1-extract-insights.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/phases/2-research-best-practices.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/phases/2-research-best-practices.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/phases/2-research-best-practices.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/phases/2-research-best-practices.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/phases/3-research-resources.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/phases/3-research-resources.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/phases/3-research-resources.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/phases/3-research-resources.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/phases/4-generate-plan.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/phases/4-generate-plan.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/phases/4-generate-plan.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/phases/4-generate-plan.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/phases/5-verify.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/phases/5-verify.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/phases/5-verify.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/phases/5-verify.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/phases/6-generate-iac.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/phases/6-generate-iac.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/phases/6-generate-iac.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/phases/6-generate-iac.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/phases/7-deploy.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/phases/7-deploy.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/phases/7-deploy.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/phases/7-deploy.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/resources/README.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/resources/README.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/resources/README.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/resources/README.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/resources/ai-ml.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/resources/ai-ml.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/resources/ai-ml.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/resources/ai-ml.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/resources/compute-apps.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/resources/compute-apps.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/resources/compute-apps.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/resources/compute-apps.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/resources/compute-infra.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/resources/compute-infra.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/resources/compute-infra.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/resources/compute-infra.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/resources/data-analytics.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/resources/data-analytics.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/resources/data-analytics.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/resources/data-analytics.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/resources/data-relational.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/resources/data-relational.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/resources/data-relational.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/resources/data-relational.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/resources/messaging.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/resources/messaging.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/resources/messaging.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/resources/messaging.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/resources/monitoring.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/resources/monitoring.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/resources/monitoring.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/resources/monitoring.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/resources/networking-connectivity.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/resources/networking-connectivity.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/resources/networking-connectivity.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/resources/networking-connectivity.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/resources/networking-core.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/resources/networking-core.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/resources/networking-core.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/resources/networking-core.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/resources/networking-traffic.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/resources/networking-traffic.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/resources/networking-traffic.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/resources/networking-traffic.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/resources/security.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/resources/security.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/resources/security.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/resources/security.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/schema.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/schema.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/schema.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/schema.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/terraform-generation.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/terraform-generation.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/terraform-generation.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/terraform-generation.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/verification.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/verification.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/verification.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/verification.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/waf-checklist.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/waf-checklist.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/waf-checklist.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/waf-checklist.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/references/workflow.md b/plugins/azure-skills/skills/azure-enterprise-infra-planner/references/workflow.md similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/references/workflow.md rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/references/workflow.md diff --git a/plugins/azure/skills/azure-enterprise-infra-planner/version.json b/plugins/azure-skills/skills/azure-enterprise-infra-planner/version.json similarity index 100% rename from plugins/azure/skills/azure-enterprise-infra-planner/version.json rename to plugins/azure-skills/skills/azure-enterprise-infra-planner/version.json diff --git a/plugins/azure/skills/azure-kubernetes/SKILL.md b/plugins/azure-skills/skills/azure-kubernetes/SKILL.md similarity index 100% rename from plugins/azure/skills/azure-kubernetes/SKILL.md rename to plugins/azure-skills/skills/azure-kubernetes/SKILL.md diff --git a/plugins/azure/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/SKILL.md b/plugins/azure-skills/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/SKILL.md similarity index 100% rename from plugins/azure/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/SKILL.md rename to plugins/azure-skills/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/SKILL.md diff --git a/plugins/azure/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/common-fixes.md b/plugins/azure-skills/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/common-fixes.md similarity index 100% rename from plugins/azure/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/common-fixes.md rename to plugins/azure-skills/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/common-fixes.md diff --git a/plugins/azure/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/constraint-spec-v1.yaml b/plugins/azure-skills/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/constraint-spec-v1.yaml similarity index 100% rename from plugins/azure/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/constraint-spec-v1.yaml rename to plugins/azure-skills/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/constraint-spec-v1.yaml diff --git a/plugins/azure/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/mcp-integration.md b/plugins/azure-skills/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/mcp-integration.md similarity index 100% rename from plugins/azure/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/mcp-integration.md rename to plugins/azure-skills/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/mcp-integration.md diff --git a/plugins/azure/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/migration-guide-summary.md b/plugins/azure-skills/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/migration-guide-summary.md similarity index 100% rename from plugins/azure/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/migration-guide-summary.md rename to plugins/azure-skills/skills/azure-kubernetes/azure-kubernetes-automatic-readiness/references/migration-guide-summary.md diff --git a/plugins/azure/skills/azure-kubernetes/references/azure-aks-autoscaler.md b/plugins/azure-skills/skills/azure-kubernetes/references/azure-aks-autoscaler.md similarity index 100% rename from plugins/azure/skills/azure-kubernetes/references/azure-aks-autoscaler.md rename to plugins/azure-skills/skills/azure-kubernetes/references/azure-aks-autoscaler.md diff --git a/plugins/azure/skills/azure-kubernetes/references/azure-aks-rightsizing.md b/plugins/azure-skills/skills/azure-kubernetes/references/azure-aks-rightsizing.md similarity index 100% rename from plugins/azure/skills/azure-kubernetes/references/azure-aks-rightsizing.md rename to plugins/azure-skills/skills/azure-kubernetes/references/azure-aks-rightsizing.md diff --git a/plugins/azure/skills/azure-kubernetes/references/azure-aks-spot.md b/plugins/azure-skills/skills/azure-kubernetes/references/azure-aks-spot.md similarity index 100% rename from plugins/azure/skills/azure-kubernetes/references/azure-aks-spot.md rename to plugins/azure-skills/skills/azure-kubernetes/references/azure-aks-spot.md diff --git a/plugins/azure/skills/azure-kubernetes/references/azure-aks-vpa.md b/plugins/azure-skills/skills/azure-kubernetes/references/azure-aks-vpa.md similarity index 100% rename from plugins/azure/skills/azure-kubernetes/references/azure-aks-vpa.md rename to plugins/azure-skills/skills/azure-kubernetes/references/azure-aks-vpa.md diff --git a/plugins/azure/skills/azure-kubernetes/references/cli-reference.md b/plugins/azure-skills/skills/azure-kubernetes/references/cli-reference.md similarity index 100% rename from plugins/azure/skills/azure-kubernetes/references/cli-reference.md rename to plugins/azure-skills/skills/azure-kubernetes/references/cli-reference.md diff --git a/plugins/azure/skills/azure-kubernetes/version.json b/plugins/azure-skills/skills/azure-kubernetes/version.json similarity index 100% rename from plugins/azure/skills/azure-kubernetes/version.json rename to plugins/azure-skills/skills/azure-kubernetes/version.json diff --git a/plugins/azure/skills/azure-kusto/SKILL.md b/plugins/azure-skills/skills/azure-kusto/SKILL.md similarity index 100% rename from plugins/azure/skills/azure-kusto/SKILL.md rename to plugins/azure-skills/skills/azure-kusto/SKILL.md diff --git a/plugins/azure/skills/azure-kusto/version.json b/plugins/azure-skills/skills/azure-kusto/version.json similarity index 100% rename from plugins/azure/skills/azure-kusto/version.json rename to plugins/azure-skills/skills/azure-kusto/version.json diff --git a/plugins/azure/skills/azure-messaging/SKILL.md b/plugins/azure-skills/skills/azure-messaging/SKILL.md similarity index 100% rename from plugins/azure/skills/azure-messaging/SKILL.md rename to plugins/azure-skills/skills/azure-messaging/SKILL.md diff --git a/plugins/azure/skills/azure-messaging/version.json b/plugins/azure-skills/skills/azure-messaging/version.json similarity index 100% rename from plugins/azure/skills/azure-messaging/version.json rename to plugins/azure-skills/skills/azure-messaging/version.json diff --git a/plugins/azure/skills/azure-prepare/SKILL.md b/plugins/azure-skills/skills/azure-prepare/SKILL.md similarity index 100% rename from plugins/azure/skills/azure-prepare/SKILL.md rename to plugins/azure-skills/skills/azure-prepare/SKILL.md diff --git a/plugins/azure/skills/azure-prepare/references/analyze.md b/plugins/azure-skills/skills/azure-prepare/references/analyze.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/analyze.md rename to plugins/azure-skills/skills/azure-prepare/references/analyze.md diff --git a/plugins/azure/skills/azure-prepare/references/apim.md b/plugins/azure-skills/skills/azure-prepare/references/apim.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/apim.md rename to plugins/azure-skills/skills/azure-prepare/references/apim.md diff --git a/plugins/azure/skills/azure-prepare/references/architecture.md b/plugins/azure-skills/skills/azure-prepare/references/architecture.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/architecture.md rename to plugins/azure-skills/skills/azure-prepare/references/architecture.md diff --git a/plugins/azure/skills/azure-prepare/references/aspire.md b/plugins/azure-skills/skills/azure-prepare/references/aspire.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/aspire.md rename to plugins/azure-skills/skills/azure-prepare/references/aspire.md diff --git a/plugins/azure/skills/azure-prepare/references/auth-best-practices.md b/plugins/azure-skills/skills/azure-prepare/references/auth-best-practices.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/auth-best-practices.md rename to plugins/azure-skills/skills/azure-prepare/references/auth-best-practices.md diff --git a/plugins/azure/skills/azure-prepare/references/azure-context.md b/plugins/azure-skills/skills/azure-prepare/references/azure-context.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/azure-context.md rename to plugins/azure-skills/skills/azure-prepare/references/azure-context.md diff --git a/plugins/azure/skills/azure-prepare/references/functional-verification.md b/plugins/azure-skills/skills/azure-prepare/references/functional-verification.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/functional-verification.md rename to plugins/azure-skills/skills/azure-prepare/references/functional-verification.md diff --git a/plugins/azure/skills/azure-prepare/references/generate.md b/plugins/azure-skills/skills/azure-prepare/references/generate.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/generate.md rename to plugins/azure-skills/skills/azure-prepare/references/generate.md diff --git a/plugins/azure/skills/azure-prepare/references/global-rules.md b/plugins/azure-skills/skills/azure-prepare/references/global-rules.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/global-rules.md rename to plugins/azure-skills/skills/azure-prepare/references/global-rules.md diff --git a/plugins/azure/skills/azure-prepare/references/plan-template.md b/plugins/azure-skills/skills/azure-prepare/references/plan-template.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/plan-template.md rename to plugins/azure-skills/skills/azure-prepare/references/plan-template.md diff --git a/plugins/azure/skills/azure-prepare/references/recipe-selection.md b/plugins/azure-skills/skills/azure-prepare/references/recipe-selection.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/recipe-selection.md rename to plugins/azure-skills/skills/azure-prepare/references/recipe-selection.md diff --git a/plugins/azure/skills/azure-prepare/references/recipes/azcli/README.md b/plugins/azure-skills/skills/azure-prepare/references/recipes/azcli/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/recipes/azcli/README.md rename to plugins/azure-skills/skills/azure-prepare/references/recipes/azcli/README.md diff --git a/plugins/azure/skills/azure-prepare/references/recipes/azcli/commands.md b/plugins/azure-skills/skills/azure-prepare/references/recipes/azcli/commands.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/recipes/azcli/commands.md rename to plugins/azure-skills/skills/azure-prepare/references/recipes/azcli/commands.md diff --git a/plugins/azure/skills/azure-prepare/references/recipes/azcli/scripts.md b/plugins/azure-skills/skills/azure-prepare/references/recipes/azcli/scripts.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/recipes/azcli/scripts.md rename to plugins/azure-skills/skills/azure-prepare/references/recipes/azcli/scripts.md diff --git a/plugins/azure/skills/azure-prepare/references/recipes/azd/README.md b/plugins/azure-skills/skills/azure-prepare/references/recipes/azd/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/recipes/azd/README.md rename to plugins/azure-skills/skills/azure-prepare/references/recipes/azd/README.md diff --git a/plugins/azure/skills/azure-prepare/references/recipes/azd/aspire.md b/plugins/azure-skills/skills/azure-prepare/references/recipes/azd/aspire.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/recipes/azd/aspire.md rename to plugins/azure-skills/skills/azure-prepare/references/recipes/azd/aspire.md diff --git a/plugins/azure/skills/azure-prepare/references/recipes/azd/azure-yaml.md b/plugins/azure-skills/skills/azure-prepare/references/recipes/azd/azure-yaml.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/recipes/azd/azure-yaml.md rename to plugins/azure-skills/skills/azure-prepare/references/recipes/azd/azure-yaml.md diff --git a/plugins/azure/skills/azure-prepare/references/recipes/azd/docker.md b/plugins/azure-skills/skills/azure-prepare/references/recipes/azd/docker.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/recipes/azd/docker.md rename to plugins/azure-skills/skills/azure-prepare/references/recipes/azd/docker.md diff --git a/plugins/azure/skills/azure-prepare/references/recipes/azd/iac-rules.md b/plugins/azure-skills/skills/azure-prepare/references/recipes/azd/iac-rules.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/recipes/azd/iac-rules.md rename to plugins/azure-skills/skills/azure-prepare/references/recipes/azd/iac-rules.md diff --git a/plugins/azure/skills/azure-prepare/references/recipes/azd/terraform.md b/plugins/azure-skills/skills/azure-prepare/references/recipes/azd/terraform.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/recipes/azd/terraform.md rename to plugins/azure-skills/skills/azure-prepare/references/recipes/azd/terraform.md diff --git a/plugins/azure/skills/azure-prepare/references/recipes/bicep/README.md b/plugins/azure-skills/skills/azure-prepare/references/recipes/bicep/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/recipes/bicep/README.md rename to plugins/azure-skills/skills/azure-prepare/references/recipes/bicep/README.md diff --git a/plugins/azure/skills/azure-prepare/references/recipes/bicep/patterns.md b/plugins/azure-skills/skills/azure-prepare/references/recipes/bicep/patterns.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/recipes/bicep/patterns.md rename to plugins/azure-skills/skills/azure-prepare/references/recipes/bicep/patterns.md diff --git a/plugins/azure/skills/azure-prepare/references/recipes/terraform/README.md b/plugins/azure-skills/skills/azure-prepare/references/recipes/terraform/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/recipes/terraform/README.md rename to plugins/azure-skills/skills/azure-prepare/references/recipes/terraform/README.md diff --git a/plugins/azure/skills/azure-prepare/references/recipes/terraform/patterns.md b/plugins/azure-skills/skills/azure-prepare/references/recipes/terraform/patterns.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/recipes/terraform/patterns.md rename to plugins/azure-skills/skills/azure-prepare/references/recipes/terraform/patterns.md diff --git a/plugins/azure/skills/azure-prepare/references/region-availability.md b/plugins/azure-skills/skills/azure-prepare/references/region-availability.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/region-availability.md rename to plugins/azure-skills/skills/azure-prepare/references/region-availability.md diff --git a/plugins/azure/skills/azure-prepare/references/requirements.md b/plugins/azure-skills/skills/azure-prepare/references/requirements.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/requirements.md rename to plugins/azure-skills/skills/azure-prepare/references/requirements.md diff --git a/plugins/azure/skills/azure-prepare/references/research.md b/plugins/azure-skills/skills/azure-prepare/references/research.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/research.md rename to plugins/azure-skills/skills/azure-prepare/references/research.md diff --git a/plugins/azure/skills/azure-prepare/references/resources-limits-quotas.md b/plugins/azure-skills/skills/azure-prepare/references/resources-limits-quotas.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/resources-limits-quotas.md rename to plugins/azure-skills/skills/azure-prepare/references/resources-limits-quotas.md diff --git a/plugins/azure/skills/azure-prepare/references/runtimes/nodejs.md b/plugins/azure-skills/skills/azure-prepare/references/runtimes/nodejs.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/runtimes/nodejs.md rename to plugins/azure-skills/skills/azure-prepare/references/runtimes/nodejs.md diff --git a/plugins/azure/skills/azure-prepare/references/scan.md b/plugins/azure-skills/skills/azure-prepare/references/scan.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/scan.md rename to plugins/azure-skills/skills/azure-prepare/references/scan.md diff --git a/plugins/azure/skills/azure-prepare/references/sdk/azd-deployment.md b/plugins/azure-skills/skills/azure-prepare/references/sdk/azd-deployment.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/sdk/azd-deployment.md rename to plugins/azure-skills/skills/azure-prepare/references/sdk/azd-deployment.md diff --git a/plugins/azure/skills/azure-prepare/references/sdk/azure-appconfiguration-java.md b/plugins/azure-skills/skills/azure-prepare/references/sdk/azure-appconfiguration-java.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/sdk/azure-appconfiguration-java.md rename to plugins/azure-skills/skills/azure-prepare/references/sdk/azure-appconfiguration-java.md diff --git a/plugins/azure/skills/azure-prepare/references/sdk/azure-appconfiguration-py.md b/plugins/azure-skills/skills/azure-prepare/references/sdk/azure-appconfiguration-py.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/sdk/azure-appconfiguration-py.md rename to plugins/azure-skills/skills/azure-prepare/references/sdk/azure-appconfiguration-py.md diff --git a/plugins/azure/skills/azure-prepare/references/sdk/azure-appconfiguration-ts.md b/plugins/azure-skills/skills/azure-prepare/references/sdk/azure-appconfiguration-ts.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/sdk/azure-appconfiguration-ts.md rename to plugins/azure-skills/skills/azure-prepare/references/sdk/azure-appconfiguration-ts.md diff --git a/plugins/azure/skills/azure-prepare/references/sdk/azure-identity-dotnet.md b/plugins/azure-skills/skills/azure-prepare/references/sdk/azure-identity-dotnet.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/sdk/azure-identity-dotnet.md rename to plugins/azure-skills/skills/azure-prepare/references/sdk/azure-identity-dotnet.md diff --git a/plugins/azure/skills/azure-prepare/references/sdk/azure-identity-java.md b/plugins/azure-skills/skills/azure-prepare/references/sdk/azure-identity-java.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/sdk/azure-identity-java.md rename to plugins/azure-skills/skills/azure-prepare/references/sdk/azure-identity-java.md diff --git a/plugins/azure/skills/azure-prepare/references/sdk/azure-identity-py.md b/plugins/azure-skills/skills/azure-prepare/references/sdk/azure-identity-py.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/sdk/azure-identity-py.md rename to plugins/azure-skills/skills/azure-prepare/references/sdk/azure-identity-py.md diff --git a/plugins/azure/skills/azure-prepare/references/sdk/azure-identity-ts.md b/plugins/azure-skills/skills/azure-prepare/references/sdk/azure-identity-ts.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/sdk/azure-identity-ts.md rename to plugins/azure-skills/skills/azure-prepare/references/sdk/azure-identity-ts.md diff --git a/plugins/azure/skills/azure-prepare/references/security.md b/plugins/azure-skills/skills/azure-prepare/references/security.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/security.md rename to plugins/azure-skills/skills/azure-prepare/references/security.md diff --git a/plugins/azure/skills/azure-prepare/references/services/aks/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/aks/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/aks/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/aks/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/aks/addons.md b/plugins/azure-skills/skills/azure-prepare/references/services/aks/addons.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/aks/addons.md rename to plugins/azure-skills/skills/azure-prepare/references/services/aks/addons.md diff --git a/plugins/azure/skills/azure-prepare/references/services/aks/bicep.md b/plugins/azure-skills/skills/azure-prepare/references/services/aks/bicep.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/aks/bicep.md rename to plugins/azure-skills/skills/azure-prepare/references/services/aks/bicep.md diff --git a/plugins/azure/skills/azure-prepare/references/services/aks/manifests.md b/plugins/azure-skills/skills/azure-prepare/references/services/aks/manifests.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/aks/manifests.md rename to plugins/azure-skills/skills/azure-prepare/references/services/aks/manifests.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-insights/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-insights/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-insights/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-insights/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/bicep.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/bicep.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/bicep.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/bicep.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/custom-domains.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/custom-domains.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/custom-domains.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/custom-domains.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/deployment-slots.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/deployment-slots.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/deployment-slots.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/deployment-slots.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/networking.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/networking.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/networking.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/networking.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/scaling.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/scaling.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/scaling.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/scaling.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/sku-selection.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/sku-selection.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/sku-selection.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/sku-selection.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/auth/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/auth/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/auth/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/auth/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/dotnet.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/dotnet.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/dotnet.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/dotnet.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/nodejs.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/nodejs.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/nodejs.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/nodejs.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/python.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/python.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/python.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/auth/source/python.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/composition.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/composition.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/composition.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/composition.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/dotnet.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/dotnet.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/dotnet.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/dotnet.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/nodejs.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/nodejs.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/nodejs.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/nodejs.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/python.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/python.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/python.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/cosmos/source/python.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/redis/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/redis/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/redis/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/redis/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/dotnet.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/dotnet.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/dotnet.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/dotnet.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/nodejs.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/nodejs.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/nodejs.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/nodejs.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/python.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/python.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/python.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/redis/source/python.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/sql/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/sql/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/sql/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/sql/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/dotnet.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/dotnet.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/dotnet.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/dotnet.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/nodejs.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/nodejs.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/nodejs.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/nodejs.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/python.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/python.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/python.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/recipes/sql/source/python.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/templates/selection.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/selection.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/templates/selection.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/selection.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/templates/web-api.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/web-api.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/templates/web-api.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/web-api.md diff --git a/plugins/azure/skills/azure-prepare/references/services/app-service/templates/web-app.md b/plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/web-app.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/app-service/templates/web-app.md rename to plugins/azure-skills/skills/azure-prepare/references/services/app-service/templates/web-app.md diff --git a/plugins/azure/skills/azure-prepare/references/services/container-apps/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/container-apps/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/container-apps/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/container-apps/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/container-apps/bicep.md b/plugins/azure-skills/skills/azure-prepare/references/services/container-apps/bicep.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/container-apps/bicep.md rename to plugins/azure-skills/skills/azure-prepare/references/services/container-apps/bicep.md diff --git a/plugins/azure/skills/azure-prepare/references/services/container-apps/day2-operations.md b/plugins/azure-skills/skills/azure-prepare/references/services/container-apps/day2-operations.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/container-apps/day2-operations.md rename to plugins/azure-skills/skills/azure-prepare/references/services/container-apps/day2-operations.md diff --git a/plugins/azure/skills/azure-prepare/references/services/container-apps/environment.md b/plugins/azure-skills/skills/azure-prepare/references/services/container-apps/environment.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/container-apps/environment.md rename to plugins/azure-skills/skills/azure-prepare/references/services/container-apps/environment.md diff --git a/plugins/azure/skills/azure-prepare/references/services/container-apps/health-probes.md b/plugins/azure-skills/skills/azure-prepare/references/services/container-apps/health-probes.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/container-apps/health-probes.md rename to plugins/azure-skills/skills/azure-prepare/references/services/container-apps/health-probes.md diff --git a/plugins/azure/skills/azure-prepare/references/services/container-apps/networking.md b/plugins/azure-skills/skills/azure-prepare/references/services/container-apps/networking.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/container-apps/networking.md rename to plugins/azure-skills/skills/azure-prepare/references/services/container-apps/networking.md diff --git a/plugins/azure/skills/azure-prepare/references/services/container-apps/revisions.md b/plugins/azure-skills/skills/azure-prepare/references/services/container-apps/revisions.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/container-apps/revisions.md rename to plugins/azure-skills/skills/azure-prepare/references/services/container-apps/revisions.md diff --git a/plugins/azure/skills/azure-prepare/references/services/container-apps/scaling.md b/plugins/azure-skills/skills/azure-prepare/references/services/container-apps/scaling.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/container-apps/scaling.md rename to plugins/azure-skills/skills/azure-prepare/references/services/container-apps/scaling.md diff --git a/plugins/azure/skills/azure-prepare/references/services/container-apps/terraform.md b/plugins/azure-skills/skills/azure-prepare/references/services/container-apps/terraform.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/container-apps/terraform.md rename to plugins/azure-skills/skills/azure-prepare/references/services/container-apps/terraform.md diff --git a/plugins/azure/skills/azure-prepare/references/services/cosmos-db/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/cosmos-db/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/cosmos-db/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/cosmos-db/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/cosmos-db/bicep.md b/plugins/azure-skills/skills/azure-prepare/references/services/cosmos-db/bicep.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/cosmos-db/bicep.md rename to plugins/azure-skills/skills/azure-prepare/references/services/cosmos-db/bicep.md diff --git a/plugins/azure/skills/azure-prepare/references/services/cosmos-db/partitioning.md b/plugins/azure-skills/skills/azure-prepare/references/services/cosmos-db/partitioning.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/cosmos-db/partitioning.md rename to plugins/azure-skills/skills/azure-prepare/references/services/cosmos-db/partitioning.md diff --git a/plugins/azure/skills/azure-prepare/references/services/cosmos-db/sdk.md b/plugins/azure-skills/skills/azure-prepare/references/services/cosmos-db/sdk.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/cosmos-db/sdk.md rename to plugins/azure-skills/skills/azure-prepare/references/services/cosmos-db/sdk.md diff --git a/plugins/azure/skills/azure-prepare/references/services/durable-task-scheduler/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/durable-task-scheduler/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/durable-task-scheduler/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/durable-task-scheduler/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/durable-task-scheduler/bicep.md b/plugins/azure-skills/skills/azure-prepare/references/services/durable-task-scheduler/bicep.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/durable-task-scheduler/bicep.md rename to plugins/azure-skills/skills/azure-prepare/references/services/durable-task-scheduler/bicep.md diff --git a/plugins/azure/skills/azure-prepare/references/services/durable-task-scheduler/dotnet.md b/plugins/azure-skills/skills/azure-prepare/references/services/durable-task-scheduler/dotnet.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/durable-task-scheduler/dotnet.md rename to plugins/azure-skills/skills/azure-prepare/references/services/durable-task-scheduler/dotnet.md diff --git a/plugins/azure/skills/azure-prepare/references/services/durable-task-scheduler/java.md b/plugins/azure-skills/skills/azure-prepare/references/services/durable-task-scheduler/java.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/durable-task-scheduler/java.md rename to plugins/azure-skills/skills/azure-prepare/references/services/durable-task-scheduler/java.md diff --git a/plugins/azure/skills/azure-prepare/references/services/durable-task-scheduler/javascript.md b/plugins/azure-skills/skills/azure-prepare/references/services/durable-task-scheduler/javascript.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/durable-task-scheduler/javascript.md rename to plugins/azure-skills/skills/azure-prepare/references/services/durable-task-scheduler/javascript.md diff --git a/plugins/azure/skills/azure-prepare/references/services/durable-task-scheduler/python.md b/plugins/azure-skills/skills/azure-prepare/references/services/durable-task-scheduler/python.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/durable-task-scheduler/python.md rename to plugins/azure-skills/skills/azure-prepare/references/services/durable-task-scheduler/python.md diff --git a/plugins/azure/skills/azure-prepare/references/services/event-grid/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/event-grid/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/event-grid/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/event-grid/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/event-grid/bicep.md b/plugins/azure-skills/skills/azure-prepare/references/services/event-grid/bicep.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/event-grid/bicep.md rename to plugins/azure-skills/skills/azure-prepare/references/services/event-grid/bicep.md diff --git a/plugins/azure/skills/azure-prepare/references/services/event-grid/subscriptions.md b/plugins/azure-skills/skills/azure-prepare/references/services/event-grid/subscriptions.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/event-grid/subscriptions.md rename to plugins/azure-skills/skills/azure-prepare/references/services/event-grid/subscriptions.md diff --git a/plugins/azure/skills/azure-prepare/references/services/foundry/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/foundry/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/foundry/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/foundry/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/foundry/region-availability.md b/plugins/azure-skills/skills/azure-prepare/references/services/foundry/region-availability.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/foundry/region-availability.md rename to plugins/azure-skills/skills/azure-prepare/references/services/foundry/region-availability.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/aspire-containerapps.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/aspire-containerapps.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/aspire-containerapps.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/aspire-containerapps.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/bicep.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/bicep.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/bicep.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/bicep.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/durable.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/durable.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/durable.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/durable.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/base/eval/python.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/base/eval/python.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/base/eval/python.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/base/eval/python.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/base/eval/summary.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/base/eval/summary.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/base/eval/summary.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/base/eval/summary.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/base/eval/typescript.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/base/eval/typescript.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/base/eval/typescript.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/base/eval/typescript.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/eval/python.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/eval/python.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/eval/python.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/eval/python.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/eval/summary.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/eval/summary.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/eval/summary.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/blob-eventgrid/eval/summary.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/common/dotnet-entry-point.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/common/dotnet-entry-point.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/common/dotnet-entry-point.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/common/dotnet-entry-point.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/common/error-handling.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/common/error-handling.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/common/error-handling.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/common/error-handling.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/common/health-check.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/common/health-check.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/common/health-check.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/common/health-check.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/common/nodejs-entry-point.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/common/nodejs-entry-point.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/common/nodejs-entry-point.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/common/nodejs-entry-point.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/composition.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/composition.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/composition.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/composition.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/python.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/python.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/python.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/python.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/summary.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/summary.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/summary.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/summary.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/typescript.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/typescript.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/typescript.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/cosmosdb/eval/typescript.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/durable/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/durable/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/durable/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/durable/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/durable/eval/python.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/durable/eval/python.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/durable/eval/python.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/durable/eval/python.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/durable/eval/summary.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/durable/eval/summary.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/durable/eval/summary.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/durable/eval/summary.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/eval/python.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/eval/python.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/eval/python.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/eval/python.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/eval/summary.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/eval/summary.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/eval/summary.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/eventhubs/eval/summary.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/mcp/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/mcp/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/mcp/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/mcp/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/mcp/eval/python.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/mcp/eval/python.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/mcp/eval/python.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/mcp/eval/python.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/mcp/eval/summary.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/mcp/eval/summary.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/mcp/eval/summary.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/mcp/eval/summary.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/python.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/python.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/python.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/python.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/summary.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/summary.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/summary.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/summary.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/typescript.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/typescript.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/typescript.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/servicebus/eval/typescript.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/sql/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/sql/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/sql/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/sql/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/sql/eval/python.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/sql/eval/python.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/sql/eval/python.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/sql/eval/python.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/sql/eval/summary.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/sql/eval/summary.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/sql/eval/summary.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/sql/eval/summary.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/timer/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/timer/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/timer/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/timer/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/timer/eval/python.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/timer/eval/python.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/timer/eval/python.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/timer/eval/python.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/timer/eval/summary.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/timer/eval/summary.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/recipes/timer/eval/summary.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/recipes/timer/eval/summary.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/templates/selection.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/selection.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/templates/selection.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/templates/selection.md diff --git a/plugins/azure/skills/azure-prepare/references/services/functions/terraform.md b/plugins/azure-skills/skills/azure-prepare/references/services/functions/terraform.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/functions/terraform.md rename to plugins/azure-skills/skills/azure-prepare/references/services/functions/terraform.md diff --git a/plugins/azure/skills/azure-prepare/references/services/key-vault/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/key-vault/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/key-vault/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/key-vault/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/key-vault/bicep.md b/plugins/azure-skills/skills/azure-prepare/references/services/key-vault/bicep.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/key-vault/bicep.md rename to plugins/azure-skills/skills/azure-prepare/references/services/key-vault/bicep.md diff --git a/plugins/azure/skills/azure-prepare/references/services/key-vault/sdk.md b/plugins/azure-skills/skills/azure-prepare/references/services/key-vault/sdk.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/key-vault/sdk.md rename to plugins/azure-skills/skills/azure-prepare/references/services/key-vault/sdk.md diff --git a/plugins/azure/skills/azure-prepare/references/services/logic-apps/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/logic-apps/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/logic-apps/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/logic-apps/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/logic-apps/bicep.md b/plugins/azure-skills/skills/azure-prepare/references/services/logic-apps/bicep.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/logic-apps/bicep.md rename to plugins/azure-skills/skills/azure-prepare/references/services/logic-apps/bicep.md diff --git a/plugins/azure/skills/azure-prepare/references/services/logic-apps/triggers.md b/plugins/azure-skills/skills/azure-prepare/references/services/logic-apps/triggers.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/logic-apps/triggers.md rename to plugins/azure-skills/skills/azure-prepare/references/services/logic-apps/triggers.md diff --git a/plugins/azure/skills/azure-prepare/references/services/service-bus/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/service-bus/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/service-bus/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/service-bus/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/service-bus/bicep.md b/plugins/azure-skills/skills/azure-prepare/references/services/service-bus/bicep.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/service-bus/bicep.md rename to plugins/azure-skills/skills/azure-prepare/references/services/service-bus/bicep.md diff --git a/plugins/azure/skills/azure-prepare/references/services/service-bus/patterns.md b/plugins/azure-skills/skills/azure-prepare/references/services/service-bus/patterns.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/service-bus/patterns.md rename to plugins/azure-skills/skills/azure-prepare/references/services/service-bus/patterns.md diff --git a/plugins/azure/skills/azure-prepare/references/services/sql-database/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/sql-database/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/sql-database/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/sql-database/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/sql-database/auth.md b/plugins/azure-skills/skills/azure-prepare/references/services/sql-database/auth.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/sql-database/auth.md rename to plugins/azure-skills/skills/azure-prepare/references/services/sql-database/auth.md diff --git a/plugins/azure/skills/azure-prepare/references/services/sql-database/bicep.md b/plugins/azure-skills/skills/azure-prepare/references/services/sql-database/bicep.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/sql-database/bicep.md rename to plugins/azure-skills/skills/azure-prepare/references/services/sql-database/bicep.md diff --git a/plugins/azure/skills/azure-prepare/references/services/sql-database/scripts/grant-sql-access.ps1 b/plugins/azure-skills/skills/azure-prepare/references/services/sql-database/scripts/grant-sql-access.ps1 similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/sql-database/scripts/grant-sql-access.ps1 rename to plugins/azure-skills/skills/azure-prepare/references/services/sql-database/scripts/grant-sql-access.ps1 diff --git a/plugins/azure/skills/azure-prepare/references/services/sql-database/scripts/grant-sql-access.sh b/plugins/azure-skills/skills/azure-prepare/references/services/sql-database/scripts/grant-sql-access.sh similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/sql-database/scripts/grant-sql-access.sh rename to plugins/azure-skills/skills/azure-prepare/references/services/sql-database/scripts/grant-sql-access.sh diff --git a/plugins/azure/skills/azure-prepare/references/services/sql-database/sdk.md b/plugins/azure-skills/skills/azure-prepare/references/services/sql-database/sdk.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/sql-database/sdk.md rename to plugins/azure-skills/skills/azure-prepare/references/services/sql-database/sdk.md diff --git a/plugins/azure/skills/azure-prepare/references/services/static-web-apps/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/static-web-apps/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/static-web-apps/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/static-web-apps/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/static-web-apps/bicep.md b/plugins/azure-skills/skills/azure-prepare/references/services/static-web-apps/bicep.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/static-web-apps/bicep.md rename to plugins/azure-skills/skills/azure-prepare/references/services/static-web-apps/bicep.md diff --git a/plugins/azure/skills/azure-prepare/references/services/static-web-apps/deployment.md b/plugins/azure-skills/skills/azure-prepare/references/services/static-web-apps/deployment.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/static-web-apps/deployment.md rename to plugins/azure-skills/skills/azure-prepare/references/services/static-web-apps/deployment.md diff --git a/plugins/azure/skills/azure-prepare/references/services/static-web-apps/region-availability.md b/plugins/azure-skills/skills/azure-prepare/references/services/static-web-apps/region-availability.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/static-web-apps/region-availability.md rename to plugins/azure-skills/skills/azure-prepare/references/services/static-web-apps/region-availability.md diff --git a/plugins/azure/skills/azure-prepare/references/services/static-web-apps/routing.md b/plugins/azure-skills/skills/azure-prepare/references/services/static-web-apps/routing.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/static-web-apps/routing.md rename to plugins/azure-skills/skills/azure-prepare/references/services/static-web-apps/routing.md diff --git a/plugins/azure/skills/azure-prepare/references/services/static-web-apps/terraform.md b/plugins/azure-skills/skills/azure-prepare/references/services/static-web-apps/terraform.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/static-web-apps/terraform.md rename to plugins/azure-skills/skills/azure-prepare/references/services/static-web-apps/terraform.md diff --git a/plugins/azure/skills/azure-prepare/references/services/storage/README.md b/plugins/azure-skills/skills/azure-prepare/references/services/storage/README.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/storage/README.md rename to plugins/azure-skills/skills/azure-prepare/references/services/storage/README.md diff --git a/plugins/azure/skills/azure-prepare/references/services/storage/access.md b/plugins/azure-skills/skills/azure-prepare/references/services/storage/access.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/storage/access.md rename to plugins/azure-skills/skills/azure-prepare/references/services/storage/access.md diff --git a/plugins/azure/skills/azure-prepare/references/services/storage/bicep.md b/plugins/azure-skills/skills/azure-prepare/references/services/storage/bicep.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/services/storage/bicep.md rename to plugins/azure-skills/skills/azure-prepare/references/services/storage/bicep.md diff --git a/plugins/azure/skills/azure-prepare/references/specialized-routing.md b/plugins/azure-skills/skills/azure-prepare/references/specialized-routing.md similarity index 100% rename from plugins/azure/skills/azure-prepare/references/specialized-routing.md rename to plugins/azure-skills/skills/azure-prepare/references/specialized-routing.md diff --git a/plugins/azure/skills/azure-prepare/version.json b/plugins/azure-skills/skills/azure-prepare/version.json similarity index 100% rename from plugins/azure/skills/azure-prepare/version.json rename to plugins/azure-skills/skills/azure-prepare/version.json diff --git a/plugins/azure/skills/azure-quotas/SKILL.md b/plugins/azure-skills/skills/azure-quotas/SKILL.md similarity index 100% rename from plugins/azure/skills/azure-quotas/SKILL.md rename to plugins/azure-skills/skills/azure-quotas/SKILL.md diff --git a/plugins/azure/skills/azure-quotas/references/advanced-commands.md b/plugins/azure-skills/skills/azure-quotas/references/advanced-commands.md similarity index 100% rename from plugins/azure/skills/azure-quotas/references/advanced-commands.md rename to plugins/azure-skills/skills/azure-quotas/references/advanced-commands.md diff --git a/plugins/azure/skills/azure-quotas/references/commands.md b/plugins/azure-skills/skills/azure-quotas/references/commands.md similarity index 100% rename from plugins/azure/skills/azure-quotas/references/commands.md rename to plugins/azure-skills/skills/azure-quotas/references/commands.md diff --git a/plugins/azure/skills/azure-quotas/scripts/check-quota.ps1 b/plugins/azure-skills/skills/azure-quotas/scripts/check-quota.ps1 similarity index 100% rename from plugins/azure/skills/azure-quotas/scripts/check-quota.ps1 rename to plugins/azure-skills/skills/azure-quotas/scripts/check-quota.ps1 diff --git a/plugins/azure/skills/azure-quotas/scripts/check-quota.sh b/plugins/azure-skills/skills/azure-quotas/scripts/check-quota.sh similarity index 100% rename from plugins/azure/skills/azure-quotas/scripts/check-quota.sh rename to plugins/azure-skills/skills/azure-quotas/scripts/check-quota.sh diff --git a/plugins/azure/skills/azure-quotas/version.json b/plugins/azure-skills/skills/azure-quotas/version.json similarity index 100% rename from plugins/azure/skills/azure-quotas/version.json rename to plugins/azure-skills/skills/azure-quotas/version.json diff --git a/plugins/azure/skills/azure-rbac/version.json b/plugins/azure-skills/skills/azure-rbac/version.json similarity index 100% rename from plugins/azure/skills/azure-rbac/version.json rename to plugins/azure-skills/skills/azure-rbac/version.json diff --git a/plugins/azure/skills/azure-reliability/SKILL.md b/plugins/azure-skills/skills/azure-reliability/SKILL.md similarity index 100% rename from plugins/azure/skills/azure-reliability/SKILL.md rename to plugins/azure-skills/skills/azure-reliability/SKILL.md diff --git a/plugins/azure/skills/azure-reliability/references/configure-health-probes.md b/plugins/azure-skills/skills/azure-reliability/references/configure-health-probes.md similarity index 100% rename from plugins/azure/skills/azure-reliability/references/configure-health-probes.md rename to plugins/azure-skills/skills/azure-reliability/references/configure-health-probes.md diff --git a/plugins/azure/skills/azure-reliability/references/configure-multi-region.md b/plugins/azure-skills/skills/azure-reliability/references/configure-multi-region.md similarity index 100% rename from plugins/azure/skills/azure-reliability/references/configure-multi-region.md rename to plugins/azure-skills/skills/azure-reliability/references/configure-multi-region.md diff --git a/plugins/azure/skills/azure-reliability/references/configure-storage.md b/plugins/azure-skills/skills/azure-reliability/references/configure-storage.md similarity index 100% rename from plugins/azure/skills/azure-reliability/references/configure-storage.md rename to plugins/azure-skills/skills/azure-reliability/references/configure-storage.md diff --git a/plugins/azure/skills/azure-reliability/references/configure-zone-redundancy.md b/plugins/azure-skills/skills/azure-reliability/references/configure-zone-redundancy.md similarity index 100% rename from plugins/azure/skills/azure-reliability/references/configure-zone-redundancy.md rename to plugins/azure-skills/skills/azure-reliability/references/configure-zone-redundancy.md diff --git a/plugins/azure/skills/azure-reliability/references/health-probe-checks.md b/plugins/azure-skills/skills/azure-reliability/references/health-probe-checks.md similarity index 100% rename from plugins/azure/skills/azure-reliability/references/health-probe-checks.md rename to plugins/azure-skills/skills/azure-reliability/references/health-probe-checks.md diff --git a/plugins/azure/skills/azure-reliability/references/iac-patching-bicep.md b/plugins/azure-skills/skills/azure-reliability/references/iac-patching-bicep.md similarity index 100% rename from plugins/azure/skills/azure-reliability/references/iac-patching-bicep.md rename to plugins/azure-skills/skills/azure-reliability/references/iac-patching-bicep.md diff --git a/plugins/azure/skills/azure-reliability/references/iac-patching-terraform.md b/plugins/azure-skills/skills/azure-reliability/references/iac-patching-terraform.md similarity index 100% rename from plugins/azure/skills/azure-reliability/references/iac-patching-terraform.md rename to plugins/azure-skills/skills/azure-reliability/references/iac-patching-terraform.md diff --git a/plugins/azure/skills/azure-reliability/references/multi-region-checks.md b/plugins/azure-skills/skills/azure-reliability/references/multi-region-checks.md similarity index 100% rename from plugins/azure/skills/azure-reliability/references/multi-region-checks.md rename to plugins/azure-skills/skills/azure-reliability/references/multi-region-checks.md diff --git a/plugins/azure/skills/azure-reliability/references/services/app-service/reliability.md b/plugins/azure-skills/skills/azure-reliability/references/services/app-service/reliability.md similarity index 100% rename from plugins/azure/skills/azure-reliability/references/services/app-service/reliability.md rename to plugins/azure-skills/skills/azure-reliability/references/services/app-service/reliability.md diff --git a/plugins/azure/skills/azure-reliability/references/services/functions/reliability.md b/plugins/azure-skills/skills/azure-reliability/references/services/functions/reliability.md similarity index 100% rename from plugins/azure/skills/azure-reliability/references/services/functions/reliability.md rename to plugins/azure-skills/skills/azure-reliability/references/services/functions/reliability.md diff --git a/plugins/azure/skills/azure-reliability/references/storage-redundancy-checks.md b/plugins/azure-skills/skills/azure-reliability/references/storage-redundancy-checks.md similarity index 100% rename from plugins/azure/skills/azure-reliability/references/storage-redundancy-checks.md rename to plugins/azure-skills/skills/azure-reliability/references/storage-redundancy-checks.md diff --git a/plugins/azure/skills/azure-reliability/references/zone-redundancy-checks.md b/plugins/azure-skills/skills/azure-reliability/references/zone-redundancy-checks.md similarity index 100% rename from plugins/azure/skills/azure-reliability/references/zone-redundancy-checks.md rename to plugins/azure-skills/skills/azure-reliability/references/zone-redundancy-checks.md diff --git a/plugins/azure/skills/azure-reliability/version.json b/plugins/azure-skills/skills/azure-reliability/version.json similarity index 100% rename from plugins/azure/skills/azure-reliability/version.json rename to plugins/azure-skills/skills/azure-reliability/version.json diff --git a/plugins/azure/skills/azure-resource-lookup/SKILL.md b/plugins/azure-skills/skills/azure-resource-lookup/SKILL.md similarity index 100% rename from plugins/azure/skills/azure-resource-lookup/SKILL.md rename to plugins/azure-skills/skills/azure-resource-lookup/SKILL.md diff --git a/plugins/azure/skills/azure-resource-lookup/references/azure-resource-graph.md b/plugins/azure-skills/skills/azure-resource-lookup/references/azure-resource-graph.md similarity index 100% rename from plugins/azure/skills/azure-resource-lookup/references/azure-resource-graph.md rename to plugins/azure-skills/skills/azure-resource-lookup/references/azure-resource-graph.md diff --git a/plugins/azure/skills/azure-resource-lookup/version.json b/plugins/azure-skills/skills/azure-resource-lookup/version.json similarity index 100% rename from plugins/azure/skills/azure-resource-lookup/version.json rename to plugins/azure-skills/skills/azure-resource-lookup/version.json diff --git a/plugins/azure/skills/azure-resource-visualizer/SKILL.md b/plugins/azure-skills/skills/azure-resource-visualizer/SKILL.md similarity index 100% rename from plugins/azure/skills/azure-resource-visualizer/SKILL.md rename to plugins/azure-skills/skills/azure-resource-visualizer/SKILL.md diff --git a/plugins/azure/skills/azure-resource-visualizer/assets/example-diagram.md b/plugins/azure-skills/skills/azure-resource-visualizer/assets/example-diagram.md similarity index 100% rename from plugins/azure/skills/azure-resource-visualizer/assets/example-diagram.md rename to plugins/azure-skills/skills/azure-resource-visualizer/assets/example-diagram.md diff --git a/plugins/azure/skills/azure-resource-visualizer/assets/template-architecture.md b/plugins/azure-skills/skills/azure-resource-visualizer/assets/template-architecture.md similarity index 100% rename from plugins/azure/skills/azure-resource-visualizer/assets/template-architecture.md rename to plugins/azure-skills/skills/azure-resource-visualizer/assets/template-architecture.md diff --git a/plugins/azure/skills/azure-resource-visualizer/references/azure-resource-graph.md b/plugins/azure-skills/skills/azure-resource-visualizer/references/azure-resource-graph.md similarity index 100% rename from plugins/azure/skills/azure-resource-visualizer/references/azure-resource-graph.md rename to plugins/azure-skills/skills/azure-resource-visualizer/references/azure-resource-graph.md diff --git a/plugins/azure/skills/azure-resource-visualizer/version.json b/plugins/azure-skills/skills/azure-resource-visualizer/version.json similarity index 100% rename from plugins/azure/skills/azure-resource-visualizer/version.json rename to plugins/azure-skills/skills/azure-resource-visualizer/version.json diff --git a/plugins/azure/skills/azure-storage/SKILL.md b/plugins/azure-skills/skills/azure-storage/SKILL.md similarity index 100% rename from plugins/azure/skills/azure-storage/SKILL.md rename to plugins/azure-skills/skills/azure-storage/SKILL.md diff --git a/plugins/azure/skills/azure-storage/references/auth-best-practices.md b/plugins/azure-skills/skills/azure-storage/references/auth-best-practices.md similarity index 100% rename from plugins/azure/skills/azure-storage/references/auth-best-practices.md rename to plugins/azure-skills/skills/azure-storage/references/auth-best-practices.md diff --git a/plugins/azure/skills/azure-storage/references/sdk-usage.md b/plugins/azure-skills/skills/azure-storage/references/sdk-usage.md similarity index 100% rename from plugins/azure/skills/azure-storage/references/sdk-usage.md rename to plugins/azure-skills/skills/azure-storage/references/sdk-usage.md diff --git a/plugins/azure/skills/azure-storage/references/sdk/azure-data-tables-java.md b/plugins/azure-skills/skills/azure-storage/references/sdk/azure-data-tables-java.md similarity index 100% rename from plugins/azure/skills/azure-storage/references/sdk/azure-data-tables-java.md rename to plugins/azure-skills/skills/azure-storage/references/sdk/azure-data-tables-java.md diff --git a/plugins/azure/skills/azure-storage/references/sdk/azure-data-tables-py.md b/plugins/azure-skills/skills/azure-storage/references/sdk/azure-data-tables-py.md similarity index 100% rename from plugins/azure/skills/azure-storage/references/sdk/azure-data-tables-py.md rename to plugins/azure-skills/skills/azure-storage/references/sdk/azure-data-tables-py.md diff --git a/plugins/azure/skills/azure-storage/references/sdk/azure-storage-blob-java.md b/plugins/azure-skills/skills/azure-storage/references/sdk/azure-storage-blob-java.md similarity index 100% rename from plugins/azure/skills/azure-storage/references/sdk/azure-storage-blob-java.md rename to plugins/azure-skills/skills/azure-storage/references/sdk/azure-storage-blob-java.md diff --git a/plugins/azure/skills/azure-storage/references/sdk/azure-storage-blob-py.md b/plugins/azure-skills/skills/azure-storage/references/sdk/azure-storage-blob-py.md similarity index 100% rename from plugins/azure/skills/azure-storage/references/sdk/azure-storage-blob-py.md rename to plugins/azure-skills/skills/azure-storage/references/sdk/azure-storage-blob-py.md diff --git a/plugins/azure/skills/azure-storage/references/sdk/azure-storage-blob-rust.md b/plugins/azure-skills/skills/azure-storage/references/sdk/azure-storage-blob-rust.md similarity index 100% rename from plugins/azure/skills/azure-storage/references/sdk/azure-storage-blob-rust.md rename to plugins/azure-skills/skills/azure-storage/references/sdk/azure-storage-blob-rust.md diff --git a/plugins/azure/skills/azure-storage/references/sdk/azure-storage-blob-ts.md b/plugins/azure-skills/skills/azure-storage/references/sdk/azure-storage-blob-ts.md similarity index 100% rename from plugins/azure/skills/azure-storage/references/sdk/azure-storage-blob-ts.md rename to plugins/azure-skills/skills/azure-storage/references/sdk/azure-storage-blob-ts.md diff --git a/plugins/azure/skills/azure-storage/references/sdk/azure-storage-file-datalake-py.md b/plugins/azure-skills/skills/azure-storage/references/sdk/azure-storage-file-datalake-py.md similarity index 100% rename from plugins/azure/skills/azure-storage/references/sdk/azure-storage-file-datalake-py.md rename to plugins/azure-skills/skills/azure-storage/references/sdk/azure-storage-file-datalake-py.md diff --git a/plugins/azure/skills/azure-storage/references/sdk/azure-storage-file-share-py.md b/plugins/azure-skills/skills/azure-storage/references/sdk/azure-storage-file-share-py.md similarity index 100% rename from plugins/azure/skills/azure-storage/references/sdk/azure-storage-file-share-py.md rename to plugins/azure-skills/skills/azure-storage/references/sdk/azure-storage-file-share-py.md diff --git a/plugins/azure/skills/azure-storage/references/sdk/azure-storage-file-share-ts.md b/plugins/azure-skills/skills/azure-storage/references/sdk/azure-storage-file-share-ts.md similarity index 100% rename from plugins/azure/skills/azure-storage/references/sdk/azure-storage-file-share-ts.md rename to plugins/azure-skills/skills/azure-storage/references/sdk/azure-storage-file-share-ts.md diff --git a/plugins/azure/skills/azure-storage/references/sdk/azure-storage-queue-py.md b/plugins/azure-skills/skills/azure-storage/references/sdk/azure-storage-queue-py.md similarity index 100% rename from plugins/azure/skills/azure-storage/references/sdk/azure-storage-queue-py.md rename to plugins/azure-skills/skills/azure-storage/references/sdk/azure-storage-queue-py.md diff --git a/plugins/azure/skills/azure-storage/references/sdk/azure-storage-queue-ts.md b/plugins/azure-skills/skills/azure-storage/references/sdk/azure-storage-queue-ts.md similarity index 100% rename from plugins/azure/skills/azure-storage/references/sdk/azure-storage-queue-ts.md rename to plugins/azure-skills/skills/azure-storage/references/sdk/azure-storage-queue-ts.md diff --git a/plugins/azure/skills/azure-storage/version.json b/plugins/azure-skills/skills/azure-storage/version.json similarity index 100% rename from plugins/azure/skills/azure-storage/version.json rename to plugins/azure-skills/skills/azure-storage/version.json diff --git a/plugins/azure/skills/azure-upgrade/SKILL.md b/plugins/azure-skills/skills/azure-upgrade/SKILL.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/SKILL.md rename to plugins/azure-skills/skills/azure-upgrade/SKILL.md diff --git a/plugins/azure/skills/azure-upgrade/references/global-rules.md b/plugins/azure-skills/skills/azure-upgrade/references/global-rules.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/global-rules.md rename to plugins/azure-skills/skills/azure-upgrade/references/global-rules.md diff --git a/plugins/azure/skills/azure-upgrade/references/languages/java/INSTRUCTION.md b/plugins/azure-skills/skills/azure-upgrade/references/languages/java/INSTRUCTION.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/languages/java/INSTRUCTION.md rename to plugins/azure-skills/skills/azure-upgrade/references/languages/java/INSTRUCTION.md diff --git a/plugins/azure/skills/azure-upgrade/references/languages/java/README.md b/plugins/azure-skills/skills/azure-upgrade/references/languages/java/README.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/languages/java/README.md rename to plugins/azure-skills/skills/azure-upgrade/references/languages/java/README.md diff --git a/plugins/azure/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle-settings.md b/plugins/azure-skills/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle-settings.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle-settings.md rename to plugins/azure-skills/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle-settings.md diff --git a/plugins/azure/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle-toml.md b/plugins/azure-skills/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle-toml.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle-toml.md rename to plugins/azure-skills/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle-toml.md diff --git a/plugins/azure/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle.md b/plugins/azure-skills/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle.md rename to plugins/azure-skills/skills/azure-upgrade/references/languages/java/bom-migration/bom-gradle.md diff --git a/plugins/azure/skills/azure-upgrade/references/languages/java/bom-migration/bom-maven.md b/plugins/azure-skills/skills/azure-upgrade/references/languages/java/bom-migration/bom-maven.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/languages/java/bom-migration/bom-maven.md rename to plugins/azure-skills/skills/azure-upgrade/references/languages/java/bom-migration/bom-maven.md diff --git a/plugins/azure/skills/azure-upgrade/references/languages/java/bom-migration/bom-migration.md b/plugins/azure-skills/skills/azure-upgrade/references/languages/java/bom-migration/bom-migration.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/languages/java/bom-migration/bom-migration.md rename to plugins/azure-skills/skills/azure-upgrade/references/languages/java/bom-migration/bom-migration.md diff --git a/plugins/azure/skills/azure-upgrade/references/languages/java/bom-migration/bom-validation.md b/plugins/azure-skills/skills/azure-upgrade/references/languages/java/bom-migration/bom-validation.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/languages/java/bom-migration/bom-validation.md rename to plugins/azure-skills/skills/azure-upgrade/references/languages/java/bom-migration/bom-validation.md diff --git a/plugins/azure/skills/azure-upgrade/references/languages/java/package-specific/com.microsoft.azure.eventprocessorhost.md b/plugins/azure-skills/skills/azure-upgrade/references/languages/java/package-specific/com.microsoft.azure.eventprocessorhost.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/languages/java/package-specific/com.microsoft.azure.eventprocessorhost.md rename to plugins/azure-skills/skills/azure-upgrade/references/languages/java/package-specific/com.microsoft.azure.eventprocessorhost.md diff --git a/plugins/azure/skills/azure-upgrade/references/languages/java/package-specific/com.microsoft.azure.management.md b/plugins/azure-skills/skills/azure-upgrade/references/languages/java/package-specific/com.microsoft.azure.management.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/languages/java/package-specific/com.microsoft.azure.management.md rename to plugins/azure-skills/skills/azure-upgrade/references/languages/java/package-specific/com.microsoft.azure.management.md diff --git a/plugins/azure/skills/azure-upgrade/references/languages/java/rules/efficiency.md b/plugins/azure-skills/skills/azure-upgrade/references/languages/java/rules/efficiency.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/languages/java/rules/efficiency.md rename to plugins/azure-skills/skills/azure-upgrade/references/languages/java/rules/efficiency.md diff --git a/plugins/azure/skills/azure-upgrade/references/languages/java/rules/execution-guidelines.md b/plugins/azure-skills/skills/azure-upgrade/references/languages/java/rules/execution-guidelines.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/languages/java/rules/execution-guidelines.md rename to plugins/azure-skills/skills/azure-upgrade/references/languages/java/rules/execution-guidelines.md diff --git a/plugins/azure/skills/azure-upgrade/references/languages/java/rules/review-code-changes.md b/plugins/azure-skills/skills/azure-upgrade/references/languages/java/rules/review-code-changes.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/languages/java/rules/review-code-changes.md rename to plugins/azure-skills/skills/azure-upgrade/references/languages/java/rules/review-code-changes.md diff --git a/plugins/azure/skills/azure-upgrade/references/languages/java/rules/troubleshooting.md b/plugins/azure-skills/skills/azure-upgrade/references/languages/java/rules/troubleshooting.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/languages/java/rules/troubleshooting.md rename to plugins/azure-skills/skills/azure-upgrade/references/languages/java/rules/troubleshooting.md diff --git a/plugins/azure/skills/azure-upgrade/references/languages/java/rules/upgrade-strategy.md b/plugins/azure-skills/skills/azure-upgrade/references/languages/java/rules/upgrade-strategy.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/languages/java/rules/upgrade-strategy.md rename to plugins/azure-skills/skills/azure-upgrade/references/languages/java/rules/upgrade-strategy.md diff --git a/plugins/azure/skills/azure-upgrade/references/languages/java/rules/upgrade-success-criteria.md b/plugins/azure-skills/skills/azure-upgrade/references/languages/java/rules/upgrade-success-criteria.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/languages/java/rules/upgrade-success-criteria.md rename to plugins/azure-skills/skills/azure-upgrade/references/languages/java/rules/upgrade-success-criteria.md diff --git a/plugins/azure/skills/azure-upgrade/references/languages/java/scripts/upgrade_bom.py b/plugins/azure-skills/skills/azure-upgrade/references/languages/java/scripts/upgrade_bom.py similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/languages/java/scripts/upgrade_bom.py rename to plugins/azure-skills/skills/azure-upgrade/references/languages/java/scripts/upgrade_bom.py diff --git a/plugins/azure/skills/azure-upgrade/references/languages/java/templates/PLAN_TEMPLATE.md b/plugins/azure-skills/skills/azure-upgrade/references/languages/java/templates/PLAN_TEMPLATE.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/languages/java/templates/PLAN_TEMPLATE.md rename to plugins/azure-skills/skills/azure-upgrade/references/languages/java/templates/PLAN_TEMPLATE.md diff --git a/plugins/azure/skills/azure-upgrade/references/languages/java/templates/PROGRESS_TEMPLATE.md b/plugins/azure-skills/skills/azure-upgrade/references/languages/java/templates/PROGRESS_TEMPLATE.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/languages/java/templates/PROGRESS_TEMPLATE.md rename to plugins/azure-skills/skills/azure-upgrade/references/languages/java/templates/PROGRESS_TEMPLATE.md diff --git a/plugins/azure/skills/azure-upgrade/references/languages/java/templates/SUMMARY_TEMPLATE.md b/plugins/azure-skills/skills/azure-upgrade/references/languages/java/templates/SUMMARY_TEMPLATE.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/languages/java/templates/SUMMARY_TEMPLATE.md rename to plugins/azure-skills/skills/azure-upgrade/references/languages/java/templates/SUMMARY_TEMPLATE.md diff --git a/plugins/azure/skills/azure-upgrade/references/languages/java/workflow/phase-1-precheck.md b/plugins/azure-skills/skills/azure-upgrade/references/languages/java/workflow/phase-1-precheck.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/languages/java/workflow/phase-1-precheck.md rename to plugins/azure-skills/skills/azure-upgrade/references/languages/java/workflow/phase-1-precheck.md diff --git a/plugins/azure/skills/azure-upgrade/references/languages/java/workflow/phase-2-plan.md b/plugins/azure-skills/skills/azure-upgrade/references/languages/java/workflow/phase-2-plan.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/languages/java/workflow/phase-2-plan.md rename to plugins/azure-skills/skills/azure-upgrade/references/languages/java/workflow/phase-2-plan.md diff --git a/plugins/azure/skills/azure-upgrade/references/languages/java/workflow/phase-3-execute.md b/plugins/azure-skills/skills/azure-upgrade/references/languages/java/workflow/phase-3-execute.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/languages/java/workflow/phase-3-execute.md rename to plugins/azure-skills/skills/azure-upgrade/references/languages/java/workflow/phase-3-execute.md diff --git a/plugins/azure/skills/azure-upgrade/references/languages/java/workflow/phase-4-summarize.md b/plugins/azure-skills/skills/azure-upgrade/references/languages/java/workflow/phase-4-summarize.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/languages/java/workflow/phase-4-summarize.md rename to plugins/azure-skills/skills/azure-upgrade/references/languages/java/workflow/phase-4-summarize.md diff --git a/plugins/azure/skills/azure-upgrade/references/services/functions/assessment.md b/plugins/azure-skills/skills/azure-upgrade/references/services/functions/assessment.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/services/functions/assessment.md rename to plugins/azure-skills/skills/azure-upgrade/references/services/functions/assessment.md diff --git a/plugins/azure/skills/azure-upgrade/references/services/functions/automation.md b/plugins/azure-skills/skills/azure-upgrade/references/services/functions/automation.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/services/functions/automation.md rename to plugins/azure-skills/skills/azure-upgrade/references/services/functions/automation.md diff --git a/plugins/azure/skills/azure-upgrade/references/services/functions/consumption-to-flex.md b/plugins/azure-skills/skills/azure-upgrade/references/services/functions/consumption-to-flex.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/services/functions/consumption-to-flex.md rename to plugins/azure-skills/skills/azure-upgrade/references/services/functions/consumption-to-flex.md diff --git a/plugins/azure/skills/azure-upgrade/references/services/redis/redis-to-amr.md b/plugins/azure-skills/skills/azure-upgrade/references/services/redis/redis-to-amr.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/services/redis/redis-to-amr.md rename to plugins/azure-skills/skills/azure-upgrade/references/services/redis/redis-to-amr.md diff --git a/plugins/azure/skills/azure-upgrade/references/workflow-details.md b/plugins/azure-skills/skills/azure-upgrade/references/workflow-details.md similarity index 100% rename from plugins/azure/skills/azure-upgrade/references/workflow-details.md rename to plugins/azure-skills/skills/azure-upgrade/references/workflow-details.md diff --git a/plugins/azure/skills/azure-upgrade/version.json b/plugins/azure-skills/skills/azure-upgrade/version.json similarity index 100% rename from plugins/azure/skills/azure-upgrade/version.json rename to plugins/azure-skills/skills/azure-upgrade/version.json diff --git a/plugins/azure/skills/azure-validate/SKILL.md b/plugins/azure-skills/skills/azure-validate/SKILL.md similarity index 100% rename from plugins/azure/skills/azure-validate/SKILL.md rename to plugins/azure-skills/skills/azure-validate/SKILL.md diff --git a/plugins/azure/skills/azure-validate/references/aspire-functions-secrets.md b/plugins/azure-skills/skills/azure-validate/references/aspire-functions-secrets.md similarity index 100% rename from plugins/azure/skills/azure-validate/references/aspire-functions-secrets.md rename to plugins/azure-skills/skills/azure-validate/references/aspire-functions-secrets.md diff --git a/plugins/azure/skills/azure-validate/references/global-rules.md b/plugins/azure-skills/skills/azure-validate/references/global-rules.md similarity index 100% rename from plugins/azure/skills/azure-validate/references/global-rules.md rename to plugins/azure-skills/skills/azure-validate/references/global-rules.md diff --git a/plugins/azure/skills/azure-validate/references/policy-validation.md b/plugins/azure-skills/skills/azure-validate/references/policy-validation.md similarity index 100% rename from plugins/azure/skills/azure-validate/references/policy-validation.md rename to plugins/azure-skills/skills/azure-validate/references/policy-validation.md diff --git a/plugins/azure/skills/azure-validate/references/recipes/README.md b/plugins/azure-skills/skills/azure-validate/references/recipes/README.md similarity index 100% rename from plugins/azure/skills/azure-validate/references/recipes/README.md rename to plugins/azure-skills/skills/azure-validate/references/recipes/README.md diff --git a/plugins/azure/skills/azure-validate/references/recipes/azcli/README.md b/plugins/azure-skills/skills/azure-validate/references/recipes/azcli/README.md similarity index 100% rename from plugins/azure/skills/azure-validate/references/recipes/azcli/README.md rename to plugins/azure-skills/skills/azure-validate/references/recipes/azcli/README.md diff --git a/plugins/azure/skills/azure-validate/references/recipes/azcli/errors.md b/plugins/azure-skills/skills/azure-validate/references/recipes/azcli/errors.md similarity index 100% rename from plugins/azure/skills/azure-validate/references/recipes/azcli/errors.md rename to plugins/azure-skills/skills/azure-validate/references/recipes/azcli/errors.md diff --git a/plugins/azure/skills/azure-validate/references/recipes/azd/README.md b/plugins/azure-skills/skills/azure-validate/references/recipes/azd/README.md similarity index 100% rename from plugins/azure/skills/azure-validate/references/recipes/azd/README.md rename to plugins/azure-skills/skills/azure-validate/references/recipes/azd/README.md diff --git a/plugins/azure/skills/azure-validate/references/recipes/azd/aspire.md b/plugins/azure-skills/skills/azure-validate/references/recipes/azd/aspire.md similarity index 100% rename from plugins/azure/skills/azure-validate/references/recipes/azd/aspire.md rename to plugins/azure-skills/skills/azure-validate/references/recipes/azd/aspire.md diff --git a/plugins/azure/skills/azure-validate/references/recipes/azd/environment.md b/plugins/azure-skills/skills/azure-validate/references/recipes/azd/environment.md similarity index 100% rename from plugins/azure/skills/azure-validate/references/recipes/azd/environment.md rename to plugins/azure-skills/skills/azure-validate/references/recipes/azd/environment.md diff --git a/plugins/azure/skills/azure-validate/references/recipes/azd/errors.md b/plugins/azure-skills/skills/azure-validate/references/recipes/azd/errors.md similarity index 100% rename from plugins/azure/skills/azure-validate/references/recipes/azd/errors.md rename to plugins/azure-skills/skills/azure-validate/references/recipes/azd/errors.md diff --git a/plugins/azure/skills/azure-validate/references/recipes/bicep/README.md b/plugins/azure-skills/skills/azure-validate/references/recipes/bicep/README.md similarity index 100% rename from plugins/azure/skills/azure-validate/references/recipes/bicep/README.md rename to plugins/azure-skills/skills/azure-validate/references/recipes/bicep/README.md diff --git a/plugins/azure/skills/azure-validate/references/recipes/bicep/errors.md b/plugins/azure-skills/skills/azure-validate/references/recipes/bicep/errors.md similarity index 100% rename from plugins/azure/skills/azure-validate/references/recipes/bicep/errors.md rename to plugins/azure-skills/skills/azure-validate/references/recipes/bicep/errors.md diff --git a/plugins/azure/skills/azure-validate/references/recipes/terraform/README.md b/plugins/azure-skills/skills/azure-validate/references/recipes/terraform/README.md similarity index 100% rename from plugins/azure/skills/azure-validate/references/recipes/terraform/README.md rename to plugins/azure-skills/skills/azure-validate/references/recipes/terraform/README.md diff --git a/plugins/azure/skills/azure-validate/references/recipes/terraform/errors.md b/plugins/azure-skills/skills/azure-validate/references/recipes/terraform/errors.md similarity index 100% rename from plugins/azure/skills/azure-validate/references/recipes/terraform/errors.md rename to plugins/azure-skills/skills/azure-validate/references/recipes/terraform/errors.md diff --git a/plugins/azure/skills/azure-validate/references/region-availability.md b/plugins/azure-skills/skills/azure-validate/references/region-availability.md similarity index 100% rename from plugins/azure/skills/azure-validate/references/region-availability.md rename to plugins/azure-skills/skills/azure-validate/references/region-availability.md diff --git a/plugins/azure/skills/azure-validate/references/role-verification.md b/plugins/azure-skills/skills/azure-validate/references/role-verification.md similarity index 100% rename from plugins/azure/skills/azure-validate/references/role-verification.md rename to plugins/azure-skills/skills/azure-validate/references/role-verification.md diff --git a/plugins/azure/skills/azure-validate/version.json b/plugins/azure-skills/skills/azure-validate/version.json similarity index 100% rename from plugins/azure/skills/azure-validate/version.json rename to plugins/azure-skills/skills/azure-validate/version.json diff --git a/plugins/azure/skills/entra-agent-id/SKILL.md b/plugins/azure-skills/skills/entra-agent-id/SKILL.md similarity index 100% rename from plugins/azure/skills/entra-agent-id/SKILL.md rename to plugins/azure-skills/skills/entra-agent-id/SKILL.md diff --git a/plugins/azure/skills/entra-agent-id/references/known-limitations.md b/plugins/azure-skills/skills/entra-agent-id/references/known-limitations.md similarity index 100% rename from plugins/azure/skills/entra-agent-id/references/known-limitations.md rename to plugins/azure-skills/skills/entra-agent-id/references/known-limitations.md diff --git a/plugins/azure/skills/entra-agent-id/references/oauth2-token-flow.md b/plugins/azure-skills/skills/entra-agent-id/references/oauth2-token-flow.md similarity index 100% rename from plugins/azure/skills/entra-agent-id/references/oauth2-token-flow.md rename to plugins/azure-skills/skills/entra-agent-id/references/oauth2-token-flow.md diff --git a/plugins/azure/skills/entra-agent-id/references/obo-blueprint-setup.md b/plugins/azure-skills/skills/entra-agent-id/references/obo-blueprint-setup.md similarity index 100% rename from plugins/azure/skills/entra-agent-id/references/obo-blueprint-setup.md rename to plugins/azure-skills/skills/entra-agent-id/references/obo-blueprint-setup.md diff --git a/plugins/azure/skills/entra-agent-id/references/runtime-token-exchange.md b/plugins/azure-skills/skills/entra-agent-id/references/runtime-token-exchange.md similarity index 100% rename from plugins/azure/skills/entra-agent-id/references/runtime-token-exchange.md rename to plugins/azure-skills/skills/entra-agent-id/references/runtime-token-exchange.md diff --git a/plugins/azure/skills/entra-agent-id/references/sdk-sidecar-deployment.md b/plugins/azure-skills/skills/entra-agent-id/references/sdk-sidecar-deployment.md similarity index 100% rename from plugins/azure/skills/entra-agent-id/references/sdk-sidecar-deployment.md rename to plugins/azure-skills/skills/entra-agent-id/references/sdk-sidecar-deployment.md diff --git a/plugins/azure/skills/entra-agent-id/references/sdk-sidecar.md b/plugins/azure-skills/skills/entra-agent-id/references/sdk-sidecar.md similarity index 100% rename from plugins/azure/skills/entra-agent-id/references/sdk-sidecar.md rename to plugins/azure-skills/skills/entra-agent-id/references/sdk-sidecar.md diff --git a/plugins/azure/skills/entra-agent-id/version.json b/plugins/azure-skills/skills/entra-agent-id/version.json similarity index 100% rename from plugins/azure/skills/entra-agent-id/version.json rename to plugins/azure-skills/skills/entra-agent-id/version.json diff --git a/plugins/azure/skills/entra-app-registration/SKILL.md b/plugins/azure-skills/skills/entra-app-registration/SKILL.md similarity index 100% rename from plugins/azure/skills/entra-app-registration/SKILL.md rename to plugins/azure-skills/skills/entra-app-registration/SKILL.md diff --git a/plugins/azure/skills/entra-app-registration/references/BICEP-EXAMPLE.bicep b/plugins/azure-skills/skills/entra-app-registration/references/BICEP-EXAMPLE.bicep similarity index 100% rename from plugins/azure/skills/entra-app-registration/references/BICEP-EXAMPLE.bicep rename to plugins/azure-skills/skills/entra-app-registration/references/BICEP-EXAMPLE.bicep diff --git a/plugins/azure/skills/entra-app-registration/references/api-permissions.md b/plugins/azure-skills/skills/entra-app-registration/references/api-permissions.md similarity index 100% rename from plugins/azure/skills/entra-app-registration/references/api-permissions.md rename to plugins/azure-skills/skills/entra-app-registration/references/api-permissions.md diff --git a/plugins/azure/skills/entra-app-registration/references/auth-best-practices.md b/plugins/azure-skills/skills/entra-app-registration/references/auth-best-practices.md similarity index 100% rename from plugins/azure/skills/entra-app-registration/references/auth-best-practices.md rename to plugins/azure-skills/skills/entra-app-registration/references/auth-best-practices.md diff --git a/plugins/azure/skills/entra-app-registration/references/cli-commands.md b/plugins/azure-skills/skills/entra-app-registration/references/cli-commands.md similarity index 100% rename from plugins/azure/skills/entra-app-registration/references/cli-commands.md rename to plugins/azure-skills/skills/entra-app-registration/references/cli-commands.md diff --git a/plugins/azure/skills/entra-app-registration/references/console-app-example.md b/plugins/azure-skills/skills/entra-app-registration/references/console-app-example.md similarity index 100% rename from plugins/azure/skills/entra-app-registration/references/console-app-example.md rename to plugins/azure-skills/skills/entra-app-registration/references/console-app-example.md diff --git a/plugins/azure/skills/entra-app-registration/references/first-app-registration.md b/plugins/azure-skills/skills/entra-app-registration/references/first-app-registration.md similarity index 100% rename from plugins/azure/skills/entra-app-registration/references/first-app-registration.md rename to plugins/azure-skills/skills/entra-app-registration/references/first-app-registration.md diff --git a/plugins/azure/skills/entra-app-registration/references/oauth-flows.md b/plugins/azure-skills/skills/entra-app-registration/references/oauth-flows.md similarity index 100% rename from plugins/azure/skills/entra-app-registration/references/oauth-flows.md rename to plugins/azure-skills/skills/entra-app-registration/references/oauth-flows.md diff --git a/plugins/azure/skills/entra-app-registration/references/sdk/azure-identity-dotnet.md b/plugins/azure-skills/skills/entra-app-registration/references/sdk/azure-identity-dotnet.md similarity index 100% rename from plugins/azure/skills/entra-app-registration/references/sdk/azure-identity-dotnet.md rename to plugins/azure-skills/skills/entra-app-registration/references/sdk/azure-identity-dotnet.md diff --git a/plugins/azure/skills/entra-app-registration/references/sdk/azure-identity-java.md b/plugins/azure-skills/skills/entra-app-registration/references/sdk/azure-identity-java.md similarity index 100% rename from plugins/azure/skills/entra-app-registration/references/sdk/azure-identity-java.md rename to plugins/azure-skills/skills/entra-app-registration/references/sdk/azure-identity-java.md diff --git a/plugins/azure/skills/entra-app-registration/references/sdk/azure-identity-py.md b/plugins/azure-skills/skills/entra-app-registration/references/sdk/azure-identity-py.md similarity index 100% rename from plugins/azure/skills/entra-app-registration/references/sdk/azure-identity-py.md rename to plugins/azure-skills/skills/entra-app-registration/references/sdk/azure-identity-py.md diff --git a/plugins/azure/skills/entra-app-registration/references/sdk/azure-identity-rust.md b/plugins/azure-skills/skills/entra-app-registration/references/sdk/azure-identity-rust.md similarity index 100% rename from plugins/azure/skills/entra-app-registration/references/sdk/azure-identity-rust.md rename to plugins/azure-skills/skills/entra-app-registration/references/sdk/azure-identity-rust.md diff --git a/plugins/azure/skills/entra-app-registration/references/sdk/azure-identity-ts.md b/plugins/azure-skills/skills/entra-app-registration/references/sdk/azure-identity-ts.md similarity index 100% rename from plugins/azure/skills/entra-app-registration/references/sdk/azure-identity-ts.md rename to plugins/azure-skills/skills/entra-app-registration/references/sdk/azure-identity-ts.md diff --git a/plugins/azure/skills/entra-app-registration/references/sdk/azure-keyvault-py.md b/plugins/azure-skills/skills/entra-app-registration/references/sdk/azure-keyvault-py.md similarity index 100% rename from plugins/azure/skills/entra-app-registration/references/sdk/azure-keyvault-py.md rename to plugins/azure-skills/skills/entra-app-registration/references/sdk/azure-keyvault-py.md diff --git a/plugins/azure/skills/entra-app-registration/references/sdk/azure-keyvault-secrets-ts.md b/plugins/azure-skills/skills/entra-app-registration/references/sdk/azure-keyvault-secrets-ts.md similarity index 100% rename from plugins/azure/skills/entra-app-registration/references/sdk/azure-keyvault-secrets-ts.md rename to plugins/azure-skills/skills/entra-app-registration/references/sdk/azure-keyvault-secrets-ts.md diff --git a/plugins/azure/skills/entra-app-registration/references/sdk/microsoft-azure-webjobs-extensions-authentication-events-dotnet.md b/plugins/azure-skills/skills/entra-app-registration/references/sdk/microsoft-azure-webjobs-extensions-authentication-events-dotnet.md similarity index 100% rename from plugins/azure/skills/entra-app-registration/references/sdk/microsoft-azure-webjobs-extensions-authentication-events-dotnet.md rename to plugins/azure-skills/skills/entra-app-registration/references/sdk/microsoft-azure-webjobs-extensions-authentication-events-dotnet.md diff --git a/plugins/azure/skills/entra-app-registration/references/troubleshooting.md b/plugins/azure-skills/skills/entra-app-registration/references/troubleshooting.md similarity index 100% rename from plugins/azure/skills/entra-app-registration/references/troubleshooting.md rename to plugins/azure-skills/skills/entra-app-registration/references/troubleshooting.md diff --git a/plugins/azure/skills/entra-app-registration/version.json b/plugins/azure-skills/skills/entra-app-registration/version.json similarity index 100% rename from plugins/azure/skills/entra-app-registration/version.json rename to plugins/azure-skills/skills/entra-app-registration/version.json diff --git a/plugins/azure/skills/microsoft-foundry/.gitignore b/plugins/azure-skills/skills/microsoft-foundry/.gitignore similarity index 100% rename from plugins/azure/skills/microsoft-foundry/.gitignore rename to plugins/azure-skills/skills/microsoft-foundry/.gitignore diff --git a/plugins/azure/skills/microsoft-foundry/SKILL.md b/plugins/azure-skills/skills/microsoft-foundry/SKILL.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/SKILL.md rename to plugins/azure-skills/skills/microsoft-foundry/SKILL.md diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/SKILL.md b/plugins/azure-skills/skills/microsoft-foundry/finetuning/SKILL.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/SKILL.md rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/SKILL.md diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/references/agentic-rft.md b/plugins/azure-skills/skills/microsoft-foundry/finetuning/references/agentic-rft.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/references/agentic-rft.md rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/references/agentic-rft.md diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/references/dataset-formats.md b/plugins/azure-skills/skills/microsoft-foundry/finetuning/references/dataset-formats.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/references/dataset-formats.md rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/references/dataset-formats.md diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/references/deployment.md b/plugins/azure-skills/skills/microsoft-foundry/finetuning/references/deployment.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/references/deployment.md rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/references/deployment.md diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/references/evaluation.md b/plugins/azure-skills/skills/microsoft-foundry/finetuning/references/evaluation.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/references/evaluation.md rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/references/evaluation.md diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/references/grader-design.md b/plugins/azure-skills/skills/microsoft-foundry/finetuning/references/grader-design.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/references/grader-design.md rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/references/grader-design.md diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/references/hyperparameters.md b/plugins/azure-skills/skills/microsoft-foundry/finetuning/references/hyperparameters.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/references/hyperparameters.md rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/references/hyperparameters.md diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/references/large-file-uploads.md b/plugins/azure-skills/skills/microsoft-foundry/finetuning/references/large-file-uploads.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/references/large-file-uploads.md rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/references/large-file-uploads.md diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/references/platform-gotchas.md b/plugins/azure-skills/skills/microsoft-foundry/finetuning/references/platform-gotchas.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/references/platform-gotchas.md rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/references/platform-gotchas.md diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/references/reward-hacking.md b/plugins/azure-skills/skills/microsoft-foundry/finetuning/references/reward-hacking.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/references/reward-hacking.md rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/references/reward-hacking.md diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/references/training-curves.md b/plugins/azure-skills/skills/microsoft-foundry/finetuning/references/training-curves.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/references/training-curves.md rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/references/training-curves.md diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/references/training-types.md b/plugins/azure-skills/skills/microsoft-foundry/finetuning/references/training-types.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/references/training-types.md rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/references/training-types.md diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/references/vision-fine-tuning.md b/plugins/azure-skills/skills/microsoft-foundry/finetuning/references/vision-fine-tuning.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/references/vision-fine-tuning.md rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/references/vision-fine-tuning.md diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/scripts/calibrate_grader.py b/plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/calibrate_grader.py similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/scripts/calibrate_grader.py rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/calibrate_grader.py diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/scripts/check_training.py b/plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/check_training.py similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/scripts/check_training.py rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/check_training.py diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/scripts/cleanup.py b/plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/cleanup.py similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/scripts/cleanup.py rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/cleanup.py diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/scripts/common.py b/plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/common.py similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/scripts/common.py rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/common.py diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/scripts/convert_dataset.py b/plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/convert_dataset.py similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/scripts/convert_dataset.py rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/convert_dataset.py diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/scripts/deploy_model.py b/plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/deploy_model.py similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/scripts/deploy_model.py rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/deploy_model.py diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/scripts/evaluate_model.py b/plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/evaluate_model.py similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/scripts/evaluate_model.py rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/evaluate_model.py diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/scripts/generate_distillation_data.py b/plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/generate_distillation_data.py similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/scripts/generate_distillation_data.py rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/generate_distillation_data.py diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/scripts/monitor_training.py b/plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/monitor_training.py similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/scripts/monitor_training.py rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/monitor_training.py diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/scripts/score_dataset.py b/plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/score_dataset.py similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/scripts/score_dataset.py rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/score_dataset.py diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/scripts/submit_training.py b/plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/submit_training.py similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/scripts/submit_training.py rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/submit_training.py diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/scripts/validate/__init__.py b/plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/validate/__init__.py similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/scripts/validate/__init__.py rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/validate/__init__.py diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/scripts/validate/data_stats.py b/plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/validate/data_stats.py similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/scripts/validate/data_stats.py rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/validate/data_stats.py diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/scripts/validate/validate_dpo.py b/plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/validate/validate_dpo.py similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/scripts/validate/validate_dpo.py rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/validate/validate_dpo.py diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/scripts/validate/validate_rft.py b/plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/validate/validate_rft.py similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/scripts/validate/validate_rft.py rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/validate/validate_rft.py diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/scripts/validate/validate_sft.py b/plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/validate/validate_sft.py similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/scripts/validate/validate_sft.py rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/scripts/validate/validate_sft.py diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/workflows/dataset-creation.md b/plugins/azure-skills/skills/microsoft-foundry/finetuning/workflows/dataset-creation.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/workflows/dataset-creation.md rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/workflows/dataset-creation.md diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/workflows/diagnose-poor-results.md b/plugins/azure-skills/skills/microsoft-foundry/finetuning/workflows/diagnose-poor-results.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/workflows/diagnose-poor-results.md rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/workflows/diagnose-poor-results.md diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/workflows/full-pipeline.md b/plugins/azure-skills/skills/microsoft-foundry/finetuning/workflows/full-pipeline.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/workflows/full-pipeline.md rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/workflows/full-pipeline.md diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/workflows/iterative-training.md b/plugins/azure-skills/skills/microsoft-foundry/finetuning/workflows/iterative-training.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/workflows/iterative-training.md rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/workflows/iterative-training.md diff --git a/plugins/azure/skills/microsoft-foundry/finetuning/workflows/quickstart.md b/plugins/azure-skills/skills/microsoft-foundry/finetuning/workflows/quickstart.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/finetuning/workflows/quickstart.md rename to plugins/azure-skills/skills/microsoft-foundry/finetuning/workflows/quickstart.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/agent-optimizer/agent-optimizer.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/agent-optimizer/agent-optimizer.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/agent-optimizer/agent-optimizer.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/agent-optimizer/agent-optimizer.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/azd-setup.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/azd-setup.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/azd-setup.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/azd-setup.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/eval-yaml.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/eval-yaml.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/eval-yaml.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/eval-yaml.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/optimize-workflow.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/optimize-workflow.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/optimize-workflow.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/optimize-workflow.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/python-patterns.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/python-patterns.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/python-patterns.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/python-patterns.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/scaffold.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/scaffold.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/scaffold.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/agent-optimizer/references/scaffold.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/cicd/cicd.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/cicd/cicd.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/cicd/cicd.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/cicd/cicd.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/create-hosted.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/create-hosted.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/create-hosted.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/create-hosted.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/create-prompt.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/create-prompt.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/create-prompt.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/create-prompt.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/quick-start-hosted.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/quick-start-hosted.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/quick-start-hosted.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/quick-start-hosted.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/agent-tools.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/agent-tools.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/agent-tools.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/agent-tools.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/agentframework.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/agentframework.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/agentframework.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/agentframework.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/azd-ai-cli.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/azd-ai-cli.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/azd-ai-cli.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/azd-ai-cli.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/enable-incoming-a2a.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/enable-incoming-a2a.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/enable-incoming-a2a.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/enable-incoming-a2a.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/foundry-tool-catalog.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/foundry-tool-catalog.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/foundry-tool-catalog.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/foundry-tool-catalog.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-api-create.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-api-create.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-api-create.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-api-create.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-attach.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-attach.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-attach.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-attach.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-manage.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-manage.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-manage.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/guardrails/guardrail-manage.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/local-run.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/local-run.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/local-run.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/local-run.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/sdk-operations.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/sdk-operations.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/sdk-operations.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/sdk-operations.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-attach.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-attach.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-attach.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-attach.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-manage.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-manage.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-manage.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-manage.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-toolbox-attach.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-toolbox-attach.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-toolbox-attach.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/skills/skill-toolbox-attach.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-a2a.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-a2a.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-a2a.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-a2a.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-azure-ai-search.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-azure-ai-search.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-azure-ai-search.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-azure-ai-search.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-bing-grounding.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-bing-grounding.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-bing-grounding.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-bing-grounding.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-code-interpreter.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-code-interpreter.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-code-interpreter.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-code-interpreter.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-fabric-iq.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-fabric-iq.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-fabric-iq.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-fabric-iq.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-file-search.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-file-search.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-file-search.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-file-search.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-function-calling.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-function-calling.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-function-calling.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-function-calling.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-mcp.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-mcp.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-mcp.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-mcp.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-memory.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-memory.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-memory.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-memory.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-openapi.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-openapi.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-openapi.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-openapi.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-tool-search.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-tool-search.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-tool-search.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-tool-search.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-web-search.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-web-search.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-web-search.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-web-search.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-work-iq.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-work-iq.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tool-work-iq.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-work-iq.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/toolbox-reference.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/toolbox-reference.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/toolbox-reference.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/toolbox-reference.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tools.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tools.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/tools.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tools.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/use-toolbox-in-hosted-agent.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/use-toolbox-in-hosted-agent.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/references/use-toolbox-in-hosted-agent.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/use-toolbox-in-hosted-agent.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/scripts/check-canvas-entry.ps1 b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/scripts/check-canvas-entry.ps1 similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/scripts/check-canvas-entry.ps1 rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/scripts/check-canvas-entry.ps1 diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/scripts/check-canvas-entry.sh b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/scripts/check-canvas-entry.sh similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/scripts/check-canvas-entry.sh rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/scripts/check-canvas-entry.sh diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/scripts/resolve-project-id.ps1 b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/scripts/resolve-project-id.ps1 similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/scripts/resolve-project-id.ps1 rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/scripts/resolve-project-id.ps1 diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/scripts/resolve-project-id.sh b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/scripts/resolve-project-id.sh similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/scripts/resolve-project-id.sh rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/scripts/resolve-project-id.sh diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/scripts/verify-environment.ps1 b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/scripts/verify-environment.ps1 similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/scripts/verify-environment.ps1 rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/scripts/verify-environment.ps1 diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/create/scripts/verify-environment.sh b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/scripts/verify-environment.sh similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/create/scripts/verify-environment.sh rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/scripts/verify-environment.sh diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/deploy/deploy.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/deploy/deploy.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/deploy/deploy.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/deploy/deploy.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/eval-datasets.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/eval-datasets/eval-datasets.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/eval-datasets.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/eval-datasets/eval-datasets.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-comparison.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-comparison.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-comparison.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-comparison.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-curation.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-curation.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-curation.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-curation.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-organization.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-organization.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-organization.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-organization.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-versioning.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-versioning.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-versioning.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/eval-datasets/references/dataset-versioning.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-lineage.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-lineage.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-lineage.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-lineage.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-regression.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-regression.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-regression.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-regression.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-trending.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-trending.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-trending.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/eval-datasets/references/eval-trending.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/generate-seed-dataset.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/eval-datasets/references/generate-seed-dataset.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/generate-seed-dataset.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/eval-datasets/references/generate-seed-dataset.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/trace-to-dataset.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/eval-datasets/references/trace-to-dataset.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/eval-datasets/references/trace-to-dataset.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/eval-datasets/references/trace-to-dataset.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/invocations-ws/invocations-ws.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/invocations-ws/invocations-ws.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/invocations-ws/invocations-ws.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/invocations-ws/invocations-ws.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/invocations-ws/references/invocations-ws-protocol.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/invocations-ws/references/invocations-ws-protocol.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/invocations-ws/references/invocations-ws-protocol.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/invocations-ws/references/invocations-ws-protocol.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/invoke/invoke.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/invoke/invoke.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/invoke/invoke.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/invoke/invoke.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/invoke/references/file-operations.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/invoke/references/file-operations.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/invoke/references/file-operations.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/invoke/references/file-operations.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/invoke/references/invocations-protocol.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/invoke/references/invocations-protocol.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/invoke/references/invocations-protocol.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/invoke/references/invocations-protocol.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/invoke/references/session-management.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/invoke/references/session-management.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/invoke/references/session-management.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/invoke/references/session-management.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/observe/observe.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/observe/observe.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/observe/observe.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/observe/observe.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/analyze-results.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/observe/references/analyze-results.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/analyze-results.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/observe/references/analyze-results.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/cicd-monitoring.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/observe/references/cicd-monitoring.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/cicd-monitoring.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/observe/references/cicd-monitoring.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/compare-iterate.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/observe/references/compare-iterate.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/compare-iterate.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/observe/references/compare-iterate.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/continuous-eval.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/observe/references/continuous-eval.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/continuous-eval.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/observe/references/continuous-eval.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/deploy-and-setup.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/observe/references/deploy-and-setup.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/deploy-and-setup.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/observe/references/deploy-and-setup.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/evaluate-step.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/observe/references/evaluate-step.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/evaluate-step.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/observe/references/evaluate-step.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/evaluation-suite-generation.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/observe/references/evaluation-suite-generation.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/evaluation-suite-generation.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/observe/references/evaluation-suite-generation.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/optimize-deploy.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/observe/references/optimize-deploy.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/observe/references/optimize-deploy.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/observe/references/optimize-deploy.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/routine/references/azure-yaml.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/routine/references/azure-yaml.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/routine/references/azure-yaml.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/routine/references/azure-yaml.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/routine/references/cli-crud.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/routine/references/cli-crud.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/routine/references/cli-crud.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/routine/references/cli-crud.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/routine/routine.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/routine/routine.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/routine/routine.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/routine/routine.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/analyze-failures.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/trace/references/analyze-failures.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/analyze-failures.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/trace/references/analyze-failures.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/analyze-latency.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/trace/references/analyze-latency.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/analyze-latency.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/trace/references/analyze-latency.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/conversation-detail.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/trace/references/conversation-detail.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/conversation-detail.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/trace/references/conversation-detail.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/eval-correlation.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/trace/references/eval-correlation.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/eval-correlation.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/trace/references/eval-correlation.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/kql-templates.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/trace/references/kql-templates.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/kql-templates.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/trace/references/kql-templates.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/search-traces.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/trace/references/search-traces.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/search-traces.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/trace/references/search-traces.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/tracing-insights-api.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/trace/references/tracing-insights-api.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/trace/references/tracing-insights-api.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/trace/references/tracing-insights-api.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/trace/trace.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/trace/trace.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/trace/trace.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/trace/trace.md diff --git a/plugins/azure/skills/microsoft-foundry/foundry-agent/troubleshoot/troubleshoot.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/troubleshoot/troubleshoot.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/foundry-agent/troubleshoot/troubleshoot.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/troubleshoot/troubleshoot.md diff --git a/plugins/azure/skills/microsoft-foundry/models/deploy-model/SKILL.md b/plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/SKILL.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/models/deploy-model/SKILL.md rename to plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/SKILL.md diff --git a/plugins/azure/skills/microsoft-foundry/models/deploy-model/TEST_PROMPTS.md b/plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/TEST_PROMPTS.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/models/deploy-model/TEST_PROMPTS.md rename to plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/TEST_PROMPTS.md diff --git a/plugins/azure/skills/microsoft-foundry/models/deploy-model/capacity/SKILL.md b/plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/capacity/SKILL.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/models/deploy-model/capacity/SKILL.md rename to plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/capacity/SKILL.md diff --git a/plugins/azure/skills/microsoft-foundry/models/deploy-model/capacity/scripts/discover_and_rank.ps1 b/plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/capacity/scripts/discover_and_rank.ps1 similarity index 100% rename from plugins/azure/skills/microsoft-foundry/models/deploy-model/capacity/scripts/discover_and_rank.ps1 rename to plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/capacity/scripts/discover_and_rank.ps1 diff --git a/plugins/azure/skills/microsoft-foundry/models/deploy-model/capacity/scripts/discover_and_rank.sh b/plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/capacity/scripts/discover_and_rank.sh similarity index 100% rename from plugins/azure/skills/microsoft-foundry/models/deploy-model/capacity/scripts/discover_and_rank.sh rename to plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/capacity/scripts/discover_and_rank.sh diff --git a/plugins/azure/skills/microsoft-foundry/models/deploy-model/capacity/scripts/query_capacity.ps1 b/plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/capacity/scripts/query_capacity.ps1 similarity index 100% rename from plugins/azure/skills/microsoft-foundry/models/deploy-model/capacity/scripts/query_capacity.ps1 rename to plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/capacity/scripts/query_capacity.ps1 diff --git a/plugins/azure/skills/microsoft-foundry/models/deploy-model/capacity/scripts/query_capacity.sh b/plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/capacity/scripts/query_capacity.sh similarity index 100% rename from plugins/azure/skills/microsoft-foundry/models/deploy-model/capacity/scripts/query_capacity.sh rename to plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/capacity/scripts/query_capacity.sh diff --git a/plugins/azure/skills/microsoft-foundry/models/deploy-model/customize/EXAMPLES.md b/plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/customize/EXAMPLES.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/models/deploy-model/customize/EXAMPLES.md rename to plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/customize/EXAMPLES.md diff --git a/plugins/azure/skills/microsoft-foundry/models/deploy-model/customize/SKILL.md b/plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/customize/SKILL.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/models/deploy-model/customize/SKILL.md rename to plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/customize/SKILL.md diff --git a/plugins/azure/skills/microsoft-foundry/models/deploy-model/customize/references/customize-guides.md b/plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/customize/references/customize-guides.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/models/deploy-model/customize/references/customize-guides.md rename to plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/customize/references/customize-guides.md diff --git a/plugins/azure/skills/microsoft-foundry/models/deploy-model/customize/references/customize-workflow.md b/plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/customize/references/customize-workflow.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/models/deploy-model/customize/references/customize-workflow.md rename to plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/customize/references/customize-workflow.md diff --git a/plugins/azure/skills/microsoft-foundry/models/deploy-model/preset/EXAMPLES.md b/plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/preset/EXAMPLES.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/models/deploy-model/preset/EXAMPLES.md rename to plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/preset/EXAMPLES.md diff --git a/plugins/azure/skills/microsoft-foundry/models/deploy-model/preset/SKILL.md b/plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/preset/SKILL.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/models/deploy-model/preset/SKILL.md rename to plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/preset/SKILL.md diff --git a/plugins/azure/skills/microsoft-foundry/models/deploy-model/preset/references/preset-workflow.md b/plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/preset/references/preset-workflow.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/models/deploy-model/preset/references/preset-workflow.md rename to plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/preset/references/preset-workflow.md diff --git a/plugins/azure/skills/microsoft-foundry/models/deploy-model/preset/references/workflow.md b/plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/preset/references/workflow.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/models/deploy-model/preset/references/workflow.md rename to plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/preset/references/workflow.md diff --git a/plugins/azure/skills/microsoft-foundry/models/deploy-model/scripts/generate_deployment_url.ps1 b/plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/scripts/generate_deployment_url.ps1 similarity index 100% rename from plugins/azure/skills/microsoft-foundry/models/deploy-model/scripts/generate_deployment_url.ps1 rename to plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/scripts/generate_deployment_url.ps1 diff --git a/plugins/azure/skills/microsoft-foundry/models/deploy-model/scripts/generate_deployment_url.sh b/plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/scripts/generate_deployment_url.sh similarity index 100% rename from plugins/azure/skills/microsoft-foundry/models/deploy-model/scripts/generate_deployment_url.sh rename to plugins/azure-skills/skills/microsoft-foundry/models/deploy-model/scripts/generate_deployment_url.sh diff --git a/plugins/azure/skills/microsoft-foundry/project/connections.md b/plugins/azure-skills/skills/microsoft-foundry/project/connections.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/project/connections.md rename to plugins/azure-skills/skills/microsoft-foundry/project/connections.md diff --git a/plugins/azure/skills/microsoft-foundry/project/create/create-foundry-project.md b/plugins/azure-skills/skills/microsoft-foundry/project/create/create-foundry-project.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/project/create/create-foundry-project.md rename to plugins/azure-skills/skills/microsoft-foundry/project/create/create-foundry-project.md diff --git a/plugins/azure/skills/microsoft-foundry/quota/quota.md b/plugins/azure-skills/skills/microsoft-foundry/quota/quota.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/quota/quota.md rename to plugins/azure-skills/skills/microsoft-foundry/quota/quota.md diff --git a/plugins/azure/skills/microsoft-foundry/quota/references/capacity-planning.md b/plugins/azure-skills/skills/microsoft-foundry/quota/references/capacity-planning.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/quota/references/capacity-planning.md rename to plugins/azure-skills/skills/microsoft-foundry/quota/references/capacity-planning.md diff --git a/plugins/azure/skills/microsoft-foundry/quota/references/error-resolution.md b/plugins/azure-skills/skills/microsoft-foundry/quota/references/error-resolution.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/quota/references/error-resolution.md rename to plugins/azure-skills/skills/microsoft-foundry/quota/references/error-resolution.md diff --git a/plugins/azure/skills/microsoft-foundry/quota/references/optimization.md b/plugins/azure-skills/skills/microsoft-foundry/quota/references/optimization.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/quota/references/optimization.md rename to plugins/azure-skills/skills/microsoft-foundry/quota/references/optimization.md diff --git a/plugins/azure/skills/microsoft-foundry/quota/references/ptu-guide.md b/plugins/azure-skills/skills/microsoft-foundry/quota/references/ptu-guide.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/quota/references/ptu-guide.md rename to plugins/azure-skills/skills/microsoft-foundry/quota/references/ptu-guide.md diff --git a/plugins/azure/skills/microsoft-foundry/quota/references/troubleshooting.md b/plugins/azure-skills/skills/microsoft-foundry/quota/references/troubleshooting.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/quota/references/troubleshooting.md rename to plugins/azure-skills/skills/microsoft-foundry/quota/references/troubleshooting.md diff --git a/plugins/azure/skills/microsoft-foundry/quota/references/workflows.md b/plugins/azure-skills/skills/microsoft-foundry/quota/references/workflows.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/quota/references/workflows.md rename to plugins/azure-skills/skills/microsoft-foundry/quota/references/workflows.md diff --git a/plugins/azure/skills/microsoft-foundry/rbac/rbac.md b/plugins/azure-skills/skills/microsoft-foundry/rbac/rbac.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/rbac/rbac.md rename to plugins/azure-skills/skills/microsoft-foundry/rbac/rbac.md diff --git a/plugins/azure/skills/microsoft-foundry/references/agent-metadata-contract.md b/plugins/azure-skills/skills/microsoft-foundry/references/agent-metadata-contract.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/references/agent-metadata-contract.md rename to plugins/azure-skills/skills/microsoft-foundry/references/agent-metadata-contract.md diff --git a/plugins/azure/skills/microsoft-foundry/references/auth-best-practices.md b/plugins/azure-skills/skills/microsoft-foundry/references/auth-best-practices.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/references/auth-best-practices.md rename to plugins/azure-skills/skills/microsoft-foundry/references/auth-best-practices.md diff --git a/plugins/azure/skills/microsoft-foundry/references/sdk/foundry-sdk-py.md b/plugins/azure-skills/skills/microsoft-foundry/references/sdk/foundry-sdk-py.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/references/sdk/foundry-sdk-py.md rename to plugins/azure-skills/skills/microsoft-foundry/references/sdk/foundry-sdk-py.md diff --git a/plugins/azure/skills/microsoft-foundry/references/standard-agent-setup.md b/plugins/azure-skills/skills/microsoft-foundry/references/standard-agent-setup.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/references/standard-agent-setup.md rename to plugins/azure-skills/skills/microsoft-foundry/references/standard-agent-setup.md diff --git a/plugins/azure/skills/microsoft-foundry/resource/create/create-foundry-resource.md b/plugins/azure-skills/skills/microsoft-foundry/resource/create/create-foundry-resource.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/resource/create/create-foundry-resource.md rename to plugins/azure-skills/skills/microsoft-foundry/resource/create/create-foundry-resource.md diff --git a/plugins/azure/skills/microsoft-foundry/resource/create/references/patterns.md b/plugins/azure-skills/skills/microsoft-foundry/resource/create/references/patterns.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/resource/create/references/patterns.md rename to plugins/azure-skills/skills/microsoft-foundry/resource/create/references/patterns.md diff --git a/plugins/azure/skills/microsoft-foundry/resource/create/references/troubleshooting.md b/plugins/azure-skills/skills/microsoft-foundry/resource/create/references/troubleshooting.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/resource/create/references/troubleshooting.md rename to plugins/azure-skills/skills/microsoft-foundry/resource/create/references/troubleshooting.md diff --git a/plugins/azure/skills/microsoft-foundry/resource/create/references/workflows.md b/plugins/azure-skills/skills/microsoft-foundry/resource/create/references/workflows.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/resource/create/references/workflows.md rename to plugins/azure-skills/skills/microsoft-foundry/resource/create/references/workflows.md diff --git a/plugins/azure/skills/microsoft-foundry/resource/private-network/private-network.md b/plugins/azure-skills/skills/microsoft-foundry/resource/private-network/private-network.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/resource/private-network/private-network.md rename to plugins/azure-skills/skills/microsoft-foundry/resource/private-network/private-network.md diff --git a/plugins/azure/skills/microsoft-foundry/resource/private-network/references/custom-template-adaptation.md b/plugins/azure-skills/skills/microsoft-foundry/resource/private-network/references/custom-template-adaptation.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/resource/private-network/references/custom-template-adaptation.md rename to plugins/azure-skills/skills/microsoft-foundry/resource/private-network/references/custom-template-adaptation.md diff --git a/plugins/azure/skills/microsoft-foundry/resource/private-network/references/deploy.md b/plugins/azure-skills/skills/microsoft-foundry/resource/private-network/references/deploy.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/resource/private-network/references/deploy.md rename to plugins/azure-skills/skills/microsoft-foundry/resource/private-network/references/deploy.md diff --git a/plugins/azure/skills/microsoft-foundry/resource/private-network/references/end-to-end-test.md b/plugins/azure-skills/skills/microsoft-foundry/resource/private-network/references/end-to-end-test.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/resource/private-network/references/end-to-end-test.md rename to plugins/azure-skills/skills/microsoft-foundry/resource/private-network/references/end-to-end-test.md diff --git a/plugins/azure/skills/microsoft-foundry/resource/private-network/references/intake.md b/plugins/azure-skills/skills/microsoft-foundry/resource/private-network/references/intake.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/resource/private-network/references/intake.md rename to plugins/azure-skills/skills/microsoft-foundry/resource/private-network/references/intake.md diff --git a/plugins/azure/skills/microsoft-foundry/resource/private-network/references/post-deployment-validation.md b/plugins/azure-skills/skills/microsoft-foundry/resource/private-network/references/post-deployment-validation.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/resource/private-network/references/post-deployment-validation.md rename to plugins/azure-skills/skills/microsoft-foundry/resource/private-network/references/post-deployment-validation.md diff --git a/plugins/azure/skills/microsoft-foundry/resource/private-network/references/scaffold.md b/plugins/azure-skills/skills/microsoft-foundry/resource/private-network/references/scaffold.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/resource/private-network/references/scaffold.md rename to plugins/azure-skills/skills/microsoft-foundry/resource/private-network/references/scaffold.md diff --git a/plugins/azure/skills/microsoft-foundry/resource/private-network/references/template-index.md b/plugins/azure-skills/skills/microsoft-foundry/resource/private-network/references/template-index.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/resource/private-network/references/template-index.md rename to plugins/azure-skills/skills/microsoft-foundry/resource/private-network/references/template-index.md diff --git a/plugins/azure/skills/microsoft-foundry/resource/private-network/references/vpn-dns-setup.bicep b/plugins/azure-skills/skills/microsoft-foundry/resource/private-network/references/vpn-dns-setup.bicep similarity index 100% rename from plugins/azure/skills/microsoft-foundry/resource/private-network/references/vpn-dns-setup.bicep rename to plugins/azure-skills/skills/microsoft-foundry/resource/private-network/references/vpn-dns-setup.bicep diff --git a/plugins/azure/skills/microsoft-foundry/resource/private-network/references/vpn-dns-setup.md b/plugins/azure-skills/skills/microsoft-foundry/resource/private-network/references/vpn-dns-setup.md similarity index 100% rename from plugins/azure/skills/microsoft-foundry/resource/private-network/references/vpn-dns-setup.md rename to plugins/azure-skills/skills/microsoft-foundry/resource/private-network/references/vpn-dns-setup.md diff --git a/plugins/azure/skills/microsoft-foundry/version.json b/plugins/azure-skills/skills/microsoft-foundry/version.json similarity index 100% rename from plugins/azure/skills/microsoft-foundry/version.json rename to plugins/azure-skills/skills/microsoft-foundry/version.json diff --git a/plugins/azure/skills/python-appservice-deploy/SKILL.md b/plugins/azure-skills/skills/python-appservice-deploy/SKILL.md similarity index 100% rename from plugins/azure/skills/python-appservice-deploy/SKILL.md rename to plugins/azure-skills/skills/python-appservice-deploy/SKILL.md diff --git a/plugins/azure/skills/python-appservice-deploy/references/create-app.md b/plugins/azure-skills/skills/python-appservice-deploy/references/create-app.md similarity index 100% rename from plugins/azure/skills/python-appservice-deploy/references/create-app.md rename to plugins/azure-skills/skills/python-appservice-deploy/references/create-app.md diff --git a/plugins/azure/skills/python-appservice-deploy/references/deploy-azcli.md b/plugins/azure-skills/skills/python-appservice-deploy/references/deploy-azcli.md similarity index 100% rename from plugins/azure/skills/python-appservice-deploy/references/deploy-azcli.md rename to plugins/azure-skills/skills/python-appservice-deploy/references/deploy-azcli.md diff --git a/plugins/azure/skills/python-appservice-deploy/references/deploy-azd.md b/plugins/azure-skills/skills/python-appservice-deploy/references/deploy-azd.md similarity index 100% rename from plugins/azure/skills/python-appservice-deploy/references/deploy-azd.md rename to plugins/azure-skills/skills/python-appservice-deploy/references/deploy-azd.md diff --git a/plugins/azure/skills/python-appservice-deploy/references/detect.md b/plugins/azure-skills/skills/python-appservice-deploy/references/detect.md similarity index 100% rename from plugins/azure/skills/python-appservice-deploy/references/detect.md rename to plugins/azure-skills/skills/python-appservice-deploy/references/detect.md diff --git a/plugins/azure/skills/python-appservice-deploy/references/errors.md b/plugins/azure-skills/skills/python-appservice-deploy/references/errors.md similarity index 100% rename from plugins/azure/skills/python-appservice-deploy/references/errors.md rename to plugins/azure-skills/skills/python-appservice-deploy/references/errors.md diff --git a/plugins/azure/skills/python-appservice-deploy/references/post-deploy-message.md b/plugins/azure-skills/skills/python-appservice-deploy/references/post-deploy-message.md similarity index 100% rename from plugins/azure/skills/python-appservice-deploy/references/post-deploy-message.md rename to plugins/azure-skills/skills/python-appservice-deploy/references/post-deploy-message.md diff --git a/plugins/azure/skills/python-appservice-deploy/references/startup-commands.md b/plugins/azure-skills/skills/python-appservice-deploy/references/startup-commands.md similarity index 100% rename from plugins/azure/skills/python-appservice-deploy/references/startup-commands.md rename to plugins/azure-skills/skills/python-appservice-deploy/references/startup-commands.md diff --git a/plugins/azure/skills/python-appservice-deploy/references/transient-retry.md b/plugins/azure-skills/skills/python-appservice-deploy/references/transient-retry.md similarity index 100% rename from plugins/azure/skills/python-appservice-deploy/references/transient-retry.md rename to plugins/azure-skills/skills/python-appservice-deploy/references/transient-retry.md diff --git a/plugins/azure/skills/python-appservice-deploy/scripts/generate-app-name.ps1 b/plugins/azure-skills/skills/python-appservice-deploy/scripts/generate-app-name.ps1 similarity index 100% rename from plugins/azure/skills/python-appservice-deploy/scripts/generate-app-name.ps1 rename to plugins/azure-skills/skills/python-appservice-deploy/scripts/generate-app-name.ps1 diff --git a/plugins/azure/skills/python-appservice-deploy/scripts/generate-app-name.sh b/plugins/azure-skills/skills/python-appservice-deploy/scripts/generate-app-name.sh similarity index 100% rename from plugins/azure/skills/python-appservice-deploy/scripts/generate-app-name.sh rename to plugins/azure-skills/skills/python-appservice-deploy/scripts/generate-app-name.sh diff --git a/plugins/azure/skills/python-appservice-deploy/scripts/retry-az-create.ps1 b/plugins/azure-skills/skills/python-appservice-deploy/scripts/retry-az-create.ps1 similarity index 100% rename from plugins/azure/skills/python-appservice-deploy/scripts/retry-az-create.ps1 rename to plugins/azure-skills/skills/python-appservice-deploy/scripts/retry-az-create.ps1 diff --git a/plugins/azure/skills/python-appservice-deploy/scripts/retry-az-create.sh b/plugins/azure-skills/skills/python-appservice-deploy/scripts/retry-az-create.sh similarity index 100% rename from plugins/azure/skills/python-appservice-deploy/scripts/retry-az-create.sh rename to plugins/azure-skills/skills/python-appservice-deploy/scripts/retry-az-create.sh diff --git a/plugins/azure/skills/python-appservice-deploy/version.json b/plugins/azure-skills/skills/python-appservice-deploy/version.json similarity index 100% rename from plugins/azure/skills/python-appservice-deploy/version.json rename to plugins/azure-skills/skills/python-appservice-deploy/version.json diff --git a/plugins/azure/version.json b/plugins/azure-skills/version.json similarity index 100% rename from plugins/azure/version.json rename to plugins/azure-skills/version.json From aa88a7a8d1b5ce5ad50afacde15db146271860a7 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Wed, 15 Jul 2026 09:05:02 -0700 Subject: [PATCH 09/53] update plan --- plan.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/plan.md b/plan.md index cf5aa511d..918a8cda4 100644 --- a/plan.md +++ b/plan.md @@ -22,4 +22,8 @@ ## Documentation - Update vally-eval skill to reference the new file structure -- \ No newline at end of file +- + +## Nuances + +azure plugin is named "azure" but the directory is named "azure-skills". Awesome Copilot repo encodes that information so we cannot simply change that. We need to patch the script to tell them to look for the files at azure-skills when the user refers to "azure" plugin. https://github.com/github/awesome-copilot/blob/30472ecf0fe34cc561df958c08501ecc5ca80ea4/.github/plugin/marketplace.json#L121-L143 \ No newline at end of file From 5849f9b668d1c714cf4c7a497b68f22d8738b0bf Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Wed, 15 Jul 2026 10:20:15 -0700 Subject: [PATCH 10/53] plugin output dirname override --- gulpfile.ts | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/gulpfile.ts b/gulpfile.ts index cb0488872..ca299a2fd 100644 --- a/gulpfile.ts +++ b/gulpfile.ts @@ -12,6 +12,16 @@ const TOP_LEVEL_SKILL_RE = /^skills[\\/][^\\/]+[\\/]SKILL\.md$/; // Matches plugin.json in the .plugin/, .cursor-plugin/, and .claude-plugin/ directories. const PLUGIN_JSON_RE = /^\.(?:plugin|cursor-plugin|claude-plugin)[\\/]plugin\.json$/; +/** + * By default the directory of the plugin in the build output should be the exact name of the plugin. + * However, "azure" plugin has been published with "azure-skills" and external marketplaces that references our plugin may depend on it. + * For example, https://github.com/github/awesome-copilot/blob/30472ecf0fe34cc561df958c08501ecc5ca80ea4/.github/plugin/marketplace.json#L142 + * If a plugin has a mapped directory name here, its build output will be written under the mapped directory name. + */ +const pluginDirnameMap = new Map([ + ["azure", "azure-skills"] +]); + /** * Stamps each top-level skill's SKILL.md with a per-skill NBGV version. * Matches files like `skills//SKILL.md` (but not nested skills) and @@ -115,14 +125,15 @@ function getPluginNames(): string[] { function buildPlugin(plugin: string): Promise { return new Promise((resolve, reject) => { const pluginSourceDir = path.join("plugins", plugin); - const pluginOutputDir = path.join("output", plugin); + const pluginDirnameOverride = pluginDirnameMap.get(plugin); + const pluginOutputDir = path.join("output", pluginDirnameOverride ?? plugin); const pipeline = src( [ `${pluginSourceDir}/**/*`, `!${pluginSourceDir}/**/version.json`, `!${pluginSourceDir}/CHANGELOG.md`, - `!${pluginSourceDir}/changelog-*.md`, + `!${pluginSourceDir}/changelog-*.md`, // legacy changelog ], { dot: true, encoding: false, base: pluginSourceDir } ) @@ -175,7 +186,6 @@ function generateChangelog(plugin: string): void { .map((entry) => entry.name) .sort((a, b) => b.localeCompare(a)); - let firstLegacyVersion: string | undefined; let firstLegacyVersionParts: | { major: number; minor: number; patch: number } | undefined; @@ -186,7 +196,6 @@ function generateChangelog(plugin: string): void { ); const firstVersionMatch = firstLegacyContent.match(/\b(\d+)\.(\d+)\.(\d+)\b/); if (firstVersionMatch) { - firstLegacyVersion = `${firstVersionMatch[1]}.${firstVersionMatch[2]}.${firstVersionMatch[3]}`; firstLegacyVersionParts = { major: Number(firstVersionMatch[1]), minor: Number(firstVersionMatch[2]), From 684832568ae73746e58d0aaaef7189113842ef80 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Wed, 15 Jul 2026 11:37:49 -0700 Subject: [PATCH 11/53] fix plugin selection in agent-runner fix pr.yml for multi-plugin model --- .github/workflows/pr.yml | 80 ++++++++++++++++++++++-------------- evals/cat/cats/eval.yaml | 39 ++++++++++++++++++ plan.md | 9 +--- tests/skills.json | 82 ++++++++++++++++++++++--------------- tests/utils/agent-runner.ts | 34 +++++++++------ 5 files changed, 162 insertions(+), 82 deletions(-) create mode 100644 evals/cat/cats/eval.yaml diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 398d50069..16c0546ec 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -212,7 +212,7 @@ jobs: uses: tj-actions/changed-files@22103cc46bda19c2b464ffe86db46df6922fd323 # v47.0.5 with: files: | - plugin/skills/*/SKILL.md + plugins/*/skills/*/SKILL.md .github/skills/*/SKILL.md - name: Check all changed plugin skill files @@ -220,7 +220,7 @@ jobs: uses: tj-actions/changed-files@22103cc46bda19c2b464ffe86db46df6922fd323 # v47.0.5 with: files: | - plugin/skills/** + plugins/*/skills/** .github/skills/** - name: Setup Node.js @@ -256,12 +256,12 @@ jobs: echo "## Skill Validation" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY - # Map changed plugin/skills paths to built output/skills paths so we + # Map changed plugins//skills paths to built output//skills paths so we # validate the version-stamped copies. .github/skills are unchanged. SKILL_FILES="" for file in $CHANGED_FILES; do - if echo "$file" | grep -q '^plugin/skills/'; then - mapped=$(echo "$file" | sed 's|^plugin/skills/|output/skills/|') + if echo "$file" | grep -Eq '^plugins/[^/]+/skills/'; then + mapped=$(echo "$file" | sed -E 's|^plugins/([^/]+)/skills/|output/\1/skills/|') SKILL_FILES="$SKILL_FILES ../$mapped" else SKILL_FILES="$SKILL_FILES ../$file" @@ -290,15 +290,33 @@ jobs: const fs = require('fs'); const path = require('path'); - // Get all skill directories from the built output - const skillsDir = 'output/skills'; - const skillDirs = fs.readdirSync(skillsDir) - .filter(f => fs.statSync(path.join(skillsDir, f)).isDirectory()) - .sort(); + // Get all skill directories from output//skills/ + const outputDir = "output"; + const pluginDirs = fs.readdirSync(outputDir) + .filter(f => fs.statSync(path.join(outputDir, f)).isDirectory()); + + const pluginSkillDirPathsMap = pluginDirs.reduce((acc, pluginDir) => { + const pluginSkillsDir = path.join(outputDir, pluginDir, "skills"); + if (!fs.existsSync(pluginSkillsDir) || !fs.statSync(pluginSkillsDir).isDirectory()) { + acc[pluginDir] = []; + return acc; + } + + acc[pluginDir] = fs.readdirSync(pluginSkillsDir) + .filter(f => fs.statSync(path.join(pluginSkillsDir, f)).isDirectory()) + .map(skillDir => path.join(pluginSkillsDir, skillDir)); + return acc; + }, {}); + + const skillDirs = Object.values(pluginSkillDirPathsMap) + .flat() + .map(skillPath => path.basename(skillPath)) + .sort(); // Read skills.json const skillsJson = JSON.parse(fs.readFileSync('tests/skills.json', 'utf8')); - const jsonSkills = [...skillsJson.skills].sort(); + const jsonPlugins = [...skillsJson.plugins].sort(); + const jsonSkills = jsonPlugins.map(p => p.skills).flat().sort(); let hasError = false; @@ -306,38 +324,40 @@ jobs: const skillDirsStr = JSON.stringify(skillDirs); const jsonSkillsStr = JSON.stringify(jsonSkills); if (skillDirsStr !== jsonSkillsStr) { - console.log(); - console.log("skills in skills.json doesn't match available skills in output/skills/"); - hasError = true; + console.log(); + console.log("skills in skills.json doesn't match available skills in output//skills/"); + hasError = true; } // 2. Integration test schedule coverages all skills // Only consider the active cron schedules from .github/workflows/integration-tests.yml const activeCronSchedules = [ - '0 5 * * 2-6', - '0 8 * * 2-6', - '0 12 * * 2-6', + '0 5 * * 2-6', + '0 8 * * 2-6', + '0 12 * * 2-6', ]; let scheduledSkills = []; - activeCronSchedules.forEach(cron => { - const value = skillsJson.integrationTestSchedule[cron]; + jsonPlugins.forEach(p => { + activeCronSchedules.forEach(cron => { + const value = p.integrationTestSchedule[cron]; if (value) { - value.split(',').forEach(s => scheduledSkills.push(s)); + value.split(',').forEach(s => scheduledSkills.push(s)); } + }); }); scheduledSkills = scheduledSkills.sort(); const scheduledSkillsStr = JSON.stringify(scheduledSkills); if (skillDirsStr !== scheduledSkillsStr) { - console.log("skillDirs", JSON.stringify(skillDirs)); - console.log("scheduledSkills", JSON.stringify(scheduledSkills)); - console.log("integrationTestSchedule in skills.json doesn't match available skills in output/skills/"); - hasError = true; + console.log("skillDirs", JSON.stringify(skillDirs)); + console.log("scheduledSkills", JSON.stringify(scheduledSkills)); + console.log("integrationTestSchedule in skills.json doesn't match available skills in output//skills/"); + hasError = true; } if (hasError) { - core.setFailed('tests/skills.json validation failed'); + core.setFailed('tests/skills.json validation failed'); } - name: Skip message @@ -362,7 +382,7 @@ jobs: uses: tj-actions/changed-files@22103cc46bda19c2b464ffe86db46df6922fd323 # v47.0.5 with: files: | - plugin/skills/**/*.md + plugins/*/skills/**/*.md - name: Setup Node.js if: steps.changed-markdown.outputs.any_changed == 'true' @@ -393,13 +413,13 @@ jobs: VALIDATION_FAILED=0 # Validate built plugin skill output so version-stamped files are checked - echo "Validating references in ../output/skills" - if OUTPUT=$(npm run references -- --skills-dir ../output/skills 2>&1); then + echo "Validating references in ../output//skills" + if OUTPUT=$(npm run references -- --plugins-dir ../output 2>&1); then echo "$OUTPUT" - echo "✅ output/skills references are valid" >> $GITHUB_STEP_SUMMARY + echo "✅ output//skills references are valid" >> $GITHUB_STEP_SUMMARY else echo "$OUTPUT" - echo "❌ output/skills contains broken or escaped markdown references" >> $GITHUB_STEP_SUMMARY + echo "❌ output//skills contains broken or escaped markdown references" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "\`\`\`" >> $GITHUB_STEP_SUMMARY echo "$OUTPUT" >> $GITHUB_STEP_SUMMARY diff --git a/evals/cat/cats/eval.yaml b/evals/cat/cats/eval.yaml new file mode 100644 index 000000000..c75acde75 --- /dev/null +++ b/evals/cat/cats/eval.yaml @@ -0,0 +1,39 @@ +name: cats-integration-eval +description: | + Integration evaluation for cats skill. Use for multi-plugin testing + +tags: + type: integration + skill: cats + +defaults: + runs: 1 + timeout: "10m" + executor: integration-test-agent-runner + model: claude-sonnet-4.6 + +scoring: + threshold: 0.8 + +stimuli: + - name: "says meow" + prompt: "What's the largest cat species on planet Earth?" + tags: + type: integration + tier: smoke + cost: llm + area: routing + requiredSkills: + - cats + graders: + - type: skill-invocation + config: + required: + - cats + - type: output-contains + config: + substring: "meow" + - type: output-not-matches + config: + pattern: "(?i)fatal error|unhandled exception|stack trace" + - type: completed diff --git a/plan.md b/plan.md index 918a8cda4..930bd297e 100644 --- a/plan.md +++ b/plan.md @@ -2,28 +2,23 @@ ## Build -- Update build script to support specifying plugin to build, build all by default. -- Update build script to read from new location of plugin files. - Update pr.yml workflow to read plugin files from the new locations. - Update publish-to-marketplace.yml workflow to read from the new location of the azure plugin. However, keep the logic as is. The downstream marketplace is not ready for hosting multi-plugin yet. ## Tests -- Update util code in tests/ to know which plugin to test. The plugin to test will be passed as an additional input and only one plugin will be tested at each time. - Update util code in tests/ to locate skill files at the new locations. - Update the vally commands in eval.yml to lint every plugin in its step. ## Scripts - Update scripts in scripts/ to support specifying which plugin to deal with + - references: remove --skills-dir option, add --plugins-dir option - Update scripts in scripts/ to work on new location of plugin files - + - references: check references for each plugin in --plugins-dir option ## Documentation - Update vally-eval skill to reference the new file structure -- ## Nuances - -azure plugin is named "azure" but the directory is named "azure-skills". Awesome Copilot repo encodes that information so we cannot simply change that. We need to patch the script to tell them to look for the files at azure-skills when the user refers to "azure" plugin. https://github.com/github/awesome-copilot/blob/30472ecf0fe34cc561df958c08501ecc5ca80ea4/.github/plugin/marketplace.json#L121-L143 \ No newline at end of file diff --git a/tests/skills.json b/tests/skills.json index 4f4beac69..d7f75fd4a 100644 --- a/tests/skills.json +++ b/tests/skills.json @@ -1,35 +1,51 @@ { - "skills": [ - "airunway-aks-setup", - "appinsights-instrumentation", - "azure-ai", - "azure-aigateway", - "azure-cloud-migrate", - "azure-compliance", - "azure-compute", - "azure-cost", - "azure-deploy", - "azure-diagnostics", - "azure-enterprise-infra-planner", - "azure-kubernetes", - "azure-kusto", - "azure-messaging", - "azure-prepare", - "azure-quotas", - "azure-reliability", - "azure-resource-lookup", - "azure-resource-visualizer", - "azure-storage", - "azure-upgrade", - "azure-validate", - "entra-agent-id", - "entra-app-registration", - "microsoft-foundry", - "python-appservice-deploy" - ], - "integrationTestSchedule": { - "0 5 * * 2-6": "microsoft-foundry", - "0 8 * * 2-6": "azure-deploy", - "0 12 * * 2-6": "airunway-aks-setup,appinsights-instrumentation,azure-ai,azure-aigateway,azure-cloud-migrate,azure-compliance,azure-compute,azure-cost,azure-diagnostics,azure-enterprise-infra-planner,azure-kubernetes,azure-kusto,azure-messaging,azure-prepare,azure-quotas,azure-resource-lookup,azure-resource-visualizer,azure-storage,azure-upgrade,azure-validate,entra-agent-id,entra-app-registration,azure-reliability,python-appservice-deploy" - } + "plugins": [ + { + "name": "azure", + "dirname": "azure-skills", + "skills": [ + "airunway-aks-setup", + "appinsights-instrumentation", + "azure-ai", + "azure-aigateway", + "azure-cloud-migrate", + "azure-compliance", + "azure-compute", + "azure-cost", + "azure-deploy", + "azure-diagnostics", + "azure-enterprise-infra-planner", + "azure-kubernetes", + "azure-kusto", + "azure-messaging", + "azure-prepare", + "azure-quotas", + "azure-reliability", + "azure-resource-lookup", + "azure-resource-visualizer", + "azure-storage", + "azure-upgrade", + "azure-validate", + "entra-agent-id", + "entra-app-registration", + "microsoft-foundry", + "python-appservice-deploy" + ], + "integrationTestSchedule": { + "0 5 * * 2-6": "microsoft-foundry", + "0 8 * * 2-6": "azure-deploy", + "0 12 * * 2-6": "airunway-aks-setup,appinsights-instrumentation,azure-ai,azure-aigateway,azure-cloud-migrate,azure-compliance,azure-compute,azure-cost,azure-diagnostics,azure-enterprise-infra-planner,azure-kubernetes,azure-kusto,azure-messaging,azure-prepare,azure-quotas,azure-resource-lookup,azure-resource-visualizer,azure-storage,azure-upgrade,azure-validate,entra-agent-id,entra-app-registration,azure-reliability,python-appservice-deploy" + } + }, + { + "name": "cat", + "dirname": "cat", + "skills": [ + "cats" + ], + "integrationTestSchedule": { + "0 12 * * 2-6": "cats" + } + } + ] } \ No newline at end of file diff --git a/tests/utils/agent-runner.ts b/tests/utils/agent-runner.ts index 4949d54e1..b6a713fc9 100644 --- a/tests/utils/agent-runner.ts +++ b/tests/utils/agent-runner.ts @@ -28,6 +28,16 @@ export { getAllAssistantMessages } from "./evaluate.ts"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); +/** + * By default the directory of the plugin in the build output should be the exact name of the plugin. + * However, "azure" plugin has been published with "azure-skills" and external marketplaces that references our plugin may depend on it. + * For example, https://github.com/github/awesome-copilot/blob/30472ecf0fe34cc561df958c08501ecc5ca80ea4/.github/plugin/marketplace.json#L142 + * If a plugin has a mapped directory name here, its build output will be written under the mapped directory name. + */ +const pluginDirnameMap = new Map([ + ["azure", "azure-skills"] +]); + /** * Resolve the bundled Copilot CLI entry point. * @@ -208,7 +218,6 @@ export interface AgentRunConfig { setup?: (workspace: string) => Promise; env?: Record; model?: string; - plugins?: string[]; prompt: string; shouldEarlyTerminate?: (metadata: AgentMetadata) => boolean; nonInteractive?: boolean; @@ -908,19 +917,20 @@ export function useAgentRunner(agentRunnerConfig: AgentRunnerConfig) { }) as CopilotClient; entry.client = client; - let plugins; - // backward compatibility override - if (!runConfig.plugins) { - plugins = ["azure"]; - } else { - plugins = runConfig.plugins; - } - const skillDirectories = plugins.map(plugin => { - return path.resolve(__dirname, `../../output/${plugin}/skills`) + // The plugins to include are inferred by the requiredSkills. + // We include a plugin if and only if there is at least one required skill from it. + const plugins = new Set(); + runConfig.requiredSkills?.forEach(skillRef => { + plugins.add(skillRef.plugin); + }); + const pluginsList = [...plugins.values()]; + const skillDirectories = pluginsList.map(plugin => { + const pluginDirname = pluginDirnameMap.get(plugin) ?? plugin; + return path.resolve(__dirname, `../../output/${pluginDirname}/skills`) }); let disabledSkills: SkillRef[] | undefined; - const skillRefs = plugins.map(plugin => listSkills(plugin)).flat(); + const skillRefs = pluginsList.map(plugin => listSkills(plugin)).flat(); if (runConfig.includeSkills) { if (runConfig.includeSkills.some((includeSkillRef) => !skillRefs.some(ref => ref.name === includeSkillRef.name))) { const invalidSkills = runConfig.includeSkills.filter((includeSkillRef) => !skillRefs.some(ref => ref.name === includeSkillRef.name)); @@ -933,7 +943,7 @@ export function useAgentRunner(agentRunnerConfig: AgentRunnerConfig) { // Copilot CLI effectively randomly truncates skills after exceeding the char count budget. // We emulate Copilot CLI's behavior by preserving the required skills and randomly disable the rest of the skills. if (runConfig.requiredSkills) { - disabledSkills = (await truncateSkills(plugins, runConfig.requiredSkills, DEFAULT_SKILL_CHAR_BUDGET)); + disabledSkills = (await truncateSkills(pluginsList, runConfig.requiredSkills, DEFAULT_SKILL_CHAR_BUDGET)); } } const noSkills = process.env.NO_SKILLS === "true"; From 5d66b34a7d3898cd6bad6c0a87df45d722dac6f6 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Wed, 15 Jul 2026 11:41:55 -0700 Subject: [PATCH 12/53] fix eval.yml --- .github/workflows/eval.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/eval.yml b/.github/workflows/eval.yml index f97cc4301..063fc2ad1 100644 --- a/.github/workflows/eval.yml +++ b/.github/workflows/eval.yml @@ -4,7 +4,7 @@ on: pull_request: paths: - "evals/**" - - "plugin/skills/**" + - "plugins/*/skills/**" - ".vally.yaml" workflow_dispatch: inputs: @@ -54,7 +54,7 @@ jobs: npm run vally validate-stimulus - name: Lint skill and eval specs - run: npx --yes @microsoft/vally-cli@^0.7.0 lint plugin/skills/ --eval-spec evals/ --strict --grader-plugin ./tests/vally/vally-graders.ts + run: npx --yes @microsoft/vally-cli@^0.7.0 lint plugins/ --eval-spec evals/ --strict --grader-plugin ./tests/vally/vally-graders.ts - name: Determine suite if: github.event_name != 'pull_request' From 2913ab2db6cb3d5072d721aa33852be84a31f42c Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Wed, 15 Jul 2026 13:23:02 -0700 Subject: [PATCH 13/53] fix pr-plugin-version-check.yml --- .github/workflows/pr-plugin-version-check.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pr-plugin-version-check.yml b/.github/workflows/pr-plugin-version-check.yml index c61ac5f72..86ca48788 100644 --- a/.github/workflows/pr-plugin-version-check.yml +++ b/.github/workflows/pr-plugin-version-check.yml @@ -4,9 +4,9 @@ on: pull_request: branches: [main] paths: - - "plugin/.plugin/plugin.json" - - "plugin/.claude-plugin/plugin.json" - - "plugin/.cursor-plugin/plugin.json" + - "plugins/*/.plugin/plugin.json" + - "plugins/*/.claude-plugin/plugin.json" + - "plugins/*/.cursor-plugin/plugin.json" permissions: contents: read From 80abf3194b6b017f18ab002bac91243b6be28afa Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Wed, 15 Jul 2026 14:03:00 -0700 Subject: [PATCH 14/53] fix test-all-skills.yml fix sync-to-azure-mcp.yml fix publish-to-marketplace.yml --- .github/workflows/publish-to-marketplace.yml | 77 +++++++++++++------- .github/workflows/sync-to-azure-mcp.yml | 17 ++++- .github/workflows/test-all-skills.yml | 4 +- 3 files changed, 66 insertions(+), 32 deletions(-) diff --git a/.github/workflows/publish-to-marketplace.yml b/.github/workflows/publish-to-marketplace.yml index f207396b0..d2bd5484c 100644 --- a/.github/workflows/publish-to-marketplace.yml +++ b/.github/workflows/publish-to-marketplace.yml @@ -59,17 +59,23 @@ jobs: # 4. Sync files from source to target (mirror: add new, update existing, remove stale) - name: Sync files run: | - SOURCE_DIR="source-repo/output/" - TARGET_DIR="target-repo/.github/plugins/azure-skills/" + SOURCE_ROOT="source-repo/output" + TARGET_ROOT="target-repo/.github/plugins" - # Ensure target directory exists - mkdir -p "$TARGET_DIR" + # Scan immediate child directories under source-repo/output and sync each child + # to target-repo/.github/plugins//. + find "$SOURCE_ROOT" -mindepth 1 -maxdepth 1 -type d | while IFS= read -r child_dir; do + child_name=$(basename "$child_dir") + target_dir="$TARGET_ROOT/$child_name/" - # Use rsync to mirror source into target: - # --archive preserve permissions, timestamps, etc. - # --delete remove files in target that are no longer in source - # --verbose list changes - rsync --archive --delete --verbose "$SOURCE_DIR" "$TARGET_DIR" + mkdir -p "$target_dir" + + # Use rsync to mirror each child directory into its corresponding target directory: + # --archive preserve permissions, timestamps, etc. + # --delete remove files in target that are no longer in source child dir + # --verbose list changes + rsync --archive --delete --verbose "$child_dir/" "$target_dir" + done # 5. Commit changes and create a PR - name: Commit and push changes @@ -155,30 +161,45 @@ jobs: # 4. Sync files from source to target (mirror: add new, update existing, remove stale) - name: Sync files run: | - SOURCE_DIR="source-repo/output/" - TARGET_DIR="target-repo/.github/plugins/azure-skills/" + SOURCE_ROOT="source-repo/output" + TARGET_ROOT="target-repo/.github/plugins" - # Ensure target directory exists - mkdir -p "$TARGET_DIR" + # Scan immediate child directories under source-repo/output and sync each child + # to target-repo/.github/plugins//. + find "$SOURCE_ROOT" -mindepth 1 -maxdepth 1 -type d | while IFS= read -r child_dir; do + child_name=$(basename "$child_dir") + target_dir="$TARGET_ROOT/$child_name/" - # Use rsync to mirror source into target: - # --archive preserve permissions, timestamps, etc. - # --delete remove files in target that are no longer in source - # --verbose list changes - rsync --archive --delete --verbose "$SOURCE_DIR" "$TARGET_DIR" + mkdir -p "$target_dir" - # 5. Copy plugin.json, .mcp.json, .claude-plugin/plugin.json, skills/, hooks/, and gemini-extension.json to the repo root - - name: Copy plugin files to repo root + # Use rsync to mirror each child directory into its corresponding target directory: + # --archive preserve permissions, timestamps, etc. + # --delete remove files in target that are no longer in source child dir + # --verbose list changes + rsync --archive --delete --verbose "$child_dir/" "$target_dir" + done + + # 5. Copy azure plugin to the repo root + # The way some agent client installs the azure plugin from 3rd party marketplace requires us to replicate it at the repo root. + # The azure plugin is added to the following 3rd party marketplaces. + # - claude-plugins-official: https://github.com/anthropics/claude-plugins-official/blob/main/.claude-plugin/marketplace.json#L429 + # - awesome-copilot: https://github.com/github/awesome-copilot/blob/30472ecf0fe34cc561df958c08501ecc5ca80ea4/.github/plugin/marketplace.json#L121 + # When Claude Code installs from claude-plugins-official, since the entry only configured the azure-skills repo in it, + # Claude Code will look for the .claude-plugin/plugin.json in the azure-skills repo to discover the plugin files. + # The relative paths for skills, mcpServers, and hooks are relative to the plugin root and in this case the plugin root is the repo root, + # which is different from the .github/plugins/azure-skills plugin root when installing it directly from the azure-skills marketplace. + # We workaround this difference by replicating the plugin files so the agent clients can still find them. + - name: Copy azure plugin files to repo root run: | - cp "source-repo/output/.plugin/plugin.json" "target-repo/plugin.json" - cp "source-repo/output/.mcp.json" "target-repo/.mcp.json" + cp "source-repo/output/azure-skills/.plugin/plugin.json" "target-repo/plugin.json" + cp "source-repo/output/azure-skills/.mcp.json" "target-repo/.mcp.json" mkdir -p "target-repo/.claude-plugin/" - cp "source-repo/output/.claude-plugin/plugin.json" "target-repo/.claude-plugin/plugin.json" + cp "source-repo/output/azure-skills/.claude-plugin/plugin.json" "target-repo/.claude-plugin/plugin.json" mkdir -p "target-repo/skills/" - rsync --archive --delete --verbose "source-repo/output/skills/" "target-repo/skills/" + rsync --archive --delete --verbose "source-repo/output/azure-skills/skills/" "target-repo/skills/" mkdir -p "target-repo/hooks/" - rsync --archive --delete --verbose "source-repo/output/hooks/" "target-repo/hooks/" - cp "source-repo/output/gemini-extension.json" "target-repo/gemini-extension.json" + rsync --archive --delete --verbose "source-repo/output/azure-skills/hooks/" "target-repo/hooks/" + cp "source-repo/output/azure-skills/gemini-extension.json" "target-repo/gemini-extension.json" # Clean up stale copilot-hooks.json from repo root (previously copied there, now lives under hooks/) rm -f "target-repo/copilot-hooks.json" @@ -191,7 +212,7 @@ jobs: TARGET_DIRS=("target-repo/.github/plugins/azure-skills/" "target-repo/skills/" "target-repo/hooks/" "target-repo/plugin.json" "target-repo/.mcp.json" "target-repo/.claude-plugin/plugin.json" "target-repo/gemini-extension.json") for target in "${TARGET_DIRS[@]}"; do if [ -e "$target" ]; then - if matches=$(grep -rli --include='*.md' --include='*.json' --exclude='CHANGELOG.md' 'https://github.com/microsoft/github-copilot-for-azure' "$target"); then + if matches=$(grep -rli --include='*.md' --include='*.json' --exclude='CHANGELOG.md' --exclude='changelog-*.md' 'https://github.com/microsoft/github-copilot-for-azure' "$target"); then echo "$matches" | while IFS= read -r file; do sed -i 's|https://github.com/microsoft/GitHub-Copilot-for-Azure|https://github.com/microsoft/azure-skills|g' "$file" sed -i 's|https://github.com/microsoft/github-copilot-for-azure|https://github.com/microsoft/azure-skills|g' "$file" @@ -232,4 +253,4 @@ jobs: --base "main" \ --head "$BRANCH_NAME" \ --title "Sync plugin files from GitHub-Copilot-for-Azure (run ${{ github.run_id }})" \ - --body "Automated sync of \`plugin/\` from [GitHub-Copilot-for-Azure](${{ github.server_url }}/${{ github.repository }}) at commit \`${{ github.sha }}\`." + --body "Automated sync of \`plugins/\` from [GitHub-Copilot-for-Azure](${{ github.server_url }}/${{ github.repository }}) at commit \`${{ github.sha }}\`." diff --git a/.github/workflows/sync-to-azure-mcp.yml b/.github/workflows/sync-to-azure-mcp.yml index 178ef1e52..e7c4d31ae 100644 --- a/.github/workflows/sync-to-azure-mcp.yml +++ b/.github/workflows/sync-to-azure-mcp.yml @@ -36,9 +36,22 @@ jobs: working-directory: source-repo/scripts run: npm ci --ignore-scripts - - name: Generate JSON files + - name: Generate allowlist JSON files working-directory: source-repo/scripts - run: npm run generateMcpAllowlists -- ../plugin/skills ${{ github.workspace }} + run: | + PLUGIN_PATHS=() + for plugin_dir in ../plugins/*; do + if [ -d "$plugin_dir" ]; then + PLUGIN_PATHS+=("$plugin_dir") + fi + done + + if [ "${#PLUGIN_PATHS[@]}" -eq 0 ]; then + echo "No plugin directories found under ../plugins" + exit 1 + fi + + npm run generateMcpAllowlists -- "${PLUGIN_PATHS[@]}" "${{ github.workspace }}" # 3. Generate a short-lived token from the GitHub App for microsoft/mcp - name: Generate token for microsoft/mcp diff --git a/.github/workflows/test-all-skills.yml b/.github/workflows/test-all-skills.yml index 6a92aa6dd..52b399a08 100644 --- a/.github/workflows/test-all-skills.yml +++ b/.github/workflows/test-all-skills.yml @@ -22,12 +22,12 @@ on: - main paths: - "tests/**" - - "plugin/skills/**" + - "plugins/*/skills/**" - ".github/workflows/test-*.yml" pull_request: paths: - "tests/**" - - "plugin/skills/**" + - "plugins/*/skills/**" concurrency: group: ${{ github.workflow }}-${{ github.ref }} From fdf0032e7db78d8c494f18d6d7569af233bf5eb4 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Wed, 15 Jul 2026 14:03:28 -0700 Subject: [PATCH 15/53] test scripts and notes --- detected-workflow-todos.txt | 81 +++++++++++++++++++++++++++++++++++++ test.js | 70 ++++++++++++++++++++++++++++++++ test.sh | 61 ++++++++++++++++++++++++++++ 3 files changed, 212 insertions(+) create mode 100644 detected-workflow-todos.txt create mode 100644 test.js create mode 100755 test.sh diff --git a/detected-workflow-todos.txt b/detected-workflow-todos.txt new file mode 100644 index 000000000..dd6e79242 --- /dev/null +++ b/detected-workflow-todos.txt @@ -0,0 +1,81 @@ +Old source plugin paths (plugin/...) + +eval.yml:7 uses plugin/skills/** in on.pull_request.paths + +eval.yml:53 lints plugin/skills/ + +microsoft-foundry-e2e-eval.yml:55 removes plugin/skills/microsoft-foundry + +microsoft-foundry-e2e-eval.yml:56 restores plugin/skills/microsoft-foundry + +microsoft-foundry-e2e-eval.yml:58 log text mentions plugin/skills/microsoft-foundry + +microsoft-foundry-e2e-eval.yml:60 runs git status on plugin/skills/microsoft-foundry + +pr-plugin-version-check.yml:7 watches plugin/.plugin/plugin.json + +pr-plugin-version-check.yml:8 watches plugin/.claude-plugin/plugin.json + +pr-plugin-version-check.yml:9 watches plugin/.cursor-plugin/plugin.json + +pr.yml:215 watches plugin/skills/*/SKILL.md + +pr.yml:223 watches plugin/skills/** + +pr.yml:263 checks for ^plugin/skills/ + +pr.yml:264 rewrites plugin/skills/ to old output path + +pr.yml:365 watches plugin/skills/**/*.md + +sync-to-azure-mcp.yml:41 passes ../plugin/skills to generateMcpAllowlists + +test-all-skills.yml:25 watches plugin/skills/** on push + +test-all-skills.yml:30 watches plugin/skills/** on pull_request + +Old build output paths (output/... at repo root) + +microsoft-foundry-e2e-eval.yml:138 sets skills_dir="output/skills" + +pr.yml:264 maps to output/skills/ + +pr.yml:294 sets const skillsDir = 'output/skills'; + +pr.yml:396 logs ../output/skills + +pr.yml:397 validates ../output/skills + +publish-to-marketplace.yml:62 sets SOURCE_DIR="source-repo/output/" + +publish-to-marketplace.yml:158 sets SOURCE_DIR="source-repo/output/" + +publish-to-marketplace.yml:173 copies source-repo/output/.plugin/plugin.json + +publish-to-marketplace.yml:174 copies source-repo/output/.mcp.json + +publish-to-marketplace.yml:176 copies source-repo/output/.claude-plugin/plugin.json + +publish-to-marketplace.yml:178 syncs source-repo/output/skills/ + +publish-to-marketplace.yml:180 syncs source-repo/output/hooks/ + +publish-to-marketplace.yml:181 copies source-repo/output/gemini-extension.json + +Comment or message text that still mentions the old layout + +pr.yml:259 comment mentions plugin/skills and output/skills + +pr.yml:310 log text mentions output/skills/ + +pr.yml:335 log text mentions output/skills/ + +publish-to-marketplace.yml:24 comment mentions build stamping into output + +publish-to-marketplace.yml:106 PR body says sync of plugin/ + +publish-to-marketplace.yml:120 comment mentions build stamping into output + +publish-to-marketplace.yml:170 comment describes copying from old output layout + +publish-to-marketplace.yml:235 PR body says sync of plugin/ \ No newline at end of file diff --git a/test.js b/test.js new file mode 100644 index 000000000..bb0b4b03a --- /dev/null +++ b/test.js @@ -0,0 +1,70 @@ +// pr.yml test (validate CI test schedule in skills.json) +// const fs = require('fs'); +// const path = require('path'); + +// // Get all skill directories from output//skills/ +// const outputDir = "output"; +// const pluginDirs = fs.readdirSync(outputDir) +// .filter(f => fs.statSync(path.join(outputDir, f)).isDirectory()); + +// const pluginSkillDirPathsMap = pluginDirs.reduce((acc, pluginDir) => { +// const pluginSkillsDir = path.join(outputDir, pluginDir, "skills"); +// if (!fs.existsSync(pluginSkillsDir) || !fs.statSync(pluginSkillsDir).isDirectory()) { +// acc[pluginDir] = []; +// return acc; +// } + +// acc[pluginDir] = fs.readdirSync(pluginSkillsDir) +// .filter(f => fs.statSync(path.join(pluginSkillsDir, f)).isDirectory()) +// .map(skillDir => path.join(pluginSkillsDir, skillDir)); +// return acc; +// }, {}); + +// const skillDirs = Object.values(pluginSkillDirPathsMap) +// .flat() +// .map(skillPath => path.basename(skillPath)) +// .sort(); + +// // Read skills.json +// const skillsJson = JSON.parse(fs.readFileSync('tests/skills.json', 'utf8')); +// const jsonPlugins = [...skillsJson.plugins].sort(); +// const jsonSkills = jsonPlugins.map(p => p.skills).flat().sort(); + +// let hasError = false; + +// // 1. skills.json enumerates all skills +// const skillDirsStr = JSON.stringify(skillDirs); +// const jsonSkillsStr = JSON.stringify(jsonSkills); +// if (skillDirsStr !== jsonSkillsStr) { +// console.log(); +// console.log("skills in skills.json doesn't match available skills in output/skills/"); +// hasError = true; +// } + +// // 2. Integration test schedule coverages all skills +// // Only consider the active cron schedules from .github/workflows/integration-tests.yml +// const activeCronSchedules = [ +// '0 5 * * 2-6', +// '0 8 * * 2-6', +// '0 12 * * 2-6', +// ]; +// let scheduledSkills = []; +// jsonPlugins.forEach(p => { +// activeCronSchedules.forEach(cron => { +// const value = p.integrationTestSchedule[cron]; +// if (value) { +// value.split(',').forEach(s => scheduledSkills.push(s)); +// } +// }); +// }); + +// scheduledSkills = scheduledSkills.sort(); + +// const scheduledSkillsStr = JSON.stringify(scheduledSkills); +// if (skillDirsStr !== scheduledSkillsStr) { +// console.log("skillDirs", JSON.stringify(skillDirs)); +// console.log("scheduledSkills", JSON.stringify(scheduledSkills)); +// console.log("integrationTestSchedule in skills.json doesn't match available skills in output/skills/"); +// hasError = true; +// } + diff --git a/test.sh b/test.sh new file mode 100755 index 000000000..afaab9a78 --- /dev/null +++ b/test.sh @@ -0,0 +1,61 @@ +# Test 1 +# CHANGED_FILES="plugins/cat/skills/cats/SKILL.md plugins/azure-skills/skills/azure-ai/SKILL.md" +# SKILL_FILES="" +# for file in $CHANGED_FILES; do +# if echo "$file" | grep -Eq '^plugins/[^/]+/skills/'; then +# mapped=$(echo "$file" | sed -E 's|^plugins/([^/]+)/skills/|output/\1/skills/|') +# SKILL_FILES="$SKILL_FILES ../$mapped" +# else +# SKILL_FILES="$SKILL_FILES ../$file" +# fi +# done + +# echo $SKILL_FILES + +# Test 2 +# PLUGIN_PATHS=() +# for plugin_dir in ./plugins/*; do +# if [ -d "$plugin_dir" ]; then +# PLUGIN_PATHS+=("$plugin_dir") +# fi +# done + +# if [ "${#PLUGIN_PATHS[@]}" -eq 0 ]; then +# echo "No plugin directories found under ./plugins" +# exit 1 +# fi + +# echo "${PLUGIN_PATHS[@]}" + +# Test 3 +# SOURCE_ROOT="./output" +# TARGET_ROOT="./.github/plugins" + +# # Scan immediate child directories under source-repo/output and sync each child +# # to target-repo/.github/plugins//. +# find "$SOURCE_ROOT" -mindepth 1 -maxdepth 1 -type d | while IFS= read -r child_dir; do +# child_name=$(basename "$child_dir") +# target_dir="$TARGET_ROOT/$child_name/" + +# mkdir -p "$target_dir" + +# # Use rsync to mirror each child directory into its corresponding target directory: +# # --archive preserve permissions, timestamps, etc. +# # --delete remove files in target that are no longer in source child dir +# # --verbose list changes +# rsync --archive --delete --verbose "$child_dir/" "$target_dir" +# done + +# Test 4 +# TARGET_DIRS=("./plugins") +# for target in "${TARGET_DIRS[@]}"; do +# if [ -e "$target" ]; then +# if matches=$(grep -rli --include='*.md' --include='*.json' --exclude='CHANGELOG.md' --exclude='changelog-*.md' 'https://github.com/microsoft/github-copilot-for-azure' "$target"); then +# echo "matches" $matches +# echo "$matches" | while IFS= read -r file; do +# sed -i 's|https://github.com/microsoft/GitHub-Copilot-for-Azure|https://github.com/microsoft/azure-skills|g' "$file" +# sed -i 's|https://github.com/microsoft/github-copilot-for-azure|https://github.com/microsoft/azure-skills|g' "$file" +# done +# fi +# fi +# done \ No newline at end of file From f1cc4d0252d53266874bbcce4eae1bb320f950a6 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Wed, 15 Jul 2026 15:22:47 -0700 Subject: [PATCH 16/53] llm generated script todo --- detected-script-todos.txt | 86 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 detected-script-todos.txt diff --git a/detected-script-todos.txt b/detected-script-todos.txt new file mode 100644 index 000000000..755b78c2d --- /dev/null +++ b/detected-script-todos.txt @@ -0,0 +1,86 @@ +Detected script TODOs for old path assumptions +Date: 2026-07-15 +Scope scanned: scripts/** (focused on scripts/src and scripts/src/**/*.test.ts) + +Target of this report +- Find places still assuming old layout roots: plugin/**/* and output/** +- These likely need migration to the current layout roots: plugins/azure-skills/** and output/azure-skills/** + +Production script locations + +1) scripts/src/check-plugin-version-pr.ts +- Line 15: "plugin/.plugin/plugin.json" +- Line 16: "plugin/.claude-plugin/plugin.json" +- Line 17: "plugin/.cursor-plugin/plugin.json" +- Why flagged: hard-coded old source root "plugin/". + +2) scripts/src/update-plugin-version.ts +- Line 21: "../../plugin/.claude-plugin/plugin.json" +- Line 22: "../../plugin/.cursor-plugin/plugin.json" +- Line 23: "../../plugin/.plugin/plugin.json" +- Why flagged: hard-coded old source root "plugin/". + +3) scripts/src/shared/skill-helper.ts +- Line 103: path.resolve(__dirname, "../../../plugin/skills") +- Line 135: const skillsDir = path.resolve(__dirname, "../../../plugin/skills"); +- Why flagged: runtime skill discovery/load uses old source root "plugin/skills". +- Note: comments also reference old path at lines 5 and 97. + +4) scripts/src/references/cli.ts +- Line 40: let SKILLS_DIR = resolve(REPO_ROOT, "plugin", "skills"); +- Why flagged: default skills dir points at old source root. + +5) scripts/src/tokens/commands/types.ts +- Line 125: DEFAULT_SCAN_DIRS includes "plugin/skills" +- Line 142: DEFAULT_LIMITS overrides includes "plugin/README.md" +- Why flagged: default token scan config assumes old source root/files. + +6) scripts/src/verify-build-output-versions.ts +- Line 74: default output dir is "../../output" +- Why flagged: old build output root assumption (now appears namespaced under output/azure-skills). + +7) scripts/src/dashboard/collectors/frontmatter.ts +- Line 121: resolve(options.cwd, "output", "skills") +- Why flagged: assumes old built skills path under output/skills. +- Note: comments also reference old paths at lines 118-119. + +8) scripts/src/tokens/cli.ts +- Line 46: help text says default scope includes "plugin/skills" +- Why flagged: user-facing docs in CLI still describe old source root. + +Test locations (also need updates if source layout is changed) + +9) scripts/src/__tests__/update-plugin-version.test.ts +- Lines 30, 55, 93, 132, 170, 186, 205, 229, 256: join(TEST_DIR, "plugin", ".claude-plugin", ...) +- Lines 31, 56, 94, 133, 187, 206, 230, 257: join(TEST_DIR, "plugin", ".plugin", ...) +- Why flagged: test fixtures/assertions use old "plugin/" root. + +10) scripts/src/dashboard/__tests__/collectors/frontmatter.test.ts +- Lines 28, 36, 73, 97, 120, 142, 171, 245: "plugin/skills/..." +- Why flagged: mocked report paths assert old source root. + +11) scripts/src/dashboard/__tests__/collectors/references.test.ts +- Lines 50, 64, 73: "plugin/skills/..." +- Why flagged: mocked/expected paths assert old source root. + +12) scripts/src/tokens/__tests__/cli.test.ts +- Lines 92, 95: "plugin/skills/SKILL.md" +- Why flagged: argument parsing test input still uses old root. + +13) scripts/src/tokens/__tests__/types.test.ts +- Line 199: matchesPattern("plugin/skills/SKILL.md", "SKILL.md") +- Why flagged: path matching assertion uses old root. + +14) scripts/src/tokens/__tests__/utils.test.ts +- Lines 79, 84, 86, 90, 122: "plugin/skills/..." +- Line 117: "plugin/skills/**/SKILL.md" +- Why flagged: token-limit matching fixtures/patterns use old root. + +15) scripts/src/tokens/__tests__/integration/count.integration.test.ts +- Lines 23, 43: join(TEST_DIR, "plugin", "skills", ...) +- Why flagged: integration fixture structure uses old root. + +Potentially unaffected/noise excluded +- scripts/coverage/** (generated) +- scripts/node_modules/** (dependencies) +- scripts/package-lock.json From 2ed47518828ed42d020119552f51803fa648fe22 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Wed, 15 Jul 2026 15:34:30 -0700 Subject: [PATCH 17/53] fix check-plugin-version-pr script --- scripts/src/check-plugin-version-pr.ts | 73 ++++++++++++++++++-------- 1 file changed, 51 insertions(+), 22 deletions(-) diff --git a/scripts/src/check-plugin-version-pr.ts b/scripts/src/check-plugin-version-pr.ts index 8e3041338..131402d61 100755 --- a/scripts/src/check-plugin-version-pr.ts +++ b/scripts/src/check-plugin-version-pr.ts @@ -11,14 +11,35 @@ import * as fs from "node:fs"; import * as path from "node:path"; import { fileURLToPath } from "node:url"; -const PLUGIN_PATHS = [ - "plugin/.plugin/plugin.json", - "plugin/.claude-plugin/plugin.json", - "plugin/.cursor-plugin/plugin.json" +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +const PLUGIN_RELATIVE_PATHS = [ + ".plugin/plugin.json", + ".claude-plugin/plugin.json", + ".cursor-plugin/plugin.json" ] as const; const EXPECTED_VERSION = "0.0.0-placeholder"; +function getPluginDirectoryNames(repoRoot: string): string[] { + const pluginsRoot = path.resolve(repoRoot, "plugins"); + if (!fs.existsSync(pluginsRoot)) { + return []; + } + + return fs + .readdirSync(pluginsRoot, { withFileTypes: true }) + .filter((entry) => entry.isDirectory()) + .map((entry) => entry.name) + .sort(); +} + +function getPluginJsonPaths(repoRoot: string, pluginDirname: string): string[] { + const pluginRoot = path.resolve(repoRoot, "plugins", pluginDirname); + return PLUGIN_RELATIVE_PATHS.map(relativePath => path.resolve(pluginRoot, relativePath)); +} + interface PluginConfig { version: string; [key: string]: unknown; @@ -28,29 +49,37 @@ interface PluginConfig { * Check that all plugin.json files have the placeholder version. */ function checkPluginVersionPlaceholders(): void { - const repoRoot = path.resolve( - path.dirname(fileURLToPath(import.meta.url)), - "../.." - ); + const repoRoot = path.resolve(__dirname, "../.."); + const pluginDirs = getPluginDirectoryNames(repoRoot); let hasErrors = false; - for (const pluginPath of PLUGIN_PATHS) { - const fullPath = path.resolve(repoRoot, pluginPath); + if (pluginDirs.length === 0) { + console.log(" ℹ️ No plugin directories found under plugins/, skipping..."); + } - if (!fs.existsSync(fullPath)) { - console.log(` ℹ️ ${pluginPath} not found, skipping...`); - continue; - } + for (const pluginDir of pluginDirs) { + const pluginJsonPaths = getPluginJsonPaths(repoRoot, pluginDir); + + for (let index = 0; index < pluginJsonPaths.length; index += 1) { + const fullPath = pluginJsonPaths[index]; + const relativePath = PLUGIN_RELATIVE_PATHS[index]; + const displayPath = path.join("plugins", pluginDir, relativePath).replace(/\\/g, "/"); + + if (!fs.existsSync(fullPath)) { + console.log(` ℹ️ ${displayPath} not found, skipping...`); + continue; + } - const content = fs.readFileSync(fullPath, "utf8"); - const json: PluginConfig = JSON.parse(content); + const content = fs.readFileSync(fullPath, "utf8"); + const json: PluginConfig = JSON.parse(content); - if (json.version === EXPECTED_VERSION) { - console.log(` ✅ ${pluginPath}: version is "${EXPECTED_VERSION}"`); - } else { - console.error(` ❌ ${pluginPath}: expected version "${EXPECTED_VERSION}", found "${json.version}"`); - hasErrors = true; + if (json.version === EXPECTED_VERSION) { + console.log(` ✅ ${displayPath}: version is "${EXPECTED_VERSION}"`); + } else { + console.error(` ❌ ${displayPath}: expected version "${EXPECTED_VERSION}", found "${json.version}"`); + hasErrors = true; + } } } @@ -69,7 +98,7 @@ function main(): void { checkPluginVersionPlaceholders(); } -if (fileURLToPath(import.meta.url) === path.resolve(process.argv[1])) { +if (__filename === path.resolve(process.argv[1])) { main(); } From 37bf8a688e093992330d86a7db8b149584cf4904 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Wed, 15 Jul 2026 15:40:00 -0700 Subject: [PATCH 18/53] remove dead update-plugin-version script --- .../__tests__/update-plugin-version.test.ts | 276 ------------------ scripts/src/update-plugin-version.ts | 101 ------- 2 files changed, 377 deletions(-) delete mode 100644 scripts/src/__tests__/update-plugin-version.test.ts delete mode 100644 scripts/src/update-plugin-version.ts diff --git a/scripts/src/__tests__/update-plugin-version.test.ts b/scripts/src/__tests__/update-plugin-version.test.ts deleted file mode 100644 index c37777cbe..000000000 --- a/scripts/src/__tests__/update-plugin-version.test.ts +++ /dev/null @@ -1,276 +0,0 @@ -/** - * Tests for update-plugin-version.ts - */ - -import { describe, it, expect, beforeEach, afterEach, vi, type MockInstance } from "vitest"; -import { join } from "node:path"; -import { mkdirSync, writeFileSync, rmSync, readFileSync, existsSync } from "node:fs"; - -const TEST_DIR = join(process.cwd(), "__test_fixtures_update_plugin__"); - -// Import the actual function we want to test -import { updatePluginVersion } from "../update-plugin-version.js"; - -describe("updatePluginVersion", () => { - let consoleLogSpy: MockInstance; - let consoleErrorSpy: MockInstance; - - beforeEach(() => { - // Clean up and create test directory - if (existsSync(TEST_DIR)) { - rmSync(TEST_DIR, { recursive: true, force: true }); - } - mkdirSync(TEST_DIR, { recursive: true }); - - // Setup spies - consoleLogSpy = vi.spyOn(console, "log").mockImplementation(() => {}); - consoleErrorSpy = vi.spyOn(console, "error").mockImplementation(() => {}); - - // Create the directory structure that the function expects - mkdirSync(join(TEST_DIR, "plugin", ".claude-plugin"), { recursive: true }); - mkdirSync(join(TEST_DIR, "plugin", ".plugin"), { recursive: true }); - }); - - afterEach(async () => { - // Restore spies - consoleLogSpy.mockRestore(); - consoleErrorSpy.mockRestore(); - - // Small delay to allow file handles to close - await new Promise(resolve => setTimeout(resolve, 10)); - - // Clean up test directory - try { - if (existsSync(TEST_DIR)) { - rmSync(TEST_DIR, { recursive: true, force: true, maxRetries: 3, retryDelay: 100 }); - } - } catch { - // Ignore cleanup errors in tests - } - }); - - describe("successful version updates", () => { - it("updates both plugin.json files with the new version", () => { - // Create test plugin files - const claudePluginPath = join(TEST_DIR, "plugin", ".claude-plugin", "plugin.json"); - const regularPluginPath = join(TEST_DIR, "plugin", ".plugin", "plugin.json"); - - const testPluginFiles = [claudePluginPath, regularPluginPath]; - - const initialConfig = { - version: "1.0.0", - name: "test-plugin", - description: "Test plugin" - }; - - writeFileSync(claudePluginPath, JSON.stringify(initialConfig, null, 2) + "\n"); - writeFileSync(regularPluginPath, JSON.stringify(initialConfig, null, 2) + "\n"); - - // Call the function with custom paths - const result = updatePluginVersion("2.0.0", testPluginFiles); - - // Verify function returned success (no errors) - expect(result).toBe(false); - - // Verify both files were updated - const claudePluginContent = JSON.parse(readFileSync(claudePluginPath, "utf8")); - const regularPluginContent = JSON.parse(readFileSync(regularPluginPath, "utf8")); - - expect(claudePluginContent.version).toBe("2.0.0"); - expect(regularPluginContent.version).toBe("2.0.0"); - - // Verify other properties were preserved - expect(claudePluginContent.name).toBe("test-plugin"); - expect(regularPluginContent.description).toBe("Test plugin"); - - // Verify console output - expect(consoleLogSpy).toHaveBeenCalledWith("Updating plugin files to version: 2.0.0"); - expect(consoleLogSpy).toHaveBeenCalledWith(`✓ Updated ${claudePluginPath} to version 2.0.0`); - expect(consoleLogSpy).toHaveBeenCalledWith(`✓ Updated ${regularPluginPath} to version 2.0.0`); - }); - - it("preserves existing properties while updating version", () => { - const claudePluginPath = join(TEST_DIR, "plugin", ".claude-plugin", "plugin.json"); - const regularPluginPath = join(TEST_DIR, "plugin", ".plugin", "plugin.json"); - - const testPluginFiles = [claudePluginPath, regularPluginPath]; - - const complexConfig = { - version: "1.0.0", - name: "complex-plugin", - description: "A complex plugin with multiple properties", - author: "Test Author", - keywords: ["test", "plugin"], - settings: { - enabled: true, - theme: "dark" - } - }; - - writeFileSync(claudePluginPath, JSON.stringify(complexConfig, null, 2) + "\n"); - writeFileSync(regularPluginPath, JSON.stringify(complexConfig, null, 2) + "\n"); - - const result = updatePluginVersion("3.0.0", testPluginFiles); - - // Verify function returned success (no errors) - expect(result).toBe(false); - - const claudeUpdatedConfig = JSON.parse(readFileSync(claudePluginPath, "utf8")); - const regularUpdatedConfig = JSON.parse(readFileSync(regularPluginPath, "utf8")); - - // Verify version was updated - expect(claudeUpdatedConfig.version).toBe("3.0.0"); - expect(regularUpdatedConfig.version).toBe("3.0.0"); - - // Verify other properties were preserved - expect(claudeUpdatedConfig.name).toBe("complex-plugin"); - expect(claudeUpdatedConfig.keywords).toEqual(["test", "plugin"]); - expect(claudeUpdatedConfig.settings).toEqual({ enabled: true, theme: "dark" }); - }); - - it("formats JSON with proper indentation and trailing newline", () => { - const claudePluginPath = join(TEST_DIR, "plugin", ".claude-plugin", "plugin.json"); - const regularPluginPath = join(TEST_DIR, "plugin", ".plugin", "plugin.json"); - - const testPluginFiles = [claudePluginPath, regularPluginPath]; - const initialConfig = { version: "1.0.0", name: "test" }; - - // Write without proper formatting - writeFileSync(claudePluginPath, JSON.stringify(initialConfig)); - writeFileSync(regularPluginPath, JSON.stringify(initialConfig)); - - const result = updatePluginVersion("2.0.0", testPluginFiles); - - // Verify function returned success (no errors) - expect(result).toBe(false); - - const claudeFileContent = readFileSync(claudePluginPath, "utf8"); - const regularFileContent = readFileSync(regularPluginPath, "utf8"); - - // Check proper formatting (2-space indentation and trailing newline) - const expectedFormat = '{\n "version": "2.0.0",\n "name": "test"\n}\n'; - expect(claudeFileContent).toBe(expectedFormat); - expect(regularFileContent).toBe(expectedFormat); - expect(claudeFileContent.endsWith("\n")).toBe(true); - expect(regularFileContent.endsWith("\n")).toBe(true); - }); - }); - - describe("error handling", () => { - it("handles file not found error and returns true", () => { - const nonExistentFiles = [join(TEST_DIR, "nonexistent1.json"), join(TEST_DIR, "nonexistent2.json")]; - - const result = updatePluginVersion("2.0.0", nonExistentFiles); - - expect(result).toBe(true); - expect(consoleErrorSpy).toHaveBeenCalledWith(`File not found: ${nonExistentFiles[0]}`); - }); - - it("handles invalid JSON content and returns true", () => { - const claudePluginPath = join(TEST_DIR, "plugin", ".claude-plugin", "plugin.json"); - const testPluginFiles = [claudePluginPath]; - - // Create file with invalid JSON - writeFileSync(claudePluginPath, "{ invalid json content"); - - const result = updatePluginVersion("2.0.0", testPluginFiles); - - expect(result).toBe(true); - expect(consoleErrorSpy).toHaveBeenCalledWith( - `Failed to update ${claudePluginPath}:`, - expect.any(String) - ); - }); - - it("stops processing further files after first error", () => { - const claudePluginPath = join(TEST_DIR, "plugin", ".claude-plugin", "plugin.json"); - const regularPluginPath = join(TEST_DIR, "plugin", ".plugin", "plugin.json"); - const testPluginFiles = [claudePluginPath, regularPluginPath]; - - // Create first file with invalid JSON, second file doesn't matter - writeFileSync(claudePluginPath, "{ invalid json }"); - writeFileSync(regularPluginPath, JSON.stringify({ version: "1.0.0" }, null, 2) + "\n"); - - const result = updatePluginVersion("2.0.0", testPluginFiles); - - // Should return true indicating an error occurred - expect(result).toBe(true); - // Should only see error for first file, not attempt second - expect(consoleErrorSpy).toHaveBeenCalledTimes(1); - }); - }); - - describe("version parameter validation", () => { - it("accepts semantic versioning format", () => { - const claudePluginPath = join(TEST_DIR, "plugin", ".claude-plugin", "plugin.json"); - const regularPluginPath = join(TEST_DIR, "plugin", ".plugin", "plugin.json"); - const testPluginFiles = [claudePluginPath, regularPluginPath]; - - const initialConfig = { version: "1.0.0" }; - - const versions = ["1.0.0", "2.1.3", "1.0.0-alpha.1", "1.0.0+build.123"]; - - for (const version of versions) { - writeFileSync(claudePluginPath, JSON.stringify(initialConfig, null, 2) + "\n"); - writeFileSync(regularPluginPath, JSON.stringify(initialConfig, null, 2) + "\n"); - - const result = updatePluginVersion(version, testPluginFiles); - - expect(result).toBe(false); - const claudeUpdatedConfig = JSON.parse(readFileSync(claudePluginPath, "utf8")); - const regularUpdatedConfig = JSON.parse(readFileSync(regularPluginPath, "utf8")); - - expect(claudeUpdatedConfig.version).toBe(version); - expect(regularUpdatedConfig.version).toBe(version); - } - }); - - it("accepts any string as version", () => { - const claudePluginPath = join(TEST_DIR, "plugin", ".claude-plugin", "plugin.json"); - const regularPluginPath = join(TEST_DIR, "plugin", ".plugin", "plugin.json"); - const testPluginFiles = [claudePluginPath, regularPluginPath]; - - const initialConfig = { version: "1.0.0" }; - - writeFileSync(claudePluginPath, JSON.stringify(initialConfig, null, 2) + "\n"); - writeFileSync(regularPluginPath, JSON.stringify(initialConfig, null, 2) + "\n"); - - const result = updatePluginVersion("custom-version-string", testPluginFiles); - - expect(result).toBe(false); - const claudeUpdatedConfig = JSON.parse(readFileSync(claudePluginPath, "utf8")); - const regularUpdatedConfig = JSON.parse(readFileSync(regularPluginPath, "utf8")); - - expect(claudeUpdatedConfig.version).toBe("custom-version-string"); - expect(regularUpdatedConfig.version).toBe("custom-version-string"); - }); - }); - - describe("functionality verification", () => { - it("verifies the exported function from the original module exists", () => { - expect(updatePluginVersion).toBeDefined(); - expect(typeof updatePluginVersion).toBe("function"); - }); - - it("handles edge case of empty existing properties", () => { - const claudePluginPath = join(TEST_DIR, "plugin", ".claude-plugin", "plugin.json"); - const regularPluginPath = join(TEST_DIR, "plugin", ".plugin", "plugin.json"); - const testPluginFiles = [claudePluginPath, regularPluginPath]; - - const minimalConfig = { version: "0.0.1" }; - - writeFileSync(claudePluginPath, JSON.stringify(minimalConfig, null, 2) + "\n"); - writeFileSync(regularPluginPath, JSON.stringify(minimalConfig, null, 2) + "\n"); - - const result = updatePluginVersion("1.0.0", testPluginFiles); - - expect(result).toBe(false); - const claudeUpdatedConfig = JSON.parse(readFileSync(claudePluginPath, "utf8")); - const regularUpdatedConfig = JSON.parse(readFileSync(regularPluginPath, "utf8")); - - expect(claudeUpdatedConfig.version).toBe("1.0.0"); - expect(regularUpdatedConfig.version).toBe("1.0.0"); - expect(Object.keys(claudeUpdatedConfig)).toEqual(["version"]); - }); - }); -}); \ No newline at end of file diff --git a/scripts/src/update-plugin-version.ts b/scripts/src/update-plugin-version.ts deleted file mode 100644 index 6048d2531..000000000 --- a/scripts/src/update-plugin-version.ts +++ /dev/null @@ -1,101 +0,0 @@ -import * as fs from "node:fs"; -import * as path from "node:path"; -import { fileURLToPath } from "node:url"; - -const __dirname = path.dirname(fileURLToPath(import.meta.url)); - -interface PluginConfig { - version: string; - [key: string]: any; -} - -/** - * Updates both plugin.json files with the specified version - * @param version - The new version to set - * @param pluginFiles - Array of paths to plugin.json files (defaults to standard locations) - * @returns true if there was an error, false otherwise - */ -export function updatePluginVersion( - version: string, - pluginFiles: string[] = [ - "../../plugin/.claude-plugin/plugin.json", - "../../plugin/.cursor-plugin/plugin.json", - "../../plugin/.plugin/plugin.json" - ] -): boolean { - console.log(`Updating plugin files to version: ${version}`); - - let hadError = false; - - for (const filePath of pluginFiles) { - let fd: number | undefined; - try { - const fullPath = path.resolve(__dirname, filePath); - - // Open file for reading and writing - fd = fs.openSync(fullPath, "r+"); - - // Read current content - const content: string = fs.readFileSync(fd, "utf8"); - const pluginConfig: PluginConfig = JSON.parse(content); - - // Update version - pluginConfig.version = version; - - // Prepare new content - const newContent: string = JSON.stringify(pluginConfig, null, 2) + "\n"; - - // Truncate and write back with formatted JSON - fs.ftruncateSync(fd, 0); - - // Seek back to the beginning of the file after truncation - fs.writeSync(fd, newContent, 0); - - console.log(`✓ Updated ${filePath} to version ${version}`); - } catch (error: unknown) { - const err = error as NodeJS.ErrnoException; - if (err.code === "ENOENT") { - console.error(`File not found: ${filePath}`); - } else { - console.error(`Failed to update ${filePath}:`, err.message); - } - hadError = true; - break; // Stop processing further files if there's an error - } finally { - // Always close the file descriptor if it was opened - if (fd !== undefined) { - try { - fs.closeSync(fd); - } catch (closeError: unknown) { - const err = closeError as NodeJS.ErrnoException; - console.error(`Failed to close file ${filePath}:`, err.message); - } - } - } - } - - return hadError; -} - -/** - * Main function for CLI execution - */ -function main(): void { - const version: string | undefined = process.argv[2]; - - if (!version) { - console.error("Usage: npx tsx update-plugin-version.ts "); - process.exit(1); - } - - const hadError = updatePluginVersion(version); - if (hadError) { - process.exit(1); - } -} - -// Only run main if this file is executed directly (not imported) -// Convert import.meta.url to file path and compare with resolved argv[1] -if (fileURLToPath(import.meta.url) === path.resolve(process.argv[1])) { - main(); -} \ No newline at end of file From 3c5ec5b268b94e63a9aed678f49449a995bd0f1f Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Thu, 16 Jul 2026 10:04:28 -0700 Subject: [PATCH 19/53] fix copilot cli char budget check script --- scripts/src/copilot-cli-char-budget.ts | 66 +++++++++++++++--------- scripts/src/shared/skill-helper.ts | 71 +++++++++++++++++++++----- tests/utils/agent-runner.ts | 2 +- tests/utils/skill-loader.ts | 16 +++++- 4 files changed, 116 insertions(+), 39 deletions(-) diff --git a/scripts/src/copilot-cli-char-budget.ts b/scripts/src/copilot-cli-char-budget.ts index 72755b1f5..0a15dfd06 100644 --- a/scripts/src/copilot-cli-char-budget.ts +++ b/scripts/src/copilot-cli-char-budget.ts @@ -3,7 +3,7 @@ * See https://github.com/github/copilot-agent-runtime/blob/0e43d66f7570421ba4b27a36a86ea908de188e59/src/skills/skillToolDescription.ts#L30 */ -import { listSkills, loadSkill } from "./shared/skill-helper.js"; +import { listPlugins, listSkills, loadSkill, SkillRef } from "./shared/skill-helper.js"; import { escapeXml } from "./shared/string-helpers.js"; const SKILL_CHAR_BUDGET_ENV = "SKILL_CHAR_BUDGET"; @@ -23,8 +23,8 @@ function getSkillCharBudget() { return DEFAULT_SKILL_CHAR_BUDGET; } -function formatSkillForToolDescription(skillName: string): string { - const skill = loadSkill(skillName); +function formatSkillForToolDescription(skillRef: SkillRef): string { + const skill = loadSkill(skillRef); // azure plugin skills are loaded from "Custom" locations when they are installed via marketplace. // The formatted text may be different but the char count would be similar. @@ -41,22 +41,17 @@ type CheckSkillCharBudgetResult = { actualCharCount: number; }; +type PluginCheckResult = CheckSkillCharBudgetResult & { + plugin: string; +}; + /** - * Checks if the formatted skill description of azure plugin skills can fit in Copilot CLI's skill char budget. + * Checks the char budget for a single plugin's skills. */ -function checkCopilotCliSkillsCharBudget(): CheckSkillCharBudgetResult { - const skills = listSkills(); - const budget = getSkillCharBudget(); - if (skills.length === 0) { - return { - canFitInBudget: true, - budget: budget, - actualCharCount: 0 - } - } +function checkPluginCharBudget(pluginName: string, budget: number): PluginCheckResult { + const skills = listSkills(pluginName); let charCount = 0; - for (const skill of skills) { const skillXml = formatSkillForToolDescription(skill); // +1 for newline between skills @@ -64,20 +59,45 @@ function checkCopilotCliSkillsCharBudget(): CheckSkillCharBudgetResult { } return { + plugin: pluginName, canFitInBudget: charCount <= budget, - budget: budget, - actualCharCount: charCount + budget, + actualCharCount: charCount, + }; +} + +/** + * Checks if the formatted skill description of all plugins' skills can fit in Copilot CLI's skill char budget. + * Iterates over every directory in plugins/ and checks each one independently. + */ +function checkCopilotCliSkillsCharBudget(): Record { + const pluginNames = listPlugins().map((p) => p.name); + const budget = getSkillCharBudget(); + + const result: Record = {}; + if (pluginNames.length === 0) { + return result; } + + for (const pluginName of pluginNames) { + const pluginResult = checkPluginCharBudget(pluginName, budget); + result[pluginName] = pluginResult; + } + + return result; } function main() { const result = checkCopilotCliSkillsCharBudget(); - if (!result.canFitInBudget) { - console.error(`Formatted skill description char count exceeds the Copilot CLI skill char budget. budget: ${result.budget}, actualCharCount: ${result.actualCharCount}`); - process.exitCode = 1; - return; - } else { - console.log(`Formatted skill description char count fits within the Copilot CLI skill char budget. budget: ${result.budget}, actualCharCount: ${result.actualCharCount}`); + for (const pluginName in result) { + const pluginResult = result[pluginName]; + if (!pluginResult.canFitInBudget) { + console.error(`plugin ${pluginName}: formatted skill description char count exceeds the Copilot CLI skill char budget. budget: ${pluginResult.budget}, actualCharCount: ${pluginResult.actualCharCount}`); + process.exitCode = 1; + return; + } else { + console.log(`plugin ${pluginName}: formatted skill description char count fits within the Copilot CLI skill char budget. budget: ${pluginResult.budget}, actualCharCount: ${pluginResult.actualCharCount}`); + } } } diff --git a/scripts/src/shared/skill-helper.ts b/scripts/src/shared/skill-helper.ts index 5674f4153..27a0152bd 100644 --- a/scripts/src/shared/skill-helper.ts +++ b/scripts/src/shared/skill-helper.ts @@ -31,18 +31,29 @@ export interface ParsedSkill { raw: string; } -interface SkillMetadata { +export type SkillMetadata = { + plugin: string; name: string; description: string; [key: string]: unknown; +}; + +export type SkillRef = { + plugin: string; + name: string; } -export interface LoadedSkill { +export type LoadedSkill = { metadata: SkillMetadata; content: string; path: string; filePath: string; -} +}; + +export type Plugin = { + name: string; + skills: SkillRef[]; +}; // ── Parser ─────────────────────────────────────────────────────────────────── @@ -91,6 +102,16 @@ export function parseSkillContent(fileContent: string): ParsedSkill | null { // ── Loaders ────────────────────────────────────────────────────────────────── +/** + * By default the directory of the plugin in the build output should be the exact name of the plugin. + * However, "azure" plugin has been published with "azure-skills" and external marketplaces that references our plugin already depend on it. + * For example, https://github.com/github/awesome-copilot/blob/30472ecf0fe34cc561df958c08501ecc5ca80ea4/.github/plugin/marketplace.json#L142 + * If a plugin has a mapped directory name here, its build output will be written under the mapped directory name. + */ +const pluginDirnameMap = new Map([ + ["azure", "azure-skills"] +]); + /** * Load a skill by name. * @@ -98,27 +119,31 @@ export function parseSkillContent(fileContent: string): ParsedSkill | null { * via `parseSkillContent`. Throws when the file is missing or contains * no valid frontmatter. */ -export function loadSkill(skillName: string): LoadedSkill { +export function loadSkill(skillRef: SkillRef): LoadedSkill { + const pluginDirname = pluginDirnameMap.get(skillRef.plugin) ?? skillRef.plugin; const skillPath = path.join( - path.resolve(__dirname, "../../../plugin/skills"), - skillName + path.resolve(__dirname, "../../../plugins"), + pluginDirname, + "skills", + skillRef.name ); const skillFile = path.join(skillPath, "SKILL.md"); if (!fs.existsSync(skillFile)) { - throw new Error(`SKILL.md not found for skill: ${skillName} at ${skillFile}`); + throw new Error(`SKILL.md not found for skill: ${skillRef} at ${skillFile} in plugin ${skillRef.plugin}`); } const fileContent = fs.readFileSync(skillFile, "utf-8"); const parsed = parseSkillContent(fileContent); if (!parsed) { - throw new Error(`Invalid or missing frontmatter in SKILL.md for skill: ${skillName}`); + throw new Error(`Invalid or missing frontmatter in SKILL.md for skill: ${skillRef}`); } return { metadata: { - name: (parsed.data.name as string) || skillName, + plugin: skillRef.plugin, + name: (parsed.data.name as string) || skillRef.name, description: (parsed.data.description as string) || "", ...parsed.data }, @@ -129,10 +154,12 @@ export function loadSkill(skillName: string): LoadedSkill { } /** - * @returns Names of skills in azure plugin. + * @returns SkillRef objects in a given plugin. */ -export function listSkills(): string[] { - const skillsDir = path.resolve(__dirname, "../../../plugin/skills"); +export function listSkills(plugin: string): SkillRef[] { + const pluginDirname = pluginDirnameMap.get(plugin) ?? plugin; + const skillsDir = path.resolve(__dirname, `../../../output/${pluginDirname}/skills`); + const items = fs.readdirSync(skillsDir, { withFileTypes: true }); return items .filter((item) => item.isDirectory()) @@ -140,5 +167,23 @@ export function listSkills(): string[] { const skillMdPath = path.join(skillsDir, item.name, "SKILL.md"); return fs.existsSync(skillMdPath); }) - .map((item) => item.name); + .map((item) => { + return { + plugin: plugin, + name: item.name + } + }); +} + +export function listPlugins(): Plugin[] { + const pluginsDir = path.resolve(__dirname, "../../../output/"); + const items = fs.readdirSync(pluginsDir, { withFileTypes: true }); + return items + .filter((item) => item.isDirectory()) + .map((item) => { + return { + name: item.name, + skills: listSkills(item.name) + } + }); } \ No newline at end of file diff --git a/tests/utils/agent-runner.ts b/tests/utils/agent-runner.ts index b6a713fc9..2eb2494a5 100644 --- a/tests/utils/agent-runner.ts +++ b/tests/utils/agent-runner.ts @@ -30,7 +30,7 @@ const __dirname = path.dirname(__filename); /** * By default the directory of the plugin in the build output should be the exact name of the plugin. - * However, "azure" plugin has been published with "azure-skills" and external marketplaces that references our plugin may depend on it. + * However, "azure" plugin has been published with "azure-skills" and external marketplaces that references our plugin already depend on it. * For example, https://github.com/github/awesome-copilot/blob/30472ecf0fe34cc561df958c08501ecc5ca80ea4/.github/plugin/marketplace.json#L142 * If a plugin has a mapped directory name here, its build output will be written under the mapped directory name. */ diff --git a/tests/utils/skill-loader.ts b/tests/utils/skill-loader.ts index f540e7181..db038c493 100644 --- a/tests/utils/skill-loader.ts +++ b/tests/utils/skill-loader.ts @@ -37,6 +37,16 @@ export type Plugin = { skills: SkillRef[]; }; +/** + * By default the directory of the plugin in the build output should be the exact name of the plugin. + * However, "azure" plugin has been published with "azure-skills" and external marketplaces that references our plugin already depend on it. + * For example, https://github.com/github/awesome-copilot/blob/30472ecf0fe34cc561df958c08501ecc5ca80ea4/.github/plugin/marketplace.json#L142 + * If a plugin has a mapped directory name here, its build output will be written under the mapped directory name. + */ +const pluginDirnameMap = new Map([ + ["azure", "azure-skills"] +]); + /** * Load a skill by name */ @@ -49,8 +59,9 @@ export async function loadSkill(skillRef: SkillRef): Promise { skillRef.name ); } else { + const pluginDirname = pluginDirnameMap.get(skillRef.plugin) ?? skillRef.plugin; skillPath = path.join( - path.resolve(__dirname, `../../output/${skillRef.plugin}/skills`), + path.resolve(__dirname, `../../output/${pluginDirname}/skills`), skillRef.name ); } @@ -85,7 +96,8 @@ export function listSkills(plugin: string): SkillRef[] { // global.OUTPUT_PATH is only defined in JEST context skillsDir = path.join(global.OUTPUT_PATH, plugin, "skills") } else { - skillsDir = path.resolve(__dirname, `../../output/${plugin}/skills`); + const pluginDirname = pluginDirnameMap.get(plugin) ?? plugin; + skillsDir = path.resolve(__dirname, `../../output/${pluginDirname}/skills`); } const items = fs.readdirSync(skillsDir, { withFileTypes: true }); return items From 27bbc7a0c78a5ded52e929d9399b8578476057d1 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Thu, 16 Jul 2026 10:35:38 -0700 Subject: [PATCH 20/53] use plugin dirname in code --- scripts/src/copilot-cli-char-budget.ts | 2 +- scripts/src/shared/skill-helper.ts | 44 ++++++++++---- tests/azure-cloud-migrate/triggers.test.ts | 2 +- tests/azure-deploy/triggers.test.ts | 2 +- tests/azure-validate/triggers.test.ts | 2 +- .../finetuning/triggers.test.ts | 2 +- .../create/toolbox-paths.unit.test.ts | 2 +- .../foundry-agent/direct-code.unit.test.ts | 2 +- .../eval-datasets/triggers.test.ts | 2 +- .../foundry-agent/observe/triggers.test.ts | 2 +- .../foundry-agent/trace/triggers.test.ts | 2 +- .../models/deploy/capacity/triggers.test.ts | 2 +- .../customize-deployment/triggers.test.ts | 2 +- .../triggers.test.ts | 2 +- .../deploy/deploy-model/triggers.test.ts | 2 +- .../resource/create/integration.test.ts | 14 ++--- .../resource/create/triggers.test.ts | 2 +- tests/microsoft-foundry/triggers.test.ts | 2 +- tests/run-vally-test.ts | 4 +- tests/utils/__tests__/char-budget.test.ts | 6 +- tests/utils/agent-runner.ts | 25 +++----- tests/utils/char-budget.ts | 4 +- tests/utils/skill-loader.ts | 59 +++++++++++-------- tests/vally/vally-executor.ts | 2 +- 24 files changed, 108 insertions(+), 82 deletions(-) diff --git a/scripts/src/copilot-cli-char-budget.ts b/scripts/src/copilot-cli-char-budget.ts index 0a15dfd06..3ef8fba96 100644 --- a/scripts/src/copilot-cli-char-budget.ts +++ b/scripts/src/copilot-cli-char-budget.ts @@ -71,7 +71,7 @@ function checkPluginCharBudget(pluginName: string, budget: number): PluginCheckR * Iterates over every directory in plugins/ and checks each one independently. */ function checkCopilotCliSkillsCharBudget(): Record { - const pluginNames = listPlugins().map((p) => p.name); + const pluginNames = listPlugins().map((p) => p.dirname); const budget = getSkillCharBudget(); const result: Record = {}; diff --git a/scripts/src/shared/skill-helper.ts b/scripts/src/shared/skill-helper.ts index 27a0152bd..54c65ab56 100644 --- a/scripts/src/shared/skill-helper.ts +++ b/scripts/src/shared/skill-helper.ts @@ -32,26 +32,51 @@ export interface ParsedSkill { } export type SkillMetadata = { - plugin: string; + /** + * The directory name containing the plugin files in the shared plugins directory. + */ + pluginDirname: string; name: string; description: string; [key: string]: unknown; }; export type SkillRef = { - plugin: string; + /** + * The directory name containing the plugin files in the shared plugins directory. + */ + pluginDirname: string; name: string; } export type LoadedSkill = { metadata: SkillMetadata; content: string; + + /** + * Absolute path to the skill's directory. + */ path: string; + + /** + * Absolute path to the skill's SKILL.md file. + */ filePath: string; }; export type Plugin = { - name: string; + /** + * The directory name containing the plugin files in the shared plugins directory. + * + * Plugin directory name can be different from from the plugin's name. + * For example, the directory name of "azure" plugin has been "azure-skills". + * Some external marketplaces already depend on it. + * For example, see https://github.com/github/awesome-copilot/blob/30472ecf0fe34cc561df958c08501ecc5ca80ea4/.github/plugin/marketplace.json#L142 + * Given a plugin's directory name, we can easily retrieve its plugin name by reading the plugin.json file. + * Discover a plugin directory name from the plugin name is much harder. + * Therefore we maintain references to plugins by their directory names. + */ + dirname: string; skills: SkillRef[]; }; @@ -120,7 +145,7 @@ const pluginDirnameMap = new Map([ * no valid frontmatter. */ export function loadSkill(skillRef: SkillRef): LoadedSkill { - const pluginDirname = pluginDirnameMap.get(skillRef.plugin) ?? skillRef.plugin; + const pluginDirname = pluginDirnameMap.get(skillRef.pluginDirname) ?? skillRef.pluginDirname; const skillPath = path.join( path.resolve(__dirname, "../../../plugins"), pluginDirname, @@ -130,7 +155,7 @@ export function loadSkill(skillRef: SkillRef): LoadedSkill { const skillFile = path.join(skillPath, "SKILL.md"); if (!fs.existsSync(skillFile)) { - throw new Error(`SKILL.md not found for skill: ${skillRef} at ${skillFile} in plugin ${skillRef.plugin}`); + throw new Error(`SKILL.md not found for skill: ${skillRef} at ${skillFile} in plugin ${skillRef.pluginDirname}`); } const fileContent = fs.readFileSync(skillFile, "utf-8"); @@ -142,7 +167,7 @@ export function loadSkill(skillRef: SkillRef): LoadedSkill { return { metadata: { - plugin: skillRef.plugin, + pluginDirname: skillRef.pluginDirname, name: (parsed.data.name as string) || skillRef.name, description: (parsed.data.description as string) || "", ...parsed.data @@ -156,8 +181,7 @@ export function loadSkill(skillRef: SkillRef): LoadedSkill { /** * @returns SkillRef objects in a given plugin. */ -export function listSkills(plugin: string): SkillRef[] { - const pluginDirname = pluginDirnameMap.get(plugin) ?? plugin; +export function listSkills(pluginDirname: string): SkillRef[] { const skillsDir = path.resolve(__dirname, `../../../output/${pluginDirname}/skills`); const items = fs.readdirSync(skillsDir, { withFileTypes: true }); @@ -169,7 +193,7 @@ export function listSkills(plugin: string): SkillRef[] { }) .map((item) => { return { - plugin: plugin, + pluginDirname: pluginDirname, name: item.name } }); @@ -182,7 +206,7 @@ export function listPlugins(): Plugin[] { .filter((item) => item.isDirectory()) .map((item) => { return { - name: item.name, + dirname: item.name, skills: listSkills(item.name) } }); diff --git a/tests/azure-cloud-migrate/triggers.test.ts b/tests/azure-cloud-migrate/triggers.test.ts index 00a53ce10..5a756d69d 100644 --- a/tests/azure-cloud-migrate/triggers.test.ts +++ b/tests/azure-cloud-migrate/triggers.test.ts @@ -17,7 +17,7 @@ describe(`${SKILL_NAME} - Trigger Tests`, () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; + skill = await loadSkill({ pluginDirname: "azure-skills", name: SKILL_NAME });; triggerMatcher = new TriggerMatcher(skill); }); diff --git a/tests/azure-deploy/triggers.test.ts b/tests/azure-deploy/triggers.test.ts index d5c2ee6a2..37d00a45e 100644 --- a/tests/azure-deploy/triggers.test.ts +++ b/tests/azure-deploy/triggers.test.ts @@ -15,7 +15,7 @@ describe(`${SKILL_NAME} - Trigger Tests`, () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; + skill = await loadSkill({ pluginDirname: "azure-skills", name: SKILL_NAME });; triggerMatcher = new TriggerMatcher(skill); }); diff --git a/tests/azure-validate/triggers.test.ts b/tests/azure-validate/triggers.test.ts index 19a87b9c8..69a3de9d4 100644 --- a/tests/azure-validate/triggers.test.ts +++ b/tests/azure-validate/triggers.test.ts @@ -15,7 +15,7 @@ describe(`${SKILL_NAME} - Trigger Tests`, () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; + skill = await loadSkill({ pluginDirname: "azure-skills", name: SKILL_NAME });; triggerMatcher = new TriggerMatcher(skill); }); diff --git a/tests/microsoft-foundry/finetuning/triggers.test.ts b/tests/microsoft-foundry/finetuning/triggers.test.ts index 964669112..acf1d64ef 100644 --- a/tests/microsoft-foundry/finetuning/triggers.test.ts +++ b/tests/microsoft-foundry/finetuning/triggers.test.ts @@ -15,7 +15,7 @@ describe("finetuning - Trigger Tests", () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; + skill = await loadSkill({ pluginDirname: "azure-skills", name: SKILL_NAME });; triggerMatcher = new TriggerMatcher(skill); }); diff --git a/tests/microsoft-foundry/foundry-agent/create/toolbox-paths.unit.test.ts b/tests/microsoft-foundry/foundry-agent/create/toolbox-paths.unit.test.ts index 9fb6c39c5..9ad9ed161 100644 --- a/tests/microsoft-foundry/foundry-agent/create/toolbox-paths.unit.test.ts +++ b/tests/microsoft-foundry/foundry-agent/create/toolbox-paths.unit.test.ts @@ -10,7 +10,7 @@ import path from "path"; const SKILL_NAME = "microsoft-foundry"; const readSkillFile = (relativePath: string) => - readFile(path.join(OUTPUT_PATH, "azure", "skills", SKILL_NAME, relativePath), "utf-8"); + readFile(path.join(OUTPUT_PATH, "azure-skills", "skills", SKILL_NAME, relativePath), "utf-8"); describe("foundry-agent create toolbox reference paths", () => { test("uses current toolbox sample and docs paths", async () => { diff --git a/tests/microsoft-foundry/foundry-agent/direct-code.unit.test.ts b/tests/microsoft-foundry/foundry-agent/direct-code.unit.test.ts index 6dfc73584..59b3537bc 100644 --- a/tests/microsoft-foundry/foundry-agent/direct-code.unit.test.ts +++ b/tests/microsoft-foundry/foundry-agent/direct-code.unit.test.ts @@ -12,7 +12,7 @@ import path from "path"; const SKILL_NAME = "microsoft-foundry"; const readSkillFile = (relativePath: string) => - readFile(path.join(OUTPUT_PATH, "azure", "skills", SKILL_NAME, relativePath), "utf-8"); + readFile(path.join(OUTPUT_PATH, "azure-skills", "skills", SKILL_NAME, relativePath), "utf-8"); describe("foundry-agent direct-code workflow docs", () => { test("create and deploy workflows prefer azd direct-code deployment", async () => { diff --git a/tests/microsoft-foundry/foundry-agent/eval-datasets/triggers.test.ts b/tests/microsoft-foundry/foundry-agent/eval-datasets/triggers.test.ts index 88f8f5990..8f3c35d88 100644 --- a/tests/microsoft-foundry/foundry-agent/eval-datasets/triggers.test.ts +++ b/tests/microsoft-foundry/foundry-agent/eval-datasets/triggers.test.ts @@ -12,7 +12,7 @@ describe("eval-datasets - Trigger Tests", () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; + skill = await loadSkill({ pluginDirname: "azure-skills", name: SKILL_NAME });; triggerMatcher = new TriggerMatcher(skill); }); diff --git a/tests/microsoft-foundry/foundry-agent/observe/triggers.test.ts b/tests/microsoft-foundry/foundry-agent/observe/triggers.test.ts index 5030312a8..21258bc94 100644 --- a/tests/microsoft-foundry/foundry-agent/observe/triggers.test.ts +++ b/tests/microsoft-foundry/foundry-agent/observe/triggers.test.ts @@ -15,7 +15,7 @@ describe("observe - Trigger Tests", () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; + skill = await loadSkill({ pluginDirname: "azure-skills", name: SKILL_NAME });; triggerMatcher = new TriggerMatcher(skill); }); diff --git a/tests/microsoft-foundry/foundry-agent/trace/triggers.test.ts b/tests/microsoft-foundry/foundry-agent/trace/triggers.test.ts index c9e3c835d..305dbc985 100644 --- a/tests/microsoft-foundry/foundry-agent/trace/triggers.test.ts +++ b/tests/microsoft-foundry/foundry-agent/trace/triggers.test.ts @@ -15,7 +15,7 @@ describe("trace - Trigger Tests", () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; + skill = await loadSkill({ pluginDirname: "azure-skills", name: SKILL_NAME });; triggerMatcher = new TriggerMatcher(skill); }); diff --git a/tests/microsoft-foundry/models/deploy/capacity/triggers.test.ts b/tests/microsoft-foundry/models/deploy/capacity/triggers.test.ts index 7a50c290c..87e8fcab7 100644 --- a/tests/microsoft-foundry/models/deploy/capacity/triggers.test.ts +++ b/tests/microsoft-foundry/models/deploy/capacity/triggers.test.ts @@ -15,7 +15,7 @@ describe("capacity - Trigger Tests", () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; + skill = await loadSkill({ pluginDirname: "azure-skills", name: SKILL_NAME });; triggerMatcher = new TriggerMatcher(skill); }); diff --git a/tests/microsoft-foundry/models/deploy/customize-deployment/triggers.test.ts b/tests/microsoft-foundry/models/deploy/customize-deployment/triggers.test.ts index 831608d58..afb79f0f1 100644 --- a/tests/microsoft-foundry/models/deploy/customize-deployment/triggers.test.ts +++ b/tests/microsoft-foundry/models/deploy/customize-deployment/triggers.test.ts @@ -15,7 +15,7 @@ describe(`${SKILL_NAME} - Trigger Tests`, () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; + skill = await loadSkill({ pluginDirname: "azure-skills", name: SKILL_NAME });; triggerMatcher = new TriggerMatcher(skill); }); diff --git a/tests/microsoft-foundry/models/deploy/deploy-model-optimal-region/triggers.test.ts b/tests/microsoft-foundry/models/deploy/deploy-model-optimal-region/triggers.test.ts index d236c8ecf..fa0a95705 100644 --- a/tests/microsoft-foundry/models/deploy/deploy-model-optimal-region/triggers.test.ts +++ b/tests/microsoft-foundry/models/deploy/deploy-model-optimal-region/triggers.test.ts @@ -15,7 +15,7 @@ describe(`${SKILL_NAME} - Trigger Tests`, () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; + skill = await loadSkill({ pluginDirname: "azure-skills", name: SKILL_NAME });; triggerMatcher = new TriggerMatcher(skill); }); diff --git a/tests/microsoft-foundry/models/deploy/deploy-model/triggers.test.ts b/tests/microsoft-foundry/models/deploy/deploy-model/triggers.test.ts index 75c234ab4..e119df1a2 100644 --- a/tests/microsoft-foundry/models/deploy/deploy-model/triggers.test.ts +++ b/tests/microsoft-foundry/models/deploy/deploy-model/triggers.test.ts @@ -15,7 +15,7 @@ describe(`${SKILL_NAME} - Trigger Tests`, () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; + skill = await loadSkill({ pluginDirname: "azure-skills", name: SKILL_NAME });; triggerMatcher = new TriggerMatcher(skill); }); diff --git a/tests/microsoft-foundry/resource/create/integration.test.ts b/tests/microsoft-foundry/resource/create/integration.test.ts index 57a2d1a7d..00a7f31aa 100644 --- a/tests/microsoft-foundry/resource/create/integration.test.ts +++ b/tests/microsoft-foundry/resource/create/integration.test.ts @@ -12,7 +12,7 @@ describe(`${SKILL_NAME}_resource-create - Integration Tests`, () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; + skill = await loadSkill({ pluginDirname: "azure-skills", name: SKILL_NAME });; }); describe("Skill Loading", () => { @@ -38,7 +38,7 @@ describe(`${SKILL_NAME}_resource-create - Integration Tests`, () => { const mainFilePath = path.join( OUTPUT_PATH, - "azure", + "azure-skills", "skills", "microsoft-foundry/resource/create/create-foundry-resource.md" ); @@ -58,7 +58,7 @@ describe(`${SKILL_NAME}_resource-create - Integration Tests`, () => { const mainFilePath = path.join( OUTPUT_PATH, - "azure", + "azure-skills", "skills", "microsoft-foundry/resource/create/create-foundry-resource.md" ); @@ -78,7 +78,7 @@ describe(`${SKILL_NAME}_resource-create - Integration Tests`, () => { const mainFilePath = path.join( OUTPUT_PATH, - "azure", + "azure-skills", "skills", "microsoft-foundry/resource/create/create-foundry-resource.md" ); @@ -99,7 +99,7 @@ describe(`${SKILL_NAME}_resource-create - Integration Tests`, () => { const mainFilePath = path.join( OUTPUT_PATH, - "azure", + "azure-skills", "skills", "microsoft-foundry/resource/create/create-foundry-resource.md" ); @@ -117,7 +117,7 @@ describe(`${SKILL_NAME}_resource-create - Integration Tests`, () => { const referencesPath = path.join( OUTPUT_PATH, - "azure", + "azure-skills", "skills", "microsoft-foundry/resource/create/references" ); @@ -141,7 +141,7 @@ describe(`${SKILL_NAME}_resource-create - Integration Tests`, () => { const mainFilePath = path.join( OUTPUT_PATH, - "azure", + "azure-skills", "skills", "microsoft-foundry/resource/create/create-foundry-resource.md" ); diff --git a/tests/microsoft-foundry/resource/create/triggers.test.ts b/tests/microsoft-foundry/resource/create/triggers.test.ts index e6e5331de..e0c35f92e 100644 --- a/tests/microsoft-foundry/resource/create/triggers.test.ts +++ b/tests/microsoft-foundry/resource/create/triggers.test.ts @@ -15,7 +15,7 @@ describe("microsoft-foundry:resource/create - Trigger Tests", () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; + skill = await loadSkill({ pluginDirname: "azure-skills", name: SKILL_NAME });; triggerMatcher = new TriggerMatcher(skill); }); diff --git a/tests/microsoft-foundry/triggers.test.ts b/tests/microsoft-foundry/triggers.test.ts index ac9fce7af..2824a516f 100644 --- a/tests/microsoft-foundry/triggers.test.ts +++ b/tests/microsoft-foundry/triggers.test.ts @@ -15,7 +15,7 @@ describe(`${SKILL_NAME} - Trigger Tests`, () => { let skill: LoadedSkill; beforeAll(async () => { - skill = await loadSkill({ plugin: "azure", name: SKILL_NAME });; + skill = await loadSkill({ pluginDirname: "azure-skills", name: SKILL_NAME });; triggerMatcher = new TriggerMatcher(skill); }); diff --git a/tests/run-vally-test.ts b/tests/run-vally-test.ts index 999199b06..e57b574c3 100644 --- a/tests/run-vally-test.ts +++ b/tests/run-vally-test.ts @@ -328,7 +328,7 @@ async function main(): Promise { } const options = parseCliOptions(rawArgs); - const pluginName = options.plugin ?? "azure"; + const pluginDirname = options.plugin ?? "azure-skills"; const passRateThreshold = options.passRate ?? 0.75; // Wrapper-specific args are parsed above; all other args are preserved here. @@ -343,7 +343,7 @@ async function main(): Promise { forwardedArgs.splice(0, 0, "--executor-plugin", path.join(__dirname, "vally", "vally-executor.ts")); forwardedArgs.splice(0, 0, "--grader-plugin", path.join(__dirname, "vally", "vally-graders.ts")); if (options.skill) { - const evalSpecDir = path.join(__dirname, `../evals/${pluginName}/${options.skill}/`); + const evalSpecDir = path.join(__dirname, `../evals/${pluginDirname}/${options.skill}/`); const evalSpecPaths: string[] = []; const allFiles = await fs.readdir(evalSpecDir); for (const file of allFiles) { diff --git a/tests/utils/__tests__/char-budget.test.ts b/tests/utils/__tests__/char-budget.test.ts index e1f446445..42de6afe8 100644 --- a/tests/utils/__tests__/char-budget.test.ts +++ b/tests/utils/__tests__/char-budget.test.ts @@ -46,7 +46,7 @@ describe("truncateSkills", () => { } ); - await expect(truncateSkills(["azure"], [{ plugin: "azure", name: "azure-ai" }, { plugin: "azure", name: "not-a-skill" }], 20000)).rejects.toThrow( + await expect(truncateSkills(["azure-skills"], [{ pluginDirname: "azure-skills", name: "azure-ai" }, { pluginDirname: "azure-skills", name: "not-a-skill" }], 20000)).rejects.toThrow( "Invalid requiredSkills" ); }); @@ -59,7 +59,7 @@ describe("truncateSkills", () => { } ); - await expect(truncateSkills(["azure"], [{ plugin: "azure", name: "azure-ai" }], 20)).rejects.toThrow( + await expect(truncateSkills(["azure-skills"], [{ pluginDirname: "azure-skills", name: "azure-ai" }], 20)).rejects.toThrow( "requiredSkills exceed SKILL_CHAR_BUDGET (20)" ); }); @@ -78,7 +78,7 @@ describe("truncateSkills", () => { const edgeLen = (await getFormattedSkillDescription("edge", descriptions.edge)).length; const equalBudget = requiredLen + 1 + edgeLen + 1; - const disabled = await truncateSkills(["azure"], [{ plugin: "azure", name: "required" }], equalBudget); + const disabled = await truncateSkills(["azure-skills"], [{ pluginDirname: "azure-skills", name: "required" }], equalBudget); expect(disabled).toEqual(["edge"]); }); diff --git a/tests/utils/agent-runner.ts b/tests/utils/agent-runner.ts index 2eb2494a5..32ec6ba15 100644 --- a/tests/utils/agent-runner.ts +++ b/tests/utils/agent-runner.ts @@ -28,16 +28,6 @@ export { getAllAssistantMessages } from "./evaluate.ts"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); -/** - * By default the directory of the plugin in the build output should be the exact name of the plugin. - * However, "azure" plugin has been published with "azure-skills" and external marketplaces that references our plugin already depend on it. - * For example, https://github.com/github/awesome-copilot/blob/30472ecf0fe34cc561df958c08501ecc5ca80ea4/.github/plugin/marketplace.json#L142 - * If a plugin has a mapped directory name here, its build output will be written under the mapped directory name. - */ -const pluginDirnameMap = new Map([ - ["azure", "azure-skills"] -]); - /** * Resolve the bundled Copilot CLI entry point. * @@ -919,18 +909,17 @@ export function useAgentRunner(agentRunnerConfig: AgentRunnerConfig) { // The plugins to include are inferred by the requiredSkills. // We include a plugin if and only if there is at least one required skill from it. - const plugins = new Set(); + const pluginDirnames = new Set(); runConfig.requiredSkills?.forEach(skillRef => { - plugins.add(skillRef.plugin); + pluginDirnames.add(skillRef.pluginDirname); }); - const pluginsList = [...plugins.values()]; - const skillDirectories = pluginsList.map(plugin => { - const pluginDirname = pluginDirnameMap.get(plugin) ?? plugin; - return path.resolve(__dirname, `../../output/${pluginDirname}/skills`) + const pluginDirnamesList = [...pluginDirnames.values()]; + const skillDirectories = pluginDirnamesList.map(pluginDir => { + return path.resolve(__dirname, `../../output/${pluginDir}/skills`) }); let disabledSkills: SkillRef[] | undefined; - const skillRefs = pluginsList.map(plugin => listSkills(plugin)).flat(); + const skillRefs = pluginDirnamesList.map(plugin => listSkills(plugin)).flat(); if (runConfig.includeSkills) { if (runConfig.includeSkills.some((includeSkillRef) => !skillRefs.some(ref => ref.name === includeSkillRef.name))) { const invalidSkills = runConfig.includeSkills.filter((includeSkillRef) => !skillRefs.some(ref => ref.name === includeSkillRef.name)); @@ -943,7 +932,7 @@ export function useAgentRunner(agentRunnerConfig: AgentRunnerConfig) { // Copilot CLI effectively randomly truncates skills after exceeding the char count budget. // We emulate Copilot CLI's behavior by preserving the required skills and randomly disable the rest of the skills. if (runConfig.requiredSkills) { - disabledSkills = (await truncateSkills(pluginsList, runConfig.requiredSkills, DEFAULT_SKILL_CHAR_BUDGET)); + disabledSkills = (await truncateSkills(pluginDirnamesList, runConfig.requiredSkills, DEFAULT_SKILL_CHAR_BUDGET)); } } const noSkills = process.env.NO_SKILLS === "true"; diff --git a/tests/utils/char-budget.ts b/tests/utils/char-budget.ts index 8befe717f..1add662aa 100644 --- a/tests/utils/char-budget.ts +++ b/tests/utils/char-budget.ts @@ -7,8 +7,8 @@ export const DEFAULT_SKILL_CHAR_BUDGET = 20000; * @param requiredSkills skills that cannot be truncated. * @returns the skills to disable to emulate truncation. */ -export async function truncateSkills(plugins: string[], requiredSkills: SkillRef[], charBudget: number): Promise { - const skillRefs = plugins.map(p => listSkills(p)).flat(); +export async function truncateSkills(pluginDirnames: string[], requiredSkills: SkillRef[], charBudget: number): Promise { + const skillRefs = pluginDirnames.map(p => listSkills(p)).flat(); const invalidSkills = requiredSkills.filter((s) => !skillRefs.some(ref => ref.name === s.name)); if (invalidSkills.length > 0) { throw new Error(`Invalid requiredSkills. ${invalidSkills} do not exist in azure-skills plugin.`); diff --git a/tests/utils/skill-loader.ts b/tests/utils/skill-loader.ts index db038c493..3bcdad1af 100644 --- a/tests/utils/skill-loader.ts +++ b/tests/utils/skill-loader.ts @@ -14,39 +14,54 @@ const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); export type SkillMetadata = { - plugin: string; + /** + * The directory name containing the plugin files in the shared plugins directory. + */ + pluginDirname: string; name: string; description: string; [key: string]: unknown; }; export type SkillRef = { - plugin: string; + /** + * The directory name containing the plugin files in the shared plugins directory. + */ + pluginDirname: string; name: string; } export type LoadedSkill = { metadata: SkillMetadata; content: string; + + /** + * Absolute path to the skill's directory. + */ path: string; + + /** + * Absolute path to the skill's SKILL.md file. + */ filePath: string; }; export type Plugin = { - name: string; + /** + * The directory name containing the plugin files in the shared plugins directory. + * + * Plugin directory name can be different from from the plugin's name. + * For example, the directory name of "azure" plugin has been "azure-skills". + * Some external marketplaces already depend on it. + * For example, see https://github.com/github/awesome-copilot/blob/30472ecf0fe34cc561df958c08501ecc5ca80ea4/.github/plugin/marketplace.json#L142 + * Given a plugin's directory name, we can easily retrieve its plugin name by reading the plugin.json file. + * Discover a plugin directory name from the plugin name is much harder. + * Therefore we maintain references to plugins by their directory names. + */ + dirname: string; skills: SkillRef[]; }; -/** - * By default the directory of the plugin in the build output should be the exact name of the plugin. - * However, "azure" plugin has been published with "azure-skills" and external marketplaces that references our plugin already depend on it. - * For example, https://github.com/github/awesome-copilot/blob/30472ecf0fe34cc561df958c08501ecc5ca80ea4/.github/plugin/marketplace.json#L142 - * If a plugin has a mapped directory name here, its build output will be written under the mapped directory name. - */ -const pluginDirnameMap = new Map([ - ["azure", "azure-skills"] -]); - /** * Load a skill by name */ @@ -55,20 +70,19 @@ export async function loadSkill(skillRef: SkillRef): Promise { if (global.OUTPUT_PATH) { // global.OUTPUT_PATH is only defined in JEST context skillPath = path.join( - path.join(global.OUTPUT_PATH, skillRef.plugin), + path.join(global.OUTPUT_PATH, skillRef.pluginDirname), skillRef.name ); } else { - const pluginDirname = pluginDirnameMap.get(skillRef.plugin) ?? skillRef.plugin; skillPath = path.join( - path.resolve(__dirname, `../../output/${pluginDirname}/skills`), + path.resolve(__dirname, `../../output/${skillRef.pluginDirname}/skills`), skillRef.name ); } const skillFile = path.join(skillPath, "SKILL.md"); if (!fs.existsSync(skillFile)) { - throw new Error(`SKILL.md not found for skill: ${skillRef.name} at ${skillFile} in plugin ${skillRef.plugin}`); + throw new Error(`SKILL.md not found for skill: ${skillRef.name} at ${skillFile} in plugin ${skillRef.pluginDirname}`); } const fileContent = fs.readFileSync(skillFile, "utf-8"); @@ -76,7 +90,7 @@ export async function loadSkill(skillRef: SkillRef): Promise { return { metadata: { - plugin: skillRef.plugin, + pluginDirname: skillRef.pluginDirname, name: (metadata.name as string) || skillRef.name, description: (metadata.description as string) || "", ...metadata @@ -90,13 +104,12 @@ export async function loadSkill(skillRef: SkillRef): Promise { /** * @returns SkillRef objects in a given plugin. */ -export function listSkills(plugin: string): SkillRef[] { +export function listSkills(pluginDirname: string): SkillRef[] { let skillsDir; if (global.OUTPUT_PATH) { // global.OUTPUT_PATH is only defined in JEST context - skillsDir = path.join(global.OUTPUT_PATH, plugin, "skills") + skillsDir = path.join(global.OUTPUT_PATH, pluginDirname, "skills") } else { - const pluginDirname = pluginDirnameMap.get(plugin) ?? plugin; skillsDir = path.resolve(__dirname, `../../output/${pluginDirname}/skills`); } const items = fs.readdirSync(skillsDir, { withFileTypes: true }); @@ -108,7 +121,7 @@ export function listSkills(plugin: string): SkillRef[] { }) .map((item) => { return { - plugin: plugin, + pluginDirname: pluginDirname, name: item.name } }); @@ -127,7 +140,7 @@ export function listPlugins(): Plugin[] { .filter((item) => item.isDirectory()) .map((item) => { return { - name: item.name, + dirname: item.name, skills: listSkills(item.name) } }); diff --git a/tests/vally/vally-executor.ts b/tests/vally/vally-executor.ts index 58e2f9213..e5b0a210c 100644 --- a/tests/vally/vally-executor.ts +++ b/tests/vally/vally-executor.ts @@ -41,7 +41,7 @@ export class IntegrationTestAgentRunner implements Executor { const owningPlugin = plugins.filter(plugin => plugin.skills.some(skillRef => skillRef.name === skillName)).at(0); if (owningPlugin) { requiredSkillRefs.push({ - plugin: owningPlugin.name, + pluginDirname: owningPlugin.dirname, name: skillName }); } From abb749f46f485c93e0114c3c0587e6f970f83e8d Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Thu, 16 Jul 2026 11:06:14 -0700 Subject: [PATCH 21/53] fix references check script --- scripts/src/frontmatter/cli.ts | 8 +-- scripts/src/references/cli.ts | 85 +++++++++++------------------- scripts/src/shared/skill-helper.ts | 21 +++++--- scripts/src/tokens/cli.ts | 8 +-- scripts/src/vally/cli.ts | 8 +-- 5 files changed, 50 insertions(+), 80 deletions(-) diff --git a/scripts/src/frontmatter/cli.ts b/scripts/src/frontmatter/cli.ts index db42cff57..92c46ad70 100644 --- a/scripts/src/frontmatter/cli.ts +++ b/scripts/src/frontmatter/cli.ts @@ -19,18 +19,12 @@ */ import { dirname, resolve, basename, relative } from "node:path"; -import { fileURLToPath } from "node:url"; import { existsSync, readdirSync, readFileSync, statSync } from "node:fs"; import { parseArgs } from "node:util"; -import { parseSkillContent } from "../shared/skill-helper.js"; +import { getRepoRoot, parseSkillContent } from "../shared/skill-helper.js"; // ── Paths ──────────────────────────────────────────────────────────────────── -function getRepoRoot(): string { - const scriptDir = dirname(fileURLToPath(import.meta.url)); - return resolve(scriptDir, "../../.."); -} - const REPO_ROOT = getRepoRoot(); // ── Types ──────────────────────────────────────────────────────────────────── diff --git a/scripts/src/references/cli.ts b/scripts/src/references/cli.ts index 1a30a528e..ff9386446 100644 --- a/scripts/src/references/cli.ts +++ b/scripts/src/references/cli.ts @@ -12,7 +12,7 @@ * * Usage: * npm run references # Validate all skills - * npm run references # Validate a single skill + * npm run references # Validate a single skill. Both and are optional, but can only be used if is provided. Note that pluginDirname is the name of the directory containing the plugin files, not the name of the plugin. For example, use "azure-skills" instead of "azure". * npm run references -- --json # Emit validation results as JSON * npm run references -- --list # Emit every discovered local * # and remote link as JSON @@ -23,21 +23,15 @@ * npm run --silent references -- --list > out.json */ -import { dirname, resolve, relative, normalize } from "node:path"; +import { resolve, relative, normalize, dirname } from "node:path"; import { existsSync, readdirSync, statSync } from "node:fs"; import { extractLocalLinks, extractRemoteLinks } from "./link-helpers.js"; -import { fileURLToPath } from "node:url"; import { parseArgs } from "node:util"; +import { getRepoRoot, listPlugins, listSkills, SkillRef } from "../shared/skill-helper.js"; // ── Paths ──────────────────────────────────────────────────────────────────── -function getRepoRoot(): string { - const scriptDir = dirname(fileURLToPath(import.meta.url)); - return resolve(scriptDir, "../../.."); -} - const REPO_ROOT = getRepoRoot(); -let SKILLS_DIR = resolve(REPO_ROOT, "plugin", "skills"); const FILTERED_REMOTE_HOSTS = new Set([]); const FILTERED_REMOTE_HOST_SUFFICES: string[] = []; @@ -86,7 +80,7 @@ interface LocalLinkDetail { } interface ValidationResult { - skill: string; + skillRef: SkillRef; issues: LinkIssue[]; orphanedFiles: OrphanedFile[]; remoteLinks: RemoteLinkDetail[]; @@ -169,6 +163,8 @@ function validateFile(mdFile: string, skillDir: string): { remoteLinks: RemoteLinkDetail[]; localLinks: LocalLinkDetail[]; } { + const skillsDir = dirname(skillDir); + // Local links const localLinks = extractLocalLinks(mdFile, skillDir); const remoteLinks = extractRemoteLinks(mdFile, skillDir); @@ -208,7 +204,7 @@ function validateFile(mdFile: string, skillDir: string): { || normalizedResolved === normalizedSkillDir; if (!insideSkill) { - const rel = relative(SKILLS_DIR, item.absPath).replace(/\\/g, "/"); + const rel = relative(skillsDir, item.absPath).replace(/\\/g, "/"); return { file: mdFile, line: item.line, @@ -247,8 +243,8 @@ function validateFile(mdFile: string, skillDir: string): { }; } -function validateSkill(skillName: string): ValidationResult { - const skillDir = resolve(SKILLS_DIR, skillName); +function validateSkill(skillRef: SkillRef): ValidationResult { + const skillDir = resolve(REPO_ROOT, `plugins/${skillRef.pluginDirname}/skills/${skillRef.name}`); const mdFiles = findMarkdownFiles(skillDir); const issues: LinkIssue[] = []; const remoteLinks: RemoteLinkDetail[] = []; @@ -307,7 +303,7 @@ function validateSkill(skillName: string): ValidationResult { } } - return { skill: skillName, issues, orphanedFiles, remoteLinks, localLinks }; + return { skillRef: skillRef, issues, orphanedFiles, remoteLinks, localLinks }; } // ── JSON output ────────────────────────────────────────────────────────────── @@ -330,7 +326,7 @@ export interface ReferencesJsonResult { } function buildReferencesJson( - skills: string[], + skills: SkillRef[], results: ValidationResult[], ): ReferencesJsonResult { const references: ReferenceEntry[] = []; @@ -361,7 +357,7 @@ function buildReferencesJson( for (const orphan of result.orphanedFiles) { references.push({ source: formatPath(orphan.file), - target: result.skill + "/SKILL.md", + target: result.skillRef + "/SKILL.md", status: "warning", message: orphan.reason, }); @@ -400,7 +396,7 @@ export interface RemoteLinkListEntry extends LinkListEntry { } export interface SkillLinkList { - skill: string; + skill: SkillRef; localLinks: LocalLinkListEntry[]; remoteLinks: RemoteLinkListEntry[]; } @@ -436,7 +432,7 @@ function buildListJson(results: ValidationResult[]): ReferencesListResult { })); totalLocal += localLinks.length; totalRemote += remoteLinks.length; - return { skill: result.skill, localLinks, remoteLinks }; + return { skill: result.skillRef, localLinks, remoteLinks }; }); return { @@ -451,15 +447,6 @@ function buildListJson(results: ValidationResult[]): ReferencesListResult { // ── CLI entry point ────────────────────────────────────────────────────────── -function listSkills(): string[] { - return readdirSync(SKILLS_DIR) - .filter((name) => { - const full = resolve(SKILLS_DIR, name); - return statSync(full).isDirectory(); - }) - .sort(); -} - function formatPath(absPath: string): string { return relative(REPO_ROOT, absPath).replace(/\\/g, "/"); } @@ -470,38 +457,30 @@ function main(): void { options: { json: { type: "boolean", default: false }, list: { type: "boolean", default: false }, - "skills-dir": { type: "string" }, }, strict: false, allowPositionals: true, }); - if (values["skills-dir"] && typeof values["skills-dir"] === "string") { - const dir = resolve(values["skills-dir"]); - if (!existsSync(dir) || !statSync(dir).isDirectory()) { - console.error(`\n❌ Skills directory not found: ${dir}\n`); - process.exit(1); - } - SKILLS_DIR = dir; - } - const jsonOutput = values.json ?? false; const listOutput = values.list ?? false; - const requestedSkill = positionals[0]; - - const skills = requestedSkill ? [requestedSkill] : listSkills(); - - // Verify requested skill exists - if (requestedSkill) { - const skillDir = resolve(SKILLS_DIR, requestedSkill); - if (!existsSync(skillDir) || !statSync(skillDir).isDirectory()) { - console.error(`\n❌ Skill "${requestedSkill}" not found in ${formatPath(SKILLS_DIR)}\n`); - console.error("Available skills:"); - for (const s of listSkills()) { - console.error(` - ${s}`); + const requestedPluginDirname = positionals[0]; + const requestedSkill = positionals[1]; + + let skills: SkillRef[] = []; + if (requestedPluginDirname && requestedSkill) { + skills = [{ + pluginDirname: requestedPluginDirname, + name: requestedSkill + }]; + } else { + if (requestedPluginDirname) { + skills = listSkills(requestedPluginDirname) + } else { + const plugins = listPlugins(); + for (const plugin of plugins) { + skills.push(...plugin.skills); } - process.exitCode = 1; - return; } } @@ -542,14 +521,14 @@ function main(): void { const hasOrphanedFiles = result.orphanedFiles.length > 0; if (!hasLinkIssues && !hasOrphanedFiles) { - console.log(` ✅ ${result.skill}`); + console.log(` ✅ ${result.skillRef.pluginDirname} - ${result.skillRef.name}`); } else { skillsWithIssues++; const issueCount = result.issues.length + result.orphanedFiles.length; totalIssues += result.issues.length; totalOrphanedFiles += result.orphanedFiles.length; - console.log(` ❌ ${result.skill} — ${issueCount} issue(s)`); + console.log(` ❌ ${result.skillRef} — ${issueCount} issue(s)`); // Report link issues for (const issue of result.issues) { diff --git a/scripts/src/shared/skill-helper.ts b/scripts/src/shared/skill-helper.ts index 54c65ab56..85a630caf 100644 --- a/scripts/src/shared/skill-helper.ts +++ b/scripts/src/shared/skill-helper.ts @@ -15,6 +15,10 @@ import matter from "gray-matter"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); +export function getRepoRoot(): string { + return path.resolve(__dirname, "../../.."); +} + // ── Types ──────────────────────────────────────────────────────────────────── /** Parsed frontmatter result from a SKILL.md file. */ @@ -147,10 +151,8 @@ const pluginDirnameMap = new Map([ export function loadSkill(skillRef: SkillRef): LoadedSkill { const pluginDirname = pluginDirnameMap.get(skillRef.pluginDirname) ?? skillRef.pluginDirname; const skillPath = path.join( - path.resolve(__dirname, "../../../plugins"), - pluginDirname, - "skills", - skillRef.name + getRepoRoot(), + `plugins/${pluginDirname}/skills/${skillRef.name}` ); const skillFile = path.join(skillPath, "SKILL.md"); @@ -182,7 +184,10 @@ export function loadSkill(skillRef: SkillRef): LoadedSkill { * @returns SkillRef objects in a given plugin. */ export function listSkills(pluginDirname: string): SkillRef[] { - const skillsDir = path.resolve(__dirname, `../../../output/${pluginDirname}/skills`); + const skillsDir = path.resolve( + getRepoRoot(), + `output/${pluginDirname}/skills` + ); const items = fs.readdirSync(skillsDir, { withFileTypes: true }); return items @@ -200,7 +205,11 @@ export function listSkills(pluginDirname: string): SkillRef[] { } export function listPlugins(): Plugin[] { - const pluginsDir = path.resolve(__dirname, "../../../output/"); + const pluginsDir = path.resolve( + __dirname, + getRepoRoot(), + "output" + ); const items = fs.readdirSync(pluginsDir, { withFileTypes: true }); return items .filter((item) => item.isDirectory()) diff --git a/scripts/src/tokens/cli.ts b/scripts/src/tokens/cli.ts index 28c741369..b75aaa34f 100644 --- a/scripts/src/tokens/cli.ts +++ b/scripts/src/tokens/cli.ts @@ -12,21 +12,15 @@ * npm run tokens help # Show help */ -import { dirname, resolve } from "node:path"; -import { fileURLToPath } from "node:url"; import { count } from "./commands/count.js"; import { check } from "./commands/check.js"; import { compare } from "./commands/compare.js"; import { suggest } from "./commands/suggest.js"; +import { getRepoRoot } from "../shared/skill-helper.js"; const COMMANDS = ["count", "check", "compare", "suggest", "help"] as const; type Command = typeof COMMANDS[number]; -function getRepoRoot(): string { - const scriptDir = dirname(fileURLToPath(import.meta.url)); - return resolve(scriptDir, "../../.."); -} - function printHelp(): void { console.log(` 📊 Token Management CLI diff --git a/scripts/src/vally/cli.ts b/scripts/src/vally/cli.ts index 09af4a7f6..b2a93eb1f 100644 --- a/scripts/src/vally/cli.ts +++ b/scripts/src/vally/cli.ts @@ -9,18 +9,12 @@ * npm run vally help # Show help */ -import { dirname, resolve } from "node:path"; -import { fileURLToPath } from "node:url"; import { validateStimulus } from "./validate-stimulus.js"; +import { getRepoRoot } from "../shared/skill-helper.js"; const COMMANDS = ["validate-stimulus", "help"] as const; type Command = typeof COMMANDS[number]; -function getRepoRoot(): string { - const scriptDir = dirname(fileURLToPath(import.meta.url)); - return resolve(scriptDir, "../../.."); -} - function printHelp(): void { console.log(` 🔬 Vally CLI From a4adb8cdb417ca4dc42d0569410aaa33170fa061 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Thu, 16 Jul 2026 13:16:11 -0700 Subject: [PATCH 22/53] fix tokens script --- .vally.yaml | 2 +- plan.md | 4 +++- scripts/src/tokens/__tests__/utils.test.ts | 2 +- scripts/src/tokens/cli.ts | 2 +- scripts/src/tokens/commands/types.ts | 4 ++-- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/.vally.yaml b/.vally.yaml index b17280c2f..5d75b4453 100644 --- a/.vally.yaml +++ b/.vally.yaml @@ -1,6 +1,6 @@ paths: skills: - - plugin/skills + - plugins/skills evals: - evals evalFilenames: ["eval.yaml", "eval.yml", "*.eval.yaml"] diff --git a/plan.md b/plan.md index 930bd297e..dbbfeb405 100644 --- a/plan.md +++ b/plan.md @@ -21,4 +21,6 @@ - Update vally-eval skill to reference the new file structure -## Nuances +## Misc + +- Rewrite codeowner to re-assign owner to the new files \ No newline at end of file diff --git a/scripts/src/tokens/__tests__/utils.test.ts b/scripts/src/tokens/__tests__/utils.test.ts index 361943a22..fc3494462 100644 --- a/scripts/src/tokens/__tests__/utils.test.ts +++ b/scripts/src/tokens/__tests__/utils.test.ts @@ -114,7 +114,7 @@ describe("getLimitForFile", () => { defaults: { "*.md": 2000, "SKILL.md": 3500, - "plugin/skills/**/SKILL.md": 4000 + "plugins/*/skills/**/SKILL.md": 4000 }, overrides: {} }; diff --git a/scripts/src/tokens/cli.ts b/scripts/src/tokens/cli.ts index b75aaa34f..3000cff8f 100644 --- a/scripts/src/tokens/cli.ts +++ b/scripts/src/tokens/cli.ts @@ -37,7 +37,7 @@ Commands: Default Scope: All commands scan these directories by default: - .github/skills - - plugin/skills + - plugins/ - .github/agents Options vary by command. Use --help with any command for details. diff --git a/scripts/src/tokens/commands/types.ts b/scripts/src/tokens/commands/types.ts index 38176a8a7..f9470980e 100644 --- a/scripts/src/tokens/commands/types.ts +++ b/scripts/src/tokens/commands/types.ts @@ -122,7 +122,7 @@ export const TOKENS_PER_TABLE_ROW = 12; export const EXCLUDED_DIRS = ["node_modules", ".git", "dist", "coverage"] as const; /** Default directories to scan for skills/agents */ -export const DEFAULT_SCAN_DIRS = [".github/skills", "plugin/skills", ".github/agents"] as const; +export const DEFAULT_SCAN_DIRS = [".github/skills", "plugins", ".github/agents"] as const; /** Supported markdown extensions */ export const MARKDOWN_EXTENSIONS = [".md", ".mdx"] as const; @@ -139,7 +139,7 @@ export const DEFAULT_LIMITS: TokenLimitsConfig = { overrides: { "README.md": 3000, "CONTRIBUTING.md": 2500, - "plugin/README.md": 3000 + "plugins/**/README.md": 3000 } }; From 4bc70f49c418efb9d0717e03f3c5d3a8003d2605 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Thu, 16 Jul 2026 14:30:47 -0700 Subject: [PATCH 23/53] fix frontmatter script --- .../__tests__/collectors/frontmatter.test.ts | 6 +- .../src/dashboard/collectors/frontmatter.ts | 6 +- .../frontmatter/__tests__/frontmatter.test.ts | 2 +- scripts/src/frontmatter/cli.ts | 678 +---------------- scripts/src/frontmatter/helpers.ts | 697 ++++++++++++++++++ .../integration/count.integration.test.ts | 4 +- 6 files changed, 713 insertions(+), 680 deletions(-) create mode 100644 scripts/src/frontmatter/helpers.ts diff --git a/scripts/src/dashboard/__tests__/collectors/frontmatter.test.ts b/scripts/src/dashboard/__tests__/collectors/frontmatter.test.ts index 16d9132a6..2bcca9c47 100644 --- a/scripts/src/dashboard/__tests__/collectors/frontmatter.test.ts +++ b/scripts/src/dashboard/__tests__/collectors/frontmatter.test.ts @@ -26,7 +26,7 @@ function makeFrontmatterJson(overrides?: { skills: [ { name: "skill-a", - path: "plugin/skills/skill-a/SKILL.md", + path: "plugins/plugin-a/skills/skill-a/SKILL.md", status: "pass" as const, errors: [], warnings: [], @@ -34,7 +34,7 @@ function makeFrontmatterJson(overrides?: { }, { name: "skill-b", - path: "plugin/skills/skill-b/SKILL.md", + path: "plugins/plugin-b/skills/skill-b/SKILL.md", status: "pass" as const, errors: [], warnings: [], @@ -231,7 +231,7 @@ describe("frontmatterCollector.collect", () => { expect(report.status).toBe("pass"); expect(report.items).toHaveLength(2); expect(execSync).toHaveBeenCalledWith( - expect.stringContaining(`--json "${resolve(fakeRoot, "output", "skills")}"`), + expect.stringContaining(`--json "${resolve(fakeRoot, "output")}"`), expect.objectContaining({ cwd: resolve(fakeRoot, "scripts"), timeout: 5000, diff --git a/scripts/src/dashboard/collectors/frontmatter.ts b/scripts/src/dashboard/collectors/frontmatter.ts index 118ea3af8..cfbf72628 100644 --- a/scripts/src/dashboard/collectors/frontmatter.ts +++ b/scripts/src/dashboard/collectors/frontmatter.ts @@ -115,10 +115,10 @@ export const frontmatterCollector: Collector = { // The frontmatter npm script lives in scripts/package.json, so we // must run from the scripts/ directory, not the repo root. const scriptsCwd = resolve(options.cwd, "scripts"); - // Validate the built output (output/skills/) rather than the source - // (plugin/skills/) so that stamped version numbers are used and the + // Validate the built output (output/) rather than the source + // (plugins/) so that stamped version numbers are used and the // CLI does not fail on placeholder versions. - const builtSkillsDir = resolve(options.cwd, "output", "skills"); + const builtSkillsDir = resolve(options.cwd, "output"); let stdout: string; try { stdout = execSync( diff --git a/scripts/src/frontmatter/__tests__/frontmatter.test.ts b/scripts/src/frontmatter/__tests__/frontmatter.test.ts index 137726804..472be006b 100644 --- a/scripts/src/frontmatter/__tests__/frontmatter.test.ts +++ b/scripts/src/frontmatter/__tests__/frontmatter.test.ts @@ -21,7 +21,7 @@ import { hasPreferOverClause, validateTriggerOverlapDisambiguation, validateSkillFile, -} from "../cli.js"; +} from "../helpers.js"; import { parseSkillContent } from "../../shared/skill-helper.js"; const TEST_DIR = resolve(__dirname, "__test_frontmatter__"); diff --git a/scripts/src/frontmatter/cli.ts b/scripts/src/frontmatter/cli.ts index 92c46ad70..2ae60d7d0 100644 --- a/scripts/src/frontmatter/cli.ts +++ b/scripts/src/frontmatter/cli.ts @@ -12,680 +12,16 @@ * 4. Name must not start with reserved prefixes (claude- or anthropic-). * * Usage: + * npm run frontmatter # Validate skills in all plugins * npm run frontmatter # Validate a specific SKILL.md file * npm run frontmatter # Validate a single skill folder * npm run frontmatter # Validate all skills in a directory * npm run frontmatter ... # Mix of the above */ -import { dirname, resolve, basename, relative } from "node:path"; -import { existsSync, readdirSync, readFileSync, statSync } from "node:fs"; import { parseArgs } from "node:util"; -import { getRepoRoot, parseSkillContent } from "../shared/skill-helper.js"; +import { buildJsonResult, buildSkillRoutingContexts, resolveSkillFiles, validateSkillFile, validateTriggerOverlapDisambiguation, ValidationResult } from "./helpers.js"; -// ── Paths ──────────────────────────────────────────────────────────────────── - -const REPO_ROOT = getRepoRoot(); - -// ── Types ──────────────────────────────────────────────────────────────────── - -export interface ValidationIssue { - check: string; // Check identifier (e.g., "name-format", "description-format") - message: string; // Human-readable explanation - severity?: "error" | "warning"; // Defaults to "error" if omitted -} - -export interface ValidationResult { - skill: string; - file: string; - issues: ValidationIssue[]; - /** Raw description text, or null when missing/unparseable. */ - description?: string | null; -} - -export interface SkillRoutingContext { - name: string; - file: string; - description: string; - triggerPhrases: string[]; - broad: boolean; -} - -// ── Validation checks ──────────────────────────────────────────────────────── - -const NAME_RE = /^[a-z0-9]([a-z0-9-]{0,62}[a-z0-9])?$/; -const RESERVED_PREFIXES = ["claude-", "anthropic-"]; - -/** - * Check 1: Validate the `name` field per the agentskills.io spec. - * - * Rules: - * - Lowercase alphanumeric + hyphens only - * - No consecutive hyphens (--) - * - Must not start or end with a hyphen - * - Length 1–64 - * - Must match the parent directory name - */ -export function validateName(name: string | null, parentDirName: string): ValidationIssue[] { - const issues: ValidationIssue[] = []; - - if (name === null || name === "") { - issues.push({ check: "name-format", message: "Missing required 'name' field" }); - return issues; - } - - if (name.length > 64) { - issues.push({ check: "name-format", message: `Name is ${name.length} chars (max 64)` }); - } - - if (!NAME_RE.test(name)) { - if (/[A-Z]/.test(name)) { - issues.push({ check: "name-format", message: `Name contains uppercase characters: ${name}` }); - } else if (/[^a-z0-9-]/.test(name)) { - issues.push({ check: "name-format", message: `Name contains invalid characters (only a-z, 0-9, - allowed): ${name}` }); - } else if (name.startsWith("-") || name.endsWith("-")) { - issues.push({ check: "name-format", message: `Name must not start or end with a hyphen: ${name}` }); - } else { - issues.push({ check: "name-format", message: `Name does not match spec pattern: ${name}` }); - } - } - - if (name.includes("--")) { - issues.push({ check: "name-format", message: `Name contains consecutive hyphens (--): ${name}` }); - } - - if (name !== parentDirName) { - issues.push({ check: "name-format", message: `Name "${name}" does not match parent directory "${parentDirName}"` }); - } - - return issues; -} - -/** - * Check 2: Validate the description uses inline double-quoted format. - * - * Rejects >- folded scalars and | literal blocks which are incompatible - * with skills.sh. - */ -export function validateDescriptionFormat(rawFrontmatter: string): ValidationIssue[] { - const issues: ValidationIssue[] = []; - - // Match description field followed by a block scalar indicator - if (/^description:\s*>-?\s*$/m.test(rawFrontmatter)) { - issues.push({ - check: "description-format", - message: "Description uses >- folded scalar (incompatible with skills.sh) — use inline double-quoted string instead", - }); - } - - if (/^description:\s*\|\s*$/m.test(rawFrontmatter)) { - issues.push({ - check: "description-format", - message: "Description uses | literal block (preserves newlines) — use inline double-quoted string instead", - }); - } - - if (/^description:\s*\|-\s*$/m.test(rawFrontmatter)) { - issues.push({ - check: "description-format", - message: "Description uses |- literal block (strip) — use inline double-quoted string instead", - }); - } - - return issues; -} - -/** - * Check 3: Validate no XML tags (< or >) in frontmatter. - * - * Frontmatter appears in the system prompt — XML tags are a security risk - * (injection vector). - */ -export function validateNoXmlTags(rawFrontmatter: string): ValidationIssue[] { - const issues: ValidationIssue[] = []; - const lines = rawFrontmatter.split("\n"); - - for (let i = 0; i < lines.length; i++) { - const line = lines[i]; - // Look for < or > that appear to be tags (not comparison operators or arrows) - if (/<[a-zA-Z/!]/.test(line) || />[^-]/.test(line) && / 1024) { - issues.push({ - check: "description-length", - message: `Description is ${description.length} chars (max 1024)`, - }); - } - - return issues; -} - -const SEMVER_RE = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/; - -/** - * Check 6: Validate that `license` field is present and is a string. - */ -export function validateLicense(license: unknown): ValidationIssue[] { - const issues: ValidationIssue[] = []; - - if (license === undefined || license === null || license === "") { - issues.push({ - check: "license", - message: "Missing 'license' field in frontmatter", - severity: "warning", - }); - } else if (typeof license !== "string") { - issues.push({ - check: "license", - message: `'license' field must be a string, got ${typeof license}`, - }); - } - - return issues; -} - -/** - * Check 7: Validate `metadata` field structure (optional, map of string keys to string values per spec). - */ -export function validateMetadata(metadata: unknown): ValidationIssue[] { - const issues: ValidationIssue[] = []; - - if (metadata === undefined || metadata === null) { - issues.push({ - check: "metadata", - message: "Missing 'metadata' block in frontmatter", - severity: "warning", - }); - return issues; - } - - if (typeof metadata !== "object" || Array.isArray(metadata)) { - issues.push({ - check: "metadata", - message: `'metadata' field must be a key-value mapping, got ${Array.isArray(metadata) ? "array" : typeof metadata}`, - }); - return issues; - } - - const meta = metadata as Record; - for (const [key, value] of Object.entries(meta)) { - if (typeof value !== "string") { - issues.push({ - check: "metadata", - message: `metadata.${key} must be a string, got ${typeof value}`, - severity: "warning", - }); - } - } - - return issues; -} - -/** - * Check 8: Validate `metadata.version` is present and follows semver (X.Y.Z). - */ -export function validateMetadataVersion(metadata: unknown): ValidationIssue[] { - const issues: ValidationIssue[] = []; - - if (metadata === undefined || metadata === null || typeof metadata !== "object") { - issues.push({ - check: "metadata-version", - message: "Missing 'metadata' block with 'version' field in frontmatter", - severity: "warning", - }); - return issues; - } - - const meta = metadata as Record; - const version = meta.version; - - if (version === undefined || version === null || version === "") { - issues.push({ - check: "metadata-version", - message: "Missing 'version' in metadata block", - severity: "warning", - }); - return issues; - } - - const versionStr = String(version); - if (!SEMVER_RE.test(versionStr)) { - issues.push({ - check: "metadata-version", - message: `metadata.version "${versionStr}" is not valid semver (expected X.Y.Z)`, - }); - } - - return issues; -} - -/** - * Check 8: Validate `compatibility` field (optional, max 500 chars per spec). - */ -export function validateCompatibility(compatibility: unknown): ValidationIssue[] { - const issues: ValidationIssue[] = []; - - if (compatibility === undefined || compatibility === null) { - return issues; // Optional field - } - - if (typeof compatibility !== "string") { - issues.push({ - check: "compatibility", - message: `'compatibility' field must be a string, got ${typeof compatibility}`, - }); - return issues; - } - - if (compatibility === "") { - issues.push({ - check: "compatibility", - message: "'compatibility' field must not be empty if provided", - }); - return issues; - } - - if (compatibility.length > 500) { - issues.push({ - check: "compatibility", - message: `Compatibility is ${compatibility.length} chars (max 500)`, - }); - } - - return issues; -} - -/** - * Check 9: Validate `allowed-tools` field (optional, space-delimited string per spec). - */ -export function validateAllowedTools(allowedTools: unknown): ValidationIssue[] { - const issues: ValidationIssue[] = []; - - if (allowedTools === undefined || allowedTools === null) { - return issues; // Optional field - } - - if (typeof allowedTools !== "string") { - issues.push({ - check: "allowed-tools", - message: `'allowed-tools' field must be a string, got ${typeof allowedTools}`, - }); - return issues; - } - - if (allowedTools === "") { - issues.push({ - check: "allowed-tools", - message: "'allowed-tools' field must not be empty if provided", - }); - } - - return issues; -} - -const TRIGGER_SECTION_KEYWORDS = ["WHEN", "USE FOR", "TRIGGERS"] as const; -const TRIGGER_SECTION_STOP_HEADERS = ["DO NOT USE FOR", ...TRIGGER_SECTION_KEYWORDS] as const; -// Extracts only explicit trigger sections and stops before disambiguation/next trigger section. -// Section headers must include a trailing colon; `PREFER OVER` is handled separately -// because it may appear without one. -const TRIGGER_SECTION_RE = new RegExp( - `\\b(?:${TRIGGER_SECTION_KEYWORDS.join("|")}):\\s*([^]*?)(?=(?:\\b(?:${TRIGGER_SECTION_STOP_HEADERS.join("|")}):|\\bPREFER OVER\\b|$))`, - "gi", -); -const DO_NOT_USE_FOR_RE = /\bDO NOT USE FOR:/i; -const SANITIZED_DO_NOT_USE_FOR_MARKER = "DO_NOT_USE_FOR:"; -const DISAMBIGUATION_CLAUSE_MARKER_RE = new RegExp(`(?:${SANITIZED_DO_NOT_USE_FOR_MARKER}|PREFER OVER\\b)`, "i"); -const BROAD_SKILL_NAMES = new Set(["azure-prepare", "azure-deploy"]); -const MIN_TRIGGER_PHRASE_LENGTH = 4; -const OVERLAP_PREVIEW_LIMIT = 3; - -function normalizeTriggerPhrase(phrase: string): string { - return phrase - .toLowerCase() - .replace(/^["'`]+|["'`]+$/g, "") - .replace(/\([^)]*\)/g, "") - .replace(/[^a-z0-9]+/g, " ") - .trim(); -} - -export function extractTriggerPhrases(description: string | null): string[] { - if (!description) return []; - - // Prevent `USE FOR:` inside `DO NOT USE FOR:` from being treated as a trigger section. - const sanitizedDescription = description.replace(/\bDO NOT USE FOR:/gi, SANITIZED_DO_NOT_USE_FOR_MARKER); - const phrases: string[] = []; - let match: RegExpExecArray | null; - while ((match = TRIGGER_SECTION_RE.exec(sanitizedDescription)) !== null) { - const section = match[1]; - const disambiguationStart = section.search(DISAMBIGUATION_CLAUSE_MARKER_RE); - const triggerSection = disambiguationStart >= 0 ? section.slice(0, disambiguationStart) : section; - for (const rawPhrase of triggerSection.split(/[;,]/)) { - const normalized = normalizeTriggerPhrase(rawPhrase); - if (normalized.length >= MIN_TRIGGER_PHRASE_LENGTH) { - phrases.push(normalized); - } - } - } - - return [...new Set(phrases)]; -} - -export function hasDoNotUseForClause(description: string | null): boolean { - if (!description) return false; - return DO_NOT_USE_FOR_RE.test(description); -} - -export function hasPreferOverClause(description: string | null, competingSkillName: string): boolean { - if (!description) return false; - const escapedName = competingSkillName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); - return new RegExp(`\\bPREFER OVER\\s+${escapedName}\\b`, "i").test(description); -} - -function hasAnyDisambiguationClause(description: string | null, competingSkillName: string): boolean { - return hasDoNotUseForClause(description) || hasPreferOverClause(description, competingSkillName); -} - -function buildSkillRoutingContexts(skillFiles: string[]): SkillRoutingContext[] { - const contexts: SkillRoutingContext[] = []; - for (const file of skillFiles) { - const content = readFileSync(file, "utf-8"); - const parsed = parseSkillContent(content); - if (parsed === null) continue; - const name = typeof parsed.data.name === "string" ? parsed.data.name : basename(dirname(file)); - const description = typeof parsed.data.description === "string" ? parsed.data.description : ""; - const triggerPhrases = extractTriggerPhrases(description); - contexts.push({ - name, - file, - description, - triggerPhrases, - broad: isBroadRoutingSkill(name), - }); - } - return contexts; -} - -function isBroadRoutingSkill(name: string): boolean { - // Restrict "broad" classification to an explicit allowlist to avoid - // specialized skills being accidentally reclassified as broad. - return BROAD_SKILL_NAMES.has(name); -} - -export function validateTriggerOverlapDisambiguation( - skill: SkillRoutingContext, - allSkills: SkillRoutingContext[], -): ValidationIssue[] { - if (skill.broad || skill.triggerPhrases.length === 0) return []; - - const issues: ValidationIssue[] = []; - const skillTriggerSet = new Set(skill.triggerPhrases); - - for (const competitor of allSkills) { - if (competitor.name === skill.name || !competitor.broad) continue; - if (competitor.triggerPhrases.length === 0) continue; - - const overlaps = competitor.triggerPhrases.filter( - (trigger) => skillTriggerSet.has(trigger), - ); - if (overlaps.length === 0) continue; - - if (!hasAnyDisambiguationClause(skill.description, competitor.name)) { - const overlapPreview = overlaps.slice(0, OVERLAP_PREVIEW_LIMIT).join(", "); - const overlapSuffix = overlaps.length > OVERLAP_PREVIEW_LIMIT ? ", ..." : ""; - issues.push({ - check: "trigger-overlap-disambiguation", - severity: "error", - message: `Trigger overlap with broad skill "${competitor.name}" (${overlapPreview}${overlapSuffix}). Add DO NOT USE FOR: or PREFER OVER ${competitor.name}.`, - }); - } - } - - return issues; -} - -// ── Validate a single SKILL.md ────────────────────────────────────────────── - -export function validateSkillFile(filePath: string): ValidationResult { - const parentDir = basename(dirname(filePath)); - const content = readFileSync(filePath, "utf-8"); - const parsed = parseSkillContent(content); - const issues: ValidationIssue[] = []; - - if (parsed === null) { - issues.push({ check: "frontmatter", message: "Missing YAML frontmatter (file must start with ---)" }); - return { skill: parentDir, file: filePath, issues, description: null }; - } - - const name = typeof parsed.data.name === "string" ? parsed.data.name : null; - const description = typeof parsed.data.description === "string" ? parsed.data.description : null; - - // Check required fields - if (description === null) { - issues.push({ check: "missing-field", message: "Missing required 'description' field" }); - } - - // Check 1: Name validation - issues.push(...validateName(name, parentDir)); - - // Check 2: Description format (needs raw YAML source) - issues.push(...validateDescriptionFormat(parsed.raw)); - - // Check 3: No XML tags (needs raw YAML source) - issues.push(...validateNoXmlTags(parsed.raw)); - - // Check 4: No reserved prefixes - issues.push(...validateNoReservedPrefix(name)); - - // Check 5: Description length - issues.push(...validateDescriptionLength(description)); - - // Check 6: License field - issues.push(...validateLicense(parsed.data.license)); - - // Check 7: Metadata structure - issues.push(...validateMetadata(parsed.data.metadata)); - - // Check 8: metadata.version (semver) - issues.push(...validateMetadataVersion(parsed.data.metadata)); - - // Check 9: Compatibility field - issues.push(...validateCompatibility(parsed.data.compatibility)); - - // Check 10: Allowed tools field - issues.push(...validateAllowedTools(parsed.data["allowed-tools"])); - - return { skill: parentDir, file: filePath, issues, description }; -} - -// ── Skill discovery ────────────────────────────────────────────────────────── - -function findSkillFiles(skillsDir: string): string[] { - if (!existsSync(skillsDir)) return []; - - return readdirSync(skillsDir) - .filter((name) => { - const full = resolve(skillsDir, name); - if (!statSync(full).isDirectory()) return false; - return existsSync(resolve(full, "SKILL.md")); - }) - .sort() - .map((name) => resolve(skillsDir, name, "SKILL.md")); -} - -/** - * Resolve a CLI positional argument to one or more SKILL.md file paths. - * - * Three accepted forms: - * 1. Path to a SKILL.md file directly → [that file] - * 2. Path to a skill folder (directory containing SKILL.md) → [/SKILL.md] - * 3. Path to a skills container (directory of skill subdirectories) → all SKILL.md inside - */ -function resolveSkillFiles(arg: string): string[] | string { - const resolved = resolve(arg); - - if (!existsSync(resolved)) { - return `Path not found: ${arg}`; - } - - const st = statSync(resolved); - - if (st.isFile()) { - if (basename(resolved) !== "SKILL.md") { - return `Expected a SKILL.md file but got: ${arg}`; - } - return [resolved]; - } - - if (st.isDirectory()) { - const directSkillMd = resolve(resolved, "SKILL.md"); - if (existsSync(directSkillMd)) { - // Skill folder — the directory itself is the skill - return [directSkillMd]; - } - // Skills container — enumerate subdirectories - const found = findSkillFiles(resolved); - if (found.length === 0) { - return `No skills found in directory: ${arg}`; - } - return found; - } - - return `Path is neither a file nor a directory: ${arg}`; -} - -// ── JSON output ────────────────────────────────────────────────────────────── - -/** All check identifiers produced by the validator */ -const ALL_CHECKS = [ - "frontmatter", - "name-format", - "missing-field", - "description-format", - "no-xml-tags", - "reserved-prefix", - "description-length", - "license", - "metadata", - "metadata-version", - "compatibility", - "allowed-tools", - "trigger-overlap-disambiguation", - "disambiguation-removal", -] as const; - -export interface FrontmatterSkillResult { - name: string; - path: string; - status: "pass" | "fail" | "warn"; - errors: string[]; - warnings: string[]; - checks: Record; - /** Raw description text ("" when missing). Length is derivable by consumers. */ - description: string; -} - -export interface FrontmatterJsonResult { - skills: FrontmatterSkillResult[]; - summary: { - total: number; - passed: number; - failed: number; - warnings: number; - }; -} - -function buildJsonResult(results: ValidationResult[]): FrontmatterJsonResult { - const skills: FrontmatterSkillResult[] = []; - let passed = 0; - let failed = 0; - let warningCount = 0; - - for (const result of results) { - const errors = result.issues.filter(i => i.severity !== "warning"); - const warnings = result.issues.filter(i => i.severity === "warning"); - - // Build checks map: true = passed, false = has issue for that check - const failedChecks = new Set(result.issues.map(i => i.check)); - const checks: Record = {}; - for (const check of ALL_CHECKS) { - checks[check] = !failedChecks.has(check); - } - - let status: "pass" | "fail" | "warn"; - if (errors.length > 0) { - status = "fail"; - failed++; - } else if (warnings.length > 0) { - status = "warn"; - warningCount++; - } else { - status = "pass"; - passed++; - } - - const description = result.description ?? ""; - skills.push({ - name: result.skill, - path: relative(REPO_ROOT, result.file).replace(/\\/g, "/"), - status, - errors: errors.map(e => `[${e.check}] ${e.message}`), - warnings: warnings.map(w => `[${w.check}] ${w.message}`), - checks, - description, - }); - } - - return { - skills, - summary: { - total: results.length, - passed, - failed, - warnings: warningCount, - }, - }; -} // ── CLI entry point ────────────────────────────────────────────────────────── @@ -714,14 +50,14 @@ function main(): void { const skillFiles: string[] = []; - for (const arg of positionals) { - const result = resolveSkillFiles(arg); - if (typeof result === "string") { - console.error(`\n❌ ${result}\n`); + for (const relativePath of positionals) { + const result = resolveSkillFiles(relativePath); + if (result.errorMessage) { + console.error(`\n❌ ${result.errorMessage}\n`); process.exitCode = 1; return; } - skillFiles.push(...result); + skillFiles.push(...result.files); } // Validate all skill files diff --git a/scripts/src/frontmatter/helpers.ts b/scripts/src/frontmatter/helpers.ts new file mode 100644 index 000000000..ad900821b --- /dev/null +++ b/scripts/src/frontmatter/helpers.ts @@ -0,0 +1,697 @@ +// ── Types ──────────────────────────────────────────────────────────────────── + +import { existsSync, readdirSync, readFileSync, statSync } from "node:fs"; +import { basename, dirname, relative, resolve } from "node:path"; +import { getRepoRoot, parseSkillContent } from "../shared/skill-helper.js"; + +export interface ValidationIssue { + check: string; // Check identifier (e.g., "name-format", "description-format") + message: string; // Human-readable explanation + severity?: "error" | "warning"; // Defaults to "error" if omitted +} + +export interface ValidationResult { + skill: string; + file: string; + issues: ValidationIssue[]; + /** Raw description text, or null when missing/unparseable. */ + description?: string | null; +} + +export interface SkillRoutingContext { + name: string; + file: string; + description: string; + triggerPhrases: string[]; + broad: boolean; +} + +const NAME_RE = /^[a-z0-9]([a-z0-9-]{0,62}[a-z0-9])?$/; +const RESERVED_PREFIXES = ["claude-", "anthropic-"]; + +/** + * Check 1: Validate the `name` field per the agentskills.io spec. + * + * Rules: + * - Lowercase alphanumeric + hyphens only + * - No consecutive hyphens (--) + * - Must not start or end with a hyphen + * - Length 1–64 + * - Must match the parent directory name + */ +export function validateName(name: string | null, parentDirName: string): ValidationIssue[] { + const issues: ValidationIssue[] = []; + + if (name === null || name === "") { + issues.push({ check: "name-format", message: "Missing required 'name' field" }); + return issues; + } + + if (name.length > 64) { + issues.push({ check: "name-format", message: `Name is ${name.length} chars (max 64)` }); + } + + if (!NAME_RE.test(name)) { + if (/[A-Z]/.test(name)) { + issues.push({ check: "name-format", message: `Name contains uppercase characters: ${name}` }); + } else if (/[^a-z0-9-]/.test(name)) { + issues.push({ check: "name-format", message: `Name contains invalid characters (only a-z, 0-9, - allowed): ${name}` }); + } else if (name.startsWith("-") || name.endsWith("-")) { + issues.push({ check: "name-format", message: `Name must not start or end with a hyphen: ${name}` }); + } else { + issues.push({ check: "name-format", message: `Name does not match spec pattern: ${name}` }); + } + } + + if (name.includes("--")) { + issues.push({ check: "name-format", message: `Name contains consecutive hyphens (--): ${name}` }); + } + + if (name !== parentDirName) { + issues.push({ check: "name-format", message: `Name "${name}" does not match parent directory "${parentDirName}"` }); + } + + return issues; +} + +/** + * Check 2: Validate the description uses inline double-quoted format. + * + * Rejects >- folded scalars and | literal blocks which are incompatible + * with skills.sh. + */ +export function validateDescriptionFormat(rawFrontmatter: string): ValidationIssue[] { + const issues: ValidationIssue[] = []; + + // Match description field followed by a block scalar indicator + if (/^description:\s*>-?\s*$/m.test(rawFrontmatter)) { + issues.push({ + check: "description-format", + message: "Description uses >- folded scalar (incompatible with skills.sh) — use inline double-quoted string instead", + }); + } + + if (/^description:\s*\|\s*$/m.test(rawFrontmatter)) { + issues.push({ + check: "description-format", + message: "Description uses | literal block (preserves newlines) — use inline double-quoted string instead", + }); + } + + if (/^description:\s*\|-\s*$/m.test(rawFrontmatter)) { + issues.push({ + check: "description-format", + message: "Description uses |- literal block (strip) — use inline double-quoted string instead", + }); + } + + return issues; +} + +/** + * Check 3: Validate no XML tags (< or >) in frontmatter. + * + * Frontmatter appears in the system prompt — XML tags are a security risk + * (injection vector). + */ +export function validateNoXmlTags(rawFrontmatter: string): ValidationIssue[] { + const issues: ValidationIssue[] = []; + const lines = rawFrontmatter.split("\n"); + + for (let i = 0; i < lines.length; i++) { + const line = lines[i]; + // Look for < or > that appear to be tags (not comparison operators or arrows) + if (/<[a-zA-Z/!]/.test(line) || />[^-]/.test(line) && / 1024) { + issues.push({ + check: "description-length", + message: `Description is ${description.length} chars (max 1024)`, + }); + } + + return issues; +} + +const SEMVER_RE = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/; + +/** + * Check 6: Validate that `license` field is present and is a string. + */ +export function validateLicense(license: unknown): ValidationIssue[] { + const issues: ValidationIssue[] = []; + + if (license === undefined || license === null || license === "") { + issues.push({ + check: "license", + message: "Missing 'license' field in frontmatter", + severity: "warning", + }); + } else if (typeof license !== "string") { + issues.push({ + check: "license", + message: `'license' field must be a string, got ${typeof license}`, + }); + } + + return issues; +} + +/** + * Check 7: Validate `metadata` field structure (optional, map of string keys to string values per spec). + */ +export function validateMetadata(metadata: unknown): ValidationIssue[] { + const issues: ValidationIssue[] = []; + + if (metadata === undefined || metadata === null) { + issues.push({ + check: "metadata", + message: "Missing 'metadata' block in frontmatter", + severity: "warning", + }); + return issues; + } + + if (typeof metadata !== "object" || Array.isArray(metadata)) { + issues.push({ + check: "metadata", + message: `'metadata' field must be a key-value mapping, got ${Array.isArray(metadata) ? "array" : typeof metadata}`, + }); + return issues; + } + + const meta = metadata as Record; + for (const [key, value] of Object.entries(meta)) { + if (typeof value !== "string") { + issues.push({ + check: "metadata", + message: `metadata.${key} must be a string, got ${typeof value}`, + severity: "warning", + }); + } + } + + return issues; +} + +/** + * Check 8: Validate `metadata.version` is present and follows semver (X.Y.Z). + */ +export function validateMetadataVersion(metadata: unknown): ValidationIssue[] { + const issues: ValidationIssue[] = []; + + if (metadata === undefined || metadata === null || typeof metadata !== "object") { + issues.push({ + check: "metadata-version", + message: "Missing 'metadata' block with 'version' field in frontmatter", + severity: "warning", + }); + return issues; + } + + const meta = metadata as Record; + const version = meta.version; + + if (version === undefined || version === null || version === "") { + issues.push({ + check: "metadata-version", + message: "Missing 'version' in metadata block", + severity: "warning", + }); + return issues; + } + + const versionStr = String(version); + if (!SEMVER_RE.test(versionStr)) { + issues.push({ + check: "metadata-version", + message: `metadata.version "${versionStr}" is not valid semver (expected X.Y.Z)`, + }); + } + + return issues; +} + +/** + * Check 8: Validate `compatibility` field (optional, max 500 chars per spec). + */ +export function validateCompatibility(compatibility: unknown): ValidationIssue[] { + const issues: ValidationIssue[] = []; + + if (compatibility === undefined || compatibility === null) { + return issues; // Optional field + } + + if (typeof compatibility !== "string") { + issues.push({ + check: "compatibility", + message: `'compatibility' field must be a string, got ${typeof compatibility}`, + }); + return issues; + } + + if (compatibility === "") { + issues.push({ + check: "compatibility", + message: "'compatibility' field must not be empty if provided", + }); + return issues; + } + + if (compatibility.length > 500) { + issues.push({ + check: "compatibility", + message: `Compatibility is ${compatibility.length} chars (max 500)`, + }); + } + + return issues; +} + +/** + * Check 9: Validate `allowed-tools` field (optional, space-delimited string per spec). + */ +export function validateAllowedTools(allowedTools: unknown): ValidationIssue[] { + const issues: ValidationIssue[] = []; + + if (allowedTools === undefined || allowedTools === null) { + return issues; // Optional field + } + + if (typeof allowedTools !== "string") { + issues.push({ + check: "allowed-tools", + message: `'allowed-tools' field must be a string, got ${typeof allowedTools}`, + }); + return issues; + } + + if (allowedTools === "") { + issues.push({ + check: "allowed-tools", + message: "'allowed-tools' field must not be empty if provided", + }); + } + + return issues; +} + +const TRIGGER_SECTION_KEYWORDS = ["WHEN", "USE FOR", "TRIGGERS"] as const; +const TRIGGER_SECTION_STOP_HEADERS = ["DO NOT USE FOR", ...TRIGGER_SECTION_KEYWORDS] as const; + +// Extracts only explicit trigger sections and stops before disambiguation/next trigger section. +// Section headers must include a trailing colon; `PREFER OVER` is handled separately +// because it may appear without one. +const TRIGGER_SECTION_RE = new RegExp( + `\\b(?:${TRIGGER_SECTION_KEYWORDS.join("|")}):\\s*([^]*?)(?=(?:\\b(?:${TRIGGER_SECTION_STOP_HEADERS.join("|")}):|\\bPREFER OVER\\b|$))`, + "gi", +); +const DO_NOT_USE_FOR_RE = /\bDO NOT USE FOR:/i; +const SANITIZED_DO_NOT_USE_FOR_MARKER = "DO_NOT_USE_FOR:"; +const DISAMBIGUATION_CLAUSE_MARKER_RE = new RegExp(`(?:${SANITIZED_DO_NOT_USE_FOR_MARKER}|PREFER OVER\\b)`, "i"); +export const BROAD_SKILL_NAMES = new Set(["azure-prepare", "azure-deploy"]); +const MIN_TRIGGER_PHRASE_LENGTH = 4; +export const OVERLAP_PREVIEW_LIMIT = 3; + +function normalizeTriggerPhrase(phrase: string): string { + return phrase + .toLowerCase() + .replace(/^["'`]+|["'`]+$/g, "") + .replace(/\([^)]*\)/g, "") + .replace(/[^a-z0-9]+/g, " ") + .trim(); +} + +export function extractTriggerPhrases(description: string | null): string[] { + if (!description) return []; + + // Prevent `USE FOR:` inside `DO NOT USE FOR:` from being treated as a trigger section. + const sanitizedDescription = description.replace(/\bDO NOT USE FOR:/gi, SANITIZED_DO_NOT_USE_FOR_MARKER); + const phrases: string[] = []; + let match: RegExpExecArray | null; + while ((match = TRIGGER_SECTION_RE.exec(sanitizedDescription)) !== null) { + const section = match[1]; + const disambiguationStart = section.search(DISAMBIGUATION_CLAUSE_MARKER_RE); + const triggerSection = disambiguationStart >= 0 ? section.slice(0, disambiguationStart) : section; + for (const rawPhrase of triggerSection.split(/[;,]/)) { + const normalized = normalizeTriggerPhrase(rawPhrase); + if (normalized.length >= MIN_TRIGGER_PHRASE_LENGTH) { + phrases.push(normalized); + } + } + } + + return [...new Set(phrases)]; +} + +export function hasDoNotUseForClause(description: string | null): boolean { + if (!description) return false; + return DO_NOT_USE_FOR_RE.test(description); +} + +export function hasPreferOverClause(description: string | null, competingSkillName: string): boolean { + if (!description) return false; + const escapedName = competingSkillName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + return new RegExp(`\\bPREFER OVER\\s+${escapedName}\\b`, "i").test(description); +} + +export function validateSkillFile(filePath: string): ValidationResult { + const parentDir = basename(dirname(filePath)); + const content = readFileSync(filePath, "utf-8"); + const parsed = parseSkillContent(content); + const issues: ValidationIssue[] = []; + + if (parsed === null) { + issues.push({ check: "frontmatter", message: "Missing YAML frontmatter (file must start with ---)" }); + return { skill: parentDir, file: filePath, issues, description: null }; + } + + const name = typeof parsed.data.name === "string" ? parsed.data.name : null; + const description = typeof parsed.data.description === "string" ? parsed.data.description : null; + + // Check required fields + if (description === null) { + issues.push({ check: "missing-field", message: "Missing required 'description' field" }); + } + + // Check 1: Name validation + issues.push(...validateName(name, parentDir)); + + // Check 2: Description format (needs raw YAML source) + issues.push(...validateDescriptionFormat(parsed.raw)); + + // Check 3: No XML tags (needs raw YAML source) + issues.push(...validateNoXmlTags(parsed.raw)); + + // Check 4: No reserved prefixes + issues.push(...validateNoReservedPrefix(name)); + + // Check 5: Description length + issues.push(...validateDescriptionLength(description)); + + // Check 6: License field + issues.push(...validateLicense(parsed.data.license)); + + // Check 7: Metadata structure + issues.push(...validateMetadata(parsed.data.metadata)); + + // Check 8: metadata.version (semver) + issues.push(...validateMetadataVersion(parsed.data.metadata)); + + // Check 9: Compatibility field + issues.push(...validateCompatibility(parsed.data.compatibility)); + + // Check 10: Allowed tools field + issues.push(...validateAllowedTools(parsed.data["allowed-tools"])); + + return { skill: parentDir, file: filePath, issues, description }; +} + +export function validateTriggerOverlapDisambiguation( + skill: SkillRoutingContext, + allSkills: SkillRoutingContext[], +): ValidationIssue[] { + if (skill.broad || skill.triggerPhrases.length === 0) return []; + + const issues: ValidationIssue[] = []; + const skillTriggerSet = new Set(skill.triggerPhrases); + + for (const competitor of allSkills) { + if (competitor.name === skill.name || !competitor.broad) continue; + if (competitor.triggerPhrases.length === 0) continue; + + const overlaps = competitor.triggerPhrases.filter( + (trigger) => skillTriggerSet.has(trigger), + ); + if (overlaps.length === 0) continue; + + if (!hasAnyDisambiguationClause(skill.description, competitor.name)) { + const overlapPreview = overlaps.slice(0, OVERLAP_PREVIEW_LIMIT).join(", "); + const overlapSuffix = overlaps.length > OVERLAP_PREVIEW_LIMIT ? ", ..." : ""; + issues.push({ + check: "trigger-overlap-disambiguation", + severity: "error", + message: `Trigger overlap with broad skill "${competitor.name}" (${overlapPreview}${overlapSuffix}). Add DO NOT USE FOR: or PREFER OVER ${competitor.name}.`, + }); + } + } + + return issues; +} + +const REPO_ROOT = getRepoRoot(); + +function hasAnyDisambiguationClause(description: string | null, competingSkillName: string): boolean { + return hasDoNotUseForClause(description) || hasPreferOverClause(description, competingSkillName); +} + +export function buildSkillRoutingContexts(skillFiles: string[]): SkillRoutingContext[] { + const contexts: SkillRoutingContext[] = []; + for (const file of skillFiles) { + const content = readFileSync(file, "utf-8"); + const parsed = parseSkillContent(content); + if (parsed === null) continue; + const name = typeof parsed.data.name === "string" ? parsed.data.name : basename(dirname(file)); + const description = typeof parsed.data.description === "string" ? parsed.data.description : ""; + const triggerPhrases = extractTriggerPhrases(description); + contexts.push({ + name, + file, + description, + triggerPhrases, + broad: isBroadRoutingSkill(name), + }); + } + return contexts; +} + +function isBroadRoutingSkill(name: string): boolean { + // Restrict "broad" classification to an explicit allowlist to avoid + // specialized skills being accidentally reclassified as broad. + return BROAD_SKILL_NAMES.has(name); +} + +/** + * Resolve a CLI positional argument to one or more SKILL.md file paths. + * + * Three accepted forms: + * 1. Path to a SKILL.md file directly → [that file] + * 2. Path to a directory that has a skill nested within, but has no ancestor directory that is a skill directory. + * + * If a directory contains a SKILL.md, it will be considered as a skill directory. + * Nested SKILL.md files under skill directories won't be included in the result. + * + * For example, consider the following files. + * - plugins/plugin-A/skills/skill-A/SKILL.md + * - plugins/plugin-A/skills/skill-A/references/SKILL.md + * + * The input path can be plugins/, plugins/plugin-A, plugins/plugin-A/skills, plugins/plugin-A/skills/skill-A + * It cannot be plugins/plugin-A/skills/skill-A/references because plugins/plugin-A/skills/skill-A is a skill directory. + * + * @returns Paths to discovered SKILL.md files. + */ +export function resolveSkillFiles(relativePath: string): { + files: string[], + errorMessage?: string +} { + const resolved = resolve(relativePath); + + if (!existsSync(resolved)) { + return { + files: [], + errorMessage: `Path not found: ${relativePath}` + }; + } + + const st = statSync(resolved); + + if (st.isFile()) { + if (basename(resolved) !== "SKILL.md") { + return { + files: [], + errorMessage: `Expected a SKILL.md file but got: ${relativePath}`, + }; + } + return { files: [resolved] }; + } + + if (st.isDirectory()) { + const files: string[] = []; + const candidates: string[] = [resolved]; + + while (candidates.length > 0) { + const dir = candidates.pop()!; + let entries: string[]; + try { + entries = readdirSync(dir); + } catch { + continue; + } + + const skillMd = resolve(dir, "SKILL.md"); + if (existsSync(skillMd)) { + // This directory is a skill — record its SKILL.md and don't recurse into subdirs + // Since we only check for nested directories, the directory to search must not be nested in a skill directory. + files.push(skillMd); + } else { + // Not a skill directory — add subdirectories to the search queue + for (const entry of entries) { + const full = resolve(dir, entry); + try { + if (statSync(full).isDirectory()) { + candidates.push(full); + } + } catch { + // skip inaccessible entries + } + } + } + } + + files.sort(); + + if (files.length === 0) { + return { files: [], errorMessage: `No skills found in directory: ${relativePath}` }; + } + return { files }; + } + + return { + files: [], + errorMessage: `Path is neither a file nor a directory: ${relativePath}`, + } +} + +// ── JSON output ────────────────────────────────────────────────────────────── + +/** All check identifiers produced by the validator */ +const ALL_CHECKS = [ + "frontmatter", + "name-format", + "missing-field", + "description-format", + "no-xml-tags", + "reserved-prefix", + "description-length", + "license", + "metadata", + "metadata-version", + "compatibility", + "allowed-tools", + "trigger-overlap-disambiguation", + "disambiguation-removal", +] as const; + +export interface FrontmatterSkillResult { + name: string; + path: string; + status: "pass" | "fail" | "warn"; + errors: string[]; + warnings: string[]; + checks: Record; + /** Raw description text ("" when missing). Length is derivable by consumers. */ + description: string; +} + +export interface FrontmatterJsonResult { + skills: FrontmatterSkillResult[]; + summary: { + total: number; + passed: number; + failed: number; + warnings: number; + }; +} + +export function buildJsonResult(results: ValidationResult[]): FrontmatterJsonResult { + const skills: FrontmatterSkillResult[] = []; + let passed = 0; + let failed = 0; + let warningCount = 0; + + for (const result of results) { + const errors = result.issues.filter(i => i.severity !== "warning"); + const warnings = result.issues.filter(i => i.severity === "warning"); + + // Build checks map: true = passed, false = has issue for that check + const failedChecks = new Set(result.issues.map(i => i.check)); + const checks: Record = {}; + for (const check of ALL_CHECKS) { + checks[check] = !failedChecks.has(check); + } + + let status: "pass" | "fail" | "warn"; + if (errors.length > 0) { + status = "fail"; + failed++; + } else if (warnings.length > 0) { + status = "warn"; + warningCount++; + } else { + status = "pass"; + passed++; + } + + const description = result.description ?? ""; + skills.push({ + name: result.skill, + path: relative(REPO_ROOT, result.file).replace(/\\/g, "/"), + status, + errors: errors.map(e => `[${e.check}] ${e.message}`), + warnings: warnings.map(w => `[${w.check}] ${w.message}`), + checks, + description, + }); + } + + return { + skills, + summary: { + total: results.length, + passed, + failed, + warnings: warningCount, + }, + }; +} \ No newline at end of file diff --git a/scripts/src/tokens/__tests__/integration/count.integration.test.ts b/scripts/src/tokens/__tests__/integration/count.integration.test.ts index 809dc2102..eab3cbf95 100644 --- a/scripts/src/tokens/__tests__/integration/count.integration.test.ts +++ b/scripts/src/tokens/__tests__/integration/count.integration.test.ts @@ -20,7 +20,7 @@ describe("count command integration", () => { // Ignore clean up errors in tests } mkdirSync(join(TEST_DIR, ".github", "skills"), { recursive: true }); - mkdirSync(join(TEST_DIR, "plugin", "skills"), { recursive: true }); + mkdirSync(join(TEST_DIR, "plugins", "test-plugin", "skills"), { recursive: true }); // Spy on console.log to capture output consoleSpy = vi.spyOn(console, "log").mockImplementation(() => { }); @@ -40,7 +40,7 @@ describe("count command integration", () => { it("counts tokens in default directories", () => { // Create test files writeFileSync(join(TEST_DIR, ".github", "skills", "test.md"), "a".repeat(400)); // 100 tokens - writeFileSync(join(TEST_DIR, "plugin", "skills", "another.md"), "b".repeat(800)); // 200 tokens + writeFileSync(join(TEST_DIR, "plugins", "test-plugin", "skills", "another.md"), "b".repeat(800)); // 200 tokens count(TEST_DIR, []); From ecbdf91a2ab41b7b255dbb58561d750b6df863ca Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Thu, 16 Jul 2026 14:34:37 -0700 Subject: [PATCH 24/53] move new foundry files --- .../foundry-agent/azd-guidance/azd-guidance.md | 0 .../foundry-agent/azd-guidance/references/azd-ai-cli.md | 0 scripts/package.json | 3 +-- 3 files changed, 1 insertion(+), 2 deletions(-) rename {plugin => plugins/azure-skills}/skills/microsoft-foundry/foundry-agent/azd-guidance/azd-guidance.md (100%) rename {plugin => plugins/azure-skills}/skills/microsoft-foundry/foundry-agent/azd-guidance/references/azd-ai-cli.md (100%) diff --git a/plugin/skills/microsoft-foundry/foundry-agent/azd-guidance/azd-guidance.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/azd-guidance/azd-guidance.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/azd-guidance/azd-guidance.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/azd-guidance/azd-guidance.md diff --git a/plugin/skills/microsoft-foundry/foundry-agent/azd-guidance/references/azd-ai-cli.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/azd-guidance/references/azd-ai-cli.md similarity index 100% rename from plugin/skills/microsoft-foundry/foundry-agent/azd-guidance/references/azd-ai-cli.md rename to plugins/azure-skills/skills/microsoft-foundry/foundry-agent/azd-guidance/references/azd-ai-cli.md diff --git a/scripts/package.json b/scripts/package.json index ca6094fa3..07b14a127 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -9,7 +9,6 @@ "checkPluginVersionPr": "node --import tsx src/check-plugin-version-pr.ts", "verifyBuildOutputVersions": "node --import tsx src/verify-build-output-versions.ts", "tokens": "node --import tsx src/tokens/cli.ts", - "local": "echo 'Removed: use npm run build at repo root + copilot --plugin-dir ./output instead' && exit 1", "references": "node --import tsx src/references/cli.ts", "frontmatter": "node --import tsx src/frontmatter/cli.ts", "verify-local": "echo 'Removed: use npm run build at repo root + copilot --plugin-dir ./output instead' && exit 1", @@ -43,4 +42,4 @@ "engines": { "node": "^20.19.0 || ^22.13.0 || >=24" } -} +} \ No newline at end of file From b6da5238eb46a507f71c886716c1baf4e8ff2fa7 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Thu, 16 Jul 2026 14:37:37 -0700 Subject: [PATCH 25/53] give frontmatter cli a default check all option --- scripts/src/frontmatter/cli.ts | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/scripts/src/frontmatter/cli.ts b/scripts/src/frontmatter/cli.ts index 2ae60d7d0..16b53166a 100644 --- a/scripts/src/frontmatter/cli.ts +++ b/scripts/src/frontmatter/cli.ts @@ -38,14 +38,9 @@ function main(): void { const jsonOutput = values.json ?? false; if (positionals.length === 0) { - console.error("\n❌ No path specified.\n"); - console.error("Usage:"); - console.error(" npm run frontmatter # Validate a specific SKILL.md file"); - console.error(" npm run frontmatter # Validate a single skill folder"); - console.error(" npm run frontmatter # Validate all skills in a directory"); - console.error(" npm run frontmatter ... # Mix of the above\n"); - process.exitCode = 1; - return; + // Use default build output location + // Note that the path is relative to the scripts/ directory, not this module. + positionals.push("../output"); } const skillFiles: string[] = []; From 1da94898372feed5ab2f9ccffb73566acec9e7b2 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Thu, 16 Jul 2026 14:39:37 -0700 Subject: [PATCH 26/53] fix lint --- scripts/package.json | 2 -- scripts/src/frontmatter/cli.ts | 3 --- 2 files changed, 5 deletions(-) diff --git a/scripts/package.json b/scripts/package.json index 07b14a127..1017b8e2d 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -11,9 +11,7 @@ "tokens": "node --import tsx src/tokens/cli.ts", "references": "node --import tsx src/references/cli.ts", "frontmatter": "node --import tsx src/frontmatter/cli.ts", - "verify-local": "echo 'Removed: use npm run build at repo root + copilot --plugin-dir ./output instead' && exit 1", "test": "vitest run", - "test:watch": "vitest", "test:coverage": "vitest run --coverage", "typecheck": "tsc --noEmit", "lint": "eslint", diff --git a/scripts/src/frontmatter/cli.ts b/scripts/src/frontmatter/cli.ts index 16b53166a..51bc40dd7 100644 --- a/scripts/src/frontmatter/cli.ts +++ b/scripts/src/frontmatter/cli.ts @@ -22,9 +22,6 @@ import { parseArgs } from "node:util"; import { buildJsonResult, buildSkillRoutingContexts, resolveSkillFiles, validateSkillFile, validateTriggerOverlapDisambiguation, ValidationResult } from "./helpers.js"; - -// ── CLI entry point ────────────────────────────────────────────────────────── - function main(): void { const { values, positionals } = parseArgs({ args: process.argv.slice(2), From b4b1d71b1857f84fb9f07cb7871a5a3c63e8e078 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Thu, 16 Jul 2026 14:40:02 -0700 Subject: [PATCH 27/53] Remove invalid param in .vally.yaml --- .vally.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.vally.yaml b/.vally.yaml index 5d75b4453..7f976353e 100644 --- a/.vally.yaml +++ b/.vally.yaml @@ -1,6 +1,4 @@ paths: - skills: - - plugins/skills evals: - evals evalFilenames: ["eval.yaml", "eval.yml", "*.eval.yaml"] From 34cf0e5eef277fe45e961c1347951cf57cc0535b Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Thu, 16 Jul 2026 14:49:06 -0700 Subject: [PATCH 28/53] clean up unused script --- scripts/package-lock.json | 152 -------------------------------------- scripts/package.json | 3 - 2 files changed, 155 deletions(-) diff --git a/scripts/package-lock.json b/scripts/package-lock.json index 1474ef22f..de08faaf6 100644 --- a/scripts/package-lock.json +++ b/scripts/package-lock.json @@ -16,7 +16,6 @@ "fast-xml-parser": "^5.9.0", "gray-matter": "^4.0.3", "micromatch": "^4.0.8", - "sirv-cli": "^3.0.1", "tsx": "^4.22.1", "typescript": "~6.0.2", "typescript-eslint": "^8.61.0", @@ -810,13 +809,6 @@ "url": "https://github.com/sponsors/Boshen" } }, - "node_modules/@polka/url": { - "version": "1.0.0-next.29", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", - "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", - "dev": true, - "license": "MIT" - }, "node_modules/@rolldown/binding-android-arm64": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.3.tgz", @@ -1658,16 +1650,6 @@ "node": ">=18" } }, - "node_modules/console-clear": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/console-clear/-/console-clear-1.1.1.tgz", - "integrity": "sha512-pMD+MVR538ipqkG5JXeOEbKWS5um1H4LUUccUQG68qpeqBYbzYy79Gh55jkd2TtPdRfUaLWdv6LPP//5Zt0aPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -2144,19 +2126,6 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/get-port": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", - "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -2387,16 +2356,6 @@ "node": ">=0.10.0" } }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -2672,16 +2631,6 @@ "url": "https://opencollective.com/parcel" } }, - "node_modules/local-access": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/local-access/-/local-access-1.1.0.tgz", - "integrity": "sha512-XfegD5pyTAfb+GY6chk283Ox5z8WexG56OvM06RWLpAc/UHozO8X6xAxEkIitZOtsSMM1Yr3DkHgW5W+onLhCw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -2777,26 +2726,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/mrmime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", - "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -3035,19 +2964,6 @@ "@rolldown/binding-win32-x64-msvc": "1.0.3" } }, - "node_modules/sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "mri": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/section-matter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", @@ -3062,16 +2978,6 @@ "node": ">=4" } }, - "node_modules/semiver": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semiver/-/semiver-1.1.0.tgz", - "integrity": "sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/semver": { "version": "7.7.3", "dev": true, @@ -3111,44 +3017,6 @@ "dev": true, "license": "ISC" }, - "node_modules/sirv": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", - "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@polka/url": "^1.0.0-next.24", - "mrmime": "^2.0.0", - "totalist": "^3.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/sirv-cli": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/sirv-cli/-/sirv-cli-3.0.1.tgz", - "integrity": "sha512-ICXaF2u6IQhLZ0EXF6nqUF4YODfSQSt+mGykt4qqO5rY+oIiwdg7B8w2PVDBJlQulaS2a3J8666CUoDoAuCGvg==", - "dev": true, - "license": "MIT", - "dependencies": { - "console-clear": "^1.1.0", - "get-port": "^5.1.1", - "kleur": "^4.1.4", - "local-access": "^1.0.1", - "sade": "^1.6.0", - "semiver": "^1.0.0", - "sirv": "^3.0.0", - "tinydate": "^1.0.0" - }, - "bin": { - "sirv": "bin.js" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -3220,16 +3088,6 @@ "dev": true, "license": "MIT" }, - "node_modules/tinydate": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/tinydate/-/tinydate-1.3.0.tgz", - "integrity": "sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/tinyexec": { "version": "1.0.2", "dev": true, @@ -3278,16 +3136,6 @@ "node": ">=8.0" } }, - "node_modules/totalist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", - "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/ts-api-utils": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", diff --git a/scripts/package.json b/scripts/package.json index 1017b8e2d..bce94c982 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -17,8 +17,6 @@ "lint": "eslint", "lint:fix": "eslint --fix", "dashboard:collect": "node --import tsx src/dashboard/compose.ts", - "dashboard:serve": "sirv ../dashboard --port 3000 --dev", - "dashboard": "npm run dashboard:collect && npm run dashboard:serve", "generateMcpAllowlists": "node --import tsx src/generate-mcp-allowlists.ts", "vally": "node --import tsx src/vally/cli.ts" }, @@ -31,7 +29,6 @@ "fast-xml-parser": "^5.9.0", "gray-matter": "^4.0.3", "micromatch": "^4.0.8", - "sirv-cli": "^3.0.1", "tsx": "^4.22.1", "typescript": "~6.0.2", "typescript-eslint": "^8.61.0", From c8ae35e5f623ad8511aa91e124efc7a055055b3f Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Fri, 17 Jul 2026 09:55:28 -0700 Subject: [PATCH 29/53] rename eval dirname --- evals/{azure => azure-skills}/airunway-aks-setup/eval.yaml | 0 .../airunway-aks-setup/fixture/kubeconfig.yaml | 0 .../{azure => azure-skills}/appinsights-instrumentation/eval.yaml | 0 .../appinsights-instrumentation/fixture/aspnetcore-app/Program.cs | 0 .../fixture/aspnetcore-app/aspnetcore-app.csproj | 0 .../appinsights-instrumentation/fixture/package.json | 0 .../appinsights-instrumentation/fixture/python-app/main.py | 0 .../fixture/python-app/requirements.txt | 0 evals/{azure => azure-skills}/azure-ai/eval.yaml | 0 evals/{azure => azure-skills}/azure-aigateway/eval.yaml | 0 evals/{azure => azure-skills}/azure-compliance/eval.yaml | 0 .../azure-compute/capacity-reservation.eval.yaml | 0 .../azure-compute/essential-machine-management.eval.yaml | 0 evals/{azure => azure-skills}/azure-compute/vm-creator.eval.yaml | 0 .../azure-compute/vm-recommender.eval.yaml | 0 evals/{azure => azure-skills}/azure-cost/eval.yaml | 0 evals/{azure => azure-skills}/azure-deploy/eval.yaml | 0 evals/{azure => azure-skills}/azure-diagnostics/eval.yaml | 0 .../azure-enterprise-infra-planner/eval.yaml | 0 evals/{azure => azure-skills}/azure-kubernetes/eval.yaml | 0 .../azure-kubernetes/fixture/deployment.yaml | 0 .../azure-kubernetes/fixture/workloads.yaml | 0 evals/{azure => azure-skills}/azure-kusto/eval.yaml | 0 evals/{azure => azure-skills}/azure-messaging/eval.yaml | 0 evals/{azure => azure-skills}/azure-prepare/e2e-eval.yaml | 0 .../azure-prepare/fixture/containerized-web/Dockerfile | 0 .../azure-prepare/fixture/containerized-web/app.js | 0 .../azure-prepare/fixture/containerized-web/package.json | 0 .../azure-prepare/fixture/discussion-board/app.js | 0 .../azure-prepare/fixture/discussion-board/package.json | 0 .../azure-prepare/fixture/functions-event/function_app.py | 0 .../azure-prepare/fixture/functions-event/host.json | 0 .../azure-prepare/fixture/functions-event/requirements.txt | 0 .../azure-prepare/fixture/functions-http/function_app.py | 0 .../azure-prepare/fixture/functions-http/host.json | 0 .../azure-prepare/fixture/functions-http/requirements.txt | 0 .../azure-prepare/fixture/functions-servicebus/function_app.py | 0 .../azure-prepare/fixture/functions-servicebus/host.json | 0 .../azure-prepare/fixture/functions-servicebus/requirements.txt | 0 .../azure-prepare/fixture/functions-timer/function_app.py | 0 .../azure-prepare/fixture/functions-timer/host.json | 0 .../azure-prepare/fixture/functions-timer/requirements.txt | 0 .../azure-prepare/fixture/nodejs-hello/Dockerfile | 0 .../azure-prepare/fixture/nodejs-hello/app.js | 0 .../azure-prepare/fixture/nodejs-hello/package.json | 0 .../azure-prepare/fixture/portfolio/index.html | 0 .../azure-prepare/fixture/social-media/app.js | 0 .../azure-prepare/fixture/social-media/package.json | 0 .../azure-prepare/fixture/todo/api/package.json | 0 .../azure-prepare/fixture/todo/api/server.js | 0 .../azure-prepare/fixture/todo/frontend/index.html | 0 .../azure-prepare/fixture/url-shortener/function_app.py | 0 .../azure-prepare/fixture/url-shortener/host.json | 0 .../azure-prepare/fixture/url-shortener/requirements.txt | 0 .../azure-prepare/fixture/whiteboard/index.html | 0 evals/{azure => azure-skills}/azure-prepare/routing-eval.yaml | 0 evals/{azure => azure-skills}/azure-quotas/eval.yaml | 0 evals/{azure => azure-skills}/azure-reliability/eval.yaml | 0 evals/{azure => azure-skills}/azure-resource-lookup/eval.yaml | 0 evals/{azure => azure-skills}/azure-resource-visualizer/eval.yaml | 0 evals/{azure => azure-skills}/azure-storage/eval.yaml | 0 evals/{azure => azure-skills}/azure-upgrade/eval.yaml | 0 evals/{azure => azure-skills}/azure-validate/e2e-eval.yaml | 0 .../azure-validate/fixture/containerized-app/Dockerfile | 0 .../azure-validate/fixture/containerized-app/app.js | 0 .../azure-validate/fixture/containerized-app/azure.yaml | 0 .../fixture/containerized-app/infra/abbreviations.json | 0 .../azure-validate/fixture/containerized-app/infra/main.bicep | 0 .../fixture/containerized-app/infra/main.parameters.json | 0 .../fixture/containerized-app/infra/resources.bicep | 0 .../azure-validate/fixture/containerized-app/package.json | 0 .../azure-validate/fixture/portfolio/azure.yaml | 0 .../azure-validate/fixture/portfolio/index.html | 0 .../azure-validate/fixture/portfolio/infra/main.bicep | 0 .../azure-validate/fixture/portfolio/infra/main.parameters.json | 0 .../azure-validate/fixture/portfolio/infra/resources.bicep | 0 .../azure-validate/fixture/whiteboard/azure.yaml | 0 .../azure-validate/fixture/whiteboard/index.html | 0 .../azure-validate/fixture/whiteboard/infra/main.bicep | 0 .../azure-validate/fixture/whiteboard/infra/main.parameters.json | 0 .../azure-validate/fixture/whiteboard/infra/resources.bicep | 0 evals/{azure => azure-skills}/azure-validate/routing-eval.yaml | 0 evals/{azure => azure-skills}/entra-agent-id/eval.yaml | 0 evals/{azure => azure-skills}/entra-app-registration/eval.yaml | 0 evals/{azure => azure-skills}/microsoft-foundry/eval.yaml | 0 evals/{azure => azure-skills}/python-appservice-deploy/eval.yaml | 0 .../python-appservice-deploy/fixture/flask-app/app.py | 0 .../python-appservice-deploy/fixture/flask-app/requirements.txt | 0 88 files changed, 0 insertions(+), 0 deletions(-) rename evals/{azure => azure-skills}/airunway-aks-setup/eval.yaml (100%) rename evals/{azure => azure-skills}/airunway-aks-setup/fixture/kubeconfig.yaml (100%) rename evals/{azure => azure-skills}/appinsights-instrumentation/eval.yaml (100%) rename evals/{azure => azure-skills}/appinsights-instrumentation/fixture/aspnetcore-app/Program.cs (100%) rename evals/{azure => azure-skills}/appinsights-instrumentation/fixture/aspnetcore-app/aspnetcore-app.csproj (100%) rename evals/{azure => azure-skills}/appinsights-instrumentation/fixture/package.json (100%) rename evals/{azure => azure-skills}/appinsights-instrumentation/fixture/python-app/main.py (100%) rename evals/{azure => azure-skills}/appinsights-instrumentation/fixture/python-app/requirements.txt (100%) rename evals/{azure => azure-skills}/azure-ai/eval.yaml (100%) rename evals/{azure => azure-skills}/azure-aigateway/eval.yaml (100%) rename evals/{azure => azure-skills}/azure-compliance/eval.yaml (100%) rename evals/{azure => azure-skills}/azure-compute/capacity-reservation.eval.yaml (100%) rename evals/{azure => azure-skills}/azure-compute/essential-machine-management.eval.yaml (100%) rename evals/{azure => azure-skills}/azure-compute/vm-creator.eval.yaml (100%) rename evals/{azure => azure-skills}/azure-compute/vm-recommender.eval.yaml (100%) rename evals/{azure => azure-skills}/azure-cost/eval.yaml (100%) rename evals/{azure => azure-skills}/azure-deploy/eval.yaml (100%) rename evals/{azure => azure-skills}/azure-diagnostics/eval.yaml (100%) rename evals/{azure => azure-skills}/azure-enterprise-infra-planner/eval.yaml (100%) rename evals/{azure => azure-skills}/azure-kubernetes/eval.yaml (100%) rename evals/{azure => azure-skills}/azure-kubernetes/fixture/deployment.yaml (100%) rename evals/{azure => azure-skills}/azure-kubernetes/fixture/workloads.yaml (100%) rename evals/{azure => azure-skills}/azure-kusto/eval.yaml (100%) rename evals/{azure => azure-skills}/azure-messaging/eval.yaml (100%) rename evals/{azure => azure-skills}/azure-prepare/e2e-eval.yaml (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/containerized-web/Dockerfile (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/containerized-web/app.js (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/containerized-web/package.json (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/discussion-board/app.js (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/discussion-board/package.json (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/functions-event/function_app.py (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/functions-event/host.json (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/functions-event/requirements.txt (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/functions-http/function_app.py (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/functions-http/host.json (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/functions-http/requirements.txt (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/functions-servicebus/function_app.py (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/functions-servicebus/host.json (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/functions-servicebus/requirements.txt (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/functions-timer/function_app.py (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/functions-timer/host.json (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/functions-timer/requirements.txt (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/nodejs-hello/Dockerfile (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/nodejs-hello/app.js (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/nodejs-hello/package.json (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/portfolio/index.html (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/social-media/app.js (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/social-media/package.json (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/todo/api/package.json (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/todo/api/server.js (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/todo/frontend/index.html (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/url-shortener/function_app.py (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/url-shortener/host.json (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/url-shortener/requirements.txt (100%) rename evals/{azure => azure-skills}/azure-prepare/fixture/whiteboard/index.html (100%) rename evals/{azure => azure-skills}/azure-prepare/routing-eval.yaml (100%) rename evals/{azure => azure-skills}/azure-quotas/eval.yaml (100%) rename evals/{azure => azure-skills}/azure-reliability/eval.yaml (100%) rename evals/{azure => azure-skills}/azure-resource-lookup/eval.yaml (100%) rename evals/{azure => azure-skills}/azure-resource-visualizer/eval.yaml (100%) rename evals/{azure => azure-skills}/azure-storage/eval.yaml (100%) rename evals/{azure => azure-skills}/azure-upgrade/eval.yaml (100%) rename evals/{azure => azure-skills}/azure-validate/e2e-eval.yaml (100%) rename evals/{azure => azure-skills}/azure-validate/fixture/containerized-app/Dockerfile (100%) rename evals/{azure => azure-skills}/azure-validate/fixture/containerized-app/app.js (100%) rename evals/{azure => azure-skills}/azure-validate/fixture/containerized-app/azure.yaml (100%) rename evals/{azure => azure-skills}/azure-validate/fixture/containerized-app/infra/abbreviations.json (100%) rename evals/{azure => azure-skills}/azure-validate/fixture/containerized-app/infra/main.bicep (100%) rename evals/{azure => azure-skills}/azure-validate/fixture/containerized-app/infra/main.parameters.json (100%) rename evals/{azure => azure-skills}/azure-validate/fixture/containerized-app/infra/resources.bicep (100%) rename evals/{azure => azure-skills}/azure-validate/fixture/containerized-app/package.json (100%) rename evals/{azure => azure-skills}/azure-validate/fixture/portfolio/azure.yaml (100%) rename evals/{azure => azure-skills}/azure-validate/fixture/portfolio/index.html (100%) rename evals/{azure => azure-skills}/azure-validate/fixture/portfolio/infra/main.bicep (100%) rename evals/{azure => azure-skills}/azure-validate/fixture/portfolio/infra/main.parameters.json (100%) rename evals/{azure => azure-skills}/azure-validate/fixture/portfolio/infra/resources.bicep (100%) rename evals/{azure => azure-skills}/azure-validate/fixture/whiteboard/azure.yaml (100%) rename evals/{azure => azure-skills}/azure-validate/fixture/whiteboard/index.html (100%) rename evals/{azure => azure-skills}/azure-validate/fixture/whiteboard/infra/main.bicep (100%) rename evals/{azure => azure-skills}/azure-validate/fixture/whiteboard/infra/main.parameters.json (100%) rename evals/{azure => azure-skills}/azure-validate/fixture/whiteboard/infra/resources.bicep (100%) rename evals/{azure => azure-skills}/azure-validate/routing-eval.yaml (100%) rename evals/{azure => azure-skills}/entra-agent-id/eval.yaml (100%) rename evals/{azure => azure-skills}/entra-app-registration/eval.yaml (100%) rename evals/{azure => azure-skills}/microsoft-foundry/eval.yaml (100%) rename evals/{azure => azure-skills}/python-appservice-deploy/eval.yaml (100%) rename evals/{azure => azure-skills}/python-appservice-deploy/fixture/flask-app/app.py (100%) rename evals/{azure => azure-skills}/python-appservice-deploy/fixture/flask-app/requirements.txt (100%) diff --git a/evals/azure/airunway-aks-setup/eval.yaml b/evals/azure-skills/airunway-aks-setup/eval.yaml similarity index 100% rename from evals/azure/airunway-aks-setup/eval.yaml rename to evals/azure-skills/airunway-aks-setup/eval.yaml diff --git a/evals/azure/airunway-aks-setup/fixture/kubeconfig.yaml b/evals/azure-skills/airunway-aks-setup/fixture/kubeconfig.yaml similarity index 100% rename from evals/azure/airunway-aks-setup/fixture/kubeconfig.yaml rename to evals/azure-skills/airunway-aks-setup/fixture/kubeconfig.yaml diff --git a/evals/azure/appinsights-instrumentation/eval.yaml b/evals/azure-skills/appinsights-instrumentation/eval.yaml similarity index 100% rename from evals/azure/appinsights-instrumentation/eval.yaml rename to evals/azure-skills/appinsights-instrumentation/eval.yaml diff --git a/evals/azure/appinsights-instrumentation/fixture/aspnetcore-app/Program.cs b/evals/azure-skills/appinsights-instrumentation/fixture/aspnetcore-app/Program.cs similarity index 100% rename from evals/azure/appinsights-instrumentation/fixture/aspnetcore-app/Program.cs rename to evals/azure-skills/appinsights-instrumentation/fixture/aspnetcore-app/Program.cs diff --git a/evals/azure/appinsights-instrumentation/fixture/aspnetcore-app/aspnetcore-app.csproj b/evals/azure-skills/appinsights-instrumentation/fixture/aspnetcore-app/aspnetcore-app.csproj similarity index 100% rename from evals/azure/appinsights-instrumentation/fixture/aspnetcore-app/aspnetcore-app.csproj rename to evals/azure-skills/appinsights-instrumentation/fixture/aspnetcore-app/aspnetcore-app.csproj diff --git a/evals/azure/appinsights-instrumentation/fixture/package.json b/evals/azure-skills/appinsights-instrumentation/fixture/package.json similarity index 100% rename from evals/azure/appinsights-instrumentation/fixture/package.json rename to evals/azure-skills/appinsights-instrumentation/fixture/package.json diff --git a/evals/azure/appinsights-instrumentation/fixture/python-app/main.py b/evals/azure-skills/appinsights-instrumentation/fixture/python-app/main.py similarity index 100% rename from evals/azure/appinsights-instrumentation/fixture/python-app/main.py rename to evals/azure-skills/appinsights-instrumentation/fixture/python-app/main.py diff --git a/evals/azure/appinsights-instrumentation/fixture/python-app/requirements.txt b/evals/azure-skills/appinsights-instrumentation/fixture/python-app/requirements.txt similarity index 100% rename from evals/azure/appinsights-instrumentation/fixture/python-app/requirements.txt rename to evals/azure-skills/appinsights-instrumentation/fixture/python-app/requirements.txt diff --git a/evals/azure/azure-ai/eval.yaml b/evals/azure-skills/azure-ai/eval.yaml similarity index 100% rename from evals/azure/azure-ai/eval.yaml rename to evals/azure-skills/azure-ai/eval.yaml diff --git a/evals/azure/azure-aigateway/eval.yaml b/evals/azure-skills/azure-aigateway/eval.yaml similarity index 100% rename from evals/azure/azure-aigateway/eval.yaml rename to evals/azure-skills/azure-aigateway/eval.yaml diff --git a/evals/azure/azure-compliance/eval.yaml b/evals/azure-skills/azure-compliance/eval.yaml similarity index 100% rename from evals/azure/azure-compliance/eval.yaml rename to evals/azure-skills/azure-compliance/eval.yaml diff --git a/evals/azure/azure-compute/capacity-reservation.eval.yaml b/evals/azure-skills/azure-compute/capacity-reservation.eval.yaml similarity index 100% rename from evals/azure/azure-compute/capacity-reservation.eval.yaml rename to evals/azure-skills/azure-compute/capacity-reservation.eval.yaml diff --git a/evals/azure/azure-compute/essential-machine-management.eval.yaml b/evals/azure-skills/azure-compute/essential-machine-management.eval.yaml similarity index 100% rename from evals/azure/azure-compute/essential-machine-management.eval.yaml rename to evals/azure-skills/azure-compute/essential-machine-management.eval.yaml diff --git a/evals/azure/azure-compute/vm-creator.eval.yaml b/evals/azure-skills/azure-compute/vm-creator.eval.yaml similarity index 100% rename from evals/azure/azure-compute/vm-creator.eval.yaml rename to evals/azure-skills/azure-compute/vm-creator.eval.yaml diff --git a/evals/azure/azure-compute/vm-recommender.eval.yaml b/evals/azure-skills/azure-compute/vm-recommender.eval.yaml similarity index 100% rename from evals/azure/azure-compute/vm-recommender.eval.yaml rename to evals/azure-skills/azure-compute/vm-recommender.eval.yaml diff --git a/evals/azure/azure-cost/eval.yaml b/evals/azure-skills/azure-cost/eval.yaml similarity index 100% rename from evals/azure/azure-cost/eval.yaml rename to evals/azure-skills/azure-cost/eval.yaml diff --git a/evals/azure/azure-deploy/eval.yaml b/evals/azure-skills/azure-deploy/eval.yaml similarity index 100% rename from evals/azure/azure-deploy/eval.yaml rename to evals/azure-skills/azure-deploy/eval.yaml diff --git a/evals/azure/azure-diagnostics/eval.yaml b/evals/azure-skills/azure-diagnostics/eval.yaml similarity index 100% rename from evals/azure/azure-diagnostics/eval.yaml rename to evals/azure-skills/azure-diagnostics/eval.yaml diff --git a/evals/azure/azure-enterprise-infra-planner/eval.yaml b/evals/azure-skills/azure-enterprise-infra-planner/eval.yaml similarity index 100% rename from evals/azure/azure-enterprise-infra-planner/eval.yaml rename to evals/azure-skills/azure-enterprise-infra-planner/eval.yaml diff --git a/evals/azure/azure-kubernetes/eval.yaml b/evals/azure-skills/azure-kubernetes/eval.yaml similarity index 100% rename from evals/azure/azure-kubernetes/eval.yaml rename to evals/azure-skills/azure-kubernetes/eval.yaml diff --git a/evals/azure/azure-kubernetes/fixture/deployment.yaml b/evals/azure-skills/azure-kubernetes/fixture/deployment.yaml similarity index 100% rename from evals/azure/azure-kubernetes/fixture/deployment.yaml rename to evals/azure-skills/azure-kubernetes/fixture/deployment.yaml diff --git a/evals/azure/azure-kubernetes/fixture/workloads.yaml b/evals/azure-skills/azure-kubernetes/fixture/workloads.yaml similarity index 100% rename from evals/azure/azure-kubernetes/fixture/workloads.yaml rename to evals/azure-skills/azure-kubernetes/fixture/workloads.yaml diff --git a/evals/azure/azure-kusto/eval.yaml b/evals/azure-skills/azure-kusto/eval.yaml similarity index 100% rename from evals/azure/azure-kusto/eval.yaml rename to evals/azure-skills/azure-kusto/eval.yaml diff --git a/evals/azure/azure-messaging/eval.yaml b/evals/azure-skills/azure-messaging/eval.yaml similarity index 100% rename from evals/azure/azure-messaging/eval.yaml rename to evals/azure-skills/azure-messaging/eval.yaml diff --git a/evals/azure/azure-prepare/e2e-eval.yaml b/evals/azure-skills/azure-prepare/e2e-eval.yaml similarity index 100% rename from evals/azure/azure-prepare/e2e-eval.yaml rename to evals/azure-skills/azure-prepare/e2e-eval.yaml diff --git a/evals/azure/azure-prepare/fixture/containerized-web/Dockerfile b/evals/azure-skills/azure-prepare/fixture/containerized-web/Dockerfile similarity index 100% rename from evals/azure/azure-prepare/fixture/containerized-web/Dockerfile rename to evals/azure-skills/azure-prepare/fixture/containerized-web/Dockerfile diff --git a/evals/azure/azure-prepare/fixture/containerized-web/app.js b/evals/azure-skills/azure-prepare/fixture/containerized-web/app.js similarity index 100% rename from evals/azure/azure-prepare/fixture/containerized-web/app.js rename to evals/azure-skills/azure-prepare/fixture/containerized-web/app.js diff --git a/evals/azure/azure-prepare/fixture/containerized-web/package.json b/evals/azure-skills/azure-prepare/fixture/containerized-web/package.json similarity index 100% rename from evals/azure/azure-prepare/fixture/containerized-web/package.json rename to evals/azure-skills/azure-prepare/fixture/containerized-web/package.json diff --git a/evals/azure/azure-prepare/fixture/discussion-board/app.js b/evals/azure-skills/azure-prepare/fixture/discussion-board/app.js similarity index 100% rename from evals/azure/azure-prepare/fixture/discussion-board/app.js rename to evals/azure-skills/azure-prepare/fixture/discussion-board/app.js diff --git a/evals/azure/azure-prepare/fixture/discussion-board/package.json b/evals/azure-skills/azure-prepare/fixture/discussion-board/package.json similarity index 100% rename from evals/azure/azure-prepare/fixture/discussion-board/package.json rename to evals/azure-skills/azure-prepare/fixture/discussion-board/package.json diff --git a/evals/azure/azure-prepare/fixture/functions-event/function_app.py b/evals/azure-skills/azure-prepare/fixture/functions-event/function_app.py similarity index 100% rename from evals/azure/azure-prepare/fixture/functions-event/function_app.py rename to evals/azure-skills/azure-prepare/fixture/functions-event/function_app.py diff --git a/evals/azure/azure-prepare/fixture/functions-event/host.json b/evals/azure-skills/azure-prepare/fixture/functions-event/host.json similarity index 100% rename from evals/azure/azure-prepare/fixture/functions-event/host.json rename to evals/azure-skills/azure-prepare/fixture/functions-event/host.json diff --git a/evals/azure/azure-prepare/fixture/functions-event/requirements.txt b/evals/azure-skills/azure-prepare/fixture/functions-event/requirements.txt similarity index 100% rename from evals/azure/azure-prepare/fixture/functions-event/requirements.txt rename to evals/azure-skills/azure-prepare/fixture/functions-event/requirements.txt diff --git a/evals/azure/azure-prepare/fixture/functions-http/function_app.py b/evals/azure-skills/azure-prepare/fixture/functions-http/function_app.py similarity index 100% rename from evals/azure/azure-prepare/fixture/functions-http/function_app.py rename to evals/azure-skills/azure-prepare/fixture/functions-http/function_app.py diff --git a/evals/azure/azure-prepare/fixture/functions-http/host.json b/evals/azure-skills/azure-prepare/fixture/functions-http/host.json similarity index 100% rename from evals/azure/azure-prepare/fixture/functions-http/host.json rename to evals/azure-skills/azure-prepare/fixture/functions-http/host.json diff --git a/evals/azure/azure-prepare/fixture/functions-http/requirements.txt b/evals/azure-skills/azure-prepare/fixture/functions-http/requirements.txt similarity index 100% rename from evals/azure/azure-prepare/fixture/functions-http/requirements.txt rename to evals/azure-skills/azure-prepare/fixture/functions-http/requirements.txt diff --git a/evals/azure/azure-prepare/fixture/functions-servicebus/function_app.py b/evals/azure-skills/azure-prepare/fixture/functions-servicebus/function_app.py similarity index 100% rename from evals/azure/azure-prepare/fixture/functions-servicebus/function_app.py rename to evals/azure-skills/azure-prepare/fixture/functions-servicebus/function_app.py diff --git a/evals/azure/azure-prepare/fixture/functions-servicebus/host.json b/evals/azure-skills/azure-prepare/fixture/functions-servicebus/host.json similarity index 100% rename from evals/azure/azure-prepare/fixture/functions-servicebus/host.json rename to evals/azure-skills/azure-prepare/fixture/functions-servicebus/host.json diff --git a/evals/azure/azure-prepare/fixture/functions-servicebus/requirements.txt b/evals/azure-skills/azure-prepare/fixture/functions-servicebus/requirements.txt similarity index 100% rename from evals/azure/azure-prepare/fixture/functions-servicebus/requirements.txt rename to evals/azure-skills/azure-prepare/fixture/functions-servicebus/requirements.txt diff --git a/evals/azure/azure-prepare/fixture/functions-timer/function_app.py b/evals/azure-skills/azure-prepare/fixture/functions-timer/function_app.py similarity index 100% rename from evals/azure/azure-prepare/fixture/functions-timer/function_app.py rename to evals/azure-skills/azure-prepare/fixture/functions-timer/function_app.py diff --git a/evals/azure/azure-prepare/fixture/functions-timer/host.json b/evals/azure-skills/azure-prepare/fixture/functions-timer/host.json similarity index 100% rename from evals/azure/azure-prepare/fixture/functions-timer/host.json rename to evals/azure-skills/azure-prepare/fixture/functions-timer/host.json diff --git a/evals/azure/azure-prepare/fixture/functions-timer/requirements.txt b/evals/azure-skills/azure-prepare/fixture/functions-timer/requirements.txt similarity index 100% rename from evals/azure/azure-prepare/fixture/functions-timer/requirements.txt rename to evals/azure-skills/azure-prepare/fixture/functions-timer/requirements.txt diff --git a/evals/azure/azure-prepare/fixture/nodejs-hello/Dockerfile b/evals/azure-skills/azure-prepare/fixture/nodejs-hello/Dockerfile similarity index 100% rename from evals/azure/azure-prepare/fixture/nodejs-hello/Dockerfile rename to evals/azure-skills/azure-prepare/fixture/nodejs-hello/Dockerfile diff --git a/evals/azure/azure-prepare/fixture/nodejs-hello/app.js b/evals/azure-skills/azure-prepare/fixture/nodejs-hello/app.js similarity index 100% rename from evals/azure/azure-prepare/fixture/nodejs-hello/app.js rename to evals/azure-skills/azure-prepare/fixture/nodejs-hello/app.js diff --git a/evals/azure/azure-prepare/fixture/nodejs-hello/package.json b/evals/azure-skills/azure-prepare/fixture/nodejs-hello/package.json similarity index 100% rename from evals/azure/azure-prepare/fixture/nodejs-hello/package.json rename to evals/azure-skills/azure-prepare/fixture/nodejs-hello/package.json diff --git a/evals/azure/azure-prepare/fixture/portfolio/index.html b/evals/azure-skills/azure-prepare/fixture/portfolio/index.html similarity index 100% rename from evals/azure/azure-prepare/fixture/portfolio/index.html rename to evals/azure-skills/azure-prepare/fixture/portfolio/index.html diff --git a/evals/azure/azure-prepare/fixture/social-media/app.js b/evals/azure-skills/azure-prepare/fixture/social-media/app.js similarity index 100% rename from evals/azure/azure-prepare/fixture/social-media/app.js rename to evals/azure-skills/azure-prepare/fixture/social-media/app.js diff --git a/evals/azure/azure-prepare/fixture/social-media/package.json b/evals/azure-skills/azure-prepare/fixture/social-media/package.json similarity index 100% rename from evals/azure/azure-prepare/fixture/social-media/package.json rename to evals/azure-skills/azure-prepare/fixture/social-media/package.json diff --git a/evals/azure/azure-prepare/fixture/todo/api/package.json b/evals/azure-skills/azure-prepare/fixture/todo/api/package.json similarity index 100% rename from evals/azure/azure-prepare/fixture/todo/api/package.json rename to evals/azure-skills/azure-prepare/fixture/todo/api/package.json diff --git a/evals/azure/azure-prepare/fixture/todo/api/server.js b/evals/azure-skills/azure-prepare/fixture/todo/api/server.js similarity index 100% rename from evals/azure/azure-prepare/fixture/todo/api/server.js rename to evals/azure-skills/azure-prepare/fixture/todo/api/server.js diff --git a/evals/azure/azure-prepare/fixture/todo/frontend/index.html b/evals/azure-skills/azure-prepare/fixture/todo/frontend/index.html similarity index 100% rename from evals/azure/azure-prepare/fixture/todo/frontend/index.html rename to evals/azure-skills/azure-prepare/fixture/todo/frontend/index.html diff --git a/evals/azure/azure-prepare/fixture/url-shortener/function_app.py b/evals/azure-skills/azure-prepare/fixture/url-shortener/function_app.py similarity index 100% rename from evals/azure/azure-prepare/fixture/url-shortener/function_app.py rename to evals/azure-skills/azure-prepare/fixture/url-shortener/function_app.py diff --git a/evals/azure/azure-prepare/fixture/url-shortener/host.json b/evals/azure-skills/azure-prepare/fixture/url-shortener/host.json similarity index 100% rename from evals/azure/azure-prepare/fixture/url-shortener/host.json rename to evals/azure-skills/azure-prepare/fixture/url-shortener/host.json diff --git a/evals/azure/azure-prepare/fixture/url-shortener/requirements.txt b/evals/azure-skills/azure-prepare/fixture/url-shortener/requirements.txt similarity index 100% rename from evals/azure/azure-prepare/fixture/url-shortener/requirements.txt rename to evals/azure-skills/azure-prepare/fixture/url-shortener/requirements.txt diff --git a/evals/azure/azure-prepare/fixture/whiteboard/index.html b/evals/azure-skills/azure-prepare/fixture/whiteboard/index.html similarity index 100% rename from evals/azure/azure-prepare/fixture/whiteboard/index.html rename to evals/azure-skills/azure-prepare/fixture/whiteboard/index.html diff --git a/evals/azure/azure-prepare/routing-eval.yaml b/evals/azure-skills/azure-prepare/routing-eval.yaml similarity index 100% rename from evals/azure/azure-prepare/routing-eval.yaml rename to evals/azure-skills/azure-prepare/routing-eval.yaml diff --git a/evals/azure/azure-quotas/eval.yaml b/evals/azure-skills/azure-quotas/eval.yaml similarity index 100% rename from evals/azure/azure-quotas/eval.yaml rename to evals/azure-skills/azure-quotas/eval.yaml diff --git a/evals/azure/azure-reliability/eval.yaml b/evals/azure-skills/azure-reliability/eval.yaml similarity index 100% rename from evals/azure/azure-reliability/eval.yaml rename to evals/azure-skills/azure-reliability/eval.yaml diff --git a/evals/azure/azure-resource-lookup/eval.yaml b/evals/azure-skills/azure-resource-lookup/eval.yaml similarity index 100% rename from evals/azure/azure-resource-lookup/eval.yaml rename to evals/azure-skills/azure-resource-lookup/eval.yaml diff --git a/evals/azure/azure-resource-visualizer/eval.yaml b/evals/azure-skills/azure-resource-visualizer/eval.yaml similarity index 100% rename from evals/azure/azure-resource-visualizer/eval.yaml rename to evals/azure-skills/azure-resource-visualizer/eval.yaml diff --git a/evals/azure/azure-storage/eval.yaml b/evals/azure-skills/azure-storage/eval.yaml similarity index 100% rename from evals/azure/azure-storage/eval.yaml rename to evals/azure-skills/azure-storage/eval.yaml diff --git a/evals/azure/azure-upgrade/eval.yaml b/evals/azure-skills/azure-upgrade/eval.yaml similarity index 100% rename from evals/azure/azure-upgrade/eval.yaml rename to evals/azure-skills/azure-upgrade/eval.yaml diff --git a/evals/azure/azure-validate/e2e-eval.yaml b/evals/azure-skills/azure-validate/e2e-eval.yaml similarity index 100% rename from evals/azure/azure-validate/e2e-eval.yaml rename to evals/azure-skills/azure-validate/e2e-eval.yaml diff --git a/evals/azure/azure-validate/fixture/containerized-app/Dockerfile b/evals/azure-skills/azure-validate/fixture/containerized-app/Dockerfile similarity index 100% rename from evals/azure/azure-validate/fixture/containerized-app/Dockerfile rename to evals/azure-skills/azure-validate/fixture/containerized-app/Dockerfile diff --git a/evals/azure/azure-validate/fixture/containerized-app/app.js b/evals/azure-skills/azure-validate/fixture/containerized-app/app.js similarity index 100% rename from evals/azure/azure-validate/fixture/containerized-app/app.js rename to evals/azure-skills/azure-validate/fixture/containerized-app/app.js diff --git a/evals/azure/azure-validate/fixture/containerized-app/azure.yaml b/evals/azure-skills/azure-validate/fixture/containerized-app/azure.yaml similarity index 100% rename from evals/azure/azure-validate/fixture/containerized-app/azure.yaml rename to evals/azure-skills/azure-validate/fixture/containerized-app/azure.yaml diff --git a/evals/azure/azure-validate/fixture/containerized-app/infra/abbreviations.json b/evals/azure-skills/azure-validate/fixture/containerized-app/infra/abbreviations.json similarity index 100% rename from evals/azure/azure-validate/fixture/containerized-app/infra/abbreviations.json rename to evals/azure-skills/azure-validate/fixture/containerized-app/infra/abbreviations.json diff --git a/evals/azure/azure-validate/fixture/containerized-app/infra/main.bicep b/evals/azure-skills/azure-validate/fixture/containerized-app/infra/main.bicep similarity index 100% rename from evals/azure/azure-validate/fixture/containerized-app/infra/main.bicep rename to evals/azure-skills/azure-validate/fixture/containerized-app/infra/main.bicep diff --git a/evals/azure/azure-validate/fixture/containerized-app/infra/main.parameters.json b/evals/azure-skills/azure-validate/fixture/containerized-app/infra/main.parameters.json similarity index 100% rename from evals/azure/azure-validate/fixture/containerized-app/infra/main.parameters.json rename to evals/azure-skills/azure-validate/fixture/containerized-app/infra/main.parameters.json diff --git a/evals/azure/azure-validate/fixture/containerized-app/infra/resources.bicep b/evals/azure-skills/azure-validate/fixture/containerized-app/infra/resources.bicep similarity index 100% rename from evals/azure/azure-validate/fixture/containerized-app/infra/resources.bicep rename to evals/azure-skills/azure-validate/fixture/containerized-app/infra/resources.bicep diff --git a/evals/azure/azure-validate/fixture/containerized-app/package.json b/evals/azure-skills/azure-validate/fixture/containerized-app/package.json similarity index 100% rename from evals/azure/azure-validate/fixture/containerized-app/package.json rename to evals/azure-skills/azure-validate/fixture/containerized-app/package.json diff --git a/evals/azure/azure-validate/fixture/portfolio/azure.yaml b/evals/azure-skills/azure-validate/fixture/portfolio/azure.yaml similarity index 100% rename from evals/azure/azure-validate/fixture/portfolio/azure.yaml rename to evals/azure-skills/azure-validate/fixture/portfolio/azure.yaml diff --git a/evals/azure/azure-validate/fixture/portfolio/index.html b/evals/azure-skills/azure-validate/fixture/portfolio/index.html similarity index 100% rename from evals/azure/azure-validate/fixture/portfolio/index.html rename to evals/azure-skills/azure-validate/fixture/portfolio/index.html diff --git a/evals/azure/azure-validate/fixture/portfolio/infra/main.bicep b/evals/azure-skills/azure-validate/fixture/portfolio/infra/main.bicep similarity index 100% rename from evals/azure/azure-validate/fixture/portfolio/infra/main.bicep rename to evals/azure-skills/azure-validate/fixture/portfolio/infra/main.bicep diff --git a/evals/azure/azure-validate/fixture/portfolio/infra/main.parameters.json b/evals/azure-skills/azure-validate/fixture/portfolio/infra/main.parameters.json similarity index 100% rename from evals/azure/azure-validate/fixture/portfolio/infra/main.parameters.json rename to evals/azure-skills/azure-validate/fixture/portfolio/infra/main.parameters.json diff --git a/evals/azure/azure-validate/fixture/portfolio/infra/resources.bicep b/evals/azure-skills/azure-validate/fixture/portfolio/infra/resources.bicep similarity index 100% rename from evals/azure/azure-validate/fixture/portfolio/infra/resources.bicep rename to evals/azure-skills/azure-validate/fixture/portfolio/infra/resources.bicep diff --git a/evals/azure/azure-validate/fixture/whiteboard/azure.yaml b/evals/azure-skills/azure-validate/fixture/whiteboard/azure.yaml similarity index 100% rename from evals/azure/azure-validate/fixture/whiteboard/azure.yaml rename to evals/azure-skills/azure-validate/fixture/whiteboard/azure.yaml diff --git a/evals/azure/azure-validate/fixture/whiteboard/index.html b/evals/azure-skills/azure-validate/fixture/whiteboard/index.html similarity index 100% rename from evals/azure/azure-validate/fixture/whiteboard/index.html rename to evals/azure-skills/azure-validate/fixture/whiteboard/index.html diff --git a/evals/azure/azure-validate/fixture/whiteboard/infra/main.bicep b/evals/azure-skills/azure-validate/fixture/whiteboard/infra/main.bicep similarity index 100% rename from evals/azure/azure-validate/fixture/whiteboard/infra/main.bicep rename to evals/azure-skills/azure-validate/fixture/whiteboard/infra/main.bicep diff --git a/evals/azure/azure-validate/fixture/whiteboard/infra/main.parameters.json b/evals/azure-skills/azure-validate/fixture/whiteboard/infra/main.parameters.json similarity index 100% rename from evals/azure/azure-validate/fixture/whiteboard/infra/main.parameters.json rename to evals/azure-skills/azure-validate/fixture/whiteboard/infra/main.parameters.json diff --git a/evals/azure/azure-validate/fixture/whiteboard/infra/resources.bicep b/evals/azure-skills/azure-validate/fixture/whiteboard/infra/resources.bicep similarity index 100% rename from evals/azure/azure-validate/fixture/whiteboard/infra/resources.bicep rename to evals/azure-skills/azure-validate/fixture/whiteboard/infra/resources.bicep diff --git a/evals/azure/azure-validate/routing-eval.yaml b/evals/azure-skills/azure-validate/routing-eval.yaml similarity index 100% rename from evals/azure/azure-validate/routing-eval.yaml rename to evals/azure-skills/azure-validate/routing-eval.yaml diff --git a/evals/azure/entra-agent-id/eval.yaml b/evals/azure-skills/entra-agent-id/eval.yaml similarity index 100% rename from evals/azure/entra-agent-id/eval.yaml rename to evals/azure-skills/entra-agent-id/eval.yaml diff --git a/evals/azure/entra-app-registration/eval.yaml b/evals/azure-skills/entra-app-registration/eval.yaml similarity index 100% rename from evals/azure/entra-app-registration/eval.yaml rename to evals/azure-skills/entra-app-registration/eval.yaml diff --git a/evals/azure/microsoft-foundry/eval.yaml b/evals/azure-skills/microsoft-foundry/eval.yaml similarity index 100% rename from evals/azure/microsoft-foundry/eval.yaml rename to evals/azure-skills/microsoft-foundry/eval.yaml diff --git a/evals/azure/python-appservice-deploy/eval.yaml b/evals/azure-skills/python-appservice-deploy/eval.yaml similarity index 100% rename from evals/azure/python-appservice-deploy/eval.yaml rename to evals/azure-skills/python-appservice-deploy/eval.yaml diff --git a/evals/azure/python-appservice-deploy/fixture/flask-app/app.py b/evals/azure-skills/python-appservice-deploy/fixture/flask-app/app.py similarity index 100% rename from evals/azure/python-appservice-deploy/fixture/flask-app/app.py rename to evals/azure-skills/python-appservice-deploy/fixture/flask-app/app.py diff --git a/evals/azure/python-appservice-deploy/fixture/flask-app/requirements.txt b/evals/azure-skills/python-appservice-deploy/fixture/flask-app/requirements.txt similarity index 100% rename from evals/azure/python-appservice-deploy/fixture/flask-app/requirements.txt rename to evals/azure-skills/python-appservice-deploy/fixture/flask-app/requirements.txt From feae772d1c65581a317c4c279c1ffd4b02714e2a Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Fri, 17 Jul 2026 10:50:04 -0700 Subject: [PATCH 30/53] rewrite integration test workflow using github-script update vally-eval skill --- .github/skills/vally-eval/SKILL.md | 28 ++-- .../skills/vally-eval/references/ci-test.md | 6 +- .github/workflows/test-all-integration.yml | 156 +++++++++--------- .github/workflows/test-azure-deploy.yml | 23 ++- tests/run-vally-test.ts | 4 +- 5 files changed, 110 insertions(+), 107 deletions(-) diff --git a/.github/skills/vally-eval/SKILL.md b/.github/skills/vally-eval/SKILL.md index ac4bf2254..45210f0d2 100644 --- a/.github/skills/vally-eval/SKILL.md +++ b/.github/skills/vally-eval/SKILL.md @@ -17,31 +17,31 @@ Vally eval suites are written as yaml documents. All eval suites share eval spec Refer to the official documentation on the schema of the spec and the schema of the eval suites [writing-eval-specs](https://microsoft.github.io/vally/guides/writing-eval-specs/). -Vally eval suites for azure-skills plugin have the following file layout. The shared eval spec is located at `/.vally.yaml`. The eval suites are categorized by skills. The eval suites for each skill are located at `/evals//*.yaml`, e.g. `/evals/azure-ai/eval.yaml`. +Vally eval suites for azure-skills plugin have the following file layout. The shared eval spec is located at `/.vally.yaml`. The eval suites are categorized by plugin and skills. The eval suites for each skill are located at `/evals///*.yaml`, e.g. `/evals/azure-skills/azure-ai/eval.yaml`. -Use meaningful file names to categorize tests. If a skill needs fixture files for its eval suites, it should organize such fixture files in a `fixture` directory under its directory, e.g. `/evals/azure-ai/fixture/`. The [vally test runner](/tests/run-vally-test.ts) and [stimulus validation script](/scripts/src/vally/validate-stimulus.ts) will load all `*.yaml` files except for those under a `fixture/` directory. Make sure to put all fixture files under the `fixture/` directory. +Use meaningful file names to categorize tests. If a skill needs fixture files for its eval suites, it should organize such fixture files in a `fixture` directory under its directory, e.g. `/evals/azure-skills/azure-ai/fixture/`. The [vally test runner](/tests/run-vally-test.ts) and [stimulus validation script](/scripts/src/vally/validate-stimulus.ts) will load all `*.yaml` files except for those under a `fixture/` directory. Make sure to put all fixture files under the `fixture/` directory. ## Migrate integration tests azure-skills plugin have implemented JavaScript integration test using Jest as the underlying test runner. All such integration tests are under `tests/**/integration.test.ts` files. -To migrate integration test for a skill to vally suites, create its eval suite spec at `/evals//eval.yaml`, add a suite that runs the same prompt and uses vally's built-in graders to grade the trajectory of the agent run. If the integration test grades the agent run in a way that vally's built-in graders don't support, refer to the official documentation on how to create a custom grader [writing-custom-grader](https://microsoft.github.io/vally/guides/writing-custom-graders/). +To migrate integration test for a skill to vally suites, create its eval suite spec at `/evals///eval.yaml`, add a suite that runs the same prompt and uses vally's built-in graders to grade the trajectory of the agent run. If the integration test grades the agent run in a way that vally's built-in graders don't support, refer to the official documentation on how to create a custom grader [writing-custom-grader](https://microsoft.github.io/vally/guides/writing-custom-graders/). ## Why is there a custom executor -The legacy Jest based integration test framework implemented features that vally doesn't support yet, such as early termination, follow up, system prompt modification, screenshot taking, etc. Besides, the azure-skills plugin runs automated integration tests, collects its exported data and feeds the data to a dashboard web app under `/dashboard/` to monitor skill integration test results. +The legacy Jest based integration test framework implemented features that vally doesn't support yet, such as early termination, follow up, system prompt modification, screenshot taking, etc. Besides, [test-all-integration](/.github/workflows/test-all-integration.yml) runs automated integration tests, collects its exported data and feeds the data to a dashboard web app under `/dashboard/` to monitor skill integration test results. If you intend to have your vally suites use any of the extended features or have their results be consumed by the dashboard, you **MUST** use the custom executor in your vally suites. ### Use tags to control the custom executor -The custom executor in azure-skills plugin uses special tag values to control the behavior of the custom executor. See [tag-helpers.ts](../../../tests/vally/tag-helpers.ts) to learn what special tags are supported. +The custom executor uses special tag values to control the behavior of the custom executor. See [tag-helpers.ts](../../../tests/vally/tag-helpers.ts) to learn what special tags are supported. > Note: If an eval suite specifies an earlyTerminate condition, the suite MUST NOT use the `completed` grader because early terminated runs will always fail the `completed` grader by design. ## Validate vally eval suites -Vally eval suites for azure-skills plugin follow certain conventions. For example, all eval suites must have a `type`, `tier`, `cost` and `area` tag so they can be run for a corresponding target group. To ensure all eval suites follow the conventions, a script is added to validate the eval suites and report errors when it sees any violation. To run the script, execute this command from the `scripts/` directory. +Vally eval suites in this repo follow certain conventions. For example, all eval suites must have a `type`, `tier`, `cost` and `area` tag so they can be run for a corresponding target group. To ensure all eval suites follow the conventions, a script is added to validate the eval suites and report errors when it sees any violation. To run the script, execute this command from the `scripts/` directory. ```bash # cwd as /scripts/ @@ -56,10 +56,10 @@ Use vally-cli to run vally eval suites. In most cases, you would like to use a c ```bash # In tests/ -npm run test:vally -- --skill $SKILL +npm run test:vally -- --pluginDir $PLUGIN_DIR --skill $SKILL ``` -`--eval-spec ../evals//eval.yaml` tells vally which eval spec to run. The path is relative to the current working directory of the process running the command. `--output-dir ./results` tells vally to write its output to a `results/` directory relative to the current working directory of the process running the command. `--executor-plugin ../../tests/vally/vally-executor.ts` tells vally to load and execute the code in this module, which registers the custom executor used by azure-skill vally eval suites. Note that this path is relative to the parent directory of the eval spec to run. For example, if the eval spec to run is `/evals/azure-ai/eval.yaml`, resolving this relative path ends at `/tests/vally/vally-executor.ts`. +See [vally test runner](/tests/run-vally-test.ts) on how it composes the vally commands under the hood. ## Run vally eval suites in CI @@ -75,12 +75,20 @@ Test authors commonly need to fine-tune grader configurations to reduce result f ```bash # in tests/ -npx @microsoft/vally-cli grade --eval-spec ../evals//eval.yaml --verbose < results//results.jsonl +npx @microsoft/vally-cli grade --eval-spec ../evals///eval.yaml --verbose < results//results.jsonl ``` You can keep tuning the grader config in `eval.yaml` and re-grade the trajectory until the results meet your expectations. -If your skill uses a custom grader, add `--grader-plugin ./tests/vally/vally-graders.ts` to load the custom graders. +If your skill uses a custom grader, add `--grader-plugin` to load the custom graders. + +```bash +# in tests/ +npx @microsoft/vally-cli grade --eval-spec ../evals///eval.yaml --grader-plugin +../../../tests/vally/vally-graders.ts --verbose < results//results.jsonl +``` + +Note that the grader plugin's path is relative to the parent directory of the eval spec to run. For example, if the eval spec to run is `/evals/azure-skills/azure-ai/eval.yaml`, resolving this relative path ends at `/tests/vally/vally-executor.ts`. ### Collect test results diff --git a/.github/skills/vally-eval/references/ci-test.md b/.github/skills/vally-eval/references/ci-test.md index 2dd45b2b7..79611c76c 100644 --- a/.github/skills/vally-eval/references/ci-test.md +++ b/.github/skills/vally-eval/references/ci-test.md @@ -4,7 +4,7 @@ Follow these steps to add a skill's Vally suites to the CI test workflow so they ## Prerequisites -- The skill's Vally suites are implemented under `evals//eval.yaml` (or split across multiple YAML files). +- The skill's Vally suites are implemented under `evals//eval.yaml` (or split across multiple YAML files). - The Vally suites use the `integration-test-agent-runner` custom executor. - The test results can be made public. @@ -14,9 +14,7 @@ The scheduled CI test workflow determines which skills to test by reading `tests ### Use shared job template -Most skills use a shared job template to run eval suites. This template is defined as the `test` job in `.github/workflows/test-all-integration.yml`. - -If you use the shared job template, add the skill in the workflow’s `VALLY_SKILLS` list. Otherwise the job will run Jest-based integration tests instead of `npm run test:vally`. The CI workflow creates one job per skill from this template and runs all eval suites with `npm run test:vally`. +Most skills use a shared job template to run eval suites. This template is defined as the `test` job in `.github/workflows/test-all-integration.yml`. The CI workflow creates one job per skill from this template and runs all eval suites with `npm run test:vally`. Reuse this template whenever possible. It provisions a test environment, installs common tools (for example, Azure CLI and Azure Developer CLI), connects to a test Azure subscription, and includes utility steps that collect and publish test results to a well-known storage location for downstream processing. diff --git a/.github/workflows/test-all-integration.yml b/.github/workflows/test-all-integration.yml index 20903ae78..f4a1d22d5 100644 --- a/.github/workflows/test-all-integration.yml +++ b/.github/workflows/test-all-integration.yml @@ -22,7 +22,7 @@ on: workflow_dispatch: inputs: skills: - description: 'Comma separated list of skills to test (e.g. "appinsights-instrumentation,azure-ai")' + description: 'Comma separated list of skills to test (e.g. "azure-skills/appinsights-instrumentation,azure-skills/azure-ai"). Each string must be in the form of "/".' required: true type: string model-override: @@ -72,58 +72,66 @@ jobs: - name: Resolve inputs based on trigger type id: resolve + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7 env: - EVENT_NAME: ${{ github.event_name }} INPUT_SKILLS: ${{ inputs.skills }} INPUT_DEPLOY_TEST_PATTERN: ${{ inputs.deploy-test-pattern }} INPUT_DEBUG: ${{ inputs.debug }} EVENT_SCHEDULE: ${{ github.event.schedule }} - run: | - if [ "$EVENT_NAME" = "workflow_dispatch" ]; then - # Manual trigger - use provided inputs - echo "skills=$INPUT_SKILLS" >> "$GITHUB_OUTPUT" - echo "deploy-test-pattern=$INPUT_DEPLOY_TEST_PATTERN" >> "$GITHUB_OUTPUT" - echo "debug=$INPUT_DEBUG" >> "$GITHUB_OUTPUT" - else - cd tests - # Scheduled trigger - read from tests/skills.json - CRON="$EVENT_SCHEDULE" - echo "Schedule: $CRON" - - # Read skills from integrationTestSchedule in tests/skills.json - SKILLS=$(jq -r --arg cron "$CRON" '.integrationTestSchedule[$cron]' skills.json) - echo "Skills from schedule config: $SKILLS" - - # If skills is empty or null, exit - if [ -z "$SKILLS" ] || [ "$SKILLS" = "null" ]; then - echo "No skills specified for this schedule, using all skills from tests/skills.json" - exit 1 - fi - - echo "skills=$SKILLS" >> "$GITHUB_OUTPUT" - echo "Final skills list: $SKILLS" - - # Set deploy-test-pattern and debug based on the schedule slot - case "$CRON" in - "0 5 * * 2-6") - echo "debug=$SCHEDULED_DEBUG_21" >> "$GITHUB_OUTPUT" - ;; - "0 8 * * 2-6") - echo "debug=$SCHEDULED_DEBUG_00" >> "$GITHUB_OUTPUT" - ;; - "0 12 * * 2-6") - echo "debug=$SCHEDULED_DEBUG_04" >> "$GITHUB_OUTPUT" - ;; - *) - echo "Unknown schedule: $CRON" - exit 1 - ;; - esac - fi - - echo "Resolved inputs:" - echo "skills=$(grep '^skills=' "$GITHUB_OUTPUT" | tail -1)" - echo "debug=$(grep '^debug=' "$GITHUB_OUTPUT" | tail -1)" + SCHEDULED_DEBUG_21: ${{ env.SCHEDULED_DEBUG_21 }} + SCHEDULED_DEBUG_00: ${{ env.SCHEDULED_DEBUG_00 }} + SCHEDULED_DEBUG_04: ${{ env.SCHEDULED_DEBUG_04 }} + with: + script: | + const eventName = context.eventName; + + if (eventName === "workflow_dispatch") { + // Manual trigger - use provided inputs + core.setOutput("skills", process.env.INPUT_SKILLS); + core.setOutput("deploy-test-pattern", process.env.INPUT_DEPLOY_TEST_PATTERN); + core.setOutput("debug", process.env.INPUT_DEBUG); + } else { + // Scheduled trigger - read from tests/skills.json + const cron = process.env.EVENT_SCHEDULE; + core.info(`Schedule: ${cron}`); + + const fs = require("fs"); + const skillsJson = JSON.parse(fs.readFileSync("tests/skills.json", "utf8")); + + // Collect skills from all plugins for this cron schedule + const skillsList = skillsJson.plugins + .map(plugin => { + const entry = plugin.integrationTestSchedule?.[cron]; + return entry ? entry.split(",").map(s => `${plugin.dirname}/s.trim()`) : []; + }) + .flat(); + + if (skillsList.length === 0) { + core.setFailed(`No skills specified for schedule: ${cron}`); + return; + } + + const skills = skillsList.join(","); + core.info(`Skills from schedule config: ${skills}`); + core.setOutput("skills", skills); + + // Set debug flag based on the schedule slot + const debugMap = { + "0 5 * * 2-6": process.env.SCHEDULED_DEBUG_21, + "0 8 * * 2-6": process.env.SCHEDULED_DEBUG_00, + "0 12 * * 2-6": process.env.SCHEDULED_DEBUG_04, + }; + + if (!(cron in debugMap)) { + core.setFailed(`Unknown schedule: ${cron}`); + return; + } + + core.setOutput("debug", debugMap[cron]); + } + + core.info(`Resolved skills: ${core.getState("skills")}`); + core.info(`Resolved debug: ${core.getState("debug")}`); setup: name: Build skill matrix @@ -135,28 +143,24 @@ jobs: steps: - name: Parse skills input into matrix id: set-matrix + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7 env: SKILLS_INPUT: ${{ needs.resolve-inputs.outputs.skills }} - run: | - # Convert comma separated list of skills to a JSON array - # Filter out azure-deploy (it runs via a separate reusable workflow) - SKILLS="$SKILLS_INPUT" + with: + script: | + // Convert comma separated list of skills to a JSON array + // Each item is in the form of "/" + // Filter out azure-deploy (it runs via a separate reusable workflow) + const skillsInput = process.env.SKILLS_INPUT || ""; + const skills = skillsInput.split(",").map(s => s.trim()); - # Check if azure-deploy is in the list - if echo "$SKILLS" | grep -q 'azure-deploy'; then - echo "has_azure_deploy=true" >> "$GITHUB_OUTPUT" - else - echo "has_azure_deploy=false" >> "$GITHUB_OUTPUT" - fi + // Check if azure-deploy is in the list + const hasAzureDeploy = skills.includes("azure-deploy"); + core.setOutput("has_azure_deploy", hasAzureDeploy.toString()); - # Build matrix excluding azure-deploy - JSON=$(echo "$SKILLS" | tr ',' '\n' | sed 's/^ *//;s/ *$//' | grep -v '^azure-deploy$' | jq -R . | jq -sc .) - # Handle empty array case - if [ "$JSON" = "[]" ]; then - echo "matrix=[]" >> "$GITHUB_OUTPUT" - else - echo "matrix=$JSON" >> "$GITHUB_OUTPUT" - fi + // Build matrix excluding azure-deploy + const matrix = skills.filter(s => s !== "azure-deploy"); + core.setOutput("matrix", JSON.stringify(matrix)); # Call the azure-deploy workflow when azure-deploy is in the skills list azure-deploy: @@ -177,7 +181,7 @@ jobs: runs-on: ubuntu-latest env: # Skills that should be tested using vally in a JSON array - VALLY_SKILLS: '["azure-ai","azure-aigateway","azure-compliance","azure-diagnostics","azure-kusto","azure-storage","entra-app-registration","azure-messaging","airunway-aks-setup","appinsights-instrumentation","azure-cost","azure-quotas","azure-kubernetes","azure-enterprise-infra-planner","azure-resource-lookup","azure-resource-visualizer","azure-reliability","entra-agent-id","python-appservice-deploy","azure-upgrade","azure-prepare","azure-compute","azure-validate"]' + JEST_SKILLS: '["azure-skills/azure-cloud-migrate","azure-skills/microsoft-foundry"]' AZURE_CLIENT_ID: ${{ vars.AZURE_CLIENT_ID }} AZURE_TENANT_ID: ${{ vars.AZURE_TENANT_ID }} AZURE_SUBSCRIPTION_ID: ${{ vars.AZURE_SUBSCRIPTION_ID }} @@ -273,7 +277,7 @@ jobs: # Skill authors should use the reports to identify issues and polish their skills/tests. - name: Run integration tests – ${{ matrix.skill }} - if: ${{ !contains(fromJson(env.VALLY_SKILLS), matrix.skill) }} + if: ${{ contains(fromJson(env.JEST_SKILLS), matrix.skill) }} env: DEBUG: ${{ needs.resolve-inputs.outputs.debug == 'true' && '1' || '' }} TEST_RUN_ID: all-integration @@ -281,27 +285,21 @@ jobs: SKILL_TEST_PATTERN: ${{ inputs.skill-test-pattern }} SKILL: ${{ matrix.skill }} run: | - echo test with $MODEL_OVERRIDE - - # Handle azure-ai vs azure-aigateway prefix collision - if [ "$SKILL" = "azure-ai" ]; then - npm run test:integration azure-ai/ "$SKILL_TEST_PATTERN" - else - npm run test:integration "$SKILL" "$SKILL_TEST_PATTERN" - fi + npm run test:integration "$SKILL" "$SKILL_TEST_PATTERN" continue-on-error: false # Override the number of concurrent workers to 2 to prevent a GitHub hosted Actions runner running out of memory. - name: Run integration tests (vally) - ${{ matrix.skill }} - if: ${{ contains(fromJson(env.VALLY_SKILLS), matrix.skill) }} + if: ${{ !contains(fromJson(env.JEST_SKILLS), matrix.skill) }} env: DEBUG: ${{ needs.resolve-inputs.outputs.debug == 'true' && '1' || '' }} TEST_RUN_ID: all-integration MODEL_OVERRIDE: ${{ inputs.model-override }} SKILL: ${{ matrix.skill }} run: | - echo test with $MODEL_OVERRIDE - npm run test:vally -- --skill $SKILL --workers 2 + PLUGIN_DIR="${SKILL%%/*}" + SKILL_NAME="${SKILL##*/}" + npm run test:vally -- --plugin $PLUGIN_DIR --skill $SKILL_NAME --workers 2 - name: Generate skill report if: always() diff --git a/.github/workflows/test-azure-deploy.yml b/.github/workflows/test-azure-deploy.yml index 427614ec7..7360d4c40 100644 --- a/.github/workflows/test-azure-deploy.yml +++ b/.github/workflows/test-azure-deploy.yml @@ -56,19 +56,19 @@ jobs: steps: - name: Parse test-pattern input into matrix id: set-matrix + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7 env: INPUT: ${{ inputs.test-pattern }} - run: | - # Default test groups if input is empty - DEFAULT='["skill-invocation","vanilla-static-web-apps-deploy","vanilla-app-service-deploy","vanilla-azure-functions-deploy","vanilla-azure-container-apps-deploy","terraform-static-web-apps-deploy","terraform-app-service-deploy","terraform-azure-functions-deploy","terraform-azure-container-apps-deploy","brownfield-dotnet","brownfield-javascript","brownfield-python"]' - - if [ -z "$INPUT" ]; then - echo "matrix=$DEFAULT" >> "$GITHUB_OUTPUT" - else - # Convert comma-delimited input to JSON array - JSON=$(echo "$INPUT" | tr ',' '\n' | sed 's/^ *//;s/ *$//' | jq -R . | jq -sc .) - echo "matrix=$JSON" >> "$GITHUB_OUTPUT" - fi + with: + script: | + const DEFAULT = ["skill-invocation","vanilla-static-web-apps-deploy","vanilla-app-service-deploy","vanilla-azure-functions-deploy","vanilla-azure-container-apps-deploy","terraform-static-web-apps-deploy","terraform-app-service-deploy","terraform-azure-functions-deploy","terraform-azure-container-apps-deploy","brownfield-dotnet","brownfield-javascript","brownfield-python"]; + const input = process.env.INPUT || ""; + + const matrix = input + ? input.split(",").map(s => s.trim()).filter(Boolean) + : DEFAULT; + + core.setOutput("matrix", JSON.stringify(matrix)); test: name: azure-deploy – ${{ matrix.test-group }} @@ -180,7 +180,6 @@ jobs: MODEL_OVERRIDE: ${{ inputs.model-override }} TEST_GROUP: ${{ matrix.test-group }} run: | - echo test with $MODEL_OVERRIDE npm run test:integration -- azure-deploy "$TEST_GROUP" continue-on-error: true diff --git a/tests/run-vally-test.ts b/tests/run-vally-test.ts index e57b574c3..f4d62cbed 100644 --- a/tests/run-vally-test.ts +++ b/tests/run-vally-test.ts @@ -2,7 +2,7 @@ * CLI wrapper for running vally tests. * * Example: - * npm run test:vally -- --plugin azure --skill azure-ai [...vally eval arguments] + * npm run test:vally -- --plugin azure-skills --skill azure-ai [...vally eval arguments] */ import * as path from "node:path"; @@ -274,7 +274,7 @@ function printUsage(): void { "Usage: tsx tests/run-vally-test.ts [options] [-- ]", "", "Options:", - " --plugin Plugin name for eval specs (default: azure)", + " --plugin Plugin dirname for plugin content and eval specs (default: azure-skills). Note that a plugin's dirname may be different from its name.", " --skill Skill name used by this wrapper", " --pass-rate <0..1> Required pass rate for each aggregated test (default: 0.75)", " --help Show this help", From 508712f10340b33b84ba97c14121159f4be93999 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Fri, 17 Jul 2026 11:26:21 -0700 Subject: [PATCH 31/53] fix scripts in integration test workflow --- .github/workflows/test-all-integration.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test-all-integration.yml b/.github/workflows/test-all-integration.yml index f4a1d22d5..8942e6429 100644 --- a/.github/workflows/test-all-integration.yml +++ b/.github/workflows/test-all-integration.yml @@ -130,9 +130,6 @@ jobs: core.setOutput("debug", debugMap[cron]); } - core.info(`Resolved skills: ${core.getState("skills")}`); - core.info(`Resolved debug: ${core.getState("debug")}`); - setup: name: Build skill matrix needs: resolve-inputs @@ -155,7 +152,7 @@ jobs: const skills = skillsInput.split(",").map(s => s.trim()); // Check if azure-deploy is in the list - const hasAzureDeploy = skills.includes("azure-deploy"); + const hasAzureDeploy = skills.includes("azure-skills/azure-deploy"); core.setOutput("has_azure_deploy", hasAzureDeploy.toString()); // Build matrix excluding azure-deploy @@ -285,7 +282,9 @@ jobs: SKILL_TEST_PATTERN: ${{ inputs.skill-test-pattern }} SKILL: ${{ matrix.skill }} run: | - npm run test:integration "$SKILL" "$SKILL_TEST_PATTERN" + PLUGIN_DIR="${SKILL%%/*}" + SKILL_NAME="${SKILL##*/}" + npm run test:integration "$SKILL_NAME" "$SKILL_TEST_PATTERN" continue-on-error: false # Override the number of concurrent workers to 2 to prevent a GitHub hosted Actions runner running out of memory. From 346fdb471aed8cd34f30cc6be9f4f3ad50b597fa Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Fri, 17 Jul 2026 13:21:04 -0700 Subject: [PATCH 32/53] update codeowners --- .github/CODEOWNERS | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 093833b94..3b2f3485b 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -7,8 +7,8 @@ # Workflow files — explicit protection (changes require team review) /.github/workflows/ @microsoft/github-copilot-for-azure-writers -# Plugin skills owners -/plugin/skills/ @tmeschter @RickWinter +# Plugin skills owners (kept for reference) +/plugin/skills/ @microsoft/github-copilot-for-azure-writers /plugin/skills/airunway-aks-setup/ @tmeschter @RickWinter /plugin/skills/appinsights-instrumentation/ @JasonYeMSFT @RickWinter /plugin/skills/azure-ai/ @JasonYeMSFT @RickWinter @@ -42,3 +42,39 @@ /plugin/skills/microsoft-foundry/foundry-agent/routine/ @anchenyi @XiaofuHuang @swatDong @RickWinter /plugin/skills/microsoft-foundry/foundry-agent/invocations-ws/ @anchenyi @XiaofuHuang @swatDong @RickWinter /plugin/skills/python-appservice-deploy/ @glaming1 @tmeschter @RickWinter + +# Plugin skills owners (multi-plugin) +/plugins/azure-skills/skills/ @microsoft/github-copilot-for-azure-writers +/plugins/azure-skills/skills/airunway-aks-setup/ @tmeschter @RickWinter +/plugins/azure-skills/skills/appinsights-instrumentation/ @JasonYeMSFT @RickWinter +/plugins/azure-skills/skills/azure-ai/ @JasonYeMSFT @RickWinter +/plugins/azure-skills/skills/azure-aigateway/ @azaslonov @RickWinter +/plugins/azure-skills/skills/azure-cloud-migrate/ @saikoumudi @MadhuraBharadwaj-MSFT @RickWinter +/plugins/azure-skills/skills/azure-compliance/ @saikoumudi @RickWinter +/plugins/azure-skills/skills/azure-compute/ @alex-thompson @rakal-dyh @joybb @rmmue21 @RickWinter +/plugins/azure-skills/skills/azure-cost/ @saikoumudi @RickWinter +/plugins/azure-skills/skills/azure-deploy/ @microsoft/github-copilot-for-azure-writers @paulyuk +/plugins/azure-skills/skills/azure-diagnostics/ @tmeschter @saikoumudi @RickWinter +/plugins/azure-skills/skills/azure-enterprise-infra-planner/ @Jbrocket @micha31r @arunrab @RickWinter +/plugins/azure-skills/skills/azure-kubernetes/ @saikoumudi @chandraneel @gambtho @RickWinter +/plugins/azure-skills/skills/azure-kusto/ @saikoumudi @RickWinter +/plugins/azure-skills/skills/azure-messaging/ @kashifkhan @RickWinter +/plugins/azure-skills/skills/azure-prepare/ @microsoft/github-copilot-for-azure-writers +/plugins/azure-skills/skills/azure-quotas/ @rakal-dyh @RickWinter +/plugins/azure-skills/skills/azure-reliability/ @MadhuraBharadwaj-MSFT @saikoumudi @RickWinter +/plugins/azure-skills/skills/azure-resource-lookup/ @JasonYeMSFT @RickWinter +/plugins/azure-skills/skills/azure-resource-visualizer/ @tmeschter @RickWinter +/plugins/azure-skills/skills/azure-storage/ @JasonYeMSFT @RickWinter +/plugins/azure-skills/skills/azure-upgrade/ @MadhuraBharadwaj-MSFT @saikoumudi @RickWinter +/plugins/azure-skills/skills/azure-validate/ @microsoft/github-copilot-for-azure-writers +/plugins/azure-skills/skills/entra-agent-id/ @ArLucaID @RickWinter +/plugins/azure-skills/skills/entra-app-registration/ @JasonYeMSFT @RickWinter +/plugins/azure-skills/skills/microsoft-foundry/ @ankitbko @tendau @XOEEst @anchenyi @XiaofuHuang @jugonzales @vebudumu @RickWinter +/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/cicd/ @anchenyi @XiaofuHuang @swatDong @RickWinter +/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/ @anchenyi @XiaofuHuang @swatDong @RickWinter +/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/deploy/ @anchenyi @XiaofuHuang @swatDong @RickWinter +/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/invoke/ @anchenyi @XiaofuHuang @swatDong @RickWinter +/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/troubleshoot/ @anchenyi @XiaofuHuang @swatDong @RickWinter +/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/routine/ @anchenyi @XiaofuHuang @swatDong @RickWinter +/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/invocations-ws/ @anchenyi @XiaofuHuang @swatDong @RickWinter +/plugins/azure-skills/skills/python-appservice-deploy/ @glaming1 @tmeschter @RickWinter From f8a2a22823ff6e8a6be5d95c357cbec94412f3a1 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Fri, 17 Jul 2026 13:25:43 -0700 Subject: [PATCH 33/53] temp test pr.yml --- .github/workflows/pr.yml | 1 + tests/utils/__tests__/char-budget.test.ts | 27 ++++++++++++++--------- tests/utils/skill-loader.ts | 4 +++- 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 16c0546ec..768b80781 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -3,6 +3,7 @@ name: PR Checks on: pull_request: branches: [main] + workflow_dispatch: jobs: pr-title-prefix: diff --git a/tests/utils/__tests__/char-budget.test.ts b/tests/utils/__tests__/char-budget.test.ts index 42de6afe8..2bfd17ad1 100644 --- a/tests/utils/__tests__/char-budget.test.ts +++ b/tests/utils/__tests__/char-budget.test.ts @@ -3,25 +3,26 @@ */ import { jest } from "@jest/globals"; +import { SkillRef } from "../skill-loader.ts"; type CharBudgetModule = typeof import("../char-budget.ts"); async function importCharBudgetWithMocks( - skills: string[], + skills: SkillRef[], descriptions: Record ): Promise { jest.resetModules(); jest.unstable_mockModule("../skill-loader.ts", () => ({ listSkills: () => skills, - loadSkill: async (skillName: string) => { - const description = descriptions[skillName]; + loadSkill: async (skillRef: SkillRef) => { + const description = descriptions[skillRef.name]; if (description === undefined) { - throw new Error(`Missing mocked description for skill: ${skillName}`); + throw new Error(`Missing mocked description for skill: ${skillRef.name} in plugin ${skillRef.pluginDirname}`); } return { metadata: { - name: skillName, + name: skillRef.name, description, }, }; @@ -39,7 +40,10 @@ describe("truncateSkills", () => { test("throws when requiredSkills contains an invalid skill", async () => { const { truncateSkills } = await importCharBudgetWithMocks( - ["azure-ai", "azure-storage"], + [ + { pluginDirname: "azure-skills", name: "azure-ai" }, + { pluginDirname: "azure-skills", name: "azure-storage" } + ], { "azure-ai": "Azure AI skill", "azure-storage": "Azure Storage skill", @@ -53,7 +57,7 @@ describe("truncateSkills", () => { test("throws when required skills alone exceed char budget", async () => { const { truncateSkills } = await importCharBudgetWithMocks( - ["azure-ai"], + [{ pluginDirname: "azure-skills", name: "azure-ai" }], { "azure-ai": "x".repeat(200), } @@ -70,7 +74,10 @@ describe("truncateSkills", () => { edge: "edge desc", }; const { truncateSkills, getFormattedSkillDescription } = await importCharBudgetWithMocks( - ["required", "edge"], + [ + { pluginDirname: "plugin-dir", name: "required" }, + { pluginDirname: "plugin-dir", name: "edge" } + ], descriptions ); @@ -78,8 +85,8 @@ describe("truncateSkills", () => { const edgeLen = (await getFormattedSkillDescription("edge", descriptions.edge)).length; const equalBudget = requiredLen + 1 + edgeLen + 1; - const disabled = await truncateSkills(["azure-skills"], [{ pluginDirname: "azure-skills", name: "required" }], equalBudget); + const disabled = await truncateSkills(["plugin-dir"], [{ pluginDirname: "plugin-dir", name: "required" }], equalBudget); - expect(disabled).toEqual(["edge"]); + expect(disabled).toEqual([{ pluginDirname: "plugin-dir", name: "edge" }]); }); }); diff --git a/tests/utils/skill-loader.ts b/tests/utils/skill-loader.ts index 3bcdad1af..09341e2dd 100644 --- a/tests/utils/skill-loader.ts +++ b/tests/utils/skill-loader.ts @@ -70,7 +70,9 @@ export async function loadSkill(skillRef: SkillRef): Promise { if (global.OUTPUT_PATH) { // global.OUTPUT_PATH is only defined in JEST context skillPath = path.join( - path.join(global.OUTPUT_PATH, skillRef.pluginDirname), + global.OUTPUT_PATH, + skillRef.pluginDirname, + "skills", skillRef.name ); } else { From f49c0b639b016ad6732a514d7537e9ec664d08c7 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Fri, 17 Jul 2026 14:01:09 -0700 Subject: [PATCH 34/53] build output for token analysis move new plugin scripts --- .github/workflows/pr.yml | 5 ++++- .../references/recipes/azd/scripts/set-aspire-aca-env.ps1 | 0 .../references/recipes/azd/scripts/set-aspire-aca-env.sh | 0 .../references/recipes/scripts/validate-deployment.ps1 | 0 .../references/recipes/scripts/validate-deployment.sh | 0 .../recipes/terraform/scripts/validate-terraform.ps1 | 0 .../recipes/terraform/scripts/validate-terraform.sh | 0 .../references/scripts/scan-aspire-functions-secrets.ps1 | 0 .../references/scripts/scan-aspire-functions-secrets.sh | 0 9 files changed, 4 insertions(+), 1 deletion(-) rename {plugin => plugins/azure-skills}/skills/azure-validate/references/recipes/azd/scripts/set-aspire-aca-env.ps1 (100%) rename {plugin => plugins/azure-skills}/skills/azure-validate/references/recipes/azd/scripts/set-aspire-aca-env.sh (100%) rename {plugin => plugins/azure-skills}/skills/azure-validate/references/recipes/scripts/validate-deployment.ps1 (100%) rename {plugin => plugins/azure-skills}/skills/azure-validate/references/recipes/scripts/validate-deployment.sh (100%) rename {plugin => plugins/azure-skills}/skills/azure-validate/references/recipes/terraform/scripts/validate-terraform.ps1 (100%) rename {plugin => plugins/azure-skills}/skills/azure-validate/references/recipes/terraform/scripts/validate-terraform.sh (100%) rename {plugin => plugins/azure-skills}/skills/azure-validate/references/scripts/scan-aspire-functions-secrets.ps1 (100%) rename {plugin => plugins/azure-skills}/skills/azure-validate/references/scripts/scan-aspire-functions-secrets.sh (100%) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 768b80781..9b580f6b2 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -117,6 +117,9 @@ jobs: working-directory: ./scripts run: npm ci --ignore-scripts + - name: Build output + run: npm ci --ignore-scripts && npm run build + - name: Check Copilot CLI skill char budget working-directory: ./scripts run: npm run checkCopilotCliCharBudget @@ -415,7 +418,7 @@ jobs: # Validate built plugin skill output so version-stamped files are checked echo "Validating references in ../output//skills" - if OUTPUT=$(npm run references -- --plugins-dir ../output 2>&1); then + if OUTPUT=$(npm run references 2>&1); then echo "$OUTPUT" echo "✅ output//skills references are valid" >> $GITHUB_STEP_SUMMARY else diff --git a/plugin/skills/azure-validate/references/recipes/azd/scripts/set-aspire-aca-env.ps1 b/plugins/azure-skills/skills/azure-validate/references/recipes/azd/scripts/set-aspire-aca-env.ps1 similarity index 100% rename from plugin/skills/azure-validate/references/recipes/azd/scripts/set-aspire-aca-env.ps1 rename to plugins/azure-skills/skills/azure-validate/references/recipes/azd/scripts/set-aspire-aca-env.ps1 diff --git a/plugin/skills/azure-validate/references/recipes/azd/scripts/set-aspire-aca-env.sh b/plugins/azure-skills/skills/azure-validate/references/recipes/azd/scripts/set-aspire-aca-env.sh similarity index 100% rename from plugin/skills/azure-validate/references/recipes/azd/scripts/set-aspire-aca-env.sh rename to plugins/azure-skills/skills/azure-validate/references/recipes/azd/scripts/set-aspire-aca-env.sh diff --git a/plugin/skills/azure-validate/references/recipes/scripts/validate-deployment.ps1 b/plugins/azure-skills/skills/azure-validate/references/recipes/scripts/validate-deployment.ps1 similarity index 100% rename from plugin/skills/azure-validate/references/recipes/scripts/validate-deployment.ps1 rename to plugins/azure-skills/skills/azure-validate/references/recipes/scripts/validate-deployment.ps1 diff --git a/plugin/skills/azure-validate/references/recipes/scripts/validate-deployment.sh b/plugins/azure-skills/skills/azure-validate/references/recipes/scripts/validate-deployment.sh similarity index 100% rename from plugin/skills/azure-validate/references/recipes/scripts/validate-deployment.sh rename to plugins/azure-skills/skills/azure-validate/references/recipes/scripts/validate-deployment.sh diff --git a/plugin/skills/azure-validate/references/recipes/terraform/scripts/validate-terraform.ps1 b/plugins/azure-skills/skills/azure-validate/references/recipes/terraform/scripts/validate-terraform.ps1 similarity index 100% rename from plugin/skills/azure-validate/references/recipes/terraform/scripts/validate-terraform.ps1 rename to plugins/azure-skills/skills/azure-validate/references/recipes/terraform/scripts/validate-terraform.ps1 diff --git a/plugin/skills/azure-validate/references/recipes/terraform/scripts/validate-terraform.sh b/plugins/azure-skills/skills/azure-validate/references/recipes/terraform/scripts/validate-terraform.sh similarity index 100% rename from plugin/skills/azure-validate/references/recipes/terraform/scripts/validate-terraform.sh rename to plugins/azure-skills/skills/azure-validate/references/recipes/terraform/scripts/validate-terraform.sh diff --git a/plugin/skills/azure-validate/references/scripts/scan-aspire-functions-secrets.ps1 b/plugins/azure-skills/skills/azure-validate/references/scripts/scan-aspire-functions-secrets.ps1 similarity index 100% rename from plugin/skills/azure-validate/references/scripts/scan-aspire-functions-secrets.ps1 rename to plugins/azure-skills/skills/azure-validate/references/scripts/scan-aspire-functions-secrets.ps1 diff --git a/plugin/skills/azure-validate/references/scripts/scan-aspire-functions-secrets.sh b/plugins/azure-skills/skills/azure-validate/references/scripts/scan-aspire-functions-secrets.sh similarity index 100% rename from plugin/skills/azure-validate/references/scripts/scan-aspire-functions-secrets.sh rename to plugins/azure-skills/skills/azure-validate/references/scripts/scan-aspire-functions-secrets.sh From 79afef781012bb8b3e67c24a485764959ef19ccb Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Fri, 17 Jul 2026 14:05:14 -0700 Subject: [PATCH 35/53] remove stale azure-rbac file --- plugins/azure-skills/skills/azure-rbac/version.json | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 plugins/azure-skills/skills/azure-rbac/version.json diff --git a/plugins/azure-skills/skills/azure-rbac/version.json b/plugins/azure-skills/skills/azure-rbac/version.json deleted file mode 100644 index af73f6419..000000000 --- a/plugins/azure-skills/skills/azure-rbac/version.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "version": "1.1", - "pathFilters": [ - "." - ] -} From 7ac66a29daa19adbf6e5a553c3d5a3480067958f Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Fri, 17 Jul 2026 14:10:13 -0700 Subject: [PATCH 36/53] add missing semicolon --- scripts/src/frontmatter/helpers.ts | 2 +- scripts/src/references/cli.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/src/frontmatter/helpers.ts b/scripts/src/frontmatter/helpers.ts index ad900821b..f77c37033 100644 --- a/scripts/src/frontmatter/helpers.ts +++ b/scripts/src/frontmatter/helpers.ts @@ -600,7 +600,7 @@ export function resolveSkillFiles(relativePath: string): { return { files: [], errorMessage: `Path is neither a file nor a directory: ${relativePath}`, - } + }; } // ── JSON output ────────────────────────────────────────────────────────────── diff --git a/scripts/src/references/cli.ts b/scripts/src/references/cli.ts index ff9386446..a6d60cf4d 100644 --- a/scripts/src/references/cli.ts +++ b/scripts/src/references/cli.ts @@ -475,7 +475,7 @@ function main(): void { }]; } else { if (requestedPluginDirname) { - skills = listSkills(requestedPluginDirname) + skills = listSkills(requestedPluginDirname); } else { const plugins = listPlugins(); for (const plugin of plugins) { From 030c039d334f857fef125ab1d4dc999fe9a43817 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Fri, 17 Jul 2026 14:20:55 -0700 Subject: [PATCH 37/53] Remove temporary changes --- .github/workflows/pr.yml | 1 - detected-script-todos.txt | 86 ------------------------------------- detected-workflow-todos.txt | 81 ---------------------------------- plan.md | 26 ----------- test.js | 70 ------------------------------ test.sh | 61 -------------------------- 6 files changed, 325 deletions(-) delete mode 100644 detected-script-todos.txt delete mode 100644 detected-workflow-todos.txt delete mode 100644 test.js delete mode 100755 test.sh diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 9b580f6b2..ed176c699 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -3,7 +3,6 @@ name: PR Checks on: pull_request: branches: [main] - workflow_dispatch: jobs: pr-title-prefix: diff --git a/detected-script-todos.txt b/detected-script-todos.txt deleted file mode 100644 index 755b78c2d..000000000 --- a/detected-script-todos.txt +++ /dev/null @@ -1,86 +0,0 @@ -Detected script TODOs for old path assumptions -Date: 2026-07-15 -Scope scanned: scripts/** (focused on scripts/src and scripts/src/**/*.test.ts) - -Target of this report -- Find places still assuming old layout roots: plugin/**/* and output/** -- These likely need migration to the current layout roots: plugins/azure-skills/** and output/azure-skills/** - -Production script locations - -1) scripts/src/check-plugin-version-pr.ts -- Line 15: "plugin/.plugin/plugin.json" -- Line 16: "plugin/.claude-plugin/plugin.json" -- Line 17: "plugin/.cursor-plugin/plugin.json" -- Why flagged: hard-coded old source root "plugin/". - -2) scripts/src/update-plugin-version.ts -- Line 21: "../../plugin/.claude-plugin/plugin.json" -- Line 22: "../../plugin/.cursor-plugin/plugin.json" -- Line 23: "../../plugin/.plugin/plugin.json" -- Why flagged: hard-coded old source root "plugin/". - -3) scripts/src/shared/skill-helper.ts -- Line 103: path.resolve(__dirname, "../../../plugin/skills") -- Line 135: const skillsDir = path.resolve(__dirname, "../../../plugin/skills"); -- Why flagged: runtime skill discovery/load uses old source root "plugin/skills". -- Note: comments also reference old path at lines 5 and 97. - -4) scripts/src/references/cli.ts -- Line 40: let SKILLS_DIR = resolve(REPO_ROOT, "plugin", "skills"); -- Why flagged: default skills dir points at old source root. - -5) scripts/src/tokens/commands/types.ts -- Line 125: DEFAULT_SCAN_DIRS includes "plugin/skills" -- Line 142: DEFAULT_LIMITS overrides includes "plugin/README.md" -- Why flagged: default token scan config assumes old source root/files. - -6) scripts/src/verify-build-output-versions.ts -- Line 74: default output dir is "../../output" -- Why flagged: old build output root assumption (now appears namespaced under output/azure-skills). - -7) scripts/src/dashboard/collectors/frontmatter.ts -- Line 121: resolve(options.cwd, "output", "skills") -- Why flagged: assumes old built skills path under output/skills. -- Note: comments also reference old paths at lines 118-119. - -8) scripts/src/tokens/cli.ts -- Line 46: help text says default scope includes "plugin/skills" -- Why flagged: user-facing docs in CLI still describe old source root. - -Test locations (also need updates if source layout is changed) - -9) scripts/src/__tests__/update-plugin-version.test.ts -- Lines 30, 55, 93, 132, 170, 186, 205, 229, 256: join(TEST_DIR, "plugin", ".claude-plugin", ...) -- Lines 31, 56, 94, 133, 187, 206, 230, 257: join(TEST_DIR, "plugin", ".plugin", ...) -- Why flagged: test fixtures/assertions use old "plugin/" root. - -10) scripts/src/dashboard/__tests__/collectors/frontmatter.test.ts -- Lines 28, 36, 73, 97, 120, 142, 171, 245: "plugin/skills/..." -- Why flagged: mocked report paths assert old source root. - -11) scripts/src/dashboard/__tests__/collectors/references.test.ts -- Lines 50, 64, 73: "plugin/skills/..." -- Why flagged: mocked/expected paths assert old source root. - -12) scripts/src/tokens/__tests__/cli.test.ts -- Lines 92, 95: "plugin/skills/SKILL.md" -- Why flagged: argument parsing test input still uses old root. - -13) scripts/src/tokens/__tests__/types.test.ts -- Line 199: matchesPattern("plugin/skills/SKILL.md", "SKILL.md") -- Why flagged: path matching assertion uses old root. - -14) scripts/src/tokens/__tests__/utils.test.ts -- Lines 79, 84, 86, 90, 122: "plugin/skills/..." -- Line 117: "plugin/skills/**/SKILL.md" -- Why flagged: token-limit matching fixtures/patterns use old root. - -15) scripts/src/tokens/__tests__/integration/count.integration.test.ts -- Lines 23, 43: join(TEST_DIR, "plugin", "skills", ...) -- Why flagged: integration fixture structure uses old root. - -Potentially unaffected/noise excluded -- scripts/coverage/** (generated) -- scripts/node_modules/** (dependencies) -- scripts/package-lock.json diff --git a/detected-workflow-todos.txt b/detected-workflow-todos.txt deleted file mode 100644 index dd6e79242..000000000 --- a/detected-workflow-todos.txt +++ /dev/null @@ -1,81 +0,0 @@ -Old source plugin paths (plugin/...) - -eval.yml:7 uses plugin/skills/** in on.pull_request.paths - -eval.yml:53 lints plugin/skills/ - -microsoft-foundry-e2e-eval.yml:55 removes plugin/skills/microsoft-foundry - -microsoft-foundry-e2e-eval.yml:56 restores plugin/skills/microsoft-foundry - -microsoft-foundry-e2e-eval.yml:58 log text mentions plugin/skills/microsoft-foundry - -microsoft-foundry-e2e-eval.yml:60 runs git status on plugin/skills/microsoft-foundry - -pr-plugin-version-check.yml:7 watches plugin/.plugin/plugin.json - -pr-plugin-version-check.yml:8 watches plugin/.claude-plugin/plugin.json - -pr-plugin-version-check.yml:9 watches plugin/.cursor-plugin/plugin.json - -pr.yml:215 watches plugin/skills/*/SKILL.md - -pr.yml:223 watches plugin/skills/** - -pr.yml:263 checks for ^plugin/skills/ - -pr.yml:264 rewrites plugin/skills/ to old output path - -pr.yml:365 watches plugin/skills/**/*.md - -sync-to-azure-mcp.yml:41 passes ../plugin/skills to generateMcpAllowlists - -test-all-skills.yml:25 watches plugin/skills/** on push - -test-all-skills.yml:30 watches plugin/skills/** on pull_request - -Old build output paths (output/... at repo root) - -microsoft-foundry-e2e-eval.yml:138 sets skills_dir="output/skills" - -pr.yml:264 maps to output/skills/ - -pr.yml:294 sets const skillsDir = 'output/skills'; - -pr.yml:396 logs ../output/skills - -pr.yml:397 validates ../output/skills - -publish-to-marketplace.yml:62 sets SOURCE_DIR="source-repo/output/" - -publish-to-marketplace.yml:158 sets SOURCE_DIR="source-repo/output/" - -publish-to-marketplace.yml:173 copies source-repo/output/.plugin/plugin.json - -publish-to-marketplace.yml:174 copies source-repo/output/.mcp.json - -publish-to-marketplace.yml:176 copies source-repo/output/.claude-plugin/plugin.json - -publish-to-marketplace.yml:178 syncs source-repo/output/skills/ - -publish-to-marketplace.yml:180 syncs source-repo/output/hooks/ - -publish-to-marketplace.yml:181 copies source-repo/output/gemini-extension.json - -Comment or message text that still mentions the old layout - -pr.yml:259 comment mentions plugin/skills and output/skills - -pr.yml:310 log text mentions output/skills/ - -pr.yml:335 log text mentions output/skills/ - -publish-to-marketplace.yml:24 comment mentions build stamping into output - -publish-to-marketplace.yml:106 PR body says sync of plugin/ - -publish-to-marketplace.yml:120 comment mentions build stamping into output - -publish-to-marketplace.yml:170 comment describes copying from old output layout - -publish-to-marketplace.yml:235 PR body says sync of plugin/ \ No newline at end of file diff --git a/plan.md b/plan.md index dbbfeb405..e69de29bb 100644 --- a/plan.md +++ b/plan.md @@ -1,26 +0,0 @@ -# Multi-plugin Restructuring Plan - -## Build - -- Update pr.yml workflow to read plugin files from the new locations. -- Update publish-to-marketplace.yml workflow to read from the new location of the azure plugin. However, keep the logic as is. The downstream marketplace is not ready for hosting multi-plugin yet. - -## Tests - -- Update util code in tests/ to locate skill files at the new locations. -- Update the vally commands in eval.yml to lint every plugin in its step. - -## Scripts - -- Update scripts in scripts/ to support specifying which plugin to deal with - - references: remove --skills-dir option, add --plugins-dir option -- Update scripts in scripts/ to work on new location of plugin files - - references: check references for each plugin in --plugins-dir option - -## Documentation - -- Update vally-eval skill to reference the new file structure - -## Misc - -- Rewrite codeowner to re-assign owner to the new files \ No newline at end of file diff --git a/test.js b/test.js deleted file mode 100644 index bb0b4b03a..000000000 --- a/test.js +++ /dev/null @@ -1,70 +0,0 @@ -// pr.yml test (validate CI test schedule in skills.json) -// const fs = require('fs'); -// const path = require('path'); - -// // Get all skill directories from output//skills/ -// const outputDir = "output"; -// const pluginDirs = fs.readdirSync(outputDir) -// .filter(f => fs.statSync(path.join(outputDir, f)).isDirectory()); - -// const pluginSkillDirPathsMap = pluginDirs.reduce((acc, pluginDir) => { -// const pluginSkillsDir = path.join(outputDir, pluginDir, "skills"); -// if (!fs.existsSync(pluginSkillsDir) || !fs.statSync(pluginSkillsDir).isDirectory()) { -// acc[pluginDir] = []; -// return acc; -// } - -// acc[pluginDir] = fs.readdirSync(pluginSkillsDir) -// .filter(f => fs.statSync(path.join(pluginSkillsDir, f)).isDirectory()) -// .map(skillDir => path.join(pluginSkillsDir, skillDir)); -// return acc; -// }, {}); - -// const skillDirs = Object.values(pluginSkillDirPathsMap) -// .flat() -// .map(skillPath => path.basename(skillPath)) -// .sort(); - -// // Read skills.json -// const skillsJson = JSON.parse(fs.readFileSync('tests/skills.json', 'utf8')); -// const jsonPlugins = [...skillsJson.plugins].sort(); -// const jsonSkills = jsonPlugins.map(p => p.skills).flat().sort(); - -// let hasError = false; - -// // 1. skills.json enumerates all skills -// const skillDirsStr = JSON.stringify(skillDirs); -// const jsonSkillsStr = JSON.stringify(jsonSkills); -// if (skillDirsStr !== jsonSkillsStr) { -// console.log(); -// console.log("skills in skills.json doesn't match available skills in output/skills/"); -// hasError = true; -// } - -// // 2. Integration test schedule coverages all skills -// // Only consider the active cron schedules from .github/workflows/integration-tests.yml -// const activeCronSchedules = [ -// '0 5 * * 2-6', -// '0 8 * * 2-6', -// '0 12 * * 2-6', -// ]; -// let scheduledSkills = []; -// jsonPlugins.forEach(p => { -// activeCronSchedules.forEach(cron => { -// const value = p.integrationTestSchedule[cron]; -// if (value) { -// value.split(',').forEach(s => scheduledSkills.push(s)); -// } -// }); -// }); - -// scheduledSkills = scheduledSkills.sort(); - -// const scheduledSkillsStr = JSON.stringify(scheduledSkills); -// if (skillDirsStr !== scheduledSkillsStr) { -// console.log("skillDirs", JSON.stringify(skillDirs)); -// console.log("scheduledSkills", JSON.stringify(scheduledSkills)); -// console.log("integrationTestSchedule in skills.json doesn't match available skills in output/skills/"); -// hasError = true; -// } - diff --git a/test.sh b/test.sh deleted file mode 100755 index afaab9a78..000000000 --- a/test.sh +++ /dev/null @@ -1,61 +0,0 @@ -# Test 1 -# CHANGED_FILES="plugins/cat/skills/cats/SKILL.md plugins/azure-skills/skills/azure-ai/SKILL.md" -# SKILL_FILES="" -# for file in $CHANGED_FILES; do -# if echo "$file" | grep -Eq '^plugins/[^/]+/skills/'; then -# mapped=$(echo "$file" | sed -E 's|^plugins/([^/]+)/skills/|output/\1/skills/|') -# SKILL_FILES="$SKILL_FILES ../$mapped" -# else -# SKILL_FILES="$SKILL_FILES ../$file" -# fi -# done - -# echo $SKILL_FILES - -# Test 2 -# PLUGIN_PATHS=() -# for plugin_dir in ./plugins/*; do -# if [ -d "$plugin_dir" ]; then -# PLUGIN_PATHS+=("$plugin_dir") -# fi -# done - -# if [ "${#PLUGIN_PATHS[@]}" -eq 0 ]; then -# echo "No plugin directories found under ./plugins" -# exit 1 -# fi - -# echo "${PLUGIN_PATHS[@]}" - -# Test 3 -# SOURCE_ROOT="./output" -# TARGET_ROOT="./.github/plugins" - -# # Scan immediate child directories under source-repo/output and sync each child -# # to target-repo/.github/plugins//. -# find "$SOURCE_ROOT" -mindepth 1 -maxdepth 1 -type d | while IFS= read -r child_dir; do -# child_name=$(basename "$child_dir") -# target_dir="$TARGET_ROOT/$child_name/" - -# mkdir -p "$target_dir" - -# # Use rsync to mirror each child directory into its corresponding target directory: -# # --archive preserve permissions, timestamps, etc. -# # --delete remove files in target that are no longer in source child dir -# # --verbose list changes -# rsync --archive --delete --verbose "$child_dir/" "$target_dir" -# done - -# Test 4 -# TARGET_DIRS=("./plugins") -# for target in "${TARGET_DIRS[@]}"; do -# if [ -e "$target" ]; then -# if matches=$(grep -rli --include='*.md' --include='*.json' --exclude='CHANGELOG.md' --exclude='changelog-*.md' 'https://github.com/microsoft/github-copilot-for-azure' "$target"); then -# echo "matches" $matches -# echo "$matches" | while IFS= read -r file; do -# sed -i 's|https://github.com/microsoft/GitHub-Copilot-for-Azure|https://github.com/microsoft/azure-skills|g' "$file" -# sed -i 's|https://github.com/microsoft/github-copilot-for-azure|https://github.com/microsoft/azure-skills|g' "$file" -# done -# fi -# fi -# done \ No newline at end of file From f46733269c343b9ad76bee9ad5d1e7225050719d Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Fri, 17 Jul 2026 14:59:50 -0700 Subject: [PATCH 38/53] update legacy changelog some corrections --- .github/CODEOWNERS | 4 +-- .github/skills/vally-eval/SKILL.md | 2 +- .../skills/vally-eval/references/ci-test.md | 2 +- .github/workflows/pr.yml | 12 +++---- gulpfile.ts | 33 +++++++------------ ...-2026-07-14.md => changelog-2026-07-17.md} | 20 +++++++++++ scripts/src/shared/skill-helper.ts | 2 +- tests/utils/agent-runner.ts | 8 ++--- tests/utils/skill-loader.ts | 2 +- 9 files changed, 47 insertions(+), 38 deletions(-) rename plugins/azure-skills/{changelog-2026-07-14.md => changelog-2026-07-17.md} (91%) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 3b2f3485b..27e4665da 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -8,7 +8,7 @@ /.github/workflows/ @microsoft/github-copilot-for-azure-writers # Plugin skills owners (kept for reference) -/plugin/skills/ @microsoft/github-copilot-for-azure-writers +/plugin/skills/ @tmeschter @RickWinter /plugin/skills/airunway-aks-setup/ @tmeschter @RickWinter /plugin/skills/appinsights-instrumentation/ @JasonYeMSFT @RickWinter /plugin/skills/azure-ai/ @JasonYeMSFT @RickWinter @@ -44,7 +44,7 @@ /plugin/skills/python-appservice-deploy/ @glaming1 @tmeschter @RickWinter # Plugin skills owners (multi-plugin) -/plugins/azure-skills/skills/ @microsoft/github-copilot-for-azure-writers +/plugins/azure-skills/skills/ @tmeschter @RickWinter /plugins/azure-skills/skills/airunway-aks-setup/ @tmeschter @RickWinter /plugins/azure-skills/skills/appinsights-instrumentation/ @JasonYeMSFT @RickWinter /plugins/azure-skills/skills/azure-ai/ @JasonYeMSFT @RickWinter diff --git a/.github/skills/vally-eval/SKILL.md b/.github/skills/vally-eval/SKILL.md index 45210f0d2..5b56ba3f7 100644 --- a/.github/skills/vally-eval/SKILL.md +++ b/.github/skills/vally-eval/SKILL.md @@ -56,7 +56,7 @@ Use vally-cli to run vally eval suites. In most cases, you would like to use a c ```bash # In tests/ -npm run test:vally -- --pluginDir $PLUGIN_DIR --skill $SKILL +npm run test:vally -- --plugin $PLUGIN_DIR --skill $SKILL ``` See [vally test runner](/tests/run-vally-test.ts) on how it composes the vally commands under the hood. diff --git a/.github/skills/vally-eval/references/ci-test.md b/.github/skills/vally-eval/references/ci-test.md index 79611c76c..854bef405 100644 --- a/.github/skills/vally-eval/references/ci-test.md +++ b/.github/skills/vally-eval/references/ci-test.md @@ -4,7 +4,7 @@ Follow these steps to add a skill's Vally suites to the CI test workflow so they ## Prerequisites -- The skill's Vally suites are implemented under `evals//eval.yaml` (or split across multiple YAML files). +- The skill's Vally suites are implemented under `evals///eval.yaml` (or split across multiple YAML files). - The Vally suites use the `integration-test-agent-runner` custom executor. - The test results can be made public. diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index ed176c699..52c92ca8a 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -293,7 +293,7 @@ jobs: const fs = require('fs'); const path = require('path'); - // Get all skill directories from output//skills/ + // Get all skill directories from output//skills/ const outputDir = "output"; const pluginDirs = fs.readdirSync(outputDir) .filter(f => fs.statSync(path.join(outputDir, f)).isDirectory()); @@ -328,7 +328,7 @@ jobs: const jsonSkillsStr = JSON.stringify(jsonSkills); if (skillDirsStr !== jsonSkillsStr) { console.log(); - console.log("skills in skills.json doesn't match available skills in output//skills/"); + console.log("skills in skills.json doesn't match available skills in output//skills/"); hasError = true; } @@ -355,7 +355,7 @@ jobs: if (skillDirsStr !== scheduledSkillsStr) { console.log("skillDirs", JSON.stringify(skillDirs)); console.log("scheduledSkills", JSON.stringify(scheduledSkills)); - console.log("integrationTestSchedule in skills.json doesn't match available skills in output//skills/"); + console.log("integrationTestSchedule in skills.json doesn't match available skills in output//skills/"); hasError = true; } @@ -416,13 +416,13 @@ jobs: VALIDATION_FAILED=0 # Validate built plugin skill output so version-stamped files are checked - echo "Validating references in ../output//skills" + echo "Validating references in ../output//skills" if OUTPUT=$(npm run references 2>&1); then echo "$OUTPUT" - echo "✅ output//skills references are valid" >> $GITHUB_STEP_SUMMARY + echo "✅ output//skills references are valid" >> $GITHUB_STEP_SUMMARY else echo "$OUTPUT" - echo "❌ output//skills contains broken or escaped markdown references" >> $GITHUB_STEP_SUMMARY + echo "❌ output//skills contains broken or escaped markdown references" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "\`\`\`" >> $GITHUB_STEP_SUMMARY echo "$OUTPUT" >> $GITHUB_STEP_SUMMARY diff --git a/gulpfile.ts b/gulpfile.ts index ca299a2fd..b96c35949 100644 --- a/gulpfile.ts +++ b/gulpfile.ts @@ -12,16 +12,6 @@ const TOP_LEVEL_SKILL_RE = /^skills[\\/][^\\/]+[\\/]SKILL\.md$/; // Matches plugin.json in the .plugin/, .cursor-plugin/, and .claude-plugin/ directories. const PLUGIN_JSON_RE = /^\.(?:plugin|cursor-plugin|claude-plugin)[\\/]plugin\.json$/; -/** - * By default the directory of the plugin in the build output should be the exact name of the plugin. - * However, "azure" plugin has been published with "azure-skills" and external marketplaces that references our plugin may depend on it. - * For example, https://github.com/github/awesome-copilot/blob/30472ecf0fe34cc561df958c08501ecc5ca80ea4/.github/plugin/marketplace.json#L142 - * If a plugin has a mapped directory name here, its build output will be written under the mapped directory name. - */ -const pluginDirnameMap = new Map([ - ["azure", "azure-skills"] -]); - /** * Stamps each top-level skill's SKILL.md with a per-skill NBGV version. * Matches files like `skills//SKILL.md` (but not nested skills) and @@ -115,18 +105,17 @@ function stampPluginVersions(plugin: string) { }); } -function getPluginNames(): string[] { +function getPluginDirnames(): string[] { return readdirSync("plugins", { withFileTypes: true }) .filter((entry) => entry.isDirectory()) .map((entry) => entry.name) .sort(); } -function buildPlugin(plugin: string): Promise { +function buildPlugin(pluginDirname: string): Promise { return new Promise((resolve, reject) => { - const pluginSourceDir = path.join("plugins", plugin); - const pluginDirnameOverride = pluginDirnameMap.get(plugin); - const pluginOutputDir = path.join("output", pluginDirnameOverride ?? plugin); + const pluginSourceDir = path.join("plugins", pluginDirname); + const pluginOutputDir = path.join("output", pluginDirname); const pipeline = src( [ @@ -137,18 +126,18 @@ function buildPlugin(plugin: string): Promise { ], { dot: true, encoding: false, base: pluginSourceDir } ) - .pipe(stampSkillVersions(plugin)) - .pipe(stampPluginVersions(plugin)) + .pipe(stampSkillVersions(pluginDirname)) + .pipe(stampPluginVersions(pluginDirname)) .pipe(dest(pluginOutputDir)); pipeline.on("error", (err) => reject(err)); pipeline.on("end", () => { try { - generateChangelog(plugin); + generateChangelog(pluginDirname); resolve(); } catch (err) { const error = err instanceof Error ? err : new Error(String(err)); - log.error(`Failed to generate CHANGELOG.md for plugins/${plugin}.`, error); + log.error(`Failed to generate CHANGELOG.md for plugins/${pluginDirname}.`, error); reject(error); } }); @@ -158,7 +147,7 @@ function buildPlugin(plugin: string): Promise { async function build() { rmSync("output", { recursive: true, force: true }); - const plugins = getPluginNames(); + const plugins = getPluginDirnames(); if (plugins.length === 0) { log.warn("No plugin directories found under plugins/; skipping build."); return; @@ -219,7 +208,7 @@ function generateChangelog(plugin: string): void { } } - // Find the commit that introduced plugins//version.json (the NBGV baseline). + // Find the commit that introduced plugins//version.json (the NBGV baseline). const versionJsonPath = `${pluginDir}/version.json`; const baselineCommit = execSync( `git log --diff-filter=A --format=%H --first-parent -- ${versionJsonPath}`, @@ -231,7 +220,7 @@ function generateChangelog(plugin: string): void { return; } - // Enumerate first-parent commits touching plugins// from baseline (inclusive) to HEAD. + // Enumerate first-parent commits touching plugins// from baseline (inclusive) to HEAD. // We include the baseline itself by using baseline~1..HEAD (or just --ancestry-path from baseline). const logOutput = execSync( `git log --first-parent --format=%H%x00%s --reverse ${baselineCommit}~1..HEAD -- ${pluginDir}/`, diff --git a/plugins/azure-skills/changelog-2026-07-14.md b/plugins/azure-skills/changelog-2026-07-17.md similarity index 91% rename from plugins/azure-skills/changelog-2026-07-14.md rename to plugins/azure-skills/changelog-2026-07-17.md index 51dc76aae..fb38bd843 100644 --- a/plugins/azure-skills/changelog-2026-07-14.md +++ b/plugins/azure-skills/changelog-2026-07-17.md @@ -1,3 +1,23 @@ +## 1.1.98 + +- fix: improve canvas-entry gate logic and add plugin-contributed extension detection ([#2866](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2866)) + +## 1.1.97 + +- fix(microsoft-foundry): support user-entra-token auth for incoming a2a ([#2858](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2858)) + +## 1.1.96 + +- feature: retire azure-rbac skill ([#2779](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2779)) + +## 1.1.95 + +- fix(microsoft-foundry): hosted agents call incoming A2A agent ([#2846](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2846)) + +## 1.1.94 + +- feat: align the Microsoft Foundry skill with the latest azd behavior ([#2844](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2844)) + ## 1.1.93 - feat: add cicd sub skill ([#2838](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2838)) diff --git a/scripts/src/shared/skill-helper.ts b/scripts/src/shared/skill-helper.ts index 85a630caf..f4855ac69 100644 --- a/scripts/src/shared/skill-helper.ts +++ b/scripts/src/shared/skill-helper.ts @@ -73,7 +73,7 @@ export type Plugin = { * The directory name containing the plugin files in the shared plugins directory. * * Plugin directory name can be different from from the plugin's name. - * For example, the directory name of "azure" plugin has been "azure-skills". + * For example, the directory name of "azure" plugin is "azure-skills". * Some external marketplaces already depend on it. * For example, see https://github.com/github/awesome-copilot/blob/30472ecf0fe34cc561df958c08501ecc5ca80ea4/.github/plugin/marketplace.json#L142 * Given a plugin's directory name, we can easily retrieve its plugin name by reading the plugin.json file. diff --git a/tests/utils/agent-runner.ts b/tests/utils/agent-runner.ts index 32ec6ba15..86cdf61f4 100644 --- a/tests/utils/agent-runner.ts +++ b/tests/utils/agent-runner.ts @@ -127,7 +127,7 @@ export interface AgentMetadata { /** * Map from skill name to the sorted, deduped list of files under that skill's - * directory (i.e., paths under `output//skills//`) that were referenced + * directory (i.e., paths under `output//skills//`) that were referenced * by tool invocations during the run. * Populated from tool arguments that reference files in a skill directory, and may * also include a synthesized `SKILL.md` entry for `skill` tool calls. @@ -341,7 +341,7 @@ function extractSkillDirPaths(args: unknown, skillDirectories: string[]): string * * - `toolCounts` keys are raw `event.data.toolName`, excluding the `skill` pseudo-tool. * - `skillFiles` is populated from any tool invocation whose arguments reference - * a path under the given skill directory (`output//skills//...`). + * a path under the given skill directory (`output//skills//...`). */ function computeToolAndSkillStats( events: SessionEvent[], @@ -384,8 +384,8 @@ function computeToolAndSkillStats( } for (const filePath of extractSkillDirPaths(event.data.arguments, skillDirectories)) { - // filePath is /output/// - // normalizedSkillDirs has paths like /output/// + // filePath is /output//skills// + // normalizedSkillDirs has paths like /output//skills// const matchingSkillDir = normalizedSkillDirs.filter(dir => filePath.startsWith(dir)).at(0); if (matchingSkillDir) { const relative = filePath.slice(matchingSkillDir.length + 1); diff --git a/tests/utils/skill-loader.ts b/tests/utils/skill-loader.ts index 09341e2dd..680bd3d4d 100644 --- a/tests/utils/skill-loader.ts +++ b/tests/utils/skill-loader.ts @@ -51,7 +51,7 @@ export type Plugin = { * The directory name containing the plugin files in the shared plugins directory. * * Plugin directory name can be different from from the plugin's name. - * For example, the directory name of "azure" plugin has been "azure-skills". + * For example, the directory name of "azure" plugin is "azure-skills". * Some external marketplaces already depend on it. * For example, see https://github.com/github/awesome-copilot/blob/30472ecf0fe34cc561df958c08501ecc5ca80ea4/.github/plugin/marketplace.json#L142 * Given a plugin's directory name, we can easily retrieve its plugin name by reading the plugin.json file. From cb19677674ecf1e794299886f5013cffa75c88e3 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Fri, 17 Jul 2026 15:43:02 -0700 Subject: [PATCH 39/53] delete plan.md --- plan.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 plan.md diff --git a/plan.md b/plan.md deleted file mode 100644 index e69de29bb..000000000 From 999b3f7f4550d40fe34f89c308b175b24619251c Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Fri, 17 Jul 2026 15:50:35 -0700 Subject: [PATCH 40/53] clarify responsibility of maintaining legacy changelog --- gulpfile.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gulpfile.ts b/gulpfile.ts index b96c35949..2360e1268 100644 --- a/gulpfile.ts +++ b/gulpfile.ts @@ -167,9 +167,12 @@ async function build() { function generateChangelog(plugin: string): void { const pluginDir = path.join("plugins", plugin); + // Moving files causes the git commit history to be lost and thus erases old changelog entries. // To preserve old changelog entries after moving plugin files, // we commit legacy changelog entries and compute a version offset so the // new generated version numbers keep increasing. + // The file is named `changelog-.md` in `plugins//`. + // Update the file if we ever need to move files again. const legacyChangelogFiles = readdirSync(pluginDir, { withFileTypes: true }) .filter((entry) => entry.isFile() && /^changelog-.*\.md$/i.test(entry.name)) .map((entry) => entry.name) From 9c3787264718dfc1d3f8b52730c294fba4e14b02 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Fri, 17 Jul 2026 16:00:47 -0700 Subject: [PATCH 41/53] add back dropped version.json --- .../skills/appinsights-instrumentation/version.json | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 plugins/azure-skills/skills/appinsights-instrumentation/version.json diff --git a/plugins/azure-skills/skills/appinsights-instrumentation/version.json b/plugins/azure-skills/skills/appinsights-instrumentation/version.json new file mode 100644 index 000000000..f6a681a2d --- /dev/null +++ b/plugins/azure-skills/skills/appinsights-instrumentation/version.json @@ -0,0 +1,6 @@ +{ + "version": "1.1", + "pathFilters": [ + "." + ] +} \ No newline at end of file From cfff68c80cb4b523b589f8534e3f11ed335808b2 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Wed, 22 Jul 2026 09:44:26 -0700 Subject: [PATCH 42/53] move azure-compute files --- .../azure-diagnostics}/compute/references/cannot-connect-to-vm.md | 0 .../compute/references/credential-auth-errors.md | 0 .../azure-diagnostics}/compute/references/firewall-blocking.md | 0 .../azure-diagnostics}/compute/references/network-connectivity.md | 0 .../azure-diagnostics}/compute/references/rdp-connectivity.md | 0 .../compute}/references/rdp-service-config.md | 0 .../azure-diagnostics}/compute/references/ssh-connectivity.md | 0 .../compute}/references/vm-agent-not-responding.md | 0 .../skills/azure-diagnostics}/compute/vm-troubleshooting.md | 0 9 files changed, 0 insertions(+), 0 deletions(-) rename {plugin/skills/azure-diagnostics/troubleshooting => plugins/azure-skills/skills/azure-diagnostics}/compute/references/cannot-connect-to-vm.md (100%) rename {plugin/skills/azure-diagnostics/troubleshooting => plugins/azure-skills/skills/azure-diagnostics}/compute/references/credential-auth-errors.md (100%) rename {plugin/skills/azure-diagnostics/troubleshooting => plugins/azure-skills/skills/azure-diagnostics}/compute/references/firewall-blocking.md (100%) rename {plugin/skills/azure-diagnostics/troubleshooting => plugins/azure-skills/skills/azure-diagnostics}/compute/references/network-connectivity.md (100%) rename {plugin/skills/azure-diagnostics/troubleshooting => plugins/azure-skills/skills/azure-diagnostics}/compute/references/rdp-connectivity.md (100%) rename plugins/azure-skills/skills/{azure-compute/workflows/vm-troubleshooter => azure-diagnostics/compute}/references/rdp-service-config.md (100%) rename {plugin/skills/azure-diagnostics/troubleshooting => plugins/azure-skills/skills/azure-diagnostics}/compute/references/ssh-connectivity.md (100%) rename plugins/azure-skills/skills/{azure-compute/workflows/vm-troubleshooter => azure-diagnostics/compute}/references/vm-agent-not-responding.md (100%) rename {plugin/skills/azure-diagnostics/troubleshooting => plugins/azure-skills/skills/azure-diagnostics}/compute/vm-troubleshooting.md (100%) diff --git a/plugin/skills/azure-diagnostics/troubleshooting/compute/references/cannot-connect-to-vm.md b/plugins/azure-skills/skills/azure-diagnostics/compute/references/cannot-connect-to-vm.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/compute/references/cannot-connect-to-vm.md rename to plugins/azure-skills/skills/azure-diagnostics/compute/references/cannot-connect-to-vm.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/compute/references/credential-auth-errors.md b/plugins/azure-skills/skills/azure-diagnostics/compute/references/credential-auth-errors.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/compute/references/credential-auth-errors.md rename to plugins/azure-skills/skills/azure-diagnostics/compute/references/credential-auth-errors.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/compute/references/firewall-blocking.md b/plugins/azure-skills/skills/azure-diagnostics/compute/references/firewall-blocking.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/compute/references/firewall-blocking.md rename to plugins/azure-skills/skills/azure-diagnostics/compute/references/firewall-blocking.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/compute/references/network-connectivity.md b/plugins/azure-skills/skills/azure-diagnostics/compute/references/network-connectivity.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/compute/references/network-connectivity.md rename to plugins/azure-skills/skills/azure-diagnostics/compute/references/network-connectivity.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/compute/references/rdp-connectivity.md b/plugins/azure-skills/skills/azure-diagnostics/compute/references/rdp-connectivity.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/compute/references/rdp-connectivity.md rename to plugins/azure-skills/skills/azure-diagnostics/compute/references/rdp-connectivity.md diff --git a/plugins/azure-skills/skills/azure-compute/workflows/vm-troubleshooter/references/rdp-service-config.md b/plugins/azure-skills/skills/azure-diagnostics/compute/references/rdp-service-config.md similarity index 100% rename from plugins/azure-skills/skills/azure-compute/workflows/vm-troubleshooter/references/rdp-service-config.md rename to plugins/azure-skills/skills/azure-diagnostics/compute/references/rdp-service-config.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/compute/references/ssh-connectivity.md b/plugins/azure-skills/skills/azure-diagnostics/compute/references/ssh-connectivity.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/compute/references/ssh-connectivity.md rename to plugins/azure-skills/skills/azure-diagnostics/compute/references/ssh-connectivity.md diff --git a/plugins/azure-skills/skills/azure-compute/workflows/vm-troubleshooter/references/vm-agent-not-responding.md b/plugins/azure-skills/skills/azure-diagnostics/compute/references/vm-agent-not-responding.md similarity index 100% rename from plugins/azure-skills/skills/azure-compute/workflows/vm-troubleshooter/references/vm-agent-not-responding.md rename to plugins/azure-skills/skills/azure-diagnostics/compute/references/vm-agent-not-responding.md diff --git a/plugin/skills/azure-diagnostics/troubleshooting/compute/vm-troubleshooting.md b/plugins/azure-skills/skills/azure-diagnostics/compute/vm-troubleshooting.md similarity index 100% rename from plugin/skills/azure-diagnostics/troubleshooting/compute/vm-troubleshooting.md rename to plugins/azure-skills/skills/azure-diagnostics/compute/vm-troubleshooting.md From 4e21e145ba48c25fb7d2db69870b4d84446a6234 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Wed, 22 Jul 2026 09:49:01 -0700 Subject: [PATCH 43/53] fix unresolved string --- .github/workflows/test-all-integration.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-all-integration.yml b/.github/workflows/test-all-integration.yml index a9b31d59c..fffd125d4 100644 --- a/.github/workflows/test-all-integration.yml +++ b/.github/workflows/test-all-integration.yml @@ -102,7 +102,7 @@ jobs: const skillsList = skillsJson.plugins .map(plugin => { const entry = plugin.integrationTestSchedule?.[cron]; - return entry ? entry.split(",").map(s => `${plugin.dirname}/s.trim()`) : []; + return entry ? entry.split(",").map(s => `${plugin.dirname}/${s.trim()}`) : []; }) .flat(); From 8a019c5f8063687bdc4136037d5c34dc828fe6e3 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Wed, 22 Jul 2026 10:03:04 -0700 Subject: [PATCH 44/53] update legacy changelog --- ...-2026-07-17.md => changelog-2026-07-22.md} | 280 +++++++++++++++--- 1 file changed, 242 insertions(+), 38 deletions(-) rename plugins/azure-skills/{changelog-2026-07-17.md => changelog-2026-07-22.md} (52%) diff --git a/plugins/azure-skills/changelog-2026-07-17.md b/plugins/azure-skills/changelog-2026-07-22.md similarity index 52% rename from plugins/azure-skills/changelog-2026-07-17.md rename to plugins/azure-skills/changelog-2026-07-22.md index fb38bd843..d08f06bcc 100644 --- a/plugins/azure-skills/changelog-2026-07-17.md +++ b/plugins/azure-skills/changelog-2026-07-22.md @@ -1,223 +1,427 @@ +## 1.2.0 + +- fix: unify plugin and changelog versioning ([#2927](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2927)) + +## 1.1.105 + +- Fix ambiguous file path example ([#2893](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2893)) + +## 1.1.104 + +- feat: Migrate VM Troubleshooter workflow to azure-diagnostics ([#2859](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2859)) + +## 1.1.103 + +- feat: set azd user agent env ([#2882](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2882)) + +## 1.1.102 + +- fix: split prompt-agent tool references into tools/prompt-agent/ ([#2857](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2857)) + +## 1.1.101 + +- feat: replace azure-validate AZCLI/Bicep validation steps with a shared script ([#2856](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2856)) + +## 1.1.100 + +- feat: replace azure-validate Aspire Functions secret-storage scan with a script ([#2854](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2854)) + +## 1.1.99 + +- feat: replace azure-validate Aspire ACA env-var setup with a script ([#2855](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2855)) + ## 1.1.98 -- fix: improve canvas-entry gate logic and add plugin-contributed extension detection ([#2866](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2866)) +- feat: script-ify Terraform validation preflight sequence (azure-validate) ([#2862](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2862)) ## 1.1.97 -- fix(microsoft-foundry): support user-entra-token auth for incoming a2a ([#2858](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2858)) +- fix: improve canvas-entry gate logic and add plugin-contributed extension detection ([#2866](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2866)) ## 1.1.96 -- feature: retire azure-rbac skill ([#2779](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2779)) +- fix(microsoft-foundry): support user-entra-token auth for incoming a2a ([#2858](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2858)) ## 1.1.95 -- fix(microsoft-foundry): hosted agents call incoming A2A agent ([#2846](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2846)) +- feature: retire azure-rbac skill ([#2779](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2779)) ## 1.1.94 -- feat: align the Microsoft Foundry skill with the latest azd behavior ([#2844](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2844)) +- fix(microsoft-foundry): hosted agents call incoming A2A agent ([#2846](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2846)) ## 1.1.93 -- feat: add cicd sub skill ([#2838](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2838)) +- feat: align the Microsoft Foundry skill with the latest azd behavior ([#2844](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2844)) ## 1.1.92 -- fix: clarify canvas-first reminder ([#2837](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2837)) +- feat: add cicd sub skill ([#2838](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2838)) ## 1.1.91 -- chore: improve agent instruction and quick start ([#2768](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2768)) +- fix: clarify canvas-first reminder ([#2837](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2837)) ## 1.1.90 -- fix: remove azd init from Foundry agent creation ([#2812](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2812)) +- chore: improve agent instruction and quick start ([#2768](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2768)) ## 1.1.89 -- feat: update invocations_ws skill for GA and path-based routing ([#2807](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2807)) +- fix: remove azd init from Foundry agent creation ([#2812](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2812)) ## 1.1.88 -- eval: migrate azure-compute integration tests to vally eval suite ([#2596](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2596)) +- feat: update invocations_ws skill for GA and path-based routing ([#2807](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2807)) ## 1.1.87 -- fix: use proper tool to execute query in Azure SQL Server ([#2772](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2772)) +- eval: migrate azure-compute integration tests to vally eval suite ([#2596](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2596)) ## 1.1.86 -- feat: add canvas-first entry gate for Foundry agent creation ([#2775](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2775)) +- fix: use proper tool to execute query in Azure SQL Server ([#2772](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2772)) ## 1.1.85 -- feature: retire azure-hosted-copilot-sdk skill ([#2556](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2556)) +- feat: add canvas-first entry gate for Foundry agent creation ([#2775](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2775)) ## 1.1.84 -- feat: capture and report skill version in telemetry hooks ([#2763](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2763)) +- feature: retire azure-hosted-copilot-sdk skill ([#2556](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2556)) ## 1.1.83 -- eval: migrate azure-prepare integration tests to vally eval suites ([#2721](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2721)) +- feat: capture and report skill version in telemetry hooks ([#2763](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2763)) ## 1.1.82 -- feat: support foundry routine and add it as a sub-skill ([#2743](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2743)) +- eval: migrate azure-prepare integration tests to vally eval suites ([#2721](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2721)) ## 1.1.81 -- fix: correct toolbox reference docs from live testing ([#2755](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2755)) +- feat: support foundry routine and add it as a sub-skill ([#2743](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2743)) ## 1.1.80 -- fix(microsoft-foundry): vnet ([#2754](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2754)) +- fix: correct toolbox reference docs from live testing ([#2755](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2755)) ## 1.1.79 -- fix: restructure and update skill reference docs for hosted agent creation ([#2737](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2737)) +- fix(microsoft-foundry): vnet ([#2754](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2754)) ## 1.1.78 -- fix(microsoft-foundry): sync latest azd contract and schema ([#2722](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2722)) +- fix: restructure and update skill reference docs for hosted agent creation ([#2737](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2737)) ## 1.1.77 -- feat: add guardrails reference docs for hosted agent creation ([#2731](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2731)) +- fix(microsoft-foundry): sync latest azd contract and schema ([#2722](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2722)) ## 1.1.76 -- fix: Get hooks working in Copilot again ([#2719](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2719)) +- feat: add guardrails reference docs for hosted agent creation ([#2731](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2731)) ## 1.1.75 -- feat: improve foundry skill in more real user scenarios. ([#2705](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2705)) +- fix: Get hooks working in Copilot again ([#2719](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2719)) ## 1.1.74 -- feat: add skill related knowledge into foundry skill ([#2664](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2664)) +- feat: improve foundry skill in more real user scenarios. ([#2705](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2705)) ## 1.1.73 -- fix(microsoft-foundry): improve quick start provision and local run polling ([#2694](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2694)) +- feat: add skill related knowledge into foundry skill ([#2664](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2664)) ## 1.1.72 +- fix(microsoft-foundry): improve quick start provision and local run polling ([#2694](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2694)) + +## 1.1.71 + - fix: add Network Isolation Errors hint to microsoft-foundry SKILL.md ([#2685](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2685)) ## 1.1.70 -- feat: improve the hosted agent getting started with coding ([#2610](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2610)) +- Enhance FAOS documentation and fix evaluator contract issues ([#2637](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2637)) ## 1.1.69 -- feat: add python-appservice-deploy skill for Python/Flask/Django/FastAPI on App Service ([#2487](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2487)) +- feat: improve the hosted agent getting started with coding ([#2610](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2610)) ## 1.1.68 -- feat(azure-compute): add VM creation workflow with approval gate before deploy ([#2297](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2297)) +- feat: add python-appservice-deploy skill for Python/Flask/Django/FastAPI on App Service ([#2487](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2487)) ## 1.1.67 -- feat: (azure-cost) add storage optimization guide and fix token limit ([#2554](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2554)) +- feat(azure-compute): add VM creation workflow with approval gate before deploy ([#2297](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2297)) ## 1.1.66 +- feat: (azure-cost) add storage optimization guide and fix token limit ([#2554](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2554)) + +## 1.1.65 + - eval: migrate infra-planner tests to Vally ([#2483](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2483)) ## 1.1.64 +- Optimize FAOS preparation and clarify evaluator documentation ([#2482](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2482)) + +## 1.1.63 + - Fix: hard gate deployment phase for infra-planner skill ([#2427](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2427)) +## 1.1.62 + +- fix azure-upgrade: improve Java Azure SDK BOM migration reliability ([#2270](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2270)) + +## 1.1.61 + +- docs: rename AI Toolkit to Foundry Toolkit for VSCode in microsoft-foundry skill ([#2429](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2429)) + +## 1.1.60 + +- Refresh toolbox skills and add Foundry tool catalog (connector) reference ([#2384](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2384)) + ## 1.1.59 +- azure-kubernetes: add VPA and pod rightsizing routing triggers ([#2391](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2391)) + +## 1.1.58 + - feat(azure-kubernetes): Update constraint spec references to match what Deployment Safeguards enforces ([#1976](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1976)) +## 1.1.57 + +- rename Foundry RBAC roles ([#2281](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2281)) + +## 1.1.56 + +- Add insights into the infra planner skill ([#2345](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2345)) + +## 1.1.55 + +- Add invocations_ws sub-skill to microsoft-foundry ([#2388](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2388)) + +## 1.1.54 + +- Clarify FAOS optimization guidance and improve evaluator contracts leveraging azd ([#2383](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2383)) + ## 1.1.53 -- feature: Move quota workflow to a script ([#2360](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2360)) +- Add azure-reliability — Azure App Service reliability reference ([#2242](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2242)) ## 1.1.52 -- fix: toolbox skill invocation and foundry samples path ([#2389](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2389)) +- feature: Move quota workflow to a script ([#2360](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2360)) ## 1.1.51 +- fix: toolbox skill invocation and foundry samples path ([#2389](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2389)) + +## 1.1.50 + - feat: support direct code deployment ([#2362](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2362)) +## 1.1.49 + +- Clarify FAOS optimization guidance and improve evaluator contracts ([#2286](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2286)) + +## 1.1.48 + +- Add: Fine-tuning sub-skill for microsoft-foundry plugin ([#1995](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1995)) + ## 1.1.47 -- feat(azure-diagnostics/inspektor-gadget): Use correct filter for tcpdump gadget ([#2292](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2292)) +- updated plugin.json to skip default hooks.json discovery from vscode ([#2308](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2308)) ## 1.1.46 -- feat(microsoft-foundry): add Tracing Insights API skill for automated anomaly detection ([#2276](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2276)) +- feat(azure-diagnostics/inspektor-gadget): Use correct filter for tcpdump gadget ([#2292](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2292)) ## 1.1.45 +- feat(microsoft-foundry): add Tracing Insights API skill for automated anomaly detection ([#2276](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2276)) + +## 1.1.44 + - fix(microsoft-foundry): update integrate toolbox into hosted-agent flow ([#2264](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2264)) +## 1.1.43 + +- Clarify FAOS optimization guidance and custom evaluator contracts ([#2251](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2251)) + +## 1.1.42 + +- Add azure-reliability skill (Functions) ([#2241](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2241)) + ## 1.1.41 +- azure-diagnostics: Add Inspektor Gadget Reference ([#1961](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1961)) + +## 1.1.40 + - fix: update foundry-agent invoke skill for invocations protocol ([#2154](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2154)) +## 1.1.39 + +- ci(eval): migrate to Vally eval framework with v0.4.0 features ([#1912](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1912)) + ## 1.1.38 +- Fix broken VPA installation link in azure-aks-vpa.md ([#2178](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2178)) + +## 1.1.37 + - fix: improve azure-hosted-copilot-sdk routing for codebase-detection scenarios ([#1857](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1857)) +## 1.1.36 + +- FAOS optimize preparation skill ([#2174](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2174)) + +## 1.1.35 + +- Add Spring Boot to Azure Container Apps migration skill ([#1569](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1569)) + +## 1.1.34 + +- Gap-5: App Service Operate (B+ → A) — SKU selection, custom domains, networking ([#1639](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1639)) + ## 1.1.33 +- azure-upgrade: add Redis (ACR/OSS and ACRE) -> AMR migration scenarios ([#2159](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2159)) + +## 1.1.32 + - feature: Feature/azure compute/enablemachinemanagement ([#2069](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2069)) +## 1.1.31 + +- Gap-8: App Service Migrate (F → A) — Beanstalk + Heroku + App Engine migration guides ([#1633](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1633)) + ## 1.1.30 +- Gap-10: Container Apps Observe (B → A) — Observability playbook + Dapr tracing ([#1642](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1642)) + +## 1.1.29 + - fix(app-service-templates): address review feedback — discoverability, auth IaC, token refresh, source splits ([#1635](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1635)) +## 1.1.28 + +- Add missing instructions for terraform two-phase pre deploy check ([#2138](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2138)) + +## 1.1.27 + +- update the path in script to support claude marketplace file refs ([#2122](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2122)) + +## 1.1.26 + +- Add private-network sub-skill for Foundry VNet deployment ([#2073](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2073)) + ## 1.1.25 +- Eval suite renaming and multiple env & agent folder support. ([#2092](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2092)) + +## 1.1.24 + - fix: update toolbox sample link ([#2078](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2078)) +## 1.1.23 + +- Add continuous-eval observe ref for Foundry agent Monitoring ([#1733](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1733)) + ## 1.1.22 -- fix: Remove context7 MCP server from plugin config ([#2100](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2100)) +- Gap-6: App Service Diagnose (B → A) — Dedicated troubleshooting guide ([#1640](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1640)) ## 1.1.21 +- fix: Remove context7 MCP server from plugin config ([#2100](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2100)) + +## 1.1.20 + - feat: Extend `azure-upgrade` skill by adding workflow for migrating legacy Azure SDKs for Java to latest modern ones ([#1901](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1901)) ## 1.1.19 +- Add entra-agent-id skill ([#2033](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2033)) + +## 1.1.18 + - fix: strengthen azure-resource-lookup routing for web app/website prompts ([#2006](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2006)) +## 1.1.17 + +- Move Azure Messaging Troubleshooting Info To New Directory ([#1986](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1986)) + +## 1.1.16 + +- Ask agent to remove stale IaC after potential conversion ([#2032](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2032)) + ## 1.1.15 +- Gap-3: Container Apps Operate (C → A) — Revisions, day-2 ops, networking ([#1637](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1637)) + +## 1.1.14 + - feat: generate CHANGELOG.md at build time from git history ([#2068](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2068)) ## 1.1.13 -- chore: update post-deployment rbac assignment logic ([#2057](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2057)) +- Extend azure-cloud-migrate skill with AWS Fargate to Container Apps scenario ([#1534](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1534)) ## 1.1.12 +- chore: update post-deployment rbac assignment logic ([#2057](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2057)) + +## 1.1.11 + - fix: Add Foundry Toolbox integration to hosted agent create skill ([#2035](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2035)) ## 1.1.10 +- Remove hardcoded Azure Functions templates, use MCP tool ([#1949](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1949)) + +## 1.1.9 + - fix: strengthen azure-storage routing for storage tiers informational prompts ([#2008](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2008)) ## 1.1.8 -- fix(azure-prepare): mandate Active Directory Default in SQL connection strings ([#1937](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1937)) +- docs(cloud-migrate): add Kubernetes to Container Apps migration guidance ([#1568](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1568)) ## 1.1.7 +- fix(azure-prepare): mandate Active Directory Default in SQL connection strings ([#1937](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1937)) + +## 1.1.6 + - fix(azure-prepare): fix Aspire AddParameter+WithBuildArg guidance for all azd versions ([#1939](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1939)) ## 1.1.5 +- refactor: support multi-protocol (responses + invocation) in create skill, fix invoke skill and other issues ([#2013](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2013)) + +## 1.1.4 + - chore: support hosted agent v2 in code gen and deploy skill ([#2000](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2000)) ## 1.1.3 -- fix: clarify output directory naming to use workspace root basename ([#1990](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1990)) \ No newline at end of file +- Refactor aks troubleshoot paths ([#1987](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1987)) + +## 1.1.2 + +- fix: clarify output directory naming to use workspace root basename ([#1990](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1990)) + +## 1.1.1 + +- Tweak instructions to resolve synk high risks ([#1988](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1988)) + +## 1.1.0 + +- Add Gulp build system with NBGV versioning ([#1968](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/1968)) \ No newline at end of file From bd38c97c4562bbf61a42e6f3989d9b6d6318968a Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Wed, 22 Jul 2026 10:03:21 -0700 Subject: [PATCH 45/53] fix build script --- gulpfile.ts | 126 +++++++++++----------------------------------------- 1 file changed, 27 insertions(+), 99 deletions(-) diff --git a/gulpfile.ts b/gulpfile.ts index 077765524..ea727bd98 100644 --- a/gulpfile.ts +++ b/gulpfile.ts @@ -59,20 +59,15 @@ function stampSkillVersions(plugin: string) { /** * Stamps the plugin.json files in `.plugin/`, `.cursor-plugin/`, and - * `.claude-plugin/` with a shared NBGV version derived from `plugin/version.json`. - * The version is fetched once on the first matching file and cached for the rest. + * `.claude-plugin/` with using git commit height. */ -<<<<<<< HEAD function stampPluginVersions(plugin: string) { - let pluginVersionPromise: Promise | null = null; -======= -function stampPluginVersions() { const versionJson = JSON.parse( - readFileSync("plugin/version.json", "utf-8") + readFileSync(`plugins/${plugin}/version.json`, "utf-8") ); const majorMinor = versionJson.version as string; - const commits = getVersionedCommits(); + const commits = getVersionedCommits(plugin); // The last commit is the most recent commit const patchNumber = commits.length > 0 @@ -80,7 +75,6 @@ function stampPluginVersions() { : 0; const version = `${majorMinor}.${patchNumber}`; ->>>>>>> main return new Transform({ objectMode: true, @@ -91,16 +85,6 @@ function stampPluginVersions() { } try { -<<<<<<< HEAD - if (!pluginVersionPromise) { - pluginVersionPromise = nbgv - .getVersion(path.resolve(`plugins/${plugin}`)) - .then((v) => v.simpleVersion); - } - const version = await pluginVersionPromise; - -======= ->>>>>>> main const content = file.contents!.toString(); const versionPlaceholderPattern = /("version":\s*")0\.0\.0-placeholder(")/; @@ -198,8 +182,8 @@ type Commit = { /** * @returns Commits with their associated version numbers from oldest to newest. */ -function getVersionedCommits(): Commit[] { - const pluginDir = "plugin"; +function getVersionedCommits(plugin: string): Commit[] { + const pluginDir = `plugins/${plugin}`; // Find the commit that introduced plugin/version.json (the NBGV baseline). const baselineCommit = execSync( @@ -292,15 +276,27 @@ function getVersionedCommits(): Commit[] { }); } -/** - * Generates a CHANGELOG.md in the output directory based on merged PRs - * that touch plugin/ and have titles starting with fix:, feat:, feature:, chore:, misc:, test:, or eval:. - * Each version corresponds to a single first-parent commit touching plugin/ - * since the NBGV baseline commit (when plugin/version.json was introduced). - */ -<<<<<<< HEAD function generateChangelog(plugin: string): void { - const pluginDir = path.join("plugins", plugin); + const pluginDir = `plugins/${plugin}`; + const versionedCommits = getVersionedCommits(plugin); + + if (versionedCommits.length === 0) { + log.warn("No commit data available for changelog generation."); + return; + } + + // Determine the repository URL for PR links. Prefer the "upstream" remote + // (the canonical repo where PRs live) and fall back to "origin". + let remoteUrl: string; + try { + remoteUrl = execSync("git remote get-url upstream", { encoding: "utf-8" }).trim(); + } catch { + remoteUrl = execSync("git remote get-url origin", { encoding: "utf-8" }).trim(); + } + const repoUrl = remoteUrl.replace(/\.git$/, "").replace(/^git@github\.com:/, "https://github.com/"); + + // Build changelog content (newest first). + let content = "# Changelog\n"; // Moving files causes the git commit history to be lost and thus erases old changelog entries. // To preserve old changelog entries after moving plugin files, @@ -346,72 +342,10 @@ function generateChangelog(plugin: string): void { } } - // Find the commit that introduced plugins//version.json (the NBGV baseline). - const versionJsonPath = `${pluginDir}/version.json`; - const baselineCommit = execSync( - `git log --diff-filter=A --format=%H --first-parent -- ${versionJsonPath}`, - { encoding: "utf-8" } - ).trim(); - - if (!baselineCommit) { - log.warn(`Could not find baseline commit for ${versionJsonPath}; skipping changelog generation.`); - return; - } - - // Enumerate first-parent commits touching plugins// from baseline (inclusive) to HEAD. - // We include the baseline itself by using baseline~1..HEAD (or just --ancestry-path from baseline). - const logOutput = execSync( - `git log --first-parent --format=%H%x00%s --reverse ${baselineCommit}~1..HEAD -- ${pluginDir}/`, - { encoding: "utf-8" } - ).trim(); - - if (!logOutput) { - log.warn(`No commits found touching ${pluginDir}/; skipping changelog generation.`); - return; - } - - const commits = logOutput.split("\n").map((line, index) => { - const [hash, subject] = line.split("\0", 2); - return { hash, subject, height: index + 1 }; - }); - - // Filter to only include PRs with fix:/feat:/feature:/chore:/misc:/test:/eval: prefixes. - const prefixRe = /^(fix|feat|feature|chore|misc|test|eval)(\(.+?\))?:/i; - const filtered = commits.filter((c) => prefixRe.test(c.subject)); - -======= -function generateChangelog(): void { - const versionedCommits = getVersionedCommits(); - - if (versionedCommits.length === 0) { - log.warn("No commit data available for changelog generation."); - return; - } - ->>>>>>> main - // Determine the repository URL for PR links. Prefer the "upstream" remote - // (the canonical repo where PRs live) and fall back to "origin". - let remoteUrl: string; - try { - remoteUrl = execSync("git remote get-url upstream", { encoding: "utf-8" }).trim(); - } catch { - remoteUrl = execSync("git remote get-url origin", { encoding: "utf-8" }).trim(); - } - const repoUrl = remoteUrl.replace(/\.git$/, "").replace(/^git@github\.com:/, "https://github.com/"); - - // Build changelog content (newest first). - let content = "# Changelog\n"; - -<<<<<<< HEAD - for (let i = filtered.length - 1; i >= 0; i--) { - const entry = filtered[i]; - const version = `${majorMinor}.${entry.height + patchOffset}`; -======= for (let i = versionedCommits.length - 1; i >= 0; i--) { const entry = versionedCommits[i]; - const version = `${entry.majorMinor}.${entry.relativeHeight}`; + const version = `${entry.majorMinor}.${entry.relativeHeight + patchOffset}`; ->>>>>>> main // Turn (#NNN) into a markdown link. const subject = entry.subject.replace( /\(#(\d+)\)/g, @@ -420,7 +354,6 @@ function generateChangelog(): void { content += `\n## ${version}\n\n- ${subject}\n`; } -<<<<<<< HEAD // Add all the legacy changelog entries for (const legacyFile of legacyChangelogFiles) { const legacyContent = readFileSync(path.join(pluginDir, legacyFile), "utf-8"); @@ -441,12 +374,7 @@ function generateChangelog(): void { const outputDir = path.join("output", plugin); mkdirSync(outputDir, { recursive: true }); writeFileSync(path.join(outputDir, "CHANGELOG.md"), content, "utf-8"); - log(`generated CHANGELOG.md for plugins/${plugin} with ${filtered.length} entries`); -======= - mkdirSync("output", { recursive: true }); - writeFileSync("output/CHANGELOG.md", content, "utf-8"); - log(`generated CHANGELOG.md with ${versionedCommits.length} entries`); ->>>>>>> main + log(`generated CHANGELOG.md for plugins/${plugin} with ${versionedCommits.length} entries`); } export default build; From 047aaa94c2b18708803dc60f2f7dc6a5bbf45ef3 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Wed, 22 Jul 2026 11:24:04 -0700 Subject: [PATCH 46/53] fix build script --- gulpfile.ts | 132 +++++++++++++++++++++++++++++++--------------------- 1 file changed, 78 insertions(+), 54 deletions(-) diff --git a/gulpfile.ts b/gulpfile.ts index ea727bd98..9dc8e5438 100644 --- a/gulpfile.ts +++ b/gulpfile.ts @@ -61,7 +61,7 @@ function stampSkillVersions(plugin: string) { * Stamps the plugin.json files in `.plugin/`, `.cursor-plugin/`, and * `.claude-plugin/` with using git commit height. */ -function stampPluginVersions(plugin: string) { +function stampPluginVersions(plugin: string, legacyChangelog?: LegacyChangelog) { const versionJson = JSON.parse( readFileSync(`plugins/${plugin}/version.json`, "utf-8") ); @@ -70,9 +70,12 @@ function stampPluginVersions(plugin: string) { const commits = getVersionedCommits(plugin); // The last commit is the most recent commit - const patchNumber = commits.length > 0 + let patchNumber = commits.length > 0 ? commits[commits.length - 1].relativeHeight : 0; + if (legacyChangelog) { + patchNumber += legacyChangelog.patchOffset; + } const version = `${majorMinor}.${patchNumber}`; @@ -117,6 +120,8 @@ function getPluginDirnames(): string[] { } function buildPlugin(pluginDirname: string): Promise { + const legacyChangelog = getLegacyChangelog(pluginDirname); + return new Promise((resolve, reject) => { const pluginSourceDir = path.join("plugins", pluginDirname); const pluginOutputDir = path.join("output", pluginDirname); @@ -131,13 +136,13 @@ function buildPlugin(pluginDirname: string): Promise { { dot: true, encoding: false, base: pluginSourceDir } ) .pipe(stampSkillVersions(pluginDirname)) - .pipe(stampPluginVersions(pluginDirname)) + .pipe(stampPluginVersions(pluginDirname, legacyChangelog)) .pipe(dest(pluginOutputDir)); pipeline.on("error", (err) => reject(err)); pipeline.on("end", () => { try { - generateChangelog(pluginDirname); + generateChangelog(pluginDirname, legacyChangelog); resolve(); } catch (err) { const error = err instanceof Error ? err : new Error(String(err)); @@ -276,8 +281,7 @@ function getVersionedCommits(plugin: string): Commit[] { }); } -function generateChangelog(plugin: string): void { - const pluginDir = `plugins/${plugin}`; +function generateChangelog(plugin: string, legacyChangelog?: LegacyChangelog): void { const versionedCommits = getVersionedCommits(plugin); if (versionedCommits.length === 0) { @@ -298,33 +302,80 @@ function generateChangelog(plugin: string): void { // Build changelog content (newest first). let content = "# Changelog\n"; + let patchOffset = 0; + if (legacyChangelog) { + patchOffset = legacyChangelog.patchOffset; + } + + for (let i = versionedCommits.length - 1; i >= 0; i--) { + const entry = versionedCommits[i]; + + const version = `${entry.majorMinor}.${entry.relativeHeight + patchOffset}`; + + // Turn (#NNN) into a markdown link. + const subject = entry.subject.replace( + /\(#(\d+)\)/g, + (_, num) => `([#${num}](${repoUrl}/pull/${num}))` + ); + content += `\n## ${version}\n\n- ${subject}\n`; + } + + // Add all the legacy changelog entries + if (legacyChangelog) { + if (!content.endsWith("\n")) { + content += "\n"; + } + content += "\n"; + content += legacyChangelog.legacyChangelogContent; + if (!legacyChangelog.legacyChangelogContent.endsWith("\n")) { + content += "\n"; + } + } + + const outputDir = path.join("output", plugin); + mkdirSync(outputDir, { recursive: true }); + writeFileSync(path.join(outputDir, "CHANGELOG.md"), content, "utf-8"); + log(`generated CHANGELOG.md for plugins/${plugin} with ${versionedCommits.length} entries`); +} + +type LegacyChangelog = { + patchOffset: number; + legacyChangelogContent: string; +}; + +function getLegacyChangelog(plugin: string): LegacyChangelog | undefined { + const pluginDir = `plugins/${plugin}`; // Moving files causes the git commit history to be lost and thus erases old changelog entries. // To preserve old changelog entries after moving plugin files, // we commit legacy changelog entries and compute a version offset so the // new generated version numbers keep increasing. // The file is named `changelog-.md` in `plugins//`. // Update the file if we ever need to move files again. - const legacyChangelogFiles = readdirSync(pluginDir, { withFileTypes: true }) + const legacyChangelogFile = readdirSync(pluginDir, { withFileTypes: true }) .filter((entry) => entry.isFile() && /^changelog-.*\.md$/i.test(entry.name)) .map((entry) => entry.name) - .sort((a, b) => b.localeCompare(a)); + .sort((a, b) => b.localeCompare(a)) + .at(0); + + if (!legacyChangelogFile) { + return undefined; + } let firstLegacyVersionParts: | { major: number; minor: number; patch: number } | undefined; - if (legacyChangelogFiles.length > 0) { - const firstLegacyContent = readFileSync( - path.join(pluginDir, legacyChangelogFiles[0]), - "utf-8" - ); - const firstVersionMatch = firstLegacyContent.match(/\b(\d+)\.(\d+)\.(\d+)\b/); - if (firstVersionMatch) { - firstLegacyVersionParts = { - major: Number(firstVersionMatch[1]), - minor: Number(firstVersionMatch[2]), - patch: Number(firstVersionMatch[3]), - }; - } + + const firstLegacyContent = readFileSync( + path.join(pluginDir, legacyChangelogFile), + "utf-8" + ); + const firstVersionMatch = firstLegacyContent.match(/\b(\d+)\.(\d+)\.(\d+)\b/); + if (firstVersionMatch) { + firstLegacyVersionParts = { + major: Number(firstVersionMatch[1]), + minor: Number(firstVersionMatch[2]), + patch: Number(firstVersionMatch[3]), + }; } const versionJson = JSON.parse( @@ -338,43 +389,16 @@ function generateChangelog(plugin: string): void { // When major/minor version is higher than the most recent major/minor in the legacy changelog, // the patch number must have been reset to 0 so we don't need an offset. if (major === firstLegacyVersionParts.major && minor === firstLegacyVersionParts.minor) { - patchOffset = firstLegacyVersionParts.patch; + patchOffset = firstLegacyVersionParts.patch + 1; } } - for (let i = versionedCommits.length - 1; i >= 0; i--) { - const entry = versionedCommits[i]; - const version = `${entry.majorMinor}.${entry.relativeHeight + patchOffset}`; + const content = readFileSync(path.join(pluginDir, legacyChangelogFile), "utf-8"); - // Turn (#NNN) into a markdown link. - const subject = entry.subject.replace( - /\(#(\d+)\)/g, - (_, num) => `([#${num}](${repoUrl}/pull/${num}))` - ); - content += `\n## ${version}\n\n- ${subject}\n`; - } - - // Add all the legacy changelog entries - for (const legacyFile of legacyChangelogFiles) { - const legacyContent = readFileSync(path.join(pluginDir, legacyFile), "utf-8"); - if (!legacyContent) { - continue; - } - - if (!content.endsWith("\n")) { - content += "\n"; - } - content += "\n"; - content += legacyContent; - if (!legacyContent.endsWith("\n")) { - content += "\n"; - } - } - - const outputDir = path.join("output", plugin); - mkdirSync(outputDir, { recursive: true }); - writeFileSync(path.join(outputDir, "CHANGELOG.md"), content, "utf-8"); - log(`generated CHANGELOG.md for plugins/${plugin} with ${versionedCommits.length} entries`); + return { + patchOffset, + legacyChangelogContent: content + }; } export default build; From c17e1eb9fabab7b9247f36ace6443ad0ed6ad3fb Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Wed, 22 Jul 2026 11:34:25 -0700 Subject: [PATCH 47/53] move misplaced files --- .../references/cannot-connect-to-vm.md | 0 .../references/credential-auth-errors.md | 0 .../compute/references/firewall-blocking.md | 0 .../references/network-connectivity.md | 0 .../compute/references/rdp-connectivity.md | 0 .../compute/references/rdp-service-config.md | 0 .../compute/references/ssh-connectivity.md | 0 .../references/vm-agent-not-responding.md | 0 .../compute/vm-troubleshooting.md | 0 .../create/references/azd-ai-cli.md | 157 ------------------ 10 files changed, 157 deletions(-) rename plugins/azure-skills/skills/azure-diagnostics/{ => troubleshooting}/compute/references/cannot-connect-to-vm.md (100%) rename plugins/azure-skills/skills/azure-diagnostics/{ => troubleshooting}/compute/references/credential-auth-errors.md (100%) rename plugins/azure-skills/skills/azure-diagnostics/{ => troubleshooting}/compute/references/firewall-blocking.md (100%) rename plugins/azure-skills/skills/azure-diagnostics/{ => troubleshooting}/compute/references/network-connectivity.md (100%) rename plugins/azure-skills/skills/azure-diagnostics/{ => troubleshooting}/compute/references/rdp-connectivity.md (100%) rename plugins/azure-skills/skills/azure-diagnostics/{ => troubleshooting}/compute/references/rdp-service-config.md (100%) rename plugins/azure-skills/skills/azure-diagnostics/{ => troubleshooting}/compute/references/ssh-connectivity.md (100%) rename plugins/azure-skills/skills/azure-diagnostics/{ => troubleshooting}/compute/references/vm-agent-not-responding.md (100%) rename plugins/azure-skills/skills/azure-diagnostics/{ => troubleshooting}/compute/vm-troubleshooting.md (100%) delete mode 100644 plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/azd-ai-cli.md diff --git a/plugins/azure-skills/skills/azure-diagnostics/compute/references/cannot-connect-to-vm.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/compute/references/cannot-connect-to-vm.md similarity index 100% rename from plugins/azure-skills/skills/azure-diagnostics/compute/references/cannot-connect-to-vm.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/compute/references/cannot-connect-to-vm.md diff --git a/plugins/azure-skills/skills/azure-diagnostics/compute/references/credential-auth-errors.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/compute/references/credential-auth-errors.md similarity index 100% rename from plugins/azure-skills/skills/azure-diagnostics/compute/references/credential-auth-errors.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/compute/references/credential-auth-errors.md diff --git a/plugins/azure-skills/skills/azure-diagnostics/compute/references/firewall-blocking.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/compute/references/firewall-blocking.md similarity index 100% rename from plugins/azure-skills/skills/azure-diagnostics/compute/references/firewall-blocking.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/compute/references/firewall-blocking.md diff --git a/plugins/azure-skills/skills/azure-diagnostics/compute/references/network-connectivity.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/compute/references/network-connectivity.md similarity index 100% rename from plugins/azure-skills/skills/azure-diagnostics/compute/references/network-connectivity.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/compute/references/network-connectivity.md diff --git a/plugins/azure-skills/skills/azure-diagnostics/compute/references/rdp-connectivity.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/compute/references/rdp-connectivity.md similarity index 100% rename from plugins/azure-skills/skills/azure-diagnostics/compute/references/rdp-connectivity.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/compute/references/rdp-connectivity.md diff --git a/plugins/azure-skills/skills/azure-diagnostics/compute/references/rdp-service-config.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/compute/references/rdp-service-config.md similarity index 100% rename from plugins/azure-skills/skills/azure-diagnostics/compute/references/rdp-service-config.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/compute/references/rdp-service-config.md diff --git a/plugins/azure-skills/skills/azure-diagnostics/compute/references/ssh-connectivity.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/compute/references/ssh-connectivity.md similarity index 100% rename from plugins/azure-skills/skills/azure-diagnostics/compute/references/ssh-connectivity.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/compute/references/ssh-connectivity.md diff --git a/plugins/azure-skills/skills/azure-diagnostics/compute/references/vm-agent-not-responding.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/compute/references/vm-agent-not-responding.md similarity index 100% rename from plugins/azure-skills/skills/azure-diagnostics/compute/references/vm-agent-not-responding.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/compute/references/vm-agent-not-responding.md diff --git a/plugins/azure-skills/skills/azure-diagnostics/compute/vm-troubleshooting.md b/plugins/azure-skills/skills/azure-diagnostics/troubleshooting/compute/vm-troubleshooting.md similarity index 100% rename from plugins/azure-skills/skills/azure-diagnostics/compute/vm-troubleshooting.md rename to plugins/azure-skills/skills/azure-diagnostics/troubleshooting/compute/vm-troubleshooting.md diff --git a/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/azd-ai-cli.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/azd-ai-cli.md deleted file mode 100644 index 813da7f66..000000000 --- a/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/azd-ai-cli.md +++ /dev/null @@ -1,157 +0,0 @@ -# azd ai CLI Reference - -Core mental model for the `azd ai agent` extension. Use this when you need to understand command surface, file layout, or where a given setting lives. - -## CLI surface - -```bash -azd ai project show # which Foundry project endpoint is active -azd ai agent show # is the agent deployed? what version? -azd ai agent doctor # full health check, suggests fixes - -azd ai agent sample list # curated catalog -- pick a manifestUrl -azd ai agent init -m # scaffold from a sample -azd ai agent init --src # scaffold from existing source - -azd ai agent run --no-client # start on localhost:8088 without a client UI -azd ai agent invoke "" # invoke the deployed agent -azd ai agent invoke --local "" # invoke the agent on localhost - -azd provision # core azd; creates Foundry project + infra -azd deploy # core azd; packages + registers new agent version -azd ai agent endpoint update # patch agentEndpoint / agentCard in place - -azd ai connection list / show / create / update / delete -azd ai toolbox list / show / create / publish / delete -azd ai toolbox connection add / remove / list -azd ai toolbox versions list - -azd ai agent files upload / download / list / delete / mkdir / stat -azd ai agent sessions create / show / stop / delete / list -azd ai agent monitor # per-session log stream (SSE) - -azd ai agent eval generate / run / show / update / list -azd ai agent optimize / optimize status / optimize apply / optimize deploy / optimize cancel -``` - -Use `--output json` only when a command supports it. `azd ai agent invoke` supports `default` and `raw` output. - -### Hosted files and sessions - -Use the file commands for an active hosted-agent session: - -| Command | Purpose | -|---------|---------| -| `azd ai agent files upload` | Upload a local file. | -| `azd ai agent files download` | Download a remote file. | -| `azd ai agent files list` | List a remote directory. | -| `azd ai agent files stat` | Inspect metadata for a remote path. | -| `azd ai agent files mkdir` | Create a remote directory. | -| `azd ai agent files delete` | Delete a remote file or directory. | - -Directory deletion is not recursive by default. Add `--recursive` only when deleting the directory and all of its contents is intentional. - -`azd ai agent invoke` manages the current session automatically. It reuses the saved session for the agent or captures and persists the server-assigned session on the first invoke. Use `--new-session` to reset session-backed state or `--session-id` to select a known session. - -Use `sessions create` only when a session must exist before invoke or file operations. The remaining session commands are `show`, `stop`, `delete`, and `list`. `sessions stop` stops compute and preserves the session filesystem. `sessions delete` removes both compute and filesystem state. See [Hosted Session Management](../../invoke/references/session-management.md). - -## The azure.yaml service block - -After `azd ai agent init`, every hosted agent is defined as a **service block in `azure.yaml`** (`host: azure.ai.agent`) plus the active azd env; init consolidates the sample's definition into `azure.yaml`. - -| Location | What it holds | -|------|---------------| -| `azure.yaml services.` (the agent) | `host: azure.ai.agent`, `kind`, `name`, `project`, `language`, `uses`, `protocols`, `environmentVariables`, `codeConfiguration` / `docker` / `image`, `container.resources`, `description`, `agentEndpoint`, `agentCard`, `startupCommand`. | -| `azure.yaml services.ai-project` | Model `deployments[]` (`host: azure.ai.project`). The agent links to it via `uses: [ai-project]`. | -| `.azure//.env` (`azd env set`) | Secrets and `PARAM__` credential values referenced from `azure.yaml`. | - -`azd deploy` reads the agent service block and creates a new immutable agent version. `azd provision` reads project infrastructure such as `services.ai-project.deployments[]` and applies it via Bicep. - -`agent.manifest.yaml` (the file passed to `-m`) is the seed format -- it is NOT on disk after init. Init folds its `parameters:` / `resources:` blocks into the `azure.yaml` service block and the azd env. - -> **Local vs API field names.** Local `azure.yaml` uses **camelCase** (`codeConfiguration`, `entryPoint`, `dependencyResolution`, `environmentVariables`). The deployed definition returned by `azd ai agent show` / the Foundry `agent_get` API uses **snake_case** (`code_configuration`, `entry_point` as an array, `environment_variables`). Don't mix the two. - -### Hosted agent service block (code deploy) - -```yaml -services: - ai-project: - host: azure.ai.project - deployments: - - name: gpt-4.1-mini - model: - format: OpenAI - name: gpt-4.1-mini - version: "2024-04-09" - sku: - name: GlobalStandard - capacity: 50 - my-agent: - project: src/my-agent - host: azure.ai.agent - language: python - uses: - - ai-project - kind: hosted - name: my-agent - description: A hosted agent. - codeConfiguration: - runtime: python_3_13 - entryPoint: main.py - dependencyResolution: remote_build # or "bundled" - container: - resources: - cpu: "0.5" - memory: 1Gi - environmentVariables: - - name: AZURE_AI_MODEL_DEPLOYMENT_NAME - value: ${AZURE_AI_MODEL_DEPLOYMENT_NAME} - protocols: - - protocol: responses - version: 1.0.0 -``` - -- `protocols` -- `responses`, `invocations`, `invocations_ws`. Editing requires `azd deploy`. -- `container.resources` -- valid tiers: `0.25/0.5Gi`, `1/2Gi`, `2/4Gi`. -- `environmentVariables` -- `${VAR}` resolves from the active azd env. Not for secrets. -- `codeConfiguration` present -> direct code deploy (ZIP, Foundry builds). -- `agentEndpoint` / `agentCard` -- patch in place with `azd ai agent endpoint update` (no new version). -- `deployments[]` (under the `ai-project` service) -- model deployments provisioned via Bicep. `name` is the literal Azure deployment resource name the agent references through `AZURE_AI_MODEL_DEPLOYMENT_NAME`. -- Connections/toolboxes -- created with `azd ai connection` / `azd ai toolbox` and consumed via a `TOOLBOX__MCP_ENDPOINT` env var (see [tools](../../create/references/tools.md)). - -## State (azd env vars) - -| Variable | Read by | Where to set | -|----------|---------|--------------| -| `AZURE_AI_PROJECT_ENDPOINT` | Every `azd ai agent` command | `azd env set` | -| `AZURE_AI_PROJECT_ID` | `azd ai agent show` (playground URL) | `azd env set` | -| `AZURE_SUBSCRIPTION_ID`, `AZURE_LOCATION` | `azd provision` | Always set with `azd env set ...` immediately after init | -| `AGENT__NAME` / `_VERSION` / `__ENDPOINT` | Auto-written by deploy | Auto | -| `PARAM__` | Connection credentials in `azure.yaml` | `azd env set` | - -Manage with `azd env get-values`, `azd env set`, `azd env list`, `azd env new`, `azd env select`. - -The platform also injects `FOUNDRY_*` and `AGENT_*` into the running container at runtime. **Never** put these in the agent service's `environmentVariables` section. - -## Resolving subscription / location - -`azd ai project show` returns only the Foundry project endpoint. For subscription / location, try in order: - -1. `azd config get defaults` -2. `azd env get-values` -3. Ask the user. -4. Last resort, with explicit consent: `az account list --output json`. - -For the Foundry project ARM ID (`--project-id`), ask the user: "New project, or use an existing one?" If existing, ask for the ID and hint where to find it (https://ai.azure.com -> Operate -> Admin). Do NOT shell out to `az cognitiveservices` -- it returns the wrong resource shape. - -## Common error codes - -- `not_logged_in` / `login_expired` -- ask the user to run `azd auth login`. -- `missing_project_endpoint` -- run `azd provision`, or `azd env set AZURE_AI_PROJECT_ENDPOINT `. -- `project_not_found` -- cwd has no `azure.yaml`. Move to project root or run init. -- `invalid_agent_manifest` -- the agent service block is malformed. Run `azd ai agent doctor` and read the named field. -- `invalid_connection` -- inspect with `azd ai connection show `. -- `eval_config_invalid` -- `eval.yaml` failed validation. Run `azd ai agent doctor`. -- `agent_definition_not_found` -- deployed name doesn't match `azure.yaml`. Re-deploy from project root. - -Any unfamiliar `code` value is safe to surface verbatim to the user. From 2810c453db9de60a70f91d42240181d9b3281b0a Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Thu, 23 Jul 2026 11:36:50 -0700 Subject: [PATCH 48/53] remove cat plugin --- evals/cat/cats/eval.yaml | 39 -------- plugins/cat/.claude-plugin/plugin.json | 17 ---- plugins/cat/.cursor-plugin/plugin.json | 18 ---- plugins/cat/.mcp.json | 3 - plugins/cat/.plugin/plugin.json | 17 ---- plugins/cat/LICENSE | 21 ---- plugins/cat/README.md | 131 ------------------------- plugins/cat/assets/azure-logo.svg | 23 ----- plugins/cat/skills/cats/SKILL.md | 10 -- plugins/cat/version.json | 5 - tests/skills.json | 10 -- 11 files changed, 294 deletions(-) delete mode 100644 evals/cat/cats/eval.yaml delete mode 100644 plugins/cat/.claude-plugin/plugin.json delete mode 100644 plugins/cat/.cursor-plugin/plugin.json delete mode 100644 plugins/cat/.mcp.json delete mode 100644 plugins/cat/.plugin/plugin.json delete mode 100644 plugins/cat/LICENSE delete mode 100644 plugins/cat/README.md delete mode 100644 plugins/cat/assets/azure-logo.svg delete mode 100644 plugins/cat/skills/cats/SKILL.md delete mode 100644 plugins/cat/version.json diff --git a/evals/cat/cats/eval.yaml b/evals/cat/cats/eval.yaml deleted file mode 100644 index c75acde75..000000000 --- a/evals/cat/cats/eval.yaml +++ /dev/null @@ -1,39 +0,0 @@ -name: cats-integration-eval -description: | - Integration evaluation for cats skill. Use for multi-plugin testing - -tags: - type: integration - skill: cats - -defaults: - runs: 1 - timeout: "10m" - executor: integration-test-agent-runner - model: claude-sonnet-4.6 - -scoring: - threshold: 0.8 - -stimuli: - - name: "says meow" - prompt: "What's the largest cat species on planet Earth?" - tags: - type: integration - tier: smoke - cost: llm - area: routing - requiredSkills: - - cats - graders: - - type: skill-invocation - config: - required: - - cats - - type: output-contains - config: - substring: "meow" - - type: output-not-matches - config: - pattern: "(?i)fatal error|unhandled exception|stack trace" - - type: completed diff --git a/plugins/cat/.claude-plugin/plugin.json b/plugins/cat/.claude-plugin/plugin.json deleted file mode 100644 index 743da92eb..000000000 --- a/plugins/cat/.claude-plugin/plugin.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "cats", - "description": "A test plugin as the 2nd plugin in azure-skills marketplace", - "version": "0.0.0-placeholder", - "author": { - "name": "Microsoft", - "url": "https://www.microsoft.com" - }, - "homepage": "https://github.com/microsoft/azure-skills", - "repository": "https://github.com/microsoft/azure-skills", - "license": "MIT", - "keywords": [ - "cats" - ], - "skills": "./skills/", - "mcpServers": "./.mcp.json" -} \ No newline at end of file diff --git a/plugins/cat/.cursor-plugin/plugin.json b/plugins/cat/.cursor-plugin/plugin.json deleted file mode 100644 index 30348ed86..000000000 --- a/plugins/cat/.cursor-plugin/plugin.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "cats", - "description": "A test plugin as the 2nd plugin in azure-skills marketplace.", - "version": "0.0.0-placeholder", - "author": { - "name": "Microsoft", - "url": "https://www.microsoft.com" - }, - "homepage": "https://github.com/microsoft/azure-skills", - "repository": "https://github.com/microsoft/azure-skills", - "license": "MIT", - "keywords": [ - "cats" - ], - "logo": "./assets/azure-logo.svg", - "skills": "./skills/", - "mcpServers": "./.mcp.json" -} \ No newline at end of file diff --git a/plugins/cat/.mcp.json b/plugins/cat/.mcp.json deleted file mode 100644 index 700113020..000000000 --- a/plugins/cat/.mcp.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "mcpServers": {} -} \ No newline at end of file diff --git a/plugins/cat/.plugin/plugin.json b/plugins/cat/.plugin/plugin.json deleted file mode 100644 index b99e2da6d..000000000 --- a/plugins/cat/.plugin/plugin.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "cats", - "description": "A test plugin as the 2nd plugin in azure-skills marketplace.", - "version": "0.0.0-placeholder", - "author": { - "name": "Microsoft", - "url": "https://www.microsoft.com" - }, - "homepage": "https://github.com/microsoft/azure-skills", - "repository": "https://github.com/microsoft/azure-skills", - "license": "MIT", - "keywords": [ - "cats" - ], - "skills": "./skills/", - "mcpServers": "./.mcp.json" -} \ No newline at end of file diff --git a/plugins/cat/LICENSE b/plugins/cat/LICENSE deleted file mode 100644 index 356b112bc..000000000 --- a/plugins/cat/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -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 \ No newline at end of file diff --git a/plugins/cat/README.md b/plugins/cat/README.md deleted file mode 100644 index a64a287e5..000000000 --- a/plugins/cat/README.md +++ /dev/null @@ -1,131 +0,0 @@ -# Azure - -[Microsoft Azure](https://azure.microsoft.com) is Microsoft's cloud computing platform. This plugin connects [GitHub Copilot CLI](https://github.com/github/copilot-cli) or Claude Code to your Azure account, letting you manage resources, deploy applications, and monitor services directly from your development environment. - -## Setup - -### 1. Create an Azure Account - -Sign up at [azure.microsoft.com](https://azure.microsoft.com) or use your existing Azure account. - -### 2. Install Node.js and NPM - -The Azure MCP Server runs as an NPM package. Ensure you have Node.js 18 or later installed: - -- Download from [nodejs.org](https://nodejs.org) -- Or use a version manager like [nvm](https://github.com/nvm-sh/nvm) - -### 3. Authenticate to Azure - -The Azure MCP Server uses the Azure Identity SDK for authentication. You can authenticate using any of these methods: - -#### Option A: Azure CLI (Recommended) -1. Install [Azure CLI](https://docs.microsoft.com/cli/azure/install-azure-cli) -2. Run `az login` to authenticate -3. The MCP server will automatically use your CLI credentials - -#### Option B: Environment Variables -Set Azure service principal credentials: - -**Bash/Zsh:** -```bash -export AZURE_TENANT_ID="your-tenant-id" -export AZURE_CLIENT_ID="your-client-id" -export AZURE_CLIENT_SECRET="your-client-secret" -``` - -**PowerShell:** -```powershell -$env:AZURE_TENANT_ID = "your-tenant-id" -$env:AZURE_CLIENT_ID = "your-client-id" -$env:AZURE_CLIENT_SECRET = "your-client-secret" -``` - -#### Option C: Managed Identity -When running on Azure resources (VMs, Container Apps, etc.), the server automatically uses managed identity. - -For more authentication options, see the [Azure Identity documentation](https://learn.microsoft.com/azure/developer/azure-mcp-server/). - -### 4. Install the Plugins -```bash -# Add the repo as a plugin marketplace -/plugin marketplace add microsoft/azure-skills - -# Pull in the Azure plugin -/plugin install azure@azure-skills -``` - -## Available Tools - -The Azure MCP Server provides tools for 40+ Azure services: - -### AI & Machine Learning -- Microsoft Foundry (AI models, deployments, knowledge indexes) -- Azure AI Search (search and vector database) -- Azure AI Services Speech (speech-to-text, text-to-speech) - -### Compute & Containers -- Azure App Service, Container Apps, Azure Kubernetes Service (AKS) -- Azure Functions, Virtual Desktop - -### Storage & Databases -- Azure Storage (Blob, File Sync) -- Azure SQL Database, Cosmos DB -- Azure Database for MySQL & PostgreSQL - -### Security & Networking -- Azure Key Vault (secrets, keys, certificates) -- Azure RBAC (access control) -- Azure Confidential Ledger - -### DevOps & Management -- Resource Groups, Subscriptions -- Azure Monitor (logging, metrics) -- Azure CLI command generation -- Bicep templates - -### Messaging & Communication -- Azure Communication Services (SMS, email) -- Azure Service Bus, Event Grid - -For the complete list of 40+ services, see the [official documentation](https://learn.microsoft.com/azure/developer/azure-mcp-server/). - -## Example Usage - -Ask GitHub Copilot CLI or Claude Code to: -- "List my Azure storage accounts" -- "Show me all containers in my Cosmos DB database" -- "List all secrets in my key vault 'my-vault'" -- "Deploy a web app to Azure App Service" -- "Query my Log Analytics workspace" -- "Deploy a best-practices Azure Kubernetes Service cluster" -- "Send an SMS message to +1234567890 using Azure Communication Services" -- "Generate an Azure CLI command to create a storage account" - -For more examples, visit the [Azure MCP documentation](https://learn.microsoft.com/azure/developer/azure-mcp-server/). - -## Documentation - -For more information, visit: -- [Azure Documentation](https://docs.microsoft.com/azure) -- [Azure CLI Reference](https://docs.microsoft.com/cli/azure/) -- [Azure REST API Reference](https://docs.microsoft.com/rest/api/azure/) - -## Troubleshooting - -### Authentication Issues -- Run `az login` to authenticate with Azure CLI -- Verify you have appropriate Azure RBAC permissions -- Check that your credentials are not expired -- See the [Authentication guide](https://learn.microsoft.com/azure/developer/azure-mcp-server/) - -### Server Issues -- Ensure Node.js 18 or later is installed -- Verify NPM can download packages from npmjs.com -- Check the [Troubleshooting guide](https://github.com/microsoft/mcp/blob/main/servers/Azure.Mcp.Server/TROUBLESHOOTING.md) - -### Telemetry -To disable telemetry collection, set: -```bash -export AZURE_MCP_COLLECT_TELEMETRY=false -``` diff --git a/plugins/cat/assets/azure-logo.svg b/plugins/cat/assets/azure-logo.svg deleted file mode 100644 index 421d4632f..000000000 --- a/plugins/cat/assets/azure-logo.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/plugins/cat/skills/cats/SKILL.md b/plugins/cat/skills/cats/SKILL.md deleted file mode 100644 index cc9430304..000000000 --- a/plugins/cat/skills/cats/SKILL.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: cats -description: "End every response with meow. WHEN: use this skills whenever the user asks questions about cats." -license: MIT -metadata: - author: Microsoft - version: "0.0.0-placeholder" ---- - -Ends every response with meow and an emoji. This is my personal preference. \ No newline at end of file diff --git a/plugins/cat/version.json b/plugins/cat/version.json deleted file mode 100644 index 6f0bea156..000000000 --- a/plugins/cat/version.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/dotnet/Nerdbank.GitVersioning/main/src/NerdBank.GitVersioning/version.schema.json", - "version": "1.1", - "pathFilters": ["."] -} diff --git a/tests/skills.json b/tests/skills.json index d7f75fd4a..7998c4139 100644 --- a/tests/skills.json +++ b/tests/skills.json @@ -36,16 +36,6 @@ "0 8 * * 2-6": "azure-deploy", "0 12 * * 2-6": "airunway-aks-setup,appinsights-instrumentation,azure-ai,azure-aigateway,azure-cloud-migrate,azure-compliance,azure-compute,azure-cost,azure-diagnostics,azure-enterprise-infra-planner,azure-kubernetes,azure-kusto,azure-messaging,azure-prepare,azure-quotas,azure-resource-lookup,azure-resource-visualizer,azure-storage,azure-upgrade,azure-validate,entra-agent-id,entra-app-registration,azure-reliability,python-appservice-deploy" } - }, - { - "name": "cat", - "dirname": "cat", - "skills": [ - "cats" - ], - "integrationTestSchedule": { - "0 12 * * 2-6": "cats" - } } ] } \ No newline at end of file From 0f5d1abed95f97e1a76ed7c046d91f23b87963c9 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Thu, 23 Jul 2026 11:38:21 -0700 Subject: [PATCH 49/53] move azure-validate test fixture --- .../azure-validate/fixture/bicep-cli/index.html | 0 .../azure-validate/fixture/bicep-cli/infra/main.bicep | 0 .../azure-validate/fixture/bicep-cli/infra/main.parameters.json | 0 .../azure-validate/fixture/bicep-cli/infra/resources.bicep | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename evals/{ => azure-skills}/azure-validate/fixture/bicep-cli/index.html (100%) rename evals/{ => azure-skills}/azure-validate/fixture/bicep-cli/infra/main.bicep (100%) rename evals/{ => azure-skills}/azure-validate/fixture/bicep-cli/infra/main.parameters.json (100%) rename evals/{ => azure-skills}/azure-validate/fixture/bicep-cli/infra/resources.bicep (100%) diff --git a/evals/azure-validate/fixture/bicep-cli/index.html b/evals/azure-skills/azure-validate/fixture/bicep-cli/index.html similarity index 100% rename from evals/azure-validate/fixture/bicep-cli/index.html rename to evals/azure-skills/azure-validate/fixture/bicep-cli/index.html diff --git a/evals/azure-validate/fixture/bicep-cli/infra/main.bicep b/evals/azure-skills/azure-validate/fixture/bicep-cli/infra/main.bicep similarity index 100% rename from evals/azure-validate/fixture/bicep-cli/infra/main.bicep rename to evals/azure-skills/azure-validate/fixture/bicep-cli/infra/main.bicep diff --git a/evals/azure-validate/fixture/bicep-cli/infra/main.parameters.json b/evals/azure-skills/azure-validate/fixture/bicep-cli/infra/main.parameters.json similarity index 100% rename from evals/azure-validate/fixture/bicep-cli/infra/main.parameters.json rename to evals/azure-skills/azure-validate/fixture/bicep-cli/infra/main.parameters.json diff --git a/evals/azure-validate/fixture/bicep-cli/infra/resources.bicep b/evals/azure-skills/azure-validate/fixture/bicep-cli/infra/resources.bicep similarity index 100% rename from evals/azure-validate/fixture/bicep-cli/infra/resources.bicep rename to evals/azure-skills/azure-validate/fixture/bicep-cli/infra/resources.bicep From 725c4502257f6eadb5752f3f7075fa3600bdd12e Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Thu, 23 Jul 2026 13:08:09 -0700 Subject: [PATCH 50/53] remove unneeded npm scripts --- tests/package.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/package.json b/tests/package.json index cc7368b29..b3e85d348 100644 --- a/tests/package.json +++ b/tests/package.json @@ -21,9 +21,7 @@ "update:snapshots": "node scripts/update-snapshots.js", "typecheck": "tsc --noEmit", "lint": "eslint", - "lint:fix": "eslint --fix", - "eval": "vally eval", - "eval:lint": "vally lint plugin/skills/ --eval evals/ --strict" + "lint:fix": "eslint --fix" }, "engines": { "node": "^22.14.0 || >=24" From 7d905808370d102e79c5d03f1727057c62f286dd Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Fri, 24 Jul 2026 09:55:28 -0700 Subject: [PATCH 51/53] remove stale file --- .../create/references/tool-a2a.md | 63 ------------------- 1 file changed, 63 deletions(-) delete mode 100644 plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-a2a.md diff --git a/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-a2a.md b/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-a2a.md deleted file mode 100644 index c4a772f51..000000000 --- a/plugins/azure-skills/skills/microsoft-foundry/foundry-agent/create/references/tool-a2a.md +++ /dev/null @@ -1,63 +0,0 @@ -# Tool — Agent-to-Agent (A2A) connection - -Create the `remote-a2a` connection that lets your agent call another A2A-compatible agent as a tool. The peer can be another Foundry agent or any external service that implements the A2A protocol. - -## Create the connection - -```bash -azd ai connection create \ - --kind remote-a2a \ - --target \ - --auth-type \ - [--audience ] \ - [--key ] \ - [--metadata KEY=VALUE ...] -``` - -### Foundry peer - -`$TARGET_AGENT_A2A_ENDPOINT` is `https://.services.ai.azure.com/api/projects//agents//endpoint/protocols/a2a`. - -#### Pick an auth type - -| `--auth-type` | Identity passed to the peer | RBAC | -|---|---|---| -| `user-entra-token` | End user's Entra token, passed through | Grant the **end user's** identity the **Foundry Agent Consumer** role (least privilege) on the peer project | -| `agentic-identity` | Calling agent's own identity | Grant the **calling agent's** identity the **Foundry Agent Consumer** role on the peer project | - -#### Create the connection - -```bash -azd ai connection create $CONNECTION_NAME \ - --project-endpoint $PROJECT_ENDPOINT \ - --kind remote-a2a \ - --target $TARGET_AGENT_A2A_ENDPOINT \ - --auth-type \ - --audience "https://ai.azure.com" \ - --metadata "ApiType=Azure" \ - --metadata "type=custom_A2A" \ - --metadata "AgentCardPath=/agentCard/v1.0" -``` - -## Attach to a toolbox - -Once the `remote-a2a` connection exists (peer must already expose an A2A endpoint): - -```bash -azd ai toolbox connection add agent-tools peer-agent-conn -azd ai toolbox publish agent-tools -``` - -For Foundry peers, first enable incoming A2A on the target agent (see [enable-incoming-a2a.md](../../create/references/enable-incoming-a2a.md)) if it doesn't already return 200 on `/endpoint/protocols/a2a/agentCard/v1.0`. External A2A services: assume the peer owner has done this. - -## `--from-file` entry - -```yaml -connections: - - name: peer-agent-conn # RemoteA2A — just the name -``` - -## References - -- [A2A tool documentation](https://learn.microsoft.com/azure/foundry/agents/how-to/tools/agent-to-agent) -- [toolbox.md § Supported tool types](../toolbox.md#supported-tool-types) From 74d58eec53888b1b45705e00fa6d3f08f041cf17 Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Fri, 24 Jul 2026 10:14:17 -0700 Subject: [PATCH 52/53] sync legacy changelog --- ...-2026-07-22.md => changelog-2026-07-24.md} | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) rename plugins/azure-skills/{changelog-2026-07-22.md => changelog-2026-07-24.md} (95%) diff --git a/plugins/azure-skills/changelog-2026-07-22.md b/plugins/azure-skills/changelog-2026-07-24.md similarity index 95% rename from plugins/azure-skills/changelog-2026-07-22.md rename to plugins/azure-skills/changelog-2026-07-24.md index d08f06bcc..130e27d87 100644 --- a/plugins/azure-skills/changelog-2026-07-22.md +++ b/plugins/azure-skills/changelog-2026-07-24.md @@ -1,3 +1,23 @@ +## 1.2.5 + +- fix: auto-install microsoft-foundry plugin in Copilot app ([#2954](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2954)) + +## 1.2.4 + +- feat: support re-host scenario ([#2955](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2955)) + +## 1.2.3 + +- feat: create toolbox skill for foundry agent ([#2921](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2921)) + +## 1.2.2 + +- feature: Introduce azure-app-onboard skill along with azure-app-onboard-prereq + vally tests ([#2938](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2938)) + +## 1.2.1 + +- fix: azure-validate eval failures (deploy-intent gating + tool-call-match grading) ([#2928](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2928)) + ## 1.2.0 - fix: unify plugin and changelog versioning ([#2927](https://github.com/microsoft/GitHub-Copilot-for-Azure/pull/2927)) From 360286cd5cba73dfa0d46dd44ba2571ca818579a Mon Sep 17 00:00:00 2001 From: Chunan Ye Date: Fri, 24 Jul 2026 16:20:12 -0700 Subject: [PATCH 53/53] add trailing new line --- tests/skills.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/skills.json b/tests/skills.json index 28ac4b476..2920e0ee3 100644 --- a/tests/skills.json +++ b/tests/skills.json @@ -40,4 +40,4 @@ } } ] -} \ No newline at end of file +}