Halopen output
“"Take the useUserData custom hook and split its responsibilities. Move all the data-fetching into a useFetchUser hook that just exposes the query state, and move the derived values — full name, initials, avatar URL — into a useUserDisplay hook that takes the user object as input. Keep the public API of any component that consumes useUserData unchanged."”
- · Hook names captured exactly (camelCase + leading "use")
- · Derived-value list captured verbatim
- · Public-API constraint preserved
- · Refactor pattern (split-by-responsibility) articulated naturally