Your approach still seems waterfallish to me. If you are gathering all the requirements before handing them off, it does not matter how mindfully you do it, it inhibits agility.
To facilitate agility, what you want to do is collect just enough of the requirements for development to get started. Then slices of working software can be delivered to validate that the system that will be developed actually solves the intended problem. It does no good to meet the initial requirements, if the system does not solve the intended problem.
Once that feedback loop is established, there will be better understanding of what is actually needed, which will then facilitate collecting better requirements for the next iteration.
Furthermore, by not getting too far ahead of development, there is always more feedback to improve requirements gathering as well as every other aspect of the development effort. Also, when all the requirements being gathered are turned into working software quickly, there is no need for extensive documentation. Just explain each requirement to the developers as they are about to start on their work for the requirement.
Your approach still seems