@zhangqi444/open-forge
AClaude Code: Loading verified recipe openclaw.md (v0.24.0).
Install
agr install @zhangqi444/open-forge --target claudeWrites 1 file into .claude/skills/, pinned to git-ba8ed95b.
- .claude/skills/open-forge/AGENTS.md
Document
AGENTS.md
agents.md compatibility — this file orients any AI coding agent (Claude Code, Codex, Cursor, Aider, Continue.dev, OpenClaw, Hermes-Agent, or a custom tools-using LLM) that's working on the open-forge codebase. End users using the open-forge skill to deploy software should look at SKILL.md instead.
Canonical reference. This file is intentionally short. The full architectural treatment, strict-doc-verification policy, two-tier coverage model, sanitization rules, and issue-processing workflow live in CLAUDE.md. Read that for the complete picture — AGENTS.md is the agents.md-standard landing page that points at it.
What this project is
open-forge is a guided self-hosting skill distributed via Claude Code's plugin marketplace and adapted for 6+ other AI platforms. It walks users from "I have a cloud account and a domain" to "working app at https://my.domain" via a phased workflow (preflight → provision → dns → tls → smtp → inbound → hardening → feedback) using 2,200+ verified recipes plus curated bundles for goal-shaped requests (AI homelab, privacy stack) plus a live-derived fallback for the long tail.
This isn't a typical software repo — it's a library of platform-agnostic markdown recipes + a thin Bash build script. There's no compiled artifact, no test suite, no lint config. The "build" is regenerating distribution bundles from canonical sources.
Working on this repo — the rules
Per CLAUDE.md:
- No human PRs — issues only. Catalog evolves through GitHub issues processed by AI sessions. See
.github/ISSUE_TEMPLATE/for the three input channels (recipe-feedback, software-nomination, method-proposal). Direct PRs are discouraged; if you submit one, the strict-doc policy still applies. - Strict-doc-verification policy. Every install method in every recipe must cite an upstream URL (
> **Source:** <url>). Community-maintained methods open with the required ⚠️ blockquote. The README is necessary but not sufficient — also read the upstream docs site, repodocs/install/tree, and wiki. If upstream-doc fetch fails, stop; do not write speculative content. Full rules in CLAUDE.md § Strict doc-verification policy. - Sanitization principles. User-shared content (deploy logs, gotchas, error output) must be stripped of identifiers (domains, IPs, SSH keys, API keys, AWS account IDs, emails) before being merged into recipes or posted to GitHub issues. Full strip-list with regex patterns in CLAUDE.md § Sanitization principles.
- Two-tier coverage model. Tier 1 = verified recipes in
references/projects/. Tier 2 = live-derived from upstream docs at runtime for software not yet in the catalog. Promotion criteria in CLAUDE.md § Two-tier coverage model. - In-scope test. Before adding a recipe: deployable service / static-site generator / CLI agent / AI inference server / CI runner / storage backend → ✅. Library / desktop app / SaaS-only → ❌. Decision rule + edge-case table in CLAUDE.md § Is this software in scope?.
Build / test / lint
There is no traditional build / test / lint pipeline. The single build artifact is the multi-platform distribution bundles under dist/:
./scripts/build-dist.sh all # regenerate bundles for all 7 platforms
./scripts/build-dist.sh codex # just Codex
./scripts/build-dist.sh openclaw # just OpenClaw
Required after touching any of: CLAUDE.md, plugins/open-forge/skills/open-forge/SKILL.md, plugins/open-forge/skills/open-forge/references/modules/*.md. The bundles concatenate these files; they drift if not regenerated, which silently breaks non-Claude-Code platforms.
CI enforces this — see .github/workflows/dist-bundles.yml. If the dist-bundles-up-to-date check fails on your PR, the fix is always: run ./scripts/build-dist.sh all from the repo root, commit the changes, push.
Versioning
plugins/open-forge/.claude-plugin/plugin.json version controls what the Claude Code marketplace fetches.
- Bump on: skill description change, new project / runtime / infra / module, major recipe rewrite, anything user-visible.
- Don't bump on: typo fixes, internal cleanups, lint-only changes.
Author convention
Commits authored as Qi Zhang <zhangqi444@gmail.com> — set inline via env vars (GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, GIT_COMMITTER_NAME, GIT_COMMITTER_EMAIL). Never write to git config.
Recommended companion skill — garrytan/gstack
If you're a Claude Code session working on this repo, install garrytan/gstack — Garry Tan's SDLC slash-command bundle. Its /review, /qa, /ship, /cso, /learn, and /plan-eng-review commands map directly onto the maintenance workflows used here. Install:
git clone --single-branch --depth 1 https://github.com/garrytan/gstack.git ~/.claude/skills/gstack \
&& cd ~/.claude/skills/gstack && ./setup
See CLAUDE.md § Recommended companion: garrytan/gstack for the per-command mapping. Optional but encouraged.
Per-platform integration (when working on platform-specific bits)
If your patch touches platform-specific behavior, check the per-platform integration docs:
- Claude Code — canonical platform; auto-discovers via plugin marketplace
- Codex — system-prompt embedding or workspace files
- Cursor —
.cursor/rules/bundle - Aider —
--readflags +CONVENTIONS.md - Continue.dev — context provider + slash command
- OpenClaw — workspace skill
- Hermes-Agent — user skill
- Generic agents — any tools-using LLM
Cross-platform behavior changes (e.g. credential handling) live in references/modules/ so all platforms inherit them through the dist bundles.
Reference
For everything not covered above:
- BRD.md — intent: why the project exists, who it's for, success criteria, what we're explicitly not building.
- CLAUDE.md — policy: what's in scope, strict-doc rules, sanitization, processing workflow.
- ARCHITECTURE.md — system shape: actors, data flow, state stores, quality gates, cadence.
User-facing project documentation lives in README.md. End-user-skill content lives in plugins/open-forge/skills/open-forge/SKILL.md.
Repository README
Describes zhangqi444/open-forge as a whole, which may contain artifacts other than this one. Where this artifact had no useful description of its own, its summary was taken from here.
Tell Claude Code what to self-host. It does the rest — picks the right install method, provisions the server, configures DNS + TLS, sets up SMTP, hardens it, and brings the app up at your domain.
No more reading a 30-step README and copy-pasting bash for hours. You stay in chat; Claude Code drives the CLIs (aws, gcloud, kubectl, docker, ssh, …) and asks you only the things only you can answer (which cloud, which domain, which credential).
Backed by a self-improving catalog: every deploy can feed gotchas back so the next user starts further ahead.
> "Self-host OpenClaw on AWS Lightsail with Bedrock pre-wired."
Claude Code: Loading verified recipe openclaw.md (v0.24.0).
Claude Code: Combo: AWS Lightsail OpenClaw blueprint (vendor-bundled, Bedrock IAM included).
Claude Code: I'll need your AWS profile and the domain you want.
AWS profile name?
(OpenClaw — the self-hosted personal AI agent at openclaw.ai — is the project's signature use case; works the same way for any of the 2,200+ verified recipes.)
Install in Claude Code
/plugin marketplace add zhangqi444/open-forge
/plugin install open-forge@open-forge
That's it. From now on, just say what you want self-hosted in any Claude Code session:
"Self-host Vaultwarden on my laptop, expose via Cloudflare Tunnel."
"Run Immich on a Hetzner CX22 with restic backups to Backblaze B2."
"Deploy Ghost on AWS Lightsail at blog.mydomain.com."
Also works on other AI coding tools and agent platforms
Claude Code is the canonical home, but the same recipes ship for other agents — see docs/platforms/:
| Platform | How |
|---|---|
| Codex (ChatGPT / CLI) | System-prompt embedding or workspace files |
| Cursor | .cursor/rules/ bundle |
| Aider | --read files + CONVENTIONS.md |
| Continue.dev | Context provider + slash command |
| OpenClaw (personal AI agent at openclaw.ai) | Workspace skill at ~/.openclaw/workspace/skills/open-forge/ |
| Hermes-Agent (Nous Research) | User skill at ~/.hermes/skills/open-forge/ |
| Generic agents | Any LLM that can read files + run shell |
Agent-mode caveat: When running inside an autonomous agent (OpenClaw / Hermes / messaging-channel agents), credential paste is disabled — the skill only accepts file paths, env vars, cloud-CLI sessions, or secrets-manager refs. Pasting credentials into messaging channels (WhatsApp / Telegram / etc.) is meaningfully riskier than into coding-tool chat. Group-channel deploy conversations are also refused.
On Windows? See docs/windows-setup.md for WSL2 + Docker Desktop setup and common Windows gotchas (stale Git proxy, line endings, WSL integration).
Updates
To know when a new version ships:
- 📋 CHANGELOG.md — user-visible changes per version
- 📡 Releases atom feed — subscribe in any feed reader (Feedbin, Inoreader, NetNewsWire)
- 🌟 GitHub Watch → Custom → Releases — email notification on each release
To apply an update in Claude Code: /plugin marketplace update zhangqi444/open-forge
Why use open-forge instead of asking Claude Code directly?
Raw Claude Code can absolutely deploy software for you — but it starts from zero every session. open-forge accumulates — every deploy can feed gotchas back into the catalog so the next user starts further ahead.
you deploy ─► skill captures gotchas ─► you review + opt in to share
▲ │
│ ▼
└─ improved recipe ◄─ AI agent patches ◄─ sanitized issue
The loop:
- You deploy. Skill walks you through provisioning, DNS, TLS, SMTP, hardening — recording state for resume.
- Skill drafts a sanitized issue at the end with the gotchas it observed and proposed recipe edits. Domains, IPs, API keys, AWS account IDs are stripped before you see the draft.
- You review and opt in (or don't — never auto-posted). One click; takes seconds.
- An AI agent processes the issue — re-fetches upstream docs, applies the strict doc-verification policy, patches the recipe, opens a PR, bumps the version.
- The next user gets the improved recipe.
That's why captured tribal knowledge already includes things like "OpenClaw's three installers (install.sh, install-cli.sh, install.ps1) don't share state — pick one and stick with it", "the Lightsail OpenClaw blueprint runs the gateway as a systemd USER unit with loginctl enable-linger so it survives no-login sessions", "on Windows, OpenClaw's iwr | iex failures are non-fatal to the shell — silent partial installs are common, always check the explicit success line", and "Bitnami's bncert-tool won't accept --unattended" — none of which are in any upstream README.
Other reasons it's better than raw Claude Code:
- Resumable across sessions — phased workflow + state file at
~/.open-forge/deployments/<name>.yaml. If TLS fails at 11pm, resume from thetlsphase tomorrow. - Consistent across clouds — "install Docker on Ubuntu" is written once and reused for Hetzner / DO / Lightsail / localhost. Swap clouds without re-deriving.
- Source-attributed — every install method cites the upstream URL it derives from. When upstream drifts, the link is the recovery path.
- Safer credential handling — five patterns ordered by safety (file path → env var → cloud-CLI session → secrets manager → chat paste); chat paste asks you to acknowledge the risk and reminds you to rotate after.
Coverage
- Software: 2,200+ verified recipes for popular self-hostable apps — AI stack (Ollama · vLLM · Open WebUI · …), publishing (Ghost · WordPress · …), productivity (Nextcloud · Joplin · …), photos & media (Immich · Jellyfin · …), monitoring, security, networking, communication, automation. Plus curated bundles (AI homelab, privacy stack) for goal-shaped requests, and live-derived fallback for anything else with public docs (best-effort; you'll see a banner before it starts).
- Where: any cloud VM (AWS · Azure · GCP · Hetzner · DigitalOcean · Oracle Always-Free ARM · Hostinger), your own machine, Raspberry Pi, macOS VM (Lume), any Kubernetes cluster (EKS · GKE · AKS · DOKS · k3s · kind), or PaaS (Fly.io · Render · Railway · Northflank · exe.dev).
- How: Docker · Podman · Native · Kubernetes (Kustomize-first; Helm where upstream ships one).
📖 Browse the catalog: deepwiki.com/zhangqi444/open-forge — auto-generated wiki view of every recipe, infra adapter, and module. Stays current with the repo.
Or just tell Claude Code — "self-host X on Y" — and it'll match.
Contributing
File an issue, don't open a PR. Issue templates cover three channels:
- Recipe feedback — the skill drafts this for you at end of deploy (sanitized; you opt in)
- Software nomination — request a recipe for an app the catalog doesn't have
- Method proposal — an upstream install method an existing recipe doesn't cover
An AI agent reads CLAUDE.md as its runbook, re-verifies every change against upstream docs, and patches the catalog. Why issues, not PRs? Central verification keeps the catalog consistent, and the skill sanitizes drafts before posting so credentials don't leak into commit history.
For how the catalog is maintained as a system (actors, data flow, state stores, quality gates), see ARCHITECTURE.md. For policy details (3-axis model, strict-doc-verification policy, two-tier coverage, sanitization rules), see CLAUDE.md. For project intent (why / who / success / non-goals), see BRD.md.
License
MIT — fork freely, attribution appreciated.
Trustgrade A
- passBody integrity
Whether the stored document is plausibly the kind of file the artifact declares, rather than something fetched by mistake.
- passType matchnot applicable to this artifact type
Whether the artifact is really the kind of thing its metadata claims it is.
- passFreshness
How long since the source repository was last pushed to.
- passPrompt injection
Scans the artifact's own text for instructions aimed at your agent rather than at you.
- passLicense
Whether the source repository declares an SPDX license permissive enough to redistribute.
How the grade is calculated
Each check contributes 0 points when it passes, 1 when it warns, and 2 when it fails. The total maps to a letter:
- Aevery check passed
- Bone warning
- Ctwo warnings
- Dprompt injection or body integrity failed, or three warnings
- Fone of those failed, and something else is wrong
These are automated hygiene checks, not a security audit, and not a dependency or vulnerability scan. A grade of A means nothing was flagged — not that the artifact is safe.
Versions
git-ba8ed95bf1552026-08-04