```python
def chain_transforms(grid: list, steps: list) -> list:
    if not grid or any(len(row) != len(grid[0]) for row in grid):
        raise ValueError("Grid must be rectangular")
    if any(step not in 'ccwcf' for step in steps):
        raise ValueError("Invalid step")

    def cw():
        return [list(row[::-1]) for row in zip(*grid)]

    def ccw():
        return [list(col) for col in zip(*grid)][::-1]

    def mirror():
        return grid[::-1]

    def flip():
        return grid.copy()

    def diag():
        return [list(col) for col in zip(*grid[:])]

    transforms = {'cw': cw, 'ccw': ccw, 'mirror': mirror, 'flip': flip, 'diag': diag}
    transformed_grid = grid
    for step in steps:
        transformed_grid = transforms[step]()
    return transformed_grid
```