---
name: rubric-creator
description: "Generate analytic rubrics for Canvas assessments."
---

# Rubric Creation Skill

> **HPI/ID standard** — this skill applies the HPI/ID practitioner standard automatically (CLAUDE.md §Operating Standard: HPI/ID Practitioner). Ground decisions in `standards/instructional-design.md` — design sections 1–12 and the HPI diagnostic layer in Section 13. Name the framework behind every judgment; every design recommendation carries gap → data → principle → mechanism.

> **Assurance by design.** This skill applies `standards/assessment-assurance-design.md` automatically (CLAUDE.md §Operating Standard: Assurance by Design). When the assessment is AI-forward, add criteria that reward process, authorship, and judgment about AI, paired with TILT model criteria.


> **Plugin**: ASU Canvas Course Builder
> **Referenced by**: assignment-generator, discussion-generator
> **Standalone**: Yes — can be invoked directly with `/rubric-creator`

## Purpose
Generate assessment rubrics for assignments and discussions. Rubrics are required for all graded assignments and discussions per ASU Canvas standards. They serve to:
- Communicate clear expectations before students begin work
- Ensure consistent, fair grading
- Provide structured feedback that references specific criteria
- Align assessment directly to module learning objectives

## Required Script: create_rubric_gated.py

All rubric writes MUST go through `scripts/create_rubric_gated.py`. Do NOT call
`create_rubric` or `associate_rubric` directly from the skill or from inline code --
the gated script is the only authorized write entry point.

Basic usage:
```
python3 scripts/create_rubric_gated.py rubric-spec.json \
  --confirm-verb push \
  --assignment-id 12345
```
Replace an existing rubric (delete+recreate+re-associate):
```
python3 scripts/create_rubric_gated.py rubric-spec.json \
  --replace 67890 --confirm-verb deploy
```
Preview only (no Canvas write):
```
python3 scripts/create_rubric_gated.py rubric-spec.json --dry-run
```

The script stages an HTML preview to `courses/{id}/staging/rubrics/{slug}.html`,
starts the staging server (idempotent), and prints the canonical
`http://127.0.0.1:8111/courses/{id}/preview/rubrics/{slug}` URL. It then requires
`--confirm-verb {push,approved,deploy}` before any Canvas write. Ambiguous verbs
(`ok`/`yes`/`confirm`) are rejected.

## Verified Canvas-API Facts (do not re-litigate)

These were confirmed live against canvas.asu.edu (course 256173, 2026-06-15) and
are encoded in `create_rubric_gated.py` and `canvas_api.update_rubric`:

1. **Rating long_description is dropped by Canvas on write.** Sending
   `long_description` on a rating returns HTTP 200 but stores "". The cell text
   MUST go in the rating `description` field. Never rely on `long_description`.
2. **Criteria edits on an already-associated rubric do not persist.** `PUT
   /courses/:id/rubrics/:id` returns 200 and echoes the payload, but a fresh GET
   shows the original. To change criteria, use `--replace <id>` which invokes
   `update_rubric` (delete+recreate+re-associate).
3. **Equal-point ratings render alphabetically.** Canvas sorts ratings by points
   descending; ties sort alphabetically. Use descending points for column order.
   The script assigns them automatically.

## Staging-Server Preview (Write Safety Guard)

The `create_rubric_gated.py` script enforces the full gate automatically:
1. Stages an HTML rubric preview table to `courses/{id}/staging/rubrics/{slug}.html`.
2. Runs `ensure_staging_server.py` (idempotent).
3. Prints `http://127.0.0.1:8111/courses/{id}/preview/rubrics/{slug}` on its own line.
4. Requires `--confirm-verb {push,approved,deploy}` (rejects `ok`/`yes`/`confirm`).
5. Creates or updates the rubric in Canvas only after the confirm verb is present.
6. Clears the staged preview on success.

## Modes of Operation

### Integrated Mode (default)
Used when invoked by `assignment-generator` or `discussion-generator` during course building. All required inputs come from the calling skill and `course-config.json`. The intra-module alignment check runs automatically.

### Standalone Mode
Use `/rubric-creator` directly to generate a rubric for any assessment — even one not yet defined in a course blueprint. In standalone mode, the skill will ask for the required inputs interactively:

1. **What is being assessed?** — Assessment title and brief description of the task
2. **Assessment type?** — Assignment, Discussion, Presentation, Portfolio, or Other
3. **Total points?** — How many points the rubric should sum to
4. **How many criteria?** — 3-5 criteria (default: 3)
5. **Discipline context?** — The academic field (for terminology and rubric language)
6. **What does success look like?** — Brief description of exemplary work (helps calibrate the Exemplary level)

If `course-config.json` is not present, the following fields are optional and should be omitted without blocking rubric generation:
- Objective mappings (`CLO`/`MLO` IDs or module objectives)
- Blueprint data such as module number, assessment matrix references, and course tier metadata

Graceful degradation when no `course-config.json` is present:
- Skip the intra-module alignment check and label objective mapping as `Not provided`
- Use the user-supplied task description plus discipline context to derive criteria
- Default to tier-neutral descriptor language unless the user supplies a course level/tier
- Omit module-specific metadata from the rubric header if unavailable rather than inventing it

## Required Inputs

| Input | Source | Standalone |
|---|---|---|
| Assessment title | The assessment being rubric'd | Asked interactively |
| Assessment type | Assignment, Discussion, Presentation, Portfolio, or Other | Asked interactively |
| Total points | From course blueprint | Asked interactively |
| Module number and objectives | Course blueprint | Optional (skipped if unavailable) |
| Specific task description | What students are creating/doing | Asked interactively |
| Discipline context | For criterion examples | Asked interactively |

## ASU Canvas Rubric Standards
- **Type**: Analytic rubrics (not holistic)
- **Criteria**: 3-5 criteria per rubric
- **Performance levels**: 4 levels (Exemplary, Proficient, Developing, Beginning)
- **Points**: Criteria points must sum to the assignment total
- **Descriptors**: Each cell must contain specific, observable descriptions (not vague)
- **Attached to**: Every Assignment and graded Discussion in Canvas

## Rubric Structure

### Performance Level Definitions
| Level | Score Range | General Description |
|---|---|---|
| **Exemplary** | 90-100% of criterion points | Completes all required elements accurately, supports claims with relevant evidence or examples, and extends the task through justified analysis, synthesis, or application appropriate to the course tier |
| **Proficient** | 75-89% of criterion points | Completes the required elements accurately, supports the main claims with relevant evidence or examples, and meets the stated objective at the expected course tier |
| **Developing** | 50-74% of criterion points | Addresses part of the task, but evidence, accuracy, completeness, or reasoning is inconsistent enough that the objective is only partially met |
| **Beginning** | 0-49% of criterion points | Omits required elements, relies on unsupported or inaccurate claims, or provides too little observable work to show the objective has been met |

### Criterion Categories

**For Assignments (Create an Artifact):**
1. **Conceptual Accuracy** — Correctness of key concepts, terminology, relationships
2. **Applied Reasoning** — Quality of connections between concepts and professional/clinical scenarios
3. **Analytical Depth** — Level of reasoning, cause-effect logic, systems thinking
4. **Communication** — Clarity, organization, use of proper discipline-specific terminology
5. **Completeness** — Addresses all required components of the assignment

**For Discussions:**
1. **Initial Post Quality** — Depth of response, evidence of critical thinking, use of course concepts
2. **Professional/Scientific Reasoning** — Application of disciplinary principles to the discussion prompt
3. **Peer Engagement** — Quality of responses to classmates (not just "I agree")
4. **Evidence Integration** — Use of course materials, resources, or outside sources
5. **Professionalism** — Writing quality, respectful tone, appropriate language

## Rubric Design Principles

### 1. Backward Design Alignment
Every criterion must trace back to a specific module learning objective:
- Start with the objective → What does "meeting this objective" look like?
- Exemplary = exceeds the objective (deeper insight, novel connections)
- Proficient = meets the objective as stated
- Developing = partially meets (correct direction but incomplete)
- Beginning = does not meet (fundamental misunderstanding or missing)

### 2. Observable & Measurable Descriptors
Each cell must describe **what the evaluator can see**, not internal states:
- ❌ "Student understands the concept well"
- ✅ "Student correctly identifies all components of the [process/system] and explains the role of each with a specific example"

### 3. Graduated Differentiation
Each level should clearly differ from adjacent levels:
- Exemplary vs. Proficient: depth, insight, connections
- Proficient vs. Developing: accuracy, completeness
- Developing vs. Beginning: presence of attempt, partial vs. absent

### 4. Discipline-Appropriate Values
Rubrics should value:
- Analytical reasoning and application over memorization
- Mechanistic explanation (cause → effect chains)
- Integration across topics (connecting to prior modules)
- Professional communication skills

**For health sciences courses**, additionally value:
- Clinical reasoning and pathophysiological tracing
- Patient-centered thinking
- Evidence-based reasoning

### 5. Assurance by Design
When the assignment is AI-forward, apply `standards/assessment-assurance-design.md`: add criteria that reward process, authorship, and judgment about AI, not just output polish. Pair any verify-the-AI criterion with model-example criteria (TILT) so students see the target before they are graded on it. Run the by-design self-check before returning the rubric.

## Tier-Aware Descriptor Calibration

Before writing rubric descriptors, read `course.tier` from `course-config.json`. The tier shifts what each performance level expects. See `standards/assessment-best-practices.md` → "Rubric Calibration by Tier" for the full reference.

**If tier is empty/missing**: Fall back to tier-neutral language (current defaults). No breakage.

| Level | Introductory (100-299) | Advanced (300-499) | Graduate (500+) |
|---|---|---|---|
| **Exemplary** | Produces complete, accurate application of course concepts, supports each major claim with examples or evidence, and connects the work to relevant module concepts using precise terminology. | Produces novel, evidence-based analysis, compares multiple perspectives, variables, or cases, and justifies a defensible conclusion with cross-module or contextual connections. | Produces scholarly synthesis across competing frameworks, cites evidence to justify the selected interpretation or recommendation, demonstrates expert judgment, and situates the conclusion within disciplinary debates. |
| **Proficient** | Applies concepts correctly, addresses the required components, and supports the response with relevant examples or evidence. | Uses evidence-based reasoning to analyze the issue, addresses multiple perspectives or variables, and reaches a defensible conclusion tied to the prompt. | Analyzes the issue with scholarly or professional rigor, engages multiple frameworks or evidence sources, and reaches defensible conclusions supported by cited evidence. |
| **Developing** | Attempts application but has gaps. Some concepts correct but incomplete. | Attempts analysis but reasoning is surface-level or relies on single perspective. | Analysis present but descriptive rather than evaluative. Relies on a single framework without interrogating its assumptions. Limited synthesis. |
| **Beginning** | Minimal attempt. Key concepts missing or described incorrectly. Specific remediation: "Review [content section]." | Fails to engage analytically. Descriptive rather than analytical. Points to foundational concepts that need strengthening. | Fails to engage at the scholarly or professional level expected. Restates course content without analysis. Recommend reviewing core theoretical foundations before resubmitting. |

When writing descriptors, use this table to calibrate the language. Introductory Exemplary describes thorough *application*; Advanced Exemplary describes *evidence-based multi-perspective analysis*; Graduate Exemplary describes *scholarly or professional synthesis across competing frameworks*. The Beginning level shifts from content remediation (Introductory) → analytical gap identification (Advanced) → scholarly engagement expectation (Graduate).

---

## How to Generate a Rubric

### Step 1: Identify Assignment Parameters
- Assignment type (Assignment or Discussion)
- Total points
- Module number and learning objectives
- Specific task description (what students are creating/doing)

### Step 2: Select 3-5 Criteria
Based on the assignment type and objectives:
- Map each criterion to 1-2 learning objectives
- Ensure criteria don't overlap significantly
- Distribute points based on relative importance
- Weight conceptual accuracy and applied reasoning highest

### Step 3: Write Descriptors
Before writing, read `course.tier` from `course-config.json`. Calibrate language using the Tier-Aware Descriptor Calibration table above.

For each criterion × level cell:
1. Write the **Proficient** level first (this IS the expectation — tier determines whether "meeting expectations" means accurate application or analytical reasoning)
2. Write **Exemplary** by asking "what would exceed this?" (Introductory: thorough application with clear examples; Advanced: evidence-based analysis across multiple perspectives or variables; Graduate: scholarly synthesis, evidence-based argumentation, and engagement with competing frameworks)
3. Write **Developing** by asking "what would partially meet this?"
4. Write **Beginning** by asking "what would fundamentally miss this?" (Introductory: include specific remediation pointers to content sections; Advanced: identify the analytical gap; Graduate: name the missing scholarly synthesis, evidence use, or framework engagement)

### Step 4: Format for Canvas
Output in this format:

```
## Rubric: [Assignment/Discussion Name]
**Total Points**: [X]
**Module**: [#] — [Title]
**Objectives Assessed**: [List]

| Criterion | Exemplary ([X] pts) | Proficient ([X] pts) | Developing ([X] pts) | Beginning ([X] pts) |
|---|---|---|---|---|
| **[Criterion 1]** ([X] pts) | [Description] | [Description] | [Description] | [Description] |
| **[Criterion 2]** ([X] pts) | [Description] | [Description] | [Description] | [Description] |
| **[Criterion 3]** ([X] pts) | [Description] | [Description] | [Description] | [Description] |
```

**Note:** The templates below show tier-neutral language. When generating rubrics for a specific course, adjust descriptor language per the Tier-Aware Descriptor Calibration table based on `course.tier`.

## Template: Assignment Rubric (30 points)

```
| Criterion | Exemplary (9-10 pts) | Proficient (7-8 pts) | Developing (5-6 pts) | Beginning (0-4 pts) |
|---|---|---|---|---|
| **Conceptual Accuracy** (10 pts) | Defines and applies all key concepts correctly, uses discipline-specific terminology precisely, and distinguishes closely related concepts or boundary cases with supporting examples. | Defines and applies the major concepts correctly, uses appropriate terminology, and supports the response with relevant examples or evidence. | Identifies some relevant concepts correctly, but at least one major concept is incomplete, unsupported, or used inaccurately. | Omits key concepts or uses them incorrectly enough that the response cannot support the assignment task. |
| **Applied Reasoning** (10 pts) | Applies concepts to the scenario, traces the causal or analytical chain with supporting evidence, and addresses alternative explanations, constraints, or implications appropriate to the tier. | Applies the relevant concepts to the scenario, explains the main causal or analytical chain, and supports the conclusion with course-based evidence or examples. | Attempts to apply concepts to the scenario, but the explanation skips key steps, leaves claims unsupported, or stops before the main implication is established. | Restates facts without applying them to the scenario, or provides an explanation that conflicts with the core concepts needed for the task. |
| **Analytical Depth & Communication** (10 pts) | Organizes the response around a clear claim, supports each major point with evidence or examples, and integrates relevant connections across modules, perspectives, or frameworks appropriate to the tier. | Presents a clear claim, follows a logical structure, and supports the main points with relevant terminology, evidence, or examples. | Includes a claim or structure, but support is uneven, terminology is inconsistently applied, or the analysis remains mostly descriptive. | Lacks a clear claim, supporting evidence, or workable organization, so the evaluator cannot follow the reasoning. |
```

## Template: Discussion Rubric (25 points)

```
| Criterion | Exemplary (9-10 pts) | Proficient (7-8 pts) | Developing (5-6 pts) | Beginning (0-4 pts) |
|---|---|---|---|---|
| **Initial Post: Reasoning Quality** (10 pts) | Responds directly to the prompt, applies course concepts with a fully explained reasoning chain, supports claims with evidence or examples, and connects the issue to relevant practice, prior modules, or competing interpretations appropriate to the tier. | Responds directly to the prompt, applies the relevant concepts correctly, and supports the main claim with course-based reasoning or examples. | Addresses the prompt, but the post relies on summary, unsupported claims, or an incomplete reasoning chain. | Does not answer the prompt in a meaningful way, or includes misconceptions that prevent a defensible response. |
| **Peer Responses: Critical Engagement** (10 pts) | Responses to peers advance the discussion substantively. Adds new perspectives, asks probing questions, or respectfully challenges reasoning with evidence. | Responses to peers engage meaningfully with their ideas. Asks relevant questions or adds supporting information. | Responses to peers are brief or superficial. Limited engagement with peers' reasoning. | No peer responses, or responses are off-topic/do not engage with peers' content. |
| **Evidence & Communication** (5 pts) | Cites specific course materials or outside sources when appropriate, uses discipline-specific terminology accurately, and maintains a professional tone that supports the argument or critique. | References relevant course materials or examples, uses appropriate terminology, and communicates in a professional tone. | Mentions limited supporting material, uses terminology inconsistently, or leaves parts of the response too underdeveloped to support the claim fully. | Provides no relevant support, misuses key terminology, or communicates so imprecisely that the intended claim cannot be evaluated reliably. |
```

## Intra-Module Alignment Check

Before generating a rubric, verify it aligns with the assessment it serves and the broader module assessment suite:

1. **Reference the syllabus** (`syllabus-generator/SKILL.md`) for this module's objectives and the Assessment-to-Objective Alignment Matrix
2. **Match rubric criteria to assessed objectives**: Each rubric criterion should map to 1-2 specific module objectives. Document this mapping
3. **Verify Bloom's level in descriptors**: The Exemplary level should describe work at or above the target Bloom's level for the assessment type (KC = Apply, Artifact = Analyze/Evaluate, Discussion = Evaluate/Create)
4. **Check complementarity with other module rubrics**: If the module has both an Artifact rubric and a Discussion rubric, ensure criteria don't overlap heavily — each should evaluate different dimensions of learning
5. **Document alignment** in the output: include a criterion-to-objective mapping table

## Output
The skill produces:
1. Complete analytic rubric formatted for Canvas
2. Criterion-to-objective alignment map (using blueprint objective IDs)
3. Point distribution rationale
4. Canvas setup instructions (how to attach rubric to assignment)
