They may not depend on CPs associated with a different package. For documentation purposes, a class in a CP is considered to be part of its associated package. It must be documented as part of that package documentation, with an indication that the code is found in the Tools package due to dependencies. In the main directory of any package that has associated CPs, there must be a file named CrossingPackages listing the associated CPs, and showing which other packages they depend on. If package A has any fundamental dependencies, these must be listed in a file in the main director of package A, named FundamentalDependencies .
Most packages probably have no fundamental dependencies.
For example, Random should NOT depend on Matrix - that is what the idea of CPs is for. Next there will be the few packages with fundamental dependencies, with thick lines to show which other packages they need. Then come the crossing packages, arranged above their associated package, and with thinner lines to other package they require.