Skip to content

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

  1. Complete exercises in order -- they build on each other.
  2. Check your output against the "Expected Output" section.
  3. If stuck, refer to the linked notebook or guidebook chapter.
  4. 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.


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

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