| name | assessment-content-validator |
| description | Reviews and validates assessment items for both technical correctness (QTI/PIE compliance, functionality) and pedagogical quality (appropriate difficulty, clear instructions, realistic scenarios, K-12 appropriateness). Use when creating example items, reviewing test fixtures, debugging broken assessments, or ensuring items are usable and make sense from an educational perspective. |
| allowed-tools | Read, Glob, Grep, Bash |
Assessment Content Validator
This skill combines technical QA with educational assessment expertise to ensure test items are both functional and pedagogically sound.
When to Use This Skill
Invoke this skill when:
- Creating new example assessment items or fixtures
- Reviewing existing QTI/PIE test content
- Debugging items that don't work correctly
- Evaluating whether items make sense from a testing perspective
- Validating QTI XML for spec compliance
- Checking if example items are realistic and appropriate
- Testing transformed content (QTI โ PIE)
- Reviewing item banks or assessment collections
Dual Review Process
This skill performs both technical validation and content quality review:
Technical Validation
- QTI specification compliance for the relevant version
- Well-formed XML structure
- Correct response processing logic
- Proper interaction configuration
- PIE transformation accuracy
- Runtime functionality (does it actually work?)
Content Quality Review
- Pedagogical soundness
- Age-appropriate content
- Clear, unambiguous instructions
- Realistic and engaging scenarios
- Valid educational purpose
- Appropriate difficulty level
Review Dimensions
1. QTI/PIE Technical Compliance
QTI 2.x Specification
Interaction-Specific Requirements
Response Processing
Common Technical Issues to Catch:
<simpleChoice identifier="choice 1">...</simpleChoice>
<simpleChoice identifier="choice_1">...</simpleChoice>
<responseDeclaration identifier="RESPONSE" cardinality="single" baseType="identifier">
<correctResponse>
<value>choice_5</value>
</correctResponse>
</responseDeclaration>
<responseDeclaration cardinality="single">
<correctResponse>
<value>A</value>
<value>B</value>
</correctResponse>
</responseDeclaration>
<textEntryInteraction responseIdentifier="RESPONSE" patternMask="[0-9+" />
<textEntryInteraction responseIdentifier="RESPONSE" patternMask="[0-9]+" />
2. Functional Testing
Does it actually work?
Test each interaction type:
bun run dev:example
3. Pedagogical Quality
Clear Instructions
Example Issues to Catch:
<prompt>Which is the best answer?</prompt>
<prompt>Which equation correctly represents Newton's Second Law?</prompt>
<prompt>Do this problem.</prompt>
<prompt>Solve for x in the equation below. Round to the nearest whole number.</prompt>
Valid Answer Choices
Example Issues to Catch:
<simpleChoice identifier="A">George Washington</simpleChoice>
<simpleChoice identifier="B">Abraham Lincoln</simpleChoice>
<simpleChoice identifier="C">A potato</simpleChoice>
<simpleChoice identifier="D">Theodore Roosevelt</simpleChoice>
<simpleChoice identifier="A">Photosynthesis produces oxygen</simpleChoice>
<simpleChoice identifier="B">Respiration</simpleChoice>
<simpleChoice identifier="C">Making food</simpleChoice>
<simpleChoice identifier="D">The process of cellular metabolism</simpleChoice>
<simpleChoice identifier="A">Photosynthesis</simpleChoice>
<simpleChoice identifier="B">Respiration</simpleChoice>
<simpleChoice identifier="C">Transpiration</simpleChoice>
<simpleChoice identifier="D">Fermentation</simpleChoice>
Appropriate Difficulty
4. Content Quality
Realistic Scenarios
Example Issues to Catch:
<prompt>
A store sells 473,982 apples and 291,847 oranges.
If each fruit costs exactly $3.14159...
</prompt>
<prompt>
A store sells 150 apples and 200 oranges.
If apples cost $1.50 each and oranges cost $2.00 each...
</prompt>
<prompt>
John uses a telephone booth to call his friend.
If a call costs 25 cents for 3 minutes...
</prompt>
<prompt>
Sarah sends a text message to her friend.
If her phone plan includes 1000 messages per month...
</prompt>
Content Appropriateness
Academic Validity
5. K-12 Specific Considerations
Elementary (Grades K-5)
- Simple sentence structure
- Concrete examples over abstract concepts
- Visual support for text-heavy items
- Clear, large fonts
- Generous touch targets (44ร44px minimum)
- Patient pacing (no time pressure)
Middle School (Grades 6-8)
- Age-appropriate contexts (school, family, hobbies)
- Increasing abstraction allowed
- Multi-step problems acceptable
- Some academic vocabulary expected
- Self-directed reading
High School (Grades 9-12)
- Complex scenarios and reasoning
- Academic vocabulary expected
- Multiple representations (text, graphs, tables)
- Real-world applications
- Preparation for college/career contexts
6. Assessment Design Patterns
Good Item Types for Different Purposes
Knowledge Recall:
- Simple choice interaction
- Fill-in-the-blank (textEntry)
- Definition matching
<prompt>What is the capital of France?</prompt>
Conceptual Understanding:
- Scenario-based choice
- Order interaction (sequence steps)
- Match interaction (connect concepts)
<prompt>Match each animal adaptation to the environment where it provides an advantage:</prompt>
Application:
- Text entry with numeric calculation
- Graphic gap match (label diagram)
- Order interaction (organize steps in process)
<prompt>Calculate the area of a rectangle with length 8 cm and width 5 cm.</prompt>
Analysis:
- Multiple response choice (select all that apply)
- Hot spot (identify on image)
- Extended text response
<prompt>Select all statements that are true about the water cycle.</prompt>
7. Common Problems in Example Items
QTI Example Collections Often Have:
-
Overly Simple/Trivial Content
- "What is 2+2?" level questions
- No authentic assessment value
- Only useful for testing interaction mechanics
-
Contrived Scenarios
- Numbers chosen for easy computation, not realism
- Situations that would never occur in real life
- Academic exercises disconnected from application
-
Missing Context
- Questions that assume prior knowledge
- References to content not provided
- Incomplete scenarios
-
Technical Errors
- XML validation failures
- Broken response processing
- Missing identifiers or mismatched references
- Invalid attribute values
-
Unclear Instructions
- Ambiguous wording
- Multiple interpretations possible
- Unclear success criteria
Review Process
When conducting an assessment content review:
-
Technical Check First
- Validate XML structure
- Check QTI spec compliance
- Verify response processing logic
- Test that it actually works
-
Content Review
- Read the item as a student would
- Check clarity of instructions
- Evaluate answer choices
- Consider appropriateness
-
Pedagogical Evaluation
- What is this item measuring?
- Is it a valid measure of that construct?
- Is difficulty appropriate?
- Would a teacher actually use this?
-
Improvement Recommendations
- Specific fixes for technical issues
- Suggestions for content improvements
- Alternative approaches if fundamentally flawed
- Examples of better versions
Output Format
Provide feedback in this structure:
๐ Item Summary
- Item ID: [identifier]
- Interaction Type: [type]
- Intended Grade Level: [if determinable]
- Subject/Topic: [if determinable]
โ
Strengths
- What works well technically
- Good pedagogical choices
- Effective design patterns
๐จ Critical Issues (Must Fix)
For each critical issue:
- Type: Technical / Content / Pedagogical
- Issue: Clear description
- Location: XPath or line reference
- Impact: Why this matters
- Fix: Specific solution
โ ๏ธ Concerns (Should Address)
- Issues that reduce quality but don't break functionality
- Content that could be improved
- Pedagogical weaknesses
๐ก Enhancement Suggestions
- Optional improvements
- Alternative approaches
- Best practice recommendations
๐ Improved Version
If the item has significant issues, provide a corrected version showing:
- Technical fixes applied
- Content improvements
- Why the changes improve the item
Example Review
<assessmentItem identifier="item_1">
<responseDeclaration identifier="RESPONSE" cardinality="single" baseType="identifier">
<correctResponse>
<value>choice_B</value>
</correctResponse>
</responseDeclaration>
<itemBody>
<prompt>What is the answer?</prompt>
<choiceInteraction responseIdentifier="RESPONSE" maxChoices="1">
<simpleChoice identifier="choice A">Yes</simpleChoice>
<simpleChoice identifier="choice_B">No</simpleChoice>
<simpleChoice identifier="choice_C">Maybe</simpleChoice>
</choiceInteraction>
</itemBody>
</assessmentItem>
๐ Item Summary
- Item ID: item_1
- Interaction Type: choiceInteraction (single response)
- Subject/Topic: Unclear
๐จ Critical Issues
1. Technical: Invalid Identifier
- Location: Line 9, first simpleChoice
- Issue: Identifier "choice A" contains a space
- Impact: Will cause parsing errors or undefined behavior
- Fix: Change to "choice_A"
2. Technical: Mismatched Identifier
- Location: responseDeclaration
- Issue: correctResponse references "choice_B" but identifier uses underscore inconsistently
- Impact: While technically valid, inconsistent naming is error-prone
- Fix: Standardize on underscore convention (choice_A, choice_B, choice_C)
3. Content: Vague Prompt
- Issue: "What is the answer?" provides no context or question
- Impact: Impossible for student to know what is being asked
- Fix: Provide actual question with context
4. Pedagogical: Meaningless Choices
- Issue: "Yes/No/Maybe" answer set has no educational content
- Impact: Tests nothing, teaches nothing
- Fix: Create a real question with substantive content
๐ Improved Version
<assessmentItem identifier="photosynthesis_basics">
<responseDeclaration identifier="RESPONSE" cardinality="single" baseType="identifier">
<correctResponse>
<value>choice_B</value>
</correctResponse>
</responseDeclaration>
<itemBody>
<prompt>
During photosynthesis, plants use energy from the sun to produce food.
Which gas do plants ABSORB from the air during this process?
</prompt>
<choiceInteraction responseIdentifier="RESPONSE" maxChoices="1">
<simpleChoice identifier="choice_A">Oxygen (Oโ)</simpleChoice>
<simpleChoice identifier="choice_B">Carbon dioxide (COโ)</simpleChoice>
<simpleChoice identifier="choice_C">Nitrogen (Nโ)</simpleChoice>
<simpleChoice identifier="choice_D">Hydrogen (Hโ)</simpleChoice>
</choiceInteraction>
</itemBody>
</assessmentItem>
Improvements:
- โ
Fixed identifier formatting (no spaces)
- โ
Clear, specific question with context
- โ
Realistic scenario (photosynthesis)
- โ
Grade-appropriate content (middle school)
- โ
Plausible distractors (all are gases)
- โ
Tests understanding of scientific process
- โ
Semantic identifier (photosynthesis_basics)
Tool Usage
- Read: Examine QTI XML files, PIE JSON, test fixtures
- Glob: Find all test items in a directory
- Grep: Search for specific patterns (interaction types, identifiers, response processing)
- Bash: Run tests, validate XML, check for runtime errors
Testing Commands
bun run dev:example
bun --filter @pie-qti/example test:e2e
xmllint --noout --schema qti_v2p2.xsd item.xml
bun --filter @pie-qti/to-pie test
QTI/PIE Knowledge Base
Standard QTI Interaction Types (21 total)
- choiceInteraction - Multiple choice (single or multiple response)
- orderInteraction - Order/sequence items
- associateInteraction - Create associations/pairs
- matchInteraction - Match items from two sets
- gapMatchInteraction - Drag items into gaps in text
- inlineChoiceInteraction - Dropdown within text
- textEntryInteraction - Fill in the blank
- extendedTextInteraction - Essay/long text response
- hottextInteraction - Select text spans
- hotspotInteraction - Click regions on image
- selectPointInteraction - Click specific point on image
- graphicOrderInteraction - Order by clicking image areas
- graphicAssociateInteraction - Associate image areas
- graphicGapMatchInteraction - Drag onto image
- positionObjectInteraction - Position object on image
- sliderInteraction - Slider control
- drawingInteraction - Draw on canvas
- uploadInteraction - Upload file
- mediaInteraction - Video/audio with controls
- customInteraction - Custom/portable interaction
- endAttemptInteraction - Submit/end attempt button
Response Processing Templates
Standard Response Processing Templates:
MATCH_CORRECT - All-or-nothing scoring
MAP_RESPONSE - Partial credit via response mapping
MAP_RESPONSE_POINT - Partial credit for coordinates
- Custom templates via responseProcessing rules
PIE Element Types
PIE extends QTI with modern, JavaScript-based elements:
- More flexible rendering
- Enhanced interactions (draggable equations, graphing)
- Rich authoring capabilities
- JSON-based configuration
Best Practices
- Start with Purpose: What should this item measure?
- Use Realistic Content: Avoid contrived examples
- Test It: Always run through the player to verify
- Think Like a Student: Is it clear what to do?
- Consider Accessibility: Screen readers, keyboard nav, contrast
- Validate Early: Check XML/spec compliance before content review
- Iterative Improvement: Good items are refined over time
References