diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -4180,6 +4180,7 @@
     'PhabricatorProjectTriggerEditor' => 'applications/project/editor/PhabricatorProjectTriggerEditor.php',
     'PhabricatorProjectTriggerInvalidRule' => 'applications/project/trigger/PhabricatorProjectTriggerInvalidRule.php',
     'PhabricatorProjectTriggerListController' => 'applications/project/controller/trigger/PhabricatorProjectTriggerListController.php',
+    'PhabricatorProjectTriggerManiphestPriorityRule' => 'applications/project/trigger/PhabricatorProjectTriggerManiphestPriorityRule.php',
     'PhabricatorProjectTriggerManiphestStatusRule' => 'applications/project/trigger/PhabricatorProjectTriggerManiphestStatusRule.php',
     'PhabricatorProjectTriggerNameTransaction' => 'applications/project/xaction/trigger/PhabricatorProjectTriggerNameTransaction.php',
     'PhabricatorProjectTriggerPHIDType' => 'applications/project/phid/PhabricatorProjectTriggerPHIDType.php',
@@ -10318,6 +10319,7 @@
     'PhabricatorProjectTriggerEditor' => 'PhabricatorApplicationTransactionEditor',
     'PhabricatorProjectTriggerInvalidRule' => 'PhabricatorProjectTriggerRule',
     'PhabricatorProjectTriggerListController' => 'PhabricatorProjectTriggerController',
+    'PhabricatorProjectTriggerManiphestPriorityRule' => 'PhabricatorProjectTriggerRule',
     'PhabricatorProjectTriggerManiphestStatusRule' => 'PhabricatorProjectTriggerRule',
     'PhabricatorProjectTriggerNameTransaction' => 'PhabricatorProjectTriggerTransactionType',
     'PhabricatorProjectTriggerPHIDType' => 'PhabricatorPHIDType',
diff --git a/src/applications/project/trigger/PhabricatorProjectTriggerManiphestPriorityRule.php b/src/applications/project/trigger/PhabricatorProjectTriggerManiphestPriorityRule.php
new file mode 100644
--- /dev/null
+++ b/src/applications/project/trigger/PhabricatorProjectTriggerManiphestPriorityRule.php
@@ -0,0 +1,94 @@
+<?php
+
+final class PhabricatorProjectTriggerManiphestPriorityRule
+  extends PhabricatorProjectTriggerRule {
+
+  const TRIGGERTYPE = 'task.priority';
+
+  public function getSelectControlName() {
+    return pht('Change priority to');
+  }
+
+  protected function assertValidRuleValue($value) {
+    if (!is_string($value)) {
+      throw new Exception(
+        pht(
+          'Priority rule value should be a string, but is not (value is "%s").',
+          phutil_describe_type($value)));
+    }
+
+    $map = ManiphestTaskPriority::getTaskPriorityMap();
+    if (!isset($map[$value])) {
+      throw new Exception(
+        pht(
+          'Rule value ("%s") is not a valid task priority.',
+          $value));
+    }
+  }
+
+  protected function newDropTransactions($object, $value) {
+    $value = ManiphestTaskPriority::getKeywordForTaskPriority($value);
+    return array(
+      $this->newTransaction()
+        ->setTransactionType(ManiphestTaskPriorityTransaction::TRANSACTIONTYPE)
+        ->setNewValue($value),
+    );
+  }
+
+  protected function newDropEffects($value) {
+    $priority_name = ManiphestTaskPriority::getTaskPriorityName($value);
+    $priority_icon = ManiphestTaskPriority::getTaskPriorityIcon($value);
+    $priority_color = ManiphestTaskPriority::getTaskPriorityColor($value);
+
+    $content = pht(
+      'Change priority to %s.',
+      phutil_tag('strong', array(), $priority_name));
+
+    return array(
+      $this->newEffect()
+        ->setIcon($priority_icon)
+        ->setColor($priority_color)
+        ->addCondition('priority', '!=', $value)
+        ->setContent($content),
+    );
+  }
+
+  protected function getDefaultValue() {
+    return head_key(ManiphestTaskPriority::getTaskPriorityMap());
+  }
+
+  protected function getPHUIXControlType() {
+    return 'select';
+  }
+
+  protected function getPHUIXControlSpecification() {
+    $map = ManiphestTaskPriority::getTaskPriorityMap();
+
+    return array(
+      'options' => $map,
+      'order' => array_keys($map),
+    );
+  }
+
+  public function getRuleViewLabel() {
+    return pht('Change Priority');
+  }
+
+  public function getRuleViewDescription($value) {
+    $priority_name = ManiphestTaskPriority::getTaskPriorityName($value);
+
+    return pht(
+      'Change task priority to %s.',
+      phutil_tag('strong', array(), $priority_name));
+  }
+
+  public function getRuleViewIcon($value) {
+    $priority_icon = ManiphestTaskPriority::getTaskPriorityIcon($value);
+    $priority_color = ManiphestTaskPriority::getTaskPriorityColor($value);
+
+    return id(new PHUIIconView())
+      ->setIcon($priority_icon, $priority_color);
+  }
+
+
+}