skills/extensions/umbraco-dashboard/SKILL.md
Implement dashboards in Umbraco backoffice using official docs
npx skillsauth add albanist/umbraco_cli umbraco-dashboardInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Dashboards are customizable components that appear in Umbraco's backoffice sections to display information and functionality. They show an 'editor' for the selected item in the tree or default section information when no item is selected. Dashboards use conditions to control where and when they appear in the backoffice.
Always fetch the latest docs before implementing:
The Umbraco source includes a working example:
Location: /Umbraco-CMS/src/Umbraco.Web.UI.Client/examples/dashboard-with-property-dataset/
This example demonstrates a dashboard that uses property datasets for data binding. Study this for production patterns.
If you need to explain these foundational concepts when implementing dashboards, reference these skills:
Umbraco Element / UmbElementMixin: When implementing dashboard elements, explaining UmbElementMixin, UmbLitElement, or base class patterns
umbraco-umbraco-elementContext API: When implementing context consumption (consumeContext), providing contexts, or accessing services like UMB_NOTIFICATION_CONTEXT
umbraco-context-apiLocalization: When implementing translations, using localize.term(), or adding multi-language support
umbraco-localizationState Management: When implementing reactive state, using observables, UmbState, or @state() decorator
umbraco-state-managementConditions: When implementing visibility controls, section restrictions, or conditional rendering
umbraco-conditions{
"type": "dashboard",
"alias": "my.dashboard",
"name": "My Dashboard",
"element": "/App_Plugins/MyDashboard/dashboard.js",
"meta": {
"label": "My Dashboard",
"pathname": "my-dashboard"
},
"conditions": [
{
"alias": "Umb.Condition.SectionAlias",
"match": "Umb.Section.Content"
}
]
}
import { LitElement, html, css } from '@umbraco-cms/backoffice/external/lit';
import { UmbElementMixin } from '@umbraco-cms/backoffice/element-api';
export default class MyDashboardElement extends UmbElementMixin(LitElement) {
render() {
return html`
<uui-box headline="My Dashboard">
<p>Dashboard content goes here</p>
</uui-box>
`;
}
static styles = css`
:host {
display: block;
padding: var(--uui-size-space-4);
}
`;
}
customElements.define('my-dashboard', MyDashboardElement);
That's it! Always fetch fresh docs, keep examples minimal, generate complete working code.
development
Trigger and inspect ModelsBuilder source generation
tools
Umbraco Forms operations (read-only)
tools
Tree navigation helpers
tools
Template operations