Initial style guide
diff --git a/doc/c-style-guide.md b/doc/c-style-guide.md
new file mode 100644
index 0000000..5613293
--- /dev/null
+++ b/doc/c-style-guide.md
@@ -0,0 +1,41 @@
+GRPC C STYLE GUIDE
+=====================
+
+Background
+----------
+
+Here we document style rules for C usage in the gRPC Core library.
+
+General
+-------
+
+- Layout rules are defined by clang-format, and all code should be passed through
+  clang-format. A (docker-based) script to do so is included in 
+  tools/distrib/clang_format_code.sh.
+
+Header Files
+------------
+
+- Public header files (those in the include/grpc tree) should compile as pedantic C89
+- Header files should be self-contained and end in .h.
+- All header files should have a #define guard to prevent multiple inclusion.
+  To guarantee uniqueness they should be based on the file's path.
+
+  For public headers: include/grpc/grpc.h --> GRPC_GRPC_H
+
+  For private headers: 
+  src/core/channel/channel_stack.h --> GRPC_INTERNAL_CORE_CHANNEL_CHANNEL_STACK_H
+
+C99 Features
+------------
+
+- Variable sized arrays are not allowed
+- Do not use the 'inline' keyword
+
+Symbol Names
+------------
+
+- Non-static functions must be prefixed by grpc_
+- static functions must not be prefixed by grpc_
+- enumeration values and #define names are uppercased, all others are lowercased
+- Multiple word identifiers use underscore as a delimiter (NEVER camel casing)