The Skills app reframes a static list of technologies as a live Windows Task Manager. Each skill appears as a running process with a CPU-usage bar that gently fluctuates every 1.5 seconds, giving the impression that your expertise is actively in use. The result is a proficiency overview that feels alive without being gimmicky — and one that immediately communicates relative confidence levels at a glance.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/dev-os/llms.txt
Use this file to discover all available pages before exploring further.
Layout
The window mirrors the classic Windows Task Manager chrome:- Tab bar — two tabs at the top:
Processes(active, white background) andPerformance(inactive, greyed out). - Header row — a three-column grid with
Image Name,CPU, andMemory (Proficiency)column labels. - Process list — one row per skill, with the animated bar in the third column.
- Status bar — a footer strip with process count on the left and a fixed
CPU Usage: 100% (Always learning)message on the right.
Skills Data Structure
Skills are defined as a static array at the top ofcomponents/apps/SkillsApp.js:
| Field | Type | Description |
|---|---|---|
name | string | Technology name shown in the Image Name column |
baseUsage | number (0–100) | Baseline proficiency percentage |
color | string | Any Tailwind bg-* class for the bar fill |
Animation
On mount, auseEffect seeds the usages state with each skill’s baseUsage, then starts a 1500 ms interval:
usages state value:
transition-all duration-1000 class smoothly interpolates bar width changes over one second, so each 1.5 s update glides rather than snapping — making the panel feel genuinely animated.
Status Bar
Processes count updates automatically when you add or remove entries from the skills array.
Customising
Edit theskills array in components/apps/SkillsApp.js to reflect your own stack:
bg-* colour class works for color. For best visual contrast against the bg-gray-200 track, prefer saturated mid-range shades (500–600).
baseUsage is a baseline, not a cap. Every interval tick applies a random jitter of (Math.random() - 0.5) * 10, meaning the bar can deviate up to ±5 points from baseUsage. The result is always clamped to [0, 100]. Set baseUsage: 100 for a skill you want to appear maxed out — it will still fluctuate between 95 and 100 for a realistic effect.