RFC: Skill Discovery Discord Mini-game

This is a Request For Comments for a project that would allow MetaGame to organically create a skill-tree for players.

A skill-tree represents knowledge and interests of any given player. Plus relationships between these skills and subjects. This topic has been discussed extensively in the past, for example here.

When displayed as a graph, the tree could be used for example used in the following ways:

  • One player view: shows the skills and interests of the player
  • Two players view: show the players common skills and interests
  • Skill/interest view: show related skills/interests OR show players related to that skill/interest
  • Tree view: get a birds-eye view of the entire landscape of skills and interests in the community

Below is a proposal for how to build such a skill tree. It’s divided in 3 parts:

  • Getting input from players
  • Storing the data and exposing it via API
  • Creating a data explorer UI

Part 1: Players input

It should be fun and easy for players to input their skills, as well as expand the tree.
For this reasons, I’m thinking of collecting input data through Discord.

A special skill-tree channel is set dedicated to playing the skill-tree minigame.
(It works similarly to how the brain-exchange works today: posts are about a skill, and emoji reactions tell us about player’s relation to that skill).

There are 2 kinds of messages allowed in the channel:

  • skill/interest
  • skill/interest relationship

Example skill/interest messages

skill: swdev
description: develop software
skill: chicken
description: raise and care for chickens
skill: python
description: software development using Python

Example skill/interest relationship messages

python -> swdev

With this 2 messages alone, we can already build something good.
But if we layer more data on top using emoji reactions, we can build something great.


Players can react to messages in the channel to express their relationship with skills.
For example:

  • :mage:‍♂ - I am an expert on this
  • :heart: - I like this
  • :alien: - I am curious about this

Reactions are internalized in the graph as a relationship between the player and the skill.

Players can also react to skill/interest relationship messages to confirm that the edge in the skill tree is indeed an important one.
The more votes an skills relationship has, the more confident we become that it’s indeed a valid edge.

  • :arrow_up: - A is a sub-skill of B
  • :arrow_down: - A is a parent skill of B
  • ↔️ - A is related to B

For example, python -> software development may get

  • 5 x :arrow_up:
  • 2 x ↔️
  • 1 x :arrow_down:
  • 2 x :octopus: (ignored)

And we know that most people see python as a sub-skill of software development.

The main work here is to implement a Discord bot that can parse messages, listen for reactions and update the graph database.
The bot also need to tell when they send an invalid message, or introduce a duplicate, or use a reaction that is ignored.

Part 2: Data storage

The data schema is pretty simple. Any database can handle it.
Although using graph database (as opposed to a relational one) could make it easier to handle non-trivial relationships such parent/sub, etc.

The database only needs a simple API for the bot to input data:

  • Create skill if not existing
  • Create relationship if not existing
  • Link player with skill
  • Reinforce link among skills

The database should also answer queries such as:

  • Give me all the skills player P is related to directly
  • Give me all the skills that player P is related to directly or indirectly
  • Give me all the skills strongly related to skill S
  • Give me the parent and children skills related to skill S
  • Etc.

Part 3: Data Visualization and Exploration

There’s an infinite number of ways we could visualize this data.
I mentioned a few in the intro, but the sky is the limit.

I know there are plenty of JS libraries that handle force-directed graphs, and they should be pretty easy to integrate. Front-end is not my area of expertise, so I’m looking for some help on this.


It would be a really interesting way for someone wanting to level up in a certain area to see a pathway and also for them to see who has the skills they want to acquire or need to hire or collab with for a project. From a community co-ordination point of view, the metaview of metagame would help us discover more about our make-up and investigate further refinements.

Speaking as someone without the requisite skills to do anything constructive to help, I think it’s a great idea!

1 Like

That’s the idea!

No way. you have the skills to play and help. If you haven’t found them yet, ask for help.
We are all here to help you find them. :slightly_smiling_face:

@peth I’m renaming this effort ‘Skill Discovery’ to avoid confusion with the on chain skill certification, badges etc.

1 Like

A tool like this would be really useful for letting someone like me see how much they don’t know yet. Kind of a thing on a self-learning journey for anybody think, but so far, I’ve spent a lot of my time double-checking that I am in fact studying something useful. The clarity that comes with being able to visualize “if I learn this, I’ll be ready to learn that,” would be helpful.


I am wondering if / when Knowledge Organisation System (KOS) and vocabulary / taxonomy will become relevant. For example, people adding programming languages could generate many different entries that occupy a large space, it may be more useful to see them grouped or generalised. It may be interesting to navigate or explore this somehow e.g. see all front end dev skills. This may also be a can of worms. One worth considering perhaps! I’m interested to see how this evolves, and a willing tester / participant / worm can opener. A Web 3.0 taxonomy / KOS is an interesting and intimidating thought.

Thank you!

Relations between skills is indeed the next logical step in evolution of the project.
I wanted it from the start but end up cutting the feature due to time constraints.

Also subskills? Can the branches and nodes be zoomed in on, opened? Cooking, sub grilling. Language, subSpanish. Coding, subPython?

Yes, sub-skill is just one of a number of possible relationships between skills.

It’s not a trivial change, the current very simple data model would need to be changed significantly.

Where possible, use the badgeset from ???Mozilla??? (or other common) so that can import existing categories for metagamers and get instant cred / visibility. Now … how to verify that their competency matches their claims

Or a nft badge system?

Seems this:

Is now the site for Open Badges.