fumablox

The compiler

Luau source in, a semantic model out. Markdown is a backend.

Think of fumablox as a small compiler. The frontend is Luau. The IR is a project model. Fumadocs MDX is one of several backends.

What it reads

From source, not only from tags:

KindHow it shows up
Class / modulereturned table, __index, or @class / @module
Methodfunction Aircraft:Takeoff() or Takeoff: (self: Aircraft) -> ()
Propertyfields on export type tables, or @prop
EventRBXScriptSignal / Signal fields
Enum"Idle" | "Takeoff" unions
Constantlocal MAX_SPEED = 250
require graphrequire(script.Parent.Aircraft)
Wallywally.toml / wally.lock (packages linked, not mirrored)
Servicesgame:GetService("Players")
ExplorerRojo default.project.json

Comments are annotations on that model. They never have to repeat a signature the parser already has.

The Aircraft rule

This example has no @class and no @param:

src/Aircraft.luau
export type Aircraft = {
    altitude: number,
    speed: number,
    Takeoff: (self: Aircraft) -> (),
    Land: (self: Aircraft) -> (),
}

function Aircraft:Takeoff()
end

The compiler still emits Aircraft:

  • altitude / speed as properties
  • Takeoff / Land as methods (self means method, not callback)
  • TookOff: RBXScriptSignal as an event
  • AircraftState as an enum
  • MAX_SPEED as a constant
  • FlightController as a dependant

Coverage is a feature

Because Aircraft has no prose, fumablox check reports it as undocumented. The page exists; the quality tool still has teeth.

IR

fumablox extract --out api.json writes the whole model: classes, modules, graph, hierarchy, coverage, and Wally packages. That JSON is what an LSP, GitHub Action, or Studio plugin would consume later. Documentation is one backend, not the product.

import { extractProject, loadConfig } from '@metricsrb/fumablox';

const { config } = loadConfig(process.cwd());
const model = extractProject({ cwd: process.cwd(), config });

Backends today

  • Fumadocs MDXfumablox generate
  • Stdout / JSONfumablox extract
  • Terminalcheck, coverage, graph, search, diff

On this page