Preheat oven to 350°F (175°C). Line a muffin tin with paper liners.
In a medium bowl, whisk together flour, cocoa powder, baking powder, baking soda, and salt.
In a large bowl, beat butter and sugar until light and fluffy. Add eggs one at a time, mixing well.
Stir in vanilla, then mix in sour cream and milk.
Gradually add dry ingredients to wet mixture, mixing until just combined.
Divide batter evenly among cupcake liners. Bake for 18-20 minutes or until a toothpick comes out clean.
Let cupcakes cool in the pan for 5 minutes, then transfer to a wire rack to cool completely.
For the frosting, beat cream cheese and butter until smooth.
Add powdered sugar, vanilla, and salt. Beat until fluffy and spreadable.
For cookie toppers (if using), mix cookie dough ingredients, chill for 20 minutes, roll and cut small shapes, bake at 350°F for 7-9 minutes. Cool completely.
Frost cooled cupcakes with cream cheese frosting.
Decorate with sprinkles, cookie crumbs, or a small sugar cookie on top.