For single-directory projects, it may be sufficient to have the user grep for the files with the appropriate keywords or fixed strings from the output of the program. However, this becomes somewhat difficult as the size of the system increases. The next step may be for the maintainer and extender to read the high-level design documentation to familiarize themselves with the topmost level of design objects you've chosen to model your application domain. The final step might be for them to change into a subdirectory of the source code area named after that top-level design object. I believe that seperation of documentation from the source code is a fundamentally bad idea for the following reasons.
File extensions are a convention that serves nicely to seperate the format or types of the files.
The code itself should be well-structured and documented. Certainly since most search facilities work over the entire file, the need for hierarchical structuring is less important inside a file than for multiple levels of subdirectories. Perhaps least-understood is structuring code for simplicity of testing. The most important part of testability is to decouple the subsystem to be tested from other subsystems. Not only does making code changes introduce a burden on the maintainer and extender, but it also introduces the possibility that they may forget to remove them before commiting the code.