Lint engine for JobyKit-installed apps. Verifies wrapper-contract invariants by introspecting a manifest module and scanning the host's component source files.
Rules
:manifest_drift(error) — a manifest entry points at a function that is not actually a Phoenix function component. Caught first because every other check depends on the entry being live.:missing_data_component(error) — a registered wrapper does not carrydata-component="Module.function"in its source.:missing_rest_global(warning) — a registered wrapper does not declareattr :rest, :global, blocking pass-through of phx- and aria- attributes from callers.:unregistered_wrapper(warning) — a function carries adata-component="..."attribute but is not registered in the manifest, making it invisible to/design.jsonand to agents.
Each violation is a map with :rule, :severity, :message,
:file, :line, :module, :function. The engine is pure data —
formatting and exit codes live in Mix.Tasks.JobyKit.Lint.
Summary
Types
Functions
Run the lint engine. Returns a list of violations in deterministic order (drift first, then per-entry checks in manifest declaration order, then unregistered wrappers sorted by data-component string).
Options
:manifest— required. The host's manifest module (use JobyKit.Manifest).:paths— list of glob patterns to scan for the unregistered- wrapper rule. Defaults to["lib/**/*.ex"]. Patterns are resolved relative tocwd.