Do not use unscoped using statements
Don't use magic values, use enums instead.
Don't use exceptions, period.
If you allocate dynamic (heap) memory that memory can only be used inside of the class that creates it. If you need to use memory outside of that class, use smart pointers to share or transfer ownership.
Do not use goto, setjmp, longjmp, and limit recursion.
Pull requests should aim to change less than 4 files
Limit the use of the preprocessor
Do not use implementation inheritance. If you use inheritance, use interface inheritance (abstract class). If you think you need implementation inheritance, use composition instead.
Do not use auto unless it makes the code clearer to read or safer. Don't use it to save you from writing the type
Only dereference nested pointers one at a time. Eg no **variable
Check ALL return values. If you want to ignore a value, cast the return value to void.(void)printf(...)
Don't split up code into separate functions just to make things easier to read. Long functions are okay. Use limited commenting to help the reader follow. Split code into separate functions only when you reuse that functionality in multiple locations.
Class member variables should be PascalCase and local variables and function arguments should be camelCase
Minimize heap allocations frame to frame. Allocate what you must in batches instead of many small allocations.
Write all your code in English, but when you have to write C++, test it.
Use descriptive git commit messages outlined in conventional commits table.