Anindya: yes, my category \$$\text{Cat} / X \$$ is equivalent to the comma category you describe.

\$$\text{Cat} / X \$$ is an example of a [slice category, also known as an over category](https://ncatlab.org/nlab/show/over+category). Given a category \$$C\$$ and an object \$$c \in C\$$, the objects of the slice category \$$C/c\$$ are **objects of \$$C\$$ over \$$c\$$**, meaning things like this:

$$f: c' \to c$$

The morphisms in \$$C/c\$$ are commutative triangles of the obvious sort (see the link).

Of course, to define \$$\mathrm{Cat}/X\$$ as a slice category, we need to think of the set \$$X\$$ as a category! To do this, we take the [codiscrete category](https://ncatlab.org/nlab/show/codiscrete+groupoid) on \$$X\$$, meaning we put in exactly one morphism between each pair of objects. We can call this \$$\textrm{codisc}(X)\$$. So, the slice category I was calling \$$\text{Cat} / X \$$ should more precisely be called \$$\text{Cat} / \text{codisc}(X). \$$

But a slice category is a special case of a comma category, so we can also think of
\$$\text{Cat} / X \$$ as a comma category!

Following this through makes \$$\text{Cat} / X \$$ into a comma category in a slightly different way than you're doing. However, it's equivalent to your way, since the functor \$$\mathrm{codisc} : \text{Set} \to \text{Cat}\$$ sending any set to its codiscrete category is right adjoint to the functor \$$\text{Ob} : \text{Cat} \to \text{Set}\$$ sending any category to its set of objects. We can always rework the description of a comma category using adjoint functors in this manner, and get an equivalent category.

All these constructs are "somewhat awkward" or "evil" in that they (at least implicitly) involve equations between objects. One reason is that we're treating \$$\text{Cat}\$$ as a mere category when it's a really a 2-category, i.e., we're neglecting natural isomorphisms.

However, there's a strong argument that the collection of categories with a fixed set of objects should be treated as a mere category, not a 2-category - because that's the approach we already take with monoids, which are categories with just one object. I'm not saying we should always do this, but there's a good argument that one should allow oneself to do it.

But by now I'm too tired of writing to present this argument.