To me, programming assistants have two usecases:
1. Generate unit tests for modules which are already written to be tested 2. Generate documentation for interfaces
Both of these require quite deep knowledge in what to write, then it simply documents and fills in the blanks using the context which already has been laid out.