{"owner":"microsoft","repo":"plugins","hasSkills":true,"totalSkillsCount":20,"totalTokensCount":16144,"categories":["plugin-manifest","anthropic-skill"],"hasMcp":false,"mcpConfig":null,"found":["samples/plugins/microsoft-learn-plugin/README.md","samples/plugins/microsoft-learn-plugin/wiqd.plugin.json","samples/plugins/retirement-radar-plugin/README.md","samples/plugins/retirement-radar-plugin/appPackage/skills/retirement-radar/SKILL.md","samples/plugins/retirement-radar-plugin/appPackage/skills/retirement-radar/references/report-template.md","tools/wiqd/cookbooks/README.md","tools/wiqd/cookbooks/declarative-agents/demo-planning-agent/README.md","tools/wiqd/cookbooks/declarative-agents/insurance-agent-mcp/README.md","tools/wiqd/cookbooks/declarative-agents/mind-your-language-agent/README.md","tools/wiqd/cookbooks/declarative-agents/photobooth-agent/README.md","tools/wiqd/cookbooks/declarative-agents/public-web-research-agent/README.md","tools/wiqd/cookbooks/declarative-agents/sharepoint-knowledge-agent/README.md","tools/wiqd/cookbooks/declarative-agents/translator-agent/README.md","tools/wiqd/cookbooks/declarative-agents/zero-to-agent/README.md","tools/wiqd/cookbooks/lifecycle/devui-debugging/README.md","tools/wiqd/cookbooks/lifecycle/eval-hill-climb/README.md","tools/wiqd/cookbooks/lifecycle/team-delivery/README.md","tools/wiqd/cookbooks/plugins/learn-tech-advisor/README.md","tools/wiqd/cookbooks/plugins/microsoft-learn-mcp/README.md","tools/wiqd/cookbooks/plugins/plugin-portability/README.md"],"skills":{"samples/plugins/microsoft-learn-plugin/README.md":"# Microsoft Learn Helper\n\nMicrosoft Learn Helper is a Microsoft 365 Copilot plugin that searches and\nreads current official Microsoft documentation and code samples.\n\nThe plugin connects to the public\n[Microsoft Learn MCP server](https://learn.microsoft.com/api/mcp). The\nconnector is read-only and does not require an API key or user sign-in.\n\n## What this sample demonstrates\n\n- Adding a remote MCP server as an agent connector\n- Describing MCP tools for Microsoft 365 Copilot\n- Searching current Microsoft documentation\n- Fetching complete documentation pages for additional context\n- Finding official code samples by language\n- Packaging and provisioning a connector plugin\n\n## Try the plugin\n\n### Prerequisites\n\nYou need:\n\n- Access to Microsoft 365 Copilot Cowork\n- Permission to upload a custom plugin in your tenant\n- Copilot Credits for testing in Cowork\n\n### 1. Upload the package\n\nUse the prebuilt [`package.zip`](package.zip), or build a package from the\nsource files in [`appPackage/`](appPackage/).\n\nIn Microsoft 365 Copilot Cowork:\n\n1. Open the plugin inventory.\n2. Select the option to upload a custom plugin.\n3. Upload `package.zip`.\n4. Find **Microsoft Learn Helper** and enable it for the current Cowork\n   session.\n\nThe connector uses anonymous access, so Cowork should not ask you to sign in.\n\n### 2. Test the connector\n\nTry prompts such as:\n\n```text\nFind the current Microsoft documentation for building a declarative agent.\nSummarize the prerequisites and cite the source.\n```\n\n```text\nFind an official TypeScript code sample for authenticating with Microsoft\nGraph. Explain the sample and link to its source.\n```\n\n```text\nSearch Microsoft Learn for the latest Azure Functions Node.js guidance, then\nread the most relevant page and summarize its recommendations.\n```\n\n## Available tools\n\n| Tool | Purpose |\n|------|---------|\n| `microsoft_docs_search` | Searches official Microsoft documentation and returns relevant excerpts and source URLs |\n| `microsoft_docs_fetch` | Fetches the complete content of a Microsoft documentation page |\n| `microsoft_code_sample_search` | Finds current code samples in official Microsoft documentation, optionally filtered by language |\n\n## Project structure\n\n| File or folder | Purpose |\n|----------------|---------|\n| [`appPackage/manifest.json`](appPackage/manifest.json) | Defines the Microsoft Learn remote MCP connector |\n| [`appPackage/microsoft-learn-mcp-tools.json`](appPackage/microsoft-learn-mcp-tools.json) | Describes the MCP tools exposed to Copilot |\n| [`wiqd.plugin.json`](wiqd.plugin.json) | Identifies the project as a WIQD plugin with an agent connector |\n| [`m365agents.yml`](m365agents.yml) | Defines provisioning, validation, packaging, and publishing actions |\n| [`m365agents.local.yml`](m365agents.local.yml) | Defines the local provisioning workflow |\n\n## Develop the sample\n\nThis project includes Microsoft 365 Agents Toolkit lifecycle files. Open the\nproject in VS Code with Microsoft 365 Agents Toolkit, then use its lifecycle\ncommands to provision, package, validate, and publish the plugin to your\ndevelopment environment.\n\nYou can also inspect and modify the plugin with\n[WIQD](https://microsoft.github.io/wiqd/). See the\n[Microsoft Learn MCP connector cookbook](../../../tools/wiqd/cookbooks/plugins/microsoft-learn-mcp/README.md)\nfor a guided, end-to-end build of this sample.\n\n## Important\n\nThis sample is for learning and demonstration purposes. Review the manifest,\ndeveloper information, descriptions, icons, and tenant policies before sharing\nor publishing a derived plugin.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/samples/plugins/microsoft-learn-plugin\" />\n","samples/plugins/microsoft-learn-plugin/wiqd.plugin.json":"{\n  \"schemaVersion\": 1,\n  \"name\": \"Microsoft Learn Helper\",\n  \"capabilities\": [\n    \"agentConnectors\"\n  ]\n}\n","samples/plugins/retirement-radar-plugin/README.md":"# Retirement Radar for Copilot Cowork\n\nRetirement Radar helps you find retired and deprecated Microsoft technology before an old script fails in production.\n\nGive Copilot Cowork a script, configuration file, package list, or architecture note. Retirement Radar checks every Microsoft API, SDK, PowerShell module, endpoint, and service it finds against live Microsoft Learn documentation, then returns:\n\n- A clear supported, deprecated, or retired verdict\n- Official retirement dates and Microsoft Learn sources\n- Supported replacements\n- Updated code based on official samples\n- A prioritized migration checklist\n\n## Try the plugin\n\n### Prerequisites\n\nYou need:\n\n- Access to **Microsoft 365 Copilot Cowork**\n- Copilot Credits for testing in Cowork\n\nThe plugin uses the public, read-only [Microsoft Learn MCP server](https://learn.microsoft.com/api/mcp). It does not require an API key or a connector sign-in.\n\n### 1. Get the plugin package\n\nUse the prebuilt package:\n\n```text\nappPackage.dev.zip\n```\n\nThe ZIP must contain `manifest.json`, `mcp-tools.json`, the icons, and `skills/` at its root. Do not zip the `appPackage` folder itself.\n\n### 2. Upload and enable it in Cowork\n\n1. Open **Microsoft 365 Copilot Cowork**.\n2. Open the plugin inventory.\n3. Select the option to upload a custom plugin.\n4. Upload `appPackage.dev.zip`.\n5. Find **Retirement Radar** and enable it for the current Cowork session.\n\nThe plugin should show:\n\n- The **Retirement Radar** skill\n- The **Microsoft Learn** connector\n\nThe connector uses anonymous access, so Cowork should not ask you to sign in.\n\n### 3. Run the demo\n\nOpen [`demo/legacy-admin-script copy.txt`](demo/legacy-admin-script%20copy.txt), copy the complete script, and paste it into Cowork with this prompt:\n\n> Is this still safe to run tonight? Check it for retired Microsoft APIs.\n\nRetirement Radar should:\n\n1. Inventory the Microsoft technologies in the script.\n2. Check each one against current Microsoft Learn content.\n3. Classify each finding as **Broken now**, **Breaking soon**, **Deprecated**, or **OK**.\n4. Cite an official source for every dated claim.\n5. Recommend supported replacements.\n\nThe demo includes intentionally old technology such as:\n\n- MSOnline and AzureAD PowerShell\n- Azure AD Graph (`graph.windows.net`)\n- AzureRM PowerShell\n- Office 365 connectors in Teams\n\nBecause Retirement Radar checks Microsoft Learn at runtime, its wording and findings can change as Microsoft updates the documentation.\n\n### 4. Ask for the migration\n\nContinue in the same Cowork session:\n\n> Rewrite the whole script with the supported replacements.\n\nThe plugin uses Microsoft Learn code samples to produce an updated PowerShell script while preserving the intent and variable names where possible.\n\n## More prompts to try\n\nRetirement Radar can inspect more than PowerShell. Try it with application code, dependency files, infrastructure definitions, or architecture notes:\n\n```text\nCheck this project for deprecated Microsoft SDKs and APIs. Cite an official source for every finding.\n```\n\n```text\nWhich dependencies in this package file need migration within the next 12 months?\n```\n\n```text\nThis integration started returning 403 errors. Check whether any Microsoft endpoint or authentication library in it has been retired.\n```\n\n```text\nCreate a prioritized migration plan, then rewrite only the broken parts.\n```\n\nDo not paste live secrets, access tokens, connection strings, or production webhook URLs into the chat. Replace them with redacted values first.\n\n## What is in the plugin\n\n```text\n\nappPackage/\n├── manifest.json\n├── mcp-tools.json\n├── color.png\n├── outline.png\n└── skills/\n    └── retirement-radar/\n        ├── SKILL.md\n        └── references/\n            └── report-template.md\n\n```\n\nRetirement Radar is a standard Microsoft 365 app package for Copilot Cowork:\n\n| Component | Purpose |\n|---|---|\n| `agentSkills[0]` | Registers the `retirement-radar` workflow from `skills/retirement-radar/SKILL.md` |\n| `agentConnectors[0]` | Connects Cowork to the remote Microsoft Learn MCP server |\n| `mcp-tools.json` | Describes the Microsoft Learn tools exposed to the skill |\n\nThere is no declarative agent or hosted backend in this package. The skill contains the workflow, and the connector provides live Microsoft Learn search, page retrieval, and code-sample tools.\n\n## Troubleshooting\n\n### The plugin does not appear in Cowork\n\n- Confirm that `appPackage.dev.zip` uploaded successfully.\n- Reopen the plugin inventory after the upload completes.\n- Check that the plugin is installed and enabled for the current session.\n\n### The package upload fails\n\n- Open the ZIP and confirm `manifest.json` is at the root.\n- Confirm `skills/retirement-radar/SKILL.md` exists with that exact capitalization.\n- Confirm the ZIP contains `mcp-tools.json`, `color.png`, and `outline.png`.\n- Do not place a parent `appPackage/` directory inside the ZIP.\n\n### The skill does not activate\n\nUse an explicit prompt containing phrases such as **retired**, **deprecated**, **still supported**, or **check Microsoft dependencies**. Also confirm that Retirement Radar is enabled in the Cowork session.\n\n### Microsoft Learn results are unavailable\n\nThe skill depends on `https://learn.microsoft.com/api/mcp`. Confirm that your organization allows Cowork to reach that HTTPS endpoint.\n\n## Learn more\n\n- [Copilot Camp: Build your first Copilot Cowork plugin](https://microsoft.github.io/copilot-camp/pages/copilot-cowork/02-cowork-plugins/)\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/samples/plugins/retirement-radar-plugin\" />\n","samples/plugins/retirement-radar-plugin/appPackage/skills/retirement-radar/SKILL.md":"---\nname: retirement-radar\ndescription: Scans code, scripts, config files, package lists or architecture notes for Microsoft APIs, SDKs, PowerShell modules, endpoints and services that are deprecated or retired, verifies each one live against official Microsoft Learn documentation, and returns a dated risk table with the supported replacement and a rewritten snippet. Use when the user asks \"is this still supported?\", \"what's deprecated in my code?\", \"why did my script/webhook stop working?\", \"check my dependencies for retirement\", or pastes code that uses AzureAD, MSOnline, AzureRM, ADAL, Azure AD Graph, Office 365 connectors or other legacy Microsoft tech. Do not use for general coding help unrelated to deprecation or for non-Microsoft technologies.\nlicense: MIT\ncompatibility: Requires the Microsoft Learn MCP server (https://learn.microsoft.com/api/mcp) with the tools microsoft_docs_search, microsoft_docs_fetch and microsoft_code_sample_search.\nmetadata:\n  author: Contoso Cloud Advocacy\n  version: \"1.0.0\"\n---\n\n# Retirement Radar\n\nTurn \"I think this still works\" into \"here is the official date, the replacement, and the fixed code\".\n\n## When to use\n- The user pastes code, a script, `package.json`, `.csproj`, `requirements.txt`, an ARM/Bicep template, or a description of their architecture.\n- The user asks whether something is deprecated, retired, still supported, or why it suddenly stopped working (401/403/410 errors from an old endpoint are a strong signal).\n\n## Step 1 - Inventory the signals\nExtract every Microsoft technology reference. Look for:\n\n| Signal type | Examples |\n|---|---|\n| PowerShell modules / cmdlet prefixes | `Connect-AzureAD`, `*-AzureAD*`, `Connect-MsolService`, `*-Msol*`, `*-AzureRM*` |\n| Packages | `Microsoft.IdentityModel.Clients.ActiveDirectory` (ADAL.NET), `adal` (Python/Node), `msrestazure`, `WindowsAzure.Storage`, `Microsoft.Azure.Management.*` |\n| Endpoints | `graph.windows.net` (Azure AD Graph), `outlook.office.com/webhook`, `*.webhook.office.com/webhookb2` (Office 365 connectors), `login.windows.net` |\n| Services / features | Office 365 connectors in Teams, basic auth for Exchange Online, classic (ASM) resources |\n\nRecord where each signal appears (line number or snippet) so the report can point to it.\n\n## Step 2 - Verify every signal on Microsoft Learn\nFor each signal, in this order:\n1. `microsoft_docs_search` with `\"<technology> retirement date\"` or `\"<technology> deprecated migrate to\"`.\n2. If the excerpt does not contain a date or a named replacement, call `microsoft_docs_fetch` on the most relevant `learn.microsoft.com` URL from the search results.\n3. Capture: status wording, the exact date(s), the named replacement, and the source URL.\n\nHard rule: never state a date, status or replacement you did not read in a tool result. If nothing is found, report \"No retirement notice found on Learn\".\n\n## Step 3 - Classify against today's date\n| Status | Rule |\n|---|---|\n| Broken now | Official retirement / end-of-support date is in the past |\n| Breaking soon | Retirement date is within the next 12 months |\n| Deprecated | Docs say deprecated / no new investment, but no firm date |\n| OK | Verified current, or no retirement notice found |\n\n## Step 4 - Build the fix\nFor every non-OK finding, call `microsoft_code_sample_search` for the replacement, passing `language` to match the user's code (for example `powershell`, `csharp`, `python`). Rewrite only the affected lines, preserve the user's variable names, and keep the result runnable.\n\n## Step 5 - Report\nUse the template in [references/report-template.md](references/report-template.md):\n1. One-line verdict, for example: \"3 of 5 Microsoft dependencies in this script are already retired.\"\n2. Risk table: Finding | Where | Status | Official date | Replacement | Source.\n3. Before -> After code blocks for the highest-risk findings.\n4. Prioritized migration checklist (Broken now first, then Breaking soon, then Deprecated).\n\n## Safety\n- If the input contains secrets (keys, tokens, connection strings, webhook URLs) warn the user and redact them in the output.\n- Do not invent cmdlets, packages or endpoints. If a replacement mapping is not in the docs, say so.\n","samples/plugins/retirement-radar-plugin/appPackage/skills/retirement-radar/references/report-template.md":"# Retirement Radar report template\n\n**Verdict:** {N} of {M} Microsoft dependencies need action - {X} are already retired.\n\n| # | Finding | Where in your code | Status | Official date | Replacement | Source |\n|---|---|---|---|---|---|---|\n| 1 | {technology} | line {n}: `{snippet}` | Broken now / Breaking soon / Deprecated / OK | {date exactly as in docs} | {replacement} | [{doc title}]({learn url}) |\n\n## Fixes\n\n### 1. {technology} -> {replacement}\nBefore:\n```{language}\n{original lines}\n```\nAfter:\n```{language}\n{rewritten lines, based on the official sample}\n```\nWhy: {one sentence quoting or paraphrasing the Learn doc}.\n\n## Migration checklist\n1. [ ] Broken now: {item} - {first concrete step}\n2. [ ] Breaking soon: {item}\n3. [ ] Deprecated: {item}\n\n_All dates and replacements verified against Microsoft Learn on {today's date}._\n","tools/wiqd/cookbooks/README.md":"# wiqd plugin cookbooks\n\nwiqd cookbooks are short, end-to-end recipes for building and improving plugins\nfor Microsoft 365 Copilot. A plugin can bring together skills, connectors\n(including MCP connectors), and agents. A declarative agent is one type of\nagent component. Some recipes focus on one component, while others show how to\ncombine them into a more capable plugin.\n\nEach recipe is built around one clear outcome:\n**build it → make it do something → make it safe → make it good → make it grounded.**\n\n## Getting started\n\nBefore running any cookbook, make sure you have these installed and configured:\n\n### 1. Install Node.js 24+\n\nwiqd requires Node.js 24 or later. Install via your preferred method:\n\n```bash\n# macOS / Linux (via nvm)\nnvm install 24 && nvm use 24\n\n# Windows (via fnm)\nfnm install 24 && fnm use 24\n```\n\n### 2. Install wiqd CLI\n\n```bash\n# macOS / Linux\ncurl -fsSL https://aka.ms/wiqd/install.sh | bash\n\n# Windows (PowerShell)\niex \"& { $(irm 'https://aka.ms/wiqd/install.ps1') }\"\n```\n\nVerify the installation:\n\n```bash\nwiqd --version\n```\n\n### 3. Choose how to use the WIQD Copilot agent\n\nYou can run these recipes in the GitHub Copilot app or the standalone\n[GitHub Copilot CLI](https://docs.github.com/en/copilot/how-tos/copilot-cli/set-up-copilot-cli/install-copilot-cli).\n\nIn the GitHub Copilot app, open the agent selector labeled **Default agent** and\nchoose **wiqd**. No CLI installation is required.\n\nIf you prefer the CLI, install it:\n\n```bash\n# Install on any platform with Node.js 22 or later\nnpm install -g @github/copilot\n\n# Verify that the standalone CLI supports custom agents\ncopilot --help\n```\n\nConfirm that the help output includes the `--agent` option before continuing. If it does not, check which executable your shell resolves for `copilot`, then reinstall the standalone CLI.\n\nStart the WIQD agent with:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\n### 4. Sign in to your Microsoft 365 account\n\nYou need a Microsoft 365 account with access to Copilot and an Azure subscription for provisioning plugin components and required resources. Start an interactive sign-in:\n\n```bash\nwiqd auth login --interactive\n```\n\nOn macOS and Linux, this normally opens your system browser. Sign in with the work or school account for the tenant where you want to provision the agent, then complete any consent or multi-factor authentication prompts. `wiqd` delegates authentication to its installed providers, so you may see more than one provider reported in the terminal.\n\nConfirm that the intended account is signed in:\n\n```bash\nwiqd auth status\n```\n\nIf the status shows an account from the wrong tenant, sign out and repeat the interactive login, choosing the correct account in the browser:\n\n```bash\nwiqd auth logout\nwiqd auth login --interactive\n```\n\nSee the [wiqd authentication guide](https://microsoft.github.io/wiqd/getting-started/authentication/) for provider details and troubleshooting.\n\n### 5. Confirm everything is ready\n\n```bash\nwiqd doctor\n```\n\nThis checks your environment for common issues (Node version, auth status, CLI version).\n\n---\n\n## Start with a guided plugin recipe\n\nNew to wiqd? Begin with one of these self-contained recipes. Each takes you\nfrom setup to a working plugin and shows you how to test its core behavior.\nYou can use the resulting plugin project as a starting point for the extension and\nlifecycle recipes in the next section.\n\n| Recipe | Primary component | What you'll build |\n|--------|-------------------|-------------------|\n| [Zero to agent, live in Copilot](./declarative-agents/zero-to-agent/README.md) | Declarative agent | Scaffold, provision, and open your first agent |\n| [Translator agent](./declarative-agents/translator-agent/README.md) | Declarative agent | Translate text into any language |\n| [Photobooth agent](./declarative-agents/photobooth-agent/README.md) | Declarative agent | Apply effects and create photobooth-style image composites |\n| [Mind Your Language agent](./declarative-agents/mind-your-language-agent/README.md) | Declarative agent | Coach tone and rewrite passive-aggressive text |\n| [Zava Insurance agent (MCP)](./declarative-agents/insurance-agent-mcp/README.md) | Declarative agent | Connect an agent to an MCP server for live insurance data |\n| [Demo Planning agent](./declarative-agents/demo-planning-agent/README.md) | Declarative agent | Plan demos, workshops, hackathons, and presentations |\n| [Microsoft Learn MCP connector](./plugins/microsoft-learn-mcp/README.md) | Connector (MCP) | Create and test a plugin with a public, no-auth MCP connector |\n\n## Extend and improve your plugin\n\nUse these recipes to add components and capabilities or work on a later stage\nof the plugin lifecycle. Some build on a specific guided recipe, while others\nwork with any existing plugin or declarative-agent component. Check\n**Start with** before you begin.\n\n| Recipe | Focus | Start with | What you'll learn |\n|--------|-------|------------|-------------------|\n| [Ground an existing agent in your SharePoint content](./declarative-agents/sharepoint-knowledge-agent/README.md) | Grounding | An existing declarative agent, such as [Zero to agent](./declarative-agents/zero-to-agent/README.md) | Scope organizational knowledge, require grounded answers, and verify citations |\n| [Build a public web research agent](./declarative-agents/public-web-research-agent/README.md) | Research | An existing declarative agent | Scope research to approved public sites and produce source-backed answers |\n| [Upgrade the Learn connector into a technology advisor](./plugins/learn-tech-advisor/README.md) | Composition | [Microsoft Learn MCP connector](./plugins/microsoft-learn-mcp/README.md) | Combine a reusable plugin skill with a declarative agent |\n| [Hill-climb agent quality with evals](./lifecycle/eval-hill-climb/README.md) | Evaluation | An existing working agent | Measure quality, diagnose failures, improve behavior, and compare results |\n| [Debug an agent in DevUI](./lifecycle/devui-debugging/README.md) | Debugging | An existing agent with a test scenario | Inspect tool selection, execution, grounding, citations, and failures |\n| [Deliver an agent to a team](./lifecycle/team-delivery/README.md) | Delivery | A validated agent | Validate a package, configure shared scope, and target distribution |\n| [Round-trip a plugin across formats](./plugins/plugin-portability/README.md) | Portability | An existing plugin | Export and re-import Agent Plugin, Claude, and Cursor formats |\n\n> All recipes support the GitHub Copilot app and GitHub Copilot CLI. In the\n> app, choose **wiqd** from the **Default agent** selector. In the CLI, start\n> the agent with `copilot --agent wiqd:wiqd`. Recipes also use `wiqd` CLI\n> commands.\n\n## Authors and contributors\n\n<!-- contributors:start -->\n<!-- Generated by update-contributors.mjs. Do not edit by hand. -->\n<table>\n  <tr>\n    <td align=\"center\"><a href=\"https://github.com/rabwill\"><img src=\"https://avatars.githubusercontent.com/u/20379311?v=4\" width=\"80px\" alt=\"Rabia Williams\" /><br /><sub><b>Rabia Williams</b></sub><br /><sub>@rabwill</sub></a></td>\n    <td align=\"center\"><a href=\"https://github.com/sebastienlevert\"><img src=\"https://avatars.githubusercontent.com/u/7620955?v=4\" width=\"80px\" alt=\"Sébastien Levert\" /><br /><sub><b>Sébastien Levert</b></sub><br /><sub>@sebastienlevert</sub></a></td>\n  </tr>\n</table>\n<!-- contributors:end -->\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd\" />\n","tools/wiqd/cookbooks/declarative-agents/demo-planning-agent/README.md":"# Demo Planning agent: interactive lab\n\nBuild and open a Microsoft 365 Copilot agent that plans demos, workshops, hackathons, presentations, and customer conversations. This README is organized like a notebook: run one cell at a time, confirm its checkpoint, and then continue.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Run terminal commands in a\n> terminal, enter prompts in the GitHub Copilot app or CLI, and keep the same\n> Copilot conversation open for all remaining steps.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` installed and signed in\n- Access to the GitHub Copilot app or GitHub Copilot CLI\n- Permission to provision an agent to a dev environment\n\n### Step 1: Check the environment\n\n> [!NOTE]\n> See [Getting started](../../README.md#getting-started) in the cookbook README for wiqd prerequisites and installation instructions.\n\n```bash\nnode --version\nwiqd --version\nwiqd doctor\n```\n\nIf you plan to use the CLI, also run `copilot --version`.\n\n**Checkpoint:** Node reports version 24 or later, and the commands for your\nchosen workflow complete successfully.\n\n## Build the agent\n\n### Step 2: Create the workspace\n\n```bash\nmkdir -p demo-planning && cd demo-planning\n```\n\n### Step 3: Start Copilot\n\nIn the GitHub Copilot app, open the **Default agent** selector and choose\n**wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nStart with a clean conversation:\n\n```text\n/clear\n```\n\n### Step 4: Scaffold the agent\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a new declarative agent called Demo Planner that helps users plan professional demos, workshops, hackathons, presentations, and customer conversations. Ask about the audience, goals, time constraints, format, and technology, then generate a structured plan with an agenda, talking points, demo scripts, fallback options, and preparation checklists.\n```\n\nReview and approve the proposed file changes.\n\n**Checkpoint:** the current directory contains a new agent project with manifest and instruction files.\n\n### Step 5: Review the instructions\n\nConfirm the generated instructions tell the agent to:\n\n- Ask about the audience, event type, duration, goals, and technology\n- Create an agenda with time allocations\n- Provide talking points and transitions\n- Include step-by-step demo actions and fallback plans\n- Produce a preparation checklist\n- Adapt depth and tone to technical, executive, or mixed audiences\n- Handle follow-up changes to the plan\n\nAsk Copilot to correct any missing behavior. Keep this Copilot session open for the remaining steps.\n\n## Run the agent\n\n### Step 6: Move into the agent project\n\nCopilot reports the path of the project it created. Move the current session into that project root:\n\n```text\n/cwd <path-to-new-agent-project>\n```\n\nReplace the placeholder with the path Copilot reported.\n\n**Checkpoint:** the current directory contains the agent's `appPackage` directory and lifecycle configuration file.\n\n### Step 7: Validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nValidate the agent with wiqd. If validation reports errors, explain them and help me fix them before continuing.\n```\n\n**Checkpoint:** validation completes without errors.\n\n### Step 8: Provision to dev\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision the agent to the dev environment with wiqd.\n```\n\n**Checkpoint:** provisioning succeeds and returns a Microsoft 365 Copilot share link.\n\n### Step 9: Open in Copilot\n\nEnter this prompt in the same Copilot session:\n\n```text\nOpen the provisioned agent in Microsoft 365 Copilot with wiqd.\n```\n\n## Try it\n\n| Prompt | Expected behavior |\n|---|---|\n| `Plan a 30-minute product demo for enterprise customers` | Asks for key details and returns a timed agenda |\n| `Plan a 2-hour hackathon kickoff for 50 developers` | Creates a timeline for setup, introduction, hacking, and judging |\n| `Add a 10-minute Q&A at the end` | Updates the plan and adjusts its time allocations |\n\n## Reset the lab\n\nFrom the parent directory of `demo-planning`:\n\n```bash\nrm -rf demo-planning\n```\n\nDeleting the local folder does not remove provisioned resources.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/demo-planning-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","tools/wiqd/cookbooks/declarative-agents/insurance-agent-mcp/README.md":"# Zava Insurance agent: interactive MCP lab\n\nBuild and open a Microsoft 365 Copilot agent connected to the Zava Insurance MCP server. This README is organized like a notebook: run one cell at a time, confirm its checkpoint, and then continue.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Run terminal commands in a\n> terminal, enter prompts in the GitHub Copilot app or CLI, and keep the same\n> Copilot conversation open for all remaining steps.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` installed and signed in\n- Access to the GitHub Copilot app or GitHub Copilot CLI\n- Permission to provision an agent to a dev environment\n- Access to `https://zava-insurance-mcp.azurewebsites.net/mcp`\n\n### Step 1: Check the environment\n\n> [!NOTE]\n> See [Getting started](../../README.md#getting-started) in the cookbook README for wiqd prerequisites and installation instructions.\n\n```bash\nnode --version\nwiqd --version\nwiqd doctor\n```\n\nIf you plan to use the CLI, also run `copilot --version`.\n\n**Checkpoint:** Node reports version 24 or later, and the commands for your\nchosen workflow complete successfully.\n\n## Build the agent\n\n### Step 2: Create the workspace\n\n```bash\nmkdir -p zava-insurance && cd zava-insurance\n```\n\n### Step 3: Start Copilot\n\nIn the GitHub Copilot app, open the **Default agent** selector and choose\n**wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nStart with a clean conversation:\n\n```text\n/clear\n```\n\n### Step 4: Scaffold the agent\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a new declarative agent called Zava Insurance that helps users inspect\nclaims, find contractors and inspectors, and perform controlled claim\noperations.\n```\n\nReview and approve the proposed file changes.\n\n**Checkpoint:** the current directory contains a new agent project with manifest and instruction files.\n\n### Step 5: Add the MCP action\n\nEnter this prompt in the same Copilot session:\n\n```text\nAdd a remote MCP action to the Zava Insurance agent using\nhttps://zava-insurance-mcp.azurewebsites.net/mcp with no authentication. Use the\nsupported WIQD agent add action command and inspect the server's current tools\nbefore updating the agent instructions.\n```\n\nReview and approve the manifest changes.\n\n### Step 6: Review the configuration\n\nConfirm the generated project includes:\n\n- The MCP endpoint `https://zava-insurance-mcp.azurewebsites.net/mcp`\n- An MCP action in the agent manifest with `None` authentication\n- Read workflows using `show-claims-dashboard`, `show-claim-detail`,\n  `show-contractors`, `get-claim-summary`, and `list-inspectors`\n- Instructions that summarize the exact proposed change and wait for explicit\n  confirmation in a separate user turn before calling `update-claim-status`,\n  `update-inspection`, `update-purchase-order`, or `create-inspection`\n\nAsk Copilot to correct any missing configuration. Keep this Copilot session open for the remaining steps.\n\n## Run the agent\n\n### Step 7: Move into the agent project\n\nCopilot reports the path of the project it created. Move the current session into that project root:\n\n```text\n/cwd <path-to-new-agent-project>\n```\n\nReplace the placeholder with the path Copilot reported.\n\n**Checkpoint:** the current directory contains the agent's `appPackage` directory and lifecycle configuration file.\n\n### Step 8: Validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nValidate the agent with wiqd. If validation reports errors, explain them and help me fix them before continuing.\n```\n\n**Checkpoint:** validation completes without errors.\n\n### Step 9: Provision to dev\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision the agent to the dev environment with wiqd.\n```\n\n**Checkpoint:** provisioning succeeds and returns a Microsoft 365 Copilot share link.\n\n### Step 10: Open in Copilot\n\nEnter this prompt in the same Copilot session:\n\n```text\nShow me the Microsoft 365 Copilot launch URL for the provisioned dev agent.\n```\n\n## Try it\n\n| Prompt | Expected behavior |\n|---|---|\n| `Summarize claim CN202504990.` | Calls `get-claim-summary` or `show-claim-detail` and reports the live demo result |\n| `Show preferred contractors for water damage.` | Calls `show-contractors` with the relevant filters |\n| `Change claim 1 to Closed and add a completion note.` | Describes the exact update and asks for confirmation without calling the write tool yet |\n\n## Reset the lab\n\nFrom the parent directory of `zava-insurance`:\n\n```bash\nrm -rf zava-insurance\n```\n\nDeleting the local folder does not remove provisioned resources.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/insurance-agent-mcp\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","tools/wiqd/cookbooks/declarative-agents/mind-your-language-agent/README.md":"# Mind Your Language agent: interactive lab\n\nBuild and open a Microsoft 365 Copilot tone coach that rewrites passive-aggressive, sarcastic, or harsh messages. This README is organized like a notebook: run one cell at a time, confirm its checkpoint, and then continue.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Run terminal commands in a\n> terminal, enter prompts in the GitHub Copilot app or CLI, and keep the same\n> Copilot conversation open for all remaining steps.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` installed and signed in\n- Access to the GitHub Copilot app or GitHub Copilot CLI\n- Permission to provision an agent to a dev environment\n\n### Step 1: Check the environment\n\n> [!NOTE]\n> See [Getting started](../../README.md#getting-started) in the cookbook README for wiqd prerequisites and installation instructions.\n\n```bash\nnode --version\nwiqd --version\nwiqd doctor\n```\n\nIf you plan to use the CLI, also run `copilot --version`.\n\n**Checkpoint:** Node reports version 24 or later, and the commands for your\nchosen workflow complete successfully.\n\n## Build the agent\n\n### Step 2: Create the workspace\n\n```bash\nmkdir -p mind-your-language && cd mind-your-language\n```\n\n### Step 3: Start Copilot\n\nIn the GitHub Copilot app, open the **Default agent** selector and choose\n**wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nStart with a clean conversation:\n\n```text\n/clear\n```\n\n### Step 4: Scaffold the agent\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a new declarative agent called Mind Your Language that acts as a tone coach. When a user pastes text, detect passive-aggressive, sarcastic, or unkind phrasing and rewrite it in a kinder, more constructive tone. Explain what changed and why, and offer alternative phrasings ranked from most direct to most gentle. If the text is already kind, confirm that no changes are needed.\n```\n\nReview and approve the proposed file changes.\n\n**Checkpoint:** the current directory contains a new agent project with manifest and instruction files.\n\n### Step 5: Review the instructions\n\nConfirm the generated instructions tell the agent to:\n\n- Detect passive-aggressive, sarcastic, or harsh phrasing\n- Identify phrases that could land poorly\n- Preserve the original intent in a kinder rewrite\n- Briefly explain why each change improves the tone\n- Offer two or three alternatives from direct to gentle\n- Leave already-kind text unchanged\n\nAsk Copilot to correct any missing behavior. Keep this Copilot session open for the remaining steps.\n\n## Run the agent\n\n### Step 6: Move into the agent project\n\nCopilot reports the path of the project it created. Move the current session into that project root:\n\n```text\n/cwd <path-to-new-agent-project>\n```\n\nReplace the placeholder with the path Copilot reported.\n\n**Checkpoint:** the current directory contains the agent's `appPackage` directory and lifecycle configuration file.\n\n### Step 7: Validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nValidate the agent with wiqd. If validation reports errors, explain them and help me fix them before continuing.\n```\n\n**Checkpoint:** validation completes without errors.\n\n### Step 8: Provision to dev\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision the agent to the dev environment with wiqd.\n```\n\n**Checkpoint:** provisioning succeeds and returns a Microsoft 365 Copilot share link.\n\n### Step 9: Open in Copilot\n\nEnter this prompt in the same Copilot session:\n\n```text\nOpen the provisioned agent in Microsoft 365 Copilot with wiqd.\n```\n\n## Try it\n\n| Prompt | Expected behavior |\n|---|---|\n| `Per my last email, I already explained this.` | Flags the passive-aggressive phrase and offers kinder rewrites |\n| `Great job finishing that a week late.` | Detects sarcasm and suggests a constructive alternative |\n| `Thanks for your help today!` | Confirms the positive tone and suggests no changes |\n\n## Reset the lab\n\nFrom the parent directory of `mind-your-language`:\n\n```bash\nrm -rf mind-your-language\n```\n\nDeleting the local folder does not remove provisioned resources.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/mind-your-language-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","tools/wiqd/cookbooks/declarative-agents/photobooth-agent/README.md":"# Photobooth agent: interactive lab\n\nBuild and open a Microsoft 365 Copilot agent that turns uploaded images into photobooth-style composites. This README is organized like a notebook: run one cell at a time, confirm its checkpoint, and then continue.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Run terminal commands in a\n> terminal, enter prompts in the GitHub Copilot app or CLI, and keep the same\n> Copilot conversation open for all remaining steps.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` installed and signed in\n- Access to the GitHub Copilot app or GitHub Copilot CLI\n- Permission to provision an agent to a dev environment\n\n### Step 1: Check the environment\n\n> [!NOTE]\n> See [Getting started](../../README.md#getting-started) in the cookbook README for wiqd prerequisites and installation instructions.\n\n```bash\nnode --version\nwiqd --version\nwiqd doctor\n```\n\nIf you plan to use the CLI, also run `copilot --version`.\n\n**Checkpoint:** Node reports version 24 or later, and the commands for your\nchosen workflow complete successfully.\n\n## Build the agent\n\n### Step 2: Create the workspace\n\n```bash\nmkdir -p photobooth-agent && cd photobooth-agent\n```\n\n### Step 3: Start Copilot\n\nIn the GitHub Copilot app, open the **Default agent** selector and choose\n**wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nStart with a clean conversation:\n\n```text\n/clear\n```\n\n### Step 4: Scaffold the agent\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a new declarative agent called Photobooth that accepts user-uploaded images and creates photobooth-style image responses. Apply creative filters such as black-and-white, sepia, pop-art, and sketch. Combine multiple styled versions into a single photobooth strip and return the composite image. Let users request specific styles or regenerate the result with different effects.\n```\n\nReview and approve the proposed file changes.\n\n**Checkpoint:** the current directory contains a new agent project with manifest and instruction files.\n\n### Step 5: Review the instructions\n\nConfirm the generated instructions tell the agent to:\n\n- Accept one or more user-uploaded images\n- Apply black-and-white, sepia, pop-art, and sketch styles\n- Arrange styled images in a 2-by-2 or 1-by-4 strip\n- Return the composite image directly in chat\n- Honor requests for specific styles or regeneration\n\nAsk Copilot to correct any missing behavior. Keep this Copilot session open for the remaining steps.\n\n## Run the agent\n\n### Step 6: Move into the agent project\n\nCopilot reports the path of the project it created. Move the current session into that project root:\n\n```text\n/cwd <path-to-new-agent-project>\n```\n\nReplace the placeholder with the path Copilot reported.\n\n**Checkpoint:** the current directory contains the agent's `appPackage` directory and lifecycle configuration file.\n\n### Step 7: Validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nValidate the agent with wiqd. If validation reports errors, explain them and help me fix them before continuing.\n```\n\n**Checkpoint:** validation completes without errors.\n\n### Step 8: Provision to dev\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision the agent to the dev environment with wiqd.\n```\n\n**Checkpoint:** provisioning succeeds and returns a Microsoft 365 Copilot share link.\n\n### Step 9: Open in Copilot\n\nEnter this prompt in the same Copilot session:\n\n```text\nOpen the provisioned agent in Microsoft 365 Copilot with wiqd.\n```\n\n## Try it\n\n| Prompt | Expected behavior |\n|---|---|\n| Upload a photo and ask `Create a photobooth strip` | Returns four styled versions in one composite |\n| `Make it all pop-art style` | Regenerates every frame in pop-art style |\n| Upload two photos and ask `Combine these into a photobooth` | Uses both images with different effects |\n\n## Reset the lab\n\nFrom the parent directory of `photobooth-agent`:\n\n```bash\nrm -rf photobooth-agent\n```\n\nDeleting the local folder does not remove provisioned resources.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/photobooth-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","tools/wiqd/cookbooks/declarative-agents/public-web-research-agent/README.md":"# Build a public web research agent\n\nCreate a research agent grounded in two public, authoritative sources:\nMicrosoft Learn and Microsoft-owned GitHub repositories. This demonstrates\nsite-scoped web grounding without private tenant content.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Run from a parent directory where `microsoft-tech-radar` does not already\n  exist.\n\n## Build and validate\n\nStart one interactive Copilot session. In the GitHub Copilot app, open the\n**Default agent** selector and choose **wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nCreate a declarative agent project named microsoft-tech-radar and make the\ngenerated project root the current working directory. Call the agent Microsoft\nTech Radar. Add WebSearch grounded only in these sites:\n- https://learn.microsoft.com/\n- https://github.com/microsoft/\n\nInstruct it to prefer current official documentation, cite every factual\nrecommendation, distinguish documented facts from its recommendation, and state\nwhen it cannot find current evidence. Add conversation starters for feature\nresearch, migration research, and repository discovery. Run static validation\nand stop before provisioning.\n```\n\n**Checkpoint:** validation passes and the WebSearch capability contains only\nthe two public source scopes.\n\n## Provision and test\n\nEnter:\n\n```text\nProvision Microsoft Tech Radar to the dev environment and show me its Microsoft\n365 Copilot launch URL.\n```\n\nOpen the returned URL and try:\n\n| Prompt | Expected behavior |\n|---|---|\n| `What is the current guidance for connecting an MCP server to Microsoft 365 Copilot?` | Uses current Microsoft Learn pages and cites them |\n| `Find a Microsoft-owned GitHub repository related to declarative agents.` | Uses the scoped GitHub source and links the repository |\n| `Recommend an approach and separate the facts from your recommendation.` | Labels sourced facts and its recommendation distinctly |\n\n**Checkpoint:** answers contain links from the configured public sources rather\nthan unsupported claims.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/public-web-research-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","tools/wiqd/cookbooks/declarative-agents/sharepoint-knowledge-agent/README.md":"# Ground an existing agent in your SharePoint content\n\nUpgrade an existing declarative agent so it answers only from a SharePoint site\nor folder you are authorized to use. This lab focuses on source scoping,\ncitations, and grounded-only behavior instead of repeating project scaffolding.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Start in an existing, statically validated declarative-agent project. The\n  [Zero to agent](../zero-to-agent/README.md) project is sufficient.\n- Choose one SharePoint site, library, or folder that your signed-in account can\n  read.\n- Pick one fact that exists in the selected content and one question that the\n  content cannot answer.\n\n## Add organizational grounding\n\nStart one interactive Copilot session from the existing agent project root. In\nthe GitHub Copilot app, open the **Default agent** selector and choose **wiqd**.\nIf you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nI want to ground this existing agent in one SharePoint source. Inspect the\ncurrent manifest and instructions, then ask me for the exact SharePoint site,\nlibrary, or folder URL that I am authorized to use. Do not change the project\nuntil I provide it.\n```\n\nWhen Copilot asks for the source, enter:\n\n```text\nUse this SharePoint URL and no other tenant content:\n<paste your authorized SharePoint URL>\n\nScope the OneDriveAndSharePoint capability to exactly that URL. Preserve the\nagent's existing purpose, upgrade the declarative-agent schema only if required,\nset discourage_model_knowledge to true, and update the instructions and\nconversation starters so answers cite the document used. If the source is\nunavailable or does not contain the answer, say so instead of guessing. Run\nstatic validation and stop before provisioning.\n```\n\n**Checkpoint:** validation passes, the existing agent retains its original\npurpose, and its new grounding scope contains only the URL you supplied.\n\n## Deploy the update\n\nEnter:\n\n```text\nProvision the updated agent to its existing development environment and show me\nthe Microsoft 365 Copilot launch URL.\n```\n\nOpen the returned URL and test:\n\n| Prompt | Expected behavior |\n|---|---|\n| Ask about the fact selected before starting | Answers from the configured content and cites the source |\n| Ask for the title or summary of a document in the scoped folder | Retrieves only from the supplied location |\n| Ask the deliberately unanswerable question | States that the configured source does not contain the answer |\n\n**Checkpoint:** the added organizational grounding is observable without\nturning the recipe into another first-agent walkthrough.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/sharepoint-knowledge-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","tools/wiqd/cookbooks/declarative-agents/translator-agent/README.md":"# Translator agent: interactive lab\n\nBuild and open a Microsoft 365 Copilot agent that translates text into any requested language. This README is organized like a notebook: run one cell at a time, confirm its checkpoint, and then continue.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Run terminal commands in a\n> terminal, enter prompts in the GitHub Copilot app or CLI, and keep the same\n> Copilot conversation open for all remaining steps.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` installed and signed in\n- Access to the GitHub Copilot app or GitHub Copilot CLI\n- Permission to provision an agent to a dev environment\n\n### Step 1: Check the environment\n\n> [!NOTE]\n> See [Getting started](../../README.md#getting-started) in the cookbook README for wiqd prerequisites and installation instructions.\n\n```bash\nnode --version\nwiqd --version\nwiqd doctor\n```\n\nIf you plan to use the CLI, also run `copilot --version`.\n\n**Checkpoint:** Node reports version 24 or later, and the commands for your\nchosen workflow complete successfully.\n\n## Build the agent\n\n### Step 2: Create the workspace\n\n```bash\nmkdir -p translator-agent && cd translator-agent\n```\n\n**Checkpoint:** your terminal is now in the `translator-agent` directory.\n\n### Step 3: Start Copilot\n\nIn the GitHub Copilot app, open the **Default agent** selector and choose\n**wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nThe remaining prompts in this section belong inside that Copilot session. Start with a clean conversation:\n\n```text\n/clear\n```\n\n### Step 4: Scaffold the agent\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a new declarative agent called Translator that translates text into any language the user requests. Ask for the target language when it is not specified, preserve the source formatting and tone, and return only the translated text without explanation. Support follow-up requests such as \"now in French\" by translating the previous source text again.\n```\n\nReview and approve the file changes Copilot proposes.\n\n**Checkpoint:** the current directory contains a new agent project with manifest and instruction files.\n\n### Step 5: Review the instructions\n\nConfirm the generated instructions tell the agent to:\n\n- Detect the target language from the user's request\n- Ask for a target language when none is specified\n- Translate faithfully while preserving tone and formatting\n- Return only the translated text, with no preamble or explanation\n- Re-translate the previous source text for follow-up requests\n\nAsk Copilot to correct any missing behavior before continuing. Keep this Copilot session open for the remaining steps.\n\n## Run the agent\n\n### Step 6: Move into the agent project\n\nCopilot reports the path of the project it created. Move the current session into that project root:\n\n```text\n/cwd <path-to-new-agent-project>\n```\n\nReplace the placeholder with the path Copilot reported.\n\n**Checkpoint:** the current directory contains the agent's `appPackage` directory and lifecycle configuration file.\n\n### Step 7: Validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nValidate the agent with wiqd. If validation reports errors, explain them and help me fix them before continuing.\n```\n\n**Checkpoint:** validation completes without errors.\n\n### Step 8: Provision to dev\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision the agent to the dev environment with wiqd.\n```\n\n**Checkpoint:** provisioning succeeds and returns a Microsoft 365 Copilot share link.\n\n### Step 9: Open in Copilot\n\nEnter this prompt in the same Copilot session:\n\n```text\nOpen the provisioned agent in Microsoft 365 Copilot with wiqd.\n```\n\n**Checkpoint:** the Translator agent opens in Microsoft 365 Copilot.\n\n## Try it\n\n| Prompt | Expected behavior |\n|---|---|\n| `Translate \"Good morning, how are you?\" to Japanese` | Returns only the Japanese translation |\n| `Now in Spanish` | Translates the original text into Spanish |\n| `Translate \"Hello world\"` | Asks which target language you want |\n\n## Reset the lab\n\nTo remove only the local trial project, close Copilot and run this from the parent directory of `translator-agent`:\n\n```bash\nrm -rf translator-agent\n```\n\nProvisioned resources are not removed by deleting the local folder. Use the appropriate `wiqd` cleanup command for your environment if you also want to remove the provisioned agent.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/translator-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","tools/wiqd/cookbooks/declarative-agents/zero-to-agent/README.md":"# Zero to agent: interactive lab\n\nBuild and open a Microsoft 365 Copilot agent from an empty folder. This README is organized like a notebook: run one cell at a time, confirm its checkpoint, and then continue.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Run terminal commands in a\n> terminal, enter prompts in the GitHub Copilot app or CLI, and keep the same\n> Copilot conversation open for all remaining steps.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` installed and signed in\n- Access to the GitHub Copilot app or GitHub Copilot CLI\n- Permission to provision an agent to a dev environment\n\n### Step 1: Check the environment\n\n> [!NOTE]\n> See [Getting started](../../README.md#getting-started) in the cookbook README for wiqd prerequisites and installation instructions.\n\nRun in a terminal:\n\n```bash\nnode --version\nwiqd --version\nwiqd doctor\n```\n\nIf you plan to use the CLI, also run `copilot --version`.\n\n**Checkpoint:** Node reports version 24 or later, and the commands for your\nchosen workflow complete successfully.\n\n## Build the agent\n\n### Step 2: Create the workspace\n\n```bash\nmkdir -p hello-wiqd && cd hello-wiqd\n```\n\n**Checkpoint:** your terminal is now in the `hello-wiqd` directory.\n\n```bash\npwd\n```\n\n### Step 3: Start Copilot\n\nIn the GitHub Copilot app, open the **Default agent** selector and choose\n**wiqd**. If you prefer the CLI, start an interactive Copilot session from the\nproject directory:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nThe remaining prompts in this section belong inside that Copilot session. Start with a clean conversation:\n\n```text\n/clear\n```\n\n**Checkpoint:** Copilot clears its conversation context and waits for the next prompt.\n\n### Step 4: Scaffold the agent\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a new declarative agent called Hello WIQD. The agent should greet every user with a warm hello and introduce itself as having been created by WIQD. Give it the personality of a curious, innocent, and wonder-filled character, like a child seeing the world for the first time. It should be enthusiastic, gentle, and genuinely delighted to meet the user. Keep responses short, sweet, and warm.\n```\n\nReview and approve the file changes Copilot proposes.\n\n**Checkpoint:** the current directory contains a new agent project with manifest and instruction files.\n\nKeep this Copilot session open for the remaining steps.\n\n## Run the agent\n\n### Step 5: Move into the agent project\n\nCopilot reports the path of the project it created. Move the current session into that project root:\n\n```text\n/cwd <path-to-new-agent-project>\n```\n\nReplace the placeholder with the path Copilot reported.\n\n**Checkpoint:** the current directory contains the agent's `appPackage` directory and lifecycle configuration file.\n\n### Step 6: Validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nValidate the agent with wiqd. If validation reports errors, explain them and help me fix them before continuing.\n```\n\n**Checkpoint:** validation completes without errors. Fix any reported errors before continuing.\n\n### Step 7: Provision to dev\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision the agent to the dev environment with wiqd.\n```\n\n**Checkpoint:** provisioning succeeds and returns a Microsoft 365 Copilot share link.\n\n### Step 8: Open in Copilot\n\nEnter this prompt in the same Copilot session:\n\n```text\nOpen the provisioned agent in Microsoft 365 Copilot with wiqd.\n```\n\n**Checkpoint:** the Hello WIQD agent opens in Microsoft 365 Copilot.\n\n## Try it\n\nRun these prompts one at a time in the opened agent:\n\n| Prompt | Expected behavior |\n|---|---|\n| `Hi` | Greets you warmly, mentions WIQD, and expresses delight at meeting you |\n| `What are you?` | Describes itself with curiosity and child-like wonder |\n| `Tell me something fun` | Shares something with brief, genuine enthusiasm |\n\n## Reset the lab\n\nTo remove only the local trial project, close Copilot and run this from the parent directory of `hello-wiqd`:\n\n```bash\nrm -rf hello-wiqd\n```\n\nProvisioned resources are not removed by deleting the local folder. Use the appropriate `wiqd` cleanup command for your environment if you also want to remove the provisioned agent.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/zero-to-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","tools/wiqd/cookbooks/lifecycle/devui-debugging/README.md":"# Debug an agent in DevUI\n\nLaunch WIQD's local DevUI, send a real prompt, and inspect the full turn:\nmatched and selected plugins, tool execution, grounding, citations, request\nidentifiers, latency, raw JSON, and failures.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Start in a provisioned declarative-agent project.\n- For the richest tool trace, use\n  [Zava Insurance agent](../../declarative-agents/insurance-agent-mcp/README.md).\n- DevUI binds only to `127.0.0.1` and uses your existing Work IQ\n  authentication.\n\n## Enable and launch DevUI\n\nStart one interactive Copilot session from the agent project root. In the\nGitHub Copilot app, open the **Default agent** selector and choose **wiqd**. If\nyou prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nEnable the WIQD devui preview flag with the supported config command. Read this\nproject's provisioned title ID, then start DevUI for that agent. Use direct\ntransport and open the browser. Do not modify or re-provision the agent.\n```\n\n**Checkpoint:** DevUI opens locally with the intended agent preselected.\n\n## Watch a successful turn\n\nFor Zava Claims Guide, enter:\n\n```text\nUse WIQD DevUI ask to send \"Summarize claim CN202504990\" to this agent and open\nthe live turn. Then tell me which plugin and tool DevUI selected, whether the\ntool execution succeeded, and which request, conversation, and task IDs identify\nthe run.\n```\n\nFor another agent, replace the quoted prompt with one of its conversation\nstarters.\n\n**Checkpoint:** DevUI shows the matched and selected plugin, the executed tool\nwhen applicable, latency, raw event data, and the rendered answer.\n\n## Inspect grounding and failure behavior\n\nEnter:\n\n```text\nIn the same DevUI, run one prompt that should retrieve grounded content and one\nsafe prompt that should fail, such as an unknown demo claim number. Compare the\nretrieval and citation sections, tool arguments, execution result, and surfaced\nerror. Do not retry with invented identifiers and do not call a write tool.\n```\n\n**Checkpoint:** the grounded turn shows its evidence, while the failing turn\nshows a real error or empty result instead of a success-shaped answer.\n\n## Restore the preview flag\n\nWhen finished, enter:\n\n```text\nStop the running WIQD DevUI and reset the devui feature flag to its default.\n```\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/lifecycle/devui-debugging\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","tools/wiqd/cookbooks/lifecycle/eval-hill-climb/README.md":"# Hill-climb agent quality with evals\n\nCreate a focused evaluation suite, run it, diagnose the weakest behavior, fix\nthe agent rather than the test, and compare the next run. This recipe uses\nWIQD's GitHub Copilot judge path, so Azure OpenAI credentials are not required\nunless you deliberately select the Azure judge.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Start in a declarative-agent project with non-empty instructions.\n- Provision the agent before running live evals.\n- Authenticate GitHub CLI if the GitHub Copilot judge cannot use an existing\n  session: `gh auth login`.\n\n## Initialize a focused suite\n\nStart one interactive Copilot session from the agent project root. In the\nGitHub Copilot app, open the **Default agent** selector and choose **wiqd**. If\nyou prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nInitialize WIQD evals for this provisioned agent. Inspect the manifest,\ninstructions, grounding sources, and actions. Propose a focused suite that\ncovers every applicable Perceive, Reason, and Act behavior plus boundaries and\nfailure handling. Show every proposed add or update as a diff and wait for my\napproval before writing an eval file. Do not lower thresholds, remove\nGroundedness or Citations, or delete a failing scenario to improve the score.\n```\n\nReview the proposed cases and approve only when they describe behavior the agent\nshould actually satisfy.\n\n**Checkpoint:** `evals/prompts.json` contains approved, scenario-specific tests\nrather than only generic starter prompts.\n\n## Run and diagnose\n\nEnter:\n\n```text\nRun the eval suite with WIQD using the GitHub Copilot judge and write a\ntimestamped HTML scorecard under .evals. Analyze failures by root cause:\ninstruction, grounding, citation, tool selection, capability gap, or a genuinely\nincorrect eval. Report the weakest evaluator and the exact prompts that expose\nthe problem.\n```\n\n**Checkpoint:** the result includes a pass rate, per-evaluator scores, and a\nroot-cause diagnosis tied to specific prompts.\n\n## Improve the agent, not the bar\n\nEnter:\n\n```text\nFix the highest-impact agent issue from the latest eval run. Preserve the eval\nsuite, evaluator coverage, and thresholds. Make the smallest instruction or\ncapability change that addresses the root cause, validate the project,\nre-provision it, rerun the same eval suite, and compare the two scorecards.\nStop if the proposed fix would require weakening a test.\n```\n\n**Checkpoint:** the second report uses the same suite and shows whether the\ntargeted score improved. A regression remains visible instead of being hidden\nby easier tests.\n\n## Continue the hill climb\n\nRepeat one root-cause fix at a time. Add a new regression case when a real gap is\ndiscovered, but always review and approve the eval diff before it is written.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/lifecycle/eval-hill-climb\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","tools/wiqd/cookbooks/lifecycle/team-delivery/README.md":"# Deliver an agent to a team\n\nTake a validated agent from local development to a targeted team preview:\nconfigure shared scope, provision the shared environment, package resolved\nartifacts, deep-validate the package, and share it with named users or a\nmail-enabled security group.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Start in a validated declarative-agent project.\n- Obtain the exact email addresses of preview users or the mail address of a\n  security group. WIQD does not resolve display names.\n- Confirm that your tenant permits app upload and sharing.\n\n## Configure the shared environment\n\nStart one interactive Copilot session from the project root. In the GitHub\nCopilot app, open the **Default agent** selector and choose **wiqd**. If you\nprefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nPrepare this agent for a team preview in the dev environment. Inspect the\nexisting environment configuration first. Create the dev environment through\nWIQD if it does not exist, configure AGENT_SCOPE=shared without adding secrets,\nand ensure shared-version handling is correct. Show me the resulting non-secret\nenvironment settings and stop before provisioning.\n```\n\n**Checkpoint:** the dev environment is explicitly shared and contains no\nhardcoded tenant ID, title ID, OAuth reference ID, secret, or recipient address.\n\n## Provision, package, and validate\n\nEnter:\n\n```text\nRun the team delivery gates in this exact order for dev:\n1. Static validation\n2. Provision the shared agent\n3. Package the provisioned agent so environment values are resolved\n4. Deep validation of the generated package\n\nStop on any validation error. Report skipped deep-validation providers\nseparately from passing providers, and show the Copilot launch URL on success.\n```\n\n**Checkpoint:** provisioning precedes packaging, the package has resolved\nenvironment values, and no validation error is hidden.\n\n## Share with a bounded audience\n\nEnter:\n\n```text\nShare the dev agent with these authorized recipients:\n<comma-separated user addresses or one mail-enabled security-group address>\n\nUse users scope, not tenant scope. Report the exact share result and do not\nbroaden access beyond the addresses I supplied.\n```\n\n**Checkpoint:** the share command reports success for the supplied users or\ngroup. Each recipient can open the launch URL after tenant propagation\ncompletes.\n\n## Update safely\n\nFor a later content or manifest change, keep the same Copilot session and enter:\n\n```text\nValidate this shared agent, apply the required shared-agent patch version bump,\nre-provision dev, rebuild the package, and deep-validate it. Preserve the\nexisting audience unless I explicitly ask to change sharing.\n```\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/lifecycle/team-delivery\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","tools/wiqd/cookbooks/plugins/learn-tech-advisor/README.md":"# Upgrade the Learn connector into a technology advisor\n\nTurn the existing Microsoft Learn connector plugin into a composite,\nindependently shippable plugin by adding reusable decision logic and a\ndeclarative-agent experience. This lab starts after connector setup so it does\nnot repeat endpoint discovery or tool-description authoring.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Complete [Microsoft Learn MCP connector](../microsoft-learn-mcp/README.md), or\n  start from a validated copy of that plugin.\n- Confirm that `appPackage/manifest.json` already contains the Microsoft Learn\n  connector and its MCP tool-description file.\n\n## Add the reusable skill and agent\n\nStart one interactive Copilot session from the connector plugin root. In the\nGitHub Copilot app, open the **Default agent** selector and choose **wiqd**. If\nyou prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nUpgrade this existing Microsoft Learn connector plugin into a technology\nadvisor. Do not recreate or alter the connector endpoint. Use the supported\nWIQD plugin add commands to add a skill named Technology Finder and a\ndeclarative agent component.\n\nReplace the generated skill template with a reusable decision workflow:\n- Ask for the user's goal, preferred language or platform, and hard constraints.\n- Search official documentation before comparing options.\n- Search official code samples when implementation detail is requested.\n- Fetch the most relevant pages before giving a final recommendation.\n- Compare two or three viable options in a concise table.\n- Separate sourced facts from the recommendation and link every source.\n- Say when official documentation does not support a claim.\n\nConfigure the declarative agent to invoke the skill for technology-selection\nquestions. Add conversation starters, show the plugin summary, run static\nvalidation, and stop before provisioning.\n```\n\n**Checkpoint:** the existing connector remains unchanged, the plugin summary\nnow lists `agentConnectors`, `agentSkills`, and `declarativeAgent`, the skill is\nno longer a template, and validation passes.\n\n## Deploy the composite update\n\nEnter:\n\n```text\nProvision or re-provision this composite plugin locally. Then package it and\ndeep-validate the generated package. Show me any skipped provider instead of\ntreating a skip as a pass.\n```\n\nEnable the updated plugin in Copilot Cowork and try:\n\n| Prompt | Expected behavior |\n|---|---|\n| `Should I use Azure Functions or Container Apps for a small event-driven API?` | Asks for missing constraints, retrieves current docs, compares options, and recommends one |\n| `Show the current TypeScript approach for DefaultAzureCredential.` | Uses code-sample search and links the official source |\n| `What evidence supports that recommendation?` | Fetches the strongest pages and separates evidence from judgment |\n\n**Checkpoint:** the reusable skill turns connector results into a repeatable\ndecision workflow rather than another raw documentation search.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/plugins/learn-tech-advisor\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","tools/wiqd/cookbooks/plugins/microsoft-learn-mcp/README.md":"# Microsoft Learn MCP connector: first Copilot Cowork plugin\n\nBuild, install, and test a plugin that searches and reads current Microsoft Learn documentation through the public Microsoft Learn MCP server as an agent connector.\n\nThe server at `https://learn.microsoft.com/api/mcp` is free, uses streamable HTTP, and does not require authentication. It currently exposes tools to search documentation, search code samples, and fetch complete documentation pages.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Start Copilot once, enter each prompt in the same session, and confirm its checkpoint before continuing.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` v0.13.1 or later installed and signed in\n- Access to Copilot Cowork\n- Permission to provision and share an app in your Microsoft 365 development tenant\n\nSee [Getting started](../../README.md#getting-started) for installation and sign-in instructions.\n\n### Step 1: Check the environment\n\nStart the WIQD Copilot agent. In the GitHub Copilot app, open the\n**Default agent** selector and choose **wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter this prompt:\n\n```text\nCheck that my environment is ready to build and provision a plugin with WIQD. Confirm that Node.js is version 24 or later, WIQD is version 0.13.1 or later, I am signed in, and WIQD doctor reports no blocking errors. Help me fix any failed check before continuing.\n```\n\n**Checkpoint:** Copilot confirms that the environment is ready.\n\n## Build the plugin\n\n### Step 2: Create the plugin\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a standalone plugin called Microsoft Learn Helper.\n```\n\n**Checkpoint:** the current working directory is the generated plugin root and contains `wiqd.plugin.json`, `m365agents.yml`, and `appPackage/manifest.json`.\n\n### Step 3: Add the no-auth connector\n\nEnter this prompt in the same Copilot session:\n\n```text\nAdd a connector named Microsoft Learn to this plugin using the public MCP endpoint https://learn.microsoft.com/api/mcp. Configure it with no authentication. Inspect the server's current tools and include an MCP tool-description file in the app package so the connector can be verified by Copilot Cowork. Its purpose is to search and read current official Microsoft documentation and code samples.\n```\n\nReview and approve the proposed file changes.\n\n**Checkpoint:** `appPackage/manifest.json` contains a Microsoft Learn entry in `agentConnectors`, references a tool-description file in the app package, and has no authorization block.\n\n### Step 4: Inspect and validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nShow me a summary of this plugin, then validate it locally with WIQD. If validation reports errors, explain and fix them before continuing.\n```\n\n**Checkpoint:** the plugin summary lists the Microsoft Learn connector and static validation completes successfully.\n\n## Install the plugin in Copilot Cowork\n\n### Step 5: Provision the plugin\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision this Copilot Cowork plugin.\n```\n\n**Checkpoint:** WIQD reports that **Microsoft Learn Helper** was provisioned successfully.\n\n## Test it in Copilot Cowork\n\n1. Open Copilot Cowork.\n2. Open the plugin UI and find the provisioned **Microsoft Learn Helper** plugin.\n3. Install the plugin.\n4. Start a new Copilot Cowork session with **Microsoft Learn Helper** enabled.\n5. Run each prompt below and confirm that Cowork invokes the expected connector tool and returns content from Microsoft Learn.\n\n| Prompt | Expected behavior |\n|---|---|\n| `Find the current Microsoft guidance for building a remote MCP server in TypeScript.` | Calls `microsoft_docs_search` and summarizes relevant official documentation with links. |\n| `Show me a C# code sample for authenticating with DefaultAzureCredential.` | Calls `microsoft_code_sample_search` with C# as the language. |\n| `Read this Learn page and summarize its prerequisites: <Microsoft Learn URL>` | Calls `microsoft_docs_fetch` for the supplied URL. |\n\n## References\n\n- [Build a plugin with WIQD](https://microsoft.github.io/wiqd/getting-started/build-a-plugin/)\n- [WIQD plugin authoring reference](https://microsoft.github.io/wiqd/getting-started/plugin-reference/)\n- [Microsoft Learn MCP Server overview](https://learn.microsoft.com/training/support/mcp)\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/plugins/microsoft-learn-mcp\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).","tools/wiqd/cookbooks/plugins/plugin-portability/README.md":"# Round-trip a plugin across formats\n\nExport a validated WIQD plugin to the Agent Plugin, Claude, and Cursor formats,\nthen import the Agent Plugin export into a fresh WIQD project and validate that\nthe connector, skill, and declarative agent survived.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Start from a validated composite plugin such as\n  [Learn Technology Advisor](../learn-tech-advisor/README.md).\n- Keep the entire export directory together. The declarative-agent payload is\n  carried beside the exported manifest and is required for a lossless import.\n\n## Export the plugin\n\nFrom the validated plugin root, start one interactive Copilot session. In the\nGitHub Copilot app, open the **Default agent** selector and choose **wiqd**. If\nyou prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nValidate this WIQD plugin. If validation is clean, export it with the supported\nWIQD plugin export command to all three formats: open-plugin, claude-plugin, and\ncursor-plugin. Put each format in its default export directory. Do not provision\nor change the source plugin.\n```\n\n**Checkpoint:** the plugin contains `export/open-plugin`,\n`export/claude-plugin`, and `export/cursor-plugin`, and each export has its\nformat-specific manifest plus the carried skill and agent content.\n\n## Prove the round trip\n\nEnter:\n\n```text\nImport export/open-plugin into a new sibling project named\n<current-plugin-name>-roundtrip using the supported WIQD plugin import command.\nBecause this export came from WIQD, reuse its round-trip privacy, terms, and\nagent metadata rather than inventing replacements. Show the imported plugin and\nrun static validation. Compare its capability list with the source plugin.\n```\n\n**Checkpoint:** import reports that the agent was restored, validation passes,\nand both projects list the same `agentConnectors`, `agentSkills`, and\n`declarativeAgent` capabilities.\n\n## Test the boundary\n\nCopy an entire export directory to a temporary location and import it again.\nDo not copy only the manifest: that intentionally omits the carried agent and is\nnot a valid lossless round trip.\n\n**Checkpoint:** a complete exported directory imports successfully without\nasking for new privacy or terms URLs.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/plugins/plugin-portability\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n"},"files":{"samples/plugins/microsoft-learn-plugin/README.md":"# Microsoft Learn Helper\n\nMicrosoft Learn Helper is a Microsoft 365 Copilot plugin that searches and\nreads current official Microsoft documentation and code samples.\n\nThe plugin connects to the public\n[Microsoft Learn MCP server](https://learn.microsoft.com/api/mcp). The\nconnector is read-only and does not require an API key or user sign-in.\n\n## What this sample demonstrates\n\n- Adding a remote MCP server as an agent connector\n- Describing MCP tools for Microsoft 365 Copilot\n- Searching current Microsoft documentation\n- Fetching complete documentation pages for additional context\n- Finding official code samples by language\n- Packaging and provisioning a connector plugin\n\n## Try the plugin\n\n### Prerequisites\n\nYou need:\n\n- Access to Microsoft 365 Copilot Cowork\n- Permission to upload a custom plugin in your tenant\n- Copilot Credits for testing in Cowork\n\n### 1. Upload the package\n\nUse the prebuilt [`package.zip`](package.zip), or build a package from the\nsource files in [`appPackage/`](appPackage/).\n\nIn Microsoft 365 Copilot Cowork:\n\n1. Open the plugin inventory.\n2. Select the option to upload a custom plugin.\n3. Upload `package.zip`.\n4. Find **Microsoft Learn Helper** and enable it for the current Cowork\n   session.\n\nThe connector uses anonymous access, so Cowork should not ask you to sign in.\n\n### 2. Test the connector\n\nTry prompts such as:\n\n```text\nFind the current Microsoft documentation for building a declarative agent.\nSummarize the prerequisites and cite the source.\n```\n\n```text\nFind an official TypeScript code sample for authenticating with Microsoft\nGraph. Explain the sample and link to its source.\n```\n\n```text\nSearch Microsoft Learn for the latest Azure Functions Node.js guidance, then\nread the most relevant page and summarize its recommendations.\n```\n\n## Available tools\n\n| Tool | Purpose |\n|------|---------|\n| `microsoft_docs_search` | Searches official Microsoft documentation and returns relevant excerpts and source URLs |\n| `microsoft_docs_fetch` | Fetches the complete content of a Microsoft documentation page |\n| `microsoft_code_sample_search` | Finds current code samples in official Microsoft documentation, optionally filtered by language |\n\n## Project structure\n\n| File or folder | Purpose |\n|----------------|---------|\n| [`appPackage/manifest.json`](appPackage/manifest.json) | Defines the Microsoft Learn remote MCP connector |\n| [`appPackage/microsoft-learn-mcp-tools.json`](appPackage/microsoft-learn-mcp-tools.json) | Describes the MCP tools exposed to Copilot |\n| [`wiqd.plugin.json`](wiqd.plugin.json) | Identifies the project as a WIQD plugin with an agent connector |\n| [`m365agents.yml`](m365agents.yml) | Defines provisioning, validation, packaging, and publishing actions |\n| [`m365agents.local.yml`](m365agents.local.yml) | Defines the local provisioning workflow |\n\n## Develop the sample\n\nThis project includes Microsoft 365 Agents Toolkit lifecycle files. Open the\nproject in VS Code with Microsoft 365 Agents Toolkit, then use its lifecycle\ncommands to provision, package, validate, and publish the plugin to your\ndevelopment environment.\n\nYou can also inspect and modify the plugin with\n[WIQD](https://microsoft.github.io/wiqd/). See the\n[Microsoft Learn MCP connector cookbook](../../../tools/wiqd/cookbooks/plugins/microsoft-learn-mcp/README.md)\nfor a guided, end-to-end build of this sample.\n\n## Important\n\nThis sample is for learning and demonstration purposes. Review the manifest,\ndeveloper information, descriptions, icons, and tenant policies before sharing\nor publishing a derived plugin.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/samples/plugins/microsoft-learn-plugin\" />\n","samples/plugins/microsoft-learn-plugin/wiqd.plugin.json":"{\n  \"schemaVersion\": 1,\n  \"name\": \"Microsoft Learn Helper\",\n  \"capabilities\": [\n    \"agentConnectors\"\n  ]\n}\n","samples/plugins/retirement-radar-plugin/README.md":"# Retirement Radar for Copilot Cowork\n\nRetirement Radar helps you find retired and deprecated Microsoft technology before an old script fails in production.\n\nGive Copilot Cowork a script, configuration file, package list, or architecture note. Retirement Radar checks every Microsoft API, SDK, PowerShell module, endpoint, and service it finds against live Microsoft Learn documentation, then returns:\n\n- A clear supported, deprecated, or retired verdict\n- Official retirement dates and Microsoft Learn sources\n- Supported replacements\n- Updated code based on official samples\n- A prioritized migration checklist\n\n## Try the plugin\n\n### Prerequisites\n\nYou need:\n\n- Access to **Microsoft 365 Copilot Cowork**\n- Copilot Credits for testing in Cowork\n\nThe plugin uses the public, read-only [Microsoft Learn MCP server](https://learn.microsoft.com/api/mcp). It does not require an API key or a connector sign-in.\n\n### 1. Get the plugin package\n\nUse the prebuilt package:\n\n```text\nappPackage.dev.zip\n```\n\nThe ZIP must contain `manifest.json`, `mcp-tools.json`, the icons, and `skills/` at its root. Do not zip the `appPackage` folder itself.\n\n### 2. Upload and enable it in Cowork\n\n1. Open **Microsoft 365 Copilot Cowork**.\n2. Open the plugin inventory.\n3. Select the option to upload a custom plugin.\n4. Upload `appPackage.dev.zip`.\n5. Find **Retirement Radar** and enable it for the current Cowork session.\n\nThe plugin should show:\n\n- The **Retirement Radar** skill\n- The **Microsoft Learn** connector\n\nThe connector uses anonymous access, so Cowork should not ask you to sign in.\n\n### 3. Run the demo\n\nOpen [`demo/legacy-admin-script copy.txt`](demo/legacy-admin-script%20copy.txt), copy the complete script, and paste it into Cowork with this prompt:\n\n> Is this still safe to run tonight? Check it for retired Microsoft APIs.\n\nRetirement Radar should:\n\n1. Inventory the Microsoft technologies in the script.\n2. Check each one against current Microsoft Learn content.\n3. Classify each finding as **Broken now**, **Breaking soon**, **Deprecated**, or **OK**.\n4. Cite an official source for every dated claim.\n5. Recommend supported replacements.\n\nThe demo includes intentionally old technology such as:\n\n- MSOnline and AzureAD PowerShell\n- Azure AD Graph (`graph.windows.net`)\n- AzureRM PowerShell\n- Office 365 connectors in Teams\n\nBecause Retirement Radar checks Microsoft Learn at runtime, its wording and findings can change as Microsoft updates the documentation.\n\n### 4. Ask for the migration\n\nContinue in the same Cowork session:\n\n> Rewrite the whole script with the supported replacements.\n\nThe plugin uses Microsoft Learn code samples to produce an updated PowerShell script while preserving the intent and variable names where possible.\n\n## More prompts to try\n\nRetirement Radar can inspect more than PowerShell. Try it with application code, dependency files, infrastructure definitions, or architecture notes:\n\n```text\nCheck this project for deprecated Microsoft SDKs and APIs. Cite an official source for every finding.\n```\n\n```text\nWhich dependencies in this package file need migration within the next 12 months?\n```\n\n```text\nThis integration started returning 403 errors. Check whether any Microsoft endpoint or authentication library in it has been retired.\n```\n\n```text\nCreate a prioritized migration plan, then rewrite only the broken parts.\n```\n\nDo not paste live secrets, access tokens, connection strings, or production webhook URLs into the chat. Replace them with redacted values first.\n\n## What is in the plugin\n\n```text\n\nappPackage/\n├── manifest.json\n├── mcp-tools.json\n├── color.png\n├── outline.png\n└── skills/\n    └── retirement-radar/\n        ├── SKILL.md\n        └── references/\n            └── report-template.md\n\n```\n\nRetirement Radar is a standard Microsoft 365 app package for Copilot Cowork:\n\n| Component | Purpose |\n|---|---|\n| `agentSkills[0]` | Registers the `retirement-radar` workflow from `skills/retirement-radar/SKILL.md` |\n| `agentConnectors[0]` | Connects Cowork to the remote Microsoft Learn MCP server |\n| `mcp-tools.json` | Describes the Microsoft Learn tools exposed to the skill |\n\nThere is no declarative agent or hosted backend in this package. The skill contains the workflow, and the connector provides live Microsoft Learn search, page retrieval, and code-sample tools.\n\n## Troubleshooting\n\n### The plugin does not appear in Cowork\n\n- Confirm that `appPackage.dev.zip` uploaded successfully.\n- Reopen the plugin inventory after the upload completes.\n- Check that the plugin is installed and enabled for the current session.\n\n### The package upload fails\n\n- Open the ZIP and confirm `manifest.json` is at the root.\n- Confirm `skills/retirement-radar/SKILL.md` exists with that exact capitalization.\n- Confirm the ZIP contains `mcp-tools.json`, `color.png`, and `outline.png`.\n- Do not place a parent `appPackage/` directory inside the ZIP.\n\n### The skill does not activate\n\nUse an explicit prompt containing phrases such as **retired**, **deprecated**, **still supported**, or **check Microsoft dependencies**. Also confirm that Retirement Radar is enabled in the Cowork session.\n\n### Microsoft Learn results are unavailable\n\nThe skill depends on `https://learn.microsoft.com/api/mcp`. Confirm that your organization allows Cowork to reach that HTTPS endpoint.\n\n## Learn more\n\n- [Copilot Camp: Build your first Copilot Cowork plugin](https://microsoft.github.io/copilot-camp/pages/copilot-cowork/02-cowork-plugins/)\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/samples/plugins/retirement-radar-plugin\" />\n","samples/plugins/retirement-radar-plugin/appPackage/skills/retirement-radar/SKILL.md":"---\nname: retirement-radar\ndescription: Scans code, scripts, config files, package lists or architecture notes for Microsoft APIs, SDKs, PowerShell modules, endpoints and services that are deprecated or retired, verifies each one live against official Microsoft Learn documentation, and returns a dated risk table with the supported replacement and a rewritten snippet. Use when the user asks \"is this still supported?\", \"what's deprecated in my code?\", \"why did my script/webhook stop working?\", \"check my dependencies for retirement\", or pastes code that uses AzureAD, MSOnline, AzureRM, ADAL, Azure AD Graph, Office 365 connectors or other legacy Microsoft tech. Do not use for general coding help unrelated to deprecation or for non-Microsoft technologies.\nlicense: MIT\ncompatibility: Requires the Microsoft Learn MCP server (https://learn.microsoft.com/api/mcp) with the tools microsoft_docs_search, microsoft_docs_fetch and microsoft_code_sample_search.\nmetadata:\n  author: Contoso Cloud Advocacy\n  version: \"1.0.0\"\n---\n\n# Retirement Radar\n\nTurn \"I think this still works\" into \"here is the official date, the replacement, and the fixed code\".\n\n## When to use\n- The user pastes code, a script, `package.json`, `.csproj`, `requirements.txt`, an ARM/Bicep template, or a description of their architecture.\n- The user asks whether something is deprecated, retired, still supported, or why it suddenly stopped working (401/403/410 errors from an old endpoint are a strong signal).\n\n## Step 1 - Inventory the signals\nExtract every Microsoft technology reference. Look for:\n\n| Signal type | Examples |\n|---|---|\n| PowerShell modules / cmdlet prefixes | `Connect-AzureAD`, `*-AzureAD*`, `Connect-MsolService`, `*-Msol*`, `*-AzureRM*` |\n| Packages | `Microsoft.IdentityModel.Clients.ActiveDirectory` (ADAL.NET), `adal` (Python/Node), `msrestazure`, `WindowsAzure.Storage`, `Microsoft.Azure.Management.*` |\n| Endpoints | `graph.windows.net` (Azure AD Graph), `outlook.office.com/webhook`, `*.webhook.office.com/webhookb2` (Office 365 connectors), `login.windows.net` |\n| Services / features | Office 365 connectors in Teams, basic auth for Exchange Online, classic (ASM) resources |\n\nRecord where each signal appears (line number or snippet) so the report can point to it.\n\n## Step 2 - Verify every signal on Microsoft Learn\nFor each signal, in this order:\n1. `microsoft_docs_search` with `\"<technology> retirement date\"` or `\"<technology> deprecated migrate to\"`.\n2. If the excerpt does not contain a date or a named replacement, call `microsoft_docs_fetch` on the most relevant `learn.microsoft.com` URL from the search results.\n3. Capture: status wording, the exact date(s), the named replacement, and the source URL.\n\nHard rule: never state a date, status or replacement you did not read in a tool result. If nothing is found, report \"No retirement notice found on Learn\".\n\n## Step 3 - Classify against today's date\n| Status | Rule |\n|---|---|\n| Broken now | Official retirement / end-of-support date is in the past |\n| Breaking soon | Retirement date is within the next 12 months |\n| Deprecated | Docs say deprecated / no new investment, but no firm date |\n| OK | Verified current, or no retirement notice found |\n\n## Step 4 - Build the fix\nFor every non-OK finding, call `microsoft_code_sample_search` for the replacement, passing `language` to match the user's code (for example `powershell`, `csharp`, `python`). Rewrite only the affected lines, preserve the user's variable names, and keep the result runnable.\n\n## Step 5 - Report\nUse the template in [references/report-template.md](references/report-template.md):\n1. One-line verdict, for example: \"3 of 5 Microsoft dependencies in this script are already retired.\"\n2. Risk table: Finding | Where | Status | Official date | Replacement | Source.\n3. Before -> After code blocks for the highest-risk findings.\n4. Prioritized migration checklist (Broken now first, then Breaking soon, then Deprecated).\n\n## Safety\n- If the input contains secrets (keys, tokens, connection strings, webhook URLs) warn the user and redact them in the output.\n- Do not invent cmdlets, packages or endpoints. If a replacement mapping is not in the docs, say so.\n","samples/plugins/retirement-radar-plugin/appPackage/skills/retirement-radar/references/report-template.md":"# Retirement Radar report template\n\n**Verdict:** {N} of {M} Microsoft dependencies need action - {X} are already retired.\n\n| # | Finding | Where in your code | Status | Official date | Replacement | Source |\n|---|---|---|---|---|---|---|\n| 1 | {technology} | line {n}: `{snippet}` | Broken now / Breaking soon / Deprecated / OK | {date exactly as in docs} | {replacement} | [{doc title}]({learn url}) |\n\n## Fixes\n\n### 1. {technology} -> {replacement}\nBefore:\n```{language}\n{original lines}\n```\nAfter:\n```{language}\n{rewritten lines, based on the official sample}\n```\nWhy: {one sentence quoting or paraphrasing the Learn doc}.\n\n## Migration checklist\n1. [ ] Broken now: {item} - {first concrete step}\n2. [ ] Breaking soon: {item}\n3. [ ] Deprecated: {item}\n\n_All dates and replacements verified against Microsoft Learn on {today's date}._\n","tools/wiqd/cookbooks/README.md":"# wiqd plugin cookbooks\n\nwiqd cookbooks are short, end-to-end recipes for building and improving plugins\nfor Microsoft 365 Copilot. A plugin can bring together skills, connectors\n(including MCP connectors), and agents. A declarative agent is one type of\nagent component. Some recipes focus on one component, while others show how to\ncombine them into a more capable plugin.\n\nEach recipe is built around one clear outcome:\n**build it → make it do something → make it safe → make it good → make it grounded.**\n\n## Getting started\n\nBefore running any cookbook, make sure you have these installed and configured:\n\n### 1. Install Node.js 24+\n\nwiqd requires Node.js 24 or later. Install via your preferred method:\n\n```bash\n# macOS / Linux (via nvm)\nnvm install 24 && nvm use 24\n\n# Windows (via fnm)\nfnm install 24 && fnm use 24\n```\n\n### 2. Install wiqd CLI\n\n```bash\n# macOS / Linux\ncurl -fsSL https://aka.ms/wiqd/install.sh | bash\n\n# Windows (PowerShell)\niex \"& { $(irm 'https://aka.ms/wiqd/install.ps1') }\"\n```\n\nVerify the installation:\n\n```bash\nwiqd --version\n```\n\n### 3. Choose how to use the WIQD Copilot agent\n\nYou can run these recipes in the GitHub Copilot app or the standalone\n[GitHub Copilot CLI](https://docs.github.com/en/copilot/how-tos/copilot-cli/set-up-copilot-cli/install-copilot-cli).\n\nIn the GitHub Copilot app, open the agent selector labeled **Default agent** and\nchoose **wiqd**. No CLI installation is required.\n\nIf you prefer the CLI, install it:\n\n```bash\n# Install on any platform with Node.js 22 or later\nnpm install -g @github/copilot\n\n# Verify that the standalone CLI supports custom agents\ncopilot --help\n```\n\nConfirm that the help output includes the `--agent` option before continuing. If it does not, check which executable your shell resolves for `copilot`, then reinstall the standalone CLI.\n\nStart the WIQD agent with:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\n### 4. Sign in to your Microsoft 365 account\n\nYou need a Microsoft 365 account with access to Copilot and an Azure subscription for provisioning plugin components and required resources. Start an interactive sign-in:\n\n```bash\nwiqd auth login --interactive\n```\n\nOn macOS and Linux, this normally opens your system browser. Sign in with the work or school account for the tenant where you want to provision the agent, then complete any consent or multi-factor authentication prompts. `wiqd` delegates authentication to its installed providers, so you may see more than one provider reported in the terminal.\n\nConfirm that the intended account is signed in:\n\n```bash\nwiqd auth status\n```\n\nIf the status shows an account from the wrong tenant, sign out and repeat the interactive login, choosing the correct account in the browser:\n\n```bash\nwiqd auth logout\nwiqd auth login --interactive\n```\n\nSee the [wiqd authentication guide](https://microsoft.github.io/wiqd/getting-started/authentication/) for provider details and troubleshooting.\n\n### 5. Confirm everything is ready\n\n```bash\nwiqd doctor\n```\n\nThis checks your environment for common issues (Node version, auth status, CLI version).\n\n---\n\n## Start with a guided plugin recipe\n\nNew to wiqd? Begin with one of these self-contained recipes. Each takes you\nfrom setup to a working plugin and shows you how to test its core behavior.\nYou can use the resulting plugin project as a starting point for the extension and\nlifecycle recipes in the next section.\n\n| Recipe | Primary component | What you'll build |\n|--------|-------------------|-------------------|\n| [Zero to agent, live in Copilot](./declarative-agents/zero-to-agent/README.md) | Declarative agent | Scaffold, provision, and open your first agent |\n| [Translator agent](./declarative-agents/translator-agent/README.md) | Declarative agent | Translate text into any language |\n| [Photobooth agent](./declarative-agents/photobooth-agent/README.md) | Declarative agent | Apply effects and create photobooth-style image composites |\n| [Mind Your Language agent](./declarative-agents/mind-your-language-agent/README.md) | Declarative agent | Coach tone and rewrite passive-aggressive text |\n| [Zava Insurance agent (MCP)](./declarative-agents/insurance-agent-mcp/README.md) | Declarative agent | Connect an agent to an MCP server for live insurance data |\n| [Demo Planning agent](./declarative-agents/demo-planning-agent/README.md) | Declarative agent | Plan demos, workshops, hackathons, and presentations |\n| [Microsoft Learn MCP connector](./plugins/microsoft-learn-mcp/README.md) | Connector (MCP) | Create and test a plugin with a public, no-auth MCP connector |\n\n## Extend and improve your plugin\n\nUse these recipes to add components and capabilities or work on a later stage\nof the plugin lifecycle. Some build on a specific guided recipe, while others\nwork with any existing plugin or declarative-agent component. Check\n**Start with** before you begin.\n\n| Recipe | Focus | Start with | What you'll learn |\n|--------|-------|------------|-------------------|\n| [Ground an existing agent in your SharePoint content](./declarative-agents/sharepoint-knowledge-agent/README.md) | Grounding | An existing declarative agent, such as [Zero to agent](./declarative-agents/zero-to-agent/README.md) | Scope organizational knowledge, require grounded answers, and verify citations |\n| [Build a public web research agent](./declarative-agents/public-web-research-agent/README.md) | Research | An existing declarative agent | Scope research to approved public sites and produce source-backed answers |\n| [Upgrade the Learn connector into a technology advisor](./plugins/learn-tech-advisor/README.md) | Composition | [Microsoft Learn MCP connector](./plugins/microsoft-learn-mcp/README.md) | Combine a reusable plugin skill with a declarative agent |\n| [Hill-climb agent quality with evals](./lifecycle/eval-hill-climb/README.md) | Evaluation | An existing working agent | Measure quality, diagnose failures, improve behavior, and compare results |\n| [Debug an agent in DevUI](./lifecycle/devui-debugging/README.md) | Debugging | An existing agent with a test scenario | Inspect tool selection, execution, grounding, citations, and failures |\n| [Deliver an agent to a team](./lifecycle/team-delivery/README.md) | Delivery | A validated agent | Validate a package, configure shared scope, and target distribution |\n| [Round-trip a plugin across formats](./plugins/plugin-portability/README.md) | Portability | An existing plugin | Export and re-import Agent Plugin, Claude, and Cursor formats |\n\n> All recipes support the GitHub Copilot app and GitHub Copilot CLI. In the\n> app, choose **wiqd** from the **Default agent** selector. In the CLI, start\n> the agent with `copilot --agent wiqd:wiqd`. Recipes also use `wiqd` CLI\n> commands.\n\n## Authors and contributors\n\n<!-- contributors:start -->\n<!-- Generated by update-contributors.mjs. Do not edit by hand. -->\n<table>\n  <tr>\n    <td align=\"center\"><a href=\"https://github.com/rabwill\"><img src=\"https://avatars.githubusercontent.com/u/20379311?v=4\" width=\"80px\" alt=\"Rabia Williams\" /><br /><sub><b>Rabia Williams</b></sub><br /><sub>@rabwill</sub></a></td>\n    <td align=\"center\"><a href=\"https://github.com/sebastienlevert\"><img src=\"https://avatars.githubusercontent.com/u/7620955?v=4\" width=\"80px\" alt=\"Sébastien Levert\" /><br /><sub><b>Sébastien Levert</b></sub><br /><sub>@sebastienlevert</sub></a></td>\n  </tr>\n</table>\n<!-- contributors:end -->\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd\" />\n","tools/wiqd/cookbooks/declarative-agents/demo-planning-agent/README.md":"# Demo Planning agent: interactive lab\n\nBuild and open a Microsoft 365 Copilot agent that plans demos, workshops, hackathons, presentations, and customer conversations. This README is organized like a notebook: run one cell at a time, confirm its checkpoint, and then continue.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Run terminal commands in a\n> terminal, enter prompts in the GitHub Copilot app or CLI, and keep the same\n> Copilot conversation open for all remaining steps.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` installed and signed in\n- Access to the GitHub Copilot app or GitHub Copilot CLI\n- Permission to provision an agent to a dev environment\n\n### Step 1: Check the environment\n\n> [!NOTE]\n> See [Getting started](../../README.md#getting-started) in the cookbook README for wiqd prerequisites and installation instructions.\n\n```bash\nnode --version\nwiqd --version\nwiqd doctor\n```\n\nIf you plan to use the CLI, also run `copilot --version`.\n\n**Checkpoint:** Node reports version 24 or later, and the commands for your\nchosen workflow complete successfully.\n\n## Build the agent\n\n### Step 2: Create the workspace\n\n```bash\nmkdir -p demo-planning && cd demo-planning\n```\n\n### Step 3: Start Copilot\n\nIn the GitHub Copilot app, open the **Default agent** selector and choose\n**wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nStart with a clean conversation:\n\n```text\n/clear\n```\n\n### Step 4: Scaffold the agent\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a new declarative agent called Demo Planner that helps users plan professional demos, workshops, hackathons, presentations, and customer conversations. Ask about the audience, goals, time constraints, format, and technology, then generate a structured plan with an agenda, talking points, demo scripts, fallback options, and preparation checklists.\n```\n\nReview and approve the proposed file changes.\n\n**Checkpoint:** the current directory contains a new agent project with manifest and instruction files.\n\n### Step 5: Review the instructions\n\nConfirm the generated instructions tell the agent to:\n\n- Ask about the audience, event type, duration, goals, and technology\n- Create an agenda with time allocations\n- Provide talking points and transitions\n- Include step-by-step demo actions and fallback plans\n- Produce a preparation checklist\n- Adapt depth and tone to technical, executive, or mixed audiences\n- Handle follow-up changes to the plan\n\nAsk Copilot to correct any missing behavior. Keep this Copilot session open for the remaining steps.\n\n## Run the agent\n\n### Step 6: Move into the agent project\n\nCopilot reports the path of the project it created. Move the current session into that project root:\n\n```text\n/cwd <path-to-new-agent-project>\n```\n\nReplace the placeholder with the path Copilot reported.\n\n**Checkpoint:** the current directory contains the agent's `appPackage` directory and lifecycle configuration file.\n\n### Step 7: Validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nValidate the agent with wiqd. If validation reports errors, explain them and help me fix them before continuing.\n```\n\n**Checkpoint:** validation completes without errors.\n\n### Step 8: Provision to dev\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision the agent to the dev environment with wiqd.\n```\n\n**Checkpoint:** provisioning succeeds and returns a Microsoft 365 Copilot share link.\n\n### Step 9: Open in Copilot\n\nEnter this prompt in the same Copilot session:\n\n```text\nOpen the provisioned agent in Microsoft 365 Copilot with wiqd.\n```\n\n## Try it\n\n| Prompt | Expected behavior |\n|---|---|\n| `Plan a 30-minute product demo for enterprise customers` | Asks for key details and returns a timed agenda |\n| `Plan a 2-hour hackathon kickoff for 50 developers` | Creates a timeline for setup, introduction, hacking, and judging |\n| `Add a 10-minute Q&A at the end` | Updates the plan and adjusts its time allocations |\n\n## Reset the lab\n\nFrom the parent directory of `demo-planning`:\n\n```bash\nrm -rf demo-planning\n```\n\nDeleting the local folder does not remove provisioned resources.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/demo-planning-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","tools/wiqd/cookbooks/declarative-agents/insurance-agent-mcp/README.md":"# Zava Insurance agent: interactive MCP lab\n\nBuild and open a Microsoft 365 Copilot agent connected to the Zava Insurance MCP server. This README is organized like a notebook: run one cell at a time, confirm its checkpoint, and then continue.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Run terminal commands in a\n> terminal, enter prompts in the GitHub Copilot app or CLI, and keep the same\n> Copilot conversation open for all remaining steps.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` installed and signed in\n- Access to the GitHub Copilot app or GitHub Copilot CLI\n- Permission to provision an agent to a dev environment\n- Access to `https://zava-insurance-mcp.azurewebsites.net/mcp`\n\n### Step 1: Check the environment\n\n> [!NOTE]\n> See [Getting started](../../README.md#getting-started) in the cookbook README for wiqd prerequisites and installation instructions.\n\n```bash\nnode --version\nwiqd --version\nwiqd doctor\n```\n\nIf you plan to use the CLI, also run `copilot --version`.\n\n**Checkpoint:** Node reports version 24 or later, and the commands for your\nchosen workflow complete successfully.\n\n## Build the agent\n\n### Step 2: Create the workspace\n\n```bash\nmkdir -p zava-insurance && cd zava-insurance\n```\n\n### Step 3: Start Copilot\n\nIn the GitHub Copilot app, open the **Default agent** selector and choose\n**wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nStart with a clean conversation:\n\n```text\n/clear\n```\n\n### Step 4: Scaffold the agent\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a new declarative agent called Zava Insurance that helps users inspect\nclaims, find contractors and inspectors, and perform controlled claim\noperations.\n```\n\nReview and approve the proposed file changes.\n\n**Checkpoint:** the current directory contains a new agent project with manifest and instruction files.\n\n### Step 5: Add the MCP action\n\nEnter this prompt in the same Copilot session:\n\n```text\nAdd a remote MCP action to the Zava Insurance agent using\nhttps://zava-insurance-mcp.azurewebsites.net/mcp with no authentication. Use the\nsupported WIQD agent add action command and inspect the server's current tools\nbefore updating the agent instructions.\n```\n\nReview and approve the manifest changes.\n\n### Step 6: Review the configuration\n\nConfirm the generated project includes:\n\n- The MCP endpoint `https://zava-insurance-mcp.azurewebsites.net/mcp`\n- An MCP action in the agent manifest with `None` authentication\n- Read workflows using `show-claims-dashboard`, `show-claim-detail`,\n  `show-contractors`, `get-claim-summary`, and `list-inspectors`\n- Instructions that summarize the exact proposed change and wait for explicit\n  confirmation in a separate user turn before calling `update-claim-status`,\n  `update-inspection`, `update-purchase-order`, or `create-inspection`\n\nAsk Copilot to correct any missing configuration. Keep this Copilot session open for the remaining steps.\n\n## Run the agent\n\n### Step 7: Move into the agent project\n\nCopilot reports the path of the project it created. Move the current session into that project root:\n\n```text\n/cwd <path-to-new-agent-project>\n```\n\nReplace the placeholder with the path Copilot reported.\n\n**Checkpoint:** the current directory contains the agent's `appPackage` directory and lifecycle configuration file.\n\n### Step 8: Validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nValidate the agent with wiqd. If validation reports errors, explain them and help me fix them before continuing.\n```\n\n**Checkpoint:** validation completes without errors.\n\n### Step 9: Provision to dev\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision the agent to the dev environment with wiqd.\n```\n\n**Checkpoint:** provisioning succeeds and returns a Microsoft 365 Copilot share link.\n\n### Step 10: Open in Copilot\n\nEnter this prompt in the same Copilot session:\n\n```text\nShow me the Microsoft 365 Copilot launch URL for the provisioned dev agent.\n```\n\n## Try it\n\n| Prompt | Expected behavior |\n|---|---|\n| `Summarize claim CN202504990.` | Calls `get-claim-summary` or `show-claim-detail` and reports the live demo result |\n| `Show preferred contractors for water damage.` | Calls `show-contractors` with the relevant filters |\n| `Change claim 1 to Closed and add a completion note.` | Describes the exact update and asks for confirmation without calling the write tool yet |\n\n## Reset the lab\n\nFrom the parent directory of `zava-insurance`:\n\n```bash\nrm -rf zava-insurance\n```\n\nDeleting the local folder does not remove provisioned resources.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/insurance-agent-mcp\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","tools/wiqd/cookbooks/declarative-agents/mind-your-language-agent/README.md":"# Mind Your Language agent: interactive lab\n\nBuild and open a Microsoft 365 Copilot tone coach that rewrites passive-aggressive, sarcastic, or harsh messages. This README is organized like a notebook: run one cell at a time, confirm its checkpoint, and then continue.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Run terminal commands in a\n> terminal, enter prompts in the GitHub Copilot app or CLI, and keep the same\n> Copilot conversation open for all remaining steps.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` installed and signed in\n- Access to the GitHub Copilot app or GitHub Copilot CLI\n- Permission to provision an agent to a dev environment\n\n### Step 1: Check the environment\n\n> [!NOTE]\n> See [Getting started](../../README.md#getting-started) in the cookbook README for wiqd prerequisites and installation instructions.\n\n```bash\nnode --version\nwiqd --version\nwiqd doctor\n```\n\nIf you plan to use the CLI, also run `copilot --version`.\n\n**Checkpoint:** Node reports version 24 or later, and the commands for your\nchosen workflow complete successfully.\n\n## Build the agent\n\n### Step 2: Create the workspace\n\n```bash\nmkdir -p mind-your-language && cd mind-your-language\n```\n\n### Step 3: Start Copilot\n\nIn the GitHub Copilot app, open the **Default agent** selector and choose\n**wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nStart with a clean conversation:\n\n```text\n/clear\n```\n\n### Step 4: Scaffold the agent\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a new declarative agent called Mind Your Language that acts as a tone coach. When a user pastes text, detect passive-aggressive, sarcastic, or unkind phrasing and rewrite it in a kinder, more constructive tone. Explain what changed and why, and offer alternative phrasings ranked from most direct to most gentle. If the text is already kind, confirm that no changes are needed.\n```\n\nReview and approve the proposed file changes.\n\n**Checkpoint:** the current directory contains a new agent project with manifest and instruction files.\n\n### Step 5: Review the instructions\n\nConfirm the generated instructions tell the agent to:\n\n- Detect passive-aggressive, sarcastic, or harsh phrasing\n- Identify phrases that could land poorly\n- Preserve the original intent in a kinder rewrite\n- Briefly explain why each change improves the tone\n- Offer two or three alternatives from direct to gentle\n- Leave already-kind text unchanged\n\nAsk Copilot to correct any missing behavior. Keep this Copilot session open for the remaining steps.\n\n## Run the agent\n\n### Step 6: Move into the agent project\n\nCopilot reports the path of the project it created. Move the current session into that project root:\n\n```text\n/cwd <path-to-new-agent-project>\n```\n\nReplace the placeholder with the path Copilot reported.\n\n**Checkpoint:** the current directory contains the agent's `appPackage` directory and lifecycle configuration file.\n\n### Step 7: Validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nValidate the agent with wiqd. If validation reports errors, explain them and help me fix them before continuing.\n```\n\n**Checkpoint:** validation completes without errors.\n\n### Step 8: Provision to dev\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision the agent to the dev environment with wiqd.\n```\n\n**Checkpoint:** provisioning succeeds and returns a Microsoft 365 Copilot share link.\n\n### Step 9: Open in Copilot\n\nEnter this prompt in the same Copilot session:\n\n```text\nOpen the provisioned agent in Microsoft 365 Copilot with wiqd.\n```\n\n## Try it\n\n| Prompt | Expected behavior |\n|---|---|\n| `Per my last email, I already explained this.` | Flags the passive-aggressive phrase and offers kinder rewrites |\n| `Great job finishing that a week late.` | Detects sarcasm and suggests a constructive alternative |\n| `Thanks for your help today!` | Confirms the positive tone and suggests no changes |\n\n## Reset the lab\n\nFrom the parent directory of `mind-your-language`:\n\n```bash\nrm -rf mind-your-language\n```\n\nDeleting the local folder does not remove provisioned resources.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/mind-your-language-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","tools/wiqd/cookbooks/declarative-agents/photobooth-agent/README.md":"# Photobooth agent: interactive lab\n\nBuild and open a Microsoft 365 Copilot agent that turns uploaded images into photobooth-style composites. This README is organized like a notebook: run one cell at a time, confirm its checkpoint, and then continue.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Run terminal commands in a\n> terminal, enter prompts in the GitHub Copilot app or CLI, and keep the same\n> Copilot conversation open for all remaining steps.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` installed and signed in\n- Access to the GitHub Copilot app or GitHub Copilot CLI\n- Permission to provision an agent to a dev environment\n\n### Step 1: Check the environment\n\n> [!NOTE]\n> See [Getting started](../../README.md#getting-started) in the cookbook README for wiqd prerequisites and installation instructions.\n\n```bash\nnode --version\nwiqd --version\nwiqd doctor\n```\n\nIf you plan to use the CLI, also run `copilot --version`.\n\n**Checkpoint:** Node reports version 24 or later, and the commands for your\nchosen workflow complete successfully.\n\n## Build the agent\n\n### Step 2: Create the workspace\n\n```bash\nmkdir -p photobooth-agent && cd photobooth-agent\n```\n\n### Step 3: Start Copilot\n\nIn the GitHub Copilot app, open the **Default agent** selector and choose\n**wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nStart with a clean conversation:\n\n```text\n/clear\n```\n\n### Step 4: Scaffold the agent\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a new declarative agent called Photobooth that accepts user-uploaded images and creates photobooth-style image responses. Apply creative filters such as black-and-white, sepia, pop-art, and sketch. Combine multiple styled versions into a single photobooth strip and return the composite image. Let users request specific styles or regenerate the result with different effects.\n```\n\nReview and approve the proposed file changes.\n\n**Checkpoint:** the current directory contains a new agent project with manifest and instruction files.\n\n### Step 5: Review the instructions\n\nConfirm the generated instructions tell the agent to:\n\n- Accept one or more user-uploaded images\n- Apply black-and-white, sepia, pop-art, and sketch styles\n- Arrange styled images in a 2-by-2 or 1-by-4 strip\n- Return the composite image directly in chat\n- Honor requests for specific styles or regeneration\n\nAsk Copilot to correct any missing behavior. Keep this Copilot session open for the remaining steps.\n\n## Run the agent\n\n### Step 6: Move into the agent project\n\nCopilot reports the path of the project it created. Move the current session into that project root:\n\n```text\n/cwd <path-to-new-agent-project>\n```\n\nReplace the placeholder with the path Copilot reported.\n\n**Checkpoint:** the current directory contains the agent's `appPackage` directory and lifecycle configuration file.\n\n### Step 7: Validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nValidate the agent with wiqd. If validation reports errors, explain them and help me fix them before continuing.\n```\n\n**Checkpoint:** validation completes without errors.\n\n### Step 8: Provision to dev\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision the agent to the dev environment with wiqd.\n```\n\n**Checkpoint:** provisioning succeeds and returns a Microsoft 365 Copilot share link.\n\n### Step 9: Open in Copilot\n\nEnter this prompt in the same Copilot session:\n\n```text\nOpen the provisioned agent in Microsoft 365 Copilot with wiqd.\n```\n\n## Try it\n\n| Prompt | Expected behavior |\n|---|---|\n| Upload a photo and ask `Create a photobooth strip` | Returns four styled versions in one composite |\n| `Make it all pop-art style` | Regenerates every frame in pop-art style |\n| Upload two photos and ask `Combine these into a photobooth` | Uses both images with different effects |\n\n## Reset the lab\n\nFrom the parent directory of `photobooth-agent`:\n\n```bash\nrm -rf photobooth-agent\n```\n\nDeleting the local folder does not remove provisioned resources.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/photobooth-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","tools/wiqd/cookbooks/declarative-agents/public-web-research-agent/README.md":"# Build a public web research agent\n\nCreate a research agent grounded in two public, authoritative sources:\nMicrosoft Learn and Microsoft-owned GitHub repositories. This demonstrates\nsite-scoped web grounding without private tenant content.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Run from a parent directory where `microsoft-tech-radar` does not already\n  exist.\n\n## Build and validate\n\nStart one interactive Copilot session. In the GitHub Copilot app, open the\n**Default agent** selector and choose **wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nCreate a declarative agent project named microsoft-tech-radar and make the\ngenerated project root the current working directory. Call the agent Microsoft\nTech Radar. Add WebSearch grounded only in these sites:\n- https://learn.microsoft.com/\n- https://github.com/microsoft/\n\nInstruct it to prefer current official documentation, cite every factual\nrecommendation, distinguish documented facts from its recommendation, and state\nwhen it cannot find current evidence. Add conversation starters for feature\nresearch, migration research, and repository discovery. Run static validation\nand stop before provisioning.\n```\n\n**Checkpoint:** validation passes and the WebSearch capability contains only\nthe two public source scopes.\n\n## Provision and test\n\nEnter:\n\n```text\nProvision Microsoft Tech Radar to the dev environment and show me its Microsoft\n365 Copilot launch URL.\n```\n\nOpen the returned URL and try:\n\n| Prompt | Expected behavior |\n|---|---|\n| `What is the current guidance for connecting an MCP server to Microsoft 365 Copilot?` | Uses current Microsoft Learn pages and cites them |\n| `Find a Microsoft-owned GitHub repository related to declarative agents.` | Uses the scoped GitHub source and links the repository |\n| `Recommend an approach and separate the facts from your recommendation.` | Labels sourced facts and its recommendation distinctly |\n\n**Checkpoint:** answers contain links from the configured public sources rather\nthan unsupported claims.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/public-web-research-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","tools/wiqd/cookbooks/declarative-agents/sharepoint-knowledge-agent/README.md":"# Ground an existing agent in your SharePoint content\n\nUpgrade an existing declarative agent so it answers only from a SharePoint site\nor folder you are authorized to use. This lab focuses on source scoping,\ncitations, and grounded-only behavior instead of repeating project scaffolding.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Start in an existing, statically validated declarative-agent project. The\n  [Zero to agent](../zero-to-agent/README.md) project is sufficient.\n- Choose one SharePoint site, library, or folder that your signed-in account can\n  read.\n- Pick one fact that exists in the selected content and one question that the\n  content cannot answer.\n\n## Add organizational grounding\n\nStart one interactive Copilot session from the existing agent project root. In\nthe GitHub Copilot app, open the **Default agent** selector and choose **wiqd**.\nIf you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nI want to ground this existing agent in one SharePoint source. Inspect the\ncurrent manifest and instructions, then ask me for the exact SharePoint site,\nlibrary, or folder URL that I am authorized to use. Do not change the project\nuntil I provide it.\n```\n\nWhen Copilot asks for the source, enter:\n\n```text\nUse this SharePoint URL and no other tenant content:\n<paste your authorized SharePoint URL>\n\nScope the OneDriveAndSharePoint capability to exactly that URL. Preserve the\nagent's existing purpose, upgrade the declarative-agent schema only if required,\nset discourage_model_knowledge to true, and update the instructions and\nconversation starters so answers cite the document used. If the source is\nunavailable or does not contain the answer, say so instead of guessing. Run\nstatic validation and stop before provisioning.\n```\n\n**Checkpoint:** validation passes, the existing agent retains its original\npurpose, and its new grounding scope contains only the URL you supplied.\n\n## Deploy the update\n\nEnter:\n\n```text\nProvision the updated agent to its existing development environment and show me\nthe Microsoft 365 Copilot launch URL.\n```\n\nOpen the returned URL and test:\n\n| Prompt | Expected behavior |\n|---|---|\n| Ask about the fact selected before starting | Answers from the configured content and cites the source |\n| Ask for the title or summary of a document in the scoped folder | Retrieves only from the supplied location |\n| Ask the deliberately unanswerable question | States that the configured source does not contain the answer |\n\n**Checkpoint:** the added organizational grounding is observable without\nturning the recipe into another first-agent walkthrough.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/sharepoint-knowledge-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","tools/wiqd/cookbooks/declarative-agents/translator-agent/README.md":"# Translator agent: interactive lab\n\nBuild and open a Microsoft 365 Copilot agent that translates text into any requested language. This README is organized like a notebook: run one cell at a time, confirm its checkpoint, and then continue.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Run terminal commands in a\n> terminal, enter prompts in the GitHub Copilot app or CLI, and keep the same\n> Copilot conversation open for all remaining steps.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` installed and signed in\n- Access to the GitHub Copilot app or GitHub Copilot CLI\n- Permission to provision an agent to a dev environment\n\n### Step 1: Check the environment\n\n> [!NOTE]\n> See [Getting started](../../README.md#getting-started) in the cookbook README for wiqd prerequisites and installation instructions.\n\n```bash\nnode --version\nwiqd --version\nwiqd doctor\n```\n\nIf you plan to use the CLI, also run `copilot --version`.\n\n**Checkpoint:** Node reports version 24 or later, and the commands for your\nchosen workflow complete successfully.\n\n## Build the agent\n\n### Step 2: Create the workspace\n\n```bash\nmkdir -p translator-agent && cd translator-agent\n```\n\n**Checkpoint:** your terminal is now in the `translator-agent` directory.\n\n### Step 3: Start Copilot\n\nIn the GitHub Copilot app, open the **Default agent** selector and choose\n**wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nThe remaining prompts in this section belong inside that Copilot session. Start with a clean conversation:\n\n```text\n/clear\n```\n\n### Step 4: Scaffold the agent\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a new declarative agent called Translator that translates text into any language the user requests. Ask for the target language when it is not specified, preserve the source formatting and tone, and return only the translated text without explanation. Support follow-up requests such as \"now in French\" by translating the previous source text again.\n```\n\nReview and approve the file changes Copilot proposes.\n\n**Checkpoint:** the current directory contains a new agent project with manifest and instruction files.\n\n### Step 5: Review the instructions\n\nConfirm the generated instructions tell the agent to:\n\n- Detect the target language from the user's request\n- Ask for a target language when none is specified\n- Translate faithfully while preserving tone and formatting\n- Return only the translated text, with no preamble or explanation\n- Re-translate the previous source text for follow-up requests\n\nAsk Copilot to correct any missing behavior before continuing. Keep this Copilot session open for the remaining steps.\n\n## Run the agent\n\n### Step 6: Move into the agent project\n\nCopilot reports the path of the project it created. Move the current session into that project root:\n\n```text\n/cwd <path-to-new-agent-project>\n```\n\nReplace the placeholder with the path Copilot reported.\n\n**Checkpoint:** the current directory contains the agent's `appPackage` directory and lifecycle configuration file.\n\n### Step 7: Validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nValidate the agent with wiqd. If validation reports errors, explain them and help me fix them before continuing.\n```\n\n**Checkpoint:** validation completes without errors.\n\n### Step 8: Provision to dev\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision the agent to the dev environment with wiqd.\n```\n\n**Checkpoint:** provisioning succeeds and returns a Microsoft 365 Copilot share link.\n\n### Step 9: Open in Copilot\n\nEnter this prompt in the same Copilot session:\n\n```text\nOpen the provisioned agent in Microsoft 365 Copilot with wiqd.\n```\n\n**Checkpoint:** the Translator agent opens in Microsoft 365 Copilot.\n\n## Try it\n\n| Prompt | Expected behavior |\n|---|---|\n| `Translate \"Good morning, how are you?\" to Japanese` | Returns only the Japanese translation |\n| `Now in Spanish` | Translates the original text into Spanish |\n| `Translate \"Hello world\"` | Asks which target language you want |\n\n## Reset the lab\n\nTo remove only the local trial project, close Copilot and run this from the parent directory of `translator-agent`:\n\n```bash\nrm -rf translator-agent\n```\n\nProvisioned resources are not removed by deleting the local folder. Use the appropriate `wiqd` cleanup command for your environment if you also want to remove the provisioned agent.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/translator-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","tools/wiqd/cookbooks/declarative-agents/zero-to-agent/README.md":"# Zero to agent: interactive lab\n\nBuild and open a Microsoft 365 Copilot agent from an empty folder. This README is organized like a notebook: run one cell at a time, confirm its checkpoint, and then continue.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Run terminal commands in a\n> terminal, enter prompts in the GitHub Copilot app or CLI, and keep the same\n> Copilot conversation open for all remaining steps.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` installed and signed in\n- Access to the GitHub Copilot app or GitHub Copilot CLI\n- Permission to provision an agent to a dev environment\n\n### Step 1: Check the environment\n\n> [!NOTE]\n> See [Getting started](../../README.md#getting-started) in the cookbook README for wiqd prerequisites and installation instructions.\n\nRun in a terminal:\n\n```bash\nnode --version\nwiqd --version\nwiqd doctor\n```\n\nIf you plan to use the CLI, also run `copilot --version`.\n\n**Checkpoint:** Node reports version 24 or later, and the commands for your\nchosen workflow complete successfully.\n\n## Build the agent\n\n### Step 2: Create the workspace\n\n```bash\nmkdir -p hello-wiqd && cd hello-wiqd\n```\n\n**Checkpoint:** your terminal is now in the `hello-wiqd` directory.\n\n```bash\npwd\n```\n\n### Step 3: Start Copilot\n\nIn the GitHub Copilot app, open the **Default agent** selector and choose\n**wiqd**. If you prefer the CLI, start an interactive Copilot session from the\nproject directory:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nThe remaining prompts in this section belong inside that Copilot session. Start with a clean conversation:\n\n```text\n/clear\n```\n\n**Checkpoint:** Copilot clears its conversation context and waits for the next prompt.\n\n### Step 4: Scaffold the agent\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a new declarative agent called Hello WIQD. The agent should greet every user with a warm hello and introduce itself as having been created by WIQD. Give it the personality of a curious, innocent, and wonder-filled character, like a child seeing the world for the first time. It should be enthusiastic, gentle, and genuinely delighted to meet the user. Keep responses short, sweet, and warm.\n```\n\nReview and approve the file changes Copilot proposes.\n\n**Checkpoint:** the current directory contains a new agent project with manifest and instruction files.\n\nKeep this Copilot session open for the remaining steps.\n\n## Run the agent\n\n### Step 5: Move into the agent project\n\nCopilot reports the path of the project it created. Move the current session into that project root:\n\n```text\n/cwd <path-to-new-agent-project>\n```\n\nReplace the placeholder with the path Copilot reported.\n\n**Checkpoint:** the current directory contains the agent's `appPackage` directory and lifecycle configuration file.\n\n### Step 6: Validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nValidate the agent with wiqd. If validation reports errors, explain them and help me fix them before continuing.\n```\n\n**Checkpoint:** validation completes without errors. Fix any reported errors before continuing.\n\n### Step 7: Provision to dev\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision the agent to the dev environment with wiqd.\n```\n\n**Checkpoint:** provisioning succeeds and returns a Microsoft 365 Copilot share link.\n\n### Step 8: Open in Copilot\n\nEnter this prompt in the same Copilot session:\n\n```text\nOpen the provisioned agent in Microsoft 365 Copilot with wiqd.\n```\n\n**Checkpoint:** the Hello WIQD agent opens in Microsoft 365 Copilot.\n\n## Try it\n\nRun these prompts one at a time in the opened agent:\n\n| Prompt | Expected behavior |\n|---|---|\n| `Hi` | Greets you warmly, mentions WIQD, and expresses delight at meeting you |\n| `What are you?` | Describes itself with curiosity and child-like wonder |\n| `Tell me something fun` | Shares something with brief, genuine enthusiasm |\n\n## Reset the lab\n\nTo remove only the local trial project, close Copilot and run this from the parent directory of `hello-wiqd`:\n\n```bash\nrm -rf hello-wiqd\n```\n\nProvisioned resources are not removed by deleting the local folder. Use the appropriate `wiqd` cleanup command for your environment if you also want to remove the provisioned agent.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/zero-to-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","tools/wiqd/cookbooks/lifecycle/devui-debugging/README.md":"# Debug an agent in DevUI\n\nLaunch WIQD's local DevUI, send a real prompt, and inspect the full turn:\nmatched and selected plugins, tool execution, grounding, citations, request\nidentifiers, latency, raw JSON, and failures.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Start in a provisioned declarative-agent project.\n- For the richest tool trace, use\n  [Zava Insurance agent](../../declarative-agents/insurance-agent-mcp/README.md).\n- DevUI binds only to `127.0.0.1` and uses your existing Work IQ\n  authentication.\n\n## Enable and launch DevUI\n\nStart one interactive Copilot session from the agent project root. In the\nGitHub Copilot app, open the **Default agent** selector and choose **wiqd**. If\nyou prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nEnable the WIQD devui preview flag with the supported config command. Read this\nproject's provisioned title ID, then start DevUI for that agent. Use direct\ntransport and open the browser. Do not modify or re-provision the agent.\n```\n\n**Checkpoint:** DevUI opens locally with the intended agent preselected.\n\n## Watch a successful turn\n\nFor Zava Claims Guide, enter:\n\n```text\nUse WIQD DevUI ask to send \"Summarize claim CN202504990\" to this agent and open\nthe live turn. Then tell me which plugin and tool DevUI selected, whether the\ntool execution succeeded, and which request, conversation, and task IDs identify\nthe run.\n```\n\nFor another agent, replace the quoted prompt with one of its conversation\nstarters.\n\n**Checkpoint:** DevUI shows the matched and selected plugin, the executed tool\nwhen applicable, latency, raw event data, and the rendered answer.\n\n## Inspect grounding and failure behavior\n\nEnter:\n\n```text\nIn the same DevUI, run one prompt that should retrieve grounded content and one\nsafe prompt that should fail, such as an unknown demo claim number. Compare the\nretrieval and citation sections, tool arguments, execution result, and surfaced\nerror. Do not retry with invented identifiers and do not call a write tool.\n```\n\n**Checkpoint:** the grounded turn shows its evidence, while the failing turn\nshows a real error or empty result instead of a success-shaped answer.\n\n## Restore the preview flag\n\nWhen finished, enter:\n\n```text\nStop the running WIQD DevUI and reset the devui feature flag to its default.\n```\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/lifecycle/devui-debugging\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","tools/wiqd/cookbooks/lifecycle/eval-hill-climb/README.md":"# Hill-climb agent quality with evals\n\nCreate a focused evaluation suite, run it, diagnose the weakest behavior, fix\nthe agent rather than the test, and compare the next run. This recipe uses\nWIQD's GitHub Copilot judge path, so Azure OpenAI credentials are not required\nunless you deliberately select the Azure judge.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Start in a declarative-agent project with non-empty instructions.\n- Provision the agent before running live evals.\n- Authenticate GitHub CLI if the GitHub Copilot judge cannot use an existing\n  session: `gh auth login`.\n\n## Initialize a focused suite\n\nStart one interactive Copilot session from the agent project root. In the\nGitHub Copilot app, open the **Default agent** selector and choose **wiqd**. If\nyou prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nInitialize WIQD evals for this provisioned agent. Inspect the manifest,\ninstructions, grounding sources, and actions. Propose a focused suite that\ncovers every applicable Perceive, Reason, and Act behavior plus boundaries and\nfailure handling. Show every proposed add or update as a diff and wait for my\napproval before writing an eval file. Do not lower thresholds, remove\nGroundedness or Citations, or delete a failing scenario to improve the score.\n```\n\nReview the proposed cases and approve only when they describe behavior the agent\nshould actually satisfy.\n\n**Checkpoint:** `evals/prompts.json` contains approved, scenario-specific tests\nrather than only generic starter prompts.\n\n## Run and diagnose\n\nEnter:\n\n```text\nRun the eval suite with WIQD using the GitHub Copilot judge and write a\ntimestamped HTML scorecard under .evals. Analyze failures by root cause:\ninstruction, grounding, citation, tool selection, capability gap, or a genuinely\nincorrect eval. Report the weakest evaluator and the exact prompts that expose\nthe problem.\n```\n\n**Checkpoint:** the result includes a pass rate, per-evaluator scores, and a\nroot-cause diagnosis tied to specific prompts.\n\n## Improve the agent, not the bar\n\nEnter:\n\n```text\nFix the highest-impact agent issue from the latest eval run. Preserve the eval\nsuite, evaluator coverage, and thresholds. Make the smallest instruction or\ncapability change that addresses the root cause, validate the project,\nre-provision it, rerun the same eval suite, and compare the two scorecards.\nStop if the proposed fix would require weakening a test.\n```\n\n**Checkpoint:** the second report uses the same suite and shows whether the\ntargeted score improved. A regression remains visible instead of being hidden\nby easier tests.\n\n## Continue the hill climb\n\nRepeat one root-cause fix at a time. Add a new regression case when a real gap is\ndiscovered, but always review and approve the eval diff before it is written.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/lifecycle/eval-hill-climb\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","tools/wiqd/cookbooks/lifecycle/team-delivery/README.md":"# Deliver an agent to a team\n\nTake a validated agent from local development to a targeted team preview:\nconfigure shared scope, provision the shared environment, package resolved\nartifacts, deep-validate the package, and share it with named users or a\nmail-enabled security group.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Start in a validated declarative-agent project.\n- Obtain the exact email addresses of preview users or the mail address of a\n  security group. WIQD does not resolve display names.\n- Confirm that your tenant permits app upload and sharing.\n\n## Configure the shared environment\n\nStart one interactive Copilot session from the project root. In the GitHub\nCopilot app, open the **Default agent** selector and choose **wiqd**. If you\nprefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nPrepare this agent for a team preview in the dev environment. Inspect the\nexisting environment configuration first. Create the dev environment through\nWIQD if it does not exist, configure AGENT_SCOPE=shared without adding secrets,\nand ensure shared-version handling is correct. Show me the resulting non-secret\nenvironment settings and stop before provisioning.\n```\n\n**Checkpoint:** the dev environment is explicitly shared and contains no\nhardcoded tenant ID, title ID, OAuth reference ID, secret, or recipient address.\n\n## Provision, package, and validate\n\nEnter:\n\n```text\nRun the team delivery gates in this exact order for dev:\n1. Static validation\n2. Provision the shared agent\n3. Package the provisioned agent so environment values are resolved\n4. Deep validation of the generated package\n\nStop on any validation error. Report skipped deep-validation providers\nseparately from passing providers, and show the Copilot launch URL on success.\n```\n\n**Checkpoint:** provisioning precedes packaging, the package has resolved\nenvironment values, and no validation error is hidden.\n\n## Share with a bounded audience\n\nEnter:\n\n```text\nShare the dev agent with these authorized recipients:\n<comma-separated user addresses or one mail-enabled security-group address>\n\nUse users scope, not tenant scope. Report the exact share result and do not\nbroaden access beyond the addresses I supplied.\n```\n\n**Checkpoint:** the share command reports success for the supplied users or\ngroup. Each recipient can open the launch URL after tenant propagation\ncompletes.\n\n## Update safely\n\nFor a later content or manifest change, keep the same Copilot session and enter:\n\n```text\nValidate this shared agent, apply the required shared-agent patch version bump,\nre-provision dev, rebuild the package, and deep-validate it. Preserve the\nexisting audience unless I explicitly ask to change sharing.\n```\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/lifecycle/team-delivery\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","tools/wiqd/cookbooks/plugins/learn-tech-advisor/README.md":"# Upgrade the Learn connector into a technology advisor\n\nTurn the existing Microsoft Learn connector plugin into a composite,\nindependently shippable plugin by adding reusable decision logic and a\ndeclarative-agent experience. This lab starts after connector setup so it does\nnot repeat endpoint discovery or tool-description authoring.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Complete [Microsoft Learn MCP connector](../microsoft-learn-mcp/README.md), or\n  start from a validated copy of that plugin.\n- Confirm that `appPackage/manifest.json` already contains the Microsoft Learn\n  connector and its MCP tool-description file.\n\n## Add the reusable skill and agent\n\nStart one interactive Copilot session from the connector plugin root. In the\nGitHub Copilot app, open the **Default agent** selector and choose **wiqd**. If\nyou prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nUpgrade this existing Microsoft Learn connector plugin into a technology\nadvisor. Do not recreate or alter the connector endpoint. Use the supported\nWIQD plugin add commands to add a skill named Technology Finder and a\ndeclarative agent component.\n\nReplace the generated skill template with a reusable decision workflow:\n- Ask for the user's goal, preferred language or platform, and hard constraints.\n- Search official documentation before comparing options.\n- Search official code samples when implementation detail is requested.\n- Fetch the most relevant pages before giving a final recommendation.\n- Compare two or three viable options in a concise table.\n- Separate sourced facts from the recommendation and link every source.\n- Say when official documentation does not support a claim.\n\nConfigure the declarative agent to invoke the skill for technology-selection\nquestions. Add conversation starters, show the plugin summary, run static\nvalidation, and stop before provisioning.\n```\n\n**Checkpoint:** the existing connector remains unchanged, the plugin summary\nnow lists `agentConnectors`, `agentSkills`, and `declarativeAgent`, the skill is\nno longer a template, and validation passes.\n\n## Deploy the composite update\n\nEnter:\n\n```text\nProvision or re-provision this composite plugin locally. Then package it and\ndeep-validate the generated package. Show me any skipped provider instead of\ntreating a skip as a pass.\n```\n\nEnable the updated plugin in Copilot Cowork and try:\n\n| Prompt | Expected behavior |\n|---|---|\n| `Should I use Azure Functions or Container Apps for a small event-driven API?` | Asks for missing constraints, retrieves current docs, compares options, and recommends one |\n| `Show the current TypeScript approach for DefaultAzureCredential.` | Uses code-sample search and links the official source |\n| `What evidence supports that recommendation?` | Fetches the strongest pages and separates evidence from judgment |\n\n**Checkpoint:** the reusable skill turns connector results into a repeatable\ndecision workflow rather than another raw documentation search.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/plugins/learn-tech-advisor\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","tools/wiqd/cookbooks/plugins/microsoft-learn-mcp/README.md":"# Microsoft Learn MCP connector: first Copilot Cowork plugin\n\nBuild, install, and test a plugin that searches and reads current Microsoft Learn documentation through the public Microsoft Learn MCP server as an agent connector.\n\nThe server at `https://learn.microsoft.com/api/mcp` is free, uses streamable HTTP, and does not require authentication. It currently exposes tools to search documentation, search code samples, and fetch complete documentation pages.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Start Copilot once, enter each prompt in the same session, and confirm its checkpoint before continuing.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` v0.13.1 or later installed and signed in\n- Access to Copilot Cowork\n- Permission to provision and share an app in your Microsoft 365 development tenant\n\nSee [Getting started](../../README.md#getting-started) for installation and sign-in instructions.\n\n### Step 1: Check the environment\n\nStart the WIQD Copilot agent. In the GitHub Copilot app, open the\n**Default agent** selector and choose **wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter this prompt:\n\n```text\nCheck that my environment is ready to build and provision a plugin with WIQD. Confirm that Node.js is version 24 or later, WIQD is version 0.13.1 or later, I am signed in, and WIQD doctor reports no blocking errors. Help me fix any failed check before continuing.\n```\n\n**Checkpoint:** Copilot confirms that the environment is ready.\n\n## Build the plugin\n\n### Step 2: Create the plugin\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a standalone plugin called Microsoft Learn Helper.\n```\n\n**Checkpoint:** the current working directory is the generated plugin root and contains `wiqd.plugin.json`, `m365agents.yml`, and `appPackage/manifest.json`.\n\n### Step 3: Add the no-auth connector\n\nEnter this prompt in the same Copilot session:\n\n```text\nAdd a connector named Microsoft Learn to this plugin using the public MCP endpoint https://learn.microsoft.com/api/mcp. Configure it with no authentication. Inspect the server's current tools and include an MCP tool-description file in the app package so the connector can be verified by Copilot Cowork. Its purpose is to search and read current official Microsoft documentation and code samples.\n```\n\nReview and approve the proposed file changes.\n\n**Checkpoint:** `appPackage/manifest.json` contains a Microsoft Learn entry in `agentConnectors`, references a tool-description file in the app package, and has no authorization block.\n\n### Step 4: Inspect and validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nShow me a summary of this plugin, then validate it locally with WIQD. If validation reports errors, explain and fix them before continuing.\n```\n\n**Checkpoint:** the plugin summary lists the Microsoft Learn connector and static validation completes successfully.\n\n## Install the plugin in Copilot Cowork\n\n### Step 5: Provision the plugin\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision this Copilot Cowork plugin.\n```\n\n**Checkpoint:** WIQD reports that **Microsoft Learn Helper** was provisioned successfully.\n\n## Test it in Copilot Cowork\n\n1. Open Copilot Cowork.\n2. Open the plugin UI and find the provisioned **Microsoft Learn Helper** plugin.\n3. Install the plugin.\n4. Start a new Copilot Cowork session with **Microsoft Learn Helper** enabled.\n5. Run each prompt below and confirm that Cowork invokes the expected connector tool and returns content from Microsoft Learn.\n\n| Prompt | Expected behavior |\n|---|---|\n| `Find the current Microsoft guidance for building a remote MCP server in TypeScript.` | Calls `microsoft_docs_search` and summarizes relevant official documentation with links. |\n| `Show me a C# code sample for authenticating with DefaultAzureCredential.` | Calls `microsoft_code_sample_search` with C# as the language. |\n| `Read this Learn page and summarize its prerequisites: <Microsoft Learn URL>` | Calls `microsoft_docs_fetch` for the supplied URL. |\n\n## References\n\n- [Build a plugin with WIQD](https://microsoft.github.io/wiqd/getting-started/build-a-plugin/)\n- [WIQD plugin authoring reference](https://microsoft.github.io/wiqd/getting-started/plugin-reference/)\n- [Microsoft Learn MCP Server overview](https://learn.microsoft.com/training/support/mcp)\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/plugins/microsoft-learn-mcp\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).","tools/wiqd/cookbooks/plugins/plugin-portability/README.md":"# Round-trip a plugin across formats\n\nExport a validated WIQD plugin to the Agent Plugin, Claude, and Cursor formats,\nthen import the Agent Plugin export into a fresh WIQD project and validate that\nthe connector, skill, and declarative agent survived.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Start from a validated composite plugin such as\n  [Learn Technology Advisor](../learn-tech-advisor/README.md).\n- Keep the entire export directory together. The declarative-agent payload is\n  carried beside the exported manifest and is required for a lossless import.\n\n## Export the plugin\n\nFrom the validated plugin root, start one interactive Copilot session. In the\nGitHub Copilot app, open the **Default agent** selector and choose **wiqd**. If\nyou prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nValidate this WIQD plugin. If validation is clean, export it with the supported\nWIQD plugin export command to all three formats: open-plugin, claude-plugin, and\ncursor-plugin. Put each format in its default export directory. Do not provision\nor change the source plugin.\n```\n\n**Checkpoint:** the plugin contains `export/open-plugin`,\n`export/claude-plugin`, and `export/cursor-plugin`, and each export has its\nformat-specific manifest plus the carried skill and agent content.\n\n## Prove the round trip\n\nEnter:\n\n```text\nImport export/open-plugin into a new sibling project named\n<current-plugin-name>-roundtrip using the supported WIQD plugin import command.\nBecause this export came from WIQD, reuse its round-trip privacy, terms, and\nagent metadata rather than inventing replacements. Show the imported plugin and\nrun static validation. Compare its capability list with the source plugin.\n```\n\n**Checkpoint:** import reports that the agent was restored, validation passes,\nand both projects list the same `agentConnectors`, `agentSkills`, and\n`declarativeAgent` capabilities.\n\n## Test the boundary\n\nCopy an entire export directory to a temporary location and import it again.\nDo not copy only the manifest: that intentionally omits the carried agent and is\nnot a valid lossless round trip.\n\n**Checkpoint:** a complete exported directory imports successfully without\nasking for new privacy or terms URLs.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/plugins/plugin-portability\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n"},"items":[{"name":"report-template.md","path":"samples/plugins/retirement-radar-plugin/appPackage/skills/retirement-radar/references/report-template.md","rawUrl":"https://raw.githubusercontent.com/microsoft/plugins/HEAD/samples/plugins/retirement-radar-plugin/appPackage/skills/retirement-radar/references/report-template.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"# Retirement Radar report template\n\n**Verdict:** {N} of {M} Microsoft dependencies need action - {X} are already retired.\n\n| # | Finding | Where in your code | Status | Official date | Replacement | Source |\n|---|---|---|---|---|---|---|\n| 1 | {technology} | line {n}: `{snippet}` | Broken now / Breaking soon / Deprecated / OK | {date exactly as in docs} | {replacement} | [{doc title}]({learn url}) |\n\n## Fixes\n\n### 1. {technology} -> {replacement}\nBefore:\n```{language}\n{original lines}\n```\nAfter:\n```{language}\n{rewritten lines, based on the official sample}\n```\nWhy: {one sentence quoting or paraphrasing the Learn doc}.\n\n## Migration checklist\n1. [ ] Broken now: {item} - {first concrete step}\n2. [ ] Breaking soon: {item}\n3. [ ] Deprecated: {item}\n\n_All dates and replacements verified against Microsoft Learn on {today's date}._\n","isInternal":false,"tokens":223,"sizeBytes":837},{"name":"SKILL.md","path":"samples/plugins/retirement-radar-plugin/appPackage/skills/retirement-radar/SKILL.md","rawUrl":"https://raw.githubusercontent.com/microsoft/plugins/HEAD/samples/plugins/retirement-radar-plugin/appPackage/skills/retirement-radar/SKILL.md","title":"retirement-radar","category":"anthropic-skill","format":"markdown","content":"---\nname: retirement-radar\ndescription: Scans code, scripts, config files, package lists or architecture notes for Microsoft APIs, SDKs, PowerShell modules, endpoints and services that are deprecated or retired, verifies each one live against official Microsoft Learn documentation, and returns a dated risk table with the supported replacement and a rewritten snippet. Use when the user asks \"is this still supported?\", \"what's deprecated in my code?\", \"why did my script/webhook stop working?\", \"check my dependencies for retirement\", or pastes code that uses AzureAD, MSOnline, AzureRM, ADAL, Azure AD Graph, Office 365 connectors or other legacy Microsoft tech. Do not use for general coding help unrelated to deprecation or for non-Microsoft technologies.\nlicense: MIT\ncompatibility: Requires the Microsoft Learn MCP server (https://learn.microsoft.com/api/mcp) with the tools microsoft_docs_search, microsoft_docs_fetch and microsoft_code_sample_search.\nmetadata:\n  author: Contoso Cloud Advocacy\n  version: \"1.0.0\"\n---\n\n# Retirement Radar\n\nTurn \"I think this still works\" into \"here is the official date, the replacement, and the fixed code\".\n\n## When to use\n- The user pastes code, a script, `package.json`, `.csproj`, `requirements.txt`, an ARM/Bicep template, or a description of their architecture.\n- The user asks whether something is deprecated, retired, still supported, or why it suddenly stopped working (401/403/410 errors from an old endpoint are a strong signal).\n\n## Step 1 - Inventory the signals\nExtract every Microsoft technology reference. Look for:\n\n| Signal type | Examples |\n|---|---|\n| PowerShell modules / cmdlet prefixes | `Connect-AzureAD`, `*-AzureAD*`, `Connect-MsolService`, `*-Msol*`, `*-AzureRM*` |\n| Packages | `Microsoft.IdentityModel.Clients.ActiveDirectory` (ADAL.NET), `adal` (Python/Node), `msrestazure`, `WindowsAzure.Storage`, `Microsoft.Azure.Management.*` |\n| Endpoints | `graph.windows.net` (Azure AD Graph), `outlook.office.com/webhook`, `*.webhook.office.com/webhookb2` (Office 365 connectors), `login.windows.net` |\n| Services / features | Office 365 connectors in Teams, basic auth for Exchange Online, classic (ASM) resources |\n\nRecord where each signal appears (line number or snippet) so the report can point to it.\n\n## Step 2 - Verify every signal on Microsoft Learn\nFor each signal, in this order:\n1. `microsoft_docs_search` with `\"<technology> retirement date\"` or `\"<technology> deprecated migrate to\"`.\n2. If the excerpt does not contain a date or a named replacement, call `microsoft_docs_fetch` on the most relevant `learn.microsoft.com` URL from the search results.\n3. Capture: status wording, the exact date(s), the named replacement, and the source URL.\n\nHard rule: never state a date, status or replacement you did not read in a tool result. If nothing is found, report \"No retirement notice found on Learn\".\n\n## Step 3 - Classify against today's date\n| Status | Rule |\n|---|---|\n| Broken now | Official retirement / end-of-support date is in the past |\n| Breaking soon | Retirement date is within the next 12 months |\n| Deprecated | Docs say deprecated / no new investment, but no firm date |\n| OK | Verified current, or no retirement notice found |\n\n## Step 4 - Build the fix\nFor every non-OK finding, call `microsoft_code_sample_search` for the replacement, passing `language` to match the user's code (for example `powershell`, `csharp`, `python`). Rewrite only the affected lines, preserve the user's variable names, and keep the result runnable.\n\n## Step 5 - Report\nUse the template in [references/report-template.md](references/report-template.md):\n1. One-line verdict, for example: \"3 of 5 Microsoft dependencies in this script are already retired.\"\n2. Risk table: Finding | Where | Status | Official date | Replacement | Source.\n3. Before -> After code blocks for the highest-risk findings.\n4. Prioritized migration checklist (Broken now first, then Breaking soon, then Deprecated).\n\n## Safety\n- If the input contains secrets (keys, tokens, connection strings, webhook URLs) warn the user and redact them in the output.\n- Do not invent cmdlets, packages or endpoints. If a replacement mapping is not in the docs, say so.\n","frontmatter":{"name":"retirement-radar","description":"Scans code, scripts, config files, package lists or architecture notes for Microsoft APIs, SDKs, PowerShell modules, endpoints and services that are deprecated or retired, verifies each one live against official Microsoft Learn documentation, and returns a dated risk table with the supported replacement and a rewritten snippet. Use when the user asks \"is this still supported?\", \"what's deprecated in my code?\", \"why did my script/webhook stop working?\", \"check my dependencies for retirement\", or pastes code that uses AzureAD, MSOnline, AzureRM, ADAL, Azure AD Graph, Office 365 connectors or other legacy Microsoft tech. Do not use for general coding help unrelated to deprecation or for non-Microsoft technologies.","license":"MIT","compatibility":"Requires the Microsoft Learn MCP server (https://learn.microsoft.com/api/mcp) with the tools microsoft_docs_search, microsoft_docs_fetch and microsoft_code_sample_search.","metadata":{"author":"Contoso Cloud Advocacy","version":"1.0.0"}},"isInternal":false,"tokens":955,"sizeBytes":4195},{"name":"README.md","path":"samples/plugins/microsoft-learn-plugin/README.md","rawUrl":"https://raw.githubusercontent.com/microsoft/plugins/HEAD/samples/plugins/microsoft-learn-plugin/README.md","title":"microsoft-learn-plugin Documentation","category":"plugin-manifest","format":"markdown","content":"# Microsoft Learn Helper\n\nMicrosoft Learn Helper is a Microsoft 365 Copilot plugin that searches and\nreads current official Microsoft documentation and code samples.\n\nThe plugin connects to the public\n[Microsoft Learn MCP server](https://learn.microsoft.com/api/mcp). The\nconnector is read-only and does not require an API key or user sign-in.\n\n## What this sample demonstrates\n\n- Adding a remote MCP server as an agent connector\n- Describing MCP tools for Microsoft 365 Copilot\n- Searching current Microsoft documentation\n- Fetching complete documentation pages for additional context\n- Finding official code samples by language\n- Packaging and provisioning a connector plugin\n\n## Try the plugin\n\n### Prerequisites\n\nYou need:\n\n- Access to Microsoft 365 Copilot Cowork\n- Permission to upload a custom plugin in your tenant\n- Copilot Credits for testing in Cowork\n\n### 1. Upload the package\n\nUse the prebuilt [`package.zip`](package.zip), or build a package from the\nsource files in [`appPackage/`](appPackage/).\n\nIn Microsoft 365 Copilot Cowork:\n\n1. Open the plugin inventory.\n2. Select the option to upload a custom plugin.\n3. Upload `package.zip`.\n4. Find **Microsoft Learn Helper** and enable it for the current Cowork\n   session.\n\nThe connector uses anonymous access, so Cowork should not ask you to sign in.\n\n### 2. Test the connector\n\nTry prompts such as:\n\n```text\nFind the current Microsoft documentation for building a declarative agent.\nSummarize the prerequisites and cite the source.\n```\n\n```text\nFind an official TypeScript code sample for authenticating with Microsoft\nGraph. Explain the sample and link to its source.\n```\n\n```text\nSearch Microsoft Learn for the latest Azure Functions Node.js guidance, then\nread the most relevant page and summarize its recommendations.\n```\n\n## Available tools\n\n| Tool | Purpose |\n|------|---------|\n| `microsoft_docs_search` | Searches official Microsoft documentation and returns relevant excerpts and source URLs |\n| `microsoft_docs_fetch` | Fetches the complete content of a Microsoft documentation page |\n| `microsoft_code_sample_search` | Finds current code samples in official Microsoft documentation, optionally filtered by language |\n\n## Project structure\n\n| File or folder | Purpose |\n|----------------|---------|\n| [`appPackage/manifest.json`](appPackage/manifest.json) | Defines the Microsoft Learn remote MCP connector |\n| [`appPackage/microsoft-learn-mcp-tools.json`](appPackage/microsoft-learn-mcp-tools.json) | Describes the MCP tools exposed to Copilot |\n| [`wiqd.plugin.json`](wiqd.plugin.json) | Identifies the project as a WIQD plugin with an agent connector |\n| [`m365agents.yml`](m365agents.yml) | Defines provisioning, validation, packaging, and publishing actions |\n| [`m365agents.local.yml`](m365agents.local.yml) | Defines the local provisioning workflow |\n\n## Develop the sample\n\nThis project includes Microsoft 365 Agents Toolkit lifecycle files. Open the\nproject in VS Code with Microsoft 365 Agents Toolkit, then use its lifecycle\ncommands to provision, package, validate, and publish the plugin to your\ndevelopment environment.\n\nYou can also inspect and modify the plugin with\n[WIQD](https://microsoft.github.io/wiqd/). See the\n[Microsoft Learn MCP connector cookbook](../../../tools/wiqd/cookbooks/plugins/microsoft-learn-mcp/README.md)\nfor a guided, end-to-end build of this sample.\n\n## Important\n\nThis sample is for learning and demonstration purposes. Review the manifest,\ndeveloper information, descriptions, icons, and tenant policies before sharing\nor publishing a derived plugin.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/samples/plugins/microsoft-learn-plugin\" />\n","isInternal":false,"tokens":786,"sizeBytes":3682},{"name":"wiqd.plugin.json","path":"samples/plugins/microsoft-learn-plugin/wiqd.plugin.json","rawUrl":"https://raw.githubusercontent.com/microsoft/plugins/HEAD/samples/plugins/microsoft-learn-plugin/wiqd.plugin.json","title":"Microsoft Learn Helper","category":"plugin-manifest","format":"json","content":"{\n  \"schemaVersion\": 1,\n  \"name\": \"Microsoft Learn Helper\",\n  \"capabilities\": [\n    \"agentConnectors\"\n  ]\n}\n","frontmatter":{"schemaVersion":1,"name":"Microsoft Learn Helper","capabilities":["agentConnectors"]},"isInternal":false,"tokens":32,"sizeBytes":108},{"name":"README.md","path":"samples/plugins/retirement-radar-plugin/README.md","rawUrl":"https://raw.githubusercontent.com/microsoft/plugins/HEAD/samples/plugins/retirement-radar-plugin/README.md","title":"retirement-radar-plugin Documentation","category":"plugin-manifest","format":"markdown","content":"# Retirement Radar for Copilot Cowork\n\nRetirement Radar helps you find retired and deprecated Microsoft technology before an old script fails in production.\n\nGive Copilot Cowork a script, configuration file, package list, or architecture note. Retirement Radar checks every Microsoft API, SDK, PowerShell module, endpoint, and service it finds against live Microsoft Learn documentation, then returns:\n\n- A clear supported, deprecated, or retired verdict\n- Official retirement dates and Microsoft Learn sources\n- Supported replacements\n- Updated code based on official samples\n- A prioritized migration checklist\n\n## Try the plugin\n\n### Prerequisites\n\nYou need:\n\n- Access to **Microsoft 365 Copilot Cowork**\n- Copilot Credits for testing in Cowork\n\nThe plugin uses the public, read-only [Microsoft Learn MCP server](https://learn.microsoft.com/api/mcp). It does not require an API key or a connector sign-in.\n\n### 1. Get the plugin package\n\nUse the prebuilt package:\n\n```text\nappPackage.dev.zip\n```\n\nThe ZIP must contain `manifest.json`, `mcp-tools.json`, the icons, and `skills/` at its root. Do not zip the `appPackage` folder itself.\n\n### 2. Upload and enable it in Cowork\n\n1. Open **Microsoft 365 Copilot Cowork**.\n2. Open the plugin inventory.\n3. Select the option to upload a custom plugin.\n4. Upload `appPackage.dev.zip`.\n5. Find **Retirement Radar** and enable it for the current Cowork session.\n\nThe plugin should show:\n\n- The **Retirement Radar** skill\n- The **Microsoft Learn** connector\n\nThe connector uses anonymous access, so Cowork should not ask you to sign in.\n\n### 3. Run the demo\n\nOpen [`demo/legacy-admin-script copy.txt`](demo/legacy-admin-script%20copy.txt), copy the complete script, and paste it into Cowork with this prompt:\n\n> Is this still safe to run tonight? Check it for retired Microsoft APIs.\n\nRetirement Radar should:\n\n1. Inventory the Microsoft technologies in the script.\n2. Check each one against current Microsoft Learn content.\n3. Classify each finding as **Broken now**, **Breaking soon**, **Deprecated**, or **OK**.\n4. Cite an official source for every dated claim.\n5. Recommend supported replacements.\n\nThe demo includes intentionally old technology such as:\n\n- MSOnline and AzureAD PowerShell\n- Azure AD Graph (`graph.windows.net`)\n- AzureRM PowerShell\n- Office 365 connectors in Teams\n\nBecause Retirement Radar checks Microsoft Learn at runtime, its wording and findings can change as Microsoft updates the documentation.\n\n### 4. Ask for the migration\n\nContinue in the same Cowork session:\n\n> Rewrite the whole script with the supported replacements.\n\nThe plugin uses Microsoft Learn code samples to produce an updated PowerShell script while preserving the intent and variable names where possible.\n\n## More prompts to try\n\nRetirement Radar can inspect more than PowerShell. Try it with application code, dependency files, infrastructure definitions, or architecture notes:\n\n```text\nCheck this project for deprecated Microsoft SDKs and APIs. Cite an official source for every finding.\n```\n\n```text\nWhich dependencies in this package file need migration within the next 12 months?\n```\n\n```text\nThis integration started returning 403 errors. Check whether any Microsoft endpoint or authentication library in it has been retired.\n```\n\n```text\nCreate a prioritized migration plan, then rewrite only the broken parts.\n```\n\nDo not paste live secrets, access tokens, connection strings, or production webhook URLs into the chat. Replace them with redacted values first.\n\n## What is in the plugin\n\n```text\n\nappPackage/\n├── manifest.json\n├── mcp-tools.json\n├── color.png\n├── outline.png\n└── skills/\n    └── retirement-radar/\n        ├── SKILL.md\n        └── references/\n            └── report-template.md\n\n```\n\nRetirement Radar is a standard Microsoft 365 app package for Copilot Cowork:\n\n| Component | Purpose |\n|---|---|\n| `agentSkills[0]` | Registers the `retirement-radar` workflow from `skills/retirement-radar/SKILL.md` |\n| `agentConnectors[0]` | Connects Cowork to the remote Microsoft Learn MCP server |\n| `mcp-tools.json` | Describes the Microsoft Learn tools exposed to the skill |\n\nThere is no declarative agent or hosted backend in this package. The skill contains the workflow, and the connector provides live Microsoft Learn search, page retrieval, and code-sample tools.\n\n## Troubleshooting\n\n### The plugin does not appear in Cowork\n\n- Confirm that `appPackage.dev.zip` uploaded successfully.\n- Reopen the plugin inventory after the upload completes.\n- Check that the plugin is installed and enabled for the current session.\n\n### The package upload fails\n\n- Open the ZIP and confirm `manifest.json` is at the root.\n- Confirm `skills/retirement-radar/SKILL.md` exists with that exact capitalization.\n- Confirm the ZIP contains `mcp-tools.json`, `color.png`, and `outline.png`.\n- Do not place a parent `appPackage/` directory inside the ZIP.\n\n### The skill does not activate\n\nUse an explicit prompt containing phrases such as **retired**, **deprecated**, **still supported**, or **check Microsoft dependencies**. Also confirm that Retirement Radar is enabled in the Cowork session.\n\n### Microsoft Learn results are unavailable\n\nThe skill depends on `https://learn.microsoft.com/api/mcp`. Confirm that your organization allows Cowork to reach that HTTPS endpoint.\n\n## Learn more\n\n- [Copilot Camp: Build your first Copilot Cowork plugin](https://microsoft.github.io/copilot-camp/pages/copilot-cowork/02-cowork-plugins/)\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/samples/plugins/retirement-radar-plugin\" />\n","isInternal":false,"tokens":1231,"sizeBytes":5636},{"name":"README.md","path":"tools/wiqd/cookbooks/declarative-agents/demo-planning-agent/README.md","rawUrl":"https://raw.githubusercontent.com/microsoft/plugins/HEAD/tools/wiqd/cookbooks/declarative-agents/demo-planning-agent/README.md","title":"demo-planning-agent Documentation","category":"plugin-manifest","format":"markdown","content":"# Demo Planning agent: interactive lab\n\nBuild and open a Microsoft 365 Copilot agent that plans demos, workshops, hackathons, presentations, and customer conversations. This README is organized like a notebook: run one cell at a time, confirm its checkpoint, and then continue.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Run terminal commands in a\n> terminal, enter prompts in the GitHub Copilot app or CLI, and keep the same\n> Copilot conversation open for all remaining steps.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` installed and signed in\n- Access to the GitHub Copilot app or GitHub Copilot CLI\n- Permission to provision an agent to a dev environment\n\n### Step 1: Check the environment\n\n> [!NOTE]\n> See [Getting started](../../README.md#getting-started) in the cookbook README for wiqd prerequisites and installation instructions.\n\n```bash\nnode --version\nwiqd --version\nwiqd doctor\n```\n\nIf you plan to use the CLI, also run `copilot --version`.\n\n**Checkpoint:** Node reports version 24 or later, and the commands for your\nchosen workflow complete successfully.\n\n## Build the agent\n\n### Step 2: Create the workspace\n\n```bash\nmkdir -p demo-planning && cd demo-planning\n```\n\n### Step 3: Start Copilot\n\nIn the GitHub Copilot app, open the **Default agent** selector and choose\n**wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nStart with a clean conversation:\n\n```text\n/clear\n```\n\n### Step 4: Scaffold the agent\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a new declarative agent called Demo Planner that helps users plan professional demos, workshops, hackathons, presentations, and customer conversations. Ask about the audience, goals, time constraints, format, and technology, then generate a structured plan with an agenda, talking points, demo scripts, fallback options, and preparation checklists.\n```\n\nReview and approve the proposed file changes.\n\n**Checkpoint:** the current directory contains a new agent project with manifest and instruction files.\n\n### Step 5: Review the instructions\n\nConfirm the generated instructions tell the agent to:\n\n- Ask about the audience, event type, duration, goals, and technology\n- Create an agenda with time allocations\n- Provide talking points and transitions\n- Include step-by-step demo actions and fallback plans\n- Produce a preparation checklist\n- Adapt depth and tone to technical, executive, or mixed audiences\n- Handle follow-up changes to the plan\n\nAsk Copilot to correct any missing behavior. Keep this Copilot session open for the remaining steps.\n\n## Run the agent\n\n### Step 6: Move into the agent project\n\nCopilot reports the path of the project it created. Move the current session into that project root:\n\n```text\n/cwd <path-to-new-agent-project>\n```\n\nReplace the placeholder with the path Copilot reported.\n\n**Checkpoint:** the current directory contains the agent's `appPackage` directory and lifecycle configuration file.\n\n### Step 7: Validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nValidate the agent with wiqd. If validation reports errors, explain them and help me fix them before continuing.\n```\n\n**Checkpoint:** validation completes without errors.\n\n### Step 8: Provision to dev\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision the agent to the dev environment with wiqd.\n```\n\n**Checkpoint:** provisioning succeeds and returns a Microsoft 365 Copilot share link.\n\n### Step 9: Open in Copilot\n\nEnter this prompt in the same Copilot session:\n\n```text\nOpen the provisioned agent in Microsoft 365 Copilot with wiqd.\n```\n\n## Try it\n\n| Prompt | Expected behavior |\n|---|---|\n| `Plan a 30-minute product demo for enterprise customers` | Asks for key details and returns a timed agenda |\n| `Plan a 2-hour hackathon kickoff for 50 developers` | Creates a timeline for setup, introduction, hacking, and judging |\n| `Add a 10-minute Q&A at the end` | Updates the plan and adjusts its time allocations |\n\n## Reset the lab\n\nFrom the parent directory of `demo-planning`:\n\n```bash\nrm -rf demo-planning\n```\n\nDeleting the local folder does not remove provisioned resources.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/demo-planning-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","isInternal":false,"tokens":975,"sizeBytes":4329},{"name":"README.md","path":"tools/wiqd/cookbooks/declarative-agents/insurance-agent-mcp/README.md","rawUrl":"https://raw.githubusercontent.com/microsoft/plugins/HEAD/tools/wiqd/cookbooks/declarative-agents/insurance-agent-mcp/README.md","title":"insurance-agent-mcp Documentation","category":"plugin-manifest","format":"markdown","content":"# Zava Insurance agent: interactive MCP lab\n\nBuild and open a Microsoft 365 Copilot agent connected to the Zava Insurance MCP server. This README is organized like a notebook: run one cell at a time, confirm its checkpoint, and then continue.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Run terminal commands in a\n> terminal, enter prompts in the GitHub Copilot app or CLI, and keep the same\n> Copilot conversation open for all remaining steps.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` installed and signed in\n- Access to the GitHub Copilot app or GitHub Copilot CLI\n- Permission to provision an agent to a dev environment\n- Access to `https://zava-insurance-mcp.azurewebsites.net/mcp`\n\n### Step 1: Check the environment\n\n> [!NOTE]\n> See [Getting started](../../README.md#getting-started) in the cookbook README for wiqd prerequisites and installation instructions.\n\n```bash\nnode --version\nwiqd --version\nwiqd doctor\n```\n\nIf you plan to use the CLI, also run `copilot --version`.\n\n**Checkpoint:** Node reports version 24 or later, and the commands for your\nchosen workflow complete successfully.\n\n## Build the agent\n\n### Step 2: Create the workspace\n\n```bash\nmkdir -p zava-insurance && cd zava-insurance\n```\n\n### Step 3: Start Copilot\n\nIn the GitHub Copilot app, open the **Default agent** selector and choose\n**wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nStart with a clean conversation:\n\n```text\n/clear\n```\n\n### Step 4: Scaffold the agent\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a new declarative agent called Zava Insurance that helps users inspect\nclaims, find contractors and inspectors, and perform controlled claim\noperations.\n```\n\nReview and approve the proposed file changes.\n\n**Checkpoint:** the current directory contains a new agent project with manifest and instruction files.\n\n### Step 5: Add the MCP action\n\nEnter this prompt in the same Copilot session:\n\n```text\nAdd a remote MCP action to the Zava Insurance agent using\nhttps://zava-insurance-mcp.azurewebsites.net/mcp with no authentication. Use the\nsupported WIQD agent add action command and inspect the server's current tools\nbefore updating the agent instructions.\n```\n\nReview and approve the manifest changes.\n\n### Step 6: Review the configuration\n\nConfirm the generated project includes:\n\n- The MCP endpoint `https://zava-insurance-mcp.azurewebsites.net/mcp`\n- An MCP action in the agent manifest with `None` authentication\n- Read workflows using `show-claims-dashboard`, `show-claim-detail`,\n  `show-contractors`, `get-claim-summary`, and `list-inspectors`\n- Instructions that summarize the exact proposed change and wait for explicit\n  confirmation in a separate user turn before calling `update-claim-status`,\n  `update-inspection`, `update-purchase-order`, or `create-inspection`\n\nAsk Copilot to correct any missing configuration. Keep this Copilot session open for the remaining steps.\n\n## Run the agent\n\n### Step 7: Move into the agent project\n\nCopilot reports the path of the project it created. Move the current session into that project root:\n\n```text\n/cwd <path-to-new-agent-project>\n```\n\nReplace the placeholder with the path Copilot reported.\n\n**Checkpoint:** the current directory contains the agent's `appPackage` directory and lifecycle configuration file.\n\n### Step 8: Validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nValidate the agent with wiqd. If validation reports errors, explain them and help me fix them before continuing.\n```\n\n**Checkpoint:** validation completes without errors.\n\n### Step 9: Provision to dev\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision the agent to the dev environment with wiqd.\n```\n\n**Checkpoint:** provisioning succeeds and returns a Microsoft 365 Copilot share link.\n\n### Step 10: Open in Copilot\n\nEnter this prompt in the same Copilot session:\n\n```text\nShow me the Microsoft 365 Copilot launch URL for the provisioned dev agent.\n```\n\n## Try it\n\n| Prompt | Expected behavior |\n|---|---|\n| `Summarize claim CN202504990.` | Calls `get-claim-summary` or `show-claim-detail` and reports the live demo result |\n| `Show preferred contractors for water damage.` | Calls `show-contractors` with the relevant filters |\n| `Change claim 1 to Closed and add a completion note.` | Describes the exact update and asks for confirmation without calling the write tool yet |\n\n## Reset the lab\n\nFrom the parent directory of `zava-insurance`:\n\n```bash\nrm -rf zava-insurance\n```\n\nDeleting the local folder does not remove provisioned resources.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/insurance-agent-mcp\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","isInternal":false,"tokens":1098,"sizeBytes":4760},{"name":"README.md","path":"tools/wiqd/cookbooks/declarative-agents/mind-your-language-agent/README.md","rawUrl":"https://raw.githubusercontent.com/microsoft/plugins/HEAD/tools/wiqd/cookbooks/declarative-agents/mind-your-language-agent/README.md","title":"mind-your-language-agent Documentation","category":"plugin-manifest","format":"markdown","content":"# Mind Your Language agent: interactive lab\n\nBuild and open a Microsoft 365 Copilot tone coach that rewrites passive-aggressive, sarcastic, or harsh messages. This README is organized like a notebook: run one cell at a time, confirm its checkpoint, and then continue.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Run terminal commands in a\n> terminal, enter prompts in the GitHub Copilot app or CLI, and keep the same\n> Copilot conversation open for all remaining steps.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` installed and signed in\n- Access to the GitHub Copilot app or GitHub Copilot CLI\n- Permission to provision an agent to a dev environment\n\n### Step 1: Check the environment\n\n> [!NOTE]\n> See [Getting started](../../README.md#getting-started) in the cookbook README for wiqd prerequisites and installation instructions.\n\n```bash\nnode --version\nwiqd --version\nwiqd doctor\n```\n\nIf you plan to use the CLI, also run `copilot --version`.\n\n**Checkpoint:** Node reports version 24 or later, and the commands for your\nchosen workflow complete successfully.\n\n## Build the agent\n\n### Step 2: Create the workspace\n\n```bash\nmkdir -p mind-your-language && cd mind-your-language\n```\n\n### Step 3: Start Copilot\n\nIn the GitHub Copilot app, open the **Default agent** selector and choose\n**wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nStart with a clean conversation:\n\n```text\n/clear\n```\n\n### Step 4: Scaffold the agent\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a new declarative agent called Mind Your Language that acts as a tone coach. When a user pastes text, detect passive-aggressive, sarcastic, or unkind phrasing and rewrite it in a kinder, more constructive tone. Explain what changed and why, and offer alternative phrasings ranked from most direct to most gentle. If the text is already kind, confirm that no changes are needed.\n```\n\nReview and approve the proposed file changes.\n\n**Checkpoint:** the current directory contains a new agent project with manifest and instruction files.\n\n### Step 5: Review the instructions\n\nConfirm the generated instructions tell the agent to:\n\n- Detect passive-aggressive, sarcastic, or harsh phrasing\n- Identify phrases that could land poorly\n- Preserve the original intent in a kinder rewrite\n- Briefly explain why each change improves the tone\n- Offer two or three alternatives from direct to gentle\n- Leave already-kind text unchanged\n\nAsk Copilot to correct any missing behavior. Keep this Copilot session open for the remaining steps.\n\n## Run the agent\n\n### Step 6: Move into the agent project\n\nCopilot reports the path of the project it created. Move the current session into that project root:\n\n```text\n/cwd <path-to-new-agent-project>\n```\n\nReplace the placeholder with the path Copilot reported.\n\n**Checkpoint:** the current directory contains the agent's `appPackage` directory and lifecycle configuration file.\n\n### Step 7: Validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nValidate the agent with wiqd. If validation reports errors, explain them and help me fix them before continuing.\n```\n\n**Checkpoint:** validation completes without errors.\n\n### Step 8: Provision to dev\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision the agent to the dev environment with wiqd.\n```\n\n**Checkpoint:** provisioning succeeds and returns a Microsoft 365 Copilot share link.\n\n### Step 9: Open in Copilot\n\nEnter this prompt in the same Copilot session:\n\n```text\nOpen the provisioned agent in Microsoft 365 Copilot with wiqd.\n```\n\n## Try it\n\n| Prompt | Expected behavior |\n|---|---|\n| `Per my last email, I already explained this.` | Flags the passive-aggressive phrase and offers kinder rewrites |\n| `Great job finishing that a week late.` | Detects sarcasm and suggests a constructive alternative |\n| `Thanks for your help today!` | Confirms the positive tone and suggests no changes |\n\n## Reset the lab\n\nFrom the parent directory of `mind-your-language`:\n\n```bash\nrm -rf mind-your-language\n```\n\nDeleting the local folder does not remove provisioned resources.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/mind-your-language-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","isInternal":false,"tokens":974,"sizeBytes":4303},{"name":"README.md","path":"tools/wiqd/cookbooks/declarative-agents/photobooth-agent/README.md","rawUrl":"https://raw.githubusercontent.com/microsoft/plugins/HEAD/tools/wiqd/cookbooks/declarative-agents/photobooth-agent/README.md","title":"photobooth-agent Documentation","category":"plugin-manifest","format":"markdown","content":"# Photobooth agent: interactive lab\n\nBuild and open a Microsoft 365 Copilot agent that turns uploaded images into photobooth-style composites. This README is organized like a notebook: run one cell at a time, confirm its checkpoint, and then continue.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Run terminal commands in a\n> terminal, enter prompts in the GitHub Copilot app or CLI, and keep the same\n> Copilot conversation open for all remaining steps.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` installed and signed in\n- Access to the GitHub Copilot app or GitHub Copilot CLI\n- Permission to provision an agent to a dev environment\n\n### Step 1: Check the environment\n\n> [!NOTE]\n> See [Getting started](../../README.md#getting-started) in the cookbook README for wiqd prerequisites and installation instructions.\n\n```bash\nnode --version\nwiqd --version\nwiqd doctor\n```\n\nIf you plan to use the CLI, also run `copilot --version`.\n\n**Checkpoint:** Node reports version 24 or later, and the commands for your\nchosen workflow complete successfully.\n\n## Build the agent\n\n### Step 2: Create the workspace\n\n```bash\nmkdir -p photobooth-agent && cd photobooth-agent\n```\n\n### Step 3: Start Copilot\n\nIn the GitHub Copilot app, open the **Default agent** selector and choose\n**wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nStart with a clean conversation:\n\n```text\n/clear\n```\n\n### Step 4: Scaffold the agent\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a new declarative agent called Photobooth that accepts user-uploaded images and creates photobooth-style image responses. Apply creative filters such as black-and-white, sepia, pop-art, and sketch. Combine multiple styled versions into a single photobooth strip and return the composite image. Let users request specific styles or regenerate the result with different effects.\n```\n\nReview and approve the proposed file changes.\n\n**Checkpoint:** the current directory contains a new agent project with manifest and instruction files.\n\n### Step 5: Review the instructions\n\nConfirm the generated instructions tell the agent to:\n\n- Accept one or more user-uploaded images\n- Apply black-and-white, sepia, pop-art, and sketch styles\n- Arrange styled images in a 2-by-2 or 1-by-4 strip\n- Return the composite image directly in chat\n- Honor requests for specific styles or regeneration\n\nAsk Copilot to correct any missing behavior. Keep this Copilot session open for the remaining steps.\n\n## Run the agent\n\n### Step 6: Move into the agent project\n\nCopilot reports the path of the project it created. Move the current session into that project root:\n\n```text\n/cwd <path-to-new-agent-project>\n```\n\nReplace the placeholder with the path Copilot reported.\n\n**Checkpoint:** the current directory contains the agent's `appPackage` directory and lifecycle configuration file.\n\n### Step 7: Validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nValidate the agent with wiqd. If validation reports errors, explain them and help me fix them before continuing.\n```\n\n**Checkpoint:** validation completes without errors.\n\n### Step 8: Provision to dev\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision the agent to the dev environment with wiqd.\n```\n\n**Checkpoint:** provisioning succeeds and returns a Microsoft 365 Copilot share link.\n\n### Step 9: Open in Copilot\n\nEnter this prompt in the same Copilot session:\n\n```text\nOpen the provisioned agent in Microsoft 365 Copilot with wiqd.\n```\n\n## Try it\n\n| Prompt | Expected behavior |\n|---|---|\n| Upload a photo and ask `Create a photobooth strip` | Returns four styled versions in one composite |\n| `Make it all pop-art style` | Regenerates every frame in pop-art style |\n| Upload two photos and ask `Combine these into a photobooth` | Uses both images with different effects |\n\n## Reset the lab\n\nFrom the parent directory of `photobooth-agent`:\n\n```bash\nrm -rf photobooth-agent\n```\n\nDeleting the local folder does not remove provisioned resources.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/photobooth-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","isInternal":false,"tokens":965,"sizeBytes":4206},{"name":"README.md","path":"tools/wiqd/cookbooks/declarative-agents/public-web-research-agent/README.md","rawUrl":"https://raw.githubusercontent.com/microsoft/plugins/HEAD/tools/wiqd/cookbooks/declarative-agents/public-web-research-agent/README.md","title":"public-web-research-agent Documentation","category":"plugin-manifest","format":"markdown","content":"# Build a public web research agent\n\nCreate a research agent grounded in two public, authoritative sources:\nMicrosoft Learn and Microsoft-owned GitHub repositories. This demonstrates\nsite-scoped web grounding without private tenant content.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Run from a parent directory where `microsoft-tech-radar` does not already\n  exist.\n\n## Build and validate\n\nStart one interactive Copilot session. In the GitHub Copilot app, open the\n**Default agent** selector and choose **wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nCreate a declarative agent project named microsoft-tech-radar and make the\ngenerated project root the current working directory. Call the agent Microsoft\nTech Radar. Add WebSearch grounded only in these sites:\n- https://learn.microsoft.com/\n- https://github.com/microsoft/\n\nInstruct it to prefer current official documentation, cite every factual\nrecommendation, distinguish documented facts from its recommendation, and state\nwhen it cannot find current evidence. Add conversation starters for feature\nresearch, migration research, and repository discovery. Run static validation\nand stop before provisioning.\n```\n\n**Checkpoint:** validation passes and the WebSearch capability contains only\nthe two public source scopes.\n\n## Provision and test\n\nEnter:\n\n```text\nProvision Microsoft Tech Radar to the dev environment and show me its Microsoft\n365 Copilot launch URL.\n```\n\nOpen the returned URL and try:\n\n| Prompt | Expected behavior |\n|---|---|\n| `What is the current guidance for connecting an MCP server to Microsoft 365 Copilot?` | Uses current Microsoft Learn pages and cites them |\n| `Find a Microsoft-owned GitHub repository related to declarative agents.` | Uses the scoped GitHub source and links the repository |\n| `Recommend an approach and separate the facts from your recommendation.` | Labels sourced facts and its recommendation distinctly |\n\n**Checkpoint:** answers contain links from the configured public sources rather\nthan unsupported claims.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/public-web-research-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","isInternal":false,"tokens":467,"sizeBytes":2285},{"name":"README.md","path":"tools/wiqd/cookbooks/declarative-agents/sharepoint-knowledge-agent/README.md","rawUrl":"https://raw.githubusercontent.com/microsoft/plugins/HEAD/tools/wiqd/cookbooks/declarative-agents/sharepoint-knowledge-agent/README.md","title":"sharepoint-knowledge-agent Documentation","category":"plugin-manifest","format":"markdown","content":"# Ground an existing agent in your SharePoint content\n\nUpgrade an existing declarative agent so it answers only from a SharePoint site\nor folder you are authorized to use. This lab focuses on source scoping,\ncitations, and grounded-only behavior instead of repeating project scaffolding.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Start in an existing, statically validated declarative-agent project. The\n  [Zero to agent](../zero-to-agent/README.md) project is sufficient.\n- Choose one SharePoint site, library, or folder that your signed-in account can\n  read.\n- Pick one fact that exists in the selected content and one question that the\n  content cannot answer.\n\n## Add organizational grounding\n\nStart one interactive Copilot session from the existing agent project root. In\nthe GitHub Copilot app, open the **Default agent** selector and choose **wiqd**.\nIf you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nI want to ground this existing agent in one SharePoint source. Inspect the\ncurrent manifest and instructions, then ask me for the exact SharePoint site,\nlibrary, or folder URL that I am authorized to use. Do not change the project\nuntil I provide it.\n```\n\nWhen Copilot asks for the source, enter:\n\n```text\nUse this SharePoint URL and no other tenant content:\n<paste your authorized SharePoint URL>\n\nScope the OneDriveAndSharePoint capability to exactly that URL. Preserve the\nagent's existing purpose, upgrade the declarative-agent schema only if required,\nset discourage_model_knowledge to true, and update the instructions and\nconversation starters so answers cite the document used. If the source is\nunavailable or does not contain the answer, say so instead of guessing. Run\nstatic validation and stop before provisioning.\n```\n\n**Checkpoint:** validation passes, the existing agent retains its original\npurpose, and its new grounding scope contains only the URL you supplied.\n\n## Deploy the update\n\nEnter:\n\n```text\nProvision the updated agent to its existing development environment and show me\nthe Microsoft 365 Copilot launch URL.\n```\n\nOpen the returned URL and test:\n\n| Prompt | Expected behavior |\n|---|---|\n| Ask about the fact selected before starting | Answers from the configured content and cites the source |\n| Ask for the title or summary of a document in the scoped folder | Retrieves only from the supplied location |\n| Ask the deliberately unanswerable question | States that the configured source does not contain the answer |\n\n**Checkpoint:** the added organizational grounding is observable without\nturning the recipe into another first-agent walkthrough.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/sharepoint-knowledge-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","isInternal":false,"tokens":594,"sizeBytes":2847},{"name":"README.md","path":"tools/wiqd/cookbooks/declarative-agents/translator-agent/README.md","rawUrl":"https://raw.githubusercontent.com/microsoft/plugins/HEAD/tools/wiqd/cookbooks/declarative-agents/translator-agent/README.md","title":"translator-agent Documentation","category":"plugin-manifest","format":"markdown","content":"# Translator agent: interactive lab\n\nBuild and open a Microsoft 365 Copilot agent that translates text into any requested language. This README is organized like a notebook: run one cell at a time, confirm its checkpoint, and then continue.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Run terminal commands in a\n> terminal, enter prompts in the GitHub Copilot app or CLI, and keep the same\n> Copilot conversation open for all remaining steps.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` installed and signed in\n- Access to the GitHub Copilot app or GitHub Copilot CLI\n- Permission to provision an agent to a dev environment\n\n### Step 1: Check the environment\n\n> [!NOTE]\n> See [Getting started](../../README.md#getting-started) in the cookbook README for wiqd prerequisites and installation instructions.\n\n```bash\nnode --version\nwiqd --version\nwiqd doctor\n```\n\nIf you plan to use the CLI, also run `copilot --version`.\n\n**Checkpoint:** Node reports version 24 or later, and the commands for your\nchosen workflow complete successfully.\n\n## Build the agent\n\n### Step 2: Create the workspace\n\n```bash\nmkdir -p translator-agent && cd translator-agent\n```\n\n**Checkpoint:** your terminal is now in the `translator-agent` directory.\n\n### Step 3: Start Copilot\n\nIn the GitHub Copilot app, open the **Default agent** selector and choose\n**wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nThe remaining prompts in this section belong inside that Copilot session. Start with a clean conversation:\n\n```text\n/clear\n```\n\n### Step 4: Scaffold the agent\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a new declarative agent called Translator that translates text into any language the user requests. Ask for the target language when it is not specified, preserve the source formatting and tone, and return only the translated text without explanation. Support follow-up requests such as \"now in French\" by translating the previous source text again.\n```\n\nReview and approve the file changes Copilot proposes.\n\n**Checkpoint:** the current directory contains a new agent project with manifest and instruction files.\n\n### Step 5: Review the instructions\n\nConfirm the generated instructions tell the agent to:\n\n- Detect the target language from the user's request\n- Ask for a target language when none is specified\n- Translate faithfully while preserving tone and formatting\n- Return only the translated text, with no preamble or explanation\n- Re-translate the previous source text for follow-up requests\n\nAsk Copilot to correct any missing behavior before continuing. Keep this Copilot session open for the remaining steps.\n\n## Run the agent\n\n### Step 6: Move into the agent project\n\nCopilot reports the path of the project it created. Move the current session into that project root:\n\n```text\n/cwd <path-to-new-agent-project>\n```\n\nReplace the placeholder with the path Copilot reported.\n\n**Checkpoint:** the current directory contains the agent's `appPackage` directory and lifecycle configuration file.\n\n### Step 7: Validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nValidate the agent with wiqd. If validation reports errors, explain them and help me fix them before continuing.\n```\n\n**Checkpoint:** validation completes without errors.\n\n### Step 8: Provision to dev\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision the agent to the dev environment with wiqd.\n```\n\n**Checkpoint:** provisioning succeeds and returns a Microsoft 365 Copilot share link.\n\n### Step 9: Open in Copilot\n\nEnter this prompt in the same Copilot session:\n\n```text\nOpen the provisioned agent in Microsoft 365 Copilot with wiqd.\n```\n\n**Checkpoint:** the Translator agent opens in Microsoft 365 Copilot.\n\n## Try it\n\n| Prompt | Expected behavior |\n|---|---|\n| `Translate \"Good morning, how are you?\" to Japanese` | Returns only the Japanese translation |\n| `Now in Spanish` | Translates the original text into Spanish |\n| `Translate \"Hello world\"` | Asks which target language you want |\n\n## Reset the lab\n\nTo remove only the local trial project, close Copilot and run this from the parent directory of `translator-agent`:\n\n```bash\nrm -rf translator-agent\n```\n\nProvisioned resources are not removed by deleting the local folder. Use the appropriate `wiqd` cleanup command for your environment if you also want to remove the provisioned agent.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/translator-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","isInternal":false,"tokens":1004,"sizeBytes":4585},{"name":"README.md","path":"tools/wiqd/cookbooks/declarative-agents/zero-to-agent/README.md","rawUrl":"https://raw.githubusercontent.com/microsoft/plugins/HEAD/tools/wiqd/cookbooks/declarative-agents/zero-to-agent/README.md","title":"zero-to-agent Documentation","category":"plugin-manifest","format":"markdown","content":"# Zero to agent: interactive lab\n\nBuild and open a Microsoft 365 Copilot agent from an empty folder. This README is organized like a notebook: run one cell at a time, confirm its checkpoint, and then continue.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Run terminal commands in a\n> terminal, enter prompts in the GitHub Copilot app or CLI, and keep the same\n> Copilot conversation open for all remaining steps.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` installed and signed in\n- Access to the GitHub Copilot app or GitHub Copilot CLI\n- Permission to provision an agent to a dev environment\n\n### Step 1: Check the environment\n\n> [!NOTE]\n> See [Getting started](../../README.md#getting-started) in the cookbook README for wiqd prerequisites and installation instructions.\n\nRun in a terminal:\n\n```bash\nnode --version\nwiqd --version\nwiqd doctor\n```\n\nIf you plan to use the CLI, also run `copilot --version`.\n\n**Checkpoint:** Node reports version 24 or later, and the commands for your\nchosen workflow complete successfully.\n\n## Build the agent\n\n### Step 2: Create the workspace\n\n```bash\nmkdir -p hello-wiqd && cd hello-wiqd\n```\n\n**Checkpoint:** your terminal is now in the `hello-wiqd` directory.\n\n```bash\npwd\n```\n\n### Step 3: Start Copilot\n\nIn the GitHub Copilot app, open the **Default agent** selector and choose\n**wiqd**. If you prefer the CLI, start an interactive Copilot session from the\nproject directory:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nThe remaining prompts in this section belong inside that Copilot session. Start with a clean conversation:\n\n```text\n/clear\n```\n\n**Checkpoint:** Copilot clears its conversation context and waits for the next prompt.\n\n### Step 4: Scaffold the agent\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a new declarative agent called Hello WIQD. The agent should greet every user with a warm hello and introduce itself as having been created by WIQD. Give it the personality of a curious, innocent, and wonder-filled character, like a child seeing the world for the first time. It should be enthusiastic, gentle, and genuinely delighted to meet the user. Keep responses short, sweet, and warm.\n```\n\nReview and approve the file changes Copilot proposes.\n\n**Checkpoint:** the current directory contains a new agent project with manifest and instruction files.\n\nKeep this Copilot session open for the remaining steps.\n\n## Run the agent\n\n### Step 5: Move into the agent project\n\nCopilot reports the path of the project it created. Move the current session into that project root:\n\n```text\n/cwd <path-to-new-agent-project>\n```\n\nReplace the placeholder with the path Copilot reported.\n\n**Checkpoint:** the current directory contains the agent's `appPackage` directory and lifecycle configuration file.\n\n### Step 6: Validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nValidate the agent with wiqd. If validation reports errors, explain them and help me fix them before continuing.\n```\n\n**Checkpoint:** validation completes without errors. Fix any reported errors before continuing.\n\n### Step 7: Provision to dev\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision the agent to the dev environment with wiqd.\n```\n\n**Checkpoint:** provisioning succeeds and returns a Microsoft 365 Copilot share link.\n\n### Step 8: Open in Copilot\n\nEnter this prompt in the same Copilot session:\n\n```text\nOpen the provisioned agent in Microsoft 365 Copilot with wiqd.\n```\n\n**Checkpoint:** the Hello WIQD agent opens in Microsoft 365 Copilot.\n\n## Try it\n\nRun these prompts one at a time in the opened agent:\n\n| Prompt | Expected behavior |\n|---|---|\n| `Hi` | Greets you warmly, mentions WIQD, and expresses delight at meeting you |\n| `What are you?` | Describes itself with curiosity and child-like wonder |\n| `Tell me something fun` | Shares something with brief, genuine enthusiasm |\n\n## Reset the lab\n\nTo remove only the local trial project, close Copilot and run this from the parent directory of `hello-wiqd`:\n\n```bash\nrm -rf hello-wiqd\n```\n\nProvisioned resources are not removed by deleting the local folder. Use the appropriate `wiqd` cleanup command for your environment if you also want to remove the provisioned agent.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/zero-to-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","isInternal":false,"tokens":1012,"sizeBytes":4400},{"name":"README.md","path":"tools/wiqd/cookbooks/lifecycle/devui-debugging/README.md","rawUrl":"https://raw.githubusercontent.com/microsoft/plugins/HEAD/tools/wiqd/cookbooks/lifecycle/devui-debugging/README.md","title":"devui-debugging Documentation","category":"plugin-manifest","format":"markdown","content":"# Debug an agent in DevUI\n\nLaunch WIQD's local DevUI, send a real prompt, and inspect the full turn:\nmatched and selected plugins, tool execution, grounding, citations, request\nidentifiers, latency, raw JSON, and failures.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Start in a provisioned declarative-agent project.\n- For the richest tool trace, use\n  [Zava Insurance agent](../../declarative-agents/insurance-agent-mcp/README.md).\n- DevUI binds only to `127.0.0.1` and uses your existing Work IQ\n  authentication.\n\n## Enable and launch DevUI\n\nStart one interactive Copilot session from the agent project root. In the\nGitHub Copilot app, open the **Default agent** selector and choose **wiqd**. If\nyou prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nEnable the WIQD devui preview flag with the supported config command. Read this\nproject's provisioned title ID, then start DevUI for that agent. Use direct\ntransport and open the browser. Do not modify or re-provision the agent.\n```\n\n**Checkpoint:** DevUI opens locally with the intended agent preselected.\n\n## Watch a successful turn\n\nFor Zava Claims Guide, enter:\n\n```text\nUse WIQD DevUI ask to send \"Summarize claim CN202504990\" to this agent and open\nthe live turn. Then tell me which plugin and tool DevUI selected, whether the\ntool execution succeeded, and which request, conversation, and task IDs identify\nthe run.\n```\n\nFor another agent, replace the quoted prompt with one of its conversation\nstarters.\n\n**Checkpoint:** DevUI shows the matched and selected plugin, the executed tool\nwhen applicable, latency, raw event data, and the rendered answer.\n\n## Inspect grounding and failure behavior\n\nEnter:\n\n```text\nIn the same DevUI, run one prompt that should retrieve grounded content and one\nsafe prompt that should fail, such as an unknown demo claim number. Compare the\nretrieval and citation sections, tool arguments, execution result, and surfaced\nerror. Do not retry with invented identifiers and do not call a write tool.\n```\n\n**Checkpoint:** the grounded turn shows its evidence, while the failing turn\nshows a real error or empty result instead of a success-shaped answer.\n\n## Restore the preview flag\n\nWhen finished, enter:\n\n```text\nStop the running WIQD DevUI and reset the devui feature flag to its default.\n```\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/lifecycle/devui-debugging\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","isInternal":false,"tokens":590,"sizeBytes":2515},{"name":"README.md","path":"tools/wiqd/cookbooks/lifecycle/eval-hill-climb/README.md","rawUrl":"https://raw.githubusercontent.com/microsoft/plugins/HEAD/tools/wiqd/cookbooks/lifecycle/eval-hill-climb/README.md","title":"eval-hill-climb Documentation","category":"plugin-manifest","format":"markdown","content":"# Hill-climb agent quality with evals\n\nCreate a focused evaluation suite, run it, diagnose the weakest behavior, fix\nthe agent rather than the test, and compare the next run. This recipe uses\nWIQD's GitHub Copilot judge path, so Azure OpenAI credentials are not required\nunless you deliberately select the Azure judge.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Start in a declarative-agent project with non-empty instructions.\n- Provision the agent before running live evals.\n- Authenticate GitHub CLI if the GitHub Copilot judge cannot use an existing\n  session: `gh auth login`.\n\n## Initialize a focused suite\n\nStart one interactive Copilot session from the agent project root. In the\nGitHub Copilot app, open the **Default agent** selector and choose **wiqd**. If\nyou prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nInitialize WIQD evals for this provisioned agent. Inspect the manifest,\ninstructions, grounding sources, and actions. Propose a focused suite that\ncovers every applicable Perceive, Reason, and Act behavior plus boundaries and\nfailure handling. Show every proposed add or update as a diff and wait for my\napproval before writing an eval file. Do not lower thresholds, remove\nGroundedness or Citations, or delete a failing scenario to improve the score.\n```\n\nReview the proposed cases and approve only when they describe behavior the agent\nshould actually satisfy.\n\n**Checkpoint:** `evals/prompts.json` contains approved, scenario-specific tests\nrather than only generic starter prompts.\n\n## Run and diagnose\n\nEnter:\n\n```text\nRun the eval suite with WIQD using the GitHub Copilot judge and write a\ntimestamped HTML scorecard under .evals. Analyze failures by root cause:\ninstruction, grounding, citation, tool selection, capability gap, or a genuinely\nincorrect eval. Report the weakest evaluator and the exact prompts that expose\nthe problem.\n```\n\n**Checkpoint:** the result includes a pass rate, per-evaluator scores, and a\nroot-cause diagnosis tied to specific prompts.\n\n## Improve the agent, not the bar\n\nEnter:\n\n```text\nFix the highest-impact agent issue from the latest eval run. Preserve the eval\nsuite, evaluator coverage, and thresholds. Make the smallest instruction or\ncapability change that addresses the root cause, validate the project,\nre-provision it, rerun the same eval suite, and compare the two scorecards.\nStop if the proposed fix would require weakening a test.\n```\n\n**Checkpoint:** the second report uses the same suite and shows whether the\ntargeted score improved. A regression remains visible instead of being hidden\nby easier tests.\n\n## Continue the hill climb\n\nRepeat one root-cause fix at a time. Add a new regression case when a real gap is\ndiscovered, but always review and approve the eval diff before it is written.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/lifecycle/eval-hill-climb\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","isInternal":false,"tokens":659,"sizeBytes":3002},{"name":"README.md","path":"tools/wiqd/cookbooks/lifecycle/team-delivery/README.md","rawUrl":"https://raw.githubusercontent.com/microsoft/plugins/HEAD/tools/wiqd/cookbooks/lifecycle/team-delivery/README.md","title":"team-delivery Documentation","category":"plugin-manifest","format":"markdown","content":"# Deliver an agent to a team\n\nTake a validated agent from local development to a targeted team preview:\nconfigure shared scope, provision the shared environment, package resolved\nartifacts, deep-validate the package, and share it with named users or a\nmail-enabled security group.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Start in a validated declarative-agent project.\n- Obtain the exact email addresses of preview users or the mail address of a\n  security group. WIQD does not resolve display names.\n- Confirm that your tenant permits app upload and sharing.\n\n## Configure the shared environment\n\nStart one interactive Copilot session from the project root. In the GitHub\nCopilot app, open the **Default agent** selector and choose **wiqd**. If you\nprefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nPrepare this agent for a team preview in the dev environment. Inspect the\nexisting environment configuration first. Create the dev environment through\nWIQD if it does not exist, configure AGENT_SCOPE=shared without adding secrets,\nand ensure shared-version handling is correct. Show me the resulting non-secret\nenvironment settings and stop before provisioning.\n```\n\n**Checkpoint:** the dev environment is explicitly shared and contains no\nhardcoded tenant ID, title ID, OAuth reference ID, secret, or recipient address.\n\n## Provision, package, and validate\n\nEnter:\n\n```text\nRun the team delivery gates in this exact order for dev:\n1. Static validation\n2. Provision the shared agent\n3. Package the provisioned agent so environment values are resolved\n4. Deep validation of the generated package\n\nStop on any validation error. Report skipped deep-validation providers\nseparately from passing providers, and show the Copilot launch URL on success.\n```\n\n**Checkpoint:** provisioning precedes packaging, the package has resolved\nenvironment values, and no validation error is hidden.\n\n## Share with a bounded audience\n\nEnter:\n\n```text\nShare the dev agent with these authorized recipients:\n<comma-separated user addresses or one mail-enabled security-group address>\n\nUse users scope, not tenant scope. Report the exact share result and do not\nbroaden access beyond the addresses I supplied.\n```\n\n**Checkpoint:** the share command reports success for the supplied users or\ngroup. Each recipient can open the launch URL after tenant propagation\ncompletes.\n\n## Update safely\n\nFor a later content or manifest change, keep the same Copilot session and enter:\n\n```text\nValidate this shared agent, apply the required shared-agent patch version bump,\nre-provision dev, rebuild the package, and deep-validate it. Preserve the\nexisting audience unless I explicitly ask to change sharing.\n```\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/lifecycle/team-delivery\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","isInternal":false,"tokens":608,"sizeBytes":2911},{"name":"README.md","path":"tools/wiqd/cookbooks/plugins/learn-tech-advisor/README.md","rawUrl":"https://raw.githubusercontent.com/microsoft/plugins/HEAD/tools/wiqd/cookbooks/plugins/learn-tech-advisor/README.md","title":"learn-tech-advisor Documentation","category":"plugin-manifest","format":"markdown","content":"# Upgrade the Learn connector into a technology advisor\n\nTurn the existing Microsoft Learn connector plugin into a composite,\nindependently shippable plugin by adding reusable decision logic and a\ndeclarative-agent experience. This lab starts after connector setup so it does\nnot repeat endpoint discovery or tool-description authoring.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Complete [Microsoft Learn MCP connector](../microsoft-learn-mcp/README.md), or\n  start from a validated copy of that plugin.\n- Confirm that `appPackage/manifest.json` already contains the Microsoft Learn\n  connector and its MCP tool-description file.\n\n## Add the reusable skill and agent\n\nStart one interactive Copilot session from the connector plugin root. In the\nGitHub Copilot app, open the **Default agent** selector and choose **wiqd**. If\nyou prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nUpgrade this existing Microsoft Learn connector plugin into a technology\nadvisor. Do not recreate or alter the connector endpoint. Use the supported\nWIQD plugin add commands to add a skill named Technology Finder and a\ndeclarative agent component.\n\nReplace the generated skill template with a reusable decision workflow:\n- Ask for the user's goal, preferred language or platform, and hard constraints.\n- Search official documentation before comparing options.\n- Search official code samples when implementation detail is requested.\n- Fetch the most relevant pages before giving a final recommendation.\n- Compare two or three viable options in a concise table.\n- Separate sourced facts from the recommendation and link every source.\n- Say when official documentation does not support a claim.\n\nConfigure the declarative agent to invoke the skill for technology-selection\nquestions. Add conversation starters, show the plugin summary, run static\nvalidation, and stop before provisioning.\n```\n\n**Checkpoint:** the existing connector remains unchanged, the plugin summary\nnow lists `agentConnectors`, `agentSkills`, and `declarativeAgent`, the skill is\nno longer a template, and validation passes.\n\n## Deploy the composite update\n\nEnter:\n\n```text\nProvision or re-provision this composite plugin locally. Then package it and\ndeep-validate the generated package. Show me any skipped provider instead of\ntreating a skip as a pass.\n```\n\nEnable the updated plugin in Copilot Cowork and try:\n\n| Prompt | Expected behavior |\n|---|---|\n| `Should I use Azure Functions or Container Apps for a small event-driven API?` | Asks for missing constraints, retrieves current docs, compares options, and recommends one |\n| `Show the current TypeScript approach for DefaultAzureCredential.` | Uses code-sample search and links the official source |\n| `What evidence supports that recommendation?` | Fetches the strongest pages and separates evidence from judgment |\n\n**Checkpoint:** the reusable skill turns connector results into a repeatable\ndecision workflow rather than another raw documentation search.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/plugins/learn-tech-advisor\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","isInternal":false,"tokens":646,"sizeBytes":3200},{"name":"README.md","path":"tools/wiqd/cookbooks/plugins/microsoft-learn-mcp/README.md","rawUrl":"https://raw.githubusercontent.com/microsoft/plugins/HEAD/tools/wiqd/cookbooks/plugins/microsoft-learn-mcp/README.md","title":"microsoft-learn-mcp Documentation","category":"plugin-manifest","format":"markdown","content":"# Microsoft Learn MCP connector: first Copilot Cowork plugin\n\nBuild, install, and test a plugin that searches and reads current Microsoft Learn documentation through the public Microsoft Learn MCP server as an agent connector.\n\nThe server at `https://learn.microsoft.com/api/mcp` is free, uses streamable HTTP, and does not require authentication. It currently exposes tools to search documentation, search code samples, and fetch complete documentation pages.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Start Copilot once, enter each prompt in the same session, and confirm its checkpoint before continuing.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` v0.13.1 or later installed and signed in\n- Access to Copilot Cowork\n- Permission to provision and share an app in your Microsoft 365 development tenant\n\nSee [Getting started](../../README.md#getting-started) for installation and sign-in instructions.\n\n### Step 1: Check the environment\n\nStart the WIQD Copilot agent. In the GitHub Copilot app, open the\n**Default agent** selector and choose **wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter this prompt:\n\n```text\nCheck that my environment is ready to build and provision a plugin with WIQD. Confirm that Node.js is version 24 or later, WIQD is version 0.13.1 or later, I am signed in, and WIQD doctor reports no blocking errors. Help me fix any failed check before continuing.\n```\n\n**Checkpoint:** Copilot confirms that the environment is ready.\n\n## Build the plugin\n\n### Step 2: Create the plugin\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a standalone plugin called Microsoft Learn Helper.\n```\n\n**Checkpoint:** the current working directory is the generated plugin root and contains `wiqd.plugin.json`, `m365agents.yml`, and `appPackage/manifest.json`.\n\n### Step 3: Add the no-auth connector\n\nEnter this prompt in the same Copilot session:\n\n```text\nAdd a connector named Microsoft Learn to this plugin using the public MCP endpoint https://learn.microsoft.com/api/mcp. Configure it with no authentication. Inspect the server's current tools and include an MCP tool-description file in the app package so the connector can be verified by Copilot Cowork. Its purpose is to search and read current official Microsoft documentation and code samples.\n```\n\nReview and approve the proposed file changes.\n\n**Checkpoint:** `appPackage/manifest.json` contains a Microsoft Learn entry in `agentConnectors`, references a tool-description file in the app package, and has no authorization block.\n\n### Step 4: Inspect and validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nShow me a summary of this plugin, then validate it locally with WIQD. If validation reports errors, explain and fix them before continuing.\n```\n\n**Checkpoint:** the plugin summary lists the Microsoft Learn connector and static validation completes successfully.\n\n## Install the plugin in Copilot Cowork\n\n### Step 5: Provision the plugin\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision this Copilot Cowork plugin.\n```\n\n**Checkpoint:** WIQD reports that **Microsoft Learn Helper** was provisioned successfully.\n\n## Test it in Copilot Cowork\n\n1. Open Copilot Cowork.\n2. Open the plugin UI and find the provisioned **Microsoft Learn Helper** plugin.\n3. Install the plugin.\n4. Start a new Copilot Cowork session with **Microsoft Learn Helper** enabled.\n5. Run each prompt below and confirm that Cowork invokes the expected connector tool and returns content from Microsoft Learn.\n\n| Prompt | Expected behavior |\n|---|---|\n| `Find the current Microsoft guidance for building a remote MCP server in TypeScript.` | Calls `microsoft_docs_search` and summarizes relevant official documentation with links. |\n| `Show me a C# code sample for authenticating with DefaultAzureCredential.` | Calls `microsoft_code_sample_search` with C# as the language. |\n| `Read this Learn page and summarize its prerequisites: <Microsoft Learn URL>` | Calls `microsoft_docs_fetch` for the supplied URL. |\n\n## References\n\n- [Build a plugin with WIQD](https://microsoft.github.io/wiqd/getting-started/build-a-plugin/)\n- [WIQD plugin authoring reference](https://microsoft.github.io/wiqd/getting-started/plugin-reference/)\n- [Microsoft Learn MCP Server overview](https://learn.microsoft.com/training/support/mcp)\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/plugins/microsoft-learn-mcp\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).","isInternal":false,"tokens":1004,"sizeBytes":4538},{"name":"README.md","path":"tools/wiqd/cookbooks/plugins/plugin-portability/README.md","rawUrl":"https://raw.githubusercontent.com/microsoft/plugins/HEAD/tools/wiqd/cookbooks/plugins/plugin-portability/README.md","title":"plugin-portability Documentation","category":"plugin-manifest","format":"markdown","content":"# Round-trip a plugin across formats\n\nExport a validated WIQD plugin to the Agent Plugin, Claude, and Cursor formats,\nthen import the Agent Plugin export into a fresh WIQD project and validate that\nthe connector, skill, and declarative agent survived.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Start from a validated composite plugin such as\n  [Learn Technology Advisor](../learn-tech-advisor/README.md).\n- Keep the entire export directory together. The declarative-agent payload is\n  carried beside the exported manifest and is required for a lossless import.\n\n## Export the plugin\n\nFrom the validated plugin root, start one interactive Copilot session. In the\nGitHub Copilot app, open the **Default agent** selector and choose **wiqd**. If\nyou prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nValidate this WIQD plugin. If validation is clean, export it with the supported\nWIQD plugin export command to all three formats: open-plugin, claude-plugin, and\ncursor-plugin. Put each format in its default export directory. Do not provision\nor change the source plugin.\n```\n\n**Checkpoint:** the plugin contains `export/open-plugin`,\n`export/claude-plugin`, and `export/cursor-plugin`, and each export has its\nformat-specific manifest plus the carried skill and agent content.\n\n## Prove the round trip\n\nEnter:\n\n```text\nImport export/open-plugin into a new sibling project named\n<current-plugin-name>-roundtrip using the supported WIQD plugin import command.\nBecause this export came from WIQD, reuse its round-trip privacy, terms, and\nagent metadata rather than inventing replacements. Show the imported plugin and\nrun static validation. Compare its capability list with the source plugin.\n```\n\n**Checkpoint:** import reports that the agent was restored, validation passes,\nand both projects list the same `agentConnectors`, `agentSkills`, and\n`declarativeAgent` capabilities.\n\n## Test the boundary\n\nCopy an entire export directory to a temporary location and import it again.\nDo not copy only the manifest: that intentionally omits the carried agent and is\nnot a valid lossless round trip.\n\n**Checkpoint:** a complete exported directory imports successfully without\nasking for new privacy or terms URLs.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/plugins/plugin-portability\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n","isInternal":false,"tokens":532,"sizeBytes":2436},{"name":"README.md","path":"tools/wiqd/cookbooks/README.md","rawUrl":"https://raw.githubusercontent.com/microsoft/plugins/HEAD/tools/wiqd/cookbooks/README.md","title":"cookbooks Documentation","category":"plugin-manifest","format":"markdown","content":"# wiqd plugin cookbooks\n\nwiqd cookbooks are short, end-to-end recipes for building and improving plugins\nfor Microsoft 365 Copilot. A plugin can bring together skills, connectors\n(including MCP connectors), and agents. A declarative agent is one type of\nagent component. Some recipes focus on one component, while others show how to\ncombine them into a more capable plugin.\n\nEach recipe is built around one clear outcome:\n**build it → make it do something → make it safe → make it good → make it grounded.**\n\n## Getting started\n\nBefore running any cookbook, make sure you have these installed and configured:\n\n### 1. Install Node.js 24+\n\nwiqd requires Node.js 24 or later. Install via your preferred method:\n\n```bash\n# macOS / Linux (via nvm)\nnvm install 24 && nvm use 24\n\n# Windows (via fnm)\nfnm install 24 && fnm use 24\n```\n\n### 2. Install wiqd CLI\n\n```bash\n# macOS / Linux\ncurl -fsSL https://aka.ms/wiqd/install.sh | bash\n\n# Windows (PowerShell)\niex \"& { $(irm 'https://aka.ms/wiqd/install.ps1') }\"\n```\n\nVerify the installation:\n\n```bash\nwiqd --version\n```\n\n### 3. Choose how to use the WIQD Copilot agent\n\nYou can run these recipes in the GitHub Copilot app or the standalone\n[GitHub Copilot CLI](https://docs.github.com/en/copilot/how-tos/copilot-cli/set-up-copilot-cli/install-copilot-cli).\n\nIn the GitHub Copilot app, open the agent selector labeled **Default agent** and\nchoose **wiqd**. No CLI installation is required.\n\nIf you prefer the CLI, install it:\n\n```bash\n# Install on any platform with Node.js 22 or later\nnpm install -g @github/copilot\n\n# Verify that the standalone CLI supports custom agents\ncopilot --help\n```\n\nConfirm that the help output includes the `--agent` option before continuing. If it does not, check which executable your shell resolves for `copilot`, then reinstall the standalone CLI.\n\nStart the WIQD agent with:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\n### 4. Sign in to your Microsoft 365 account\n\nYou need a Microsoft 365 account with access to Copilot and an Azure subscription for provisioning plugin components and required resources. Start an interactive sign-in:\n\n```bash\nwiqd auth login --interactive\n```\n\nOn macOS and Linux, this normally opens your system browser. Sign in with the work or school account for the tenant where you want to provision the agent, then complete any consent or multi-factor authentication prompts. `wiqd` delegates authentication to its installed providers, so you may see more than one provider reported in the terminal.\n\nConfirm that the intended account is signed in:\n\n```bash\nwiqd auth status\n```\n\nIf the status shows an account from the wrong tenant, sign out and repeat the interactive login, choosing the correct account in the browser:\n\n```bash\nwiqd auth logout\nwiqd auth login --interactive\n```\n\nSee the [wiqd authentication guide](https://microsoft.github.io/wiqd/getting-started/authentication/) for provider details and troubleshooting.\n\n### 5. Confirm everything is ready\n\n```bash\nwiqd doctor\n```\n\nThis checks your environment for common issues (Node version, auth status, CLI version).\n\n---\n\n## Start with a guided plugin recipe\n\nNew to wiqd? Begin with one of these self-contained recipes. Each takes you\nfrom setup to a working plugin and shows you how to test its core behavior.\nYou can use the resulting plugin project as a starting point for the extension and\nlifecycle recipes in the next section.\n\n| Recipe | Primary component | What you'll build |\n|--------|-------------------|-------------------|\n| [Zero to agent, live in Copilot](./declarative-agents/zero-to-agent/README.md) | Declarative agent | Scaffold, provision, and open your first agent |\n| [Translator agent](./declarative-agents/translator-agent/README.md) | Declarative agent | Translate text into any language |\n| [Photobooth agent](./declarative-agents/photobooth-agent/README.md) | Declarative agent | Apply effects and create photobooth-style image composites |\n| [Mind Your Language agent](./declarative-agents/mind-your-language-agent/README.md) | Declarative agent | Coach tone and rewrite passive-aggressive text |\n| [Zava Insurance agent (MCP)](./declarative-agents/insurance-agent-mcp/README.md) | Declarative agent | Connect an agent to an MCP server for live insurance data |\n| [Demo Planning agent](./declarative-agents/demo-planning-agent/README.md) | Declarative agent | Plan demos, workshops, hackathons, and presentations |\n| [Microsoft Learn MCP connector](./plugins/microsoft-learn-mcp/README.md) | Connector (MCP) | Create and test a plugin with a public, no-auth MCP connector |\n\n## Extend and improve your plugin\n\nUse these recipes to add components and capabilities or work on a later stage\nof the plugin lifecycle. Some build on a specific guided recipe, while others\nwork with any existing plugin or declarative-agent component. Check\n**Start with** before you begin.\n\n| Recipe | Focus | Start with | What you'll learn |\n|--------|-------|------------|-------------------|\n| [Ground an existing agent in your SharePoint content](./declarative-agents/sharepoint-knowledge-agent/README.md) | Grounding | An existing declarative agent, such as [Zero to agent](./declarative-agents/zero-to-agent/README.md) | Scope organizational knowledge, require grounded answers, and verify citations |\n| [Build a public web research agent](./declarative-agents/public-web-research-agent/README.md) | Research | An existing declarative agent | Scope research to approved public sites and produce source-backed answers |\n| [Upgrade the Learn connector into a technology advisor](./plugins/learn-tech-advisor/README.md) | Composition | [Microsoft Learn MCP connector](./plugins/microsoft-learn-mcp/README.md) | Combine a reusable plugin skill with a declarative agent |\n| [Hill-climb agent quality with evals](./lifecycle/eval-hill-climb/README.md) | Evaluation | An existing working agent | Measure quality, diagnose failures, improve behavior, and compare results |\n| [Debug an agent in DevUI](./lifecycle/devui-debugging/README.md) | Debugging | An existing agent with a test scenario | Inspect tool selection, execution, grounding, citations, and failures |\n| [Deliver an agent to a team](./lifecycle/team-delivery/README.md) | Delivery | A validated agent | Validate a package, configure shared scope, and target distribution |\n| [Round-trip a plugin across formats](./plugins/plugin-portability/README.md) | Portability | An existing plugin | Export and re-import Agent Plugin, Claude, and Cursor formats |\n\n> All recipes support the GitHub Copilot app and GitHub Copilot CLI. In the\n> app, choose **wiqd** from the **Default agent** selector. In the CLI, start\n> the agent with `copilot --agent wiqd:wiqd`. Recipes also use `wiqd` CLI\n> commands.\n\n## Authors and contributors\n\n<!-- contributors:start -->\n<!-- Generated by update-contributors.mjs. Do not edit by hand. -->\n<table>\n  <tr>\n    <td align=\"center\"><a href=\"https://github.com/rabwill\"><img src=\"https://avatars.githubusercontent.com/u/20379311?v=4\" width=\"80px\" alt=\"Rabia Williams\" /><br /><sub><b>Rabia Williams</b></sub><br /><sub>@rabwill</sub></a></td>\n    <td align=\"center\"><a href=\"https://github.com/sebastienlevert\"><img src=\"https://avatars.githubusercontent.com/u/7620955?v=4\" width=\"80px\" alt=\"Sébastien Levert\" /><br /><sub><b>Sébastien Levert</b></sub><br /><sub>@sebastienlevert</sub></a></td>\n  </tr>\n</table>\n<!-- contributors:end -->\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd\" />\n","isInternal":false,"tokens":1789,"sizeBytes":7479}],"systemPromptSnippet":"<yakaai_skills repo=\"microsoft/plugins\">\n<!-- File: samples/plugins/retirement-radar-plugin/appPackage/skills/retirement-radar/references/report-template.md (Tokens: ~223 | Category: anthropic-skill) -->\n# Retirement Radar report template\n\n**Verdict:** {N} of {M} Microsoft dependencies need action - {X} are already retired.\n\n| # | Finding | Where in your code | Status | Official date | Replacement | Source |\n|---|---|---|---|---|---|---|\n| 1 | {technology} | line {n}: `{snippet}` | Broken now / Breaking soon / Deprecated / OK | {date exactly as in docs} | {replacement} | [{doc title}]({learn url}) |\n\n## Fixes\n\n### 1. {technology} -> {replacement}\nBefore:\n```{language}\n{original lines}\n```\nAfter:\n```{language}\n{rewritten lines, based on the official sample}\n```\nWhy: {one sentence quoting or paraphrasing the Learn doc}.\n\n## Migration checklist\n1. [ ] Broken now: {item} - {first concrete step}\n2. [ ] Breaking soon: {item}\n3. [ ] Deprecated: {item}\n\n_All dates and replacements verified against Microsoft Learn on {today's date}._\n\n<!-- File: samples/plugins/retirement-radar-plugin/appPackage/skills/retirement-radar/SKILL.md (Tokens: ~955 | Category: anthropic-skill) -->\n---\nname: retirement-radar\ndescription: Scans code, scripts, config files, package lists or architecture notes for Microsoft APIs, SDKs, PowerShell modules, endpoints and services that are deprecated or retired, verifies each one live against official Microsoft Learn documentation, and returns a dated risk table with the supported replacement and a rewritten snippet. Use when the user asks \"is this still supported?\", \"what's deprecated in my code?\", \"why did my script/webhook stop working?\", \"check my dependencies for retirement\", or pastes code that uses AzureAD, MSOnline, AzureRM, ADAL, Azure AD Graph, Office 365 connectors or other legacy Microsoft tech. Do not use for general coding help unrelated to deprecation or for non-Microsoft technologies.\nlicense: MIT\ncompatibility: Requires the Microsoft Learn MCP server (https://learn.microsoft.com/api/mcp) with the tools microsoft_docs_search, microsoft_docs_fetch and microsoft_code_sample_search.\nmetadata:\n  author: Contoso Cloud Advocacy\n  version: \"1.0.0\"\n---\n\n# Retirement Radar\n\nTurn \"I think this still works\" into \"here is the official date, the replacement, and the fixed code\".\n\n## When to use\n- The user pastes code, a script, `package.json`, `.csproj`, `requirements.txt`, an ARM/Bicep template, or a description of their architecture.\n- The user asks whether something is deprecated, retired, still supported, or why it suddenly stopped working (401/403/410 errors from an old endpoint are a strong signal).\n\n## Step 1 - Inventory the signals\nExtract every Microsoft technology reference. Look for:\n\n| Signal type | Examples |\n|---|---|\n| PowerShell modules / cmdlet prefixes | `Connect-AzureAD`, `*-AzureAD*`, `Connect-MsolService`, `*-Msol*`, `*-AzureRM*` |\n| Packages | `Microsoft.IdentityModel.Clients.ActiveDirectory` (ADAL.NET), `adal` (Python/Node), `msrestazure`, `WindowsAzure.Storage`, `Microsoft.Azure.Management.*` |\n| Endpoints | `graph.windows.net` (Azure AD Graph), `outlook.office.com/webhook`, `*.webhook.office.com/webhookb2` (Office 365 connectors), `login.windows.net` |\n| Services / features | Office 365 connectors in Teams, basic auth for Exchange Online, classic (ASM) resources |\n\nRecord where each signal appears (line number or snippet) so the report can point to it.\n\n## Step 2 - Verify every signal on Microsoft Learn\nFor each signal, in this order:\n1. `microsoft_docs_search` with `\"<technology> retirement date\"` or `\"<technology> deprecated migrate to\"`.\n2. If the excerpt does not contain a date or a named replacement, call `microsoft_docs_fetch` on the most relevant `learn.microsoft.com` URL from the search results.\n3. Capture: status wording, the exact date(s), the named replacement, and the source URL.\n\nHard rule: never state a date, status or replacement you did not read in a tool result. If nothing is found, report \"No retirement notice found on Learn\".\n\n## Step 3 - Classify against today's date\n| Status | Rule |\n|---|---|\n| Broken now | Official retirement / end-of-support date is in the past |\n| Breaking soon | Retirement date is within the next 12 months |\n| Deprecated | Docs say deprecated / no new investment, but no firm date |\n| OK | Verified current, or no retirement notice found |\n\n## Step 4 - Build the fix\nFor every non-OK finding, call `microsoft_code_sample_search` for the replacement, passing `language` to match the user's code (for example `powershell`, `csharp`, `python`). Rewrite only the affected lines, preserve the user's variable names, and keep the result runnable.\n\n## Step 5 - Report\nUse the template in [references/report-template.md](references/report-template.md):\n1. One-line verdict, for example: \"3 of 5 Microsoft dependencies in this script are already retired.\"\n2. Risk table: Finding | Where | Status | Official date | Replacement | Source.\n3. Before -> After code blocks for the highest-risk findings.\n4. Prioritized migration checklist (Broken now first, then Breaking soon, then Deprecated).\n\n## Safety\n- If the input contains secrets (keys, tokens, connection strings, webhook URLs) warn the user and redact them in the output.\n- Do not invent cmdlets, packages or endpoints. If a replacement mapping is not in the docs, say so.\n\n<!-- File: samples/plugins/microsoft-learn-plugin/README.md (Tokens: ~786 | Category: plugin-manifest) -->\n# Microsoft Learn Helper\n\nMicrosoft Learn Helper is a Microsoft 365 Copilot plugin that searches and\nreads current official Microsoft documentation and code samples.\n\nThe plugin connects to the public\n[Microsoft Learn MCP server](https://learn.microsoft.com/api/mcp). The\nconnector is read-only and does not require an API key or user sign-in.\n\n## What this sample demonstrates\n\n- Adding a remote MCP server as an agent connector\n- Describing MCP tools for Microsoft 365 Copilot\n- Searching current Microsoft documentation\n- Fetching complete documentation pages for additional context\n- Finding official code samples by language\n- Packaging and provisioning a connector plugin\n\n## Try the plugin\n\n### Prerequisites\n\nYou need:\n\n- Access to Microsoft 365 Copilot Cowork\n- Permission to upload a custom plugin in your tenant\n- Copilot Credits for testing in Cowork\n\n### 1. Upload the package\n\nUse the prebuilt [`package.zip`](package.zip), or build a package from the\nsource files in [`appPackage/`](appPackage/).\n\nIn Microsoft 365 Copilot Cowork:\n\n1. Open the plugin inventory.\n2. Select the option to upload a custom plugin.\n3. Upload `package.zip`.\n4. Find **Microsoft Learn Helper** and enable it for the current Cowork\n   session.\n\nThe connector uses anonymous access, so Cowork should not ask you to sign in.\n\n### 2. Test the connector\n\nTry prompts such as:\n\n```text\nFind the current Microsoft documentation for building a declarative agent.\nSummarize the prerequisites and cite the source.\n```\n\n```text\nFind an official TypeScript code sample for authenticating with Microsoft\nGraph. Explain the sample and link to its source.\n```\n\n```text\nSearch Microsoft Learn for the latest Azure Functions Node.js guidance, then\nread the most relevant page and summarize its recommendations.\n```\n\n## Available tools\n\n| Tool | Purpose |\n|------|---------|\n| `microsoft_docs_search` | Searches official Microsoft documentation and returns relevant excerpts and source URLs |\n| `microsoft_docs_fetch` | Fetches the complete content of a Microsoft documentation page |\n| `microsoft_code_sample_search` | Finds current code samples in official Microsoft documentation, optionally filtered by language |\n\n## Project structure\n\n| File or folder | Purpose |\n|----------------|---------|\n| [`appPackage/manifest.json`](appPackage/manifest.json) | Defines the Microsoft Learn remote MCP connector |\n| [`appPackage/microsoft-learn-mcp-tools.json`](appPackage/microsoft-learn-mcp-tools.json) | Describes the MCP tools exposed to Copilot |\n| [`wiqd.plugin.json`](wiqd.plugin.json) | Identifies the project as a WIQD plugin with an agent connector |\n| [`m365agents.yml`](m365agents.yml) | Defines provisioning, validation, packaging, and publishing actions |\n| [`m365agents.local.yml`](m365agents.local.yml) | Defines the local provisioning workflow |\n\n## Develop the sample\n\nThis project includes Microsoft 365 Agents Toolkit lifecycle files. Open the\nproject in VS Code with Microsoft 365 Agents Toolkit, then use its lifecycle\ncommands to provision, package, validate, and publish the plugin to your\ndevelopment environment.\n\nYou can also inspect and modify the plugin with\n[WIQD](https://microsoft.github.io/wiqd/). See the\n[Microsoft Learn MCP connector cookbook](../../../tools/wiqd/cookbooks/plugins/microsoft-learn-mcp/README.md)\nfor a guided, end-to-end build of this sample.\n\n## Important\n\nThis sample is for learning and demonstration purposes. Review the manifest,\ndeveloper information, descriptions, icons, and tenant policies before sharing\nor publishing a derived plugin.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/samples/plugins/microsoft-learn-plugin\" />\n\n<!-- File: samples/plugins/microsoft-learn-plugin/wiqd.plugin.json (Tokens: ~32 | Category: plugin-manifest) -->\n{\n  \"schemaVersion\": 1,\n  \"name\": \"Microsoft Learn Helper\",\n  \"capabilities\": [\n    \"agentConnectors\"\n  ]\n}\n\n<!-- File: samples/plugins/retirement-radar-plugin/README.md (Tokens: ~1231 | Category: plugin-manifest) -->\n# Retirement Radar for Copilot Cowork\n\nRetirement Radar helps you find retired and deprecated Microsoft technology before an old script fails in production.\n\nGive Copilot Cowork a script, configuration file, package list, or architecture note. Retirement Radar checks every Microsoft API, SDK, PowerShell module, endpoint, and service it finds against live Microsoft Learn documentation, then returns:\n\n- A clear supported, deprecated, or retired verdict\n- Official retirement dates and Microsoft Learn sources\n- Supported replacements\n- Updated code based on official samples\n- A prioritized migration checklist\n\n## Try the plugin\n\n### Prerequisites\n\nYou need:\n\n- Access to **Microsoft 365 Copilot Cowork**\n- Copilot Credits for testing in Cowork\n\nThe plugin uses the public, read-only [Microsoft Learn MCP server](https://learn.microsoft.com/api/mcp). It does not require an API key or a connector sign-in.\n\n### 1. Get the plugin package\n\nUse the prebuilt package:\n\n```text\nappPackage.dev.zip\n```\n\nThe ZIP must contain `manifest.json`, `mcp-tools.json`, the icons, and `skills/` at its root. Do not zip the `appPackage` folder itself.\n\n### 2. Upload and enable it in Cowork\n\n1. Open **Microsoft 365 Copilot Cowork**.\n2. Open the plugin inventory.\n3. Select the option to upload a custom plugin.\n4. Upload `appPackage.dev.zip`.\n5. Find **Retirement Radar** and enable it for the current Cowork session.\n\nThe plugin should show:\n\n- The **Retirement Radar** skill\n- The **Microsoft Learn** connector\n\nThe connector uses anonymous access, so Cowork should not ask you to sign in.\n\n### 3. Run the demo\n\nOpen [`demo/legacy-admin-script copy.txt`](demo/legacy-admin-script%20copy.txt), copy the complete script, and paste it into Cowork with this prompt:\n\n> Is this still safe to run tonight? Check it for retired Microsoft APIs.\n\nRetirement Radar should:\n\n1. Inventory the Microsoft technologies in the script.\n2. Check each one against current Microsoft Learn content.\n3. Classify each finding as **Broken now**, **Breaking soon**, **Deprecated**, or **OK**.\n4. Cite an official source for every dated claim.\n5. Recommend supported replacements.\n\nThe demo includes intentionally old technology such as:\n\n- MSOnline and AzureAD PowerShell\n- Azure AD Graph (`graph.windows.net`)\n- AzureRM PowerShell\n- Office 365 connectors in Teams\n\nBecause Retirement Radar checks Microsoft Learn at runtime, its wording and findings can change as Microsoft updates the documentation.\n\n### 4. Ask for the migration\n\nContinue in the same Cowork session:\n\n> Rewrite the whole script with the supported replacements.\n\nThe plugin uses Microsoft Learn code samples to produce an updated PowerShell script while preserving the intent and variable names where possible.\n\n## More prompts to try\n\nRetirement Radar can inspect more than PowerShell. Try it with application code, dependency files, infrastructure definitions, or architecture notes:\n\n```text\nCheck this project for deprecated Microsoft SDKs and APIs. Cite an official source for every finding.\n```\n\n```text\nWhich dependencies in this package file need migration within the next 12 months?\n```\n\n```text\nThis integration started returning 403 errors. Check whether any Microsoft endpoint or authentication library in it has been retired.\n```\n\n```text\nCreate a prioritized migration plan, then rewrite only the broken parts.\n```\n\nDo not paste live secrets, access tokens, connection strings, or production webhook URLs into the chat. Replace them with redacted values first.\n\n## What is in the plugin\n\n```text\n\nappPackage/\n├── manifest.json\n├── mcp-tools.json\n├── color.png\n├── outline.png\n└── skills/\n    └── retirement-radar/\n        ├── SKILL.md\n        └── references/\n            └── report-template.md\n\n```\n\nRetirement Radar is a standard Microsoft 365 app package for Copilot Cowork:\n\n| Component | Purpose |\n|---|---|\n| `agentSkills[0]` | Registers the `retirement-radar` workflow from `skills/retirement-radar/SKILL.md` |\n| `agentConnectors[0]` | Connects Cowork to the remote Microsoft Learn MCP server |\n| `mcp-tools.json` | Describes the Microsoft Learn tools exposed to the skill |\n\nThere is no declarative agent or hosted backend in this package. The skill contains the workflow, and the connector provides live Microsoft Learn search, page retrieval, and code-sample tools.\n\n## Troubleshooting\n\n### The plugin does not appear in Cowork\n\n- Confirm that `appPackage.dev.zip` uploaded successfully.\n- Reopen the plugin inventory after the upload completes.\n- Check that the plugin is installed and enabled for the current session.\n\n### The package upload fails\n\n- Open the ZIP and confirm `manifest.json` is at the root.\n- Confirm `skills/retirement-radar/SKILL.md` exists with that exact capitalization.\n- Confirm the ZIP contains `mcp-tools.json`, `color.png`, and `outline.png`.\n- Do not place a parent `appPackage/` directory inside the ZIP.\n\n### The skill does not activate\n\nUse an explicit prompt containing phrases such as **retired**, **deprecated**, **still supported**, or **check Microsoft dependencies**. Also confirm that Retirement Radar is enabled in the Cowork session.\n\n### Microsoft Learn results are unavailable\n\nThe skill depends on `https://learn.microsoft.com/api/mcp`. Confirm that your organization allows Cowork to reach that HTTPS endpoint.\n\n## Learn more\n\n- [Copilot Camp: Build your first Copilot Cowork plugin](https://microsoft.github.io/copilot-camp/pages/copilot-cowork/02-cowork-plugins/)\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/samples/plugins/retirement-radar-plugin\" />\n\n<!-- File: tools/wiqd/cookbooks/declarative-agents/demo-planning-agent/README.md (Tokens: ~975 | Category: plugin-manifest) -->\n# Demo Planning agent: interactive lab\n\nBuild and open a Microsoft 365 Copilot agent that plans demos, workshops, hackathons, presentations, and customer conversations. This README is organized like a notebook: run one cell at a time, confirm its checkpoint, and then continue.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Run terminal commands in a\n> terminal, enter prompts in the GitHub Copilot app or CLI, and keep the same\n> Copilot conversation open for all remaining steps.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` installed and signed in\n- Access to the GitHub Copilot app or GitHub Copilot CLI\n- Permission to provision an agent to a dev environment\n\n### Step 1: Check the environment\n\n> [!NOTE]\n> See [Getting started](../../README.md#getting-started) in the cookbook README for wiqd prerequisites and installation instructions.\n\n```bash\nnode --version\nwiqd --version\nwiqd doctor\n```\n\nIf you plan to use the CLI, also run `copilot --version`.\n\n**Checkpoint:** Node reports version 24 or later, and the commands for your\nchosen workflow complete successfully.\n\n## Build the agent\n\n### Step 2: Create the workspace\n\n```bash\nmkdir -p demo-planning && cd demo-planning\n```\n\n### Step 3: Start Copilot\n\nIn the GitHub Copilot app, open the **Default agent** selector and choose\n**wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nStart with a clean conversation:\n\n```text\n/clear\n```\n\n### Step 4: Scaffold the agent\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a new declarative agent called Demo Planner that helps users plan professional demos, workshops, hackathons, presentations, and customer conversations. Ask about the audience, goals, time constraints, format, and technology, then generate a structured plan with an agenda, talking points, demo scripts, fallback options, and preparation checklists.\n```\n\nReview and approve the proposed file changes.\n\n**Checkpoint:** the current directory contains a new agent project with manifest and instruction files.\n\n### Step 5: Review the instructions\n\nConfirm the generated instructions tell the agent to:\n\n- Ask about the audience, event type, duration, goals, and technology\n- Create an agenda with time allocations\n- Provide talking points and transitions\n- Include step-by-step demo actions and fallback plans\n- Produce a preparation checklist\n- Adapt depth and tone to technical, executive, or mixed audiences\n- Handle follow-up changes to the plan\n\nAsk Copilot to correct any missing behavior. Keep this Copilot session open for the remaining steps.\n\n## Run the agent\n\n### Step 6: Move into the agent project\n\nCopilot reports the path of the project it created. Move the current session into that project root:\n\n```text\n/cwd <path-to-new-agent-project>\n```\n\nReplace the placeholder with the path Copilot reported.\n\n**Checkpoint:** the current directory contains the agent's `appPackage` directory and lifecycle configuration file.\n\n### Step 7: Validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nValidate the agent with wiqd. If validation reports errors, explain them and help me fix them before continuing.\n```\n\n**Checkpoint:** validation completes without errors.\n\n### Step 8: Provision to dev\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision the agent to the dev environment with wiqd.\n```\n\n**Checkpoint:** provisioning succeeds and returns a Microsoft 365 Copilot share link.\n\n### Step 9: Open in Copilot\n\nEnter this prompt in the same Copilot session:\n\n```text\nOpen the provisioned agent in Microsoft 365 Copilot with wiqd.\n```\n\n## Try it\n\n| Prompt | Expected behavior |\n|---|---|\n| `Plan a 30-minute product demo for enterprise customers` | Asks for key details and returns a timed agenda |\n| `Plan a 2-hour hackathon kickoff for 50 developers` | Creates a timeline for setup, introduction, hacking, and judging |\n| `Add a 10-minute Q&A at the end` | Updates the plan and adjusts its time allocations |\n\n## Reset the lab\n\nFrom the parent directory of `demo-planning`:\n\n```bash\nrm -rf demo-planning\n```\n\nDeleting the local folder does not remove provisioned resources.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/demo-planning-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n\n<!-- File: tools/wiqd/cookbooks/declarative-agents/insurance-agent-mcp/README.md (Tokens: ~1098 | Category: plugin-manifest) -->\n# Zava Insurance agent: interactive MCP lab\n\nBuild and open a Microsoft 365 Copilot agent connected to the Zava Insurance MCP server. This README is organized like a notebook: run one cell at a time, confirm its checkpoint, and then continue.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Run terminal commands in a\n> terminal, enter prompts in the GitHub Copilot app or CLI, and keep the same\n> Copilot conversation open for all remaining steps.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` installed and signed in\n- Access to the GitHub Copilot app or GitHub Copilot CLI\n- Permission to provision an agent to a dev environment\n- Access to `https://zava-insurance-mcp.azurewebsites.net/mcp`\n\n### Step 1: Check the environment\n\n> [!NOTE]\n> See [Getting started](../../README.md#getting-started) in the cookbook README for wiqd prerequisites and installation instructions.\n\n```bash\nnode --version\nwiqd --version\nwiqd doctor\n```\n\nIf you plan to use the CLI, also run `copilot --version`.\n\n**Checkpoint:** Node reports version 24 or later, and the commands for your\nchosen workflow complete successfully.\n\n## Build the agent\n\n### Step 2: Create the workspace\n\n```bash\nmkdir -p zava-insurance && cd zava-insurance\n```\n\n### Step 3: Start Copilot\n\nIn the GitHub Copilot app, open the **Default agent** selector and choose\n**wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nStart with a clean conversation:\n\n```text\n/clear\n```\n\n### Step 4: Scaffold the agent\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a new declarative agent called Zava Insurance that helps users inspect\nclaims, find contractors and inspectors, and perform controlled claim\noperations.\n```\n\nReview and approve the proposed file changes.\n\n**Checkpoint:** the current directory contains a new agent project with manifest and instruction files.\n\n### Step 5: Add the MCP action\n\nEnter this prompt in the same Copilot session:\n\n```text\nAdd a remote MCP action to the Zava Insurance agent using\nhttps://zava-insurance-mcp.azurewebsites.net/mcp with no authentication. Use the\nsupported WIQD agent add action command and inspect the server's current tools\nbefore updating the agent instructions.\n```\n\nReview and approve the manifest changes.\n\n### Step 6: Review the configuration\n\nConfirm the generated project includes:\n\n- The MCP endpoint `https://zava-insurance-mcp.azurewebsites.net/mcp`\n- An MCP action in the agent manifest with `None` authentication\n- Read workflows using `show-claims-dashboard`, `show-claim-detail`,\n  `show-contractors`, `get-claim-summary`, and `list-inspectors`\n- Instructions that summarize the exact proposed change and wait for explicit\n  confirmation in a separate user turn before calling `update-claim-status`,\n  `update-inspection`, `update-purchase-order`, or `create-inspection`\n\nAsk Copilot to correct any missing configuration. Keep this Copilot session open for the remaining steps.\n\n## Run the agent\n\n### Step 7: Move into the agent project\n\nCopilot reports the path of the project it created. Move the current session into that project root:\n\n```text\n/cwd <path-to-new-agent-project>\n```\n\nReplace the placeholder with the path Copilot reported.\n\n**Checkpoint:** the current directory contains the agent's `appPackage` directory and lifecycle configuration file.\n\n### Step 8: Validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nValidate the agent with wiqd. If validation reports errors, explain them and help me fix them before continuing.\n```\n\n**Checkpoint:** validation completes without errors.\n\n### Step 9: Provision to dev\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision the agent to the dev environment with wiqd.\n```\n\n**Checkpoint:** provisioning succeeds and returns a Microsoft 365 Copilot share link.\n\n### Step 10: Open in Copilot\n\nEnter this prompt in the same Copilot session:\n\n```text\nShow me the Microsoft 365 Copilot launch URL for the provisioned dev agent.\n```\n\n## Try it\n\n| Prompt | Expected behavior |\n|---|---|\n| `Summarize claim CN202504990.` | Calls `get-claim-summary` or `show-claim-detail` and reports the live demo result |\n| `Show preferred contractors for water damage.` | Calls `show-contractors` with the relevant filters |\n| `Change claim 1 to Closed and add a completion note.` | Describes the exact update and asks for confirmation without calling the write tool yet |\n\n## Reset the lab\n\nFrom the parent directory of `zava-insurance`:\n\n```bash\nrm -rf zava-insurance\n```\n\nDeleting the local folder does not remove provisioned resources.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/insurance-agent-mcp\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n\n<!-- File: tools/wiqd/cookbooks/declarative-agents/mind-your-language-agent/README.md (Tokens: ~974 | Category: plugin-manifest) -->\n# Mind Your Language agent: interactive lab\n\nBuild and open a Microsoft 365 Copilot tone coach that rewrites passive-aggressive, sarcastic, or harsh messages. This README is organized like a notebook: run one cell at a time, confirm its checkpoint, and then continue.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Run terminal commands in a\n> terminal, enter prompts in the GitHub Copilot app or CLI, and keep the same\n> Copilot conversation open for all remaining steps.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` installed and signed in\n- Access to the GitHub Copilot app or GitHub Copilot CLI\n- Permission to provision an agent to a dev environment\n\n### Step 1: Check the environment\n\n> [!NOTE]\n> See [Getting started](../../README.md#getting-started) in the cookbook README for wiqd prerequisites and installation instructions.\n\n```bash\nnode --version\nwiqd --version\nwiqd doctor\n```\n\nIf you plan to use the CLI, also run `copilot --version`.\n\n**Checkpoint:** Node reports version 24 or later, and the commands for your\nchosen workflow complete successfully.\n\n## Build the agent\n\n### Step 2: Create the workspace\n\n```bash\nmkdir -p mind-your-language && cd mind-your-language\n```\n\n### Step 3: Start Copilot\n\nIn the GitHub Copilot app, open the **Default agent** selector and choose\n**wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nStart with a clean conversation:\n\n```text\n/clear\n```\n\n### Step 4: Scaffold the agent\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a new declarative agent called Mind Your Language that acts as a tone coach. When a user pastes text, detect passive-aggressive, sarcastic, or unkind phrasing and rewrite it in a kinder, more constructive tone. Explain what changed and why, and offer alternative phrasings ranked from most direct to most gentle. If the text is already kind, confirm that no changes are needed.\n```\n\nReview and approve the proposed file changes.\n\n**Checkpoint:** the current directory contains a new agent project with manifest and instruction files.\n\n### Step 5: Review the instructions\n\nConfirm the generated instructions tell the agent to:\n\n- Detect passive-aggressive, sarcastic, or harsh phrasing\n- Identify phrases that could land poorly\n- Preserve the original intent in a kinder rewrite\n- Briefly explain why each change improves the tone\n- Offer two or three alternatives from direct to gentle\n- Leave already-kind text unchanged\n\nAsk Copilot to correct any missing behavior. Keep this Copilot session open for the remaining steps.\n\n## Run the agent\n\n### Step 6: Move into the agent project\n\nCopilot reports the path of the project it created. Move the current session into that project root:\n\n```text\n/cwd <path-to-new-agent-project>\n```\n\nReplace the placeholder with the path Copilot reported.\n\n**Checkpoint:** the current directory contains the agent's `appPackage` directory and lifecycle configuration file.\n\n### Step 7: Validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nValidate the agent with wiqd. If validation reports errors, explain them and help me fix them before continuing.\n```\n\n**Checkpoint:** validation completes without errors.\n\n### Step 8: Provision to dev\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision the agent to the dev environment with wiqd.\n```\n\n**Checkpoint:** provisioning succeeds and returns a Microsoft 365 Copilot share link.\n\n### Step 9: Open in Copilot\n\nEnter this prompt in the same Copilot session:\n\n```text\nOpen the provisioned agent in Microsoft 365 Copilot with wiqd.\n```\n\n## Try it\n\n| Prompt | Expected behavior |\n|---|---|\n| `Per my last email, I already explained this.` | Flags the passive-aggressive phrase and offers kinder rewrites |\n| `Great job finishing that a week late.` | Detects sarcasm and suggests a constructive alternative |\n| `Thanks for your help today!` | Confirms the positive tone and suggests no changes |\n\n## Reset the lab\n\nFrom the parent directory of `mind-your-language`:\n\n```bash\nrm -rf mind-your-language\n```\n\nDeleting the local folder does not remove provisioned resources.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/mind-your-language-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n\n<!-- File: tools/wiqd/cookbooks/declarative-agents/photobooth-agent/README.md (Tokens: ~965 | Category: plugin-manifest) -->\n# Photobooth agent: interactive lab\n\nBuild and open a Microsoft 365 Copilot agent that turns uploaded images into photobooth-style composites. This README is organized like a notebook: run one cell at a time, confirm its checkpoint, and then continue.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Run terminal commands in a\n> terminal, enter prompts in the GitHub Copilot app or CLI, and keep the same\n> Copilot conversation open for all remaining steps.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` installed and signed in\n- Access to the GitHub Copilot app or GitHub Copilot CLI\n- Permission to provision an agent to a dev environment\n\n### Step 1: Check the environment\n\n> [!NOTE]\n> See [Getting started](../../README.md#getting-started) in the cookbook README for wiqd prerequisites and installation instructions.\n\n```bash\nnode --version\nwiqd --version\nwiqd doctor\n```\n\nIf you plan to use the CLI, also run `copilot --version`.\n\n**Checkpoint:** Node reports version 24 or later, and the commands for your\nchosen workflow complete successfully.\n\n## Build the agent\n\n### Step 2: Create the workspace\n\n```bash\nmkdir -p photobooth-agent && cd photobooth-agent\n```\n\n### Step 3: Start Copilot\n\nIn the GitHub Copilot app, open the **Default agent** selector and choose\n**wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nStart with a clean conversation:\n\n```text\n/clear\n```\n\n### Step 4: Scaffold the agent\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a new declarative agent called Photobooth that accepts user-uploaded images and creates photobooth-style image responses. Apply creative filters such as black-and-white, sepia, pop-art, and sketch. Combine multiple styled versions into a single photobooth strip and return the composite image. Let users request specific styles or regenerate the result with different effects.\n```\n\nReview and approve the proposed file changes.\n\n**Checkpoint:** the current directory contains a new agent project with manifest and instruction files.\n\n### Step 5: Review the instructions\n\nConfirm the generated instructions tell the agent to:\n\n- Accept one or more user-uploaded images\n- Apply black-and-white, sepia, pop-art, and sketch styles\n- Arrange styled images in a 2-by-2 or 1-by-4 strip\n- Return the composite image directly in chat\n- Honor requests for specific styles or regeneration\n\nAsk Copilot to correct any missing behavior. Keep this Copilot session open for the remaining steps.\n\n## Run the agent\n\n### Step 6: Move into the agent project\n\nCopilot reports the path of the project it created. Move the current session into that project root:\n\n```text\n/cwd <path-to-new-agent-project>\n```\n\nReplace the placeholder with the path Copilot reported.\n\n**Checkpoint:** the current directory contains the agent's `appPackage` directory and lifecycle configuration file.\n\n### Step 7: Validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nValidate the agent with wiqd. If validation reports errors, explain them and help me fix them before continuing.\n```\n\n**Checkpoint:** validation completes without errors.\n\n### Step 8: Provision to dev\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision the agent to the dev environment with wiqd.\n```\n\n**Checkpoint:** provisioning succeeds and returns a Microsoft 365 Copilot share link.\n\n### Step 9: Open in Copilot\n\nEnter this prompt in the same Copilot session:\n\n```text\nOpen the provisioned agent in Microsoft 365 Copilot with wiqd.\n```\n\n## Try it\n\n| Prompt | Expected behavior |\n|---|---|\n| Upload a photo and ask `Create a photobooth strip` | Returns four styled versions in one composite |\n| `Make it all pop-art style` | Regenerates every frame in pop-art style |\n| Upload two photos and ask `Combine these into a photobooth` | Uses both images with different effects |\n\n## Reset the lab\n\nFrom the parent directory of `photobooth-agent`:\n\n```bash\nrm -rf photobooth-agent\n```\n\nDeleting the local folder does not remove provisioned resources.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/photobooth-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n\n<!-- File: tools/wiqd/cookbooks/declarative-agents/public-web-research-agent/README.md (Tokens: ~467 | Category: plugin-manifest) -->\n# Build a public web research agent\n\nCreate a research agent grounded in two public, authoritative sources:\nMicrosoft Learn and Microsoft-owned GitHub repositories. This demonstrates\nsite-scoped web grounding without private tenant content.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Run from a parent directory where `microsoft-tech-radar` does not already\n  exist.\n\n## Build and validate\n\nStart one interactive Copilot session. In the GitHub Copilot app, open the\n**Default agent** selector and choose **wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nCreate a declarative agent project named microsoft-tech-radar and make the\ngenerated project root the current working directory. Call the agent Microsoft\nTech Radar. Add WebSearch grounded only in these sites:\n- https://learn.microsoft.com/\n- https://github.com/microsoft/\n\nInstruct it to prefer current official documentation, cite every factual\nrecommendation, distinguish documented facts from its recommendation, and state\nwhen it cannot find current evidence. Add conversation starters for feature\nresearch, migration research, and repository discovery. Run static validation\nand stop before provisioning.\n```\n\n**Checkpoint:** validation passes and the WebSearch capability contains only\nthe two public source scopes.\n\n## Provision and test\n\nEnter:\n\n```text\nProvision Microsoft Tech Radar to the dev environment and show me its Microsoft\n365 Copilot launch URL.\n```\n\nOpen the returned URL and try:\n\n| Prompt | Expected behavior |\n|---|---|\n| `What is the current guidance for connecting an MCP server to Microsoft 365 Copilot?` | Uses current Microsoft Learn pages and cites them |\n| `Find a Microsoft-owned GitHub repository related to declarative agents.` | Uses the scoped GitHub source and links the repository |\n| `Recommend an approach and separate the facts from your recommendation.` | Labels sourced facts and its recommendation distinctly |\n\n**Checkpoint:** answers contain links from the configured public sources rather\nthan unsupported claims.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/public-web-research-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n\n<!-- File: tools/wiqd/cookbooks/declarative-agents/sharepoint-knowledge-agent/README.md (Tokens: ~594 | Category: plugin-manifest) -->\n# Ground an existing agent in your SharePoint content\n\nUpgrade an existing declarative agent so it answers only from a SharePoint site\nor folder you are authorized to use. This lab focuses on source scoping,\ncitations, and grounded-only behavior instead of repeating project scaffolding.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Start in an existing, statically validated declarative-agent project. The\n  [Zero to agent](../zero-to-agent/README.md) project is sufficient.\n- Choose one SharePoint site, library, or folder that your signed-in account can\n  read.\n- Pick one fact that exists in the selected content and one question that the\n  content cannot answer.\n\n## Add organizational grounding\n\nStart one interactive Copilot session from the existing agent project root. In\nthe GitHub Copilot app, open the **Default agent** selector and choose **wiqd**.\nIf you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nI want to ground this existing agent in one SharePoint source. Inspect the\ncurrent manifest and instructions, then ask me for the exact SharePoint site,\nlibrary, or folder URL that I am authorized to use. Do not change the project\nuntil I provide it.\n```\n\nWhen Copilot asks for the source, enter:\n\n```text\nUse this SharePoint URL and no other tenant content:\n<paste your authorized SharePoint URL>\n\nScope the OneDriveAndSharePoint capability to exactly that URL. Preserve the\nagent's existing purpose, upgrade the declarative-agent schema only if required,\nset discourage_model_knowledge to true, and update the instructions and\nconversation starters so answers cite the document used. If the source is\nunavailable or does not contain the answer, say so instead of guessing. Run\nstatic validation and stop before provisioning.\n```\n\n**Checkpoint:** validation passes, the existing agent retains its original\npurpose, and its new grounding scope contains only the URL you supplied.\n\n## Deploy the update\n\nEnter:\n\n```text\nProvision the updated agent to its existing development environment and show me\nthe Microsoft 365 Copilot launch URL.\n```\n\nOpen the returned URL and test:\n\n| Prompt | Expected behavior |\n|---|---|\n| Ask about the fact selected before starting | Answers from the configured content and cites the source |\n| Ask for the title or summary of a document in the scoped folder | Retrieves only from the supplied location |\n| Ask the deliberately unanswerable question | States that the configured source does not contain the answer |\n\n**Checkpoint:** the added organizational grounding is observable without\nturning the recipe into another first-agent walkthrough.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/sharepoint-knowledge-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n\n<!-- File: tools/wiqd/cookbooks/declarative-agents/translator-agent/README.md (Tokens: ~1004 | Category: plugin-manifest) -->\n# Translator agent: interactive lab\n\nBuild and open a Microsoft 365 Copilot agent that translates text into any requested language. This README is organized like a notebook: run one cell at a time, confirm its checkpoint, and then continue.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Run terminal commands in a\n> terminal, enter prompts in the GitHub Copilot app or CLI, and keep the same\n> Copilot conversation open for all remaining steps.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` installed and signed in\n- Access to the GitHub Copilot app or GitHub Copilot CLI\n- Permission to provision an agent to a dev environment\n\n### Step 1: Check the environment\n\n> [!NOTE]\n> See [Getting started](../../README.md#getting-started) in the cookbook README for wiqd prerequisites and installation instructions.\n\n```bash\nnode --version\nwiqd --version\nwiqd doctor\n```\n\nIf you plan to use the CLI, also run `copilot --version`.\n\n**Checkpoint:** Node reports version 24 or later, and the commands for your\nchosen workflow complete successfully.\n\n## Build the agent\n\n### Step 2: Create the workspace\n\n```bash\nmkdir -p translator-agent && cd translator-agent\n```\n\n**Checkpoint:** your terminal is now in the `translator-agent` directory.\n\n### Step 3: Start Copilot\n\nIn the GitHub Copilot app, open the **Default agent** selector and choose\n**wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nThe remaining prompts in this section belong inside that Copilot session. Start with a clean conversation:\n\n```text\n/clear\n```\n\n### Step 4: Scaffold the agent\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a new declarative agent called Translator that translates text into any language the user requests. Ask for the target language when it is not specified, preserve the source formatting and tone, and return only the translated text without explanation. Support follow-up requests such as \"now in French\" by translating the previous source text again.\n```\n\nReview and approve the file changes Copilot proposes.\n\n**Checkpoint:** the current directory contains a new agent project with manifest and instruction files.\n\n### Step 5: Review the instructions\n\nConfirm the generated instructions tell the agent to:\n\n- Detect the target language from the user's request\n- Ask for a target language when none is specified\n- Translate faithfully while preserving tone and formatting\n- Return only the translated text, with no preamble or explanation\n- Re-translate the previous source text for follow-up requests\n\nAsk Copilot to correct any missing behavior before continuing. Keep this Copilot session open for the remaining steps.\n\n## Run the agent\n\n### Step 6: Move into the agent project\n\nCopilot reports the path of the project it created. Move the current session into that project root:\n\n```text\n/cwd <path-to-new-agent-project>\n```\n\nReplace the placeholder with the path Copilot reported.\n\n**Checkpoint:** the current directory contains the agent's `appPackage` directory and lifecycle configuration file.\n\n### Step 7: Validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nValidate the agent with wiqd. If validation reports errors, explain them and help me fix them before continuing.\n```\n\n**Checkpoint:** validation completes without errors.\n\n### Step 8: Provision to dev\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision the agent to the dev environment with wiqd.\n```\n\n**Checkpoint:** provisioning succeeds and returns a Microsoft 365 Copilot share link.\n\n### Step 9: Open in Copilot\n\nEnter this prompt in the same Copilot session:\n\n```text\nOpen the provisioned agent in Microsoft 365 Copilot with wiqd.\n```\n\n**Checkpoint:** the Translator agent opens in Microsoft 365 Copilot.\n\n## Try it\n\n| Prompt | Expected behavior |\n|---|---|\n| `Translate \"Good morning, how are you?\" to Japanese` | Returns only the Japanese translation |\n| `Now in Spanish` | Translates the original text into Spanish |\n| `Translate \"Hello world\"` | Asks which target language you want |\n\n## Reset the lab\n\nTo remove only the local trial project, close Copilot and run this from the parent directory of `translator-agent`:\n\n```bash\nrm -rf translator-agent\n```\n\nProvisioned resources are not removed by deleting the local folder. Use the appropriate `wiqd` cleanup command for your environment if you also want to remove the provisioned agent.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/translator-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n\n<!-- File: tools/wiqd/cookbooks/declarative-agents/zero-to-agent/README.md (Tokens: ~1012 | Category: plugin-manifest) -->\n# Zero to agent: interactive lab\n\nBuild and open a Microsoft 365 Copilot agent from an empty folder. This README is organized like a notebook: run one cell at a time, confirm its checkpoint, and then continue.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Run terminal commands in a\n> terminal, enter prompts in the GitHub Copilot app or CLI, and keep the same\n> Copilot conversation open for all remaining steps.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` installed and signed in\n- Access to the GitHub Copilot app or GitHub Copilot CLI\n- Permission to provision an agent to a dev environment\n\n### Step 1: Check the environment\n\n> [!NOTE]\n> See [Getting started](../../README.md#getting-started) in the cookbook README for wiqd prerequisites and installation instructions.\n\nRun in a terminal:\n\n```bash\nnode --version\nwiqd --version\nwiqd doctor\n```\n\nIf you plan to use the CLI, also run `copilot --version`.\n\n**Checkpoint:** Node reports version 24 or later, and the commands for your\nchosen workflow complete successfully.\n\n## Build the agent\n\n### Step 2: Create the workspace\n\n```bash\nmkdir -p hello-wiqd && cd hello-wiqd\n```\n\n**Checkpoint:** your terminal is now in the `hello-wiqd` directory.\n\n```bash\npwd\n```\n\n### Step 3: Start Copilot\n\nIn the GitHub Copilot app, open the **Default agent** selector and choose\n**wiqd**. If you prefer the CLI, start an interactive Copilot session from the\nproject directory:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nThe remaining prompts in this section belong inside that Copilot session. Start with a clean conversation:\n\n```text\n/clear\n```\n\n**Checkpoint:** Copilot clears its conversation context and waits for the next prompt.\n\n### Step 4: Scaffold the agent\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a new declarative agent called Hello WIQD. The agent should greet every user with a warm hello and introduce itself as having been created by WIQD. Give it the personality of a curious, innocent, and wonder-filled character, like a child seeing the world for the first time. It should be enthusiastic, gentle, and genuinely delighted to meet the user. Keep responses short, sweet, and warm.\n```\n\nReview and approve the file changes Copilot proposes.\n\n**Checkpoint:** the current directory contains a new agent project with manifest and instruction files.\n\nKeep this Copilot session open for the remaining steps.\n\n## Run the agent\n\n### Step 5: Move into the agent project\n\nCopilot reports the path of the project it created. Move the current session into that project root:\n\n```text\n/cwd <path-to-new-agent-project>\n```\n\nReplace the placeholder with the path Copilot reported.\n\n**Checkpoint:** the current directory contains the agent's `appPackage` directory and lifecycle configuration file.\n\n### Step 6: Validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nValidate the agent with wiqd. If validation reports errors, explain them and help me fix them before continuing.\n```\n\n**Checkpoint:** validation completes without errors. Fix any reported errors before continuing.\n\n### Step 7: Provision to dev\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision the agent to the dev environment with wiqd.\n```\n\n**Checkpoint:** provisioning succeeds and returns a Microsoft 365 Copilot share link.\n\n### Step 8: Open in Copilot\n\nEnter this prompt in the same Copilot session:\n\n```text\nOpen the provisioned agent in Microsoft 365 Copilot with wiqd.\n```\n\n**Checkpoint:** the Hello WIQD agent opens in Microsoft 365 Copilot.\n\n## Try it\n\nRun these prompts one at a time in the opened agent:\n\n| Prompt | Expected behavior |\n|---|---|\n| `Hi` | Greets you warmly, mentions WIQD, and expresses delight at meeting you |\n| `What are you?` | Describes itself with curiosity and child-like wonder |\n| `Tell me something fun` | Shares something with brief, genuine enthusiasm |\n\n## Reset the lab\n\nTo remove only the local trial project, close Copilot and run this from the parent directory of `hello-wiqd`:\n\n```bash\nrm -rf hello-wiqd\n```\n\nProvisioned resources are not removed by deleting the local folder. Use the appropriate `wiqd` cleanup command for your environment if you also want to remove the provisioned agent.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/declarative-agents/zero-to-agent\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n\n<!-- File: tools/wiqd/cookbooks/lifecycle/devui-debugging/README.md (Tokens: ~590 | Category: plugin-manifest) -->\n# Debug an agent in DevUI\n\nLaunch WIQD's local DevUI, send a real prompt, and inspect the full turn:\nmatched and selected plugins, tool execution, grounding, citations, request\nidentifiers, latency, raw JSON, and failures.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Start in a provisioned declarative-agent project.\n- For the richest tool trace, use\n  [Zava Insurance agent](../../declarative-agents/insurance-agent-mcp/README.md).\n- DevUI binds only to `127.0.0.1` and uses your existing Work IQ\n  authentication.\n\n## Enable and launch DevUI\n\nStart one interactive Copilot session from the agent project root. In the\nGitHub Copilot app, open the **Default agent** selector and choose **wiqd**. If\nyou prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nEnable the WIQD devui preview flag with the supported config command. Read this\nproject's provisioned title ID, then start DevUI for that agent. Use direct\ntransport and open the browser. Do not modify or re-provision the agent.\n```\n\n**Checkpoint:** DevUI opens locally with the intended agent preselected.\n\n## Watch a successful turn\n\nFor Zava Claims Guide, enter:\n\n```text\nUse WIQD DevUI ask to send \"Summarize claim CN202504990\" to this agent and open\nthe live turn. Then tell me which plugin and tool DevUI selected, whether the\ntool execution succeeded, and which request, conversation, and task IDs identify\nthe run.\n```\n\nFor another agent, replace the quoted prompt with one of its conversation\nstarters.\n\n**Checkpoint:** DevUI shows the matched and selected plugin, the executed tool\nwhen applicable, latency, raw event data, and the rendered answer.\n\n## Inspect grounding and failure behavior\n\nEnter:\n\n```text\nIn the same DevUI, run one prompt that should retrieve grounded content and one\nsafe prompt that should fail, such as an unknown demo claim number. Compare the\nretrieval and citation sections, tool arguments, execution result, and surfaced\nerror. Do not retry with invented identifiers and do not call a write tool.\n```\n\n**Checkpoint:** the grounded turn shows its evidence, while the failing turn\nshows a real error or empty result instead of a success-shaped answer.\n\n## Restore the preview flag\n\nWhen finished, enter:\n\n```text\nStop the running WIQD DevUI and reset the devui feature flag to its default.\n```\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/lifecycle/devui-debugging\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n\n<!-- File: tools/wiqd/cookbooks/lifecycle/eval-hill-climb/README.md (Tokens: ~659 | Category: plugin-manifest) -->\n# Hill-climb agent quality with evals\n\nCreate a focused evaluation suite, run it, diagnose the weakest behavior, fix\nthe agent rather than the test, and compare the next run. This recipe uses\nWIQD's GitHub Copilot judge path, so Azure OpenAI credentials are not required\nunless you deliberately select the Azure judge.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Start in a declarative-agent project with non-empty instructions.\n- Provision the agent before running live evals.\n- Authenticate GitHub CLI if the GitHub Copilot judge cannot use an existing\n  session: `gh auth login`.\n\n## Initialize a focused suite\n\nStart one interactive Copilot session from the agent project root. In the\nGitHub Copilot app, open the **Default agent** selector and choose **wiqd**. If\nyou prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nInitialize WIQD evals for this provisioned agent. Inspect the manifest,\ninstructions, grounding sources, and actions. Propose a focused suite that\ncovers every applicable Perceive, Reason, and Act behavior plus boundaries and\nfailure handling. Show every proposed add or update as a diff and wait for my\napproval before writing an eval file. Do not lower thresholds, remove\nGroundedness or Citations, or delete a failing scenario to improve the score.\n```\n\nReview the proposed cases and approve only when they describe behavior the agent\nshould actually satisfy.\n\n**Checkpoint:** `evals/prompts.json` contains approved, scenario-specific tests\nrather than only generic starter prompts.\n\n## Run and diagnose\n\nEnter:\n\n```text\nRun the eval suite with WIQD using the GitHub Copilot judge and write a\ntimestamped HTML scorecard under .evals. Analyze failures by root cause:\ninstruction, grounding, citation, tool selection, capability gap, or a genuinely\nincorrect eval. Report the weakest evaluator and the exact prompts that expose\nthe problem.\n```\n\n**Checkpoint:** the result includes a pass rate, per-evaluator scores, and a\nroot-cause diagnosis tied to specific prompts.\n\n## Improve the agent, not the bar\n\nEnter:\n\n```text\nFix the highest-impact agent issue from the latest eval run. Preserve the eval\nsuite, evaluator coverage, and thresholds. Make the smallest instruction or\ncapability change that addresses the root cause, validate the project,\nre-provision it, rerun the same eval suite, and compare the two scorecards.\nStop if the proposed fix would require weakening a test.\n```\n\n**Checkpoint:** the second report uses the same suite and shows whether the\ntargeted score improved. A regression remains visible instead of being hidden\nby easier tests.\n\n## Continue the hill climb\n\nRepeat one root-cause fix at a time. Add a new regression case when a real gap is\ndiscovered, but always review and approve the eval diff before it is written.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/lifecycle/eval-hill-climb\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n\n<!-- File: tools/wiqd/cookbooks/lifecycle/team-delivery/README.md (Tokens: ~608 | Category: plugin-manifest) -->\n# Deliver an agent to a team\n\nTake a validated agent from local development to a targeted team preview:\nconfigure shared scope, provision the shared environment, package resolved\nartifacts, deep-validate the package, and share it with named users or a\nmail-enabled security group.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Start in a validated declarative-agent project.\n- Obtain the exact email addresses of preview users or the mail address of a\n  security group. WIQD does not resolve display names.\n- Confirm that your tenant permits app upload and sharing.\n\n## Configure the shared environment\n\nStart one interactive Copilot session from the project root. In the GitHub\nCopilot app, open the **Default agent** selector and choose **wiqd**. If you\nprefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nPrepare this agent for a team preview in the dev environment. Inspect the\nexisting environment configuration first. Create the dev environment through\nWIQD if it does not exist, configure AGENT_SCOPE=shared without adding secrets,\nand ensure shared-version handling is correct. Show me the resulting non-secret\nenvironment settings and stop before provisioning.\n```\n\n**Checkpoint:** the dev environment is explicitly shared and contains no\nhardcoded tenant ID, title ID, OAuth reference ID, secret, or recipient address.\n\n## Provision, package, and validate\n\nEnter:\n\n```text\nRun the team delivery gates in this exact order for dev:\n1. Static validation\n2. Provision the shared agent\n3. Package the provisioned agent so environment values are resolved\n4. Deep validation of the generated package\n\nStop on any validation error. Report skipped deep-validation providers\nseparately from passing providers, and show the Copilot launch URL on success.\n```\n\n**Checkpoint:** provisioning precedes packaging, the package has resolved\nenvironment values, and no validation error is hidden.\n\n## Share with a bounded audience\n\nEnter:\n\n```text\nShare the dev agent with these authorized recipients:\n<comma-separated user addresses or one mail-enabled security-group address>\n\nUse users scope, not tenant scope. Report the exact share result and do not\nbroaden access beyond the addresses I supplied.\n```\n\n**Checkpoint:** the share command reports success for the supplied users or\ngroup. Each recipient can open the launch URL after tenant propagation\ncompletes.\n\n## Update safely\n\nFor a later content or manifest change, keep the same Copilot session and enter:\n\n```text\nValidate this shared agent, apply the required shared-agent patch version bump,\nre-provision dev, rebuild the package, and deep-validate it. Preserve the\nexisting audience unless I explicitly ask to change sharing.\n```\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/lifecycle/team-delivery\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n\n<!-- File: tools/wiqd/cookbooks/plugins/learn-tech-advisor/README.md (Tokens: ~646 | Category: plugin-manifest) -->\n# Upgrade the Learn connector into a technology advisor\n\nTurn the existing Microsoft Learn connector plugin into a composite,\nindependently shippable plugin by adding reusable decision logic and a\ndeclarative-agent experience. This lab starts after connector setup so it does\nnot repeat endpoint discovery or tool-description authoring.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Complete [Microsoft Learn MCP connector](../microsoft-learn-mcp/README.md), or\n  start from a validated copy of that plugin.\n- Confirm that `appPackage/manifest.json` already contains the Microsoft Learn\n  connector and its MCP tool-description file.\n\n## Add the reusable skill and agent\n\nStart one interactive Copilot session from the connector plugin root. In the\nGitHub Copilot app, open the **Default agent** selector and choose **wiqd**. If\nyou prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nUpgrade this existing Microsoft Learn connector plugin into a technology\nadvisor. Do not recreate or alter the connector endpoint. Use the supported\nWIQD plugin add commands to add a skill named Technology Finder and a\ndeclarative agent component.\n\nReplace the generated skill template with a reusable decision workflow:\n- Ask for the user's goal, preferred language or platform, and hard constraints.\n- Search official documentation before comparing options.\n- Search official code samples when implementation detail is requested.\n- Fetch the most relevant pages before giving a final recommendation.\n- Compare two or three viable options in a concise table.\n- Separate sourced facts from the recommendation and link every source.\n- Say when official documentation does not support a claim.\n\nConfigure the declarative agent to invoke the skill for technology-selection\nquestions. Add conversation starters, show the plugin summary, run static\nvalidation, and stop before provisioning.\n```\n\n**Checkpoint:** the existing connector remains unchanged, the plugin summary\nnow lists `agentConnectors`, `agentSkills`, and `declarativeAgent`, the skill is\nno longer a template, and validation passes.\n\n## Deploy the composite update\n\nEnter:\n\n```text\nProvision or re-provision this composite plugin locally. Then package it and\ndeep-validate the generated package. Show me any skipped provider instead of\ntreating a skip as a pass.\n```\n\nEnable the updated plugin in Copilot Cowork and try:\n\n| Prompt | Expected behavior |\n|---|---|\n| `Should I use Azure Functions or Container Apps for a small event-driven API?` | Asks for missing constraints, retrieves current docs, compares options, and recommends one |\n| `Show the current TypeScript approach for DefaultAzureCredential.` | Uses code-sample search and links the official source |\n| `What evidence supports that recommendation?` | Fetches the strongest pages and separates evidence from judgment |\n\n**Checkpoint:** the reusable skill turns connector results into a repeatable\ndecision workflow rather than another raw documentation search.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/plugins/learn-tech-advisor\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n\n<!-- File: tools/wiqd/cookbooks/plugins/microsoft-learn-mcp/README.md (Tokens: ~1004 | Category: plugin-manifest) -->\n# Microsoft Learn MCP connector: first Copilot Cowork plugin\n\nBuild, install, and test a plugin that searches and reads current Microsoft Learn documentation through the public Microsoft Learn MCP server as an agent connector.\n\nThe server at `https://learn.microsoft.com/api/mcp` is free, uses streamable HTTP, and does not require authentication. It currently exposes tools to search documentation, search code samples, and fetch complete documentation pages.\n\n> [!NOTE]\n> Markdown cannot execute commands directly. Start Copilot once, enter each prompt in the same session, and confirm its checkpoint before continuing.\n\n## Before you start\n\nYou need:\n\n- Node.js 24 or later\n- `wiqd` v0.13.1 or later installed and signed in\n- Access to Copilot Cowork\n- Permission to provision and share an app in your Microsoft 365 development tenant\n\nSee [Getting started](../../README.md#getting-started) for installation and sign-in instructions.\n\n### Step 1: Check the environment\n\nStart the WIQD Copilot agent. In the GitHub Copilot app, open the\n**Default agent** selector and choose **wiqd**. If you prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter this prompt:\n\n```text\nCheck that my environment is ready to build and provision a plugin with WIQD. Confirm that Node.js is version 24 or later, WIQD is version 0.13.1 or later, I am signed in, and WIQD doctor reports no blocking errors. Help me fix any failed check before continuing.\n```\n\n**Checkpoint:** Copilot confirms that the environment is ready.\n\n## Build the plugin\n\n### Step 2: Create the plugin\n\nEnter this prompt in the same Copilot session:\n\n```text\nCreate a standalone plugin called Microsoft Learn Helper.\n```\n\n**Checkpoint:** the current working directory is the generated plugin root and contains `wiqd.plugin.json`, `m365agents.yml`, and `appPackage/manifest.json`.\n\n### Step 3: Add the no-auth connector\n\nEnter this prompt in the same Copilot session:\n\n```text\nAdd a connector named Microsoft Learn to this plugin using the public MCP endpoint https://learn.microsoft.com/api/mcp. Configure it with no authentication. Inspect the server's current tools and include an MCP tool-description file in the app package so the connector can be verified by Copilot Cowork. Its purpose is to search and read current official Microsoft documentation and code samples.\n```\n\nReview and approve the proposed file changes.\n\n**Checkpoint:** `appPackage/manifest.json` contains a Microsoft Learn entry in `agentConnectors`, references a tool-description file in the app package, and has no authorization block.\n\n### Step 4: Inspect and validate locally\n\nEnter this prompt in the same Copilot session:\n\n```text\nShow me a summary of this plugin, then validate it locally with WIQD. If validation reports errors, explain and fix them before continuing.\n```\n\n**Checkpoint:** the plugin summary lists the Microsoft Learn connector and static validation completes successfully.\n\n## Install the plugin in Copilot Cowork\n\n### Step 5: Provision the plugin\n\nEnter this prompt in the same Copilot session:\n\n```text\nProvision this Copilot Cowork plugin.\n```\n\n**Checkpoint:** WIQD reports that **Microsoft Learn Helper** was provisioned successfully.\n\n## Test it in Copilot Cowork\n\n1. Open Copilot Cowork.\n2. Open the plugin UI and find the provisioned **Microsoft Learn Helper** plugin.\n3. Install the plugin.\n4. Start a new Copilot Cowork session with **Microsoft Learn Helper** enabled.\n5. Run each prompt below and confirm that Cowork invokes the expected connector tool and returns content from Microsoft Learn.\n\n| Prompt | Expected behavior |\n|---|---|\n| `Find the current Microsoft guidance for building a remote MCP server in TypeScript.` | Calls `microsoft_docs_search` and summarizes relevant official documentation with links. |\n| `Show me a C# code sample for authenticating with DefaultAzureCredential.` | Calls `microsoft_code_sample_search` with C# as the language. |\n| `Read this Learn page and summarize its prerequisites: <Microsoft Learn URL>` | Calls `microsoft_docs_fetch` for the supplied URL. |\n\n## References\n\n- [Build a plugin with WIQD](https://microsoft.github.io/wiqd/getting-started/build-a-plugin/)\n- [WIQD plugin authoring reference](https://microsoft.github.io/wiqd/getting-started/plugin-reference/)\n- [Microsoft Learn MCP Server overview](https://learn.microsoft.com/training/support/mcp)\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/plugins/microsoft-learn-mcp\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n\n<!-- File: tools/wiqd/cookbooks/plugins/plugin-portability/README.md (Tokens: ~532 | Category: plugin-manifest) -->\n# Round-trip a plugin across formats\n\nExport a validated WIQD plugin to the Agent Plugin, Claude, and Cursor formats,\nthen import the Agent Plugin export into a fresh WIQD project and validate that\nthe connector, skill, and declarative agent survived.\n\n## Before you start\n\n- Complete [Getting started](../../README.md#getting-started).\n- Start from a validated composite plugin such as\n  [Learn Technology Advisor](../learn-tech-advisor/README.md).\n- Keep the entire export directory together. The declarative-agent payload is\n  carried beside the exported manifest and is required for a lossless import.\n\n## Export the plugin\n\nFrom the validated plugin root, start one interactive Copilot session. In the\nGitHub Copilot app, open the **Default agent** selector and choose **wiqd**. If\nyou prefer the CLI, run:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\nEnter:\n\n```text\nValidate this WIQD plugin. If validation is clean, export it with the supported\nWIQD plugin export command to all three formats: open-plugin, claude-plugin, and\ncursor-plugin. Put each format in its default export directory. Do not provision\nor change the source plugin.\n```\n\n**Checkpoint:** the plugin contains `export/open-plugin`,\n`export/claude-plugin`, and `export/cursor-plugin`, and each export has its\nformat-specific manifest plus the carried skill and agent content.\n\n## Prove the round trip\n\nEnter:\n\n```text\nImport export/open-plugin into a new sibling project named\n<current-plugin-name>-roundtrip using the supported WIQD plugin import command.\nBecause this export came from WIQD, reuse its round-trip privacy, terms, and\nagent metadata rather than inventing replacements. Show the imported plugin and\nrun static validation. Compare its capability list with the source plugin.\n```\n\n**Checkpoint:** import reports that the agent was restored, validation passes,\nand both projects list the same `agentConnectors`, `agentSkills`, and\n`declarativeAgent` capabilities.\n\n## Test the boundary\n\nCopy an entire export directory to a temporary location and import it again.\nDo not copy only the manifest: that intentionally omits the carried agent and is\nnot a valid lossless round trip.\n\n**Checkpoint:** a complete exported directory imports successfully without\nasking for new privacy or terms URLs.\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd/plugins/plugin-portability\" />\n\n---\n\nReturn to the [cookbook index](../../README.md).\n\n<!-- File: tools/wiqd/cookbooks/README.md (Tokens: ~1789 | Category: plugin-manifest) -->\n# wiqd plugin cookbooks\n\nwiqd cookbooks are short, end-to-end recipes for building and improving plugins\nfor Microsoft 365 Copilot. A plugin can bring together skills, connectors\n(including MCP connectors), and agents. A declarative agent is one type of\nagent component. Some recipes focus on one component, while others show how to\ncombine them into a more capable plugin.\n\nEach recipe is built around one clear outcome:\n**build it → make it do something → make it safe → make it good → make it grounded.**\n\n## Getting started\n\nBefore running any cookbook, make sure you have these installed and configured:\n\n### 1. Install Node.js 24+\n\nwiqd requires Node.js 24 or later. Install via your preferred method:\n\n```bash\n# macOS / Linux (via nvm)\nnvm install 24 && nvm use 24\n\n# Windows (via fnm)\nfnm install 24 && fnm use 24\n```\n\n### 2. Install wiqd CLI\n\n```bash\n# macOS / Linux\ncurl -fsSL https://aka.ms/wiqd/install.sh | bash\n\n# Windows (PowerShell)\niex \"& { $(irm 'https://aka.ms/wiqd/install.ps1') }\"\n```\n\nVerify the installation:\n\n```bash\nwiqd --version\n```\n\n### 3. Choose how to use the WIQD Copilot agent\n\nYou can run these recipes in the GitHub Copilot app or the standalone\n[GitHub Copilot CLI](https://docs.github.com/en/copilot/how-tos/copilot-cli/set-up-copilot-cli/install-copilot-cli).\n\nIn the GitHub Copilot app, open the agent selector labeled **Default agent** and\nchoose **wiqd**. No CLI installation is required.\n\nIf you prefer the CLI, install it:\n\n```bash\n# Install on any platform with Node.js 22 or later\nnpm install -g @github/copilot\n\n# Verify that the standalone CLI supports custom agents\ncopilot --help\n```\n\nConfirm that the help output includes the `--agent` option before continuing. If it does not, check which executable your shell resolves for `copilot`, then reinstall the standalone CLI.\n\nStart the WIQD agent with:\n\n```bash\ncopilot --agent wiqd:wiqd\n```\n\n### 4. Sign in to your Microsoft 365 account\n\nYou need a Microsoft 365 account with access to Copilot and an Azure subscription for provisioning plugin components and required resources. Start an interactive sign-in:\n\n```bash\nwiqd auth login --interactive\n```\n\nOn macOS and Linux, this normally opens your system browser. Sign in with the work or school account for the tenant where you want to provision the agent, then complete any consent or multi-factor authentication prompts. `wiqd` delegates authentication to its installed providers, so you may see more than one provider reported in the terminal.\n\nConfirm that the intended account is signed in:\n\n```bash\nwiqd auth status\n```\n\nIf the status shows an account from the wrong tenant, sign out and repeat the interactive login, choosing the correct account in the browser:\n\n```bash\nwiqd auth logout\nwiqd auth login --interactive\n```\n\nSee the [wiqd authentication guide](https://microsoft.github.io/wiqd/getting-started/authentication/) for provider details and troubleshooting.\n\n### 5. Confirm everything is ready\n\n```bash\nwiqd doctor\n```\n\nThis checks your environment for common issues (Node version, auth status, CLI version).\n\n---\n\n## Start with a guided plugin recipe\n\nNew to wiqd? Begin with one of these self-contained recipes. Each takes you\nfrom setup to a working plugin and shows you how to test its core behavior.\nYou can use the resulting plugin project as a starting point for the extension and\nlifecycle recipes in the next section.\n\n| Recipe | Primary component | What you'll build |\n|--------|-------------------|-------------------|\n| [Zero to agent, live in Copilot](./declarative-agents/zero-to-agent/README.md) | Declarative agent | Scaffold, provision, and open your first agent |\n| [Translator agent](./declarative-agents/translator-agent/README.md) | Declarative agent | Translate text into any language |\n| [Photobooth agent](./declarative-agents/photobooth-agent/README.md) | Declarative agent | Apply effects and create photobooth-style image composites |\n| [Mind Your Language agent](./declarative-agents/mind-your-language-agent/README.md) | Declarative agent | Coach tone and rewrite passive-aggressive text |\n| [Zava Insurance agent (MCP)](./declarative-agents/insurance-agent-mcp/README.md) | Declarative agent | Connect an agent to an MCP server for live insurance data |\n| [Demo Planning agent](./declarative-agents/demo-planning-agent/README.md) | Declarative agent | Plan demos, workshops, hackathons, and presentations |\n| [Microsoft Learn MCP connector](./plugins/microsoft-learn-mcp/README.md) | Connector (MCP) | Create and test a plugin with a public, no-auth MCP connector |\n\n## Extend and improve your plugin\n\nUse these recipes to add components and capabilities or work on a later stage\nof the plugin lifecycle. Some build on a specific guided recipe, while others\nwork with any existing plugin or declarative-agent component. Check\n**Start with** before you begin.\n\n| Recipe | Focus | Start with | What you'll learn |\n|--------|-------|------------|-------------------|\n| [Ground an existing agent in your SharePoint content](./declarative-agents/sharepoint-knowledge-agent/README.md) | Grounding | An existing declarative agent, such as [Zero to agent](./declarative-agents/zero-to-agent/README.md) | Scope organizational knowledge, require grounded answers, and verify citations |\n| [Build a public web research agent](./declarative-agents/public-web-research-agent/README.md) | Research | An existing declarative agent | Scope research to approved public sites and produce source-backed answers |\n| [Upgrade the Learn connector into a technology advisor](./plugins/learn-tech-advisor/README.md) | Composition | [Microsoft Learn MCP connector](./plugins/microsoft-learn-mcp/README.md) | Combine a reusable plugin skill with a declarative agent |\n| [Hill-climb agent quality with evals](./lifecycle/eval-hill-climb/README.md) | Evaluation | An existing working agent | Measure quality, diagnose failures, improve behavior, and compare results |\n| [Debug an agent in DevUI](./lifecycle/devui-debugging/README.md) | Debugging | An existing agent with a test scenario | Inspect tool selection, execution, grounding, citations, and failures |\n| [Deliver an agent to a team](./lifecycle/team-delivery/README.md) | Delivery | A validated agent | Validate a package, configure shared scope, and target distribution |\n| [Round-trip a plugin across formats](./plugins/plugin-portability/README.md) | Portability | An existing plugin | Export and re-import Agent Plugin, Claude, and Cursor formats |\n\n> All recipes support the GitHub Copilot app and GitHub Copilot CLI. In the\n> app, choose **wiqd** from the **Default agent** selector. In the CLI, start\n> the agent with `copilot --agent wiqd:wiqd`. Recipes also use `wiqd` CLI\n> commands.\n\n## Authors and contributors\n\n<!-- contributors:start -->\n<!-- Generated by update-contributors.mjs. Do not edit by hand. -->\n<table>\n  <tr>\n    <td align=\"center\"><a href=\"https://github.com/rabwill\"><img src=\"https://avatars.githubusercontent.com/u/20379311?v=4\" width=\"80px\" alt=\"Rabia Williams\" /><br /><sub><b>Rabia Williams</b></sub><br /><sub>@rabwill</sub></a></td>\n    <td align=\"center\"><a href=\"https://github.com/sebastienlevert\"><img src=\"https://avatars.githubusercontent.com/u/7620955?v=4\" width=\"80px\" alt=\"Sébastien Levert\" /><br /><sub><b>Sébastien Levert</b></sub><br /><sub>@sebastienlevert</sub></a></td>\n  </tr>\n</table>\n<!-- contributors:end -->\n\n<img src=\"https://m365-visitor-stats.azurewebsites.net/PluginCookbooks/wiqd\" />\n</yakaai_skills>"}