project-overview
Get overview of the Babylon.js first-person game project structure, statistics, and health metrics. Use when the user asks about project structure, codebase stats, file counts, or wants a project summary.
When & Why to Use This Skill
This Claude skill serves as a comprehensive project diagnostics and reporting engine specifically tailored for Babylon.js game development. It automates the retrieval of critical project metrics, including codebase statistics, TypeScript health checks, dependency audits, and architectural overviews. By providing real-time insights into TODOs, git activity, and build configurations, it helps developers maintain high code quality and streamline project management workflows.
Use Cases
- Project Onboarding: Quickly generate a high-level overview of the directory structure, core systems, and UI components for new team members.
- Technical Debt Tracking: Automatically scan the codebase for TODO and FIXME comments to prioritize refactoring and bug fixes.
- Health & Compliance Audits: Run instant TypeScript compilation checks and validate JSON data files to ensure project stability before deployment.
- Dependency Management: Monitor Babylon.js versions and audit npm packages to identify outdated or missing dependencies.
- Progress Monitoring: Track development velocity by analyzing recent git commits and file modification history over the last seven days.
| name | Project Overview |
|---|---|
| description | Get overview of the Babylon.js first-person game project structure, statistics, and health metrics. Use when the user asks about project structure, codebase stats, file counts, or wants a project summary. |
Project Overview
Quick overview and statistics for the babylon_fp project.
Quick Stats
Line count by file type
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp
echo "TypeScript files:"
find src -name "*.ts" -exec wc -l {} + | tail -1
echo -e "\nHTML files:"
find tools -name "*.html" -exec wc -l {} + | tail -1
echo -e "\nJSON data files:"
find public/data -name "*.json" -exec wc -l {} + | tail -1
echo -e "\nTest files:"
find tests -name "*.test.ts" -exec wc -l {} + | tail -1
File counts
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp
echo "Source files: $(find src -name '*.ts' | wc -l)"
echo "Test files: $(find tests -name '*.test.ts' | wc -l)"
echo "Config files: $(find . -maxdepth 1 -name '*.json' -o -name '*.config.*' | wc -l)"
echo "Tools: $(find tools -name '*.html' | wc -l)"
echo "Data files: $(find public/data -name '*.json' | wc -l)"
Project Structure
Main directories
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp
tree -L 2 -d src/
List key systems
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp
echo "=== Core Systems ==="
ls -1 src/systems/*.ts | sed 's/.*\///' | sed 's/.ts$//'
echo -e "\n=== Controllers ==="
ls -1 src/controllers/*.ts 2>/dev/null | sed 's/.*\///' | sed 's/.ts$//' || echo "None"
echo -e "\n=== UI Components ==="
ls -1 src/ui/*.ts 2>/dev/null | sed 's/.*\///' | sed 's/.ts$//' || echo "None"
Code Health
TypeScript compilation check
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp
npx tsc --noEmit 2>&1 | head -20
Find TODO/FIXME comments
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp
echo "=== TODOs ==="
grep -r "TODO" src/ --include="*.ts" | wc -l
echo "=== FIXMEs ==="
grep -r "FIXME" src/ --include="*.ts" | wc -l
List TODO items
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp
echo "=== TODO List ==="
grep -rn "TODO" src/ --include="*.ts" | head -10
Dependencies
Show installed packages
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp
echo "=== Main Dependencies ==="
node -e "console.log(Object.keys(require('./package.json').dependencies || {}).join('\n'))"
echo -e "\n=== Dev Dependencies ==="
node -e "console.log(Object.keys(require('./package.json').devDependencies || {}).join('\n'))"
Check for outdated packages
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp
npm outdated
Check Babylon.js version
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp
npm list @babylonjs/core
Data Overview
Map data summary
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp
echo "=== Map Data ==="
for map in public/data/maps/*.json; do
echo "$(basename $map): $(wc -l < $map) lines"
done
NPC data summary
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp
echo "=== NPC Data ==="
echo "NPCs: $(ls -1 public/data/npcs/*.json 2>/dev/null | wc -l)"
for npc in public/data/npcs/*.json; do
echo " - $(basename $npc .json)"
done
Event & Investigation data
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp
echo "Events: $(ls -1 public/data/events/*.json 2>/dev/null | wc -l)"
echo "Investigations: $(ls -1 public/data/investigations/*.json 2>/dev/null | wc -l)"
Tools Overview
List available tools
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp
echo "=== Editor Tools ==="
for tool in tools/*.html; do
NAME=$(grep -o '<title>.*</title>' "$tool" | sed 's/<title>\(.*\)<\/title>/\1/' | head -1)
echo " - $(basename $tool): $NAME"
done
Recent Activity
Recent file changes (git)
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp
echo "=== Recent Commits ==="
git log --oneline -10 2>/dev/null || echo "Not a git repository or no commits"
Recently modified files
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp
echo "=== Recently Modified (last 7 days) ==="
find src tests -name "*.ts" -mtime -7 -exec ls -lh {} \; | awk '{print $6, $7, $8, $9}'
Build Info
Check build configuration
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp
echo "=== Vite Config ==="
ls -lh vite.config.ts
echo -e "\n=== TypeScript Config ==="
ls -lh tsconfig.json
Check dist folder
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp
if [ -d "dist" ]; then
echo "Build output size: $(du -sh dist | cut -f1)"
echo "Files in dist: $(find dist -type f | wc -l)"
else
echo "No dist folder (run 'npm run build')"
fi
Quick Health Check
Run a comprehensive health check:
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp
echo "=== Babylon FP Project Health Check ==="
echo -e "\n1. TypeScript Compilation:"
npx tsc --noEmit && echo "✓ No errors" || echo "✗ Has errors"
echo -e "\n2. Dependencies:"
npm list --depth=0 > /dev/null 2>&1 && echo "✓ All installed" || echo "✗ Missing dependencies"
echo -e "\n3. Tests:"
npm test > /dev/null 2>&1 && echo "✓ All passing" || echo "✗ Some failing"
echo -e "\n4. Data Files:"
for f in public/data/**/*.json; do node -e "JSON.parse(require('fs').readFileSync('$f'))" 2>/dev/null || echo "✗ Invalid: $f"; done | grep -q "Invalid" && echo "✗ Invalid JSON found" || echo "✓ All valid"
Recent Features & Enhancements
Game Systems
Pause System: Press 'P' to pause/resume game
- Freezes all movement, camera control, and time progression
- Exits pointer lock to show cursor
- Visual pause indicator in HUD
- Implemented in:
src/Game.ts,src/controllers/firstPersonController.ts,src/systems/dayNightCycle.ts
Enhanced Map Editor (
tools/map-editor.html):- NPC Type Modal: On-demand dropdown for selecting NPC types (no always-visible UI clutter)
- Auto Schedule Editor: Opens automatically when NPC selected/placed, closes when done
- Editable Waypoint Times: Click time fields in schedule list to edit directly
- Import/Export: Full map JSON import functionality with schedule preservation
- Click-and-Drag Painting: Paint multiple wall/floor/window tiles by dragging
- Select Tool: Click NPCs to edit schedules, default tool on load
- Default Player Spawn: Auto-creates center spawn on new maps
- Schedule Validation: Ensures waypoint times are sequential
Editor Workflow Improvements
- NPC type selector only appears when placing NPCs (cleaner UI)
- Schedule editor context-aware (shows NPC name, emoji, position)
- Save & Close button for schedule editor (returns to select tool)
- JSON import reconstructs grid positions, rotations, and full NPC schedules
- Drag painting works with zoom and pan, detects grid changes smartly
Code Organization
- Modular functions:
openScheduleEditor(),closeScheduleEditor(),placeTile() - Separated paintable tools (wall/floor/window) from special tools (door/spawn)
- Helper functions for time conversion:
timeStringToMinutes(),minutesToTimeString()
Project Summary
Generate a complete summary:
cd /home/gianfiorenzo/Documents/Vs\ Code/babylon_fp
echo "=== Babylon FP - First Person Game ==="
echo "Babylon.js Version: $(npm list @babylonjs/core | grep @babylonjs/core | awk '{print $2}')"
echo "Source Files: $(find src -name '*.ts' | wc -l) TypeScript files"
echo "Test Files: $(find tests -name '*.test.ts' | wc -l) test files"
echo "Total Lines: $(find src -name '*.ts' -exec cat {} + | wc -l) lines of code"
echo "Tools: Map Editor (2000+ lines), NPC Editor"
echo "Core Systems: Day/Night Cycle, NPC Scheduling, Photo System, Door System, Pause System"
echo "Controllers: First-Person Camera with enable/disable support"
echo "Data: $(find public/data -name '*.json' | wc -l) data files (NPCs, Maps, Events, Investigations)"
echo "Features: Pausable gameplay, schedule editor, map import/export, drag painting"