A map of knowledge, and the paths through it.
Skill Graph is an open model of knowledge: concepts, the prerequisites that link them, the signs that a concept has been understood, routes towards a goal, and interactive labs that explain one idea each. It shows how concepts connect, what builds on what, and how a learner can find the next step from what they already understand.
School learning from about age 4 to 16 is where it is used first. A parent uses the map to see where a child is and what comes next; a child uses the labs to play with an idea until it makes sense. Topics are checked against eleven national school curricula and the International Baccalaureate, and everything is in English, Russian and Hungarian.
Open it: samvelkoch.github.io/skill-graph · Labs: samvelkoch.github.io/skill-graph/labs/ · Help build it: CONTRIBUTING.md
Skill Graph grew out of the Marble Skill Taxonomy, and Marble's topics, prerequisite graph and teaching research remain its foundation; their data and licenses are kept as published (see License). It has since become a project of its own: about 500 added topics and 800 added prerequisites, national school curricula mapped onto the graph, ready-made learning routes, 165 labs with sourced "Did you know?" facts, the map viewer, and full Russian and Hungarian translations.
For parents: the map (index.html)
- About 2,340 topics in 13 subjects, each with a plain description, an age range and the signs that a child has got it.
- About 4,750 prerequisite links: open any topic to see what it builds on and what it unlocks.
- Browse as a topic list or as a rotating graph; filter by age, school grade, subject, or by a national school curriculum (11 countries, grades 1–8 or 1–9; Australia Foundation–6).
- Mark what a child already knows (“Known”, “Learning”); Ready to learn then shows the topics whose prerequisites are all known.
- It can be installed as an app on a phone, tablet or computer (open the site, then the link “Install it as an app” on the home page). The app works offline.
- Everything stays on the device: progress, the child’s name and quiz results live only in the browser’s storage. There are no accounts and no server, so none of it is sent anywhere; a file or a link moves it to another device only when you make one. The site counts page visits with Google Analytics, which never sees the progress.
For children: the labs (labs/)
- 165 small interactive pages, each built around one idea and one picture that makes it obvious: magnets, seasons, fractions, the heart, food webs and more.
- Each lab links back to its topics on the map. A three-question quiz unlocks two “secret” experiments and marks the lab’s topics as “Learning” on the map.
- Phone first; no sign-up, no points, no ads.
It is a static site: plain HTML, CSS and JavaScript plus JSON data. There is no backend, no build step, no accounts and no package to install. GitHub Pages serves the main branch as it is, so whatever is merged into main is live within a few minutes.
| Path | What it is |
|---|---|
index.html |
The map (viewer). One file: styles, UI strings in EN/RU/HU, list view and the graph. |
graph2d.js |
The graph renderer: a 2D canvas, no WebGL, no CDN; positions come from data/layout.json, made by node scripts/layout.mjs. |
tour.js |
The short guided tour of the map (first visit and the ? button). |
labs/ |
The labs: one folder per lab (labs/<id>/index.html), the overview labs/index.html, the shared skeleton labs/lab.js + labs/lab.css, the list of labs labs/registry.json and the generated labs/catalog.json. |
curricula/index.html |
The curricula page: each national curriculum, its issuer, grades and how much of it is linked. |
data/ |
The Marble taxonomy as published upstream: topics, prerequisites, curriculum standards, domain summaries, teaching research. |
data/extra/ |
Topics and prerequisites added by this project to cover school-curriculum content the taxonomy lacks (arts, music, geography, history, literature and more). |
data/school-curricula.json |
Thirteen national curricula and the AI4K12 guidelines, item by item, linked to topics. |
data/i18n/, data/extra/i18n/ |
Russian and Hungarian translations of all topic text. |
scripts/ |
Checks and generators (Node, no dependencies) and the curriculum pipeline (scripts/curricula/, Python). |
manifest.webmanifest, sw.js |
The home-screen app and offline cache. |
You need any static web server (the pages load JSON with fetch, which does not work from file://), for example:
python3 -m http.server 8000Then open http://localhost:8000/ for the map and http://localhost:8000/labs/ for the labs. Add ?lang=ru or ?lang=hu for the other languages.
To run the same checks as CI (Node 22, nothing to install):
npm run checkHelp is welcome, especially:
- a new lab or a better version of an existing one;
- your country’s school curriculum, mapped onto the topics;
- fixes to topics, prerequisites, ages or translations;
- translations of the interface and the labs.
CONTRIBUTING.md has the path for each of these. Building a lab with an AI coding agent? The project skill .claude/skills/new-lab/ holds the whole procedure; AGENTS.md points other agents to it.
All data is UTF-8 JSON. JSON Schemas for the upstream files are in schema/; counts and SHA-256 checksums are in data/manifest.json.
| File | What it holds |
|---|---|
data/topics.json |
1,845 Marble micro-topics (graph nodes). |
data/dependencies.json |
3,941 prerequisite edges (topicId depends on prerequisiteId). |
data/curriculum-standards.json |
The source curriculum standards the Marble topics were distilled from (NGSS, Common Core, the UK National Curriculum, the Australian Curriculum v9 and more; Ontario as codes only), grouped by curriculum. |
data/clusters.json |
176 parent-friendly domain summaries. |
data/teaching-research.json |
Marble’s teaching research for 1,049 Mathematics and Science topics: pedagogy, misconceptions, activities, assessment and sources. Copied unchanged from upstream, like archived-teaching-research.json for merged topics. Agent-authored guidance, not empirically validated. |
data/extra/topics.json, dependencies.json |
495 added topics and 813 edges, same shape as the upstream files. Each added topic lists the curricula (countries) it covers. |
data/school-curricula.json |
curricula (country → name, source URL, grades), items ([country, subject, grade, title], 6,620 items) and links (topic → items it covers). |
data/i18n/<lang>/ |
strings.json holds the translation; the localized datasets next to it are generated. See data/i18n/README.md. |
The catalogue contains 17 sources / 7,743 expectations. It includes 620 Australian Curriculum v9 content descriptions and 3,862 Ontario expectations from nine elementary documents. Ontario is exported as codes and official source links only; ingestion of source expectations is separate from authoring topic coverage. Ontario Grades 1–5 Mathematics have received focused taxonomy authoring passes. The Grade 2 report distinguishes reused claims, extracted elementary claims and the concurrency gap; mappings do not certify learner mastery of every linked topic. The Grade 3 report records reuse of 114 existing topics, the congruence extension and prerequisite repairs; no topics were added. The Grade 4 report records reuse of 126 existing topics, two missing skills, two focused extractions and prerequisite repairs. The Grade 5 report records reuse of 145 existing topics, one missing mathematical representation, one financial/civic concept and one focused extraction.
The Australian cleanup reviewed all 314 additions and 14 later edited IDs, consolidated repeated skills and redistributed bundled requirements. All 593 selected expectation codes remain linked. Those links do not certify whole-standard coverage: 572 previous Full claims have not been independently recertified. The 27 PE/movement descriptions remain excluded. Read the cleanup report and current area-by-area mapping counts.
See PROVENANCE.md for sources and attribution.
Curricula map onto one shared taxonomy. Keep subjects and domains consistent across countries; a curriculum's learning-area labels do not create separate subject trees.
- Reuse a topic when it assesses the same concept or operation. Add local examples without changing what mastery means.
- Review affected assessment guidance and learner estimates before changing a mastery claim. Assess independent procedures separately; topics do not track multiple difficulty levels.
- Record whole-expectation, component and prerequisite contributions explicitly. A topic–code link alone does not establish Full coverage.
- Reuse existing domains before adding a distinct new domain. Keep names consistent and avoid parallel country-specific domain trees.
- Keep each topic focused on a teachable concept or skill. A standard can link to several topics; its bundled requirements need not become one topic.
- Add country-specific topics where the knowledge genuinely differs, such as a country's history or constitutional arrangements. Use shared topics for common concepts and skills, with local examples where useful.
{
"id": "mt_N8CpN1EJrP",
"type": "CONCEPTUAL",
"subject": "English",
"domain": "Grammar & Punctuation",
"name": "Building sentences",
"description": "Understand that words combine to make sentences — a sentence expresses a complete thought…",
"ageRangeStart": 4,
"ageRangeEnd": 6,
"centrality": 0.257,
"evidence": [
"Distinguish between complete sentences and fragments",
"Compose a complete sentence with a subject and verb"
],
"assessmentPrompt": "If {{name}} says something like \"The dog\", can they tell you that's not a complete sentence…?",
"standards": ["ccss-ela:L.K.1f", "uk-nc-2013:Eng.App2.Y1.Sent.1"]
}id: stable identifier (mt_…upstream; added topics use their own prefixes), referenced by dependencies, curricula and labs.standards: keys intocurriculum-standards.json("<curriculum-slug>:<code>").assessmentPrompt: a natural-language check.{{name}}is the child’s name; substitute or strip it before display.
{ "topicId": "mt__00ZSLnB7p", "prerequisiteId": "mt_VBl1T1sFCM", "strength": "hard",
"reason": "Must understand vibrations make sound before finding volume patterns" }topicId depends on prerequisiteId. Reverse the edge to get “unlocks”.
Load the JSON and go:
import topics from './data/topics.json' with { type: 'json' };
import deps from './data/dependencies.json' with { type: 'json' };
const byId = new Map(topics.topics.map(t => [t.id, t]));
const prereqs = deps.dependencies
.filter(d => d.topicId === 'mt_N8CpN1EJrP')
.map(d => byId.get(d.prerequisiteId).name);The data is multi-licensed. Read this before you use or redistribute it.
| Layer | License |
|---|---|
| The database: the collection, structure, IDs, topic↔topic and topic↔standard relationships | ODbL 1.0: free for research and commercial use, attribution required, share-alike (derivative databases must stay open under ODbL). |
The text Marble authored: topic description/name/evidence/assessmentPrompt, dependency reasons, cluster summarys, teaching-research prose |
CC BY-SA 4.0: attribution + share-alike. |
Translations and added topics (data/i18n/, data/extra/) |
Derivative work: the text is under CC BY-SA 4.0 with attribution to Marble (as stated in data/i18n/README.md and data/extra/topics.json); as part of the database it falls under the ODbL 1.0 share-alike above. |
curriculum-standards.json: extracted from third-party frameworks |
Not Marble’s to relicense. Each source keeps its own upstream license; see PROVENANCE.md. |
Share-alike and still commercial-friendly: ODbL separates a derivative database (extend or modify the taxonomy → it must stay open) from a produced work (use it inside a product, model or app → that stays yours). You can build a commercial product on the data without open-sourcing the product; you owe back only improvements to the data itself.
Any use of the data must credit:
Marble Skill Taxonomy (v1) · © Generative Spark, Inc. (Marble) · https://withmarble.com · licensed under ODbL 1.0 (database) and CC BY-SA 4.0 (content).
Plus the upstream notices in PROVENANCE.md for any curriculum standards you use. See CITATION.cff for a formal citation and CHANGELOG.md for the upstream release notes.
