Automatic Detection
Citizen automatically detects installed extensions using MediaWiki’sExtensionRegistry:
Supported Extensions
Citizen provides custom styles and integration for 100+ extensions. Below are the major categories.Search Extensions
AdvancedSearch
Provides advanced search form with filters and options. Styles:skinStyles/extensions/AdvancedSearch/
Auto-detected: Yes
Configuration: None required
MediaSearch
Enables media (file) search with visual results. Styles:skinStyles/extensions/MediaSearch/
Auto-detected: Yes
Configuration: None required
CirrusSearch
Elasticsearch-powered search for better performance. Recommendation: Use with$wgCitizenSearchGateway = 'mwRestApi' for optimal results.
Visual Editor Extensions
VisualEditor
Visual editing interface for MediaWiki. Styles:skinStyles/extensions/VisualEditor/
Supported modules:
ext.visualEditor.desktopArticleTarget.initext.visualEditor.coreext.visualEditor.mwcoreext.visualEditor.mwtransclusion- And more (see
skin.json:739-748)
- Citizen detects if VE edit tab is first
- Styles integrated with sticky header
- Custom save dialog styling
WikiEditor
Enhanced wikitext editor with toolbar. Styles:skinStyles/extensions/WikiEditor/
CodeMirror
Syntax highlighting for code editing. Styles:skinStyles/extensions/CodeMirror/
Supported versions:
- CodeMirror 5 (
ext.CodeMirror.lib) - CodeMirror 6 (
ext.CodeMirror.v6)
Semantic Extensions
Semantic MediaWiki (SMW)
Adds semantic capabilities to MediaWiki. Styles:skinStyles/extensions/SemanticMediaWiki/
Modules styled: 20+ SMW modules including:
- Ask special page
- Browse special page
- Data tables
- Tooltips
- JSON view
smwAskApi search client available
Semantic Result Formats (SRF)
60+ result formats for SMW queries. Styles:skinStyles/extensions/SemanticResultFormats/
Supported formats:
- Charts (D3, Flot, jqPlot)
- Calendars and timelines
- Maps (Leaflet integration)
- Galleries and slideshows
- DataTables
- Filtered results
- And many more
Cargo
Database storage and querying for structured data. Styles:skinStyles/extensions/Cargo/
Styled features:
- Cargo tables
- Dynamic tables
- Calendar format
- Gantt charts
- Timeline format
- Drilldown interface
Notification Extensions
Echo
Notification system for MediaWiki. Styles:skinStyles/extensions/Echo/
Integration:
- Custom badge styling in header
- Notification flyout styling
- Special page styling
- Desktop and mobile views
resources/skins.citizen.scripts/echo.js for enhanced interactions
CentralNotice
Banner notification system. Styles:skinStyles/extensions/CentralNotice/
Discussion Extensions
DiscussionTools
Modern discussion and reply tools. Styles:skinStyles/extensions/DiscussionTools/
Flow
Structured discussion system. Styles:skinStyles/extensions/Flow/
Modules styled:
- Discussion boards
- Topic pages
- Reply widget
- VisualEditor integration
CommentStreams
Comment system for pages. Styles:skinStyles/extensions/CommentStreams/
Content Extensions
Tabs / TabberNeue
Tabbed content interface. Styles:skinStyles/extensions/Tabs/skinStyles/extensions/TabberNeue/
Cite
Citation and reference system. Styles:skinStyles/extensions/Cite/
SyntaxHighlight_GeSHi
Code syntax highlighting. Styles:skinStyles/extensions/SyntaxHighlight_GeSHi/
TimedMediaHandler
Audio and video playback. Styles:skinStyles/extensions/TimedMediaHandler/
PortableInfobox
Infobox templates. Styles:skinStyles/extensions/PortableInfobox/
Map Extensions
Kartographer
Map display and editing. Styles: Uses shared Leaflet styles (skinStyles/lib/leaflet/)
Maps
Multiple mapping services support. Styles: Uses shared Leaflet stylesDataMaps
Interactive data maps. Styles:skinStyles/extensions/DataMaps/
Translation Extensions
Translate
Translation workflow for MediaWiki. Styles:skinStyles/extensions/Translate/
Modules styled: 15+ Translate modules including:
- Translation editor
- Message tables
- Group selector
- Special pages
- Statistics displays
UniversalLanguageSelector (ULS)
Language selection and input. Styles:skinStyles/extensions/UniversalLanguageSelector/
Wikibase
Structured data (powers Wikidata). Styles:skinStyles/extensions/Wikibase/
Other Notable Extensions
Popups (PagePreviews)
Page preview cards on hover. Styles:skinStyles/extensions/Popups/
Integration: Works seamlessly with Citizen’s design language
MobileFrontend
Mobile-optimized view. Integration:- Citizen detects MobileFrontend context
- Delegates mobile formatting to MF when appropriate
- See
SkinCitizen.php:326-328for detection logic
RevisionSlider
Visual diff navigation. Styles:skinStyles/extensions/RevisionSlider/
TwoColConflict
Improved edit conflict resolution. Styles:skinStyles/extensions/TwoColConflict/
FlaggedRevs
Page review and approval system. Styles:skinStyles/extensions/FlaggedRevs/
Complete Extension List
Citizen includes styles for 100+ extensions. Seeskin.json:570-806 for the complete list:
View all supported extensions
View all supported extensions
- AccountInfo
- AdvancedSearch
- AJAXPoll
- ApprovedRevs
- Capiunto
- Cargo
- CategoryTree
- CentralNotice
- Cite
- CiteThisPage
- CleanChanges
- CodeEditor
- CodeMirror (v5 & v6)
- CommentStreams
- CookieWarning
- DataMaps
- DiscussionTools
- DismissableSiteNotice
- Echo
- FloatingUI
- Flow
- FlaggedRevs
- Graph
- Interwiki
- Kartographer
- Lingo
- Maps
- MediaSearch
- MultimediaViewer
- MsUpload
- OAuth
- Popups
- PortableInfobox
- RelatedArticles
- ReplaceText
- RevisionSlider
- Score
- Scribunto
- SearchDigest
- SemanticMediaWiki
- SemanticResultFormats
- SimpleTooltip
- SmiteSpam
- Spoilers
- StructuredNavigation
- SyntaxHighlight_GeSHi
- Tabber
- TabberNeue
- Tabs
- TemplateData
- TinyMCE
- TimedMediaHandler
- Translate
- TwoColConflict
- UniversalLanguageSelector
- UploadWizard
- UserProfileV2
- VEForAll
- VisualEditor
- Wikibase
- WikiEditor
- WSSearchFront
Custom Extension Integration
To add styling for a custom extension:-
Create LESS file:
-
Register in skin.json:
-
Use Citizen design tokens:
Troubleshooting
Extension Styles Not Loading
-
Check if extension is registered:
-
Clear ResourceLoader cache:
- Check browser console for 404 errors
Extension Conflicts
If two extensions conflict:- Check load order in
LocalSettings.php - Load Citizen last:
Missing Extension Features
Some extensions require configuration:Contributing Extension Styles
To contribute styles for a new extension:- Fork the Citizen repository
- Create styles in
skinStyles/extensions/YourExtension/ - Add module registration to
skin.json - Test with the extension installed
- Submit a pull request