diff --git a/src/DrupalCI/Plugin/BuildSteps/setup/SyntaxCheck.php b/src/DrupalCI/Plugin/BuildSteps/setup/SyntaxCheck.php
new file mode 100644
index 0000000..2a4a98c
--- /dev/null
+++ b/src/DrupalCI/Plugin/BuildSteps/setup/SyntaxCheck.php
@@ -0,0 +1,36 @@
+<?php
+/**
+ * @file
+ * Contains \DrupalCI\Plugin\BuildSteps\setup\SyntaxCheck
+ *
+ * Processes "setup: syntaxcheck:" instructions from within a job definition.
+ */
+
+namespace DrupalCI\Plugin\BuildSteps\setup;
+use DrupalCI\Console\Output;
+use DrupalCI\Plugin\JobTypes\JobInterface;
+use DrupalCI\Plugin\BuildSteps\generic\ContainerCommand;
+
+/**
+ * @PluginID("syntaxcheck")
+ */
+class SyntaxCheck extends SetupBase {
+
+  /**
+   * @var \Guzzle\Http\ClientInterface
+   */
+  protected $httpClient;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function run(JobInterface $job, $data) {
+    Output::writeLn('<info>SyntaxCheck checking for php syntax errors.</info>');
+
+    // @TODO: only do lint check on changed files in the commit/patch
+    $cmd = "for file in `find /var/www/html`; do php -l \$file; done";
+    $command = new ContainerCommand();
+    $command->run($job, $cmd);
+  }
+
+}
diff --git a/src/DrupalCI/Plugin/Preprocess/definition/SyntaxCheck.php b/src/DrupalCI/Plugin/Preprocess/definition/SyntaxCheck.php
new file mode 100644
index 0000000..932757f
--- /dev/null
+++ b/src/DrupalCI/Plugin/Preprocess/definition/SyntaxCheck.php
@@ -0,0 +1,28 @@
+<?php
+/**
+ * @file
+ * Contains \DrupalCI\Plugin\Preprocess\definition\SyntaxCheck
+ *
+ * PreProcesses DCI_SyntaxCheck variable.
+ */
+
+namespace DrupalCI\Plugin\Preprocess\definition;
+
+/**
+ * @PluginID("syntaxcheck")
+ */
+class SyntaxCheck {
+
+  /**
+   * {@inheritdoc}
+   *
+   * DCI_SyntaxCheck_Preprocessor
+   *
+   * If set, run php link on committed code.
+   *
+   * Input format: (bool) $value = "true"
+   */
+  public function process(array &$definition, $value) {
+    $definition['setup']['syntaxcheck'] = [];
+  }
+}
