Configuring Horizon
coollabsio/coolify
A skill your agent uses whenever the user mentions Horizon by name in a Laravel context.
TRIGGER when the user asks to upgrade the project to a newer or the latest version of Microbus, or to update the framework.
$ npx skills add microbus-io/fabric --skill upgrade-microbus -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install microbus-io/fabric upgrade-microbus --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/microbus-io/fabric.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/microbus/upgrade-microbus .claude/skills/upgrade-microbus && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "upgrade-microbus" agent skill from https://github.com/microbus-io/fabric/tree/main/.claude/skills/microbus/upgrade-microbus into .claude/skills/upgrade-microbus/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "upgrade-microbus", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/microbus-io/fabric/tree/main/.claude/skills/microbus/upgrade-microbusType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add microbus-io/fabric --skill upgrade-microbus -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install microbus-io/fabric upgrade-microbus --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microbus-io/fabric.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/microbus/upgrade-microbus .agents/skills/upgrade-microbus && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "upgrade-microbus" agent skill from https://github.com/microbus-io/fabric/tree/main/.claude/skills/microbus/upgrade-microbus into .agents/skills/upgrade-microbus/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "upgrade-microbus", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add microbus-io/fabric --skill upgrade-microbus -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install microbus-io/fabric upgrade-microbus --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microbus-io/fabric.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/microbus/upgrade-microbus .cursor/skills/upgrade-microbus && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "upgrade-microbus" agent skill from https://github.com/microbus-io/fabric/tree/main/.claude/skills/microbus/upgrade-microbus into .cursor/skills/upgrade-microbus/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "upgrade-microbus", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/microbus-io/fabric.git --path .claude/skills/microbus/upgrade-microbus--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add microbus-io/fabric --skill upgrade-microbus -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install microbus-io/fabric upgrade-microbus --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microbus-io/fabric.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/microbus/upgrade-microbus .gemini/skills/upgrade-microbus && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "upgrade-microbus" agent skill from https://github.com/microbus-io/fabric/tree/main/.claude/skills/microbus/upgrade-microbus into .gemini/skills/upgrade-microbus/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "upgrade-microbus", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install microbus-io/fabric upgrade-microbusInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add microbus-io/fabric --skill upgrade-microbus -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/microbus-io/fabric.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/microbus/upgrade-microbus .github/skills/upgrade-microbus && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "upgrade-microbus" agent skill from https://github.com/microbus-io/fabric/tree/main/.claude/skills/microbus/upgrade-microbus into .github/skills/upgrade-microbus/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "upgrade-microbus", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add microbus-io/fabric --skill upgrade-microbus -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install microbus-io/fabric upgrade-microbus --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/microbus-io/fabric.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/microbus/upgrade-microbus .opencode/skills/upgrade-microbus && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "upgrade-microbus" agent skill from https://github.com/microbus-io/fabric/tree/main/.claude/skills/microbus/upgrade-microbus into .opencode/skills/upgrade-microbus/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "upgrade-microbus", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
upgrade-microbusTRIGGER when the user asks to upgrade the project to a newer or the latest version of Microbus, or to update the framework.
Upgrade Microbus is an agent skill from microbus-io/fabric. TRIGGER when the user asks to upgrade the project to a newer or the latest version of Microbus, or to update the framework. Each Microbus release ships this one self-contained skill; it applies that release's single-version migration, then chains to the next release's copy of this skill until the target version is reached.
Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Backend & APIs. The repository describes itself as: Microbus is the only fabric where every agentic workflow runs on a true microservice substrate - giving your workflows security, scale, observability, and prompt-driven authoring. The licence is Apache-2.0.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit fb98098. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gogitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Upgrade Microbus loads about 2.9k tokens when it runs. Until then it costs about 85 tokens; SKILL.md has 1,498 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from microbus-io/fabric at commit fb98098, republished under its Apache-2.0 licence (© microbus-io). 1,498 words, ~2,893 tokens.
.claude/skills/upgrade-microbus/SKILL.md (or your agent's skills folder).CRITICAL: Do NOT explore or analyze the project unless a migration step below tells you to. This skill is self-contained.
CRITICAL: This skill is self-propagating. It migrates the project by exactly one version increment (Phase 1), then replaces itself on disk with the next release's copy of this same skill and runs that (Phase 2). Only the "Release constants" and Step 3 differ between releases; the Phase 1 and Phase 2 machinery is identical in every release.
The only part of this skill a release author edits. Set these when cutting a release.
SOURCE = the version this release upgrades from (the previous release), e.g. v1.44.0.DEST = this release's own version, e.g. v1.45.0.SOURCE to DEST, authored in Step 3. Empty when the release has no breaking changes.SOURCE = v1.46.0
DEST = v1.47.0<!-- RELEASE AUTHOR: set SOURCE and DEST above, and fill Step 3, when cutting a release. -->
Copy this checklist and track your progress:
Upgrade Microbus:
- [ ] Step 1: Read the CURRENT and TARGET versions
- [ ] Step 2: Phase 1 - apply this release's increment (SOURCE -> DEST)
- [ ] Step 3: (release-specific migration, invoked by Step 2)
- [ ] Step 4: Phase 2 - chain to the next release, or finishRead the github.com/microbus-io/fabric version from go.mod; call it CURRENT. If the dependency is absent, this is not a Microbus project; exit.
Determine the TARGET. In order of precedence: the TARGET carried forward from the previous hop of the chain (see Step 4); the version the user named when starting the upgrade; or, if the user asked only to update or go to "latest", the latest published version:
go list -m -versions github.com/microbus-io/fabricThe versions are listed oldest to newest. A user-supplied TARGET is fixed for the whole run: carry it across every hop and do not silently re-derive it as "latest" on a later hop. If CURRENT is already TARGET (or newer), there is nothing to do; exit.
If CURRENT is not equal to SOURCE, skip straight to Step 4. (This happens on the very first hop: the project's installed copy of the skill is CURRENT's own release, so its DEST equals CURRENT and its SOURCE is one behind - Phase 1 has nothing to do, and its only job is to bootstrap the chain in Step 4.)
Otherwise the project is exactly one version behind this release. Migrate it:
Pin the framework to DEST:
go get github.com/microbus-io/fabric@DESTApply the migration in Step 3.
Regenerate each microservice's boilerplate with this release's generator, resolve dependencies, and compile-gate:
find . -path ./vendor -prune -o -name definition.go -path '*api/definition.go' -print \
| while read -r def; do
svcdir=$(dirname "$(dirname "$def")")
go run github.com/microbus-io/fabric/cmd/genservice "$svcdir"
done
go mod tidy
go vet ./...go vet must pass before Step 4. A grep-guided or manual migration can leave a compile error at a site it could not fix mechanically; resolve those now - with the user when the fix is a design choice - so the project compiles at DEST. (A migration may deliberately leave a runtime // TODO: that still compiles; the final go test in Step 4 surfaces it.)
Invoked by Step 2. This is DEST's migration; a release author replaces it when cutting the next release (see "Authoring framework upgrade skills" in the repo-root CLAUDE.md). Confine it to source edits - Step 2 owns the per-increment genservice + go vet, and Step 4 owns the final go test.
v1.47.0 moves the embedded workflow engine to dwarf v0.11.0, which splits stopping a flow in two:
Cancel is now graceful. Each step in progress finishes, then receives the cancellation on its node's
onError transition, where workflow.IsCancelled(onErr) tells it apart from a real failure. A flow with no
handler ends cancelled. A sleeping or backed-off step is reached only when it wakes, and an interrupted
flow stays interrupted.Terminate is the old forceful stop, newly exposed on the foreman. It abandons in-flight work across the
whole subgraph tree and ends the flow in the new terminated status, with its reason in the new
FlowOutcome.TerminateReason / FlowSummary.TerminateReason field.Nothing stops compiling, so every step below is a behavior review. Work through them in order; 3a exits early.
grep -rln --include='*.go' --exclude-dir=vendor 'microbus-io/dwarf\|foremanapi' .If this finds nothing, the project neither defines nor drives workflows, and Step 3 is complete - go to Step 4.
go.mod still moves to dwarf v0.11.0 either way (it is a fabric dependency) and needs no source change.
Cancel or Terminate at Each Call Site (Grep-Guided, Ask the User)Every existing Cancel call now has graceful semantics. Find them, including in tests:
grep -rn --include='*.go' --exclude-dir=vendor '\.Cancel(' .Skip hits that are not the foreman's Cancel (a context.CancelFunc, another microservice's endpoint). For each
remaining call, decide which stop it needs:
Terminate where the caller needs the flow stopped now or unconditionally: it may be
interrupted (a graceful cancel leaves it parked), it may be sleeping or backed off for a long time, the caller
Awaits it and expects cancelled promptly, or it is an operator "kill" action. This preserves the pre-v1.47.0
behavior. Also update what the caller then checks: workflow.StatusCancelled becomes workflow.StatusTerminated
and CancelReason becomes TerminateReason.Cancel where the workflow should get a chance to react - finish the step in progress, compensate in
an onError handler, or carry on. If the workflow has AddTransitionOnError handlers, check whether each should
treat a cancellation differently from a failure via workflow.IsCancelled(onErr).The choice is a design decision; ask the user when the intent is not clear from the call site. A test that
cancelled an interrupted or long-sleeping flow and awaited cancelled will now hang until its deadline - that is
the signature of a site that needs Terminate.
terminated Status Wherever Statuses Are Enumerated (Grep-Guided)grep -rn --include='*.go' --exclude-dir=vendor 'StatusCancelled\|CancelReason\|"cancelled"' .At each hit that lists terminal or error statuses - a switch on status, a "has the flow stopped" check, a UI
chip or filter, a dashboard series - add workflow.StatusTerminated alongside workflow.StatusCancelled, or
replace a hand-written terminal list with workflow.IsTerminalStatus(status). Where CancelReason is displayed
or logged, fall back to TerminateReason as well, since a terminated flow carries its reason there instead.
dwarf v0.11.0 changes the engine's schema by revising its existing migrations rather than adding new ones, so a database the engine already migrated does not pick up the new columns. Workflow databases must be recreated.
In LOCAL development the foreman keeps its single shard in a SQLite file, shard_1.local.sqlite (plus
-wal/-shm siblings), in the directory the app runs from:
find . -name 'shard_*.local.sqlite*' -not -path './vendor/*'Tell the user that these files hold local flow history that will be lost, and delete them once they agree; the
engine recreates the schema on the next start. For LAB and PROD, tell the user that each shard database in the
foreman's Shards config must be dropped and recreated (or pointed at a fresh database) as part of the upgrade,
and that existing flows do not carry over. This skill cannot reach those databases.
Find the next release to apply: from go list -m -versions github.com/microbus-io/fabric, the smallest published version NEXT in the range DEST < NEXT <= TARGET (semver). The upper bound <= TARGET is what stops the chain from overshooting a user-supplied TARGET.
If there is no such NEXT the chain is complete - either TARGET is at or below DEST, or no published release lies between DEST and TARGET. The correctness gate is go vet, which already passed at every increment including this one - it is deterministic and always runnable locally. As a final behavior check, run the tests where feasible:
go test ./...go vet gate; the upgrade stands.// TODO: a migration left to fill, or a pre-existing / environmental failure): report it and ask the user how to proceed - fix it together, accept the upgrade with the failure recorded, or roll back. Do not silently declare success on failures you have not explained.If CURRENT is still below TARGET here, TARGET names no published release the chain could reach (for example a version that was never published); say so and leave the project at CURRENT.
If NEXT exists, hand off to it. Install NEXT's agent rules and skills - which include NEXT's copy of this skill (NEXT already carries its v prefix, e.g. v1.46.0):
git clone --depth 1 --branch NEXT https://github.com/microbus-io/fabric temp-clone
rm -rf .claude/rules/{auth.txt,microbus.md,python.txt,sequel.txt,workflows.txt}
rm -rf .claude/skills/{microbus,python,sequel,upgrade}
cp -r temp-clone/.claude .
rm -rf temp-clone(Removing the fabric-managed rules files and skill groups before the copy purges anything NEXT dropped; cp overwrites and adds but never deletes. Rules and skills the project added of its own are left untouched.)
CRITICAL: The copy just overwrote this skill on disk with NEXT's copy. Now Read .claude/skills/microbus/upgrade-microbus/SKILL.md (the new content) and follow it from Step 1, carrying the same TARGET forward - if the user supplied a specific TARGET, it stays the TARGET for NEXT and every later hop; only an unspecified TARGET defaults to "latest". Do not continue from this in-context copy, because NEXT's SOURCE/DEST and migration are what must run next. CURRENT is now DEST, which is NEXT's SOURCE, so NEXT's Phase 1 fires and advances one more increment. The chain ends at the hop that finds no NEXT in range.
© microbus-io, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/microbus/upgrade-microbus of microbus-io/fabric.
Open the folder on GitHubat commit fb98098
Upgrade Microbus next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Upgrade Microbus this skillmicrobus-io/fabric | 172 | — | ~2.9k | Automated safety check: Pass | Apache-2.0 | |
| Configuring Horizoncoollabsio/coolify | 63k | 4 repos | ~898 | Automated safety check: Pass | MIT | |
| Nestjs Best Practicesrolling-scopes/rsschool-app | 10k | 6 repos | ~1.2k | Automated safety check: Pass | MIT | |
| Sub2API AdminWei-Shaw/sub2api | 43k | 1 repos | ~717 | Automated safety check: Pass | LGPL-3.0 | |
| Firecrawl Build Onboardingfirecrawl/firecrawl | 190k | 1 repos | ~1.4k | Automated safety check: Notes | ISC | |
| Obsidian BasesAtmosphere/atmosphere | 3.8k | 22 repos | ~3.2k | Automated safety check: Pass | Apache-2.0 |
coollabsio/coolify
A skill your agent uses whenever the user mentions Horizon by name in a Laravel context.
rolling-scopes/rsschool-app
NestJS best practices and architecture patterns for building production-ready applications.
Wei-Shaw/sub2api
Manages a Sub2API deployment from the command line: accounts, redeem and invitation codes, groups, proxies, imports, exports and raw admin API calls.
firecrawl/firecrawl
Gets Firecrawl working in a project: signs you in through the browser, saves FIRECRAWL_API_KEY to .env and picks the first SDK or REST path.
Atmosphere/atmosphere
Create and edit Obsidian Bases (.base files) with views, filters, formulas, and summaries.
coollabsio/coolify
ACTIVATE when the user works on authentication in Laravel. An agent skill from coollabsio/coolify.
microbus-io/fabric
TRIGGER when user asks to add or modify a configuration property or setting, or to make a value configurable.
microbus-io/fabric
TRIGGER when user asks to add, create, or modify an API endpoint, function, or RPC, or a route that accepts typed arguments and returns typed results.
microbus-io/fabric
TRIGGER when user asks to listen for, subscribe to, or handle an event emitted by another microservice.
microbus-io/fabric
TRIGGER when user asks to add or modify a metric, counter, gauge, or histogram, or to track/measure an operation.
microbus-io/fabric
TRIGGER when user asks to fire, emit, or publish an event that other microservices can subscribe to.
microbus-io/fabric
TRIGGER when user asks to add a Python-backed function endpoint to an existing Python-backed microservice.
Categories
TRIGGER when the user asks to upgrade the project to a newer or the latest version of Microbus, or to update the framework. Upgrade Microbus is an agent skill from microbus-io/fabric. TRIGGER when the user asks to upgrade the project to a newer or the latest version of Microbus, or to update the framework.
Upgrade Microbus fits situations like: the user asks to upgrade the project to a newer; the latest version of Microbus; update the framework.
Run `npx skills add microbus-io/fabric --skill upgrade-microbus -a claude-code`. Or copy the skill folder (.claude/skills/microbus/upgrade-microbus in microbus-io/fabric) into .claude/skills/upgrade-microbus in your project. Claude Code loads it when a task matches its description.
Run `npx skills add microbus-io/fabric --skill upgrade-microbus -a codex`. Or copy the skill folder (.claude/skills/microbus/upgrade-microbus in microbus-io/fabric) into .agents/skills/upgrade-microbus in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add microbus-io/fabric --skill upgrade-microbus -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/upgrade-microbus, .gemini/skills/upgrade-microbus, .github/skills/upgrade-microbus and .opencode/skills/upgrade-microbus in your project.
Going by SKILL.md and its folder, Upgrade Microbus needs the command-line tools its instructions call (go and git).
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Upgrade Microbus is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Upgrade Microbus: Configuring Horizon (coollabsio/coolify, 63k stars), Nestjs Best Practices (rolling-scopes/rsschool-app, 10k stars), Sub2API Admin (Wei-Shaw/sub2api, 43k stars) and Firecrawl Build Onboarding (firecrawl/firecrawl, 190k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
microbus-io (a GitHub organization) maintains it in microbus-io/fabric, which has 172 GitHub stars. The repository holds 32 skills in this directory. The repository was last updated on September 28, 2026.
Source: microbus-io/fabric on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.