umbraco-extension-template

Umbraco Extension Template

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "umbraco-extension-template" with this command: npx skills add umbraco/umbraco-cms-backoffice-skills/umbraco-umbraco-cms-backoffice-skills-umbraco-extension-template

Umbraco Extension Template

What is it?

The Umbraco Extension Template is the official .NET template for creating backoffice extensions. It provides a pre-configured project structure with TypeScript/Vite tooling, proper folder structure, and all essential files needed for extension development. Every Umbraco backoffice extension should start with this template.

Documentation

Always fetch the latest docs before implementing:

Prerequisites

  • .NET SDK 9.0 or later

  • Node.js 22 or later

Workflow

  • Install template (one-time): dotnet new install Umbraco.Templates

  • Create extension: dotnet new umbraco-extension -n MyExtension

  • Install dependencies: cd MyExtension/Client && npm install

  • Start development: npm run watch

  • Build for production: npm run build

Commands

Install the Template

dotnet new install Umbraco.Templates

Create New Extension (Basic)

dotnet new umbraco-extension -n MyExtension

Create New Extension (With Examples)

dotnet new umbraco-extension -n MyExtension -ex

The -ex flag adds example code including:

  • Sample API controller

  • Swagger API registration

  • Example dashboard component

  • Generated API client

Project Structure

Basic Template

MyExtension/ ├── MyExtension.csproj # .NET project file ├── Constants.cs # Extension constants ├── README.md # Setup instructions └── Client/ # TypeScript source ├── package.json ├── tsconfig.json ├── vite.config.ts └── src/ └── ... # Your extension code

With Examples (-ex flag)

MyExtension/ ├── MyExtension.csproj ├── Constants.cs ├── README.md ├── Composers/ # C# composers │ └── SwaggerComposer.cs # API documentation setup ├── Controllers/ # C# API controllers │ └── MyExtensionController.cs └── Client/ ├── package.json ├── tsconfig.json ├── vite.config.ts └── src/ ├── api/ # Generated API client ├── dashboards/ # Example dashboard └── entrypoints/ # Extension entry point

Development Commands

Navigate to Client folder

cd MyExtension/Client

Install dependencies

npm install

Development with hot reload

npm run watch

Production build

npm run build

Type checking

npm run check

Build and Deploy

Publish the Extension

dotnet publish --configuration Release

Create NuGet Package

dotnet pack --configuration Release

Minimal Example

After running the template, add your first manifest in Client/src/ :

manifest.ts

export const manifests: Array<UmbExtensionManifest> = [ { name: "My Extension Entrypoint", alias: "MyExtension.Entrypoint", type: "backofficeEntryPoint", js: () => import("./entrypoint.js"), }, ];

entrypoint.ts

import type { UmbEntryPointOnInit } from "@umbraco-cms/backoffice/extension-api";

export const onInit: UmbEntryPointOnInit = (_host, _extensionRegistry) => { console.log("Extension loaded!"); };

IMPORTANT: Add Extension to Umbraco Instance

After creating a new extension, you MUST add it as a project reference to the main Umbraco instance. Without this step, the extension will not load.

Reference skill: umbraco-add-extension-reference

This skill explains how to add the new extension's .csproj file as a <ProjectReference> in the main Umbraco project (e.g., Umbraco-CMS.Skills.csproj ).

Related Skills

After creating your extension, use these skills to add functionality:

  • Sections: Reference skill: umbraco-sections

  • Dashboards: Reference skill: umbraco-dashboard

  • Menus: Reference skill: umbraco-menu

  • Workspaces: Reference skill: umbraco-workspace

  • Trees: Reference skill: umbraco-tree

For complete extension blueprints with working examples:

  • Reference skill: umbraco-backoffice

That's it! Always fetch fresh docs, use the template to scaffold, add the project reference, then add extension types as needed.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

umbraco-backoffice

No summary provided by upstream source.

Repository SourceNeeds Review
General

umbraco-dashboard

No summary provided by upstream source.

Repository SourceNeeds Review
General

umbraco-quickstart

No summary provided by upstream source.

Repository SourceNeeds Review
General

umbraco-property-editor-ui

No summary provided by upstream source.

Repository SourceNeeds Review