How do I use zsh to pipe results from one command to another (while in a loop)?
Do not parse/interpret the output of ls,  too many things can go wrong. A simple way to accomplish your goal would be
for f in *.vital; do
    echo -n &quot;$f: &quot;
    jq '.author' &quot;$f&quot;
done

which might still fail if there are directories matching the pattern for instance. You can overcome this by using
for f in *.vital; do
    [[ -f &quot;$f&quot; ]] || continue
    echo -n &quot;$f: &quot;
    jq '.author' &quot;$f&quot;
done

You can also go the full way and run
find . -maxdepth 1 -type f -name '*.vital' \
     -exec sh -c 'echo -n &quot;$1&quot;; jq &quot;.author&quot; &quot;$1&quot;' _ {} \;

(see http://mywiki.wooledge.org/UsingFind#Complex_actions for how this works)