Combine chicken, yogurt, garlic (3 cloves), ginger (1 tbsp), garam masala (2 tsp), cumin (1 tsp), turmeric (1/2 tsp), cayenne (1/2-1 tsp), and salt (1 tsp). Let marinate for 5-10 minutes.
Heat oil in a skillet over medium-high, sear chicken for 2 minutes per side. Add 1 tbsp butter, toss, then remove chicken.
Cook onion in the skillet for 5 minutes. Add butter (2 tbsp), garlic (3 cloves), ginger (1 tbsp), garam masala (1 tbsp), cumin (1 tsp), turmeric (1/2 tsp), cayenne (1/2-1 tsp), chili flakes, salt, and pepper. Cook 5 minutes. Add tomato paste and cook for 3-4 minutes.
Reduce heat, add water (1 cup) and cream. Simmer for 5 minutes, add butter (1 tbsp), thin with coconut milk if needed. Add chicken, cook 5 minutes, stir in cilantro. Season as needed.