Couple of guidelines in addition to above listed items

1. Test Steps
2. Snapshots for each steps if possible (In case you are working in remote teams, to avoid to-and-fro email communications)
3. Expected result vs Actual Result
4. Environment Details - OS, Hardware, Software, Build version
5. Log file entries / values
6. Nice to have - Preliminary investigation / analysis with supporting queries / assumptions to provide couple of leads for developer to check further
7. Provide access to the test environment - URLs, Machines for the developer to check in case if needed
8. Reference to BRD, FS, Design Document where implementation conflicts design / requirements
9. Nice to Have - Triage Meeting / Issue Review meeting to run through the bugs once with the development team to provide a quick overview of issues before they start looking into it. F2F conversations are better than email / chat coversations sometimes
10. Be Descriptive do not use Abbrevations, No implicit assumptions. Callout your understanding of functionality and how it conflicts with implementation