Mix the spice rub. In a small bowl, combine chili powder, cumin, smoked paprika, garlic powder, onion powder, cayenne, salt, pepper, and lime zest.
Season the fish. Pat the fish dry.
Drizzle with olive oil and lime juice, then coat all sides with the spice mix. Let it sit for 10 minutes while you make the slaw.
Make the slaw. In a large bowl, toss cabbage, red onion, cilantro, and jalapeño. Whisk lime juice, vinegar, olive oil, honey, and salt.
Pour over the veggies and toss. Set aside to soften slightly.
Stir together the lime crema. Mix Greek yogurt, mayonnaise (if using), lime juice, garlic, and salt until smooth. Adjust lime and salt to taste.
The flavor should be bright and tangy.
Cook the fish. Pan-sear: Heat a large nonstick skillet over medium-high. Add a light drizzle of oil. Cook fish 3–4 minutes per side, depending on thickness, until just opaque and flakes easily.
Or bake: Bake on a lined sheet at 425°F (220°C) for 10–14 minutes, until flaky and cooked through.
Warm the tortillas. Toast each tortilla in a dry skillet over medium heat for 20–30 seconds per side, or wrap in foil and warm in the oven for a few minutes.
Keep them covered so they stay pliable.
Flake the fish. Transfer cooked fish to a plate and gently break into large chunks. Don’t shred too fine—you want hearty pieces.
Assemble. Layer tortillas with slaw, fish, and avocado slices. Spoon on the lime crema, add cilantro, and finish with a squeeze of fresh lime.
Add hot sauce if you like heat.
Serve immediately. Tacos are best when the fish is warm and the slaw is crisp.