Experimental Beta: This project is an exploration of what's possible with Skills for Umbraco. It's evolving as we learn what works best.
A Claude Code plugin marketplace with 66 skills for Umbraco backoffice customization and testing.
Add the marketplace:
/plugin marketplace add umbraco/Umbraco-CMS-Backoffice-SkillsInstall the plugins:
# Backoffice extension skills (58 skills)
/plugin install umbraco-cms-backoffice-skills@umbraco-backoffice-marketplace
# Testing skills (8 skills) - optional but recommended
/plugin install umbraco-cms-backoffice-testing-skills@umbraco-backoffice-marketplaceThese skills are your entry points for Umbraco backoffice extension development. Start here.
Start here if you're new. Sets up everything in one command:
# Full setup with custom credentials
/umbraco-quickstart MyUmbracoSite MyExtension --email [email protected] --password Admin123456
# With default credentials ([email protected] / SecurePass1234)
/umbraco-quickstart MyUmbracoSite MyExtension
# Just instance name - will prompt for extension name
/umbraco-quickstart MyUmbracoSite
# No arguments - detects existing or prompts for names
/umbraco-quickstartThis skill will:
- Create an Umbraco instance (if needed)
- Create an extension
- Register the extension with the Umbraco project
- Warn about missing CMS/UUI source
- Enter plan mode to help design your extension
If you prefer to set things up step by step:
Use the package-script-writer skill to create an Umbraco instance using the PSW CLI.
/package-script-writer MyProjectThanks to Paul Seal (@prjseal) for his hard work on the PSW CLI.
Use umbraco-extension-template to create a new extension project:
/umbraco-extension-template MyFeatureOr manually:
dotnet new install Umbraco.Templates
dotnet new umbraco-extension -n MyExtension -ex
cd MyExtension/Client && npm install && npm run watchUse umbraco-add-extension-reference to register your extension with the Umbraco project:
/umbraco-add-extension-reference MyExtensionThis adds a <ProjectReference> to your Umbraco .csproj file so the extension loads.
This is the most important skill. It provides:
- Complete Extension Map - Visual diagram showing where ALL 57 extension types appear in the backoffice UI
- Working Blueprints - Copy-and-adapt examples for common patterns
- Sub-Skill Reference - Links to all other skills organised by category
Use this skill when:
- Starting a new backoffice customisation project
- Understanding how extension types connect together
- Finding the right skill for a specific UI location
Blueprints included:
| Blueprint | Description | Skills Used |
|---|---|---|
| Blueprint 1 | Section + Menu + Dashboard + Workspace | 6 skills |
| TimeDashboard | 13 extension types working together | 13 skills |
| tree-example | Settings tree with workspace | 7 skills |
| notes-wiki | Full-stack with C# backend | 27 skills |
/umbraco-backofficeThese skills work best when Claude has access to the Umbraco source code. This allows Claude to:
- Reference actual Umbraco implementations and patterns
- Understand types, interfaces, and base classes
- Follow existing code conventions accurately
Recommended setup:
-
Clone the repositories alongside your project:
git clone https://github.com/umbraco/Umbraco-CMS.git git clone https://github.com/umbraco/Umbraco.UI.git
-
Add them as working directories in Claude Code:
/add-dir /path/to/Umbraco-CMS/src/Umbraco.Web.UI.Client /add-dir /path/to/Umbraco.UI/packages/uui
This gives Claude direct access to:
- Umbraco.Web.UI.Client - Backoffice TypeScript source code
- UUI - Umbraco UI component library
Core architectural concepts used across all extensions:
| Skill | Description |
|---|---|
umbraco-context-api |
Provider-consumer pattern for data sharing |
umbraco-repository-pattern |
Data access layer abstraction |
umbraco-extension-registry |
Dynamic extension registration |
umbraco-conditions |
Control where extensions appear |
umbraco-state-management |
Reactive UI with @state |
umbraco-localization |
Multi-language support |
umbraco-routing |
URL structure and navigation |
umbraco-notifications |
Toast messages and events |
umbraco-umbraco-element |
Base class for components |
umbraco-controllers |
C# API endpoints |
UI extensions for the backoffice:
Navigation & Sections
umbraco-sections- Top-level navigationumbraco-menu/umbraco-menu-items- Sidebar menusumbraco-header-apps- Header bar apps
Content Areas
umbraco-dashboard- Welcome panelsumbraco-workspace- Entity editing viewsumbraco-tree/umbraco-tree-item- Hierarchical navigationumbraco-collection/umbraco-collection-view/umbraco-collection-action- List/grid views
Actions
umbraco-entity-actions- Context menu actionsumbraco-entity-bulk-actions- Multi-select operationsumbraco-entity-create-option-action- Create menu optionsumbraco-current-user-action- User profile actions
UI Components
umbraco-modals- Dialogs and sidebarsumbraco-icons- Custom icon setsumbraco-theme- Backoffice themesumbraco-ufm-component- Umbraco Flavored Markdown
Search & Preview
umbraco-search-provider- Global searchumbraco-search-result-item- Custom result renderingumbraco-preview-app-provider- Content preview apps
Advanced
umbraco-global-context- App-wide shared stateumbraco-kinds- Reusable manifest templatesumbraco-dynamic-root- Content picker configurationumbraco-user-profile-app- User profile tabsumbraco-health-check- System health checksumbraco-package-view- Package configuration UIumbraco-entry-point/umbraco-bundle- Extension lifecycle
Custom data type editors:
| Skill | Description |
|---|---|
umbraco-property-editor-ui |
Visual editor component |
umbraco-property-editor-schema |
Data validation |
umbraco-property-action |
Property buttons |
umbraco-property-value-preset |
Default value templates |
umbraco-file-upload-preview |
Upload previews |
umbraco-block-editor-custom-view |
Block rendering |
Tiptap editor customization:
| Skill | Description |
|---|---|
umbraco-tiptap-extension |
Core editor behavior |
umbraco-tiptap-toolbar-extension |
Toolbar buttons |
umbraco-tiptap-statusbar-extension |
Status bar items |
umbraco-monaco-markdown-editor-action |
Markdown buttons |
Authentication and API integration:
| Skill | Description |
|---|---|
umbraco-openapi-client |
Required for custom API calls |
umbraco-auth-provider |
External login (OAuth) |
umbraco-mfa-login-provider |
Two-factor authentication |
umbraco-granular-user-permissions |
Fine-grained access |
Complete testing pyramid for Umbraco extensions:
| Skill | Description |
|---|---|
umbraco-testing |
Router skill - Choose the right testing approach |
umbraco-unit-testing |
Unit tests with @open-wc/testing |
umbraco-mocked-backoffice |
Test in mocked backoffice (no .NET required) |
umbraco-e2e-testing |
E2E tests against real Umbraco |
umbraco-playwright-testhelpers |
Full testhelpers API reference |
umbraco-test-builders |
JsonModels.Builders for test data |
umbraco-msw-testing |
MSW handlers for API mocking |
umbraco-example-generator |
Generate testable extensions |
Testing Pyramid:
┌─────────────┐
│ E2E Tests │ ← Real Umbraco, complete workflows
└─────────────┘
┌─────────────────────────┐
│ Mocked Backoffice │ ← No backend, realistic UI
└─────────────────────────┘
┌─────────────────────────────────────┐
│ Unit Tests │ ← Fast, isolated
└─────────────────────────────────────┘
Critical: E2E tests must use @umbraco/playwright-testhelpers and @umbraco/json-models-builders. Never write raw Playwright tests for Umbraco.
/umbraco-testingComplete working examples in the examples/ folder:
- Blueprint - Section + Menu + Dashboard + Workspace
- TimeDashboard - 13 extension types working together
- tree-example - Settings tree with workspace + complete testing pyramid (32 tests across unit, mocked, and E2E)
- notes-wiki - Full-stack with C# backend (27 skills)
- document-type-crud - E2E testing example with testhelpers
Invoke any skill by name:
Use the umbraco-dashboard skill to create a new dashboard
Or reference in conversation:
I need to create a custom tree in the Settings section
Claude will automatically use the relevant skills (umbraco-tree, umbraco-conditions, etc.)
Umbraco-CMS-Backoffice-Skills/
├── .claude-plugin/marketplace.json # Marketplace manifest
├── plugins/
│ ├── umbraco-backoffice-skills/ # Plugin with 58 extension skills
│ │ ├── .claude-plugin/plugin.json
│ │ └── skills/
│ │ ├── umbraco-dashboard/SKILL.md
│ │ ├── umbraco-tree/SKILL.md
│ │ └── ... (57 skills)
│ └── umbraco-testing-skills/ # Plugin with 8 testing skills
│ ├── .claude-plugin/plugin.json
│ └── skills/
│ ├── umbraco-testing/SKILL.md
│ ├── umbraco-e2e-testing/SKILL.md
│ └── ... (8 skills + examples)
├── examples/ # Working code examples
├── Umbraco-CMS.Skills/ # .NET test project
└── .claude/
├── commands/ # Local commands
└── settings.local.json # Local permissions
MIT
Built by Phil W (@hifi-phil)
Skills based on Umbraco CMS backoffice documentation.
The TimeDashboard and tree-example examples are based on work by Kevin Jump (@KevinJump):
- TimeDashboard: KevinJump/TimeDashboard
- tree-example: KevinJump/Umbraco-Tree-Example
- Blog Series: Early Adopter's Guide to Umbraco v14
These examples demonstrate sections, trees, workspaces, menus, header apps, modals, and server communication patterns for Umbraco backoffice extensions.