Scaffolds new GNOME Shell extension projects with EGO-compliant structure, lifecycle boilerplate, eslint-config-gnome, and generated files including extension.js, prefs.js, metadata.json, schema, stylesheet, and tooling. Use for starting fresh extensions.
npx claudepluginhub zvibaratz/gnome-extension-reviewerThis skill uses the workspace's default tool permissions.
Scaffold a new GNOME Shell extension with EGO-compliant structure.
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
Scaffold a new GNOME Shell extension with EGO-compliant structure.
Before scaffolding, gather from the user:
name@username (e.g., my-extension@JohnDoe)<uuid>/
├── extension.js # Main extension with lifecycle boilerplate
├── prefs.js # Preferences UI (if requested)
├── metadata.json # EGO-compliant metadata
├── stylesheet.css # Empty stylesheet with scoped example
├── schemas/
│ └── <schema-id>.gschema.xml # GSettings schema (if requested)
├── eslint.config.mjs # ESLint with eslint-config-gnome
├── package.json # For ESLint dependency
├── LICENSE # GPL-2.0-or-later
└── .gitignore
Templates in the assets/ directory use ${PLACEHOLDER} syntax:
| Variable | Description | Example |
|---|---|---|
${UUID} | Extension UUID | my-extension@JohnDoe |
${NAME} | Human-readable name | My Extension |
${DESCRIPTION} | Extension description | Does something useful |
${SHELL_VERSIONS} | JSON array of versions | ["47", "48"] |
${SCHEMA_ID} | Full schema ID | org.gnome.shell.extensions.my-extension |
${SCHEMA_SUFFIX} | Schema path suffix | my-extension |
${CLASS_NAME} | PascalCase class name | MyExtension |
${YEAR} | Current year | 2026 |
${AUTHOR} | Author name | John Doe |
assets/, read it, replace placeholders, write to targetstylesheet.css with a scoped class example: .${SCHEMA_SUFFIX}-label { }package.json with eslint + eslint-config-gnome devDependencies.gitignore (node_modules/, *.zip, .claude/, CLAUDE.md)LICENSE with GPL-2.0-or-later boilerplateglib-compile-schemas schemas/ if glib-compile-schemas is availablenpm install if npm is availableego-lint to verify: "Run ego-lint to verify your new extension is EGO-compliant"Tell the user:
extension.js to add extension functionality in enable()prefs.js to add preference controlsglib-compile-schemas schemas/ after schema changesgnome-extensions enable <uuid>