用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/umbraco/Umbraco-CMS-Backoffice-Skills --skill umbraco-extension-template命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Run tests from skill examples and generate a report (project)
Validate links and references in SKILL.md files using deterministic scripts
Umbraco backoffice extension customisation - complete working examples showing how extension types combine
正在显示 SKILL.md
基于 SOC 职业分类
| name | umbraco-extension-template |
| description | Create new Umbraco backoffice extensions using the official dotnet template |
| version | 1.0.0 |
| location | managed |
| allowed-tools | Read, Write, Edit, WebFetch, Bash |
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.
Always fetch the latest docs before implementing:
umbraco-version-guard first to confirm the target site's
Umbraco major matches the major these skills target. Stop on a mismatch.dotnet new install Umbraco.Templatesdotnet new umbraco-extension -n MyExtensioncd MyExtension/Client && npm installnpm run watchnpm run builddotnet new install Umbraco.Templates
dotnet new umbraco-extension -n MyExtension
dotnet new umbraco-extension -n MyExtension -ex
The -ex flag adds example code including:
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
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
# 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
dotnet publish --configuration Release
dotnet pack --configuration Release
After running the template, add your first manifest in Client/src/:
export const manifests: Array<UmbExtensionManifest> = [
{
name: "My Extension Entrypoint",
alias: "MyExtension.Entrypoint",
type: "backofficeEntryPoint",
js: () => import("./entrypoint.js"),
},
];
import type { UmbEntryPointOnInit } from "@umbraco-cms/backoffice/extension-api";
export const onInit: UmbEntryPointOnInit = (_host, _extensionRegistry) => {
console.log("Extension loaded!");
};
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).
After creating your extension, use these skills to add functionality:
umbraco-sectionsumbraco-dashboardumbraco-menuumbraco-workspaceumbraco-treeFor complete extension blueprints with working examples:
umbraco-backofficeThat's it! Always fetch fresh docs, use the template to scaffold, add the project reference, then add extension types as needed.