In a bowl, whisk together the flour, cocoa powder, baking soda, and salt.
In another bowl, beat the softened butter, granulated sugar, and brown sugar on medium speed until light and creamy, 2 to 3 minutes, scraping the bowl as needed.
Add the egg and vanilla, and beat just until smooth and combined.
Add the dry ingredients in 2 additions, mixing on low speed just until no dry streaks remain and a soft, thick dough forms. Do not overmix.
Cover the bowl and chill the dough until firm enough to scoop, at least 30 minutes or up to overnight.
Shape And Bake The Cookies:
Preheat the oven to 350°F. Line 2 baking sheets with parchment paper.
Using a small cookie scoop or two tablespoons, portion the chilled dough into 30 equal mounds of about 2 teaspoons each. Roll each mound into a ball.
Arrange the balls 2 inches apart on the prepared baking sheets. Use the bottom of a clean glass or your palm to flatten each ball to about 1/2 inch thick.
Bake until the edges are set and the tops look dry and slightly cracked, 6-9 minutes. The cookies will firm up as they cool.
Let the cookies cool on the baking sheets for 5 minutes, then transfer to a wire rack to cool completely, about 25 minutes.
Make The Filling:
In a clean mixing bowl, beat the softened butter and vegetable shortening on medium speed until creamy, 1 to 2 minutes.
Gradually add the powdered sugar, then the vanilla, and continue beating until very light and fluffy, 2 to 3 minutes. If the filling is too soft, beat in a little more powdered sugar. If it’s too stiff, add a teaspoon of milk or cream.
Assemble And Serve The Cookies:
Pair the cookies by size. Using a pastry bag fitted with a 1/4‑inch round tip or a small offset spatula, pipe or spread about 1 tablespoon of filling onto the flat side of one cookie.
Top with a second cookie, flat side down, and gently press until the filling just reaches the edges. Repeat with the remaining cookies
Serve right away or store in an airtight container.