Use @setup to share commands across test files. Use @teardown to clean up after tests — it runs regardless of pass/fail.
# setup.shout
+export DB_URL=sqlite:data/test.db
+@teardown rm -f "$SHOUT_PROJECT_DIR/data/test.db"
+ @setup setup.shout
+@teardown rm -f /tmp/extra-cleanup
+
+$ create-db && run-tests
+...
+ @teardown can appear in both .shout files and setup files. Teardown failures produce warnings but don't affect test results.
$ shout test