Actually, you do not have to expand the record manually. As long as number, sequence and types of columns match between the two tables, you can use this much simpler form:
EXECUTE 'INSERT INTO my_table SELECT ($1).*'
Since your table name seems to be stable, you do not even need dynamic SQL with
EXECUTE. Just a plain
INSERT INTO my_table SELECT (NEW).*
The parentheses are required for a composite type to make the syntax unambiguous.
Ask yourself what may change in your app in the future:
If the target table should stay in sync with the source table (or target and source are the same), then it's better not to list columns explicitly.
If you want to select only certain columns and do not want to change that with possible updates to the source or target table, it's better to supply a column list.