Heat oil in a large non-stick or heavy-bottomed pan over medium-high heat. Add the cumin seeds, cinnamon stick, and cardamom pods, if using. Let these spices sizzle and immediately add the onions.
Sauté for 7-8 minutes, until lightly browned. If needed, deglaze the pan with 1-2 tbsp of water and allow the water to evaporate.
Add the garlic and ginger and cook for 30 seconds or until the raw smell disappears. Add the green chili pepper and tomato and sauté for 2-3 minutes, until the tomatoes become soft. Add the potato, bell pepper (if using), spice powders (coriander, cumin, turmeric, black pepper, and red chili flakes), and salt and stir to mix.
Increase the heat to high. Add the chicken and stir-fry for 3-4 minutes or until the chicken changes color. Add the coconut milk and yogurt and bring the mixture to a light boil.
Lower the heat to low-medium, cover and allow to simmer for about 20 minutes, until the chicken is cooked through and the potatoes are fork tender. Uncover and raise the heat to allow the sauce to thicken for 2-3 minutes, if desired.
Taste and adjust salt and seasoning. Garnish with chopped cilantro and serve with white basmati rice and lime or lemon, if desired.