Installs into .claude/skills of the current project.
Are you the author of Extension Prefs?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/itsnin-extension-prefs)
# extension-prefs
## Entry Point
`prefs.js` at root. Exports default class extending `ExtensionPreferences`.
## fillPreferencesWindow
Single method receives `Adw.PreferencesWindow`. Add `Adw.PreferencesPage` instances.
## Process Isolation
Prefs process must never import St, Clutter, Meta, or Shell.
Only Adw, Gtk, Gio, GLib, GObject are allowed.
## Binding
`settings.bind(key, widget, property, Gio.SettingsBindFlags.DEFAULT)`
## Shortcut Rows
Use `Adw.ActionRow` with `Gtk.ShortcutLabel` or custom accelerator capture.
## Gdk Keyval Name
`Gdk.keyval_name()` can return null for unknown keyvals. Always null-check before calling methods on the result.
## Canonical Accelerator Format
When building accelerator strings from user input in prefs, use `Gtk.accelerator_name_with_keycode(null, keyval, keycode, mask)` rather than manual string concatenation. It produces the canonical format that `gtk_accelerator_parse()` and Mutter's `grab_accelerator` expect, handling casing, modifier order, and special key names automatically. Filter the modifier mask through `Gtk.accelerator_get_default_mod_mask()` to strip non-accelerator modifiers like Lock.