Official agent skill

Add Manifest Sample

by Azure in Azure/azure-functions-templates

Add a new Azure Functions sample/quickstart to the Template Manifest.

OfficialMITAuto-check passed

Install Add Manifest Sample

skills CLI
$ npx skills add Azure/azure-functions-templates --skill add-manifest-sample -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Azure/azure-functions-templates add-manifest-sample --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Azure/azure-functions-templates.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/add-manifest-sample .claude/skills/add-manifest-sample && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
add-manifest-sample
GitHub stars
362
Token cost
~3.8k tokens
SKILL.md length
1,689 words
Files
1
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Add a new Azure Functions sample/quickstart to the Template Manifest.

  • Works in 6 steps: Inspect the source repository first → Add the template object → Choose a priority → …
  • Asked to add a sample
  • SKILL.md covers Who consumes the manifest, Files you will touch, Step 1 — Inspect the source… and Step 2 — Add the template object, plus 5 more sections
  • Calls python, gh and pwsh; reaches github.com

What it does

Add Manifest Sample is an agent skill from Azure/azure-functions-templates, published by the product's own GitHub organization. Add a new Azure Functions sample/quickstart to the Template Manifest. Use when asked to "add a sample", "add a template", "register a quickstart", or "add a connector/MCP/trigger sample" to Functions.Templates/Template-Manifest/manifest.json. Covers required fields, the short/long description pattern, category rules, priority assignment, metadata bumps (count/version/generatedAt), and keeping docs/priority-tiers.md in sync.

Its SKILL.md is about 3.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It works with Azure Functions, Microsoft Azure, Model Context Protocol and Visual Studio Code. The repository describes itself as: Azure functions templates for the azure portal, CLI, and VS. The licence is MIT.

When your agent uses it

  • Asked to add a sample
  • Register a quickstart
  • Add a connector/MCP/trigger sample to Functions.Templates/Template-Manifest/manifest.json

Example prompts

  • “add a sample”
  • “add a template”
  • “register a quickstart”
  • “/add-manifest-sample”

Requirements

  • Python 3

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Inspect the source repository first
  2. Add the template object
  3. Choose a priority
  4. Bump manifest metadata
  5. Update docs/priority-tiers.md
  6. Validate

What it can do on your machine

Read from SKILL.md and the folder at commit 4a49cf7. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python
    • gh
    • pwsh
    • pip

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Add Manifest Sample loads about 3.8k tokens when it runs. Until then it costs about 112 tokens; SKILL.md has 1,689 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~112
When it runs · the whole SKILL.md, loaded when a task matches
~3.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Azure/azure-functions-templates at commit 4a49cf7, republished under its MIT licence (© Azure). 1,689 words, ~3,755 tokens.

Download SKILL.mdSave it as .claude/skills/add-manifest-sample/SKILL.md (or your agent's skills folder).
name
add-manifest-sample
description
Add a new Azure Functions sample/quickstart to the Template Manifest. Use when asked to "add a sample", "add a template", "register a quickstart", or "add a connector/MCP/trigger sample" to Functions.Templates/Template-Manifest/manifest.json. Covers required fields, the short/long description pattern, category rules, priority assignment, metadata bumps (count/version/generatedAt), and keeping docs/priority-tiers.md in sync.

Add a new sample to the Template Manifest

This skill explains how to register a new template in the Azure Functions Template Manifest so it appears in the VS Code Azure Functions extension and other consumers.

Who consumes the manifest

Changes to manifest.json are surfaced by multiple downstream consumers, so keep entries accurate and validated:

  • Azure Functions VS Code Extension — shows templates (and their categories) in the create-project / create-sample experience.
  • Azure Functions CLI (Core Tools) v5 — quickstart command uses the manifest to list and scaffold samples.
  • Azure MCP tool — exposes the manifest's templates to MCP clients/agents in Azure Functions Tools.
  • Azure skills — Copilot/agent skills that read the manifest to recommend or generate Functions samples (entry point Azure MCP Tool)

Files you will touch

FilePurpose
Functions.Templates/Template-Manifest/manifest.jsonSource of truth. Add the template object + bump metadata.
Functions.Templates/Template-Manifest/schemas/manifest.schema.jsonJSON Schema. Only edit to add a new enum value (e.g. a new resource). Note: categories are not a schema enum — they are free-form kebab-case (pattern-validated), so adding a category needs no schema change.
Functions.Templates/Template-Manifest/docs/priority-tiers.mdHuman-readable priority/coverage doc. Keep in sync with the manifest.

The manifest file is written as canonical json.dumps(indent=2, ensure_ascii=False) output with a trailing newline. Preserve that formatting (2-space indent, no trailing whitespace).

Step 1 — Inspect the source repository first

Never guess what a sample does. Inspect the actual repo at the exact tag you will pin (gitRef) and confirm:

  • The folder (folderPath) and tag (gitRef) exist.
  • The real trigger/function names.
  • Whether it actually uses a binding you plan to mention. For example, only claim "Blob output" if the code really has a Blob output binding — sibling samples in different languages often differ (e.g. C# may use BlobOutput while the TypeScript/Python ports only log the payload).
powershell
gh api "repos/<owner>/<repo>/contents/<folderPath>?ref=refs/tags/<tag>" --jq '.[] | "\(.type)\t\(.name)"'

Step 2 — Add the template object

Insert the template object adjacent to its peer entries (same resource value) in the templates array, maintaining priority order within that group. If no peers exist, append to the end of the array. Mirror the existing entry for the same family/resource so the new one is consistent.

Mandatory fields for a new sample

A new template must include all of the following.

Enforced by the schema: id, displayName, shortDescription, longDescription, language, bindingType, resource, iac, priority, categories, repositoryUrl, folderPath, gitRef.

Other fields (whatsIncluded, author, isHighlighted) are optional but recommended where applicable. tags is deprecated — do not add it.

Field rules
  • id — kebab-case, unique (matches the schema id pattern). Convention: <resource-or-feature>-<binding>-<language> (e.g. office365-connector-trigger-python). Before adding the entry, search templates for a matching id. If a collision is found, inform the user and suggest an alternative id (for example, append a version suffix or disambiguating term). Never silently overwrite or duplicate an id.
  • displayName — "<Friendly Name> (<Lang> + AZD + Bicep)".
  • language — must be one of the schema language enum values.
  • bindingType — must be one of the schema bindingType enum values.
  • resource — must be one of the schema resource enum values. Add a new enum value to manifest.schema.json only if none fits, and reuse it consistently.
  • iac — must be one of the schema iac enum values.
  • The same enum-extension rule applies to language, bindingType, and iac: add a new enum value in manifest.schema.json only when no existing value fits, then reuse it consistently across related samples. When any enum is extended, bump manifest version with a minor increment.
  • repositoryUrl — must satisfy the schema pattern (GitHub HTTPS URL).
  • folderPath — path within the repo (. for root).
  • gitRef — mandatory for new samples. Always pin a signed release tag, e.g. refs/tags/v1.0.0. Never leave it unset and never point a new sample at a moving branch (refs/heads/main) — that makes the template non-reproducible. Verify the tag exists before committing. Whenever the sample repo ships a new release, ask the user to update gitRef to the new tag (and re-verify the pinned folderPath/contents still match) so the manifest tracks the intended release. If the gitRef tag does not exist in the target repository, do not proceed with adding the template. Inform the user that the tag was not found, provide the exact gh api command used to verify, and ask them to confirm the tag name or create the release first.

The allowed values, patterns, and limits for every field are defined in schemas/manifest.schema.json — read them there rather than relying on a copy. A quick way to print the enums:

powershell
cd Functions.Templates\Template-Manifest
@'
import json
p = json.load(open(r"schemas\manifest.schema.json", encoding="utf-8"))["$defs"]["template"]["properties"]
for f in ("language", "bindingType", "resource", "iac"):
    print(f, "->", p[f]["enum"])
'@ | python -
Categories (match existing — shown in VS Code)

categories are displayed/filtered in the VS Code extension, so only use categories that already exist in the manifest unless you have a deliberate reason to introduce a new one. Derive the current set from the manifest instead of hardcoding it:

powershell
cd Functions.Templates\Template-Manifest
@'
import json
d = json.load(open("manifest.json", encoding="utf-8"))
print(sorted({c for t in d["templates"] for c in t["categories"]}))
'@ | python -

Most starter samples include starters plus a domain category (e.g. ["starters", "connectors", "event-processing"]). Values are kebab-case.

tags are deprecated

Do not add a tags array to new entries. It is deprecated and not used by consumers. (Older entries may still contain it; leave those as-is unless asked.)

Description pattern

Match the established pattern used across the manifest:

  • shortDescription (respect the schema's maxLength): a concise capability summary that ends with deployed via azd for azd-based templates. Pattern: "<Service> <scope> <mechanism>, deployed via azd". Example: "Office 365 Outlook email and calendar connector triggers with Blob output, deployed via azd". If the sample is not azd-based (for example, iac is none or deployment is manual), omit the deployed via azd suffix. End with the real deployment mechanism (for example, deployed via ARM template) or with the capability summary when no deployment mechanism is represented.

  • longDescription: start with the imperative Build and deploy …, then explicitly name the trigger(s) and binding(s) the sample demonstrates — e.g. the specific trigger type(s) (ConnectorTrigger, McpToolTrigger, CosmosDBTrigger, …) and any input/output bindings (BlobInput/BlobOutput, etc.). Enumerate (1) … (2) … when there are multiple functions/tools, naming each one. Only list a binding if the sample's code actually uses it (verify per language — siblings often differ). Then name the SDK/extension, give the hosting/auth summary, and end with Deployed with azd. For non-azd samples, omit the Deployed with azd. closing and end with the deployment approach actually used or a neutral capability summary.

  • whatsIncluded: a short list of concrete artifacts (functions, bindings, infra, azd config). Keep claims accurate to the real sample.

Show full SKILL.md (677 more words)Show less
Example object
json
{
  "id": "office365-connector-trigger-python",
  "displayName": "Office 365 Outlook Connector Triggers (Python + AZD + Bicep)",
  "shortDescription": "Office 365 Outlook email and calendar connector triggers, deployed via azd",
  "longDescription": "Build and deploy an Office 365 Outlook connector app on Azure Functions in Python. This app provides five connector trigger functions ... Deployed with azd.",
  "language": "Python",
  "bindingType": "trigger",
  "resource": "connector",
  "iac": "bicep",
  "priority": 80,
  "categories": ["starters", "connectors", "event-processing"],
  "author": "Azure Functions Team",
  "repositoryUrl": "https://github.com/Azure-Samples/functions-connectors-python",
  "folderPath": "office365App",
  "gitRef": "refs/tags/v1.0.0",
  "whatsIncluded": ["..."]
}

isHighlighted: true is optional and only for samples that should be featured/highlighted in the consuming UI (e.g. VS Code).

Step 3 — Choose a priority

priority is the primary sort key (lower = shown first), an integer within the range defined by the schema's priority bounds. It is organized in blocks (see docs/priority-tiers.md):

  • 5-slot blocks per Azure resource: +0 trigger, +1 input, +2 output, +3 variant, +4 stub.
  • 10-slot block for MCP (P50–59).
  • Language samples that share a sub-type share the same priority and are sorted by language order: .NET → Python → TypeScript → JavaScript → Java → PowerShell.

Use this lookup style to avoid inferring block math from memory. Build/update this table from docs/priority-tiers.md before assigning a new value:

ResourceBlock Starttriggerinputoutputvariant
mcp5050515253
connector8080818283

If the target resource/block is unclear or overlaps with existing assignments, stop and confirm the intended block with the user before setting priority.

Reuse the priority of the matching peer template (e.g. all Office 365 connector samples = P80, all SharePoint = P81). Use the next free slot/block for a brand-new category.

Step 4 — Bump manifest metadata

In manifest.json, update the top-level fields:

  • totalTemplates — must equal the number of objects in templates.
  • version — bump semver (minor bump for new templates / a new resource enum value; patch for description-only fixes). Use these exact rules: bump the minor version (for example, 1.2.0 → 1.3.0) if the PR adds one or more new templates or introduces a new enum value (resource, language, bindingType, or iac). Bump the patch version (for example, 1.2.0 → 1.2.1) if the PR only fixes descriptions or metadata without adding/removing templates or extending enums. If both occur in one PR, use the higher bump (minor).
  • generatedAt — current UTC time in YYYY-MM-DDTHH:MM:SSZ.

Step 5 — Update docs/priority-tiers.md

Keep the doc in sync with the manifest:

  • Update the header Total templates and Manifest version.
  • Add the new row(s) to the Full template listing (use *new* in the Was column), in priority → language order.
  • Update the Priority block map and Coverage matrix if you added a sub-type/category, and the Summary counts and Total (must match totalTemplates).
  • If samples are removed (e.g. archived repos), delete their rows and note the removal in the block map / coverage matrix (e.g. *(removed — repos archived)*).

Step 6 — Validate

Always validate JSON parses and conforms to the schema, and that the counts match (install the validator first if needed: pip install jsonschema):

powershell
cd Functions.Templates\Template-Manifest
@'
import json, jsonschema
d = json.load(open("manifest.json", encoding="utf-8"))
s = json.load(open(r"schemas\manifest.schema.json", encoding="utf-8"))
jsonschema.validate(d, s)
assert d["totalTemplates"] == len(d["templates"]), "totalTemplates mismatch"
print("OK:", len(d["templates"]), "templates, version", d["version"])
'@ | python -

Also confirm a full-file round-trip produces no unintended formatting drift before and after large edits:

python
orig = open("manifest.json", encoding="utf-8").read()
import json
assert orig == json.dumps(json.loads(orig), indent=2, ensure_ascii=False) + "\n"
Validate template references on GitHub

Run the repo's reference validator, which checks that every template's repositoryUrl, gitRef, and folderPath actually resolve on GitHub (and warns when a gitRef is a branch instead of a signed tag). Requires an authenticated gh CLI:

powershell
pwsh -NoProfile -File eng\scripts\validate-manifest-refs.ps1

The script validates the whole manifest, so pre-existing refs/heads/* branch entries may already emit warnings. For the sample(s) you added or changed, the output must show OK with no WARN/ERROR lines — i.e. the repo, tag, and folder resolve and gitRef is a signed tag (refs/tags/*). Fix any error and re-run until your entries are clean before committing.

Checklist

  • Verified repo, folderPath, and gitRef (tag) exist; claims match real code.
  • gitRef set to a pinned release tag (mandatory; not a moving branch).
  • Template object added with all mandatory fields (incl. gitRef); id unique.
  • displayName follows "<Friendly Name> (<Lang> + AZD + Bicep)".
  • categories use only existing values; no tags on new entries.
  • shortDescription follows deployment mode rules: for azd templates it ends with deployed via azd; for non-azd templates it omits that suffix and uses the actual deployment mechanism (or a capability-only ending).
  • longDescription starts with Build and deploy …, explicitly names the trigger(s)/binding(s) demonstrated; for azd templates it ends with Deployed with azd., and for non-azd templates it omits that closing and uses the actual deployment approach (or a neutral capability summary).
  • priority matches peers / correct block.
  • totalTemplates, version, generatedAt updated.
  • docs/priority-tiers.md listing, block map, coverage matrix, and totals updated.
  • JSON parses, schema validates, counts match; no formatting drift (round-trip).
  • eng\scripts\validate-manifest-refs.ps1 shows OK (no WARN/ERROR) for the sample(s) you touched.

© Azure, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .github/skills/add-manifest-sample of Azure/azure-functions-templates.

Open the folder on GitHubat commit 4a49cf7

Compare with similar skills

Add Manifest Sample next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Add Manifest Sample compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Add Manifest Sample this skillAzure/azure-functions-templates362—~3.8kAutomated safety check: PassMIT
Microsoft Docsmicrosoft/ai-agents-for-beginners77k3 repos~1.2kAutomated safety check: PassMIT
Microsoft Docsmicrosoft/ai-agents-for-beginners77k—~1.5kAutomated safety check: PassMIT
Microsoft Docsmicrosoft/ai-agents-for-beginners77k—~1.5kAutomated safety check: PassMIT
Microsoft Docsmicrosoft/ai-agents-for-beginners77k—~1.6kAutomated safety check: PassMIT
Microsoft Docsmicrosoft/ai-agents-for-beginners77k—~1.3kAutomated safety check: PassMIT

Similar skills

  • Microsoft Docs

    microsoft/ai-agents-for-beginners

    Official

    Query official Microsoft documentation to find concepts, tutorials, and code examples across Azure, .NET, Agent Framework, Aspire, VS Code, GitHub, and more.

    77k GitHub starsUsed in 3 repos~1.2k tokens
    AI & LLM EngineeringAuto-check passed
  • Microsoft Docs

    microsoft/ai-agents-for-beginners

    Official

    Küsib ametlikku Microsofti dokumentatsiooni, et leida mõisteid, juhendeid ja koodinäiteid Azure'i, .NET-i, Agent Frameworki, Aspire'i, VS Code'i, GitHubi ja muu kohta.

    77k GitHub stars~1.5k tokensUpdated 20 days ago
    Agent WorkflowsAuto-check passed
  • Microsoft Docs

    microsoft/ai-agents-for-beginners

    Official

    Kysy virallista Microsoftin dokumentaatiota löytääksesi käsitteitä, opetusohjelmia ja koodiesimerkkejä Azureen, .NET:iin, Agent Frameworkiin, Aspireen, VS Codeen, GitHubiin ja muihin liittyen.

    77k GitHub stars~1.5k tokensUpdated 20 days ago
    AI & LLM EngineeringAuto-check passed
  • Microsoft Docs

    microsoft/ai-agents-for-beginners

    Official

    Interroger la documentation officielle de Microsoft pour trouver des concepts, des tutoriels et des exemples de code couvrant Azure, .NET, Agent Framework, Aspire, VS Code, GitHub, et plus encore.

    77k GitHub stars~1.6k tokensUpdated 20 days ago
    AI & LLM EngineeringAuto-check passed
  • Microsoft Docs

    microsoft/ai-agents-for-beginners

    Official

    שאילתה בתיעוד הרשמי של Microsoft למציאת מושגים, מדריכים ודוגמאות קוד ב-Azure, .NET, Agent Framework, Aspire, VS Code, GitHub ועוד.

    77k GitHub stars~1.3k tokensUpdated 20 days ago
    AI & LLM EngineeringAuto-check passed
  • Microsoft Docs

    microsoft/ai-agents-for-beginners

    Official

    आधिकारिक Microsoft दस्तावेज़ों में क्वेरी करें ताकि Azure, .NET, Agent Framework, Aspire, VS Code, GitHub, और अन्य के बारे में अवधारणाएँ, ट्यूटोरियल और कोड उदाहरण मिल सकें। डिफ़ॉल्ट रूप से Microsoft…

    77k GitHub stars~1.4k tokensUpdated 20 days ago
    AI & LLM EngineeringAuto-check passed

Questions about Add Manifest Sample

What does Add Manifest Sample do?

Add a new Azure Functions sample/quickstart to the Template Manifest. Add Manifest Sample is an agent skill from Azure/azure-functions-templates, published by the product's own GitHub organization. Add a new Azure Functions sample/quickstart to the Template Manifest.

When should I use Add Manifest Sample?

Add Manifest Sample fits situations like: asked to add a sample; register a quickstart; add a connector/MCP/trigger sample to Functions.Templates/Template-Manifest/manifest.json.

How do I install Add Manifest Sample in Claude Code?

Run `npx skills add Azure/azure-functions-templates --skill add-manifest-sample -a claude-code`. Or copy the skill folder (.github/skills/add-manifest-sample in Azure/azure-functions-templates) into .claude/skills/add-manifest-sample in your project. Claude Code loads it when a task matches its description.

How do I install Add Manifest Sample in Codex?

Run `npx skills add Azure/azure-functions-templates --skill add-manifest-sample -a codex`. Or copy the skill folder (.github/skills/add-manifest-sample in Azure/azure-functions-templates) into .agents/skills/add-manifest-sample in your project. Codex loads it when a task matches its description.

Can I use Add Manifest Sample in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Azure/azure-functions-templates --skill add-manifest-sample -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/add-manifest-sample, .gemini/skills/add-manifest-sample, .github/skills/add-manifest-sample and .opencode/skills/add-manifest-sample in your project.

What does Add Manifest Sample need to run?

Going by SKILL.md and its folder, Add Manifest Sample needs the command-line tools its instructions call (python, gh, pwsh and pip). Our summary lists: Python 3.

Does Add Manifest Sample access the network?

SKILL.md names 1 domain. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Add Manifest Sample safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Add Manifest Sample use?

Add Manifest Sample is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Add Manifest Sample use?

About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Add Manifest Sample?

Skills that share tags, products or a category with Add Manifest Sample: Microsoft Docs (microsoft/ai-agents-for-beginners, 77k stars), Microsoft Docs (microsoft/ai-agents-for-beginners, 77k stars), Microsoft Docs (microsoft/ai-agents-for-beginners, 77k stars) and Microsoft Docs (microsoft/ai-agents-for-beginners, 77k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Add Manifest Sample?

Azure (a GitHub organization, an official publisher) maintains it in Azure/azure-functions-templates, which has 362 GitHub stars. The repository was last updated on October 6, 2026.

Source: Azure/azure-functions-templates on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.