Session-based exploratory testing depends on creating good test charters at the right level of detail to guide the tester, without directing them.
You need to make the goal of the session clear, without being either too generic (so it's not clear what the intended focus of the session should be), or being overly directive, thus limiting the tester's ability to design their own tests in response to what they're discovering. For testers who have primarily worked in a script-heavy environment, it's often difficult to avoid falling into the trap of creating "fake" charters that are really just test cases in disguise. To me, writing clear, succinct test charters for sessions is one of the hardest skills I've had to learn with exploratory testing.
If you are an experienced exploratory tester, what attributes make a good test charter for you?
Do you use any common patterns to help you to structure your charters? Are there any common failure patterns you notice in bad test charters?