---
title: 'ARC0002: Command-like class is not decorated'
editUrl: https://github.com/Cratis/Arc.TypeScript/edit/main/Documentation/code-analysis/ARC0002.md
description: Mark handler-shaped classes as Arc commands.
---


## What

A concrete class has a public instance field and an instance `handle()` but no `@command()`. Rule: `arc-core/arc0002`. Abstract classes, static handlers, and classes ending in `Helper` or `Extensions` are excluded. With type information, a handler taking an Arc command is left to ARC0003.

## Why

Arc does not discover an undecorated command; `handle()` alone is not a route. A service with no public instance fields is not assumed to be a command.

## Bad

```ts
export class Register { title!: string; handle() {} }
```

## Good

```ts
@command()
export class Register { @field(String) title!: string; handle() {} }
```

If the class is a service rather than a command, no decorator is needed.
