Student Workbook¶
Hands-on exercises organized by week, designed to accompany the 12-week curriculum. Each exercise builds on previous work and includes expected outputs for self-checking.
How to Use This Workbook¶
- Complete exercises in order -- they build on each other.
- Check your output against the "Expected Output" section.
- If stuck, refer to the linked notebook or guidebook chapter.
- Save your work in a personal Git branch for portfolio building.
Week 1 Exercises: Installation and First Steps¶
Exercise 1.1: Environment Setup¶
Objective: Install FCC and verify all components.
git clone https://github.com/rollingthunderfourtytwo-afk/l2_fcc_agent_team_ext.git
cd l2_fcc_agent_team_ext
make venv && source .venv/bin/activate
make install-dev
make test
Expected Output: All tests pass (12,100+ tests, 99%+ coverage).
Exercise 1.2: First Persona Query¶
Objective: Load the persona registry and print category counts.
from fcc.personas.registry import PersonaRegistry
registry = PersonaRegistry.from_package_data()
print(f"Total personas: {len(registry.all())}")
for cat in sorted(registry.categories()):
personas = registry.by_category(cat)
print(f" {cat}: {len(personas)}")
Expected Output: 102 total personas across 20 categories.
Exercise 1.3: Inspect Your First Persona¶
Objective: Print all R.I.S.C.E.A.R. fields for the research_catalyst.
Write a script that loads the persona and prints each R.I.S.C.E.A.R. component on its own line. Refer to SAMPLE_PROMPTS.md prompt B2 if needed.
Deliverable: Python script saved as exercises/week1/inspect_persona.py.
Week 2 Exercises: Simulations and Traces¶
Exercise 2.1: Run a Mock Simulation¶
Objective: Run basic_fcc_cycle and print the trace.
from fcc.personas.registry import PersonaRegistry
from fcc.simulation.engine import SimulationEngine
from fcc.scenarios.loader import ScenarioLoader
registry = PersonaRegistry.from_package_data()
scenarios = ScenarioLoader.from_package_data()
scenario = scenarios.get("basic_fcc_cycle")
engine = SimulationEngine(registry=registry, mode="mock")
trace = engine.run(scenario)
for step in trace.steps:
print(f"[{step.phase}] {step.persona_id}: {step.summary[:60]}")
Exercise 2.2: Compare Two Scenarios¶
Objective: Run two different scenarios and compare step counts, personas used, and phases covered.
Deliverable: A comparison table printed to the console.
Exercise 2.3: Trace Analysis¶
Objective: Write a function that takes a trace and returns: - Total steps per phase - Unique personas used - Average summary length
Deliverable: Python script saved as exercises/week2/trace_analysis.py.
Week 3-4 Exercises: Personas and Dimensions¶
Exercise 3.1: Category Deep Dive¶
Objective: Choose a category (e.g., ml_lifecycle) and create a summary
table of all personas in that category, including their role, archetype, and
number of skills.
Exercise 3.2: Dimension Profile Comparison¶
Objective: Load dimension profiles for 3 personas from different categories. Create a table comparing their top 5 dimensions.
Exercise 3.3: Champion Analysis¶
Objective: List all champions and for each, list the personas they orchestrate. Calculate the "span of control" (number of orchestrated personas) for each champion.
Exercise 4.1: Design Your Own Persona¶
Objective: Design a new persona with a complete R.I.S.C.E.A.R. specification. Choose a domain you are familiar with (e.g., "Technical Writer", "UX Researcher", "DevOps Engineer").
Requirements: - All 10 R.I.S.C.E.A.R. fields populated - At least 5 responsibilities - At least 3 skills - At least 3 collaborators with relationship types - An adoption checklist with at least 5 items
Deliverable: YAML file saved as exercises/week4/my_persona.yaml.
Week 5-6 Exercises: Workflows and Actions¶
Exercise 5.1: Graph Exploration¶
Objective: Load all 7 workflow graphs and create a comparison table:
| Graph | Nodes | Edges | Phases | Has Loops? |
|---|---|---|---|---|
Exercise 5.2: Action Inventory¶
Objective: Count actions by type and find the type with the most actions. List 3 actions from each type with their IDs and descriptions.
Exercise 6.1: Custom Workflow¶
Objective: Design a workflow graph for your persona from Exercise 4.1. Requirements: - At least 6 nodes - At least 1 feedback loop - All 3 FCC phases represented
Deliverable: JSON graph definition saved as exercises/week6/my_workflow.json.
Exercise 6.2: Action Execution¶
Objective: Execute 3 different action types through the action engine. Record the status, duration, and output length for each.
Week 7-8 Exercises: Events and Collaboration¶
Exercise 7.1: Event Bus Basics¶
Objective: Create an event bus, subscribe to 3 different event types, and publish events to trigger each subscriber. Count total events received.
Exercise 7.2: Event Filter¶
Objective: Set up an event filter that only passes events with a specific source pattern. Verify that non-matching events are filtered out.
Exercise 7.3: Event Serialization Round-Trip¶
Objective: Serialize 5 events to JSON, save to a file, reload, deserialize, and verify they match the originals.
Exercise 8.1: Collaboration Session¶
Objective: Create a collaboration session with 3 personas, add 5 turns, and score the session. Track progress to completion.
Exercise 8.2: Approval Gate¶
Objective: Set up a collaboration session with an approval gate at 0.8 threshold. Add turns until the gate passes or fails. Document the outcome.
Week 9-10 Exercises: Governance and Plugins¶
Exercise 9.1: Constitution Audit¶
Objective: For 5 personas, look up their constitutions and count hard-stop, mandatory, and preferred rules. Which persona has the most hard-stop rules?
Exercise 9.2: Quality Gate Check¶
Objective: Run quality gate checks for your custom persona from Week 4. Document any gates that fail and explain why.
Exercise 10.1: Build a Plugin¶
Objective: Build a custom scorer plugin that evaluates deliverables based on word count, keyword presence, and structure (headings, lists).
Requirements: - Implement the PluginBase interface - Register with the plugin registry - Return a score dictionary with at least 3 metrics - Include 3 unit tests
Deliverable: Plugin code saved as exercises/week10/my_plugin.py.
Exercise 10.2: Plugin + Event Integration¶
Objective: Extend your plugin from Exercise 10.1 to emit events when scoring starts and completes. Subscribe to these events and log them.
Week 11 Exercises: Knowledge and Search¶
Exercise 11.1: Build a Knowledge Graph¶
Objective: Build a knowledge graph using build_full_fcc_graph(). Query
it to find:
- Total nodes and edges
- Nodes by type
- All edges connected to your custom persona
Exercise 11.2: Semantic Search¶
Objective: Build a persona search index and run 5 different queries. For each query, document the top 3 results and explain why they are relevant.
Exercise 11.3: RAG Pipeline¶
Objective: Set up a RAG pipeline, index 5 documents about your domain, and run 3 queries. Evaluate the quality of retrieved chunks.
Week 12 Exercises: Capstone¶
Exercise 12.1: Integration Plan¶
Objective: Write a 1-page plan for your capstone project. List the components you will integrate and how they connect.
Exercise 12.2: Capstone Implementation¶
Objective: Implement your capstone project following the requirements in curriculum-12-week.md, Week 12.
Exercise 12.3: Presentation Preparation¶
Objective: Prepare a 15-minute presentation covering: 1. Problem statement and domain choice 2. Persona design decisions 3. Workflow architecture 4. Live demo of your deployment 5. Lessons learned
Exercise Submission Checklist¶
For each week, verify:
- All exercise scripts run without errors
- Expected outputs match (within reason)
- Code follows FCC conventions
- Deliverables are saved in the correct location
- Git commit with descriptive message
Related Resources¶
- Assessment Strategies -- Grading rubrics
- 12-Week Curriculum -- Course schedule
- SAMPLE_PROMPTS.md -- Additional code examples
- GETTING_STARTED.md -- Installation reference