Here's a slightly less clunky version:
(mac def-with-prefix (prefix name args . body) `(eval (join (list 'def (sym (+ (coerce ,prefix 'string) "-" (coerce ',name 'string))) ',args) ',body)))