microsoft / microsoft/GitHub-Copilot-for-Azure

Replace microsoft-foundry skill deployment capacity/name preflight with a script

Open
#2,531 1 comment 0 reactions 1 assignee Claimed by @tmeschter View on GitHub
microsoft-foundry skills untriaged
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 **deployment capacity/name preflight** in the `microsoft-foundry` skill's deploy-model area — a fixed capacity calculation (50% of available, floor 50 TPM, MaaS=1) plus a unique-deployment-name generation, duplicated across the two preset references.

## Candidate description

Just before deploying, the skill computes the deploy parameters deterministically:

1. Compute `DEPLOY_CAPACITY = SELECTED_CAPACITY / 2`, floored at 50 TPM (and `=1` for MaaS models).
2. Generate a unique deployment name (already invoking `generate_deployment_name.{sh,ps1}`).

This is a strong script candidate because it is:
- **Pure deterministic arithmetic plus a name-uniqueness check** — no judgment to run.
- **Duplicated verbatim** across `preset-workflow.md` (L369–L421) and `workflow.md` (L146–L158).
- **Already partly scripted** — name generation is a script today, demonstrating the team's preferred pattern; the capacity math should live in the same deploy script (alongside the deploy-and-poll candidate) rather than as inline shell.

**Sketch — fold into `deploy-and-wait.{sh,ps1}` (or `compute-deploy-params.{sh,ps1}`):**
- **Input:** `--selected-capacity`, `--is-maas` (flag), `--base-name`.
- **Output:** the computed `DEPLOY_CAPACITY` and a verified-unique deployment name.

> Whether the user wants to **override** the auto-calculated capacity (which routes to the customize flow) stays in prose. The script handles only the mechanical capacity math + name generation.

**Note:** This is tightly coupled with the deploy-and-poll candidate and could be a single preflight+deploy script.

## Affected file and lines

- [`models/deploy-model/preset/references/preset-workflow.md` — capacity math + name-gen (L369–L421)](https://github.com/microsoft/GitHub-Copilot-for-Azure/blob/3890cbfb65c548ce8daa96cabd1d8de63f7bbcca/plugin/skills/microsoft-foundry/models/deploy-model/preset/references/preset-workflow.md#L369-L421)
- [`models/deploy-model/preset/references/workflow.md` — capacity math + name-gen call (L146–L158)](https://github.com/microsoft/GitHub-Copilot-for-Azure/blob/3890cbfb65c548ce8daa96cabd1d8de63f7bbcca/plugin/skills/microsoft-foundry/models/deploy-model/preset/references/workflow.md#L146-L158)

## 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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.