# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## CF_Zero_V1 Project Overview CF_Zero_V1 is an educational Bash learning platform called "Crumbforest" that uses character-based AI assistants to teach command-line concepts through interactive missions. The project combines shell scripting, Python-based computer vision, and OpenRouter API integration to create an immersive learning experience. ## Key Commands ### Mission System ```bash # Launch the interactive mission selector ./crumb-mission-selector.sh # Run individual missions directly bash missions/basics/fridolin.sh # Navigation basics bash missions/basics/balu.sh # File creation bash missions/basics/noko.sh # File reading bash missions/advanced/dns_mission.sh # DNS tools bash missions/advanced/ssh_security.sh # SSH basics ``` ### AI Character Assistants (Crumbforest Roles) All roles require `OPENROUTER_API_KEY` environment variable: ```bash export OPENROUTER_API_KEY="your-key-here" # Character-based CLI assistants ./crumbforest_roles/deepbit_zero.sh "How do I use grep?" ./crumbforest_roles/bugsy_zero.sh "Explain loops in bash" ./crumbforest_roles/schnippsi_zero.sh "What is curl?" ./crumbforest_roles/tobi_zero.sh "How to use jq?" ``` ### Camera Vision System (SnakeCam) ```bash # Start the Flask-based gesture recognition app cd snake_camera_vision_v2 python app.py # Access at http://localhost:5000 # View gesture detection module python gestures/gestures_v4.py ``` ### Token Usage Monitoring ```bash # View token usage across all AI assistants ./log_tokens_viewer_v4.sh # Clean up malformed token logs ./fix_token_logs.sh # Check individual agent logs cat ~/.deepbit_logs/token_log.json cat ~/.bugsy_logs/token_log.json ``` ## Architecture Overview ### Mission System Architecture **Metadata-Driven Design:** - Each mission consists of two files: `mission_name.sh` (executable) and `mission_name.meta.json` (metadata) - The mission selector (`crumb-mission-selector.sh`) dynamically loads missions by scanning directories - Metadata structure: ```json { "icon": "🦊", "title": "Mission Title", "description": "What this teaches", "category": "basics|advanced|challenges", "enabled": true } ``` **Mission Categories:** - `missions/basics/` - Beginner missions (navigation, file operations) - `missions/advanced/` - Advanced topics (DNS, SSH, networking) - `missions/challenges/` - Interactive challenges (future) ### AI Assistant Architecture **Character-Based Learning Roles:** Each role is a specialized bash script that wraps OpenRouter API calls with distinct personalities: - **Deepbit** (octopus) - Explains Bash concepts poetically to children - **Bugsy** - Debugging and troubleshooting assistant - **Schnippsi** - General shell command helper - **Tobi** - JSON/data processing expert - **Templatus** - HTML architecture assistant **Common Pattern:** 1. Accept question as command-line argument 2. Store conversation history in `~/.{role}_logs/{role}_history.json` 3. Track token usage in `~/.{role}_logs/token_log.json` 4. Use OpenRouter API with `openai/gpt-3.5-turbo` model 5. Respond in the same language as the input question **API Flow:** ```bash Question β†’ JSON Payload β†’ OpenRouter API β†’ Response β†’ Log History β†’ Display ``` **Log Structure:** - Request: `~/.{role}_logs/{role}_request.json` - Response: `~/.{role}_logs/{role}_response.json` - History: `~/.{role}_logs/{role}_history.json` - Token usage: `~/.{role}_logs/token_log.json` ### Camera Vision System (SnakeCam) **Technology Stack:** - Flask web server with MJPEG video streaming - OpenCV for camera capture and image processing - Custom gesture detection using HSV color space and contour analysis **Key Components:** - `app.py` - Flask application with video streaming endpoints - `gestures/gestures_v4.py` - Hand gesture detection algorithm - Detection method: Skin color detection β†’ Contour analysis β†’ Convexity defects β†’ Gesture classification - Current gestures: "wave" detection based on defect count, area, and aspect ratio **Endpoints:** - `/` - Main camera interface - `/video_feed` - MJPEG stream - `/log_answer` - Log user responses with mood and gesture - `/shutdown` - Clean camera release ## Project Structure ``` CF_Zero_V1/ β”œβ”€β”€ crumb-mission-selector.sh # Main mission launcher (metadata-driven) β”œβ”€β”€ missions/ # Educational missions β”‚ β”œβ”€β”€ basics/ # Beginner tutorials β”‚ β”‚ β”œβ”€β”€ fridolin.sh/meta.json # Navigation (pwd, ls, cd) β”‚ β”‚ β”œβ”€β”€ balu.sh/meta.json # File creation (mkdir, touch, echo) β”‚ β”‚ └── noko.sh/meta.json # File reading (cat, grep) β”‚ └── advanced/ # Advanced topics β”‚ β”œβ”€β”€ dns_mission.sh/meta.json # DNS tools (dig, nslookup, host) β”‚ └── ssh_security.sh/meta.json # SSH basics β”œβ”€β”€ crumbforest_roles/ # AI character assistants β”‚ β”œβ”€β”€ deepbit_zero.sh # Poetic Bash explainer β”‚ β”œβ”€β”€ bugsy_zero.sh # Debugging helper β”‚ β”œβ”€β”€ schnippsi_zero.sh # Shell command assistant β”‚ └── tobi_zero.sh # JSON/data expert β”œβ”€β”€ snake_camera_vision_v2/ # Flask gesture recognition app β”‚ β”œβ”€β”€ app.py # Main Flask server β”‚ └── gestures/ # Gesture detection modules β”‚ β”œβ”€β”€ gestures_v4.py # Hand detection algorithm β”‚ └── gestures_debug_test.py # Debug version with visualization β”œβ”€β”€ log_tokens_viewer_v4.sh # Token usage viewer └── fix_token_logs.sh # Clean malformed logs ``` ## Important Implementation Notes ### Adding New Missions 1. Create two files in appropriate category folder: ```bash touch missions/basics/new_mission.sh touch missions/basics/new_mission.meta.json chmod +x missions/basics/new_mission.sh ``` 2. Metadata must include: - `icon`: Emoji for menu display - `title`: Human-readable name - `description`: What the mission teaches - `category`: basics/advanced/challenges - `enabled`: true/false 3. Mission script should: - Use `cat << 'EOF'` for multi-line instructions - Include interactive prompts with `read -p` - Provide examples before asking user to try - End with success message ### Creating New AI Assistants 1. Copy template from existing role (e.g., `deepbit_zero.sh`) 2. Update these variables: - `LOGDIR` - Log directory path - System prompt in `jq -n` command - Character name in echo statements 3. Create log directory structure automatically via `mkdir -p` 4. Initialize empty JSON arrays for history and token logs ### Token Log Format Each role logs API usage in this format: ```json { "zeit": "2025-06-18 19:05:33", "rolle": "deepbit", "usage": { "prompt_tokens": 45, "completion_tokens": 123, "total_tokens": 168 } } ``` ### Gesture Detection Tuning Located in `snake_camera_vision_v2/gestures/gestures_v4.py`: - **HSV Range**: `lower_skin=[0,30,60]`, `upper_skin=[20,150,255]` - **ROI**: Fixed at (100,100) with 150x150 size - **Area Threshold**: 2500-15000 pixels for valid hand detection - **Defect Count**: 3-10 convexity defects for "wave" gesture - **Aspect Ratio**: 1.3-2.3 for hand shape validation ## Environment Requirements ### AI Assistants - `OPENROUTER_API_KEY` must be exported - `jq` for JSON processing - `curl` for API calls ### Camera System - Python 3.x - Flask (`pip install flask`) - OpenCV (`pip install opencv-python`) - Webcam at `/dev/video0` or default camera index 0 ### Mission System - Bash 4.0+ - `jq` for metadata parsing - Standard Unix tools (ls, cat, grep, etc.) ## Philosophy and Design Principles **"WaldwΓ€chter" (Forest Guardian) Philosophy:** - Transparency over magic - Metadata-driven extensibility - Educational and interactive - No code changes required to add new content - Multilingual support (responds in input language) **Character-Based Learning:** - Each AI assistant has distinct personality and teaching style - Poetic and metaphorical explanations for complex concepts - Designed for children and beginners - Conversational history maintained across sessions