diff --git a/composer.json b/composer.json
index 0263b29..7d8c093 100644
--- a/composer.json
+++ b/composer.json
@@ -34,7 +34,9 @@
         "symfony/process": "2.5.*",
         "doctrine/common": "*.*",
         "composer/composer": "1.0.*@dev",
-        "stage1/docker-php": "dev-ryanaslett-rawstreams-1"
+        "stage1/docker-php": "dev-ryanaslett-rawstreams-1",
+        "squizlabs/php_codesniffer": ">=2.4.0",
+        "drupal/coder": "^8.2"
     },
     "require-dev": {
         "phpunit/phpunit": "~3",
diff --git a/composer.lock b/composer.lock
index f8a792a..d732a46 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,8 +4,8 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
         "This file is @generated automatically"
     ],
-    "hash": "1b4a6d2407f0acf47b2f644bf60215c5",
-    "content-hash": "c5cf62aa34688a08733fcf90417d8c27",
+    "hash": "8904fef4400442ca8f7f775fcf19d506",
+    "content-hash": "e50e3122499f2fe76aefe26239754046",
     "packages": [
         {
             "name": "composer/composer",
@@ -474,6 +474,35 @@
             "time": "2014-09-09 13:34:57"
         },
         {
+            "name": "drupal/coder",
+            "version": "8.2.5",
+            "source": {
+                "type": "git",
+                "url": "http://git.drupal.org/project/coder.git",
+                "reference": "9ced5f2ad0e77534f6d53c8db43e6c6c3fe1b482"
+            },
+            "require": {
+                "php": ">=5.2.0",
+                "squizlabs/php_codesniffer": ">=2.4.0"
+            },
+            "require-dev": {
+                "phpunit/phpunit": ">=3.7 <5.0"
+            },
+            "type": "library",
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "GPL-2.0+"
+            ],
+            "description": "Coder is a library to review Drupal code.",
+            "homepage": "https://drupal.org/project/coder",
+            "keywords": [
+                "code review",
+                "phpcs",
+                "standards"
+            ],
+            "time": "2015-11-26 09:21:56"
+        },
+        {
             "name": "guzzlehttp/guzzle",
             "version": "4.1.8",
             "source": {
@@ -747,16 +776,93 @@
             "time": "2015-01-04 21:18:15"
         },
         {
+            "name": "squizlabs/php_codesniffer",
+            "version": "2.5.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
+                "reference": "e4fb41d5d0387d556e2c25534d630b3cce90ea67"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/e4fb41d5d0387d556e2c25534d630b3cce90ea67",
+                "reference": "e4fb41d5d0387d556e2c25534d630b3cce90ea67",
+                "shasum": ""
+            },
+            "require": {
+                "ext-tokenizer": "*",
+                "ext-xmlwriter": "*",
+                "php": ">=5.1.2"
+            },
+            "require-dev": {
+                "phpunit/phpunit": "~4.0"
+            },
+            "bin": [
+                "scripts/phpcs",
+                "scripts/phpcbf"
+            ],
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "classmap": [
+                    "CodeSniffer.php",
+                    "CodeSniffer/CLI.php",
+                    "CodeSniffer/Exception.php",
+                    "CodeSniffer/File.php",
+                    "CodeSniffer/Fixer.php",
+                    "CodeSniffer/Report.php",
+                    "CodeSniffer/Reporting.php",
+                    "CodeSniffer/Sniff.php",
+                    "CodeSniffer/Tokens.php",
+                    "CodeSniffer/Reports/",
+                    "CodeSniffer/Tokenizers/",
+                    "CodeSniffer/DocGenerators/",
+                    "CodeSniffer/Standards/AbstractPatternSniff.php",
+                    "CodeSniffer/Standards/AbstractScopeSniff.php",
+                    "CodeSniffer/Standards/AbstractVariableSniff.php",
+                    "CodeSniffer/Standards/IncorrectPatternException.php",
+                    "CodeSniffer/Standards/Generic/Sniffs/",
+                    "CodeSniffer/Standards/MySource/Sniffs/",
+                    "CodeSniffer/Standards/PEAR/Sniffs/",
+                    "CodeSniffer/Standards/PSR1/Sniffs/",
+                    "CodeSniffer/Standards/PSR2/Sniffs/",
+                    "CodeSniffer/Standards/Squiz/Sniffs/",
+                    "CodeSniffer/Standards/Zend/Sniffs/"
+                ]
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "BSD-3-Clause"
+            ],
+            "authors": [
+                {
+                    "name": "Greg Sherwood",
+                    "role": "lead"
+                }
+            ],
+            "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
+            "homepage": "http://www.squizlabs.com/php-codesniffer",
+            "keywords": [
+                "phpcs",
+                "standards"
+            ],
+            "time": "2015-12-11 00:12:46"
+        },
+        {
             "name": "stage1/docker-php",
             "version": "dev-ryanaslett-rawstreams-1",
             "source": {
                 "type": "git",
-                "url": "https://github.com/ryanaslett/docker-php.git",
+                "url": "https://github.com/drupalci/docker-php.git",
                 "reference": "18b2f0ed51d82d2f7407ee504bf16569fbd82d17"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/ryanaslett/docker-php/zipball/18b2f0ed51d82d2f7407ee504bf16569fbd82d17",
+                "url": "https://api.github.com/repos/drupalci/docker-php/zipball/18b2f0ed51d82d2f7407ee504bf16569fbd82d17",
                 "reference": "18b2f0ed51d82d2f7407ee504bf16569fbd82d17",
                 "shasum": ""
             },
@@ -791,12 +897,12 @@
             "target-dir": "Symfony/Component/Console",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/Console.git",
+                "url": "https://github.com/symfony/console.git",
                 "reference": "cd2d1e4bac2206b337326b0140ff475fe9ad5f63"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Console/zipball/cd2d1e4bac2206b337326b0140ff475fe9ad5f63",
+                "url": "https://api.github.com/repos/symfony/console/zipball/cd2d1e4bac2206b337326b0140ff475fe9ad5f63",
                 "reference": "cd2d1e4bac2206b337326b0140ff475fe9ad5f63",
                 "shasum": ""
             },
@@ -845,12 +951,12 @@
             "version": "v2.7.4",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/Filesystem.git",
+                "url": "https://github.com/symfony/filesystem.git",
                 "reference": "f079e9933799929584200b9a926f72f29e291654"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Filesystem/zipball/f079e9933799929584200b9a926f72f29e291654",
+                "url": "https://api.github.com/repos/symfony/filesystem/zipball/f079e9933799929584200b9a926f72f29e291654",
                 "reference": "f079e9933799929584200b9a926f72f29e291654",
                 "shasum": ""
             },
@@ -1801,12 +1907,12 @@
             "version": "v2.7.4",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/Config.git",
+                "url": "https://github.com/symfony/config.git",
                 "reference": "5ab9ff48b3cb5b40951a607f77fc1cbfd29edba8"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Config/zipball/5ab9ff48b3cb5b40951a607f77fc1cbfd29edba8",
+                "url": "https://api.github.com/repos/symfony/config/zipball/5ab9ff48b3cb5b40951a607f77fc1cbfd29edba8",
                 "reference": "5ab9ff48b3cb5b40951a607f77fc1cbfd29edba8",
                 "shasum": ""
             },
@@ -1851,12 +1957,12 @@
             "version": "v2.7.4",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/EventDispatcher.git",
+                "url": "https://github.com/symfony/event-dispatcher.git",
                 "reference": "b58c916f1db03a611b72dd702564f30ad8fe83fa"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/b58c916f1db03a611b72dd702564f30ad8fe83fa",
+                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b58c916f1db03a611b72dd702564f30ad8fe83fa",
                 "reference": "b58c916f1db03a611b72dd702564f30ad8fe83fa",
                 "shasum": ""
             },
diff --git a/src/DrupalCI/Plugin/JobTypes/php_codesniffer/PHPCodeSnifferJob.php b/src/DrupalCI/Plugin/JobTypes/php_codesniffer/PHPCodeSnifferJob.php
new file mode 100644
index 0000000..8397337
--- /dev/null
+++ b/src/DrupalCI/Plugin/JobTypes/php_codesniffer/PHPCodeSnifferJob.php
@@ -0,0 +1,72 @@
+<?php
+
+/**
+ * @file
+ * Job class for PHP CodeSniffer jobs on DrupalCI.
+ */
+
+namespace DrupalCI\Plugin\JobTypes\php_codesniffer;
+
+use DrupalCI\Plugin\JobTypes\JobBase;
+
+/**
+ * Job for performing a coding standards check using PHP CodeSniffer.
+ *
+ * This is using the Coder module which contains a ruleset for the Drupal coding
+ * standard.
+ *
+ * @todo Rework this to support any PHP CodeSniffer coding standard.
+ *
+ * @PluginID("php_codesniffer")
+ */
+class PHPCodeSnifferJob extends JobBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public $jobType = 'php_codesniffer';
+
+  /**
+   * {@inheritdoc}
+   */
+  public $defaultArguments = array(
+    'DCI_PHPVersion' => '5.5',
+    'DCI_CoreRepository' => 'git://drupalcode.org/project/drupal.git',
+    'DCI_CoreBranch' => '8.0.x',
+    'DCI_GitCheckoutDepth' => '1',
+    'DCI_CoderRepository' => 'git://drupalcode.org/project/coder.git',
+    'DCI_CoderBranch' => '8.x-2.x',
+    'DCI_CoderCheckoutDir' => './modules/coder',
+    'DCI_RunScript' => "/var/www/html/modules/coder/vendor/bin/phpcs",
+    'DCI_RunOptions' => "standard=/var/www/html/core/phpcs.xml",
+    'DCI_RunTarget' => "/var/www/html/core"
+  );
+
+  /**
+   * {@inheritdoc}
+   */
+  public $availableArguments = array(
+    // Variables available for any job type.
+    'DCI_UseLocalCodebase' => 'Used to define a local codebase to be cloned (instead of performing a Git checkout)',
+    'DCI_WorkingDir' => 'Defines the location to be used in creating the local copy of the codebase, to be mapped into the container as a container volume.  Default: /tmp/simpletest-[random string]',
+    'DCI_ResultsServer' => 'Specifies the url string of a DrupalCI results server for which to publish job results',
+    'DCI_ResultsServerConfig' => 'Specifies the location of a configuration file on the test runner containg a DrupalCI Results Server configuration to use in publishing results.',
+    'DCI_JobBuildId' => 'Specifies a unique build ID assigned to this job from an upstream server',
+    'DCI_JobId' => 'Specifies a unique results server node ID to use when publishing results for this job.',
+    'DCI_JobType' => 'Specifies a default job type to assume for a "drupalci run" command',
+    'DCI_EXCLUDE' => 'Specifies whether to exclude the .git directory during a clone of a local codebase.',  //TODO: Check logic, may be reversed.
+
+    // Default variables defined for every PHP CodeSniffer job.
+    'DCI_PHPVersion' => 'Defines the PHP Version used within the executable container for this job type.  Default: 5.4',
+    'DCI_CoreRepository' => 'Defines the primary repository to be checked out while building the codebase to test.  Default: git://drupalcode.org/project/drupal.git',
+    'DCI_CoreBranch' => 'Defines the branch on the primary repository to be checked out while building the codebase to test.  Default: 8.0.x',
+    'DCI_GitCheckoutDepth' => 'Defines the depth parameter passed to git clone while checking out the core repository.  Default: 1',
+    'DCI_CoderRepository' => 'Defines the repository of the Coder module to be checked out.',
+    'DCI_CoderBranch' => 'Defines the branch of the Coder module to use.',
+    'DCI_CoderCheckoutDir' => 'Defines the directory in which the Coder module will be installed.',
+    'DCI_RunScript' => 'Defines the default run script to be executed on the container.',
+    'DCI_RunOptions' => 'A string containing initial runScript options to append to the run script when performing a job.',
+    'DCI_RunTarget' => 'A string defining the initial runScript target to append to the run script when performing a job.',
+  );
+
+}
diff --git a/src/DrupalCI/Plugin/JobTypes/php_codesniffer/drupalci.yml b/src/DrupalCI/Plugin/JobTypes/php_codesniffer/drupalci.yml
new file mode 100644
index 0000000..75abaad
--- /dev/null
+++ b/src/DrupalCI/Plugin/JobTypes/php_codesniffer/drupalci.yml
@@ -0,0 +1,26 @@
+# Job Definition Template for the DrupalCI 'PHPCodeSniffer' Job Type.
+environment:
+  web:
+    - %DCI_PHPVersion%
+setup:
+  checkout:
+    # DCI_UseLocalCodebase plugin can override the checkout array to look like:
+    # - protocol: local
+    #   source_dir: %DCI_SourceDirectory%
+    - protocol: git
+      repo: %DCI_CoreRepository%
+      branch: %DCI_CoreBranch%
+      depth: %DCI_GitCheckoutDepth%
+      checkout_dir: .
+    - protocol: git
+      repo: %DCI_CoderRepository%
+      branch: %DCI_CoderBranch%
+      depth: %DCI_GitCheckoutDepth%
+      checkout_dir: %DCI_CoderCheckoutDir%
+  command:
+    - cp /var/www/html/core/phpcs.xml.dist /var/www/html/core/phpcs.xml
+  composer:
+    - --working-dir="/var/www/html/%DCI_CoderCheckoutDir%" install
+execute:
+  command:
+    - %DCI_RunScript% %DCI_RunOptions% %DCI_RunTarget%
