These are some of the tools I use when I take on an assignment.
User Stories
Let's get this out of the way early: I'm a product guy at heart. It's how I came up and my thinking and approach is rooted in my product development training. User stories are the building blocks of the Agile software development process. They allow me to think through every challenge a user or potential user of a project I'm working on may face, and then, with a team, they help me think through how we'll address those challenges with technology. While I'm putting this first, these typically evolve and grow throughout a project when they're used.
User Journeys
Once I've got a good idea of the challenges users face and how we might account for them I can map out how we'll guide a user through the experience we're building. This sort of document gives a client a complete picture of how a user will engage with a project before delving into the look and feel and specific details of functionality.
Page & Site Structures
Once we've figured out who we're after and what they want and how they're getting here, we need to establish what here is, really. A diagram like this can help us outline the order in which content is prioritized on a page so that users' wants and needs are addressed accordingly.
Wireframes
My general rule is that wires are not for client consumption and I sometimes walk back from that rule but it's usually a good one. I prefer to work with design while creating these and then let a good visual designer at least skin them so the client understands what we intend to build without getting into the whole 'well, when you're building a house you have blueprints, right?' spiel.
Clickable Prototypes
My grandfather's great hobby was to take blueprints from old wooden ships, scale them down, and make models based on them. I'm not kidding. And not just the outside, either; if there were crew quarters or a galley or a sick berth to account for, those would go in to the last detail, and then he'd build up the hull and they'd be invisible forever, but he'd know they were there (and, I guess, so would we, because I'm telling this story). I like to think that's at least part of where I get my genuine love for building out prototypes that work. When I need to test functionality I can build something in Axure without taking up the tech team's time and gets me the feedback I need to make improvements on my ideas.