Skip to content

feat: Add OpenClaw as conversion target#217

Merged
kieranklaassen merged 3 commits intoEveryInc:mainfrom
TrendpilotAI:feat/openclaw-target
Mar 1, 2026
Merged

feat: Add OpenClaw as conversion target#217
kieranklaassen merged 3 commits intoEveryInc:mainfrom
TrendpilotAI:feat/openclaw-target

Conversation

@TrendpilotAI
Copy link
Contributor

Summary

  • Adds openclaw as the 8th conversion target alongside opencode, codex, droid, pi, copilot, gemini, and kiro
  • Converts Claude Code plugins into OpenClaw's extension format (~/.openclaw/extensions/<plugin>/)
  • Generates openclaw.plugin.json manifest, package.json, index.ts entry point, and skill directories

Conversion mapping

Claude Code OpenClaw
Agents (.md w/ frontmatter) skills/agent-*/SKILL.md
Commands (.md w/ frontmatter) api.registerCommand() + skills/cmd-*/SKILL.md
Skills (directories w/ SKILL.md) Copied verbatim with .claude/.openclaw/ path rewriting
MCP servers openclaw.json config

Usage

bunx @every-env/compound-plugin install compound-engineering --to openclaw

Files changed

  • src/types/openclaw.ts — TypeScript types for OpenClaw bundle (manifest, skills, commands)
  • src/converters/claude-to-openclaw.ts — Converter: agents → skills, commands → registerCommand, path rewriting
  • src/targets/openclaw.ts — Writer: outputs to ~/.openclaw/extensions/ with config merging and backup
  • src/targets/index.ts — Register openclaw target
  • src/commands/install.ts — Add openclaw to target list + output path resolution

Test plan

  • All 187 existing tests pass
  • End-to-end conversion produces 138 files across 57 skill directories
  • .claude/ paths rewritten to .openclaw/ in all generated content
  • openclaw.plugin.json manifest lists all skill paths
  • index.ts entry point registers commands via api.registerCommand()
  • openclaw.json contains MCP server config (context7)
  • Manual verification with OpenClaw runtime (pending access to OpenClaw instance)

🤖 Generated with Claude Code

Add openclaw as the 8th conversion target, enabling:
  bunx @every-env/compound-plugin install compound-engineering --to openclaw

Converts Claude Code plugins into OpenClaw's extension format:
- Agents → skills/agent-*/SKILL.md
- Commands → api.registerCommand() + skills/cmd-*/SKILL.md
- Skills → copied verbatim with path rewriting (.claude/ → .openclaw/)
- MCP servers → openclaw.json config
- Generates openclaw.plugin.json manifest, package.json, and index.ts entry point

Output installs to ~/.openclaw/extensions/<plugin-name>/

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@mattthomps1
Copy link

Hi @TrendpilotAI , this is cool, I just tried to do the same thing!! Excited to start seeing this beneficial workflow coming into Openclaw!

@TrendpilotAI
Copy link
Contributor Author

Hi @TrendpilotAI , this is cool, I just tried to do the same thing!! Excited to start seeing this beneficial workflow coming into Openclaw!

Yeah just need it reviewed by the Every team now

kieranklaassen and others added 2 commits March 1, 2026 14:35
- Fix P1: Replace incomplete string escaping in generateEntryPoint with
  JSON.stringify() to prevent code injection via command names/descriptions
  with backslashes, newlines, or other special characters
- Fix P1: Remove hardcoded 'compound-engineering' output path; resolve
  from plugin.manifest.name via new openclawHome + pluginName params
- Fix P2: Add --openclaw-home CLI flag (default: ~/.openclaw/extensions)
  consistent with --codex-home and --pi-home patterns
- Fix P2: Emit typed `const skills: Record<string, string> = {}` in
  generated TypeScript to prevent downstream type errors
- Fix P3: Add lookbehind guards to rewritePaths() matching kiro pattern
- Fix P3: Extract duplicated disableModelInvocation filter to variable
- Fix P3: Build manifest skills list before constructing manifest object
  (no post-construction mutation)
- Export ClaudeToOpenClawOptions type alias for interface clarity
- Add openclaw-converter.test.ts with 13 tests covering all scenarios

Co-Authored-By: Claude <noreply@anthropic.com>
Both openclaw (EveryInc#217) and qwen (EveryInc#220) modified install.ts and targets/index.ts.
Combined both targets: openclawHome + qwenHome in resolveTargetOutputRoot,
both registered in the targets registry.

Co-Authored-By: Claude <noreply@anthropic.com>
@kieranklaassen kieranklaassen merged commit c55be29 into EveryInc:main Mar 1, 2026
kieranklaassen added a commit that referenced this pull request Mar 1, 2026
CLI CHANGELOG (CHANGELOG.md):
- Add OpenClaw target (#217, TrendpilotAI) to 0.11.0
- Add Qwen Code target (#220, rlam3) to 0.11.0
- Add Fixed section: code injection, plugin.manifest.name, remote MCP, CLI flags

Plugin CHANGELOG (plugins/compound-engineering/CHANGELOG.md):
- Add OpenClaw, Qwen, Windsurf install targets to 2.36.0
- Add Fixed: argument-hint YAML crash (#219, solon)
- Add Fixed: resolve-pr-parallel skill name (underscore → hyphen)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants