Since many projects will need special features in their documentation, Sphinx is designed to be extensible on several levels.
First, you can add new builders to support new output formats or actions on the parsed documents. Then, it is possible to register custom reStructuredText roles and directives, extending the markup. And finally, there are so-called “hook points” at strategic places throughout the build process, where an extension can register a hook and run specialized code.
The configuration file itself can be an extension, see the extensions configuration value docs.
These extensions are built in and can be activated by respective entries in the extensions configuration value:
There are several extensions that are not (yet) maintained in the Sphinx distribution. The Wiki at BitBucket maintains a list of those.