# Actions

> Guidelines for implementing IntelliJ actions (AnAction). Use those rules when you need to create or change an action in the intellij platform.

- Skill: `jetbrains/actions` (Agent Skill)
- Install (CLI): `npx skillmds@latest add jetbrains/actions`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jetbrains/actions/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: jetbrains (https://skillmd.com/u/jetbrains)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/jetbrains/actions

---


# Actions

Guidelines for implementing IntelliJ actions (`AnAction`).

## Documentation

- [Action System](../../../../docs/IntelliJ-Platform/4_man/Action-System.md) - Architecture and usage of the action system

## Best Practices

- **NEVER instantiate Presentation in action constructors** - Use no-argument constructors
- **Define text, description, and icon in plugin.xml** - Not in constructor parameters
- **Follow the convention:**
  1. Set the `id` attribute for the action in plugin.xml
  2. Optionally set the `icon` attribute if an icon is needed
  3. Set text and description in the message bundle (e.g., GitBundle.properties):
    - `action.<action-id>.text=Translated Action Text`
    - `action.<action-id>.description=Translated Action Description`

**Good example:**

Kotlin:
```kotlin
class MyAction : AnAction()
```

plugin.xml:
```xml
<action id="My.Action.Id"
        class="my.package.MyAction"
        icon="my.package.MyIcons.ICON"/>
```

Bundle.properties:
```properties
action.My.Action.Id.text=My Action
action.My.Action.Id.description=Description of my action
```

