Extend ProGit with Lua

Build ProGit plugins against SDK API 0.3: LuaJIT by default, JSON across the host boundary, manifest-declared capabilities, and optional host bridges like sober.run(action, opts). Publish to plugins.progit.dev when the package is ready.

See Plugin Shape Publish a Plugin

Current Plugin Shape

The runtime loads Lua, but ProGit only sees JSON events and declared capabilities.

plugin.lua
.progit-plugin.json

API Reference

Lua Runtime

LuaJIT behind a runtime-agnostic plugin trait

plugin table()init()()plugin.on_event()

Manifest Contract

A .progit-plugin.json declares identity, hooks, runtime, SDK API, and capabilities

sdk_version()capabilities()hooks()

Host Capabilities

Narrow bridges are deny-by-default and only exposed when the manifest asks for them

storage()http()sober.run()

Events

Structured JSON events cross the plugin boundary and keep Lua/WASM swappable

IssueUpdated()PipelineStatusQuery()Custom()

Rendering

Plugins can contribute syntax highlights and experimental diff / fragment renderers

highlight()DiffRenderer()FragmentRenderer()

Marketplace

Registry installs use manifest metadata, source paths, trust policy, and package verification

install()verify()search()

Example Plugins

Write it once. Anyone can install it.

ProGit plugins are Lua packages with a manifest, not shell scripts with blind power. Declare the runtime, hooks, events, SDK API, and capabilities. The host decides what bridges exist. Once published, your plugin shows up on plugins.progit.dev and installs with a single command.

01 / Write

Lua package

Implement hooks or plugin.on_event. Keep behavior behind JSON so Lua and future WASM stay interchangeable.

02 / Manifest

Declare capabilities

A .progit-plugin.json pins SDK compatibility and gates network, storage, env, and Sober access.

03 / Submit

Package for registry

Registry metadata points at source URL, source path, SDK range, runtime, license, and checksum or signature material.

04 / Live

Instantly installable

Merged -> listed on plugins.progit.dev -> prog plugin install your-name works for everyone.

Browse Plugins Publishing Flow