The best interview I've experienced was done exactly like this. Candidates were given a scaffolded, incomplete program, written on the company's internal platform (which you'd be using on the job), and a list of features/tasks to implement in it. Each feature built off the previous ones, and ramped up in difficulty as well as in the breadth of platform features required to implement it.
Documentation for the libraries was provided. Throughout the interview, you could ask some of the folks on the team questions about using the libraries, for some help with debugging, stuff like that. The interview closely resembled actual day-to-day work on the team. (I'll note also, that this company's platform had an open source variant; and so candidates could also tinker with it before the interview).
The team eventually hired me, and then I got to see it from the other side. The positive and negative signals both seemed great: some candidates refused to read the documentation, or even ask for help; they were a clear non-fit. Candidates who completed the assigned tasks, or at least most of them, and communicated well with the team, were usually given an offer, and when hired turned out to be great collaborators.
Documentation for the libraries was provided. Throughout the interview, you could ask some of the folks on the team questions about using the libraries, for some help with debugging, stuff like that. The interview closely resembled actual day-to-day work on the team. (I'll note also, that this company's platform had an open source variant; and so candidates could also tinker with it before the interview).
The team eventually hired me, and then I got to see it from the other side. The positive and negative signals both seemed great: some candidates refused to read the documentation, or even ask for help; they were a clear non-fit. Candidates who completed the assigned tasks, or at least most of them, and communicated well with the team, were usually given an offer, and when hired turned out to be great collaborators.