microsoft / microsoft/GitHub-Copilot-for-Azure

Replace deploy skill dataset blob download loop with a script

Open
#2,468 1 comment 0 reactions 0 assignees 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 **dataset blob download loop** in the `foundry-agent/deploy` skill (`deploy.md`).

## Candidate description

**Dataset blob download loop (Step 8c)**

`evaluation_dataset_sas_url_get` returns a container-scope SAS → list the container → `curl.exe` each blob into `.foundry/datasets/-v/`. This is an explicit per-blob repeated loop writing to deterministic paths — ideal for a script that takes a container SAS and an output directory. The same loop appears in the prompt-agent workflow (Step 5c).

## Affected file and lines

- [`deploy.md` — Step 8c: Cache artifacts locally (L231–L235)](https://github.com/microsoft/GitHub-Copilot-for-Azure/blob/164e0cda7b9d75d6e0d64b235d17bd7ff5e2909e/plugin/skills/microsoft-foundry/foundry-agent/deploy/deploy.md#L231-L235)
- [`deploy.md` — Prompt agent Step 5c: Cache artifacts locally (L300)](https://github.com/microsoft/GitHub-Copilot-for-Azure/blob/164e0cda7b9d75d6e0d64b235d17bd7ff5e2909e/plugin/skills/microsoft-foundry/foundry-agent/deploy/deploy.md#L300)

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

Research direction

Start with the dataset blob download loops in deploy.md Step 8c (L231–L235) and the prompt-agent Step 5c (L300), then inspect the surrounding skill instructions and existing integration-test conventions. Add linked Bash and PowerShell scripts with examples and explanatory output, update both references, and run integration tests to verify the skill still completes end-to-end.

Written by the indexing model from the issue text.

Assessment

Tech stack
bash, markdown, powershell
Domain
devops, tooling
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
64/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.