This document discusses GraphQL directives and how to extend GraphQL with custom directives. It begins by explaining what directives are and provides examples of built-in directives like @include and @deprecated. It then discusses why you would want to create custom directives for things like text formatting, date formatting, and access restrictions. The document dives into how to declare and define a directive as well as how to write a directive resolver. It concludes by introducing the graphql-directive library for easily adding directives and resolving common issues like caching.