Skip to content

Add Copilot Credits estimates to Recruit NextGen - #3204

Draft
Daniel Laskewitz (Laskewitz) wants to merge 4 commits into
microsoft:mainfrom
Laskewitz:dlaskewitz-add-credit-estimates
Draft

Add Copilot Credits estimates to Recruit NextGen#3204
Daniel Laskewitz (Laskewitz) wants to merge 4 commits into
microsoft:mainfrom
Laskewitz:dlaskewitz-add-credit-estimates

Conversation

@Laskewitz

Copy link
Copy Markdown
Member

Why

Learners starting the Recruit NextGen path had no way to know what it would cost them in Copilot Credits before they began. The GitHub Copilot harness bills usage-based, and the B2E billing exception for licensed Microsoft 365 Copilot users does not apply, so someone can get halfway through the path and run out of capacity. This adds an up-front, auditable estimate at both the mission and the course level.

Approach

A new optional credits frontmatter field on missions holds a [min, max] range. Two new components render it:

  • <mission-credits /> sits directly under <mission-meta /> on every mission and shows that mission's range in a callout box. Missions that consume credits link to their full breakdown; missions that are purely reading or Build-tab configuration say so explicitly.
  • <course-credits section="..." /> sums both ends of the range across a course and renders the same box on the course overview page. It accepts markdown slot content, which is how the "this path consumes Copilot Credits" explanation now lives inside the box rather than in a separate callout above it.

The plumbing goes through the existing virtual:missions-data Vite plugin, so the course total is derived from the mission frontmatter rather than hand-maintained.

Where the numbers come from

Missions 04, 06, 07, and 08 each end with a ## Copilot Credits Estimate section that shows the work. Two statements from the Copilot Credits Guide drive the whole model:

  • Manual configuration in the Build and Monitor tabs consumes no credits.
  • Preview and Evaluation bill at agent runtime rates.

So a mission's cost is essentially the cost of the agent tasks you run in Preview. Every such task is classified against the guide's published runtime bands (light 100-300, medium 300-500), and the low and high ends are summed. That is why the estimates are ranges. The course total lands at 2,100-4,300 credits.

Worth a careful look

  • The classification is a judgment call. The turn counts are read directly from the labs, and the bands are the published ones, but deciding whether a given Preview conversation is "light" or "medium" is my read, not a measurement. Nothing here has been validated against a real tenant. If you disagree with a row in one of the breakdown tables, the fix is a one-line edit plus the frontmatter range.
  • Mission 05 is deliberately 0. Its lab is entirely Build-tab configuration with no test conversation at all.
  • Two pre-existing links in Mission 09 pointed at a dated PDF URL; they now use the aka.ms short link along with the new references.
  • CONTRIBUTING-COURSES.md documents the field and both components so future courses can adopt this.

This branch also carries an earlier unrelated commit, Clarify harness and knowledge setup, that was already sitting on it.

npm run lint:md, npx cspell, and npm run docs:build all pass.

Add a `credits` frontmatter field (a `[min, max]` range) to every
recruit-nextgen mission, and surface it in two new components:

- `<mission-credits />` renders a mission's range in a callout box under
  the mission metadata, with a link to the full breakdown.
- `<course-credits section="..." />` sums both ends of the range across a
  course and accepts markdown slot content for course-specific context.

Missions that actually consume credits (04, 06, 07, 08) end with a
"Copilot Credits Estimate" section that classifies every agent task
against the published bands in the Copilot Credits Guide, so the numbers
are auditable rather than arbitrary.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 6dd274bf-4ec9-4b64-ae33-9ddcc5324ffa
Both branches inserted a new frontmatter key after `time:` on every
recruit-nextgen mission. Kept both: upstream's `harness` and this
branch's `credits`.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 6dd274bf-4ec9-4b64-ae33-9ddcc5324ffa

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds frontmatter-backed Copilot Credits estimates for Recruit NextGen missions and the course overview.

Changes:

  • Adds mission credit ranges and course-level aggregation.
  • Adds mission and course credit components.
  • Documents credit metadata and updates licensing links.

Reviewed changes

Copilot reviewed 19 out of 20 changed files in this pull request and generated 14 comments.

Show a summary per file
File Summary Review notes
docs/recruit-nextgen/index.md Adds course-level credits estimate.
docs/recruit-nextgen/course-completion-badges-recruit/index.md Adds zero-credit metadata and callout. Nit (2 votes): update stale last-edited-date.
docs/recruit-nextgen/09-understanding-licensing/index.md Adds estimate metadata and updated guide links. Nit (2 votes): update stale last-edited-date.
docs/recruit-nextgen/08-publish-your-agent/index.md Adds credit estimate and breakdown. Nit (2 votes): update stale last-edited-date.
docs/recruit-nextgen/07-automate-with-workflows/index.md Adds credit estimate and breakdown. Nit (2 votes): update stale last-edited-date.
docs/recruit-nextgen/06-add-skills/index.md Adds credit estimate and breakdown. Nit (2 votes): update stale last-edited-date.
docs/recruit-nextgen/05-add-tools/index.md Adds zero-credit metadata and callout. Nit (2 votes): update stale last-edited-date.
docs/recruit-nextgen/04-build-a-custom-agent/index.md Adds credit estimate and breakdown. Nit (2 votes): update stale last-edited-date.
docs/recruit-nextgen/03-creating-a-solution/index.md Adds zero-credit metadata and callout. Nit (2 votes): update stale last-edited-date.
docs/recruit-nextgen/02-copilot-studio-fundamentals/index.md Adds zero-credit metadata and callout. Nit (2 votes): update stale last-edited-date.
docs/recruit-nextgen/01-introduction-to-agents/index.md Adds zero-credit metadata and callout. Nit (2 votes): update stale last-edited-date.
docs/recruit-nextgen/00-course-setup/index.md Adds zero-credit metadata and callout. Nit (2 votes): update stale last-edited-date.
docs/.vitepress/theme/index.ts Registers the new components.
docs/.vitepress/plugins/missions/missions.d.ts Extends mission data typing.
docs/.vitepress/plugins/missions/index.ts Parses and exposes credit metadata. Moderate (4 votes): validate the raw array as exactly two numeric, non-negative entries.
docs/.vitepress/plugins/mission-meta/MissionMeta.vue Aligns metadata pills vertically.
docs/.vitepress/plugins/credits/MissionCredits.vue Renders mission estimates. Moderate (2 votes): reject malformed raw credit entries before filtering. Nit (3 votes): use a neutral explanation for zero-credit missions.
docs/.vitepress/plugins/credits/CourseCredits.vue Calculates and renders course totals.
CONTRIBUTING-COURSES.md Documents credit metadata and components.
.markdownlint.jsonc Allows the new custom components.
Suppressed comments (5)

docs/recruit-nextgen/04-build-a-custom-agent/index.md:374

  • The lab explicitly warns that natural-language authoring during agent creation consumes Copilot Credits, but this row classifies the creation work as free Build-tab configuration. That leaves the advertised 200 - 600 range and frontmatter missing a billable creation task; include an estimate for that authoring conversation using the guide's authoring rate, or remove that authoring step from the lab.
| Naming the agent, pasting instructions, adding four knowledge sources, and setting the greeting | Build-tab configuration | 0 |

docs/recruit-nextgen/04-build-a-custom-agent/index.md:376

  • The preceding steps ask for VPN and Guest Wi-Fi in one prompt and explicitly describe separate VPN and Guest Wi-Fi response sections, so this has two outputs under the table's own Medium definition ("two or more outputs"). Labeling it Light makes the published range internally inconsistent; either classify it as Medium and update the frontmatter/total, or clarify why a two-section answer is still Light.
| Preview test: VPN access and Guest Wi-Fi details | Light. Grounded in SharePoint and the uploaded document, still a single answer | 100 - 300 |

docs/recruit-nextgen/06-add-skills/index.md:647

  • The documented first test can make an initial SharePoint call with a guessed column name, then retry after correcting it in field_4 (the lab explicitly describes this recovery). Saying this is always one successful tool call makes the auditable breakdown inaccurate; mention the possible retry or adjust the estimate.
| First device guidance test, before the skill is refined | Light. One SharePoint tool call returning a device list | 100 - 300 |

docs/recruit-nextgen/07-automate-with-workflows/index.md:700

  • This cancellation path still invokes the v1.0.4 skill to look up and present available devices before the user selects B; it only skips the workflow after the cancellation. The current description says the agent simply ends the session, so the audit table understates what the learner runs.
| Test three: cancelling the request | Light. The agent ends the session without running the workflow | 100 - 300 |

docs/recruit-nextgen/08-publish-your-agent/index.md:219

  • Mission 08's test activities run in Teams and Microsoft 365 Copilot, not in Preview. This sentence therefore describes a different activity than the two rows being estimated; please refer to the published-channel tests here (or explicitly include Preview) so learners understand what the 200–600 range covers.
So this mission's cost is essentially the cost of the agent tasks you run in **Preview**. The guide bands runtime usage by how much work a task involves:

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread docs/.vitepress/plugins/credits/MissionCredits.vue Outdated
Comment thread docs/.vitepress/plugins/credits/MissionCredits.vue Outdated
Comment thread docs/.vitepress/plugins/missions/index.ts Outdated
Comment thread docs/recruit-nextgen/00-course-setup/index.md
Comment thread docs/recruit-nextgen/01-introduction-to-agents/index.md
Comment thread docs/recruit-nextgen/06-add-skills/index.md
Comment thread docs/recruit-nextgen/07-automate-with-workflows/index.md
Comment thread docs/recruit-nextgen/08-publish-your-agent/index.md
Comment thread docs/recruit-nextgen/09-understanding-licensing/index.md
Comment thread docs/recruit-nextgen/course-completion-badges-recruit/index.md
- Reject malformed `credits` frontmatter instead of coercing it. The old
  parser filtered invalid entries out before the length check, so
  `[100, null]` rendered as `0 - 100` and `[100, "oops", 300]` as
  `100 - 300`. Validation now happens on the raw entries.
- Share that parser between the missions Vite plugin and
  `MissionCredits.vue` so the two can't drift.
- Use neutral wording for zero-credit missions. The old text claimed the
  mission was reading and manual configuration only, which is wrong for
  the badge page.
- Refresh `last-edited-date` on every touched mission, as the course
  guide requires.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 6dd274bf-4ec9-4b64-ae33-9ddcc5324ffa

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 20 out of 21 changed files in this pull request and generated 1 comment.

Suppressed comments (2)

Previously missed (1) — in code that hasn't changed since the last review.

docs/recruit-nextgen/08-publish-your-agent/index.md:219

  • This explanation says the mission's cost is essentially the work run in Preview, but Mission 08 never asks the learner to use Preview: its two counted conversations run in Teams and Microsoft 365 Copilot (steps 8.2 and 8.3). That makes the derivation misleading for this mission; describe the published-channel tests here, or use wording that covers all runtime surfaces.
So this mission's cost is essentially the cost of the agent tasks you run in **Preview**. The guide bands runtime usage by how much work a task involves:

docs/.vitepress/plugins/credits/parseCredits.ts:26

  • Because null is also the representation for an omitted field, a malformed value such as [100, "oops"] is silently treated as no estimate. loadMissions and CourseCredits then exclude that mission, so a typo can understate the course total without any build-time signal. Please validate or report invalid frontmatter with its file path instead of collapsing it into null.
  if (nums.some((n) => !Number.isFinite(n) || n < 0)) return null;

Comment thread docs/.vitepress/plugins/credits/parseCredits.ts Outdated
Sorting the two entries turned a typo like `credits: [600, 200]` into a
valid-looking `200 - 600`. A reversed range is a metadata error, so it now
returns null like any other malformed value.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 6dd274bf-4ec9-4b64-ae33-9ddcc5324ffa
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants