Place potatoes in a large saucepan (cast iron works best).
Cover the potatoes with water. Add 1 teaspoon salt.
Bring to a boil then reduce heat to a low boil.
Cook until potatoes are just tender, 20-25 minutes.
Drain potatoes and reserve in a bowl.
Add the butter to the pan and melt over medium heat.
Add onion and cook until softened.
Add the garlic and saute for another 30 seconds.
Add the chile powder and cayenne, stir.
Add the potatoes. Season with salt and pepper. Toss to coat.
Lightly mash the potatoes down into the skillet. Cook until golden brown and the edges are a tad crispy.
Flip over, mash again, and cook until golden brown and edges are crispy on the bottom.
Remove from the heat and stir in the cilantro. Serve.