Foundry Agentic Loop
GitHubOfficialFirst committed by vieiraaeDistributed by GitHub
- Skill
- Workflow
- Software development
- MIT
- Low risk
- Has scripts
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
foundry-agentic-loop provides a structured framework for developing agentic applications. It supports two primary modes: rapid prototyping for existing projects and Spec-Driven Development (SDD) for new projects requiring full Azure deployment pipelines. The skill manages the lifecycle of agents, toolbox tools, Foundry IQ grounding, and web application components, ensuring consistent architecture, security, and observability across the development process.
What it does
- Orchestrates end-to-end agentic solution development from architecture to Azure deployment.
- Provides a Spec-Driven Development workflow covering Specify, Implement, Verify, and Deploy phases.
- Supports rapid prototyping for existing Foundry projects.
- Manages Foundry hosted agents, toolbox tools, and Foundry IQ grounding configurations.
- Automates deployment of React/FastAPI applications to Azure Container Apps.
- Enforces security best practices through managed identities and least-privilege RBAC.
When to use it
- When building new agentic solutions on Microsoft Foundry that require a structured development lifecycle.
- When you need to deploy agentic applications to Azure using standardized pipelines.
- When prototyping agentic features within an existing Foundry project.
- When you need to integrate Foundry IQ grounding or custom toolbox tools into an agent.
Advantages
- Ensures architectural consistency through a contract-first development approach.
- Automates complex deployment tasks using azd and Bicep infrastructure layers.
- Provides built-in observability via OpenTelemetry and Application Insights integration.
- Maintains project history and lessons learned to improve future development cycles.
- Reduces manual configuration errors by enforcing standardized workspace structures.
Usage examples
- “Start a new agentic project using the SDD workflow.”
- The agent initializes the SDD workflow, creates the necessary project structure, and begins the Specify phase to define the project requirements.
- “Deploy my current Foundry project to Azure.”
- The agent validates the current configuration, runs the deployment pipeline, and reports the status of the Azure Container Apps deployment.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/github/foundry-agentic-loop/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip foundry-agentic-loop.zip -d .agents/skills
Documentation by vieiraae
Foundry Agentic Loop
Coordinate the solution and use microsoft-foundry for platform operations. Explicit user choices override defaults. Reuse known context, ask only for missing decisions, read only the references a step needs, and report decisions, blockers and endpoints concisely.
Bootstrap (once per session)
Foundry skill. If
microsoft-foundryis unavailable, ask, then install it (copilot plugin install azure@awesome-copilot, orgh skill install microsoft/azure-skills microsoft-foundry --agent github-copilot --scope project) and reload skills.Canvas and workflow. This plugin ships
foundry-agentic-loop-canvasandfoundry-agentic-loop-workflow, listed asfoundry-agentic-loop:<name>or<name>. Callextensions_managewithoperation: "list". Never install extensions from a URL and never edit Copilot settings files. If one is listed under neither name, tell the user which is missing and that it ships with the plugin, then ask before runningcopilot plugin install foundry-agentic-loop@awesome-copilot; after they approve, callextensions_reloadonce. If one is disabled, tell the user to re-enable it in their extension settings and continue in a new session: running sessions keep it disabled, even after a reload. If one failed,inspectit and report its log. Without the canvas, continue in Chat; without the workflow, SDD cannot start, so offer rapid prototyping.Canvas. When work starts from Chat, open it once:
open_canvaswithcanvasId: "foundry-agentic-loop-canvas",instanceId: "foundry-agentic-loop"andinput: { mode }. Prompts that begin[Agentic Loop canvas action]come from the canvas; follow their target, approval and resume instructions literally.
Choose the mode
| Signal | Mode |
|---|---|
Root AGENTS.md has an Agentic Loop section | Its mode. Switch only when the user confirms, then rewrite the section |
| Canvas prompt or explicit choice | As stated |
| Existing Foundry project selected or named; fast prototype; no deployment pipeline needed | Rapid prototyping: rapid.md |
| Spec, new Foundry project, azd or IaC, CI-ready repo or full Azure deployment | SDD: sdd.md |
| Improve, learn from runs, or the canvas improve prompt | Improve: improve.md; measure changes with node scripts/evals.mjs (index, then run --base <commit>; exit 2 means evals are unavailable, so stop) |
| One named SDD phase, with no run active | Its guide (Specify, Implement, Verify or Deploy) with the SDD defaults |
Otherwise ask once with the choices "Rapid prototyping (existing Foundry project)" and "SDD (new project, deployed with azd)".
Lock it in. Before any other workspace write (in the rapid preflight, or just before the SDD workflow starts), upsert the section from agents-md-rapid.md or agents-md-sdd.md into the root AGENTS.md: replace everything between its foundry-agentic-loop begin and end markers, or append it, keeping other content; then read it back. The section routes short commands such as deploy and locks the mode for Chat, the canvas and the workflow. Azure settings go only in .azure/deployment-plan.md, never in AGENTS.md. Improve mode never writes it.
Defaults
Agents: Foundry hosted agents exposing the Responses API, Python 3.13, code deployment. Create them through
microsoft-foundry'sfoundry-agent/create/quick-start-hosted.mdwith the Basic sample, resolved through that skill, never a guessed URL. Use its advanced workflow only when quick-start cannot support a capability, keeping these defaults. Prompt agents only when requested.Framework: the Copilot SDK for agents that use runtime skills (recipe, reference agent); Microsoft Agent Framework for basic agents and explicit workflows. If a workflow also needs skills, clarify. One framework per agent.
Models: rapid keeps the Basic sample's model deployment, or verifies and reuses a supplied one; SDD defaults to
gpt-5.4-miniunless the spec needs otherwise. Run the joint placement preflight in foundry-models.md before creating resources. Never hard-code a replacement or silently duplicate a deployment.Tools and knowledge: one governed Foundry toolbox for built-in tools, MCP connections and agent skills; agents use its endpoint, not hard-coded tool URLs. Private knowledge uses Foundry IQ through the toolbox, with citations for supported claims and a deterministic insufficient-evidence response; test both. Add Search only when needed. Reuse run skills the user names from the run catalog instead of regenerating them.
App: React + Vite, FastAPI and FastMCP (streamable HTTP) on Azure Container Apps. Rapid deploys with
az containerapp up --name <app> --source <dir> --resource-group <rg> --environment <env>; SDD uses azd with amicrosoft.foundrylayer plus a Bicep (AVM) app layer,remoteBuild: trueand one ACR pulled by managed identity. Add services from the reference architecture only when the solution needs them.App access: decide it from the data. When everything the app shows is sample, synthetic or deliberately public, default to no end-user sign-in, even for staff users; services still authenticate with managed identities and need no anonymous-session or identity-verification workarounds. When it shows private, sensitive or user-specific data, ask for the access model before deploying and default to internal ingress or Entra sign-in; anonymous access needs explicit approval. With sign-in, the API pre-authorizes the SPA, the spec states how automated browser tests get a user token, and Implement proves that token path as soon as the app registrations exist.
Identity and safety: managed identities and least-privilege keyless RBAC (contract; preflight with check_rbac_preflight.py). Check management-plane, data-plane and role-assignment rights separately; subscription Owner does not grant Foundry data-plane roles. Plan roles for identities not yet created and verify actual principals after creation. No credentials in browser code or Git; Foundry guardrails on.
Observability: OpenTelemetry from the backend, agents, MCP servers and model calls into one Application Insights connected to the project (observability.md). Sensitive content capture stays off unless approved with redaction and retention controls.
Workspace files
| File | Holds |
|---|---|
AGENTS.md (root) | The mode lock and short-command routes; never Azure settings |
README.md (rapid) or docs/spec.md (SDD, from the spec template) | The contract |
.azure/deployment-plan.md | Every Azure setting, in both modes (template) |
.env (Git-ignored) | What the canvas reads: FOUNDRY_PROJECT (full ARM ID, once validated or created), LOCAL_FRONTEND and DEPLOYED_FRONTEND (verified URLs only). Upsert, keep other keys and read back |
docs/LOOP.md | Lessons (template) |
.agentic-loop/runs/<runId>.json | SDD flight records, written by the workflow |
.devcontainer/devcontainer.json | Optional dev container (asset) |
Working rules
Contract first. Freeze service names, environment variables, protocols, endpoints, schemas, auth, streaming, errors and versions (implementation-contract.md) before parallel work.
Integration first. Pass the hosted integration checkpoint with a minimal agent before building full orchestration, UI or backend: always a model request, plus a toolbox skill load and a safe MCP call only when the architecture needs them. Record excluded capabilities as
N/Awith the reason, never as passed, and never add unused ones to satisfy the checkpoint.Evidence, not signals. HTTP 200, exit 0 or
activenever pass alone; require terminal completion, schema-valid output, execution evidence and correlated traces. Fix with bounded diagnostics, not unchanged redeployments.Wait by completion. Provisioning, deployments, role-assignment propagation and agent readiness end when their command or status check says so: run the command synchronously with a long initial wait, or poll its status every 30-60 s against a stated deadline. Never chain fixed sleeps; keep coding while Azure works.
Subagents. Before the checkpoint, parallelize only research and preflight. After it, give each worker a bounded goal, exclusive workspace-relative files or folders, skill references, verified context, the contract, acceptance checks and stop conditions. One owner (the coordinator, or the SDD phase lead) holds the contract and the shared files:
azure.yaml,infra/,docs/,.env,.azure/,.agentic-loop/,AGENTS.mdand the root lockfiles. Keep teams small, avoid recursive delegation, serialize shared Azure mutations and integrate centrally; worker success is not acceptance. Delegation grants no extra approval. Without subagents, work sequentially and say so.Safety. Reuse resources; confirm billable, security or compliance changes; delete without approval only a resource this build created whose provisioning failed; never sign in for the user; never report an unverified deployment as successful.
Workspace boundary. Builds stay inside the workspace: read lessons only from its own
docs/LOOP.md, scaffold from the Foundry samples and these references, and use code from other folders only when the user names them. Only improve mode reads past runs elsewhere.Work IQ context. Only when the user or a canvas prompt asks for it, query the
workiqMCP server before clarifying questions, fold in only the requirements that matter, cite each by source type and confirm them. Never copy confidential content, personal data or secrets into the workspace; if Work IQ is unavailable or needs consent, say so and continue without it.Companions and SDKs. Verify installed SDK APIs against the latest stable release (or the newest stable one the build's package index serves, recording the gap) and lock versions before generating code; package sources beat stale guidance. Consult the build catalog only for needed capabilities; respect pins, ask before installs and route third-party skill defects upstream.
Lessons
Right after a fix is verified (the failing probe or an equivalent boundary check reruns successfully; an edit, commit or deployment alone is not resolution), upsert a lesson in the workspace's docs/LOOP.md from the template before unrelated work, then read it back. Keep user notes, update matching lessons instead of duplicating them, and never include secrets, raw .env values or payloads. The coordinator, or the SDD phase lead, owns writes; workers report evidence. Lessons never authorize skill edits or weaker gates; improve mode applies them with approval.
Files
- ATTRIBUTION.mdAdded by AutoGineer873 B
- LICENSELicence file added by AutoGineer1.0 KiB
- SKILL.md12.1 KiB
- assets/agents-md-rapid.md1.1 KiB
- assets/agents-md-sdd.md1.4 KiB
- assets/deployment-plan-template.md3.0 KiB
- assets/devcontainer.json800 B
- assets/loop-template.md1.3 KiB
- assets/spec-template.md4.0 KiB
- evals/evals.json94.0 KiB
- evals/fixtures/improve-history/.agentic-loop/runs/wr_101.json2.4 KiB
- evals/fixtures/improve-history/.agentic-loop/runs/wr_117.json2.4 KiB
- evals/fixtures/improve-history/.agentic-loop/runs/wr_123.json1.6 KiB
- evals/fixtures/improve-history/AGENTS.md1.4 KiB
- evals/fixtures/improve-history/docs/LOOP.md2.0 KiB
- evals/fixtures/rapid-locked/.azure/deployment-plan.md868 B
- evals/fixtures/rapid-locked/.env207 B
- evals/fixtures/rapid-locked/AGENTS.md1.2 KiB
- evals/fixtures/rapid-locked/README.md1010 B
- evals/fixtures/rapid-locked/gitignore41 B
- evals/fixtures/sdd-deployed/.agentic-loop/runs/wr_88.json2.6 KiB
- evals/fixtures/sdd-deployed/.azure/deployment-plan.md1.6 KiB
- evals/fixtures/sdd-deployed/AGENTS.md1.4 KiB
- evals/fixtures/sdd-deployed/docs/spec.md1.9 KiB
- evals/fixtures/sdd-deployed/docs/verify.md374 B
- evals/fixtures/sdd-paused/.agentic-loop/runs/wr_42.json2.9 KiB
- evals/fixtures/sdd-paused/AGENTS.md1.4 KiB
- evals/fixtures/sdd-paused/docs/LOOP.md371 B
- evals/fixtures/sdd-paused/docs/spec.md1.9 KiB
- evals/fixtures/sdd-paused/docs/verify.md322 B
- evals/fixtures/sdd-paused/src/backend/routing.pyScript172 B
- evals/fixtures/sdd-paused/tests/contract/test_routing.pyScript208 B
- evals/fixtures/team-conventions/AGENTS.md224 B
- references/azd-layout.md11.3 KiB
- references/build-skills-catalog.md4.8 KiB
- references/check_rbac_preflight.pyScript18.9 KiB
- references/copilot-sdk-foundry.md16.6 KiB
- references/copilot-sdk-with-toolbox.pyScript14.3 KiB
- references/deploy.md4.4 KiB
- references/foundry-hosted-agent.md6.0 KiB
- references/foundry-iq-grounding.md6.8 KiB
- references/foundry-models.md5.2 KiB
- references/foundry-toolbox.md5.5 KiB
- references/hosted-integration-checkpoint.md13.4 KiB
- references/implement.md5.9 KiB
- references/implementation-contract.md3.7 KiB
- references/improve.md5.0 KiB
- references/observability.md5.9 KiB
- references/rapid.md8.9 KiB
- references/rbac-contract.md9.9 KiB
- references/rbac-preflight.md10.3 KiB
- references/reference-architecture.md3.4 KiB
- references/run-skills-catalog.md3.4 KiB
- references/sdd.md11.1 KiB
- references/specify.md4.4 KiB
- references/verify.md5.3 KiB
- scripts/evals.mjsScript22.0 KiB
references/copilot-sdk-foundry.md
Copilot SDK with Foundry
Read only for Copilot SDK agents, SDK/identity troubleshooting, or the dependency-packaging fallback. Continue using Microsoft Agent Framework when the architecture selects it; this recipe does not change framework defaults.
Recipe revision 3 (2026-10-19). Configuration/signatures were source-checked against github/copilot-sdk v1.0.14 and re-inspected on the installed packages below. The "v1.0.14" labels mark the first checked release, not an upper bound. This is not a claim that every SDK/runtime pair has passed a hosted deployment. Keep the project's approved compatible pins; record and validate its actual combination at the hosted checkpoint.
| Surface used by this recipe | 1.0.14 | 1.0.20 (installed check) | Later |
|---|---|---|---|
create_session(*, provider=..., mcp_servers=...) keyword-only | yes | yes | inspect |
send_and_wait(prompt: str, *, request_headers=...) | yes | yes | inspect |
ProviderConfig.bearer_token_provider refresh callback | yes | yes | inspect |
MCPHTTPServerConfig.headers static dict (no refresh callback) | yes | yes | inspect |
CopilotClient(telemetry=TelemetryConfig) and get_status().version | yes | yes | inspect |
azure-ai-agentserver-responses ResponseEventStream items (hosted agent) | 2.2.0 | 2.3.0 | inspect |
For an unlisted version, inspect these signatures before coding and record the result with the compatibility record.
Compatibility record first
Before troubleshooting, record Python (retain 3.13), github-copilot-sdk, Azure Identity, project/hosting-adapter versions, lockfile hash and the running Copilot runtime version. In v1.0.14, after client startup, (await client.get_status()).version reports that runtime; importlib.metadata.version("github-copilot-sdk") reports the Python package. Do not assume the developer shell's copilot --version is the deployed runtime.
Inspect installed signatures/types, particularly CopilotClient.create_session, CopilotSession.send_and_wait, ProviderConfig and the hosting request-context accessor. The v1.0.14 Python interface uses keyword arguments for create_session, a string prompt for send_and_wait, and request_headers for per-turn model headers. Older examples accepting config/message dictionaries are not interchangeable. The bearer-token callback surface is experimental in this release: check the runtime supports its protocol; never silently replace an unsupported refresh callback with a static token. Use the SDK-supported runtime distribution and pin the validated combination.
Model configuration and token refresh
For the discovered OpenAI-compatible /openai/v1/ base, use type: "openai" and wire_api: "responses". Keep the Basic sample's actual deployment or the user's existing deployment; a model catalog name is not necessarily its deployment name. Do not mix this route with the native type: "azure" host-only recipe or with the hosted-agent Responses endpoint.
The following provider fragment uses v1.0.14 fields. credential must be the approved deployed workload async credential in hosted runs; select it through current microsoft-foundry guidance. token_scope comes from the verified endpoint contract (the documented Foundry path uses https://ai.azure.com/.default); verify the audience for a different Azure endpoint rather than assuming it.
from azure.core.credentials_async import AsyncTokenCredential
from copilot.session import ProviderConfig, ProviderTokenArgs
def model_provider(
base_url: str,
token_scope: str,
credential: AsyncTokenCredential,
) -> ProviderConfig:
async def refresh_token(_request: ProviderTokenArgs) -> str:
return (await credential.get_token(token_scope)).token
return {
"type": "openai",
"base_url": base_url,
"wire_api": "responses",
"bearer_token_provider": refresh_token,
}The SDK requests a token before outbound provider calls; Azure Identity handles caching/renewal. Keep that credential alive for its owning client and close it on shutdown. Do not capture one startup token in bearer_token, .env or a long-lived Authorization header. Test another request after simulated expiry; no new deployment should be needed.
Create the session with the verified provider and deployment using an explicit least-privilege permission handler, not an unrestricted approval shortcut. Subscribe to errors and execution events before sending; send_and_wait/session.idle alone is not the hosted Responses success condition. Its timeout does not abort in-flight work: explicitly cancel/clean up the task-owned request through supported lifecycle APIs. Use the checkpoint's terminal-status and schema validation.
Hosted caller-context forwarding
Use the current hosting adapter's request-context accessor; verify its installed API instead of guessing imports. For container protocol 2.0.0, the documented outbound caller-context header is x-agent-foundry-call-id. Forward its opaque value unchanged to the configured Foundry model and toolbox requests. The platform-generated x-agent-user-id is local partitioning context and must not be forwarded outbound. Do not copy all inbound headers, trust caller-supplied x-client-* as identity, or propagate incoming Authorization/cookies.
Capture an allowlisted copy of context for each hosted request. Pass the call ID through
session.send_and_wait(prompt, request_headers=foundry_headers)for the model request in v1.0.14. For adapters using providerheaders, isolate the provider/session per request; never mutate a global header dictionary.Pass the same request's call ID to MCP
tools/list, skill-loading andtools/callrequests. Use the platform-aware toolbox client or a request-local MCP adapter that acquires/refreshes its own token for the toolbox audience. A Copilot modelbearer_token_providerdoes not refresh MCP credentials.In v1.0.14, remote MCP configuration exposes
headersas a static dictionary, not a token-refresh callback. Do not invent a callback field or keep a startup bearer token there indefinitely. Use a supported refreshing MCP transport, or a request-scoped connection with explicit token lifetime/reconnect handling; retain least-privilege tool approval.Bind SDK sessions, callbacks and MCP connections to the originating caller/turn. Capture request context before crossing async/process boundaries; callbacks may run outside the hosting context variable. Isolate concurrent sessions or serialize same-session turns so headers/results cannot cross requests.
Only send platform context to the intended trusted Foundry endpoints, never arbitrary tool URLs or logs. Toolbox connections govern downstream credentials. For local-only tests, absent platform context can be legitimate; do not fabricate call IDs. If a deployed path requires context and it is absent, fail that probe explicitly.
Verify actual outbound header presence and request association with redacted instrumentation, including two concurrent requests and token renewal. Do not merely inspect configuration or use an SDK mock as proof that the hosted runtime forwarded it.
Telemetry
Configure telemetry in the minimal slice, before deployment. The Python hosting adapter and Copilot runtime are separate telemetry producers: a project connection or Python exporter alone does not prove that runtime model/tool spans are exported.
Record the route. Add the hosting/Copilot SDK and running runtime versions, export paths, discovered receiver endpoints and exporting identities/scopes to the root
README.md(rapid) ordocs/implementation.md(SDD), and the Application Insights resource ID to.azure/deployment-plan.md. Keep connection configuration in the appropriate deployment settings and Git-ignored.env, not diagnostic logs. Resolve the selected project's linked Application Insights throughmicrosoft-foundry; prefer its azd-owned values over duplicated metadata. Do not silently use a different destination.Configure the host once. Load telemetry configuration before constructing the hosting adapter. Current AgentServer Core initializes observability through
microsoft-opentelemetry, supports Azure Monitor export withAPPLICATIONINSIGHTS_CONNECTION_STRING, and supports OTLP export withOTEL_EXPORTER_OTLP_ENDPOINT. Inspect the installed adapter's behavior before using these settings; do not independently initialize a duplicate global provider/exporter. Generic HTTP-client instrumentation is disabled by default in the inspected source: enable only needed supported instrumentation or add explicit spans at owned MCP/application boundaries.Configure the runtime explicitly. Merge the following v1.0.14 fragment into the existing client's configuration rather than creating a second runtime.
COPILOT_OTLP_ENDPOINTis an application-defined variable containing a verified, reachable OTLP HTTP receiver base URL, not an Application Insights connection string or ordinary ingestion URL.import os from copilot import CopilotClient client = CopilotClient( telemetry={ "otlp_endpoint": os.environ["COPILOT_OTLP_ENDPOINT"], "otlp_protocol": "http/protobuf", "exporter_type": "otlp-http", "capture_content": False, }, )Verify the receiver's supported onward export to the intended Azure Monitor/Application Insights destination. Reuse a working route; obtain approval before provisioning a collector or other ingestion resources. Native Azure Monitor OTLP ingestion requires its discovered endpoints, Data Collection Rule (DCR) and authentication; an ordinary connection string does not configure that route. Do not point an HTTP/protobuf client at a gRPC-only receiver or assume the Python host is an OTLP receiver.
Check the actual exporter identity. Verify supported authentication for the installed version and chosen route. Current Core source supports
APPLICATIONINSIGHTS_AUTH_MODE=entrausing managed identity for Azure Monitor export. Direct authenticated Application Insights ingestion requires the actual emitter's applicable permission on the component; native OTLP collector ingestion requires the collector identity's Monitoring Metrics Publisher role on the DCR. A remote collector can have a different identity from the agent. Recheck actual principals after deployment and defer current role/resource mechanics tomicrosoft-foundry; do not grant both scopes indiscriminately.Preserve distributed trace context. Keep session creation/resume/send under the intended active hosting-request span. With OpenTelemetry available and configured, v1.0.14 Python propagates W3C
traceparent/tracestateinto the runtime and restores context around tool callbacks. Preserve context through supported MCP transports or owned boundary instrumentation. Test concurrent requests for correct trace/parent association; never use a global mutable trace-header dictionary. W3C tracing is separate fromx-agent-foundry-call-idauthentication context; neither substitutes for the other. Do not fabricate remote child spans as execution evidence.Keep content private. Keep Copilot
capture_content=Falseand hosting sensitive-data capture disabled unless explicitly approved with redaction and retention controls. These options do not sanitize explicit application, adapter or tool logs: avoid prompts, completions, tool arguments/results, credentials and opaque caller-context values. Record safe identifiers, status, duration and available usage metadata instead.Verify delivery and lifecycle. Start instrumentation before requests and shut down the runtime/flush owned exporters through supported graceful-lifecycle APIs. Record sampling and ensure checkpoint probes are retained without silently changing production policy. Allow bounded batching/ingestion delay, then require the deployed probe's hosting, model and required tool spans with correct trace/parent links and agent/version identification. Follow the Foundry trace workflow: for its Application Insights schema, start from
requestsfiltered by agent name and joindependenciesbyoperation_Id. Verify the actual schema for native OTLP ingestion instead of assuming those tables. Host-only spans, exporter startup and local mocks do not satisfy the checkpoint.
If spans are missing, inspect producer enablement, active context, receiver reachability, destination/authentication, sampling and flush/ingestion delay before changing code or infrastructure. Report the failed boundary and keep the checkpoint blocked; do not redeploy an unchanged artifact to wait for telemetry.
Dependency-packaging fallback
Remote build remains the default. When server-side dependency resolution fails, first capture the restore error and correct invalid/incompatible requirements. For access/feed failures, follow the approved package-feed guidance; do not disable TLS or integrity checks. If remote resolution still cannot work, use the supported bundled source-code deployment mode through microsoft-foundry, not an unrequested container-image migration.
Export the approved lockfile to a fully pinned, hashed requirements file, including transitive dependencies and the target Linux wheel hashes. Preserve private feeds/pins. Work in a fresh, task-owned staging directory; do not reuse a macOS/Windows virtualenv.
For the currently documented Linux x86_64 Python 3.13 runtime, install extracted modules into
packages/:python3.13 -m pip install --require-hashes -r requirements.lock \ --target packages/ --platform manylinux2014_x86_64 \ --python-version 3.13 --implementation cp --only-binary=:all:requirements.lockhere is the exported pip-compatible hash-locked file. If required wheels are unavailable, report the package/platform blocker; use a reproducible matching Linux build with verified artifacts rather than silently dropping hashes or shipping host-native binaries.Validate imports and runtime startup in matching Linux/Python 3.13. The Copilot runtime/native assets are separate from Python wheels: resolve the SDK-supported Linux runtime, preserve executable permissions, and record its version/checksum. Do not bundle the developer's desktop binary or depend on an untested first-start download.
Produce a flat deployment archive with entry point, application sources, locked requirements, required assets and extracted
packages/at the root. Setruntime: python_3_13anddependency_resolution: bundledusing the current platform/tool schema. Inspect the archive and confirm packaging ignore rules did not removepackages/; compute and verify the deployed ZIP hash.Exclude staging directories,
packages/, runtime binaries and deployment archives from Git and pytest discovery (testpaths/norecursedirsor the repository's equivalent), but explicitly include required artifacts in the deployment ZIP. Keep the lockfile and packaging instructions in Git. Exclude.env, caches, credentials and unrelated files from the archive.Redeploy this changed artifact once, rerun the hosted checkpoint, and record the reason for bundling plus versions/hash. A successful upload or
activestate is not acceptance. Remove only task-created staging/debug resources afterward.
Versioned sources
Requirements and compatibility
Written for: GitHub Copilot
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs an MCP server, Needs Python, Needs Node.js
Security
What our scanner noticed· Low risk
- Instructions that use the network
- Scripts that your agent may run
This skill includes scripts that your agent may run. Read them before you use it.
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- First committed by
vieiraae
- Publisher
- GitHub (Official)
- Distributed by
- GitHub
- Source
- github/awesome-copilot · skills/foundry-agentic-loop · commit 797337f
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
- Contributors
- vieiraae
AutoGineer is not affiliated with or endorsed by vieiraae or GitHub.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download foundry-agentic-loop.zip