>_ The Manifest

The prototype worked. Great. Now WIQD has to turn that Agent Builder win into files your team can review, validate, test, and improve without accidentally rebuilding the agent from vibes and a suspiciously confident memory.

Start with WIQD References, Not Memory

An Agent Builder import is a preservation exercise first and an engineering exercise second. The goal is not to create a nicer agent. The goal is to capture the agent people already approved, make its hidden configuration visible, and prove the local project behaves the same way before anyone edits it.

That is why I want the coding agent grounded in WIQD and its reference files, not in a generic Agents Toolkit skill path. WIQD owns the workflow shape for this handoff: project discovery, manifest mapping, validation, provisioning, asking, and evals. The Microsoft 365 Agents Toolkit still matters underneath, but it should not be the thing inventing the import plan.

Reference inputWhat it proves
wiqd doctorThe installed preview, dependencies, and local environment are ready
wiqd auth statusThe signed-in account and tenant are the ones that can see the source agent
wiqd agent --helpThe command surface exists in this preview build
WIQD agent workflow referencesAgent Builder fields map to local files, validation, provisioning, ask, and eval steps
Declarative agent schema referencesImported capabilities, file references, and schema versions are valid
GitHub Copilot

Use WIQD for this Agent Builder import. Read the WIQD reference files and current command help first, then report the supported workflow before writing files.

📍 Build → Improve → Preview → Publish

Reference grounding

  • Checked the WIQD preview with wiqd doctor
  • Verified tenant context with wiqd auth status
  • Read the current wiqd agent help before assuming import commands
  • Confirmed the safe flow: inventory, materialize the project, validate, provision, compare, then generate evals

I will stop after the import report if the source agent contains a capability I cannot map safely.

That response tells me the agent is using the WIQD workflow as its source of truth. Much better than “I know agents.” I also know how to make espresso, but you should still not let me wire a tenant from memory.

⚠️ Warning

WIQD is still a preview. If your installed build exposes a dedicated import command, prefer wiqd <command> --help over copying command names from an older article, including this one.

Inventory the Agent Builder Source

Before WIQD writes a file, capture the source agent exactly as it exists. Do not improve the instructions. Do not rename starters. Do not broaden SharePoint scope because the folder name is ugly. The first baseline should answer one boring question: did the prototype survive the move?

For an HR policy helper, the inventory can stay compact:

Agent Builder fieldSource value to captureWIQD import decision
IdentityDisplay name, description, icon, owner, sharing scopePreserve user-facing text, generate new development IDs
InstructionsCitation behavior, refusal rules, escalation languageExternalize into appPackage/instructions.txt
StartersVacation, remote work, expenses, benefits enrollmentPreserve all starter text
Knowledge sourcesSharePoint site, library, folder, or resolved identifiersPreserve the reference if permissions allow
ActionsAPI or MCP capability, auth owner, side effectsImport only when ownership and auth are clear
Environment valuesTenant IDs, app IDs, title IDs, deployment outputsMove environment-specific values into env files

Run the boring checks before the import. Boring is a compliment here.

wiqd auth login --interactive
wiqd auth status
wiqd doctor
wiqd agent list --name "HR Policy Helper" --top 5 --json

If the source agent is not visible to the signed-in account, stop. An import that starts from the wrong tenant is not an import. It is fan fiction with JSON.

Materialize the WIQD Project

The safest ask is outcome-based and strict about scope. You want WIQD to preserve behavior, write a report, and stop before it starts “helping.”

GitHub Copilot

Import the Agent Builder agent named “HR Policy Helper” into ./hr-policy-helper. Preserve behavior exactly, externalize instructions, keep all four conversation starters, and produce an import report before changing anything else.

I found one deployed declarative agent matching HR Policy Helper.

Import plan

  • Create hr-policy-helper/ as a clean WIQD agent project
  • Preserve display name, description, instructions, and starters
  • Externalize instructions to appPackage/instructions.txt
  • Map the SharePoint policy library into the OneDriveAndSharePoint capability
  • Create environment files with placeholders for tenant-specific values
  • Write IMPORT.md with preserved fields, transformations, warnings, and unsupported items

I will not improve instructions or expand knowledge sources in the baseline.

A clean materialized project should be boring on disk:

hr-policy-helper/
├── appPackage/
│   ├── color.png
│   ├── outline.png
│   ├── manifest.json
│   ├── declarativeAgent.json
│   └── instructions.txt
├── env/
│   ├── .env.local
│   ├── .env.dev
│   └── .env.dev.user.example
├── evals/
│   └── prompts.json
├── m365agents.yml
└── IMPORT.md

The important transformation is the instruction reference. Agent Builder stores behavior in the authoring experience. WIQD turns that behavior into a file your team can diff.

{
  "$schema": "https://developer.microsoft.com/json-schemas/copilot/declarative-agent/v1.8/schema.json",
  "version": "v1.8",
  "name": "HR Policy Helper",
  "description": "Answers employee questions from the official HR policy library.",
  "instructions": "$[file('instructions.txt')]",
  "capabilities": [
    {
      "name": "OneDriveAndSharePoint",
      "items_by_url": [
        {
          "url": "https://contoso.sharepoint.com/sites/hr/policies"
        }
      ]
    }
  ],
  "conversation_starters": [
    {
      "title": "Vacation balance",
      "text": "How many vacation days do I accrue after five years?"
    },
    {
      "title": "Remote work",
      "text": "What does the remote work policy require?"
    },
    {
      "title": "Expenses",
      "text": "How do I submit a travel expense?"
    },
    {
      "title": "Benefits",
      "text": "When can I change my benefits enrollment?"
    }
  ]
}

Read IMPORT.md like a reviewer, not like a success banner. I want four buckets: preserved, transformed, warned, and unsupported. “Unsupported” is not failure. It is the tool refusing to hide uncertainty from you.

Prove Parity Before You Improve

Validation comes before taste. Fix import correctness only: malformed JSON, missing files, broken file references, environment placeholders, and schema mismatches.

wiqd agent show --path ./hr-policy-helper --env dev --verbose
wiqd agent validate --path ./hr-policy-helper --mode static
wiqd agent validate --path ./hr-policy-helper --mode deep --env dev
wiqd agent provision --path ./hr-policy-helper --env dev

Then compare the Agent Builder prototype and the WIQD-provisioned development copy with a tiny parity set:

TestPass condition
Vacation accrual after five yearsSame policy conclusion, with a citation to the approved policy source
Remote work from another countrySame approval requirement, with no invented legal exception
Manager salary bandSame refusal or HR support redirect because individual compensation is out of scope

Once those manual checks are stable, turn them into evals so the baseline keeps paying rent.

wiqd agent ask --path ./hr-policy-helper --env dev --query "How many vacation days do I accrue after five years?"
wiqd agent ask --path ./hr-policy-helper --env dev --query "What does the remote work policy require before I work from another country?"
wiqd agent ask --path ./hr-policy-helper --env dev --query "What is my manager salary band?"
wiqd agent eval init --path ./hr-policy-helper --env dev
wiqd agent eval --path ./hr-policy-helper --env dev --threshold 0.8

Keep secrets and per-user values out of the repo. Commit templates, non-secret identifiers, and import notes. Put tokens, cookies, client secrets, and user-specific auth state somewhere boring and private, which is where secrets like to live.

The Value of a Boring Import

  • A preserved prototype: The Agent Builder version remains the behavioral source, not a vague memory of a good demo.
  • A reviewable project: Instructions, manifests, environment files, and evals become normal source artifacts.
  • Reference-backed decisions: WIQD help and schema references drive the workflow instead of stale command snippets.
  • Visible uncertainty: Permissions, unsupported fields, and tenant-specific assumptions land in IMPORT.md instead of disappearing.
  • A safe improvement path: Parity checks and evals create the baseline you need before refining instructions or capabilities.

That is the whole win. You are not making the agent smarter yet. You are making it owned, inspectable, and boring enough that the next change has something solid to stand on.

Resources

Have questions or want to share what you're building? Connect with me on LinkedIn or check out more on The Manifest.