(setopt project-buffer-name-function
(lambda (project _command-symbol buffer-name)
(format "%s<%s>" buffer-name (project-name project))))
I think*prjname/Shell Command Output* sounds nice enough.
If it doesn't, we probably wouldn't choose*Shell Command Output* as the
name for non-project buffers of this type, would we?
For designing a naming scheme, I suggest to keep in mind that
the users might already have customized the behavior for
displaying these buffers by using display-buffer-alist
that often takes into account a uniquified suffix, e.g.:
"\\`\\*\\(?:Shell Command Output\\|xref\\|vc-dir\\|compilation\\)
\\*\\(?:<[^>]+>\\)?\\'"
So for compatibility it would be better to add the project name
in the suffix without changing the standard base buffer names, e.g.:
"*Shell Command Output*<project-a>", "*xref*<project-b>"
But if you want to add the project name after the first asterisk,
this is easy to do as well with just:
(setf (substring buffer-name 1 1) (project-name project))