My 3.5yo dd is similar, she's bright, capable and will willingly go and get dressed/undressed at a time of her choosing. But insist that it needs to be done now and sometimes all hell breaks loose, especially if she's tired. We also have a 5yo ds in the mix. Mornings have been hellish at times, DH and I got a bit desperate at one point, and I turned to MN myself. All these ideas came from other posters on here I think.
What has worked for us:
In the mornings we have implemented a visual schedule chart for her and DS, it has a picture for each thing she needs to do to get ready. I talked it through with the kids when we set it up, went through all the pictures, and what they meant, and what the reward is for getting it done.
Ours has:
Have drink
Have breakfast
Brush teeth
Get dressed
Get hair brushed
Get shoes on
Once she's completed all those jobs, she's allowed to choose a small treat from a jar of crappy plastic toys I have, or she can choose to go play with her toys for a bit. If she doesn't get it done, then the consequences are immediate and natural. If she's not dressed she goes to nursery in PJ's, and she gets no time to play before she goes. Not brushed teeth, no sweets or treats for the day (and I make a big show of 'calling' the nursery and telling them that).
It has mostly worked, we have a lot more good mornings than bad ones now. More than anything she knows what to expect next. Had breakfast? What's next? Look at the chart - ok, it's brushing teeth time. There are no surprises for her and expectations are super clear. I also have her clothes set up for her, we have a set of plastic drawers for Monday to Friday and I put the kids clothes for each day in them on a Sunday night, ready for the week. So each day she's going to the next drawer to just grab them out. Again it's limiting the surprises and keeping expectations very clear and consisitent.
But it does still need somene to be in with her constantly, monitoring and nudging. So DH and I tag team, one of us gets ready first while the other does breakfast and teeth, and then we swap. Also, I pick my battles, this morning she didn't like the tshirt I gave her which went nicely with the rest of her clothes, she wanted to choose another one. It was a horrible garish colour clash, but who cares, she's three. She doesn't have access to choose clothes I definitely don't want her wearing to nursery, all her good stuff is in a wardrobe she can't reach, so she can pick and choose from her drawers as she likes really. As long as she gets dressed and is largely weather appropriate, I try not to care if she looks like she's dressed herself from a rummage sale.
In the evenings for bedtime we have an oven timer, I set it for ten minutes,and tell her, 'the clock is switched on, when it beeps, what does that mean?' And she says 'time for bed'. Literally I say the same thing every night, and get her to acknowledge it every time. She can see it counting down though, and it gives her time to mentally transition. I also send her and her 5yo brother up to get their pjs on, and whoever gets back downstairs first, gets to choose the first bedtime story, second place gets to pick the second one. She's fast, when she wants to be, so that's been quite effective. If she doesn't go, or she makes a huge fuss, I warn that there will be no time for a story if she keeps it up. If that doesn't dial it back then there is no bedtime story. And I stick to it. I hate not doing a bedtime story, so this is last resort territory. I've only had to do it a couple of times though, the warning seems to be enough now.
Sorry this has turned into a mega long post! There are still mornings and evenings which are a bit nightmarish but they are fewer than before we did all this.