Skip to content

Add skill submission for create-copilot-adoption-dashboard - #258

Open
chancecontra wants to merge 5 commits into
microsoft:mainfrom
chancecontra:main
Open

Add skill submission for create-copilot-adoption-dashboard#258
chancecontra wants to merge 5 commits into
microsoft:mainfrom
chancecontra:main

Conversation

@chancecontra

Copy link
Copy Markdown

No description provided.

Copilot AI lite review requested due to automatic review settings August 5, 2026 12:34
@chancecontra

Copy link
Copy Markdown
Author

@microsoft-github-policy-service agree

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 a new submissions/create-copilot-adoption-dashboard/ entry that generates a single-file HTML Microsoft 365 Copilot adoption dashboard by ingesting four Microsoft admin center (MAC) Copilot activity CSV exports, computing framework metrics, and injecting results into a bundled HTML template.

Changes:

  • Introduces a new Cowork skill (SKILL.md) plus a human-facing README.md for creating a Copilot adoption dashboard from MAC exports.
  • Adds a standard-library Python builder script to compute KPIs/segments and inject the computed JSON into an HTML template.
  • Adds the framework reference doc and the HTML dashboard template asset used for rendering.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
submissions/create-copilot-adoption-dashboard/SKILL.md Defines the agent skill instructions and execution phases for building the dashboard.
submissions/create-copilot-adoption-dashboard/scripts/build_dashboard.py Computes metrics from CSV exports and injects them into the HTML template; emits JSON run summary.
submissions/create-copilot-adoption-dashboard/references/adoption-framework.md Documents the adoption framework logic, thresholds, and the injected data contract.
submissions/create-copilot-adoption-dashboard/README.md Human-facing usage/setup guidance for running the skill and preparing exports.
submissions/create-copilot-adoption-dashboard/metadata.json Registers the submission metadata (name/description/platform/tags/author/version/dates).
submissions/create-copilot-adoption-dashboard/assets/dashboard_template.html Self-contained HTML/CSS/JS dashboard template to be populated by the build script.

Comment thread submissions/create-copilot-adoption-dashboard/SKILL.md
Comment thread submissions/create-copilot-adoption-dashboard/scripts/build_dashboard.py Outdated
Comment thread submissions/create-copilot-adoption-dashboard/metadata.json Outdated
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings August 5, 2026 12:39

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 6 out of 6 changed files in this pull request and generated 2 comments.

Suppressed comments (5)

submissions/create-copilot-adoption-dashboard/SKILL.md:30

  • SKILL.md includes human-facing sections (Overview / When to Use / Quick Start) that aren’t required for the agent to execute the run. In this repo, that content should live in the submission README.md and the skill should start directly with the runtime procedure to avoid wasting agent context and to keep the skill purely agent-facing.
## Overview

This skill builds a **Microsoft 365 Copilot adoption dashboard** by feeding four
MAC report exports through the *Copilot Adoption Analysis* framework and
injecting the computed results into a bundled single-file HTML template. The
output is one self-contained `.html` file (no libraries, no network) branded
with the customer's name and logo, carrying only real data — every template
placeholder, sample number, and template label is replaced. Every KPI tile and

submissions/create-copilot-adoption-dashboard/scripts/build_dashboard.py:420

  • Chat rows use norm() for user IDs when excluding licensed users. Since norm() removes punctuation, it can collide different UPNs and misclassify licensed users as unlicensed (or vice versa) in the conversion funnel.
    for row in rows:
        key = norm(row.get(ukey, "")) if ukey else ""
        if licensed_users and key and key in licensed_users:

submissions/create-copilot-adoption-dashboard/scripts/build_dashboard.py:296

  • User identifiers are added to licensed_users using norm(), which strips non-alphanumerics. That can cause collisions (e.g., a.b@contoso.com vs ab@contoso.com) and incorrectly exclude/include users when comparing against Chat rows.

This issue also appears on line 418 of the same file.

    for row in rows:
        if ukey:
            users.add(norm(row.get(ukey, "")))

submissions/create-copilot-adoption-dashboard/SKILL.md:88

  • The skill instructions tell the agent to request an SVG logo, but SVG is risky to embed in HTML output (active content). If SVG support is removed/blocked for safety, the allowed-logo list here should be updated to match.
1. **Company name + logo:** if not already given, ask with `core-AskUserQuestion`
   (company name is required; logo is optional — a PNG/JPG/SVG file). Do not ask
   for anything a lookup can answer.

submissions/create-copilot-adoption-dashboard/README.md:30

  • README advertises SVG logos, but embedding SVG into the generated HTML is a script-injection risk. If SVG support is removed/blocked in the builder, this list should be updated so users don’t provide SVGs.
Optional: a **logo** file (PNG, JPG, SVG, GIF or WebP). It gets embedded into the
HTML, so the finished dashboard stays a single portable file.

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings August 5, 2026 12:44

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 6 out of 6 changed files in this pull request and generated 1 comment.

Suppressed comments (3)

submissions/create-copilot-adoption-dashboard/SKILL.md:27

  • The SKILL.md includes human-facing adoption/setup content (e.g., "Overview", "When to Use/NOT to Use", and "Quick Start") before the agent’s actual runtime procedure. In this repo, SKILL.md is meant to be agent-facing run instructions, while human-facing overview/setup guidance should live in the submission README.md. Please move those sections into README.md and have SKILL.md begin directly with the agent procedure (activation + phases).
## Overview

This skill builds a **Microsoft 365 Copilot adoption dashboard** by feeding four
MAC report exports through the *Copilot Adoption Analysis* framework and
injecting the computed results into a bundled single-file HTML template. The

submissions/create-copilot-adoption-dashboard/SKILL.md:88

  • SKILL.md says the optional logo can be SVG, but encode_logo() explicitly rejects SVG files for security reasons. The supported formats in the skill instructions should match what the script actually accepts.
1. **Company name + logo:** if not already given, ask with `core-AskUserQuestion`
   (company name is required; logo is optional — a PNG/JPG/SVG file). Do not ask
   for anything a lookup can answer.

submissions/create-copilot-adoption-dashboard/README.md:30

  • README lists SVG as a supported logo format, but the build script rejects SVG logos (to avoid active content). Update the README to only list formats that are actually supported.
Optional: a **logo** file (PNG, JPG, SVG, GIF or WebP). It gets embedded into the
HTML, so the finished dashboard stays a single portable file.

Comment thread submissions/create-copilot-adoption-dashboard/scripts/build_dashboard.py Outdated
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings August 5, 2026 12:48

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 6 out of 6 changed files in this pull request and generated 1 comment.

Suppressed comments (4)

submissions/create-copilot-adoption-dashboard/SKILL.md:27

  • SKILL.md should be agent-facing runtime instructions; sections like "Overview", "When to Use/NOT to Use", and "Quick Start" are human-facing and should live in README.md instead (see submissions/README.md:36-41, 74-82). Consider starting SKILL.md directly at "Core Instructions".
## Overview

This skill builds a **Microsoft 365 Copilot adoption dashboard** by feeding four
MAC report exports through the *Copilot Adoption Analysis* framework and
injecting the computed results into a bundled single-file HTML template. The

submissions/create-copilot-adoption-dashboard/metadata.json:5

  • metadata.json requires lowercase tags for search/filtering; the current tags are capitalized and will fail repo validation (see submissions/README.md:113).
  "tags": ["Copilot", "Adoption", "Data", "Dashboard", "KPIs", "Measure"],

submissions/create-copilot-adoption-dashboard/SKILL.md:88

  • The skill instructs the user that SVG logos are acceptable, but encode_logo() explicitly rejects SVG for security reasons. Update the accepted logo types here to avoid confusing runs where an SVG is provided and silently dropped.
1. **Company name + logo:** if not already given, ask with `core-AskUserQuestion`
   (company name is required; logo is optional — a PNG/JPG/SVG file). Do not ask
   for anything a lookup can answer.

submissions/create-copilot-adoption-dashboard/README.md:29

  • README says SVG logos are supported, but the build script rejects SVG logos ("can contain active content") and will fall back to the default mark. Update the README to match the actual supported formats.
Optional: a **logo** file (PNG, JPG, SVG, GIF or WebP). It gets embedded into the

Comment thread submissions/create-copilot-adoption-dashboard/scripts/build_dashboard.py Outdated
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings August 5, 2026 12:54

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 6 out of 6 changed files in this pull request and generated no new comments.

Suppressed comments (5)

submissions/create-copilot-adoption-dashboard/SKILL.md:30

  • SKILL.md currently contains human-facing overview/quick-start content (e.g., “## Overview”, “## Quick Start”). Per repo submission guidance, setup/overview/examples should live in the submission README.md (human-facing) so they don’t ship to the agent as runtime context; SKILL.md should start directly with the agent’s operating instructions.
## Overview

This skill builds a **Microsoft 365 Copilot adoption dashboard** by feeding four
MAC report exports through the *Copilot Adoption Analysis* framework and
injecting the computed results into a bundled single-file HTML template. The
output is one self-contained `.html` file (no libraries, no network) branded
with the customer's name and logo, carrying only real data — every template
placeholder, sample number, and template label is replaced. Every KPI tile and

submissions/create-copilot-adoption-dashboard/SKILL.md:117

  • --col-map is implemented as a path to a JSON file (json.loads(Path(args.col_map).read_text(...))), but the instructions read like inline JSON can be provided. Clarify that --col-map takes a file path (e.g. --col-map working/col_map.json).
   If `warnings` names an unmapped column, write a small `--col-map` JSON (see
   the reference) and re-run — do not hand-edit numbers. Confirm
   `template_reference_check` is `clean`.

submissions/create-copilot-adoption-dashboard/SKILL.md:88

  • The skill instructions say the optional logo can be SVG, but scripts/build_dashboard.py explicitly rejects .svg logos for safety and falls back to the default mark. This mismatch will confuse users and make SVG uploads appear “ignored”.

This issue also appears on line 115 of the same file.

1. **Company name + logo:** if not already given, ask with `core-AskUserQuestion`
   (company name is required; logo is optional — a PNG/JPG/SVG file). Do not ask
   for anything a lookup can answer.

submissions/create-copilot-adoption-dashboard/README.md:30

  • README says SVG logos are supported, but the build script rejects .svg (warns and uses the default mark). Either support SVG safely or update the README to match the actual behavior.
Optional: a **logo** file (PNG, JPG, SVG, GIF or WebP). It gets embedded into the
HTML, so the finished dashboard stays a single portable file.

submissions/create-copilot-adoption-dashboard/references/adoption-framework.md:182

  • This reference describes --col-map as “a JSON override”, but in the script it is a file path to JSON. To prevent failed runs, it would help to explicitly say it’s a JSON file passed by path (e.g. --col-map col_map.json).
Header names vary between tenants and export versions, so the script matches
columns by normalised keyword (lower-cased, punctuation/space-stripped), not by
exact string. When a needed column cannot be matched it stops and lists the
available headers so the agent can supply a `--col-map` JSON override, e.g.:

@chancecontra

chancecontra commented Aug 9, 2026 via email

Copy link
Copy Markdown
Author

@adrianatruji

Copy link
Copy Markdown
Collaborator

Hi chancecontra , thanks for this!

Sharing with you a couple of notes after an end-to-end test in Copilot Studio against a real MAC Copilot usage export:

  1. active_days isn't matched on the current MAC export. The live export names the column Active Usage Days for All Apps - because "usage" sits between the terms, none of the active_days aliases match, so the build warns "no active-days column…" and approximates the habitual rate and Champion/Habitual split. The agent self-corrected with a --col-map, so you may want to consider 1) Adding activeusagedays/usagedays to the aliases and 2) Reviewing the column mapping for the other 3 export types (this only accounts for the Copilot usage csv).

  2. We should name which adoption framework drives the recommendations in the output. The HTML attributes its next steps to "the adoption framework" without naming it, so a reader may assume the Microsoft Adoption toolkit or M365 Copilot Adoption Guide, but neither is fetched; the thresholds live locally in references/adoption-framework.md. The dashboard/README should transparently say so. That also raises the question about keeping it current: the .md hard-codes values subject to change (e.g. KPI targets, thresholds). Worth flagging which are org-tunable and have some maintenance plan in mind or note of "last reviewed against..." so it doesn't quietly drift.

Thank you!

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.

4 participants