repeating command block: /execute as @e[tag=spell] at @s unless block ~ ~ ~ air run kill @s
the command should succeed if the 'spell' entity is NOT in an air block
When any 'spell' entity fails to execute (due to the unless command) all others also fail, no matter whether they are in an air block or not.
Same thing!