A Claude Code plugin marketplace with 57 skills for Umbraco backoffice customization.
Add the marketplace:
/plugin marketplace add hifi-phil/Umbraco_CC_Backoffice_SkillsInstall the skills plugin:
/plugin install umbraco-backoffice-skills@umbraco-skills-marketplaceTo test and view your extensions, you need an Umbraco instance in your project. The umbraco-add-extension-reference skill will automatically find this instance and register your extensions as project references.
Quick setup with PSW CodeShare:
Use PSW CodeShare to generate a ready-to-run Umbraco project with your preferred configuration. This tool creates a complete .NET solution with Umbraco pre-configured—just download and run.
These skills work best when Claude has access to the Umbraco CMS 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 Umbraco CMS repository alongside your project:
git clone https://github.com/umbraco/Umbraco-CMS.git
-
Add the backoffice client source as a working directory in Claude Code:
/add-dir /path/to/Umbraco-CMS/src/Umbraco.Web.UI.Client
This gives Claude direct access to the backoffice TypeScript source code, making it much more effective at generating accurate, idiomatic Umbraco extensions.
These three skills are your entry points for Umbraco backoffice development. Start here.
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 |
Invoke: "Use the umbraco-backoffice skill to understand the extension map"
The official starting point for any extension. Creates a fully configured project with:
- .NET project structure with proper SDK configuration
- TypeScript/Vite tooling with hot reload
- npm scripts for development and production builds
- Folder structure ready for extension code
Commands:
# Install template (one-time)
dotnet new install Umbraco.Templates
# Create basic extension
dotnet new umbraco-extension -n MyExtension
# Create with examples (recommended)
dotnet new umbraco-extension -n MyExtension -ex
# Install dependencies and start development
cd MyExtension/Client && npm install && npm run watchUse this skill when:
- Creating a brand new backoffice extension
- Need a properly configured TypeScript/Vite project
- Starting from scratch (not copying from blueprints)
Invoke: "Use the umbraco-extension-template skill to create a new extension called MyFeature"
Required after creating any extension. Without this step, your extension won't load.
This skill:
- Finds your main Umbraco project (the one with
Umbraco.Cmspackage) - Calculates the relative path to your new extension
- Adds a
<ProjectReference>entry to the.csprojfile
Example result:
<ItemGroup>
<ProjectReference Include="../MyExtension/MyExtension.csproj" />
</ItemGroup>Use this skill when:
- After creating a new extension with the template
- After copying a blueprint to your project
- Extension exists but doesn't appear in the backoffice
Invoke: "Use the umbraco-add-extension-reference skill to register MyExtension"
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 working examples in the examples/ folder:
- Blueprint - Section + Menu + Dashboard + Workspace
- TimeDashboard - 13 extension types working together
- tree-example - Settings tree with workspace
- notes-wiki - Full-stack with C# backend (27 skills)
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.)
UmbracoCMS_Skills/
├── .claude-plugin/marketplace.json # Marketplace manifest
├── plugins/
│ └── umbraco-backoffice-skills/ # Plugin with all 57 skills
│ ├── .claude-plugin/plugin.json # Plugin manifest
│ └── skills/ # Flat skill directory
│ ├── umbraco-dashboard/SKILL.md
│ ├── umbraco-tree/SKILL.md
│ ├── umbraco-workspace/SKILL.md
│ └── ... (57 skills total)
├── 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.