Working with Registry
SkillDev toolsLets your agent look up and change IntelliJ Registry keys and feature flags.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Working with Registry skill
About this capability
Use the IntelliJ Registry API for registry keys and feature flags.
What this skill tells your AI
The instructions your AI receives, as published by jetbrains/intellij-community in .agents/skills/registry/SKILL.md and read by ahel’s review.
Guidelines for using the IntelliJ Registry API.
Documentation
- Defining Registry Keys: Registry.md - How to declare keys in
plugin.xmlorregistry.properties - Cloud Registry: Cloud Registry and Notifications.md - Remote registry updates for JetBrains IDEs
Quick Reference
Defining a Registry Key
Always prefer declaring in plugin.xml (not registry.properties):
<registryKey key="my.feature.enabled"
defaultValue="true"
description="Enables my feature"
restartRequired="false"/>
To override in a dependent plugin:
<registryKey key="my.feature.enabled"
defaultValue="false"
description="Enables my feature"
restartRequired="false"
overrides="true"/>
Accessing the Registry
In suspending code:
val isEnabled = RegistryManager.getInstanceAsync().get("my.key")
In blocking code:
val isEnabled = RegistryManager.getInstance().get("my.key")
Access via Registry.get() or Registry.is() is effectively deprecated, since it might cause problems during early IDE startup.
Always prefer the RegistryManager when possible.
Early Startup: Registry.is() with Default Value
When code may run before COMPONENTS_LOADED state (e.g., during EULA dialog, splash screen),
you MUST use Registry.is(key, defaultValue) with an explicit default:
// Required for early startup code
Registry.`is`("my.key", false) // default must match registry.properties
How to find the default value:
- Search in
community/platform/util/resources/misc/registry.properties - Or check the
<registryKey>declaration inplugin.xml
Why: Registry.is(key) without default throws an exception if called before
LoadingState.COMPONENTS_LOADED. The safe overload returns the provided default
when Registry is not yet initialized.
Override via Command Line
For testing or run configurations:
-Dmy.registry.key=value
Registry in Tests
Use @RegistryKey annotation instead of Registry.get().setValue():
@Test
@RegistryKey(key = "my.registry.key", value = "true")
fun testWithRegistryEnabled() { ... }
See writing-tests.md for more test patterns.
Signals
- GitHub stars
- 21k
- Forks
- 6k
- Last commit
- Sep 2026
Others that do the same job
Advanced
- Catalog kind
- skill
- Gateway key
registry-jetbrains- Source
- github.com/jetbrains/intellij-community