I want to read and write custom data to TCP options field using Scapy. I know how to use TCP options field in Scapy in "normal" way as dictionary, but is it possible to write to it byte per byte?
You can not directly write the TCP options field byte per byte, however you can either:

write your entire TCP segment byte per byte: TCP("\x01...\x0n")
add an option to Scapy's code manually in scapy/layers/inet.py TCPOptions structure

These are workarounds and a definitive solution to this would be to implement a byte per byte TCP options field and commit on Scapy's github of course.
Read/Write TCP options field