mcpField
U
umbraco-global-context

umbraco-global-context

github.com/umbracoDevelopment27387 installsUpdated 6w ago
Repository

About umbraco-global-context

umbraco-global-context is a skill for building shared, type-safe contexts that last for an Umbraco backoffice session. It guides developers through deciding what state or services to share and generating the token, implementation, and manifest.

Key features

  1. 01Shares state and functions across extensions
  2. 02Persists for the backoffice session
  3. 03Provides typed context tokens and implementations
  4. 04Guides context and manifest generation

Use cases

  1. 01Coordinating communication between extensions
  2. 02Sharing centralized services across the backoffice
  3. 03Creating a session-wide context for shared state

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/umbraco/umbraco-cms-backoffice-skills --skill umbraco-global-context

After installing, type/umbraco-global-contextin Claude Code to confirm it loaded.

Details

From the project README

Umbraco Global Context

What is it?

Global contexts create a shared, type-safe layer of data and functions accessible throughout the backoffice. Unlike scoped contexts (like Workspace Contexts), global contexts persist for the entire backoffice session. Use them for sharing state between extensions, managing centralized services, or coordinating communication. Note: Prefer more specific context types when possible - Umbraco uses global contexts sparingly.

Documentation

Always fetch the latest docs before implementing:

Related Foundation Skills

  • Context API: For understanding context consumption patterns

    • Reference skill: umbraco-context-api
  • State Management: For reactive state within contexts

    • Reference skill: umbraco-state-management

Workflow

  1. Fetch docs - Use WebFetch on the URLs above
  2. Ask questions - What state to share? What services needed? Could a workspace context work instead?
  3. Generate files - Create context token + implementation + manifest based on latest docs
  4. Explain - Show what was created and how to consume the context

Minimal Examples

Context Token (my-global-context.token.ts)
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
import type { MyGlobalContext } from './my-global-context.js';

export const MY_GLOBAL_CONTEXT = new UmbContextToken<MyGlobalContext>(
  'My.GlobalContext'
);
Context Implementation (my-global-context.ts)
import { UmbContextBase } from '@umbraco-cms/backoffice/class-api';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import { MY_GLOBAL_CONTEXT } from './my-global-context.token.js';

export class MyGlobalContext extends UmbContextBase {
  #currentValue = '';

  constructor(host: UmbControllerHost) {
    super(host, MY_GLOBAL_CONTEXT);
  }

  getValue(): string {
    return this.#currentValue;
  }

  setValue(value: string): void {
    this.#currentValue = value;
  }
}
Manifest (umbraco-package.json)
{
  "name": "My Global Context Package",
  "extensions": [
    {
      "type": "globalContext",
      "alias": "My.GlobalContext",
      "name": "My Global Context",
      "js": "/App_Plugins/MyPackage/my-global-context.js"
    }
  ]
}
Consuming the Context
import { UmbElementMixin } from '@umbraco-cms/backoffice/element-api';
import { MY_GLOBAL_CONTEXT } from './my-global-context.token.js';

class MyElement extends UmbElementMixin(LitElement) {
  #myContext?: MyGlobalContext;

  constructor() {
    super();
    this.consumeContext(MY_GLOBAL_CONTEXT, (instance) => {
      this.#myContext = instance;
    });
  }
}

That's it! Always fetch fresh docs, keep examples minimal, generate complete working code.

Comments

Markdown supported