volunteer_activismOpen Source

Build the knowledge graph, together

Every skill tree is a JSON file in the GitHub repository. Anyone can add a tree for any skill — coding, painting, gardening, music production — via a pull request.

View on GitHub
account_tree
Easiest way — no Git required

Use the Visual Builder

Design your tree on a drag-and-drop canvas, fill in node details and resources, then hit Submit — the builder opens a GitHub PR for you automatically.

open_in_newOpen Builder
or contribute via GitHub

Manual JSON pull request

fork_right
Step 1

Fork the repository

Fork the Skill-Tree GitHub repo and clone it locally.

git clone https://github.com/nasimstg/SkillTreeOSS.git
draft
Step 2

Create a tree JSON file

Add a new file at data/trees/your-tree-id.json following the schema.

cp data/trees/full-stack-dev.json data/trees/your-tree.json
check_circle
Step 3

Validate the schema

Run the validator to make sure your JSON matches the contract.

npm run validate
merge
Step 4

Open a pull request

Push your branch and open a PR. CI will auto-validate your tree.

git push origin feat/my-skill-tree

Content guidelines

Every PR is reviewed against these rules before merging. CI also validates the JSON schema automatically.

  • checkAll linked resources must be free and publicly accessible.
  • checkEach node must have exactly one primary resource.
  • checkResources should be high quality — prefer established creators and platforms.
  • checkNode positions (`x`, `y`) should form a readable left-to-right or top-to-bottom flow.
  • checkThe `requires` array must only reference IDs that exist in the same tree.
  • checkTree IDs and node IDs must be lowercase, hyphenated (e.g. `full-stack-dev`, `html-basics`).

Minimal tree template

Full schema at data/schema.json. See full-stack-dev for a real 20-node example.

{
  "treeId": "your-tree-id",
  "title": "Your Skill Title",
  "category": "Technology",
  "difficulty": "beginner",
  "description": "A short description of this path.",
  "version": "1.0",
  "estimatedMonths": 2,
  "totalNodes": 5,
  "icon": "palette",
  "nodes": [
    {
      "id": "first-node",
      "label": "Getting Started",
      "description": "What this node teaches.",
      "icon": "start",
      "zone": "Foundation",
      "resource": {
        "title": "Resource title",
        "url": "https://youtube.com/watch?v=...",
        "type": "video",
        "author": "Creator Name",
        "estimatedHours": 1
      },
      "position": { "x": 0, "y": 0 },
      "requires": []
    }
  ],
  "edges": []
}
rocket_launch

Ready to contribute?

Any skill. Any topic. If it can be learned with free resources, it belongs here.