---
name: instructor-guide
description: "Generate a faculty facilitator guide in a hidden Canvas module."
---

# Instructor Guide Skill

> **Plugin**: ASU Canvas Course Builder
> **Trigger**: `/instructor-guide`
> **References**: syllabus-generator (for course structure, objectives, and assessment specs), `course-config.json`, `scripts/course_navigator.py`, `standards/canvas-standards.md`, `standards/instructional-design.md`
> **Related**: course-build (orchestrator that can invoke this skill as Phase 6.5)

## Purpose
> **Edit discipline**: Preserve original structure. Replace only fields the user explicitly named. Do not delete placeholders, instructor notes, or template scaffolding unless told to.
Generate a comprehensive facilitator guide for instructors, housed in a hidden "Faculty Resources" module positioned above Module 0 in Canvas. The guide provides week-by-week teaching notes, announcement templates, a communication and grading timeline, assessment grading tips, and a student support resource directory. The module is always created **unpublished** so it remains invisible to students.

---

## Required Inputs

| Input | Description | Example |
|---|---|---|
| **Canvas course URL or ID** | The course to add the guide to | `https://canvas.asu.edu/courses/255160` or `255160` |
| **Course config** | `course-config.json` with module structure, objectives, assessments | Generated by `syllabus-generator` or `course-build` |
| **Live Canvas course data** | Current modules, assignments, quizzes, and discussions from Canvas | `course_navigator.py --json`, `canvas_api.list_modules(config)`, `canvas_api.list_assignments(config)`, `canvas_api.list_quizzes(config)`, `canvas_api.list_discussions(config)` |

---

## Process

### Step 1: Ground the Guide Against Live Canvas

Before writing any faculty-facing guidance, read the implemented Canvas course and reconcile it against `course-config.json`.

- Fetch the live module tree with `${ASUCB_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT}}}/bin/python3 scripts/course_navigator.py --course-id {COURSE_ID} --json` so you have actual module/item order, item types, and labels.
- Fetch live inventories with `canvas_api.list_modules(config)`, `canvas_api.list_assignments(config)`, `canvas_api.list_quizzes(config)`, and `canvas_api.list_discussions(config)`.
- Treat `course-config.json` as the blueprint and Canvas as the ground truth. When they disagree on module names, item order, assessment presence, or counts, flag the drift and generate the guide from the live Canvas data.
- Identify each content module's instructional pattern from the live Canvas structure by grouping items by detected role rather than exact names. Use item type, order, text headers, and nearby labels to classify roles such as overview, task list, readings, lecture, synchronous resources, knowledge check, guided practice, assessment, and conclusion.
- Reference `standards/canvas-standards.md` and `standards/instructional-design.md` when classifying module patterns. If the Gold Standard 7-item pattern is detected, use the Gold Standard template language. If a custom or alternate ASU-approved pattern is detected, adapt the guide to that actual pattern and call out missing or extra roles where helpful.

### Step 2: Create Hidden Module

Create an unpublished "Faculty Resources" module positioned at the **top** of the module list (position 1), above Module 0.

**Canvas API**: `POST /api/v1/courses/{id}/modules`

```json
{
  "module": {
    "name": "Faculty Resources",
    "position": 1,
    "published": false
  }
}
```

After creation, verify that existing modules have shifted down. If position conflicts occur, reorder existing modules via `PUT /api/v1/courses/{id}/modules/{module_id}` to ensure Faculty Resources is first.

---

### Step 3: Generate Pages

Create 6 wiki pages and add each to the Faculty Resources module as module items. All pages follow ASU branding (Maroon `#8C1D40` headers, Gold `#FFC627` accents) with a distinct instructor-facing banner at the top of every page:

```html
<div style="background-color: #8C1D40; color: #FFFFFF; padding: 10px 16px; border-radius: 4px; margin-bottom: 20px; font-size: 14px;">
  <strong>Faculty Resources</strong> &mdash; This page is visible only to instructors. Students cannot see this module.
</div>
```

---

#### Page 1: Instructor Welcome & Course Overview

**Slug**: `faculty-welcome-overview`

**Content**:

- **Course Summary**: Pull title, institution, format, duration, level, credit hours, and course description from `course-config.json`, but verify module count, module titles, and surfaced assessment references against live Canvas data first. If Canvas and config disagree, prefer Canvas and note the drift.

- **Design Philosophy**: Explain the backward design (Understanding by Design) approach, then describe the actual module pattern detected from live Canvas. Supported patterns include the Gold Standard 7-item sequence and custom ASU variants such as overview/task-list/readings/lectures/synchronous-resources/assessment/conclusion. Detect the pattern by calling `course_navigator.py --json` or `canvas_api.list_modules(config)`, grouping items by instructional role rather than page name. If the Gold Standard pattern is present, describe that formative-to-summative progression. If a custom pattern is present, explain the module flow using the detected roles and ordering.

- **Module Map**: Generate a table listing all modules with titles, detected instructional pattern, key topics, and estimated student time. Pull module order/titles from live Canvas modules first, then supplement topics/time estimates from `course-config.json` only when the records align.

  | Module | Title | Detected Pattern | Key Topics | Est. Time |
  |---|---|---|---|---|
  | M0 | Getting Started | Orientation / onboarding | Orientation, syllabus, pre-assessment | 2-3 hours |
  | M1 | [Title] | [Gold Standard or detected custom roles] | [Topics from Canvas + config] | [Estimate] |
  | ... | ... | ... | ... | ... |

- **How the Course Was Built**: Brief explanation that this course was constructed using the ASU Canvas Course Builder plugin, which coordinates content generation, assessment creation, media production, and accessibility auditing. Note that `course-config.json` is the design blueprint, while the live Canvas build is the operational source used for this guide.

- **Where to Find Things**: Quick-reference guide for common instructor tasks:
  - Accessing the Gradebook
  - Finding assignment rubrics
  - Viewing quiz item analysis
  - Checking student progress through modules
  - Editing page content

- **Key Dates Overview**: Placeholder table for session-specific dates.

  | Event | Date |
  |---|---|
  | Course opens | `[FACULTY: Customize]` |
  | Module 1 begins | `[FACULTY: Customize]` |
  | Mid-course checkpoint | `[FACULTY: Customize]` |
  | Final assessment window | `[FACULTY: Customize]` |
  | Grades due | `[FACULTY: Customize]` |

---

#### Page 2: Week-by-Week Teaching Notes

**Slug**: `faculty-teaching-notes`

**Content**:

For **each content module** identified from the live Canvas module list (excluding Module 0 and the hidden Faculty Resources module), generate the following block. Use `course-config.json` to enrich objectives/topics only after matching the module to the live Canvas record.

---

**Module [#]: [Title]** (H2)

**Key Concepts to Emphasize**
- 3-4 bullet points drawn directly from the module's learning objectives in `course-config.json`
- Focus on the highest-Bloom's-level objectives — these are where students need the most support

**Common Student Misconceptions**
- 2-3 typical misconceptions for this topic area, generated based on the discipline and module content
- Frame each as: "[Misconception]" followed by the correct understanding

**Discussion Facilitation Tips**
- If discussions exist in the module based on `canvas_api.list_discussions(config)` or the live `course_navigator.py` module tree, generate facilitation tips for each detected graded discussion.
- For each live discussion item, include seeding guidance, signs of exemplary versus developing responses, and when faculty should intervene.
- If no graded discussions found in content modules, skip this section or insert the note: "No graded discussions found in content modules — consider adding if pedagogically appropriate."

**Assessment Focus Areas**
- Match live module assignments from `canvas_api.list_assignments(config)` to the module before writing grading guidance.
- If rubric-attached assignments exist for the module, generate rubric interpretation guidance from the live Canvas rubric criteria and highlight the highest-weight criterion plus common pitfalls.
- If no matched assignments have rubrics, insert a rubric gap flag: "[N] assignments lack rubrics — recommend attaching rubrics before finalizing the faculty-facing guide."
- Do not infer rubric criteria from `course-config.json` alone.

**Connections to Other Modules**
- How this module builds on the previous module's content
- What concepts from this module are prerequisites for upcoming modules

**Pacing Notes**
- Which activities take longest (typically the Artifact assignment and discussion peer responses)
- Where students commonly fall behind and how to intervene early

---

Repeat this block for every content module (M1 through M[N]).

---

#### Page 3: Announcement Templates

**Slug**: `faculty-announcements`

**Content**:

Provide copy-paste announcement templates. All customizable fields use `[FACULTY: Customize]` markers.

---

**1. Welcome Announcement** (send 3-5 days before session start)

> Subject: Welcome to [Course Title]!
>
> Hello everyone,
>
> I am excited to welcome you to [Course Title]! My name is `[FACULTY: Customize]`, and I will be your instructor for this `[FACULTY: Customize]`-week session.
>
> **Before the course officially begins**, please complete the following:
> 1. Read through the **Module 0: Getting Started** materials, including the Syllabus & Course Policies page
> 2. Complete the **Academic Integrity Agreement**
> 3. Introduce yourself in the **Introduction Discussion**
> 4. Take the **Pre-Assessment** (this is diagnostic only and does not affect your grade)
>
> If you have any questions, reach out to me via Canvas Inbox or email at `[FACULTY: Customize]`.
>
> I look forward to working with you!
>
> `[FACULTY: Customize — Instructor Name]`

---

**2. Weekly Module Opening** (send at the start of each module)

> Subject: Module [#] Now Open: [Module Title]
>
> Hi everyone,
>
> Module [#]: **[Module Title]** is now available. This week we will focus on `[FACULTY: Customize — key topics]`.
>
> **Here is what to focus on this week:**
> - Complete the live Canvas items for this module in the order they appear
> - Highlight the key learning activity or lecture for this week: `[FACULTY: Customize — live Canvas item title]`
> - Highlight the primary assessment due this week: `[FACULTY: Customize — assignment or quiz title]` (due `[FACULTY: Customize]`)
> - If discussions exist, post in **[Discussion Title]** (initial post due `[FACULTY: Customize]`; peer responses due `[FACULTY: Customize]`)
>
> Let me know if you have any questions!

---

**3. Office Hours Reminder** (send weekly or bi-weekly)

> Subject: Office Hours This Week
>
> Hi everyone,
>
> I will be holding virtual office hours on **`[FACULTY: Customize — Day]`** at **`[FACULTY: Customize — Time]`** via `[FACULTY: Customize — Zoom/Teams link]`.
>
> Drop in if you have questions about `[FACULTY: Customize — current module topic]` or anything else in the course. No appointment necessary.

---

**4. Mid-Course Check-In** (send around module 4-5)

> Subject: Mid-Course Check-In
>
> Hi everyone,
>
> We are halfway through the course! Here is what I have noticed so far:
>
> **Great work on**: `[FACULTY: Customize — specific strengths observed]`
>
> **Common area for improvement**: `[FACULTY: Customize — patterns from grading]`
>
> If you are feeling behind, now is a good time to reach out. I am here to help, and so are the ASU support resources linked in your syllabus.
>
> Keep up the strong effort!

---

**5. Course Evaluation Announcement** (send in final module)

> Subject: Please Complete the Course Evaluation
>
> Hi everyone,
>
> As we wrap up the course, please take a few minutes to complete the **course evaluation**. Your feedback directly improves future offerings of this course and helps the program grow.
>
> The evaluation is anonymous and available at: `[FACULTY: Customize — evaluation link]`
>
> Thank you for your thoughtful feedback and for your hard work this session.

---

**6. Welcome Email Template** (for direct email, not Canvas announcement)

> **Subject**: Welcome to [Course Title] — Getting Started
>
> Dear `[FACULTY: Customize — Student Name / "Students"]`,
>
> Welcome to **[Course Title]**! The course will open on `[FACULTY: Customize — date]` in Canvas at `[FACULTY: Customize — Canvas URL]`.
>
> **To prepare**:
> - Ensure you can log in to Canvas
> - Review the course syllabus (available in Module 0 once the course opens)
> - Check that your Canvas notification preferences are set so you receive announcements
>
> I will send a Canvas announcement a few days before the session starts with detailed first-week instructions.
>
> Looking forward to a great session!
>
> `[FACULTY: Customize — Instructor Name]`
> `[FACULTY: Customize — Instructor Email]`

---

#### Page 4: Communication & Grading Timeline

**Slug**: `faculty-timeline`

**Content**:

**Response Time Commitments**

| Channel | Target Response Time |
|---|---|
| Canvas Inbox / Email | Within 24 hours on weekdays |
| Discussion Forums | If discussions exist, check and respond 3-5 times per week |
| Assignment Grading | Within `[grading_turnaround_days from config]` business days of due date |

---

**Weekly Instructor Task Checklist**

| Day | Task |
|---|---|
| Monday | Post module opening announcement; review previous week's submissions |
| Tuesday-Wednesday | Grade Knowledge Checks (review auto-graded results and item analysis); grade Guided Practice (completion check) |
| Wednesday-Thursday | Grade Artifact assignments using the live Canvas rubric if one is attached; if no rubric exists, flag the rubric gap before finalizing the guide and provide feedback guidance without invented criteria |
| Thursday-Friday | If discussions exist, participate in discussion forums and grade discussion posts. If no discussions exist, use this block for outreach, office hours, or assignment feedback follow-up. |
| Friday | Post office hours reminder; respond to accumulated Canvas Inbox messages |

`[FACULTY: Customize — adjust days to match your weekly rhythm]`

---

**Grading Turnaround Targets by Assessment Type**

| Assessment Type | Grading Time | Notes |
|---|---|---|
| Knowledge Checks | Same day (auto-graded) | Review item analysis for problematic questions; check accommodation overrides |
| Guided Practice | 1-2 business days | Completion-based — verify submission exists |
| Create an Artifact | 3-5 business days | If a rubric exists, use it consistently; if no rubric exists, add the rubric gap flag instead of inventing rubric interpretation guidance |
| Discussions | 3-5 business days | Include this row only if discussions exist; otherwise omit it from the final page or note that no graded discussions were found |
| Final Assessment | 3-5 business days (auto-graded) | Review item analysis; check accommodation overrides |

---

#### Page 5: Student Support Resource Directory

**Slug**: `faculty-support-resources`

**Content**:

Directory of ASU support services with contact information, URLs, and guidance on when to refer students. All links open in new tabs.

---

**Student Accessibility & Inclusive Learning Services (SAILS)**
- **Email**: Student.Accessibility@asu.edu
- **Purpose**: Accommodation requests, accessibility barriers, assistive technology
- **When to refer**: Student mentions a disability, requests accommodations, or reports accessibility issues with course content
- **Faculty Portal**: Track and manage accommodations for enrolled students

**Course Resource Services (CRS)**
- **Email**: CourseResourceServices@asu.edu
- **Purpose**: Library Resource Organizer, accessible and copyright-compliant course materials
- **When to refer**: Need accessible versions of textbooks, library materials, or help with copyright compliance

**Learning Experience Design (LXD)**
- **URL**: lx.asu.edu
- **Purpose**: On-demand resources, workshops, and 1:1 consultations for course design
- **When to refer**: Want to improve course accessibility, adopt new teaching strategies, or redesign assessments

**EdPlus Digital Learning (EDL)**
- **URL**: edl.asu.edu
- **Purpose**: Course review, accessibility consultation, and planning support
- **When to refer**: Need help reviewing or improving your online course for quality and accessibility

**Success Coaches**
- **Purpose**: Student academic support, motivation, and time management
- **When to refer**: Student is falling behind, disengaged, missing deadlines, or struggling with coursework

**Academic Advisors**
- **Purpose**: Degree planning, course selection, academic policies
- **When to refer**: Student has questions about prerequisites, degree requirements, or academic standing

**Canvas Technical Support**
- **Access**: Click the **?** (Help) icon in Canvas global navigation
- **Purpose**: Technical issues with Canvas LMS
- **When to refer**: Student cannot submit assignments, cannot access content, encounters technical errors, or has browser compatibility issues

**Counseling Services**
- **Purpose**: Mental health support, crisis intervention
- **When to refer**: Student is in distress, mentions a personal crisis, or exhibits signs of emotional difficulty. For immediate crisis support, direct students to the ASU Crisis Line.

---

#### Page 6: Assessment Overview & Grading Tips

**Slug**: `faculty-assessment-guide`

**Content**:

**Assessment Summary**

Generate this table from live Canvas inventories first (`canvas_api.list_modules(config)`, `canvas_api.list_assignments(config)`, `canvas_api.list_quizzes(config)`, `canvas_api.list_discussions(config)`). Use `course-config.json` only to supplement weights or planned categories that still match the live course.

| Assessment Type | Per Module | Points Each | Total Points | Weight | Grading Method |
|---|---|---|---|---|---|
| Knowledge Check | 1 per content module | [pts] | [total] | [weight]% | Auto-graded (Canvas quiz) |
| Guided Practice | 1 per content module | [pts] | [total] | [weight]% | Completion-based |
| Create an Artifact | [actual Canvas count by module] | [pts] | [total] | [weight]% | [Rubric-graded if rubric exists; otherwise instructor-scored] |
| Discussion | [actual Canvas count by module, or 0] | [pts] | [total] | [weight]% | [Rubric-graded if rubric exists; otherwise discussion-specific settings] |
| Final Assessment | 1 total | [pts] | [pts] | [weight]% | Auto-graded (Canvas quiz) |
| **Total** | | | **[grand total]** | **100%** | |

After the table, add a live coverage note:
- If discussions exist, summarize where they appear.
- If no graded discussions found in content modules, insert: "No graded discussions found in content modules — consider adding if pedagogically appropriate."
- If rubric-attached assignments exist, summarize rubric coverage by assignment type.
- If no rubric-attached assignments exist, insert a rubric gap flag: "[N] assignments lack rubrics — recommend attaching rubrics before finalizing the faculty-facing guide."

---

**Grading Tips by Assessment Type**

**Knowledge Checks** (auto-graded)
- Review item analysis after each module closes to identify questions with poor discrimination or high error rates
- Check for accommodation overrides (extended time) — ensure overrides are applied before the quiz opens
- Students receive 2 attempts; the highest score counts
- If a question is found to be ambiguous or incorrect, use "fudge points" in SpeedGrader to adjust individual scores

**Guided Practice** (completion-based)
- Verify that a submission exists; no detailed grading is required
- Consider providing brief encouragement or tips in the feedback comments — even on completion-based items, a short note increases student engagement

**Create an Artifact** (rubric-graded)
- If rubric-attached artifact assignments exist, use the live Canvas rubric to provide calibration guidance, feedback priorities, and common issues by assignment type.
- If no artifact rubrics exist, replace this subsection with the rubric gap flag instead of inventing rubric interpretation guidance.

**Discussions** (rubric-graded)
- If discussions exist, generate this subsection from the live discussion list and describe the actual discussion settings, grading approach, and facilitation expectations.
- If no graded discussions found in content modules, omit this subsection or replace it with: "No graded discussions found in content modules — consider adding if pedagogically appropriate."

**Final Assessment** (auto-graded)
- [N] NBME-style vignette questions with a [M]-minute time limit
- Review item analysis for consistently missed questions — flag for revision in future offerings
- Ensure accommodation overrides for extended time are applied before the assessment window opens

---

**Common Student Issues & Recommended Responses**

| Issue | Recommended Response |
|---|---|
| "I missed the deadline" | Refer to the late work policy in the syllabus. Apply the stated deduction schedule consistently. |
| "The quiz question is wrong" | Review the item. If warranted, adjust with fudge points and note the question for future revision. |
| "I need more time on the exam" | Refer the student to SAILS for formal accommodations. Do not grant ad-hoc extensions on timed assessments. |
| "I cannot access the course" | Refer to Canvas Technical Support (Help icon in Canvas). |
| "I am overwhelmed / struggling" | Refer to Success Coach and/or Counseling Services. Express support and offer to discuss pacing adjustments. |
| "Can I resubmit my assignment?" | Refer to syllabus policy. If resubmission is not addressed, use instructor discretion and document the decision. |

---

## Lecture Support Mode

Use this mode when the user asks for lecture scripts, lecture outlines, video recording support, existing-recording placement, or video placeholders.

### Video Status Gate

Ask what the instructor has:

| Choice | Action |
|---|---|
| Existing recordings | Collect each module's video file or link, upload or embed, record media IDs, and use Canvas inline media embeds in lesson pages |
| Help preparing | Generate full scripts, detailed outlines, or a per-module mix |
| Placeholders | Insert styled video placeholder blocks and mark module video status in `course-config.json` |

### Recording Preparation

Use module topics/objectives, approved resources, course level, audience, and instructor notes from `course-config.json`.

For full scripts, produce about 2000-3000 words per module with an opening hook, course positioning, core content by objective, examples, professional connections, resource bridges, summary, preview, and `[SLIDE: Title]` cues.

For outlines, produce about 500-800 words with opening hook bullets, per-objective talking points, examples, resource bridges, closing summary, and slide cues.

Save materials to `lecture-scripts/module-{N}-script.md` or `lecture-scripts/module-{N}-outline.md` and present each for review before staging related page changes.

### Video Placeholder Blocks

When recordings are not ready, insert a styled placeholder in the lesson page with module number, module title, estimated duration (about 3 minutes per objective), and an objective summary. Mark the module in `course-config.json` with `"video_status": "placeholder"` so later update flows know to replace it.

### Recording Tips

Include practical tips for NotebookLM video generation, self-recording, microphone/lighting, 15-20 minute maximum length, MP4 upload, caption review, `upload_captions.py`, and `add_transcripts.py`.

---

## HTML Formatting Standards

All 6 pages follow these conventions:

- **Headings**: H2 for page title, H3 for major sections, H4 for subsections. No H1 tags.
- **ASU Branding**: Maroon `#8C1D40` for headings and borders, Gold `#FFC627` for accents and highlights.
- **External links**: All external URLs use `target="_blank" rel="noopener noreferrer"` with `<span class="sr-only">(opens in new tab)</span>` for accessibility.
- **Tables**: Use `border-collapse: collapse` with Maroon header rows (`background-color: #8C1D40; color: #FFFFFF`) and alternating row shading.
- **Instructor banner**: Every page begins with the Faculty Resources banner (see Step 2).
- **Placeholder markers**: All faculty-customizable fields use `[FACULTY: Customize]` with optional context (e.g., `[FACULTY: Customize — Instructor Name]`).

---

## Integration with Course Build

When invoked by the `course-build` orchestrator:

- **Phase placement**: This skill runs as Phase 6.5, after QA (Phase 6) and before Publish (Phase 7). The Faculty Resources module is created unpublished and remains unpublished during the publish step — it should never be visible to students.
- **Dry-run mode**: In `--dry-run` mode, the skill outputs a summary of the 6 pages that would be created (titles, slugs, content outline) without touching Canvas.
- **Standalone execution**: This skill can also be run independently via `/instructor-guide` at any point after the course structure exists in Canvas.

---

## Output

The skill produces:
1. One unpublished Canvas module ("Faculty Resources") at position 1
2. Six Canvas wiki pages added as module items:
   - Instructor Welcome & Course Overview (`faculty-welcome-overview`)
   - Week-by-Week Teaching Notes (`faculty-teaching-notes`)
   - Announcement Templates (`faculty-announcements`)
   - Communication & Grading Timeline (`faculty-timeline`)
   - Student Support Resource Directory (`faculty-support-resources`)
   - Assessment Overview & Grading Tips (`faculty-assessment-guide`)
3. All pages populated with ASU-branded HTML, instructor-facing banners, and `[FACULTY: Customize]` markers for personalization
