Skip to main content
umbraco-current-user-action Implement current user actions in Umbraco backoffice using official docs
Ir a la instalación Skills Marketplace Descubre y explora habilidades de IA creadas por la comunidad.
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Copiar promptMostrar detalles del prompt Un comando directo omite el prompt de revisión. Revisa el origen antes de ejecutarlo.
npx skills add https://github.com/umbraco/Umbraco-CMS-Backoffice-Skills --skill umbraco-current-user-actionEl comando permanece en una sola línea. Desplázate horizontalmente para revisarlo antes de copiarlo.
¿Prefieres una copia local? Descarga los archivos que SkillsMP tiene disponibles ahora.
Descargar Zip Descargando... Ocupaciones relacionadas
SOC
Basado en la clasificación ocupacional SOC
name umbraco-current-user-action description Implement current user actions in Umbraco backoffice using official docs version 1.0.0 location managed allowed-tools Read, Write, Edit, WebFetch
Umbraco Current User Action
What is it?
Current User Actions appear in the user menu (accessed by clicking the user avatar in the top-right corner of the backoffice). They provide quick actions for the currently logged-in user, such as profile settings, preferences, or custom functionality. Actions can execute code or navigate to a URL.
Documentation
Always fetch the latest docs before implementing:
Related Foundation Skills
Workflow
Fetch docs - Use WebFetch on the URLs above
Ask questions - What action? Navigate or execute? Conditions needed?
Generate files - Create manifest + action class based on latest docs
Explain - Show what was created and how to test
Minimal Examples
Manifest with Default Kind (manifests.ts) import type { ManifestCurrentUserActionDefaultKind } from '@umbraco-cms/backoffice/extension-registry' ;
const manifest : ManifestCurrentUserActionDefaultKind = {
type : 'currentUserAction' ,
kind : 'default' ,
alias : 'My.CurrentUserAction.Preferences' ,
name : 'User Preferences' ,
api : () => import ('./preferences-action.js' ),
meta : {
icon : 'icon-settings' ,
label : 'My Preferences' ,
},
};
export const manifests = [manifest];
Action Implementation (preferences-action.ts) import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api' ;
import type { UmbCurrentUserAction } from '@umbraco-cms/backoffice/current-user' ;
export class PreferencesAction extends UmbControllerBase implements UmbCurrentUserAction {
async getHref (): Promise <string | undefined > {
return undefined ;
}
async execute (): Promise <void > {
console .log ('Opening preferences...' );
}
}
export default PreferencesAction ;
Link-based Action export class ExternalLinkAction extends UmbControllerBase implements UmbCurrentUserAction {
async getHref (): Promise <string | undefined > {
return 'https://docs.umbraco.com' ;
}
async execute (): Promise <void > {
}
}
Action Opening Modal import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api' ;
import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal' ;
import type { UmbCurrentUserAction } from '@umbraco-cms/backoffice/current-user' ;
export class SettingsAction extends UmbControllerBase implements UmbCurrentUserAction {
async getHref (): Promise <string | undefined > {
return undefined ;
}
async execute (): Promise <void > {
const modalManager = await this .getContext (UMB_MODAL_MANAGER_CONTEXT );
const modal = modalManager.open (this , MY_SETTINGS_MODAL , {
data : {},
});
await modal.onSubmit ();
}
}
export default SettingsAction ;
Action with Conditions const manifest : ManifestCurrentUserActionDefaultKind = {
type : 'currentUserAction' ,
kind : 'default' ,
alias : 'My.CurrentUserAction.Admin' ,
name : 'Admin Settings' ,
api : () => import ('./admin-action.js' ),
meta : {
icon : 'icon-lock' ,
label : 'Admin Settings' ,
},
conditions : [
{
alias : 'Umb.Condition.UserPermission.Admin' ,
},
],
};
Custom Element Action import type { ManifestCurrentUserAction } from '@umbraco-cms/backoffice/extension-registry' ;
const manifest : ManifestCurrentUserAction = {
type : 'currentUserAction' ,
alias : 'My.CurrentUserAction.Custom' ,
name : 'Custom Action' ,
element : () => import ('./custom-action.element.js' ),
api : () => import ('./custom-action.js' ),
meta : {},
};
Navigating to Internal Route export class ProfileAction extends UmbControllerBase implements UmbCurrentUserAction {
async getHref (): Promise <string | undefined > {
return '/section/settings/workspace/user-profile' ;
}
async execute (): Promise <void > {}
}
Meta Properties (Default Kind) Property Description iconIcon displayed in the menu labelText displayed in the menu
Action Interface Method Description getHref()Returns URL for link-based actions execute()Called when action is clicked (if no href)
That's it! Always fetch fresh docs, keep examples minimal, generate complete working code.