If you want me to write a letter for you, please know that I need:
at least 4 weeks notice; without sufficient notice, the letter is likely to be rushed and will not be as strong of a letter as you would like.
your CV/Resume and everything else you will be submitting with your application at least 3-4 weeks before the deadline for my letter.
to know who else is writing you a letter and what they are likely to address. This would help me to avoid any repetition.
a bulleted list of things you would like me to address (theorems, activities, extracurriculars, skills, etc.). I'm not promising to address any of these points, but it will help me to navigate the materials you send me and to focus on what would be important for your personal letters.
If you are an undergraduate/masters student, I will also need:
your transcript (unofficial is fine).
information about the courses you took with me (course, term, grade).
send me the highlights of three interactions we had together that you feel highlights some of your skills which make you stand out as a student, or candidate to the position to you are applying to. If you aren't able to come up with at least three interactions we've had which highlights your skills, I'm likely not the right person to write you a letter.
information about the programs/schools that you are applying to and the deadlines for your applications.
Please note that it is in your best interest to make sure that you and I have talked or have been otherwise acquainted before asking me for a letter.
On the other hand, if you are a Ph.D. student/postdoc applying for academic jobs or research fellowships, I will also need:
copies of your papers (a good draft of a preprint is also fine)
to know what kind of positions are you applying for (postdoc/tenure-track, research/teaching, industry, etc.)
probably extra time (maybe 5-6 weeks instead of 3-4).
Thanks to Chris Kapulkin and Christina Booker for the inspiration!