feat: Add OpenClaw as conversion target#217
Merged
kieranklaassen merged 3 commits intoEveryInc:mainfrom Mar 1, 2026
Merged
Conversation
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>
|
Hi @TrendpilotAI , this is cool, I just tried to do the same thing!! Excited to start seeing this beneficial workflow coming into Openclaw! |
Contributor
Author
Yeah just need it reviewed by the Every team now |
- 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
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
openclawas the 8th conversion target alongside opencode, codex, droid, pi, copilot, gemini, and kiro~/.openclaw/extensions/<plugin>/)openclaw.plugin.jsonmanifest,package.json,index.tsentry point, and skill directoriesConversion mapping
.mdw/ frontmatter)skills/agent-*/SKILL.md.mdw/ frontmatter)api.registerCommand()+skills/cmd-*/SKILL.mdSKILL.md).claude/→.openclaw/path rewritingopenclaw.jsonconfigUsage
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 rewritingsrc/targets/openclaw.ts— Writer: outputs to~/.openclaw/extensions/with config merging and backupsrc/targets/index.ts— Registeropenclawtargetsrc/commands/install.ts— Addopenclawto target list + output path resolutionTest plan
.claude/paths rewritten to.openclaw/in all generated contentopenclaw.plugin.jsonmanifest lists all skill pathsindex.tsentry point registers commands viaapi.registerCommand()openclaw.jsoncontains MCP server config (context7)🤖 Generated with Claude Code