> For the complete documentation index, see [llms.txt](https://game-kit-controller.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://game-kit-controller.gitbook.io/docs/major-systems/abilities-and-skills-systems/ability-systems/tutorial-create-a-custom-ability.md).

# Tutorial - Create a Custom Ability

The system works via events. As in when the key assigned to use it (Q in this example), sends an event on each type of press. Either down, up, or hold.

![](https://3552900959-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-McLLp9jDL-LIuzRrSTQ%2Fuploads%2FsF1KJYcJeuxWShU2vcD5%2Fcustomabilitysystem1.png?alt=media\&token=3176cbc0-4b5b-4f30-98ac-91c63c8f5175)

In this example, the **Push Objects Systems**, calls to the **Action System** to play a specific animation and push objects around. The component also allows you to make small script behaviors if needed for specific interactions or to use the already created elements as you prefer.

![](https://3552900959-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-McLLp9jDL-LIuzRrSTQ%2Fuploads%2FRcdkjrBPQbAriLtiiHgs%2Fcustomabilitysystem2.png?alt=media\&token=f62cb19d-43d6-4dda-8dad-9021d5a3c149)
