In a large pot, heat oil over a medium high heat. Add onion and cook until translucent, about 2-3 minutes. Then add garlic and ginger and continue cooking another 2-3 minutes.
After that, add the chicken and cook, stirring until chicken is browned on all sides. Then add spices, red pepper, salt and black pepper, stirring to coat.
Pour in chicken stock, and yams or sweet potatoes, then bring to a boil.
Reduce heat to simmer and cover, cooking for 15 minutes.
Uncover, stir in tomatoes, tomato paste, and peanut butter, mixing until blended. Continue cooking an additional 15 to 20 minutes, or until yams are fork tender and liquid is reduced and thick.
Remove from heat and stir in baby spinach. (If using tougher greens, add 5-10 minutes before done)
Serve with rice, if desired.