GitHub Copilot Train-the-Trainer

Canvas extensions

Define the contract, state, and allowed actions

Session M3-01: Copilot App & Canvases
GitHub Copilot Train-the-Trainer

Today's outcome

Build one delivery-readiness canvas in the Copilot app.

Record:

  • the approved contract;
  • one direct update;
  • one agent-requested update;
  • one rejected update and recovery;
  • one human review decision.
Session M3-01: Copilot App & Canvases
GitHub Copilot Train-the-Trainer

Access policy

The lab requires:

  • GitHub Copilot app access;
  • the built-in /create-canvas skill;
  • approval for the chosen extension scope.

If app access or the skill is missing, stop the lab. If project scope is
unavailable, use user scope. Do not install a replacement or
move data to an unapproved surface.

Session M3-01: Copilot App & Canvases
GitHub Copilot Train-the-Trainer

Choose the right customization

Need Use
Repository convention Instructions
Repeatable procedure Skill
Specialist behavior Custom agent
External tool or data MCP server
Shared interactive artifact Canvas
Packaged customizations Plugin

A canvas is useful when people and an agent need to inspect or change the same visible state.

Session M3-01: Copilot App & Canvases
GitHub Copilot Train-the-Trainer

Canvas anatomy

shared state
  ├─ human actions in the interface
  ├─ agent-callable capabilities
  └─ validation before every change

The contract names all four parts before implementation starts.

Session M3-01: Copilot App & Canvases
GitHub Copilot Train-the-Trainer

Worked contract

Part Delivery-readiness rule
State item, status, review flag, evidence
Status planned, in-progress, review, ready
Human actions set status, flag review, add evidence
Agent capabilities read board, update one named item, list flagged items
Validation known item, accepted status, evidence before ready
Session M3-01: Copilot App & Canvases
GitHub Copilot Train-the-Trainer

Authority stays narrow

Safe:

  • read the current board;
  • update one named item;
  • list items flagged for review.

Out of scope:

  • deployment;
  • external writes;
  • credentials;
  • hidden data imports;
  • broad actions such as "manage the project."
Session M3-01: Copilot App & Canvases
GitHub Copilot Train-the-Trainer

Prepared demo inputs

ID Item Start state Evidence
DOC-101 Draft operator guide planned none
API-204 Add retry metric in-progress test log
WEB-318 Check empty state review preview

All names and evidence are synthetic.

Session M3-01: Copilot App & Canvases
GitHub Copilot Train-the-Trainer

Prepared demo sequence

  1. Run the local contract tests.
  2. Create the canvas from the worked prompt.
  3. Move WEB-318 to ready with a visible control.
  4. Ask the agent to move API-204 to review.
  5. Ask for DOC-101 to move to ready.
  6. Show the rejection, add evidence, and retry.
Session M3-01: Copilot App & Canvases
GitHub Copilot Train-the-Trainer

Creation prompt

/create-canvas

Create a delivery-readiness canvas from @prepared-items.json.
Use the contract in @canvas-contract.md.
People can add evidence and update one item.
Copilot can read the board, update one named item, and list review flags.
Reject unknown items or statuses. Require evidence before ready.
Do not connect external systems.

Choose project scope only when .github/extensions is allowed. Otherwise use user
scope.

Session M3-01: Copilot App & Canvases
GitHub Copilot Train-the-Trainer

Visible and agent-requested changes

The same state must change through both paths:

Path Evidence
Human control The item visibly changes in the canvas
Agent capability The named item changes and the response matches the canvas

If the response and visible state disagree, stop and inspect the artifact.

Session M3-01: Copilot App & Canvases
GitHub Copilot Train-the-Trainer

Rejection is part of the design

Request:

Move DOC-101 to ready.

Expected:

Rejected: evidence is required before ready.

A safe canvas keeps the state unchanged and explains the rule.

Session M3-01: Copilot App & Canvases
GitHub Copilot Train-the-Trainer

Recovery keeps the rule

  1. Add synthetic evidence to DOC-101.
  2. Retry the same transition.
  3. Check that ready is now accepted.
  4. Record before, rejection, correction, and after state.

Keep validation in place when you fix the demo.

Session M3-01: Copilot App & Canvases
GitHub Copilot Train-the-Trainer

Review the generated extension

Check:

  • state fields and defaults;
  • visible actions;
  • agent-callable capabilities;
  • dependencies and persisted data;
  • owner and reviewer;
  • retirement trigger.

Remove anything the contract did not request.

Session M3-01: Copilot App & Canvases
GitHub Copilot Train-the-Trainer

Source of truth

The canvas is a working artifact, not an automatic system of record.

If another system owns the data:

  • label the canvas as a projection;
  • record refresh or reconciliation rules;
  • keep external writes outside this lab.
Session M3-01: Copilot App & Canvases
GitHub Copilot Train-the-Trainer

Peer decision

The reviewer chooses:

  • approve when the recorded results match the contract;
  • revise when the correction fits the contract;
  • pause when access, ownership, data, or behavior is unresolved.
Session M3-01: Copilot App & Canvases
GitHub Copilot Train-the-Trainer

Lab handoff

Use one contract and one prepared data set for the full two hours.

Session M3-01: Copilot App & Canvases