Official extension directory for Homeboy. Each extension is a project-type primitive — it teaches Homeboy how to discover, audit, lint, test, and release a particular kind of codebase.
This is a monorepo — each subdirectory is a standalone extension. Install individual extensions, not the whole repo.
| Extension | Description |
|---|---|
wordpress |
WordPress project type — WP-CLI, build, test (via Playground), and lint (PHPCS + WPCS + PHPStan + ESLint) |
rust |
Rust project type — Cargo CLI, fingerprint/refactor, test/lint runners, crates.io publish |
nodejs |
Node.js project type — discovery, audit grammar (Express/Mongoose/etc.), and npm release lifecycle |
go |
Go project type — Cargo-equivalent CLI integration for services and binaries |
swift |
Swift project type — testing infrastructure for macOS, iOS, and Swift CLI projects |
managed-preview |
Provider command helpers for Homeboy managed service public previews |
These extensions cover the codebase lifecycle: discover, audit, lint, test, refactor, release, deploy. Anything that runs as a long-lived process, talks to a remote API at runtime, or scrapes/automates external services belongs in Sweatpants, not here.
GitHub Releases and Homebrew tap publishing for Rust binaries are handled by cargo-dist directly inside Homeboy's own release workflow — there is no separate github or homebrew extension.
Install extensions one at a time. Homeboy clones this repo, detects the monorepo layout, and extracts just the extension you asked for into ~/.config/homeboy/extensions/<id>/.
homeboy extension install https://github.com/Extra-Chill/homeboy-extensions --id wordpress
homeboy extension install https://github.com/Extra-Chill/homeboy-extensions --id rust
homeboy extension install https://github.com/Extra-Chill/homeboy-extensions --id nodejsRemote runners need the same extension IDs installed on the runner host before
Homeboy can offload matching jobs to them. For the standard runner bootstrap
path, see docs/remote-runner-bootstrap.md.
# List all installed extensions
homeboy extension list
# Inspect a specific extension
homeboy extension show wordpressLocal path installs are for active extension development:
git clone https://github.com/Extra-Chill/homeboy-extensions.git
homeboy extension install ./homeboy-extensions/wordpress
homeboy extension install ./homeboy-extensions/rustFor normal use, install from the GitHub monorepo URL with --id <extension>. Homeboy manages the cloned/extracted install and can update that installed copy:
homeboy extension install https://github.com/Extra-Chill/homeboy-extensions --id wordpressLocal path installs are linked installs. The active extension code is whatever the installed symlink target points at, so updating the primary homeboy-extensions checkout does not update an extension linked to another checkout or feature worktree. Avoid linking installed extensions to short-lived worktrees unless you are intentionally testing that branch.
Inspect the current state before debugging extension behavior:
homeboy extension list
homeboy extension show wordpress
readlink ~/.config/homeboy/extensions/wordpressTo reset a stale linked install, uninstall and reinstall from the GitHub URL, or relink intentionally to the checkout you want active.
Once installed, declare the extension in your repo's homeboy.json and Homeboy will pick it up automatically:
{
"id": "my-project",
"extensions": {
"wordpress": {}
}
}Then run Homeboy commands as usual:
homeboy audit
homeboy lint --fix
homeboy test
homeboy releaseHomeboy core can promote agent-task patch artifacts through an external workspace provider command. This repo provides a Data Machine Code-backed provider script for environments that use managed DMC worktrees:
homeboy agent-task promote aggregate.json \
--to-worktree repo@branch-slug \
--provider-command ./scripts/datamachine-code-promotion-provider.shThe provider reads homeboy/agent-task-promotion-apply-request/v1 JSON on
stdin and writes homeboy/agent-task-promotion-apply-response/v1 JSON on
stdout. It keeps the DMC-specific studio wp datamachine-code ... shellouts in
Homeboy Extensions instead of Homeboy core.
Each extension also exposes a CLI binding for direct use against a project or component:
# WordPress
homeboy wp my-site plugin list
# Rust
homeboy cargo my-crate buildEach extension is a directory containing a <extension-id>.json manifest. The manifest defines capabilities, audit grammar, release actions, and CLI bindings. See wordpress/wordpress.json and rust/rust.json for full examples.
Each extension owns its own CHANGELOG.md at <extension>/docs/CHANGELOG.md, generated by Homeboy at release time. There is no monorepo-level changelog — extensions release independently.