Cream the butter and sugar. In a large bowl, beat 1 cup unsalted butter with 1 cup granulated sugar until light and fluffy, about 2–3 minutes. This traps air and gives you a softer cookie.
Add eggs and extracts. Beat in 1 large egg and 1 egg yolk until smooth. Mix in 2 teaspoons vanilla extract and 1/2 teaspoon almond extract if using.
Mix the dry ingredients. In a separate bowl, whisk 3 cups all-purpose flour, 1 teaspoon baking powder, and 1/2 teaspoon kosher salt.
Combine. Add dry ingredients to the wet in two additions, mixing on low just until the dough comes together.
If it’s crumbly, add 1–2 teaspoons milk.
Chill the dough. Divide dough in half, flatten into disks, wrap tightly, and chill at least 1 hour (or up to 2 days). Chilling helps the dough relax and reduces spreading.
Preheat and prep. Heat oven to 350°F (175°C). Line baking sheets with parchment.
Roll and cut. Lightly flour your surface and roll dough to about 1/4 inch thick.
Cut shapes with cookie cutters, dipping the cutter in flour as needed.
Bake. Transfer to baking sheets, spacing about 1 inch apart. Bake 8–11 minutes, until edges are set and barely golden. For softer cookies, pull them early.
Cool completely. Let cookies rest on the sheet 2 minutes, then move to a wire rack to cool fully before frosting.
Make the cream cheese frosting. Beat 6 ounces cream cheese and 6 tablespoons unsalted butter until smooth.
Add 2 cups powdered sugar, 1 teaspoon vanilla, and a pinch of salt. Beat until fluffy, adding 1–3 tablespoons heavy cream to reach a spreadable consistency.
Color and decorate. Divide frosting and tint with food coloring if desired. Spread or pipe onto cooled cookies.
Add sprinkles while the frosting is still soft.
Set and serve. Let frosting set at room temperature for 30–60 minutes, or refrigerate briefly to firm up before stacking.