Forgebeta

Install it

One curl writes the binary and pulls the skill pack into your project. macOS and Linux, Cursor, Codex and Claude Code.

Install is one command, run from the project directory you want Forge in.

Cursor or Codex
curl -fsSL https://get.brightstack.ai/forge/install.sh | sh
Claude Code
curl -fsSL https://get.brightstack.ai/forge/install.sh | FORGE_TOOLS=claude sh

The variable goes on the sh, not on the curl. A shell applies a prefixed assignment to the command it is attached to, and the installer reads it from its own environment, so putting it on the left of the pipe silently installs the default host instead.

That downloads a checksummed binary for your platform, writes it to ~/.local/bin/forge, and then runs forge setup in the current directory, which pulls the latest skill pack from GitHub into the project.

It will not touch your shell config

If ~/.local/bin isn't on your PATH, the installer prints the export line and leaves your rc files alone. Setup still runs, because the installer calls the binary by absolute path.

macOS and Linux, on x64 and arm64. Windows and an npm package are not in this release.

Where it puts things

The host directory follows the agent you use. Cursor and Codex both read .agents/skills/, Claude Code reads .claude/skills/, and a project that wants Cursor's own directory can have .cursor/skills/. Picking the directory is the only thing FORGE_TOOLS and --tools do.

Pick a host, or several
forge setup                          # .agents — the default
forge setup --tools claude           # .claude
forge setup --tools cursor           # .cursor
forge setup --tools agents,claude    # both

Setup writes only the names Forge owns — skills/forge, skills/forge-code-review, agents/ and OKF.md — so your other skills stay where they are. It merges into those directories rather than emptying them first. An unknown tool name fails rather than guessing.

Restart your agent

A freshly created skill directory is often invisible to an already-running agent. Start it from the project directory, and restart it if Forge doesn't answer.

First use

The installer already ran forge setup for you, so there is nothing left to do in a shell. Start your agent in the project directory and say this:

What you type
Read .agents/skills/forge/SKILL.md and use it as the Forge workflow.
Forge explore what this repository is and what state it's in.

On Claude Code that first path is .claude/skills/forge/SKILL.md. You only need that line once, to point the agent at the pack; after it has read the skill, Forge explore, Forge build and the rest work on their own.

You should get back evidence, options and open questions, and no edits to your repository. Exploration creates no delivery authority at all, which makes it the cheapest way to see whether you like how Forge thinks.

Installing from a checkout

--pack skips the network and copies from a local package tree, which is what you want in CI or when you're working on Forge itself:

What you type
forge setup --pack /path/to/forge

That path must be the package root, with skills/forge, skills/forge-code-review, agents/ and OKF.md directly under it. It is not the directory holding the binary, and copying skills next to the binary does nothing: templates are compiled in, skills never are.

What Forge reads from your repository

Forge takes its languages, frameworks, package manager, architecture conventions, test commands and deployment rules from your AGENTS.md files, manifests and existing code. When the evidence isn't there, it names the gap instead of inventing a house style for you.

Next, pick the thing you're actually trying to do from How to, or read the CLI for the full command surface.

On this page