Official agent skill

Declarative Agent Developer

by microsoft in microsoft/skills

Create, build, deploy, and localize declarative agents for M365 Copilot and Teams.

OfficialMITAuto-check: notesDevelopment

Install Declarative Agent Developer

skills CLI
$ npx skills add microsoft/skills --skill declarative-agent-developer -a claude-code

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

GitHub CLI
$ gh skill install microsoft/skills declarative-agent-developer --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/microsoft/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/plugins/microsoft-365-agents-toolkit/skills/declarative-agent-developer .claude/skills/declarative-agent-developer && 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
declarative-agent-developer
GitHub stars
3.1k
Token cost
~3.2k tokens
SKILL.md length
1,330 words
Files
14 (incl. references)
Skills in repo
150
Repo updated
First seen
Licence
MIT

At a glance

Create, build, deploy, and localize declarative agents for M365 Copilot and Teams.

  • Works in 7 steps: Deploy After EVERY Edit → Never Invent Content or Create Missing… → Schema Version Compatibility → …
  • ANY task involving a declarative agent — including localization
  • SKILL.md covers Telemetry Tagging, ⛔ Workspace Check — MANDATORY…, Phase Routing and ATK CLI Setup, plus 2 more sections
  • Calls npx; reaches m365.cloud.microsoft

What it does

Declarative Agent Developer is an agent skill from microsoft/skills, published by the product's own GitHub organization. Create, build, deploy, and localize declarative agents for M365 Copilot and Teams. USE THIS SKILL for ANY task involving a declarative agent — including localization, scaffolding, editing manifests, adding capabilities, and deploying. Localization requires tokenized manifests and language files that only this skill knows how to produce. Triggers: "create agent", "create a declarative agent", "new declarative agent", "scaffold an agent", "new agent project", "add a capability", "add a plugin", "configure my…

Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 14 other files, including reference files (for example `references/api-plugins.md`, `references/authentication.md` and `references/best-practices.md`).

It sits in Development, covering Project scaffolding, Internationalization and Building AI agents. It works with Microsoft 365 and Model Context Protocol. The repository describes itself as: Skills, MCP servers, Custom Agents, Agents.md for SDKs to ground Coding Agents. The licence is MIT.

When your agent uses it

  • ANY task involving a declarative agent — including localization
  • Editing manifests
  • Adding capabilities

Example prompts

  • “create agent”
  • “create a declarative agent”
  • “new declarative agent”
  • “/declarative-agent-developer”

Requirements

  • Node.js

Workflow steps

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

  1. Deploy After EVERY Edit
  2. Never Invent Content or Create Missing Files
  3. Schema Version Compatibility
  4. Use npx -y --package @microsoft/m365agentstoolkit-cli atk add action for API Plugins — NEVER Create Plugin Files Manually
  5. MCP Server Integration
  6. Always Update Instructions & Starters After Changes
  7. App Name Requirement

What it can do on your machine

Read from SKILL.md and the folder at commit 354361d. 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:

    • npx

    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:

    • m365.cloud.microsoft

    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

Declarative Agent Developer loads about 3.2k tokens when it runs, and up to ~61k if it reads all its reference files. Until then it costs about 208 tokens; SKILL.md has 1,330 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~208
When it runs · the whole SKILL.md, loaded when a task matches
~3.2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~61k

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: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:109
    Then read `M365_TITLE_ID` from `env/.env.local` and **ALWAYS** present the review UX:

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 microsoft/skills at commit 354361d, republished under its MIT licence (© microsoft). 1,330 words, ~3,191 tokens.

Download SKILL.mdSave it as .claude/skills/declarative-agent-developer/SKILL.md (or your agent's skills folder). This skill also uses 13 other files; get the full folder from GitHub.
name
declarative-agent-developer
description
Create, build, deploy, and localize declarative agents for M365 Copilot and Teams. USE THIS SKILL for ANY task involving a declarative agent — including localization, scaffolding, editing manifests, adding capabilities, and deploying. Localization requires tokenized manifests and language files that only this skill knows how to produce. Triggers: "create agent", "create a declarative agent", "new declarative agent", "scaffold an agent", "new agent project", "add a capability", "add a plugin", "configure my agent", "deploy my agent", "fix my agent manifest", "edit my agent", "localize my agent", "add localization", "translate my agent", "multi-language agent", "add an API plugin", "add an MCP plugin", "add OAuth to my plugin", "review instructions", "improve instructions", "fix my instructions"

M365 Agent Developer

Telemetry Tagging

Before running any atk CLI commands, set the session environment variable so all CLI invocations are tagged as skill-initiated:

bash
export ATK_CLI_SKILL=true

Run this once at the start of the session. All subsequent atk commands in the same terminal will inherit it.

⛔ Workspace Check — MANDATORY FIRST STEP

Before doing ANYTHING, check the workspace files to fingerprint the project:

  1. Run npx -y --package @microsoft/m365agentstoolkit-cli atk --version to confirm ATK CLI is installed. If not found → Stop. Tell the user to install ATK.
  2. Check for m365agents.yml or teamsApp.yml at the project root.
  3. Check for appPackage/declarativeAgent.json.
  4. Check for non-agent indicators (package.json with express/react/next, src/index.js, app.py, etc.)

Then follow the decision gate:

ConditionGateAction
Non-agent project files, no appPackage/RejectText-only response. No files, no commands.
No manifest, user wants to edit/deployRejectText-only response. Explain manifest is missing.
No manifest, user wants new projectScaffold→ Scaffolding Workflow
Manifest exists with errorsFixDetect → Inform → Ask (see below). Do NOT deploy.
Valid project, user reports behavior issuesReview→ Instruction Review — run the full 5-phase review workflow
Valid agent projectEdit→ Editing Workflow

Detailed gate rules, examples, and anti-patterns: Workspace Gates

🚫 HARD REJECTION RULES — No Exceptions

These rules override ALL other instructions. If any of these apply, you MUST stop immediately.

  1. NEVER create declarativeAgent.json yourself. If the manifest is missing and the user asked to edit/modify/deploy, respond with text only: explain the manifest is missing, suggest npx -y --package @microsoft/m365agentstoolkit-cli atk new or starting from scratch. Do NOT create the file, do NOT create appPackage/, do NOT "help" by scaffolding implicitly.

  2. NEVER create files in a non-agent project. If the workspace is an Express/React/Django/etc. app without appPackage/, your response must be text-only. Do NOT create any files, do NOT run any commands.

  3. NEVER deploy when errors exist. If the agent manifest has errors, STOP. Do NOT run npx -y --package @microsoft/m365agentstoolkit-cli atk provision — not "to test", not "to demonstrate the error", not "to see what happens". Report the errors and ask the user how to proceed.

🔍 Detect → Inform → Ask (Error-Handling Protocol)

When you encounter ANY problem (missing files, malformed JSON, validation errors, incompatible features), you MUST follow this sequence in order:

  1. Detect — Identify the specific problem. For JSON issues, attempt to parse the file and report syntax errors. For missing fields, check the manifest against the Schema.
  2. Inform — Tell the user BEFORE taking any action. Describe exactly what is wrong ("declarativeAgent.json has malformed JSON: missing comma on line 12, unclosed array on line 18").
  3. Ask — Wait for the user's response before making changes. Do NOT silently fix, auto-correct, or work around the problem.

This protocol applies to:

  • Missing declarativeAgent.json → Detect (file not found) → Inform ("no manifest found") → Ask ("would you like to create a new agent?")
  • Malformed JSON → Detect (parse errors) → Inform (list specific syntax issues) → Ask ("should I fix these syntax errors?")
  • Validation errors → Detect (parse and check manifest) → Inform (list all errors) → Ask ("how would you like to fix these?")
  • Version incompatibility → Detect (feature requires newer version) → Inform ("this feature requires v1.6, your agent is v1.4") → Ask ("should I upgrade?")

Phase Routing

ScenarioWorkflow Reference
Creating a NEW project from scratchScaffolding Workflow
Working with existing .json manifestsEditing Workflow
Adding an API pluginAPI Plugins
Adding an MCP serverMCP Plugin
Adding OAuth to an MCP or API pluginAuthentication
Reviewing or improving existing agent instructionsInstruction Review
User reports agent gives generic/wrong answersInstruction Review
Localizing an agent into multiple languagesLocalization
Adding a new language to an already-localized agentLocalization
Writing agent instructionsConversation Design

ATK CLI Setup

Before running any ATK commands, check if the ATK CLI is available by running npx -y --package @microsoft/m365agentstoolkit-cli atk --version. If not found, STOP and tell the user — do NOT attempt to install it yourself.

All commands use the npx -y --package @microsoft/m365agentstoolkit-cli atk prefix (e.g., npx -y --package @microsoft/m365agentstoolkit-cli atk provision --env local).


Critical Rules

1. Deploy After EVERY Edit

After ANY change to files in appPackage/, you MUST deploy and show the test link before responding:

bash
npx -y --package @microsoft/m365agentstoolkit-cli atk provision --env local --interactive false

Then read M365_TITLE_ID from env/.env.local and ALWAYS present the review UX:

✅ Agent deployed successfully!

🚀 Test Your Agent in M365 Copilot:
🔗 https://m365.cloud.microsoft/chat/?titleId={M365_TITLE_ID}

⛔ Never respond without this link. If you deployed, the test link MUST appear in your response. This is not optional — it is how the user tests their agent.

  • If the manifest has errors → STOP. Fix errors. Do NOT deploy.
  • Exception: user explicitly asks you not to deploy
2. Never Invent Content or Create Missing Files
  • Do NOT invent placeholder names, descriptions, or instructions
  • Do NOT create declarativeAgent.json or appPackage/ if they don't exist — this is a REJECT scenario, not a "help by creating" scenario
  • If required fields are missing, report the gaps, and ASK the user
  • If JSON is malformed, follow Detect → Inform → Ask: parse the file first, tell the user what's broken, then ask before fixing. Use surgical edits (not rewrites)
  • ⛔ NEVER set placeholder values for environment variables that are populated by automation (e.g., <PREFIX>_MCP_AUTH_ID, TEAMS_APP_ID). Leave them empty (VAR_NAME=). Placeholders will be treated as real values and will NOT be overwritten by provisioning.
Show full SKILL.md (485 more words)Show less
3. Schema Version Compatibility

Before adding ANY feature, read the version field in declarativeAgent.json and check the Schema feature matrix. If the feature isn't supported in that version, refuse and offer to upgrade.

Key version gates:

  • sensitivity_label, worker_agents, EmbeddedKnowledge → v1.6 only
  • Meetings → v1.5+
  • ScenarioModels, behavior_overrides, disclaimer → v1.4+
  • Dataverse, TeamsMessages, Email, People → v1.3+
4. Use npx -y --package @microsoft/m365agentstoolkit-cli atk add action for API Plugins — NEVER Create Plugin Files Manually

You are forbidden from manually creating ai-plugin.json, OpenAPI specs, adaptive cards, or editing the actions array. Use the CLI:

bash
# ⛔ Always list ALL operations in a single call — NEVER run separate calls per operation
npx -y --package @microsoft/m365agentstoolkit-cli atk add action --api-plugin-type api-spec --openapi-spec-location URL --api-operation "GET /path,POST /path,PATCH /path/{id},DELETE /path/{id}" -i false

Run a single npx -y --package @microsoft/m365agentstoolkit-cli atk add action call per OpenAPI spec, listing all operations as a comma-separated list in --api-operation. Never run separate npx -y --package @microsoft/m365agentstoolkit-cli atk add action calls for different operations from the same spec — this creates multiple plugins instead of one. If npx -y --package @microsoft/m365agentstoolkit-cli atk add action fails, report the error; do NOT fall back to manual creation.

Exception: MCP servers are not supported by npx -y --package @microsoft/m365agentstoolkit-cli atk add action. Use the MCP Plugin workflow instead.

5. MCP Server Integration

When the user mentions an MCP server URL, follow the MCP Plugin workflow. You MUST discover tools via the MCP protocol handshake (initialize → notifications/initialized → tools/list) — NEVER fabricate tool names/descriptions. For authenticated MCP servers, follow the authentication guide to configure OAuth.

6. Always Update Instructions & Starters After Changes

Adding a capability or plugin without updating instructions is incomplete. After ANY change:

  1. Update instructions to describe the new/changed functionality — every data source should have clear intent coverage (WHEN and WHY to use it) per the Instruction Review quality bar. Built-in capabilities don't need exact names; actions/plugins should be named.
  2. Do NOT list tool names, descriptions, or parameters in instructions — these are already in the plugin metadata (ai-plugin.json, MCP manifests, capability config). Instructions should contain decision logic only: WHEN to use each tool, chaining rules, and failure handling.
  3. Stay within the 8,000-character instruction limit — if close to the limit, cut tool descriptions first
  4. Add at least 1 conversation starter per added capability/plugin
  5. Remove starters that reference removed capabilities
  6. Run the Diagnostic Checklist against the updated instructions to verify quality
7. App Name Requirement

Always update the app name and description to something meaningful. Never leave defaults like "My Agent".


References

Shared
  • Authentication — OAuth discovery, credentials, oauth/register lifecycle, OAuthPluginVault
  • Best Practices — Security, performance, testing, compliance
  • Conversation Design — Authoring instructions and conversation starters from scratch
  • Instruction Review — Auditing, diagnosing, and improving existing instructions; anti-pattern detection; before/after rewrites
  • Deployment — ATK CLI workflows, environments, CI/CD
  • Localization — Multi-language support, tokenized manifests, language files
  • Workspace Gates — Detailed gate rules, examples, anti-patterns
Scaffolding
JSON Development
  • Editing Workflow — Step-by-step JSON development instructions
  • Schema — Official JSON schema for agent manifests
  • API Plugins — OpenAPI integration for JSON agents
  • MCP Plugin — MCP server integration with RemoteMCPServer, OAuth, response semantics, logo handling
  • Examples — JSON manifest examples

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

Files

SKILL.md and 13 other files (references) in .github/plugins/microsoft-365-agents-toolkit/skills/declarative-agent-developer of microsoft/skills.

  • SKILL.md
  • references/api-plugins.md
  • references/authentication.md
  • references/best-practices.md
  • references/conversation-design.md
  • references/deployment.md
  • references/editing-workflow.md
  • references/examples.md
  • references/instruction-review.md
  • references/localization.md
  • references/mcp-plugin.md
  • references/scaffolding-workflow.md
  • references/schema.md
  • references/workspace-gates.md

Open the folder on GitHubat commit 354361d

Compare with similar skills

Declarative Agent Developer 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.

Declarative Agent Developer compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Declarative Agent Developer this skillmicrosoft/skills3.1k—~3.2kAutomated safety check: NotesMIT
Declarative Agent Developermicrosoft/work-iq1k—~3.2kAutomated safety check: PassCustom licence
Entra Agent Idmicrosoft/GitHub-Copilot-for-Azure2553 repos~4kAutomated safety check: PassMIT
Dashclaw Shipucsandman/DashClaw310—~7.2kAutomated safety check: PassMIT
Build Dashclawucsandman/DashClaw310—~1.3kAutomated safety check: PassMIT
Agents Get Startedaws/agent-toolkit-for-aws2.8k—~4.3kAutomated safety check: NotesApache-2.0

Similar skills

  • Official

    Create, build, deploy, and localize declarative agents for M365 Copilot and Teams.

    1k GitHub stars~3.2k tokensUpdated today
    Backend & APIsAuto-check passed
  • Entra Agent Id

    microsoft/GitHub-Copilot-for-Azure

    Official

    Provision Microsoft Entra Agent Identity Blueprints, BlueprintPrincipals, and per-instance Agent Identities via Microsoft Graph, and configure OAuth 2.0 token exchange (fmipath, OBO, cross-tenant)…

    255 GitHub starsUsed in 3 repos~4k tokens
    Backend & APIsAuto-check passed
  • Dashclaw Ship

    ucsandman/DashClaw

    The single command that gets a DashClaw change ON MAIN AND LIVE — it resolves everything blocking production, never defers, and never hands back a checklist.

    310 GitHub stars~7.2k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Build Dashclaw

    ucsandman/DashClaw

    Contribute to the DashClaw codebase — architecture, scaffolding, tests, CI

    310 GitHub stars~1.3k tokensUpdated yesterday
    AI & LLM EngineeringAuto-check passed
  • Agents Get Started

    aws/agent-toolkit-for-aws

    Official

    A skill your agent uses when a developer wants to create a new agent project or get started with AgentCore.

    2.8k GitHub stars~4.3k tokensUpdated today
    AI & LLM EngineeringAuto-check: notes
  • Build or evolve a complex agent-enabled Tutti workspace app repository.

    3.8k GitHub stars~1.9k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed

More from microsoft/skills

All 150 skills in this repo
  • Official

    Reference for building on Microsoft Foundry with the azure-ai-projects Python SDK: project clients, versioned agents, evaluations, connections, datasets and indexes.

    3.1k GitHub starsUsed in 6 repos~2.8k tokens
    Auto-check passed
  • Official

    Python guidance for the Azure AI Search SDK covering vector, hybrid and semantic search, index management and indexers, with Entra ID authentication preferred over keys.

    3.1k GitHub starsUsed in 6 repos~4.4k tokens
    Auto-check passed
  • Official

    Covers producer, consumer, and checkpoint-store setup for Azure Event Hubs streaming in Python, with Entra ID auth and partition targeting.

    3.1k GitHub starsUsed in 1 repo~2.3k tokens
    Auto-check passed
  • Pydantic Models Py

    microsoft/skills

    Official

    Create Pydantic models following the multi-model pattern with Base, Create, Update, Response, and InDB variants.

    3.1k GitHub starsUsed in 6 repos~496 tokens
    Auto-check passed
  • Official

    Builds podcast-style audio narration from text with Azure OpenAI's GPT Realtime Mini over WebSocket, from a Python FastAPI backend to a React player.

    3.1k GitHub starsUsed in 1 repo~947 tokens
    Auto-check passed
  • Frontend UI Dark TS

    microsoft/skills

    Official

    Build dark-themed React applications using Tailwind CSS with custom theming, glassmorphism effects, and Framer Motion animations.

    3.1k GitHub starsUsed in 5 repos~3.6k tokens
    Auto-check passed

Questions about Declarative Agent Developer

What does Declarative Agent Developer do?

Create, build, deploy, and localize declarative agents for M365 Copilot and Teams. Declarative Agent Developer is an agent skill from microsoft/skills, published by the product's own GitHub organization. Create, build, deploy, and localize declarative agents for M365 Copilot and Teams.

When should I use Declarative Agent Developer?

Declarative Agent Developer fits situations like: ANY task involving a declarative agent — including localization; editing manifests; adding capabilities.

How do I install Declarative Agent Developer in Claude Code?

Run `npx skills add microsoft/skills --skill declarative-agent-developer -a claude-code`. Or copy the skill folder (.github/plugins/microsoft-365-agents-toolkit/skills/declarative-agent-developer in microsoft/skills) into .claude/skills/declarative-agent-developer in your project. Claude Code loads it when a task matches its description.

How do I install Declarative Agent Developer in Codex?

Run `npx skills add microsoft/skills --skill declarative-agent-developer -a codex`. Or copy the skill folder (.github/plugins/microsoft-365-agents-toolkit/skills/declarative-agent-developer in microsoft/skills) into .agents/skills/declarative-agent-developer in your project. Codex loads it when a task matches its description.

Can I use Declarative Agent Developer 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 microsoft/skills --skill declarative-agent-developer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/declarative-agent-developer, .gemini/skills/declarative-agent-developer, .github/skills/declarative-agent-developer and .opencode/skills/declarative-agent-developer in your project.

What does Declarative Agent Developer need to run?

Going by SKILL.md and its folder, Declarative Agent Developer needs the command-line tools its instructions call (npx). Our summary lists: Node.js.

Does Declarative Agent Developer access the network?

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

Is Declarative Agent Developer safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Declarative Agent Developer use?

Declarative Agent Developer 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 Declarative Agent Developer use?

About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 58k tokens, read only when the agent opens those files.

What are the alternatives to Declarative Agent Developer?

Skills that share tags, products or a category with Declarative Agent Developer: Declarative Agent Developer (microsoft/work-iq, 1k stars), Entra Agent Id (microsoft/GitHub-Copilot-for-Azure, 255 stars), Dashclaw Ship (ucsandman/DashClaw, 310 stars) and Build Dashclaw (ucsandman/DashClaw, 310 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Declarative Agent Developer?

microsoft (a GitHub organization, an official publisher) maintains it in microsoft/skills, which has 3,086 GitHub stars. The repository holds 150 skills in this directory. The repository was last updated on October 6, 2026.

Source: microsoft/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.