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.
How this skill is triggered — by the user, by Claude, or both
Slash command
/gnome-extension-reviewer:ego-scaffoldThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Scaffold a new GNOME Shell extension with EGO-compliant structure.
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>npx claudepluginhub zvibaratz/gnome-extension-reviewerGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.