copilot-harness-sdk · tutorials
Tutorials

The Copilot Studio ladder

Each rung turns RAPP agent.py files and SKILL.md skills into one published Copilot Studio agent on the GitHub Copilot harness, then proves it with real prompts. Every rung is reproducible from this repo alone, and every published agent keeps working with no RAPP brainstem behind it.

  1. 0
    Four SKILL.md files become skills on one agent. No connectors, no flows. Exported straight out of Copilot Studio.
    proved 3/3
  2. 1
    Hacker News, ManageMemory and ContextMemory agents run for real: a custom connector, an agent flow and two Dataverse tools.
    proved 3/3
  3. 2
    Rung 1 plus two SKILL.md skills on the same agent, built and deployed by one call to a brainstem agent.
    proved 5/5
  4. 3
    Skills whose SKILL.md ships code: inline code runs in the harness sandbox, separate script files never ship.
    proved 3/3
  5. 4
    A briefing desk that delegates news and memory to rung 2's agent through a connected agent, and keeps one skill of its own.
    proved 3/3
  6. 5
    The whole coleam00/skills collection on one agent; routing holds, with one early sign of a width limit.
    proved 5/5
  7. 6
    Brainstem bridge
    One connector that calls a hosted brainstem's /chat, so the agent gets every capability without porting any.
    next

What every rung has in common

Before you start

NeedWhy
Node 20.19+ and npm install in this repothe deploy, tutorial and proof scripts are plain Node
Power Platform CLI 2.10+ with pac auth create --environment <url>solution import, publish, connector creation
Azure CLI signed in as the same user (az login --tenant <tenant>)Dataverse bearer tokens; the user must be a member of the environment's tenant
A Copilot Studio environment with the GitHub Copilot harness enabledevery agent here is a cliagent-1.0.0 harness agent, never a classic agent
For the proofs: a public-client Entra app with delegated CopilotStudio.Copilots.Invokethe authenticated /3p route is the only one that runs connectors, flows and Dataverse tools from outside the Studio
Environment URLs, environment ids, tenant ids and app ids are placeholders in every page here: <org>, <env-id>, <tenant>, <client-id>. Put yours in a shell or a .env, never in a repo.