People typically add “complexity” to a password by appending or prepending the required numbers and symbols (capital letters generally live on either the beginning or end of the password).

John’s rules can be used to construct additional permutations of a wordlist to cover these cases. The rule syntax is weird, but close enough to regexps to be vaguely readable. Examples can be found in /etc/john/john.conf (the comments make for interesting reading), and a given ruleset from this file can be specified with --rules.

Rulesets are particularly useful when expanding a wordlist or (potential) password list of the sort that can be generated by cewl or CUPP.

john --wordlist=$WORD_LIST \
     --rules=$RULE_SET \
     --stdout > $OUTFILE

When in doubt, --rules=KoreLogic is a solid choice.