Skill Guide Panel
OSRS-style skill guide interface showing unlocks at each level.Overview
The Skill Guide Panel is a popup interface that displays all unlockable content for each skill. Players can click any skill in the Skills Panel to view what they can unlock at each level, with visual indicators for achieved vs. future unlocks.Features
- Click-to-open: Click any skill in the Skills Panel to open its guide
- Level progression: Shows all unlocks with level requirements
- Visual states:
- ✓ Green checkmark for unlocked content (achieved)
- 🔒 Lock icon for locked content (future)
- ➤ Arrow for next unlock (highlighted)
- Progress tracking: Shows “X of Y unlocked” count
- Next unlock indicator: Highlights the next unlock you’re working toward
- Scrollable: Handles skills with many unlocks (Prayer has 29!)
- Type badges: Visual indicators for item vs. ability unlocks
- Smooth animations: Fade-in and slide-up effects
- Keyboard support: ESC key to close
- Click-outside-to-close: Intuitive UX
Usage
Opening the Guide
- Open the Skills Panel (🧠 icon in sidebar)
- Click on any skill icon
- The Skill Guide Panel opens showing that skill’s unlocks
Understanding the Display
Closing the Guide
- Click the X button in the header
- Press ESC key
- Click anywhere outside the panel
Technical Implementation
Components
SkillGuidePanel.tsx (packages/client/src/game/panels/SkillGuidePanel.tsx)
- Main panel component
- Portal rendering for proper z-index layering
- Handles keyboard events and click-outside-to-close
- Fetches unlock data from server API
- Individual unlock row display
- Visual state management (unlocked/next/locked)
- Type badge rendering
Data Flow
API Integration
Endpoint:GET /api/data/skill-unlocks
Response:
packages/server/world/assets/manifests/skill-unlocks.json
State Management
SkillsPanel.tsx manages:selectedSkill- Currently selected skillisGuideOpen- Panel visibility stateskillUnlocks- Fetched unlock dataisLoadingUnlocks- Loading state during fetch
- Loading: Shows spinner while fetching data
- Empty: Shows “No unlock data available” if skill has no unlocks
- Data: Displays unlock list with visual states
Styling
Color Palette:- Backdrop:
fadeIn 0.15s ease-out - Panel:
slideUp 0.2s ease-out - Spinner:
spin 0.8s linear infinite
Skills with Unlocks
| Skill | Unlock Count | Level Range | Notable Unlocks |
|---|---|---|---|
| Attack | 9 | 1-75 | Bronze → Dragon weapons |
| Strength | 2 | 1-99 | Damage bonuses |
| Defence | 10 | 1-70 | Bronze → Dragon armor |
| Constitution | 2 | 10-99 | Health increases |
| Prayer | 29 | 1-77 | Protection prayers, stat boosts |
| Woodcutting | 9 | 1-90 | Normal → Redwood trees |
| Mining | 8 | 1-85 | Copper → Runite ore |
| Fishing | 10 | 1-76 | Shrimp → Shark |
| Cooking | 10 | 1-80 | Shrimp → Manta ray |
| Firemaking | 9 | 1-90 | Normal → Redwood logs |
| Smithing | 8 | 1-85 | Bronze → Rune bars |
| Agility | 6 | 1-99 | Agility courses |
Unlock Types
item - Equipment, resources, or craftable items- Examples: “Bronze weapons”, “Rune armor”, “Shark”
- Badge color: Blue (
#93c5fd)
- Examples: “Protect from Melee”, “Ultimate Strength”
- Badge color: Purple (
#c4b5fd)
- Examples: “Wilderness access”, “Agility course”
- Badge color: Green
- Examples: “Dragon Slayer quest”
- Badge color: Yellow
- Examples: “Barbarian Fishing”
- Badge color: Orange
Development
Adding New Unlocks
Editpackages/server/world/assets/manifests/skill-unlocks.json:
Testing
Manual Testing Checklist:- Click on each skill opens correct guide
- Correct unlocks shown for each skill
- Player’s current level displayed correctly
- Unlocked items show green checkmark
- Locked items show lock icon and dimmed
- Next unlock is highlighted
- Scroll works for skills with many unlocks (Prayer)
- Click outside closes panel
- ESC key closes panel
- X button closes panel
- Loading state shows spinner
- Empty state shows appropriate message
- Panel doesn’t interfere with other UI elements
- Works on different screen sizes
Customization
Panel Width: Adjust inSkillGuidePanel.tsx:
SkillGuidePanel.tsx to match your theme.
Troubleshooting
Panel Not Opening
Issue: Clicking skill does nothing Solutions:- Check browser console for errors
- Verify
handleSkillClickis wired up in SkillsPanel - Ensure
onClickprop is passed to SkillBox component
No Unlocks Showing
Issue: Panel shows “No unlock data available” Solutions:- Check that
/api/data/skill-unlocksendpoint is working - Verify manifests are loaded on server
- Check browser network tab for failed requests
- Ensure skill key matches between UI and manifest (e.g., “defense” vs “defence”)
Loading Forever
Issue: Spinner shows indefinitely Solutions:- Check server is running and accessible
- Verify
PUBLIC_API_URLis set correctly in client.env - Check CORS configuration allows client domain
- Review browser console for network errors
Styling Issues
Issue: Panel looks broken or misaligned Solutions:- Clear browser cache
- Check for CSS conflicts with other panels
- Verify z-index is high enough (should be 9999)
- Test in different browsers
Future Enhancements
Potential improvements for future versions:- Search/Filter - Filter unlocks by type or search by name
- Goal Setting - Mark specific unlocks as goals
- XP Calculator - Show XP needed to reach specific levels
- Training Tips - Add tips for how to train each skill
- Sub-categories - Group unlocks by type (weapons, armor, etc.)
- Comparison View - Compare unlocks across multiple skills
- Achievement Tracking - Track when unlocks were achieved
- Sharing - Share progress with other players
References
- OSRS Wiki - Skills
- OSRS Wiki - Interface
- Implementation PR: #601
- Planning Document:
SKILL_GUIDE_PANEL_PLAN.md(archived)