Appearance
Registry Reference
This page documents the root object of extensions_registry.json, the file at your repository root that declares the widgets, scripts, and stylesheets arrays; each entry type has its own reference page linked below.
Root Object
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
widgets | array | No | [] | Widget definitions — see Widget Definition Reference |
scripts | array | No | [] | Script definitions — see Script Definition Reference |
stylesheets | array | No | [] | Stylesheet definitions — see Stylesheet Definition Reference |
All three arrays are optional. A registry with only widgets publishes no scripts or stylesheets; a registry with only scripts publishes no widgets. An empty array is valid and publishes nothing of that type.
json
{
"widgets": [ ... ],
"scripts": [ ... ],
"stylesheets": [ ... ]
}1
2
3
4
5
2
3
4
5
Minimal Example
The smallest valid registry:
json
{
"widgets": [],
"scripts": [],
"stylesheets": []
}1
2
3
4
5
2
3
4
5
This publishes nothing but passes validation. Use it to verify your repository connection before adding entries.
File Location
- The file must be at the root of your repository.
- Filename must be
extensions_registry.json.
Migration from widget_registry.json
If your repository uses the old widget_registry.json filename, it still works during the migration window. Rename it to extensions_registry.json at your earliest convenience — the old name is deprecated and will be removed in a future release.
Validation
- The root must be a JSON object.
widgets,scripts, andstylesheetsmust be arrays if present.- Each entry follows its own schema — see the per-type reference pages.
For validation errors, see Error Codes.
Extension Naming
Widget type fields and script or stylesheet name fields must be unique across every repository connected to a community. When a community connects multiple GitHub organizations (see Multiple Organizations), each organization's extensions share the same registry namespace, so a naming collision in one repository can shadow an extension from another.
The recommended convention prefixes each name with an organization identifier:
{org_name}_{extension_purpose}1
| Extension | Field | Example |
|---|---|---|
| Widget | type | acme_corp_welcome_banner |
| Script | name | acme_corp_analytics |
| Stylesheet | name | acme_corp_theme |
json
{
"widgets": [
{
"type": "acme_corp_welcome_banner",
"title": "Welcome Banner"
}
],
"scripts": [
{
"name": "acme_corp_analytics",
"path": "scripts/analytics/script.js"
}
],
"stylesheets": [
{
"name": "acme_corp_theme",
"path": "stylesheets/theme/style.css"
}
]
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Next Steps
- Widget Definition Reference — fields for the
widgetsarray - Script Definition Reference — fields for the
scriptsarray - Stylesheet Definition Reference — fields for the
stylesheetsarray - Repository Layout — how to organize the files referenced from the registry

