Enable the staged branch promotion pipeline: - ci.yml: remove push-to-main trigger (handled by release-orchestrator), add workflow_call input for test_stage, gate Windows tests to beta+ and macOS tests to stable-only to reduce PR CI cost. - Re-enable push triggers on feature-pr, hotfix-pr, promote-branch, and release-orchestrator workflows. - Update CONTRIBUTING.md to reflect active branch strategy. IMPORTANT: Before merging, ensure develop/alpha/beta branches are created and the team is ready for the new workflow. Depends on: dev/ci-additive-workflows (PR1)
4.9 KiB
Contributing to OpenClaw
Welcome to the lobster tank! 🦞
Quick Links
- GitHub: https://github.com/openclaw/openclaw
- Discord: https://discord.gg/qkhbAGHRBT
- X/Twitter: @steipete / @openclaw
Maintainers
-
Peter Steinberger - Benevolent Dictator
-
Shadow - Discord + Slack subsystem
- GitHub: @thewilloftheshadow · X: @4shad0wed
-
Jos - Telegram, API, Nix mode
-
Christoph Nakazawa - JS Infra
- GitHub: @cpojer · X: @cnakazawa
-
Gustavo Madeira Santana - Multi-agents, CLI, web UI
- GitHub: @gumadeiras · X: @gumadeiras
-
Maximilian Nussbaumer - DevOps, CI/CD
- GitHub: @quotentiroler
How to Contribute
- Bugs & small fixes → Open a PR!
- New features / architecture → Start a GitHub Discussion or ask in Discord first
- Questions → Discord #setup-help
Before You PR
- Test locally with your OpenClaw instance
- Run tests:
pnpm build && pnpm check && pnpm test - Keep PRs focused (one thing per PR)
- Describe what & why
Control UI Decorators
The Control UI uses Lit with legacy decorators (current Rollup parsing does not support
accessor fields required for standard decorators). When adding reactive fields, keep the
legacy style:
@state() foo = "bar";
@property({ type: Number }) count = 0;
The root tsconfig.json is configured for legacy decorators (experimentalDecorators: true)
with useDefineForClassFields: false. Avoid flipping these unless you are also updating the UI
build tooling to support standard decorators.
AI/Vibe-Coded PRs Welcome! 🤖
Built with Codex, Claude, or other AI tools? Awesome - just mark it!
Please include in your PR:
- Mark as AI-assisted in the PR title or description
- Note the degree of testing (untested / lightly tested / fully tested)
- Include prompts or session logs if possible (super helpful!)
- Confirm you understand what the code does
AI PRs are first-class citizens here. We just want transparency so reviewers know what to look for.
Current Focus & Roadmap 🗺
We are currently prioritizing:
- Stability: Fixing edge cases in channel connections (WhatsApp/Telegram).
- UX: Improving the onboarding wizard and error messages.
- Skills: Expanding the library of bundled skills and improving the Skill Creation developer experience.
- Performance: Optimizing token usage and compaction logic.
Check the GitHub Issues for "good first issue" labels!
Core vs ClawHub
Not everything belongs in the main repo. Here's how to decide:
| Belongs in Core | Belongs on ClawHub |
|---|---|
| Channel integrations (Telegram, Discord, etc.) | Domain-specific skills (QR codes, image tools, etc.) |
| CLI commands and infrastructure | Custom workflows and automations |
| Provider integrations (LLM backends) | Niche or experimental utilities |
| Security, routing, and core plumbing | Third-party service integrations |
Rule of thumb: if it adds new dependencies or is useful to some users but not most, it belongs on ClawHub. When in doubt, ask in Discord or open a Discussion before writing code.
Skills submitted as PRs to this repo will be redirected to ClawHub. If the core maintainers later decide certain functionality should be first-party, it will be integrated into core.
Branch Strategy
We use staged branch promotion to keep main stable:
dev/* / feature/* / fix/* → develop → alpha → beta → main
For External Contributors
- Fork the repo
- Create your branch (
dev/my-feature,fix/some-bug, etc.) - Open a PR targeting
develop(notmain) - CI runs lightweight checks only — no heavy platform tests on your PR
- Once merged to
develop, your changes promote through alpha → beta → main automatically
Do not target main — PRs to main will be redirected to develop.
For Maintainers
- Regular changes: merge to
develop, let the pipeline promote - Hotfixes: use
hotfix/*branches for emergency fixes that bypass staging directly tomain - Docs-only changes: skip the test pipeline automatically (paths-ignore)
See Pipeline docs for full details.