microsoft / microsoft/GitHub-Copilot-for-Azure
Replace microsoft-foundry skill model SKU and quota validation with a script
- Dominant language
- Python
- Stars
- 250
- Forks
- 204
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 67
Description
## Summary
Copilot has identified a portion of a skill that is a good candidate for replacement with a script.
The candidate is the **model SKU and quota validation** in the `microsoft-foundry` skill's deploy-model area — two fixed `az ...list` calls (supported SKUs + subscription quota) reduced to a small "deployable?/available" answer set, reimplemented in three files.
## Candidate description
Before presenting deployment options, the skill validates each model/SKU:
1. `az cognitiveservices account list-models` → extract `model.skus[].name` (supported SKUs).
2. `az cognitiveservices account list-usage` (`usage list`) → match the `OpenAI..` key and compute `available = limit − currentValue`.
This is a strong script candidate because it is:
- **Output-heavy / few-fields-needed** — two large JSON responses reduced to supported-SKU names and an available-quota number.
- **Identical everywhere** — the `OpenAI..` match + `limit − currentValue` computation is the same in all three files (and `capacity/SKILL.md` runs it per-region in a loop).
- **Duplicated across three files** (`deploy-model/SKILL.md`, `customize-workflow.md`, `capacity/SKILL.md`).
**Sketch — `check-sku-and-quota.{sh,ps1}`:**
- **Input:** `--account`, `--resource-group`, `--model`, optional `--region`.
- **Output:** a small per-SKU structure (SKU / supported / available-quota / deployable?).
> Presenting only deployable SKUs and surfacing 0-quota items as ❌ informational (not selectable) stays in prose. The script returns the data; the agent decides presentation.
**Note — cross-area overlap:** The quota half (`usage list` + `limit − currentValue`) is the same computation as the quota-skill usage probe; consider a shared quota helper.
## Affected file and lines
- [`models/deploy-model/SKILL.md` — pre-deployment validation (L113–L129)](https://github.com/microsoft/GitHub-Copilot-for-Azure/blob/3890cbfb65c548ce8daa96cabd1d8de63f7bbcca/plugin/skills/microsoft-foundry/models/deploy-model/SKILL.md#L113-L129)
- [`models/deploy-model/customize/references/customize-workflow.md` — list-models + usage list (L96–L119)](https://github.com/microsoft/GitHub-Copilot-for-Azure/blob/3890cbfb65c548ce8daa96cabd1d8de63f7bbcca/plugin/skills/microsoft-foundry/models/deploy-model/customize/references/customize-workflow.md#L96-L119)
- [`models/deploy-model/capacity/SKILL.md` — per-region quota validation (L79–L116)](https://github.com/microsoft/GitHub-Copilot-for-Azure/blob/3890cbfb65c548ce8daa96cabd1d8de63f7bbcca/plugin/skills/microsoft-foundry/models/deploy-model/capacity/SKILL.md#L79-L116)
## Next steps
1. **Evaluate the candidate** — confirm the steps are stable and parameterizable, and that the script captures everything the skill needs.
2. **Create both a bash _and_ a PowerShell version** of the script so the skill works across platforms.
3. **Run integration tests** to verify the scripts behave correctly and the skill still completes end-to-end.
## Background Information
### Why replace regular steps with scripts
Replacing a regular, well-defined series of steps with a script can:
- **Reduce token usage** — the skill no longer needs to spell out each command and parse large command output inline; the agent invokes one script and reads a compact result.
- **Improve reliability** — the logic is written and tested once, instead of being re-derived by the agent on every run.
- **Improve determinism** — the same inputs always produce the same steps and output, removing run-to-run variation.
- **Improve speed of execution** — a single script call replaces multiple round-trips of command generation, execution, and large-output parsing.
### Authoring notes for the scripts
- **Reference scripts with markdown links**, not just a bare path to the script file.
- **Include examples** in the skill showing how to run each script (sample invocation with arguments).
- **Briefly explain what each script does** where it is referenced.
- **The script output should explain what it did**, so the agent and user can understand the result without re-inspecting raw command output.
Contributor guide
Assessment
This issue has not been assessed yet.