#summary Review KungFu Levels

= Review Kung Fu =

As you progress on your path of Review Kung Fu your skill may take you to new levels.  Your objective is to spot potential problems and help others find solutions.  As you do, others will take note of your skills, they will seek your knowlege and wisdom:  your Kung Fu.  They will look to you to help grow their own skills, to see further.  This will be a sign that your efforts and training are paying off.  You, in turn will learn from them, and your Review Kung Fu will continue to reach new higher levels.  

Together producers and reviewers share a symbiotic relationship.  This relationship fosters high quality results.  When the product of this symbiosis is shared with others, the Review Cuckoo rejoices.  In his glory he spreads his blessing and praise on those who have most helped others produce well.  You worked hard for this blessing and you proudly wear his praise; not because of your arrogance, but because Diffy wants those seeking to improve their Kung Fu to easily recognize those whose skill may help them deliver.

= Diffy's Badges =

=== Toes ===

You are dipping your toes in the Review waters.  You are not sure if you want to take the plunge but your are excitted about the possibilities ahead.

=== Heel ===

You have recognized issues needing to be addressed and guided your peers towards an improved product.  In doing so you have had to dig your heals in a few times, but it was worth it, a better path was taken.

=== Feather ===

You have transcended beyond the bare mechanics of reviewing.  Where others read, you meditate.  Where others comment on code, you add your yin to its yang.  You are no longer a reviewer, but an ethereal wisp that dwells within Gerrit.

=== Tail ===

=== Beak ===

=== Bandana ===

=== The Eye ===

You have seen beyond what others have seen.  You can spot a needle in a haystack.  Your vision has guided countless who wavered.  Very little escapes your eye.  It sometimes seems like a glimpse of your eye may help find a way beyond what appears to others as noisy chaos. Your Review Kung Fu is unchallenged.