Package toolbox is the directory model behind r/moul/toolbox(/r/moul/toolbox): a list of small gno.land utilities, each one a realm of its own, rendered as a single index.
A tool is a Tool: a slug, the realm path that serves it, a title and one line of description. A Catalog holds them sorted by slug and answers the three questions a directory gets asked: what is here, what is this one, and what is tagged X.
Why a package and not just a realm
The hub realm is `private = true`, which buys redeploy-in-place at a stable path and costs the ability to be imported at all: the type checker refuses any realm importing a private one (`ImportPrivateError`). So the hub cannot share a single line of code with its tools by importing them, and they cannot import it either. Everything both sides must agree about (what a tool entry looks like, how the index is rendered, how a query form is spelled) has to live in a `p/`, which is this one.
Nesting is checked on the base path, not on the full one
p/moul/nestedpkg(/p/moul/nestedpkg/v0) decides "is the caller below me" by prefixing one package path with the other. That is exactly right when neither path carries a version, which is the case for a private hub: it is redeployable, so its version could never increment and it does not carry one. It breaks the moment either side does, because `gno.land/r/moul/toolbox/usernames/v0` does not begin with `gno.land/r/moul/toolbox/v0`.
BasePath removes a trailing `/vN` so the comparison is about the family rather than the version, and IsUnder and SlugOf are built on it. A hub and a tool may each be versioned or not, independently, and all four combinations answer the same.
Live: r/moul/toolbox(/r/moul/toolbox).