[Moto X Themes and Apps] ariesceres:
I can't post links yet, so here's the description and XML.

It checks whether or not %ROOT~yes. If so, flash "su granted." If no, wait one second and check again. If it doesn't work within 30 seconds, it flashes "su denied" and stops.

Profile: Flash Root Status (58)
Event: Device Boot
Enter: Check %ROOT (76)
A1: If [ %ROOT !~ yes ]
<Wait>
A2: Wait [ MS:0 Seconds:1 Minutes:0 Hours:0 Days:0 ]
A3: Variable Add [ Name:%su_timer Value:1 Wrap Around:0 ] If [ %ROOT ~ no ]
A4: Goto [ Type:End of If Number:1 Label: ] If [ %ROOT ~ yes | %su_timer > 30 ]
A5: Goto [ Type:Action Label Number:1 Label:Wait ] If [ %ROOT ~ no & %su_timer < 30 ]
A6: End If
A7: Vibrate Pattern [ Pattern:0,200,100,200 ]
A8: Flash [ Text:su granted Long:eek:ff ] If [ %ROOT ~ yes ]
A9: Flash [ Text:su denied Long:eek:ff ] If [ %ROOT ~ no ]

<TaskerData sr="" dvi="1" tv="4.4u1m">
<Profile sr="prof58" ve="2">
<cdate>1406086206290</cdate>
<edate>1406738189838</edate>
<id>58</id>
<mid0>76</mid0>
<nme>Flash Root Status</nme>
<Event sr="con0" ve="2">
<code>411</code>
<pri>0</pri>
</Event>
</Profile>
<Task sr="task76">
<cdate>1406086210892</cdate>
<edate>1406738189838</edate>
<id>76</id>
<nme>Check %ROOT</nme>
<pri>10</pri>
<Action sr="act0" ve="6">
<code>37</code>
<ConditionList sr="if">
<Condition sr="c0" ve="3">
<lhs>%ROOT</lhs>
<op>3</op>
<rhs>yes</rhs>
</Condition>
</ConditionList>
</Action>
<Action sr="act1" ve="6">
<code>30</code>
<label>Wait</label>
<Int sr="arg0" val="0"/>
<Int sr="arg1" val="1"/>
<Int sr="arg2" val="0"/>
<Int sr="arg3" val="0"/>
<Int sr="arg4" val="0"/>
</Action>
<Action sr="act2" ve="6">
<code>888</code>
<Str sr="arg0" ve="3">%su_timer</Str>
<Int sr="arg1" val="1"/>
<Int sr="arg2" val="0"/>
<ConditionList sr="if">
<Condition sr="c0" ve="3">
<lhs>%ROOT</lhs>
<op>2</op>
<rhs>no</rhs>
</Condition>
</ConditionList>
</Action>
<Action sr="act3" ve="6">
<code>135</code>
<Int sr="arg0" val="4"/>
<Int sr="arg1" val="1"/>
<Str sr="arg2" ve="3"/>
<ConditionList sr="if">
<bool0>Or</bool0>
<Condition sr="c0" ve="3">
<lhs>%ROOT</lhs>
<op>2</op>
<rhs>yes</rhs>
</Condition>
<Condition sr="c1" ve="3">
<lhs>%su_timer</lhs>
<op>7</op>
<rhs>30</rhs>
</Condition>
</ConditionList>
</Action>
<Action sr="act4" ve="6">
<code>135</code>
<Int sr="arg0" val="1"/>
<Int sr="arg1" val="1"/>
<Str sr="arg2" ve="3">Wait</Str>
<ConditionList sr="if">
<bool0>And</bool0>
<Condition sr="c0" ve="3">
<lhs>%ROOT</lhs>
<op>2</op>
<rhs>no</rhs>
</Condition>
<Condition sr="c1" ve="3">
<lhs>%su_timer</lhs>
<op>6</op>
<rhs>30</rhs>
</Condition>
</ConditionList>
</Action>
<Action sr="act5" ve="6">
<code>38</code>
</Action>
<Action sr="act6" ve="6">
<code>62</code>
<Str sr="arg0" ve="3">0,200,100,200</Str>
</Action>
<Action sr="act7" ve="6">
<code>548</code>
<Str sr="arg0" ve="3">su granted</Str>
<Int sr="arg1" val="0"/>
<ConditionList sr="if">
<Condition sr="c0" ve="3">
<lhs>%ROOT</lhs>
<op>2</op>
<rhs>yes</rhs>
</Condition>
</ConditionList>
</Action>
<Action sr="act8" ve="6">
<code>548</code>
<Str sr="arg0" ve="3">su denied</Str>
<Int sr="arg1" val="0"/>
<ConditionList sr="if">
<Condition sr="c0" ve="3">
<lhs>%ROOT</lhs>
<op>2</op>
<rhs>no</rhs>
</Condition>
</ConditionList>
</Action>
</Task>
</TaskerData>

Let me know if it works for you, or could be improved. You can change the timeout to >30s if you know it takes your phone longer than that to gain root again.

I froze some apps and disabled unnecessary boot receivers, and TPR always reroots my phone within 30 seconds of booting up (I think before Tasker even starts). The wait loop doesn't even have a chance to run and just flashes "su granted" as soon as Tasker starts up, but I keep it there in case TPR fails to gain root for some reason, so the task doesn't loop forever.