Prepare the Dough:
In a large bowl, mix the flour, sugar, salt, and instant yeast.
Add the lukewarm milk and mix until a soft dough forms.
Knead the dough on a floured surface for about 10 minutes until smooth and elastic.
Place the dough in a lightly oiled bowl, cover with a damp cloth, and let it rise in a warm place for about 1 hour or until doubled in size.
Incorporate the Butter:
Roll out the risen dough into a large rectangle on a floured surface.
Slice the cold butter into thin pieces and arrange them evenly over two-thirds of the dough.
Fold the unbuttered third over half of the buttered section, then fold the remaining third on top, like folding a letter.
Turn the dough 90 degrees, roll it out again into a rectangle, and repeat the folding process without adding more butter.
Wrap the dough in plastic wrap and refrigerate for 30 minutes.
Shape the Gipfeli:
Roll out the chilled dough into a large rectangle, about 5mm thick.
Cut the dough into triangles with a base of approximately 10cm.
For filled Gipfeli, place a small amount of your chosen filling (e.g., chocolate chips, jam, ham, cheese) near the base of each triangle.
Starting from the base, roll each triangle towards the tip to form a crescent shape.
Place the rolled Gipfeli on a baking sheet lined with parchment paper, ensuring the tip is tucked underneath to prevent unrolling during baking.
Final Rise and Baking:
Cover the shaped Gipfeli with a damp cloth and let them rise for about 20 minutes.
Preheat the oven to 200°C (392°F).
Brush the Gipfeli with the beaten egg to give them a shiny finish.
Bake for 15-20 minutes or until golden brown.
Remove from the oven and let them cool slightly before serving.