Whisk yogurt, lemon juice, garlic, ginger, 2 tsp garam masala, 1.5 tsp cumin, coriander, 2 tsp paprika, 0.5 tsp turmeric, cayenne, and 1.25 tsp salt in a bowl.
Toss chicken in the marinade to coat well. Cover and chill at least 30 minutes.
Preheat grill to medium-high. Oil the grates. Thread chicken onto skewers and brush lightly with 1 tsp oil.
Grill chicken, turning a few times, until lightly charred and cooked through, 8–10 minutes. Rest briefly.
Meanwhile, heat remaining oil with butter in a skillet over medium. Cook onion until soft and golden, 5–7 minutes.
Stir in remaining garam masala, remaining cumin, remaining paprika, remaining turmeric, and black pepper. Toast 30 seconds. Add tomato paste and cook 1 minute.
Pour in tomato sauce and broth. Simmer until slightly thickened, 8–10 minutes. Stir in cream, sugar, and remaining salt.
Slice or slide chicken off skewers. Add to sauce and simmer 2–3 minutes to coat. Finish with cilantro and serve.