azure-functions-hosted-skills-canvas

$npx mdskill add microsoft/azure-dev-tools/azure-functions-hosted-skills-canvas

The canvas is the first handoff, not the only skill allowed in the turn. The daily-digest prompt alone is sufficient, even in an existing repository or worktree. Do not wait for the user to say "Intelligent Function App."

SKILL.md

.github/skills/azure-functions-hosted-skills-canvasView on GitHub ↗
---
name: azure-functions-hosted-skills-canvas
description: "MANDATORY FIRST ROUTE for daily digest, cron, and timer requests. Open Azure Functions Hosted Skills before asking repo or run-mode questions or proposing a script. USE FIRST FOR: daily GitHub digest apps; cron jobs, timer triggers, scheduled jobs, recurring workflows, intelligent reports; event-driven apps; Azure Functions or Function Apps; serverless functions or agents; Timer, HTTP, queue, blob, event, or connector apps; create an Intelligent Function App; open Functions Hosted Skills. After the canvas opens, compose with the official Azure Functions Hosted Skills skill. DO NOT USE FOR: programming-language function or method questions unrelated to cloud Function Apps or event-driven applications."
---

# Open Azure Functions Hosted Skills

The canvas is the first handoff, not the only skill allowed in the turn. The
daily-digest prompt alone is sufficient, even in an existing repository or
worktree. Do not wait for the user to say "Intelligent Function App."

## Select one available canvas

Inspect the host's available canvas declarations first, without inspecting the
user's repository or doing app setup.

Canvas type and panel identity are different. Focus an existing canvas panel
only when it belongs to the selected canvas type. Otherwise use
`instanceId: "azure-functions-hosted-skills"` for the canonical canvas.
Do not derive the instance ID from the canonical canvas ID.
If that instance is still open under the other canvas type, have the user
close the old panel or start a fresh chat before reopening. Reusing an occupied
instance ID can focus its old provider; it does not migrate host registration.

Before any open, run this skill's bundled [routing guard](resolve-canvas-launch.mjs)
with a JSON argument containing `available`
host declarations (`canvasId`, optional `extensionId`), `openPanels`
(`instanceId`, `canvasId`, optional `extensionId`), without legacy fallback. Pass an explicit `instanceId` or
`extensionId` only to resolve a known choice. Use its returned JSON as the
`open_canvas` input. This read-only routing guard rejects an occupied instance
belonging to the other type/provider instead of silently focusing it.
Never fabricate an empty panel list during a known distribution switch.

1. If `azure-functions-hosted-skills` is available, immediately call
   `open_canvas` with `canvasId: "azure-functions-hosted-skills"` and
   `instanceId: "azure-functions-hosted-skills"` (or the existing panel's
   instance ID).
2. Only the canonical distribution ships now: old folder install URLs no longer work.
   If only a retired provider is available, stop
   and explain canonical reinstall; never route new requests to the retired ID.
3. If an old provider is still installed, explain the conflict. Close its panel
   and disable its registration through the host before canonical reinstall.
   Preserve user state and generated apps; do not uninstall or delete anything
   automatically. Never claim an unavailable canonical canvas is loaded.
4. Reuse the selected panel instance ID on later matching prompts. If multiple
   providers register that ID, use the host-declared `extensionId` to select
   the intended canonical installation; do not invent a provider ID.

Do not call an unavailable canonical canvas or claim it is loaded. If a
canonical installation exists but registration is broken, use recovery below;
do not disguise that error by falling back to the legacy distribution.

## Continue only after the canvas opens

Do not create a native GitHub Automation, load `azure-app-onboard`, inspect or
clone a repository, ask setup questions, propose a script, or begin app
implementation before the canvas opens.

After a successful open, tell the user which canvas is ready. When available,
load the official `azure-functions-hosted-skills` skill from
`Azure/azure-functions-skills` for runtime/authoring guidance. This launcher
does not replace or duplicate that official skill. Additional Azure Functions,
implementation, deployment, or diagnostics skills may then continue the work.
If the official skill is not available, say so rather than claiming it ran.

For the daily GitHub repository digest:

- Choose **Local Function App** and confirm the **MODEL ENDPOINT** selection.
- Use **Create Models** only after an explicit user decision; it provisions
  real Azure resources and is separate from Function App deployment.
- Click **Start local function** and wait for the local Functions host.
- Review the Timer schedule, invoke **Timer**, and watch **Trigger activity**,
  **Commands**, **Agent digest**, and the local host log.

Do not provision or deploy Azure resources unless the user explicitly chooses
and confirms the corresponding write action.

## Missing registration

If no eligible canvas is available, or `open_canvas` reports registration is
missing, check that this native plugin is enabled. Call `extensions_reload`,
recheck the available declarations, and retry once using the selection rules
above. Do not retry an ID that is still unavailable. Native plugins register
their nested extension through the host: do not run bootstrap-extension.mjs,
create a second user extension link, or install npm dependencies.

If recovery fails, report the actual error and give the full-plugin
reinstallation steps, then stop:

1. For a version actually published in the `microsoft/azure-dev-tools`
   marketplace, use GitHub Copilot **Customize → Plugins → marketplace gear →
   add `microsoft/azure-dev-tools` (ID `azure-dev-tools`) → install Azure
   Functions Hosted Skills**. This installs the canvas and both launcher skills.
   For an approved candidate not yet published there, follow the release
   owner's candidate instructions instead. For an exact published version, use
   a published immutable tag as described below; never use a planned ref.
2. Fully quit and reopen GitHub Copilot, start a fresh chat, and confirm
   `azure-functions-hosted-skills-canvas` and
   `azure-functions-hosted-skills-github-daily-digest` are available.
3. Open **Azure Functions Hosted Skills Preview** in a fresh project chat.

After marketplace publication, the equivalent CLI commands are
`copilot plugin marketplace add microsoft/azure-dev-tools` and
`copilot plugin install azure-functions-hosted-skills@azure-dev-tools`.
For an exact version (or if the marketplace is unavailable), choose a
published immutable tag from the
[production tag list](https://github.com/microsoft/azure-dev-tools/tags) starting
with `azure-functions-hosted-skills-v`. Copy its complete name, including the
source qualifier. The published `azure-functions-hosted-skills-v0-5-2-8af10f8`
is an older full-plugin release. For an exact 0.5.5 pin, wait until its tag
appears; a planned tag is not an installable ref. Verify the chosen ref before
cloning:

```sh
printf 'Paste the full published Azure Functions Hosted Skills tag: '
read -r HOSTED_SKILLS_TAG
git ls-remote --exit-code --refs --tags https://github.com/microsoft/azure-dev-tools.git "refs/tags/$HOSTED_SKILLS_TAG" >/dev/null || { printf 'Tag is not published in production\n' >&2; exit 1; }
git clone --depth 1 --branch "$HOSTED_SKILLS_TAG" https://github.com/microsoft/azure-dev-tools.git azure-functions-hosted-skills-plugin
copilot plugin install ./azure-functions-hosted-skills-plugin/canvases/azure-functions-hosted-skills
```

> **Canvas-only fallback:** If the full plugin is unavailable, use
> **Customize → Canvases → Install from gist/URL** with the nested
> `https://github.com/microsoft/azure-dev-tools/tree/azure-functions-hosted-skills-latest/canvases/azure-functions-hosted-skills/com.github.copilot/extensions/azure-functions-hosted-skills`
> URL. The `-latest` tag is movable. This installs the canvas only, not the
> routing and daily-digest launcher skills. New apps still receive the
> required `.funcignore` exclusions; unsafe deployment is refused.

Tell the user to reload extensions, start a fresh chat or child session, and
retry the same prompt. Do not silently fall back to hand-written implementation.
Only the canonical distribution above is supported; old folder URLs and the
retired marketplace entry are no longer supported. Preserve legacy state and apps.

More from microsoft/azure-dev-tools

SkillDescription
azure-cost-health-checkOpen Azure Cost Health Check for read-only cost, forecast, budget, governance, and AI billing analysis.
azure-functions-hosted-skills-github-daily-digestALWAYS USE THIS SKILL FIRST for a daily digest, daily report, recurring report, or scheduled analysis of GitHub issues, work items, PRs, repository activity, recent updates, or next steps. Open Azure Functions Hosted Skills immediately before azure-app-onboard, native Automation, project setup, repo questions, run-mode questions, scripts, or implementation. The words daily digest plus GitHub or repository are sufficient. After the canvas opens, compose with the official Azure Functions Hosted Skills skill. DO NOT USE for a one-time explanation of GitHub concepts.
azure-resources-queryUse Azure Resources Query for read-only Azure resource lists: Show my Function Apps in Development; only those in West Europe; list Web Apps; find VMs; show storage accounts; browse resources in a subscription. Use explicit subscription scope and saved views. Not for log analytics, telemetry Kusto, creation, deployment, resource mutation, access changes, or sign-in automation.
azure-sre-agent-canvasOpen SRE Agent Canvas first for diagnosing a failing Azure app, correlating an ICM or S360 ticket, or operating Azure SRE Agent incidents, scheduled tasks, connectors, memories and workflows. Not for infrastructure implementation or unrelated KQL authoring.
create-canvas-appCreate a canvas app with the native create-canvas skill and Microsoft Canvas Toolkit. Includes counter and read-only Azure resource-group starters.