diff --git a/core/modules/system/system.api.php b/core/modules/system/system.api.php
index 4c95a00..bdf8e6c 100644
--- a/core/modules/system/system.api.php
+++ b/core/modules/system/system.api.php
@@ -1201,6 +1201,47 @@ function hook_template_preprocess_default_variables_alter(&$variables) {
 }
 
 /**
+ * Declares a template file extension to be used with a theme engine.
+ *
+ * This hook is used in a theme engine implementation in the format of
+ * ENGINE_extension().
+ *
+ * @return string
+ *   The file extension the theme engine will recognize.
+ */
+function hook_extension() {
+  // Extension for template base names in Twig
+  return '.html.twig';
+}
+
+/**
+ * Renders a template using the theme engine.
+ *
+ * This hook is used in a theme engine implementation in the format of
+ * ENGINE_render_template(). It gets passed a template name and an array of
+ * variables and returns a string containing the rendered template.
+ *
+ * @param string template_file
+ *   The relative path to the template to be rendered including its extension in
+ *   the format 'path/to/TEMPLATE_NAME.EXT'. The path should be relative to the
+ *   drupal root directory.
+ * @param array $variables
+ *   A keyed array of variables that are available for composing the output. The
+ *   theme engine is responsible for passing all the variables to the template.
+ *   If all or just a subset of those variables are used in the template may
+ *   vary depending on the code in the template.
+ *
+ * @return string
+ *   The output generated from the template. In most cases this will be a string
+ *   containing HTML markup.
+ */
+function hook_render_template($template_file, $variables) {
+  $twig_service = \Drupal::service('twig');
+
+  return $twig_service->loadTemplate($template_file)->render($variables);
+}
+
+/**
  * Log an event message.
  *
  * This hook allows modules to route log events to custom destinations, such as
diff --git a/core/themes/engines/phptemplate/phptemplate.engine b/core/themes/engines/phptemplate/phptemplate.engine
index 0521092..a4eee49 100644
--- a/core/themes/engines/phptemplate/phptemplate.engine
+++ b/core/themes/engines/phptemplate/phptemplate.engine
@@ -31,6 +31,8 @@ function phptemplate_extension() {
 }
 
 /**
+ * Implements hook_render_template().
+ *
  * Renders a system default template, which is essentially a PHP template.
  *
  * @param $template_file
diff --git a/core/themes/engines/twig/twig.engine b/core/themes/engines/twig/twig.engine
index d596715..3816343 100644
--- a/core/themes/engines/twig/twig.engine
+++ b/core/themes/engines/twig/twig.engine
@@ -18,6 +18,9 @@ function twig_theme($existing, $type, $theme, $path) {
 
 /**
  * Implements hook_extension().
+ *
+ * @return string
+ *  The file extension the Twig theme engine will recognize
  */
 function twig_extension() {
   return '.html.twig';
@@ -31,6 +34,8 @@ function twig_init(Extension $theme) {
 }
 
 /**
+ * Implements hook_render_template().
+ *
  * Renders a Twig template.
  *
  * If the Twig debug setting is enabled, HTML comments including _theme() call
@@ -41,7 +46,7 @@ function twig_init(Extension $theme) {
  * @param $variables
  *   A keyed array of variables that will appear in the output.
  *
- * @return
+ * @return string
  *   The output generated by the template, plus any debug information.
  */
 function twig_render_template($template_file, $variables) {
