In this paper a logic of capabilities is introduced. We start by defining a language in which not only knowledge and actions of agents can be expressed, but also the abilities. The semantics for this language is given by extended Kripke models. Equivalence transformations on actions are defined in such a way that equivalent actions have equivalent results and that the abilities of an agent are closed under these transformations. The planning capacities of the agent are considered by looking at the Can-predicate and the Cannot-predicate. The former indicates that an agent knows that he can achieve a given goal by performing a given action, the latter indicates that the agent knows that that he cannot achieve the given goal by performing the given action. It turns out that the possibility to express the abilities of an agent provides for flexible and intuitively appealing framework.