Does Suricata have the capability to save every packet or flow to a PCAP file in real time?

Additionally, can suricata forward this data to an external script for processing?

It shouldn’t work. I have tried this idea. When the host performance is sufficient, Suricata seems to be able to record completely at the beginning, but later it seems not to be able to do so. At the beginning, it can record 100 pcaps a day, but after a week or even longer, it can only record 20 pcaps a day. The specific reason has not been analyzed yet, but it seems that there is a problem.

Suricata has the pcap-log output. This records all traffic seen by Suricata to pcap files, much as if you were using another tool like tcpdump to do the same.

See 12.1. Suricata.yaml — Suricata 7.0.10 documentation for more information.