microsoft/community-ontology-contribution
Add a contributor ontology to catalogue/community/. Use when a community member submits an RDF/OWL file and wants it listed in the Playground catalogue under their GitHub username.
npx skills add https://github.com/microsoft/Ontology-Playground --skill community-ontology-contribution
Place a contributor's ontology under the correct catalogue path and produce
a valid, compilable community entry.
Accept only submissions that are new or materially different from existing
catalogue entries and that contribute reusable community value. A good community
ontology models a domain, workflow, teaching scenario, or reusable pattern that
others can inspect, learn from, or adapt. Do not accept vanity-only entries,
placeholder ontologies, duplicates, or profiles of a person or organization with
no meaningful domain model.
The catalogue compiler scans exactly three levels deep:
catalogue/community/<github-username>/<slug>/
Both the <github-username> folder and the <slug> subfolder are
required. Files placed directly in catalogue/community/<github-username>/
will be silently skipped by the compiler and the ontology will never appear
in the catalogue.
catalogue/community/jane-doe/supply-chain/
├── metadata.json
└── ontology.rdf ← or ontology.owl
catalogue/community/jane-doe/
├── metadata.json ← wrong depth
└── ontology.rdf ← wrong depth
<github-username> — the contributor's GitHub username (lowercased, as-is)<slug> — short kebab-case name for this ontology (e.g. supply-chain, hr-system)mkdir -p catalogue/community/<github-username>/<slug>/
Copy the file in and rename it ontology.rdf (or ontology.owl):
cp <source-file> catalogue/community/<github-username>/<slug>/ontology.rdf
metadata.jsonRequired fields (name, description, category) — missing any one causes a
compile error:
{
"name": "Human-Readable Ontology Name",
"description": "One-sentence description of the domain.",
"category": "general",
"icon": "🏭",
"tags": ["tag1", "tag2"],
"author": "<github-username>"
}
category must be one of:
retail | healthcare | finance | manufacturing | education | food | media | events | general | school | fibo
No extra fields are allowed (additionalProperties: false in the schema).
The catalogue ID is derived from the filesystem path, so do not add an
id field. The fabric_forum_user_name and author_linkedin fields are also
not in the schema — omit them unless the schema is updated first.
If you create, repair, or normalize sample instances, examples, docs, quests, or
RDF/OWL literals that need person names, first use the name-generator skill.
Do not invent customer, employee, patient, student, instructor, reviewer, or
other human names.
All new person names must come from the FullName column in:
data/reference/FNF-2026-06-01-01002-0268.csv
npm run catalogue:build
Look for:
✔ community/<slug>
If you see a compile error or the entry is absent, re-check:
metadata.json (name, description, category)category valuemetadata.jsonnpm run build
| Mistake | Effect | Fix |
|---------|--------|-----|
| Files at community/<username>/ with no slug subfolder | Silently skipped — entry never appears | Add <slug>/ subfolder |
| Missing name field in metadata.json | Compile error | Add "name": "..." |
| Invalid category value | Compile error | Use one of the allowed values |
| Extra fields (id, fabric_forum_user_name, etc.) | Compile error (additionalProperties) | Remove the extra fields |
| Ontology file named something other than ontology.rdf/.owl | Inconsistent with repo convention | Rename to ontology.rdf or ontology.owl |
| Vanity-only or duplicate submission | Not accepted in review | Ask for a reusable domain model or reject |
npm run catalogue:build outputs a successful community catalogue entrynpm run build passes with no TypeScript or Vite errorspublic/catalogue.json with correct name, description, categorysource field in compiled entry is "community"name-generator skill / approved CSV fixture
Take microsoft/community-ontology-contribution from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.