It is a little hard to tell from your code sample what all is going on but something like this may help...
def results = Person.withCriteria {
def acct = params.accts?.value
if(acct) {
account {
eq 'name', acct
}
}
}
If you really want to pass the closure around to several methods like addPrimarySkillCondition, addDateCondition, etc, you can do that with some special delegate handling on the closure. To show you the specifics I would need to see what is in those methods.
I hope that helps.