> For the complete documentation index, see [llms.txt](https://docs.hyperdbg.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.hyperdbg.org/contribution/style-guide/command-style.md).

# Command style

For ease of use, HyperDbg uses the same command-style as Windbg, which means there are different kinds of commands in HyperDbg.

‌In HyperDbg we have 3 types of commands , "**regular**", "**meta**", "**extension**".

‌**Regular commands**, e.g., "test", apply to the debugging session. These are the ones controlling and getting information from the debugging target.

‌**Meta commands** are prefixed with a dot, e.g., ".test". Meta commands apply to the debugger itself, meaning that these commands are the ones controlling the debugger itself, not the debugging target.

‌**Extension commands** are prefixed with an exclamation mark, e.g. "!test", which is defined in debugger extensions and features.

‌Here is a full example of a command with a detailed description of each field used in documentation.

{% file src="/files/MIHRPuziu6VsQnvT92aP" %}
Download Command Documentation Style
{% endfile %}

### Command Parameters

HyperDbg uses a static approach for naming the parameter in the debugger help command and the documentation. Here's a brief of how to interpret each field.

Imagine we have the following parameter:

**\[pid ProcessId (hex)] (optional)**

Each word which **lower case** should strictly come after the command. Each word with the **capital case** is the parameter's name in which its type is also mentioned between two parentheses.

If the **(optional)** word is mentioned after the parameter, it is optional, and you can omit it.

```
!test pid 1240
```

Another example,

**\[default]**

As you can see, the default is started with **lower case**, so we should use the command with the `default` keyword.

```
!test default
```
