Skip to content
Skillbird is a framework around the python-Trueskill library, which can parse files of versus games to calculate a rating.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

What is "Skillbird" ?

Skillbird is a framework around the python-Trueskill library, which can parse files of versus games to calculate a rating, matchmaking suggestions for future games or create predictions for the outcome of a game with certain team compositions.

Web Interface

The Open-web-leaderboard can be used for visualization. If you leave all settings at default, it should work out of the box.


Adaption for your own Data

Data Requirements

To work correctly you data must have the following fields:

  • unique player id or name
  • player(s) in winning and losing team

You may also have the following informations:

  • data/time of the game (you cannot use the cached-rebuild feature without this)
  • time players spent playing compared to the full length of the game
  • teamchanges of players
  • different maps

Data Input

If you use the official source-plugin and it's output, you don't have to do anything. Alternatively can write your own parser (see the skillbird-examples project), or you can conform to the Source-format which supports the following log-lines. None of the input values may contain any of the separators used (pipe and comma) or the line identifier (0x42).

# reset state

# declare the current map

# start a round

# record team changes (ct) or disconnects (dc) and the team composition after it
# the backend will handle those accordingly

# declare the team-composition at the end of the round
# the backend will use this information for sanity checks

# name the winning team  and end the round


usage: [-h] [--parse-only] [--start-at-end] [--no-follow]
                          [--one-thread] [--cache-file CACHEFILE]
                          FILE [FILE ...]

positional arguments:
  FILE                  one or more logfiles to parse

optional arguments:
  -h, --help            show this help message and exit
  --parse-only, -po     only parse, do not listen for queries
  --start-at-end, -se   start at the end of each file (overwrites no-follow)
  --no-follow, -nf      wait for changes on the files (does not imply start-
  --one-thread          run everything in main thread (implies no-follow)
  --cache-file CACHEFILE
                        A cache file which makes restarting the system fast

Query Options

Skillbird has a TCP-Query interface which supports the following queries. The separator for player-IDs is always acomma and the separator for for teams is always a pipe as before, those special characters may not be contained in any of the actual input values. A HTTP-api is work in progress (at the start of this project the interface was only intended for sourcemodplugins).


Get the balance quality of the current team composition.

Output: float between 0 and 100


Return a balance suggestion for a list of players.

Input:  quality,LIST_OF_PLAYER_IDs


Return rating information about a player-ID

Input:  quality,PLAYER_ID
Output: string: rating information


Fuzzy search for the name or ID of a player

Input: find,string
Output: string: rating information

Force rank reload

For the reload of player ranks, which are usually updated every 5 minutes immediately.

Input: forceRankReload
Output: string: "OK" (if successful)


Reload the player ranks cache and dump the entire contents.

Input: dump
Output: string: all players, their ratings and their ranks


Return some statistics about the system

Input: stats
Output: string: general information

Related projects

You can’t perform that action at this time.