AI-Shifu Learning Report
Turn observed data from one course into a decision-ready report for teaching managers and teachers. Keep collection, interpretation, and presentation separate so every conclusion can be traced to a defined metric without exposing learner data.
Required References
Read these files completely, in order, for every report:
references/data-collection-and-privacy.mdreferences/analysis-guidelines.mdreferences/report-structure.md
Resolve every ## Required References declaration in those files transitively before acting.
Scope Router
| Request | Route |
|---|---|
| Build a report from a live AI-Shifu course | Use the current ai-shifu-course-creator skill and its analytics CLI to collect the permitted data, then normalize, analyze, and render it here. |
| Build a report from supplied or synthetic data | Do not query the platform. Validate the input against this skill's data and privacy rules, then normalize, analyze, and render it. |
Re-render an existing schema_version: "1.0" report JSON |
Validate and privacy-scan the JSON, then render it without inventing missing analysis. |
| Compare multiple courses | Explain that v1 supports one-course diagnosis and ask which course should be reported first. Do not silently merge courses. |
| Edit course content after reading the report | Finish the report first, then hand the requested authoring work to ai-shifu-course-creator as a separate task. |
Workflow
- Resolve the request. Identify exactly one course and any requested time range. Default to
zh-CNand cumulative-to-date data. Useen-USonly when the user explicitly asks for English; schema keys, enum values, commands, and file names stay unchanged. - Collect or validate. Follow
data-collection-and-privacy.md. Live collection delegates authentication, course resolution, outline resolution, analytics syntax, and platform privacy controls to the currentai-shifu-course-creator; never recreate those mechanisms here. Resolve the current published outline and remove hidden, unpublished, and container nodes before normalizing any lesson-scoped signal. - Normalize. Create a
schema_version: "1.0"report object. Keep unavailable data asnullwith an explicit quality explanation instead of guessing or converting it to zero. - Analyze. Follow
analysis-guidelines.md. Separate observations from interpretations, preserve conflicting signals, and write 3–5 evidence-linked recommendations. - Write the data artifact. Save the privacy-safe object as
course-learning-report.json. This file is the single source for the rendered report. - Validate and render. Follow
report-structure.md, validate the JSON, then run the bundled renderer to createcourse-learning-report.htmlfrom that exact JSON. - Run the release gate. Confirm that both files describe one course, use the requested language, contain no raw learner text or identifiers, label metric definitions and time scopes, show missing-data states honestly, and contain no external runtime assets.
- Deliver both files. Summarize the reporting window, major data limitations, and whether follow-up text was sampled. Do not paste private source rows into the handoff.
Non-Negotiable Boundaries
- Use the course creator skill's current CLI for live data. Never read a token, inspect its environment file, compose authentication headers, or call platform HTTP endpoints directly.
- Do not copy or freeze the analytics query language in this skill. The course creator skill owns query syntax, table semantics, codes, and recipes.
- Never place raw follow-up text, answers, phone numbers, emails, names, nicknames, learner labels, or any raw
*_bidvalue in either final artifact. - Build every lesson-scoped analysis from the current published outline. Include only published, visible teaching leaf lessons, and use that same eligible set for the course entrant denominator, completion numerator, learning path, lesson health, follow-up attribution, and recommendations. If publication or visibility cannot be resolved reliably, mark the affected metrics unavailable instead of falling back to a draft outline.
- Calculate
课程完成率from one consistent learner cohort: the denominator is distinct learners whose first progress on an eligible lesson falls inside the metric's time scope, and the numerator is the subset of those learners who complete every required lesson or one valid required branch path by the report cutoff. Count each learner once. Do not impose a fixed 30-day or other maturation window, and do not remove late starters to improve the rate. Put the exact cohort dates, cutoff, numerator, denominator, eligible lesson scope, and completion rule in the metric definition and source notes. Do not append代理or近似to reader-facing Chinese content. Treat进行中/In progressas a recorded state, never proof that learners are stuck. - Keep orders, revenue, payment channels, and AI-Shifu credit consumption out of the teaching report unless the user explicitly requests an operations appendix.
- The JSON is the factual contract and the HTML is its presentation. Do not add claims to HTML that are absent from JSON.
- Present the HTML in the Swiss International Style defined by
report-structure.md; preserve its modular grid, typographic hierarchy, flat square geometry, and restrained color system when applying brand overrides.
Completion Checklist
course-learning-report.jsonpasses the bundled validator for schema version 1.0.course-learning-report.htmlis self-contained, responsive, accessible, printable, generated from the validated JSON, and rendered with the required Swiss International Style system.- Every metric includes
key,label,value,unit,definition,time_scope,data_quality,is_approximate, andsource_notes. - The report contains 3–5 recommendations with cited evidence, confidence, an action, and a validation method.
- Follow-up analysis discloses its recent-sample size and collection status; an opt-out produces an explicit not-collected state, not an empty-data inference.
- Privacy scan finds no raw source text, identity data, internal IDs, or sensitive learner profile values.