Generate the layered project tree goctl writes, in MoonBit: the service entry
point and its moon.mod, etc/<service>.yaml, internal/config,
internal/svc, internal/types, internal/handler (the generated routes plus a
stub per handler, under internal/handler/<group>/ for a grouped route),
internal/logic, internal/middleware for every middleware an @server block
named, and a moon.pkg for each of those packages.
style (default gozero) names the files and the handler, logic and middleware
entry points inside them. Names the spec itself chose — the type blocks and
their fields — are left as written, since a MoonBit type name has to keep its
capital. dir puts the whole tree under a directory.
Each file says whether a regeneration may overwrite it; hand the result to
tree_plan to apply that.