Joel Test, with details. This is probably the most important point. If a company has 2/12, it really doesn't worth answering to the offer.
It's especially important to include details. For example I can understand that a startup doesn't have hallway usability testing, and it's ok for me. On the other hand, no matter what is the company and how many developers are working here, if you don't use source control, you mustn't hire any developer at all.
For the missing points, it is a good idea to explain why they are missing. For example, you don't have testers because you're a small company with just one developer and one designer. Yes, you care about testing, but you cannot afford a third person for that.
Skills/level required from the candidates, written by a person who knows what he's talking about.
It also surprises me to read job offers which require 3 years of college. Why they don't want a developer with 15 years of professional experience, but they are ready to hire instead a fresher who doesn't know anything about programming below what he learnt in college?
The requirements must be precise and reasonable. Don't expect developers with 20+ years experience and deep skills to be excited if all they can do in your company is to write CRUD applications or to maintain a spaghetti legacy codebase they can't even refactor because nobody is ready to pay for that.
What the job is about. It's unbelievable how many times I answered to a job offer to discover that it has nothing to do with development at all, and is not suitable for me.
You don't "search for a developer", in general. You search for a C++ developer who will participate to a project of an OCR application in a team of ten other developers. You search for a Java developer to maintain and refactor your company website and add new features. You search for a guy who is able to build an ETL to process a specific set of data to obtain precise BI results.
The type of work. Are you searching for a full-time developer who will probably stay the rest of his life in your company? Are you searching for a person who will participate to a six-months project while doing other projects outside of your company meanwhile?
The type of your company (or, better, the name of the company). A startup is not the same thing as a large business started thirteen years ago. They have different management, different spirit.
More detail is better. If you do TDD, talk about it. If you have QA department, we would like to know it. There is a huge difference between working for a company of two people, both not knowing very much about IT, or working for a large software development company where only 20% of the time is spend actually writing code.
The salary. Even if in most cases, the salary depends on the candidate and is negotiated case by case, it's a good idea to know the range the company expect for this job. This allows to eliminate job offers with the salary below expectation and also avoids the ambiguous situations when the interviewee is too afraid to talk about money during or before the interview.
Depending on the job offer, you may need to include additional points.