Personal Skill Monitor is a desktop application for EVE Online that displays character skills and the skill queue via EVE ESI/SSO, with convenient filters, multiβformat export, and training time calculations.
The app is aimed at capsuleers who want a quick overview of their training without starting the game client or using heavy tools.
Full changelog: CHANGELOG.md
- π Fuzzy Search β find skills by partial name (e.g.
"dron"β"Drones") - ποΈ Level Filter β show only skills trained to a minimum level (β₯ 1 β¦ β₯ 5)
- π Markdown & HTML Export β export skill lists as styled documents
- β±οΈ Training Time Calculator β estimate training time per level using your character's attributes
- π Skill Completion Notifications β desktop alerts when a skill is about to finish
- π ESI Retry Logic β automatic retries on server errors (429/5xx) with back-off
- π System Tray β minimize to tray instead of closing; restore or quit from tray icon
- π Update Checker β check for new versions on GitHub directly from the app
- π§ͺ 51 Unit Tests β full test coverage for core modules
- βοΈ GitHub Actions CI β automated testing on Python 3.10 / 3.11 / 3.12
-
SSO + Multiβcharacter
- Login via official EVE SSO (OAuth2).
- Support for multiple characters with easy switching in the sidebar.
- Automatic token refresh β no need to re-login every 20 minutes.
- Tokens stored locally in
~/.config/PSM/tokens.json.
-
Skill Plan Manager
- Create and manage custom training plans saved between sessions.
- Auto-dependency resolution: adding a high-level skill automatically adds all required prerequisites in the correct order.
- Double-click a skill in the catalog to quickly add it to your plan.
- Export plans to clipboard or
.txtfile; import from clipboard.
-
Skills View
- Full list of character skills with: ID, name, group, level, skillpoints.
- Filters:
Searchβ fuzzy/partial name matching (e.g."hybrd"finds"Large Hybrid Turret").Groupβ filter by skill group (Gunnery, Drones, Industry, Navigation, etc.).Categoryβ filter by category (Combat, Industry, Resource, Support, Other).Level β₯β show only skills trained to a minimum level (Any / 1 / 2 / 3 / 4 / 5).- Checkboxes:
Only trained (level β₯ 1)andShow level 0 skills.
- Sorting by any column (click column header).
-
Skill Queue View
- Active skill queue: position, skill name, category, target level, finish date (UTC), time left.
- Humanβreadable remaining time format (e.g.
3d 4h 12m). - Character attribute display (INT / MEM / PER / WIL / CHA).
-
Training Time Calculator (New in v0.3.0)
- Popup window accessible from the sidebar (
β± Calculator). - Select any skill and choose From / To levels.
- Shows per-level breakdown: time and SP required for each level transition.
- Displays SP/min rate based on your character's actual attributes.
- Falls back to default attributes (20 each) if data is not yet loaded.
- Popup window accessible from the sidebar (
-
Skill Completion Notifications (New in v0.3.0)
- Desktop notifications (via system tray) when a skill finishes within 5 minutes.
- Toggle on/off with the
π Notificationscheckbox in the stats bar. - Setting persists across restarts (
ui_settings.json).
-
System Tray (New in v0.3.0)
- Clicking the window β close button minimizes the app to the system tray instead of quitting.
- A tray icon appears in the taskbar notification area.
- Right-click the tray icon for a context menu:
- Show β restore the main window.
- Quit β fully exit the application.
- Double-click the tray icon to restore the window.
- Gracefully disabled if
pystray/Pilloware not installed.
-
Data Export
- Export All Skills, Filtered Skills, or Skill Queue to:
- CSV β spreadsheet-compatible.
- Markdown β GitHub-flavoured table, great for wikis and Notion.
- HTML β standalone styled page, open in any browser.
- Clipboard β EVE Online game-importable format (
Skill Name Level).
- Save dialog with custom filename and date suffix.
- Export All Skills, Filtered Skills, or Skill Queue to:
-
Themes
- EVE Dark (default) β premium dark theme inspired by EVE Online UI.
- Dark β generic dark mode.
- Light β system light theme.
- Theme selection persists across restarts.
-
Reliability (Improved in v0.3.0)
- ESI API calls automatically retry on server errors (429, 500, 502, 503, 504).
- Linear back-off: 5s β 10s β 15s between attempts.
- All errors logged to
~/.config/PSM/errors.log. - Disk cache used as offline fallback when ESI is unreachable.
-
OS: Linux (tested on Linux Mint; other distributions with Python 3 should work). Windows also supported.
-
Python: 3.10+ (3.12 recommended).
-
Python dependencies (installed via
pip install -r requirements.txt):requestsβ HTTP client for ESI API.python-dotenvβ loadsconfig.env.rapidfuzzβ fuzzy skill name search.plyerβ cross-platform desktop notifications.pystrayβ system tray icon.Pillowβ image handling for tray icon.pytest,pytest-covβ testing (dev only).
-
EVE ESI / SSO:
- EVE Developer Application required (if you run from source).
- Required scopes:
esi-skills.read_skills.v1esi-skills.read_skillqueue.v1esi-characters.read_attributes.v1
git clone https://github.com/Fridman86/Personal-Skill-Monitor.git
cd Personal-Skill-Monitorpython3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install --upgrade pip
pip install -r requirements.txt- Go to https://developers.eveonline.com and create a new Application.
- Type:
Authentication & API Access. - Callback URL:
http://localhost:4916/callback - Add scopes:
esi-skills.read_skills.v1 esi-skills.read_skillqueue.v1 esi-characters.read_attributes.v1 - Save the Client ID and Client Secret.
cp config.example.env config.envEdit config.env:
EVE_CLIENT_ID=Your_Client_ID
EVE_CLIENT_SECRET=Your_Client_Secret
EVE_CALLBACK_URL=http://localhost:4916/callback
EVE_SCOPES=esi-skills.read_skills.v1 esi-skills.read_skillqueue.v1 esi-characters.read_attributes.v1Important:
config.envmust stay local and must not be committed to Git. It is already listed in.gitignore.
chmod +x PersonalSkillMonitor-x86_64.AppImage
./PersonalSkillMonitor-x86_64.AppImagesource .venv/bin/activate
python3 main.pyOn first launch:
- Click οΌ Add Character in the sidebar.
- The browser opens the EVE SSO page β log in and grant access.
- After authorization the app fetches skills and the queue automatically.
You can add multiple characters and switch between them in the sidebar.
source .venv/bin/activate
PYTHONPATH=. pytest tests/ -vCurrent test coverage: 51 tests across calculator, export, and esi modules.
Personal-Skill-Monitor/
βββ main.py # Entry point
βββ config.env # Local config (not committed)
βββ config.example.env # Config template
βββ requirements.txt
β
βββ src/
β βββ core/
β β βββ auth.py # EVE SSO OAuth2 flow
β β βββ controller.py # Business logic, async data refresh
β β βββ esi.py # ESI API client (retry, cache, token refresh)
β β βββ notifications.py # Skill completion notification monitor
β β
β βββ data/
β β βββ skills_db.py # Full EVE skill dictionary (id β name/group/category)
β β βββ skill_descriptions.py # Skill tooltip descriptions
β β βββ skill_prerequisites.py # Prerequisite resolution
β β
β βββ gui/
β β βββ app.py # Main window, system tray, update checker, CalcWindow
β β βββ components/
β β βββ skill_view.py # Skills table + fuzzy search + filters
β β βββ queue_view.py # Skill queue table
β β βββ skill_plan.py # Skill Plan Manager window
β β
β βββ ui/
β β βββ theme_eve.py # EVE Dark theme definition
β β βββ tooltip.py # Tooltip + TreeviewTooltip widgets
β β
β βββ utils/
β βββ calculator.py # Training time formulas (SP/min, rank, format)
β βββ config.py # Token management, settings
β βββ export.py # CSV / Markdown / HTML / Clipboard export
β βββ paths.py # XDG-compliant path management
β
βββ tests/
β βββ test_calculator.py # 24 tests for training time calculator
β βββ test_esi.py # 9 tests for ESI client (mock HTTP)
β βββ test_export.py # 18 tests for export formats
β
βββ .github/
βββ workflows/
βββ ci.yml # GitHub Actions CI (Python 3.10/3.11/3.12)
- Linux AppImage β Download latest
- Windows EXE β Download latest
- All tokens are stored locally in
~/.config/PSM/tokens.jsonon your machine. config.envcontains your own Client ID/Secret and is never committed to the repository.- The app uses read-only ESI scopes only β it cannot modify your character in any way.
- Errors are logged locally to
~/.config/PSM/errors.log.
It is recommended to periodically review authorized applications in your EVE account management and revoke access if you stop using this tool.
If this tool helped you plan your training or saved you some time:
Buy me a coffee: https://buymeacoffee.com/ifridman
- Fork the repository.
- Create a feature branch:
git checkout -b feature/my-feature. - Make your changes and add tests where applicable.
- Run the test suite:
PYTHONPATH=. pytest tests/ -v. - Submit a Pull Request with a clear description of your changes.
This project is licensed under the MIT License.
See the LICENSE file for details.
Personal Skill Monitor is not an official product of CCP hf. EVE Online and all related logos and names are the property of CCP hf. Use of the EVE ESI API is subject to CCP's ThirdβParty Policies.


