Hi Gerriko
You are right that the manual only explains how to setup services with characteristics.
Your search got you rather close. To add a user description to a characteristics, please add CHARACTERISTIC_USER_DESCRIPTION with suitable attributes.
E.g. the gatt counter service with a user description would be
// Counter Service
PRIMARY_SERVICE, 0000FF10-0000-1000-8000-00805F9B34FB
// Counter Characteristic, with read, write and notify
CHARACTERISTIC, 0000FF11-0000-1000-8000-00805F9B34FB, READ | WRITE | NOTIFY | DYNAMIC,
CHARACTERISTIC_USER_DESCRIPTION, READ
The current version of compile_gatt.py assumes that the user description is dynamic, which means that you can provide the value to a read in the att_read_callback.
In the example above, compile_gatt.py provides the following define.
ATT_CHARACTERISTIC_0000FF11_0000_1000_8000_00805F9B34FB_01_USER_DESCRIPTION_HANDLE
Cheers
Matthias