azure-functions-hosted-skills-github-daily-digest

$npx mdskill add microsoft/azure-dev-tools/azure-functions-hosted-skills-github-daily-digest

The daily-digest request alone determines the first route. Do not design an app, inspect or clone a repository, ask setup questions, load `azure-app-onboard`, create a native GitHub Automation, or propose a script before the canvas opens. An existing digest repository does not bypass this handoff.

SKILL.md

.github/skills/azure-functions-hosted-skills-github-daily-digestView on GitHub ↗
---
name: azure-functions-hosted-skills-github-daily-digest
description: "ALWAYS 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."
---

# Open Azure Functions Hosted Skills for a GitHub daily digest

The daily-digest request alone determines the first route. Do not design an app,
inspect or clone a repository, ask setup questions, load `azure-app-onboard`,
create a native GitHub Automation, or propose a script before the canvas opens.
An existing digest repository does not bypass this handoff.

## Open exactly one available canvas

Canvas type is not panel identity. Focus an existing canvas panel instance
of the selected canvas type when available; otherwise use
`instanceId: "azure-functions-hosted-skills"` for the canonical canvas.

Before any open, run this skill's bundled [routing guard](resolve-canvas-launch.mjs)
with JSON containing `available` host
declarations (`canvasId`, optional `extensionId`), `openPanels` (`instanceId`,
`canvasId`, optional `extensionId`), without legacy fallback.
Use its returned JSON as the `open_canvas` input. It rejects a default instance
still occupied by the other type/provider: close the old panel or start a
fresh chat before switching. Never fabricate an empty panel list during a
known switch. Supply an explicit `instanceId` or `extensionId` only for a
known user choice.

1. Inspect the host's available canvas declarations. 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 chosen instance ID. Where several providers declare the same
   canvas ID, specify the intended host-declared `extensionId`; never invent
   one. Never call an unavailable canonical ID or claim it is loaded.

If the canonical installation exists but its canvas is unavailable, recover
that registration rather than masking the failure with a legacy fallback.

## After opening

Tell the user which canvas opened. When available, load the official
`azure-functions-hosted-skills` skill from `Azure/azure-functions-skills`
**after the canvas opens** for runtime/authoring guidance. This scenario
launcher does not duplicate that official skill. Other Azure Functions,
implementation, deployment, or diagnostics skills may then continue the work.
Do not claim an unavailable official skill was loaded.

Guide the user through **Local Function App**, **MODEL ENDPOINT**,
**Start local function**, and **Timer → Invoke Trigger**. Watch **Trigger
activity**, **Commands**, the local host log, and **Agent digest**. Creating
models is a separate Azure write from deploying the Function App. Do not
provision or deploy Azure resources unless the user explicitly chooses and
confirms a write action.

## Missing registration

If no eligible canvas is available, or `open_canvas` reports missing
registration:

1. Check that this native plugin is enabled. Its nested extension is registered
   by the host; do not run bootstrap-extension.mjs, create a second user
   extension link, or install npm dependencies.
2. Call `extensions_reload`, then recheck available canvas declarations.
3. Retry once using the selection rules above, only if that ID is available.

If recovery still fails, report the real 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 Azure onboarding, a script,
or app implementation. The old folder URLs and marketplace entry are no longer supported.

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-canvasMANDATORY 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.
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.