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 GitHubUse 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.
Manual JSON pull request
Fork the repository
Fork the Skill-Tree GitHub repo and clone it locally.
git clone https://github.com/nasimstg/SkillTreeOSS.gitCreate 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.jsonValidate the schema
Run the validator to make sure your JSON matches the contract.
npm run validateOpen a pull request
Push your branch and open a PR. CI will auto-validate your tree.
git push origin feat/my-skill-treeContent 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": []
}Ready to contribute?
Any skill. Any topic. If it can be learned with free resources, it belongs here.