Loading...
Loading...
Generate measurable learning outcomes aligned with Bloom's taxonomy and CEFR proficiency levels for educational content. Use when educators need to define what students will achieve, create learning objectives for curriculum planning, or ensure objectives are specific and testable rather than vague.
npx skill4agent add panaversity/agentfactory learning-objectives### Objective Design (Evals-First)
**Source**: Chapter spec at `specs/part-X/chapter-Y/spec.md`
**Success Evals from Spec**:
1. 75%+ write valid specification (business goal: reduce iteration cycles)
2. 80%+ identify vague requirements (business goal: prevent scope creep)
**Learning Objectives Designed to Achieve Evals**:
- LO-001: Write clear specifications → Eval #1
- LO-002: Identify ambiguous requirements → Eval #2LO-001: Implement user authentication (independent skill)LO-001: Implement user authentication working with AI as co-learning partner
- Use AI as Teacher: Learn security patterns from AI suggestions
- Use AI as Student: Refine AI's output through clear specifications
- Use AI as Co-Worker: Iterate toward optimal solution collaboratively
- Validate: Verify AI-generated code meets security requirements- id: "LO-AUTH-001"
statement: "Implement OAuth authentication working with AI as co-learning partner"
blooms_level: "Apply"
cefr_level: "B1"
three_role_integration:
ai_as_teacher: "Learn refresh token rotation pattern from AI suggestion"
ai_as_student: "Guide AI through security requirements via clear spec"
ai_as_coworker: "Iterate on session management approach together"
assessment_method: "Code + reflection: Show implementation AND what you learned from AI"
success_criteria:
- "OAuth implementation works correctly"
- "Student identifies at least one pattern learned from AI"
- "Student demonstrates validation of AI output"python .claude/skills/learning-objectives/scripts/validate-objectives.py objectives.ymltopic: "Topic Name"
objectives:
- id: "LO-001"
statement: "Action verb + what learner will do"
blooms_level: "Remember/Understand/Apply/Analyze/Evaluate/Create"
context: "Specific situation or problem"
prerequisites:
- "Prerequisite 1"
- "Prerequisite 2"
assessment_method: "How this will be assessed"
success_criteria:
- "Criterion 1"
- "Criterion 2"- [ID: LO-001 | Bloom: L3-Apply]
Statement: Implement X in Y context
Evidence: Quiz Q3, Task T2topic: "Python List Comprehensions"
objectives:
- id: "LO-C1-001"
statement: "Define list comprehension and identify its basic syntax"
blooms_level: "Remember"
context: "Introduction to list comprehensions"
prerequisites:
- "Know Python list syntax and indexing"
- "Can write basic for loops"
assessment_method: "Quick quiz: match syntax to purpose"
success_criteria:
- "Can identify list comprehension in code"
- "Can label parts of syntax (brackets, for, if)"
- id: "LO-C1-002"
statement: "Explain how list comprehension replaces for loop patterns"
blooms_level: "Understand"
context: "Comparing traditional loops with comprehensions"
prerequisites:
- "Understand for loop iteration"
assessment_method: "Paraphrase: explain in own words"
success_criteria:
- "Can describe equivalent for loop for any list comprehension"
- "Can explain what's happening step-by-step"
- id: "LO-C1-003"
statement: "Implement list comprehensions to filter and transform data"
blooms_level: "Apply"
context: "Given various data transformation tasks"
prerequisites:
- "Can write list comprehensions with filter conditions"
- "Understand string/number methods"
assessment_method: "Code exercise: write comprehensions for provided requirements"
success_criteria:
- "Code executes without errors"
- "Output matches expected results"
- "Uses list comprehension (not a for loop)"
- id: "LO-C1-004"
statement: "Compare list comprehension with traditional loops by examining efficiency and readability"
blooms_level: "Analyze"
context: "Choosing approaches for data processing"
prerequisites:
- "Implement list comprehensions fluently"
- "Understand basic time complexity"
assessment_method: "Code analysis: compare two implementations"
success_criteria:
- "Identifies efficiency differences (space/time)"
- "Considers readability and maintainability"
- "Justifies when to use each approach"topic: "Object-Oriented Programming Fundamentals"
objectives:
- id: "LO-OOP-001"
statement: "Define class, instance, method, and attribute and distinguish between them"
blooms_level: "Remember"
context: "Introduction to OOP vocabulary"
prerequisites:
- "Understand functions and variables in Python"
assessment_method: "Matching exercise and short definitions"
success_criteria:
- "Can define each term correctly"
- "Can match definitions to examples in code"
- id: "LO-OOP-002"
statement: "Explain how __init__ initializes instances and why self references the current object"
blooms_level: "Understand"
context: "Understanding object instantiation"
prerequisites:
- "Know class definition syntax"
- "Understand function parameters and returns"
assessment_method: "Walkthrough: explain code line-by-line"
success_criteria:
- "Can trace execution of __init__ method"
- "Can explain what self represents"
- id: "LO-OOP-003"
statement: "Design and implement a class with attributes and methods for a specific domain"
blooms_level: "Apply"
context: "Real-world object requirements (e.g., Student, BankAccount, Car)"
prerequisites:
- "Can write class definitions with __init__"
- "Understand instance vs class scope"
assessment_method: "Code exercise: implement class from requirements"
success_criteria:
- "Class correctly models the domain"
- "Attributes store state appropriately"
- "Methods perform expected behaviors"
- "Code follows PEP 8 naming conventions"
- id: "LO-OOP-004"
statement: "Analyze class hierarchies and identify inheritance relationships"
blooms_level: "Analyze"
context: "Understanding code organization and reuse patterns"
prerequisites:
- "Implement basic classes fluently"
- "Understand inheritance syntax"
assessment_method: "Code analysis exercise: identify class relationships"
success_criteria:
- "Identifies parent/child relationships correctly"
- "Explains why inheritance is used"
- "Identifies methods that are overridden"
- id: "LO-OOP-005"
statement: "Evaluate a class design and justify changes for maintainability and extensibility"
blooms_level: "Evaluate"
context: "Code review of existing class structures"
prerequisites:
- "Analyze inheritance patterns"
- "Understand design principles (DRY, SOLID)"
assessment_method: "Design critique: suggest improvements with justification"
success_criteria:
- "Identifies duplication that could be eliminated"
- "Suggests appropriate inheritance changes"
- "Justifies changes based on maintenance concerns"
- id: "LO-OOP-006"
statement: "Design an OOP solution for a complex domain problem"
blooms_level: "Create"
context: "Building a small system with multiple interacting classes"
prerequisites:
- "Master all previous OOP concepts"
- "Can implement and evaluate class designs"
assessment_method: "Create a mini-project with multiple classes"
success_criteria:
- "Solution correctly models the domain"
- "Uses inheritance appropriately"
- "Code is well-organized and reusable"
- "Design decisions are documented and justified"topic: "Agentic AI Fundamentals"
objectives:
- id: "LO-AGENT-001"
statement: "Define autonomous agents, distinguish them from traditional chatbots, and explain key characteristics (goal-seeking, state management, tool use)"
blooms_level: "Understand"
context: "Introduction to agentic AI concepts"
prerequisites:
- "Understand AI basics and language models"
assessment_method: "Short answer or concept mapping"
success_criteria:
- "Can list key differences between agents and chatbots"
- "Can explain goal-directed behavior and autonomy"
- id: "LO-AGENT-002"
statement: "Implement a simple autonomous agent that uses tools to accomplish a specified goal"
blooms_level: "Apply"
context: "Building working agents with Python"
prerequisites:
- "Understand agent architecture and tool-use patterns"
- "Can write Python functions and handle API calls"
assessment_method: "Code exercise: implement agent from requirements"
success_criteria:
- "Agent autonomously reaches its goal"
- "Correctly selects and uses available tools"
- "Handles tool responses and iterates"
- id: "LO-AGENT-003"
statement: "Analyze agent behavior and identify when agents succeed, fail, or enter loops; propose fixes"
blooms_level: "Analyze"
context: "Debugging and improving agent performance"
prerequisites:
- "Can implement basic agents"
- "Understand agent decision-making patterns"
assessment_method: "Debug exercise: analyze agent logs and improve behavior"
success_criteria:
- "Identifies root causes of agent failures"
- "Proposes specific improvements (better prompts, new tools, constraints)"topic: "Model Context Protocol (MCP) Integration"
objectives:
- id: "LO-MCP-001"
statement: "Explain MCP architecture, the role of servers and clients, and how MCP extends model capabilities"
blooms_level: "Understand"
context: "Introduction to MCP concepts"
prerequisites:
- "Understand Python modules and client-server patterns"
assessment_method: "Explanation exercise: describe MCP client-server relationship"
success_criteria:
- "Can explain what MCP servers provide"
- "Can describe the client-server protocol flow"
- id: "LO-MCP-002"
statement: "Install and configure existing MCP servers and integrate them into a Python application"
blooms_level: "Apply"
context: "Using MCP in real applications"
prerequisites:
- "Understand MCP architecture"
- "Can write Python clients and manage dependencies"
assessment_method: "Code exercise: integrate MCP server into working application"
success_criteria:
- "Correctly configures MCP client"
- "Application successfully calls MCP server tools"
- "Responses are properly handled and integrated"
- id: "LO-MCP-003"
statement: "Design and implement a custom MCP server that provides tools for a specific domain"
blooms_level: "Create"
context: "Building reusable MCP tools"
prerequisites:
- "Can integrate existing MCP servers"
- "Understand server-side architecture and tool definitions"
assessment_method: "Project: implement MCP server with documentation"
success_criteria:
- "Server correctly implements MCP protocol"
- "Tools are well-defined with clear descriptions"
- "Client can successfully call server tools"
- "Code is documented and maintainable"