Do you tend to have scripts to mark prefabs

Granted, the title is somewhat bad, but let’s say you have a GameObject that represents your player.

The player has a ‘Health’ script managing its health, a ‘PlayerMovement’ script handling its movement and an ‘Inventory’ script, managing its inventory.

Do you also have a ‘Player’ script on your GameObject representing your player, which gives you easy access to all the other components that a player always has (so you only need a reference to this script to access all the player’s other scripts)? Do you maybe even create all the other scripts in the ‘Player’ script’s ‘Awake’ method via ‘AddComponent’ instead of dragging them onto the GameObject at edit-time?

Or do you think a component shouldn’t describe the GameObject it is attached to at all; it should only add behaviour to it?

Not prefabs, but logical objects or “entities”. Yes, I always have some leading or main component on the root gameObject. Then i either derive from it, or keep it sealed and just add components, which often derive from some base class of mine (like EntityComponent). Usually I will also create my own Update method called by some manager that holds all of my Entities, so it’s easier to control or pause the game (without changing the engine timeScale), save the game or do whatever level related tasks that should not affect eg. the controller part (inputs, gui, camera etc). So often when i refer to the object, i don’t refer to the GameObject, but this main component. That’s how i diffrerentiate between actual game objects (car, mine, rocket) and supporting objects (camera, game manager, texture generator)