| name | learning-compliance-report |
| description | Generates an HTML learning compliance report for a manager's team using Workday data: who has
completed required learning, who is overdue, course-by-course completion, and a watch list of
reports approaching due dates. Use when the user asks for a "learning compliance report",
"training compliance dashboard", "who hasn't done their training", "required learning status",
or "compliance training report".
|
| license | MIT |
| compatibility | Copilot Cowork Frontier with the Workday MCP connector in this package. |
| metadata | {"author":"ESS MCP Demo","version":"1.0.0","demo-audience":"People Manager / Compliance Lead"} |
| cowork.category | People & HR |
| cowork.icon | LearningAppFilled |
Learning Compliance Report
What This Skill Does
Produces a printable HTML report that shows learning compliance for a manager's team: per-person
status, per-course completion, overdue list, and a watch list of items due in the next 14 days.
Designed to be run weekly.
When To Use
- "Run the learning compliance report"
- "Who hasn't done their training"
- "Show me overdue learning for my team"
Required Connector Tools
get_worker, get_direct_reports
get_learning_assignments
get_learning_records (per direct report)
If the connector is not bound, stop and report.
Default Workflow
- Resolve the manager and team.
- For each direct report, fetch
get_learning_assignments and get_learning_records.
- Categorise per assignment per person:
- Completed — completion date present.
- Due soon — due in next 14 days, not completed.
- Overdue — past due date, not completed.
- Not started — assigned, no due date, no progress.
- Compute compliance % per person and per course.
- Render the HTML report.
HTML Output Template
<!doctype html>
<html lang="en"><head><meta charset="utf-8">
<title>Learning Compliance — {{team_name}} — {{date}}</title>
<style>
body { font-family:-apple-system,"Segoe UI",system-ui,sans-serif; color:#1F2328; margin:0; background:#FBFAF7; }
.wrap { max-width:1180px; margin:0 auto; padding:24px; }
h1 { font-size:22px; margin:0 0 4px; }
.sub { color:#656D76; margin-bottom:18px; font-size:13px; }
.grid { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:18px; }
.kpi { background:white; border:1px solid #D0D7DE; border-radius:12px; padding:14px 16px; }
.kpi .label { color:#656D76; font-size:12px; text-transform:uppercase; letter-spacing:.04em; }
.kpi .val { font-size:28px; font-weight:600; margin-top:4px; }
.kpi.red .val { color:#CF222E; } .kpi.amber .val { color:#D29922; } .kpi.green .val { color:#2DA44E; }
table { width:100%; border-collapse:collapse; font-size:13px; background:white; border:1px solid #D0D7DE; border-radius:10px; overflow:hidden; margin-bottom:14px; }
th, td { text-align:left; padding:8px 10px; border-bottom:1px solid #D0D7DE; }
th { background:#F6F8FA; color:#656D76; font-weight:500; }
.pill { display:inline-block; padding:2px 8px; border-radius:999px; font-size:11px; font-weight:600; }
.pill.ok { background:#DAFBE1; color:#2DA44E; }
.pill.due { background:#FFF1CF; color:#9A6700; }
.pill.over { background:#FFEBE9; color:#CF222E; }
.footer { color:#656D76; font-size:11px; margin-top:18px; }
</style></head>
<body><div class="wrap">
<h1>Learning Compliance — {{team_name}}</h1>
<div class="sub">{{date}} · manager: {{manager_name}} · {{headcount}} reports · overall compliance {{overall_pct}}%</div>
<div class="grid">
<div class="kpi green"><div class="label">Compliant</div><div class="val">{{compliant_count}}</div></div>
<div class="kpi amber"><div class="label">Due in 14 days</div><div class="val">{{due_soon_count}}</div></div>
<div class="kpi red"><div class="label">Overdue</div><div class="val">{{overdue_count}}</div></div>
<div class="kpi"><div class="label">Not started</div><div class="val">{{not_started_count}}</div></div>
</div>
<h2 style="font-size:14px;text-transform:uppercase;color:#656D76;letter-spacing:.04em;">Overdue list</h2>
<table><thead><tr><th>Owner</th><th>Course</th><th>Due</th><th>Days over</th></tr></thead>
<tbody>{{rows_overdue}}</tbody></table>
<h2 style="font-size:14px;text-transform:uppercase;color:#656D76;letter-spacing:.04em;">Due in next 14 days</h2>
<table><thead><tr><th>Owner</th><th>Course</th><th>Due</th></tr></thead>
<tbody>{{rows_due_soon}}</tbody></table>
<h2 style="font-size:14px;text-transform:uppercase;color:#656D76;letter-spacing:.04em;">Per-person summary</h2>
<table><thead><tr><th>Owner</th><th>Assigned</th><th>Completed</th><th>Overdue</th><th>Compliance</th></tr></thead>
<tbody>{{rows_per_person}}</tbody></table>
<div class="footer">Generated by Copilot Cowork · Workday MCP · {{generated_at}}</div>
</div></body></html>
Rules
- A course is "overdue" only when due date is past today AND no completion record exists.
- Compliance % per person = completed / assigned. Round to whole number.
- Never include grades or scores from
get_learning_records in the team report — that's
individual data; show only completion status here.
- If a person has no required learning, show them in the per-person summary with "—" rather than
excluding them.
Tone
Compliance-officer neutral. State facts, suggest next step ("Send reminder to {{name}} for {{course}}")
where overdue.