What problem does it solve? Creating a new extension in the Universe Editor monorepo involves many subtle rules—manifest schema, engines.universe semver ranges, activation events, esbuild setup, and NLS localization—and mistakes cause extensions to be silently skipped by the scanner. This Skill encodes the full recipe so a new extension works on the first try. ## Core Features & Use Cases - Two-form scaffolding: Guides the choice between a declaration-only extension (just a package.json, like claude-helper) and a code extension (manifest + esbuild + src/extension.ts, like ai or numbered-bookmarks). - Contribution point reference: Covers commands, keybindings, configuration, menus, submenus, jsonValidation, and activationEvents with the exact zod-validated formats. - Pitfall prevention: Documents the engines.universe compatibility red line (custom semver, no || ranges, pre-1.0 caret locking) that silently blocks extensions, plus testing patterns with vi.mock for the extension-api facade. - Use Case: Ask the agent to create a new extension that registers a command with a keybinding and persists state via workspaceState; it produces the full directory skeleton, manifest, activation code, and tests following repo conventions. ## Quick Start Create a new built-in extension named my-feature that registers a command with a keybinding and a configuration setting, following the extensions/ai template.