feat: Add sync command for Claude Code personal config (#123)
* feat: Add sync command for Claude Code personal config Add `compound-plugin sync` command to sync ~/.claude/ personal config (skills and MCP servers) to OpenCode or Codex. Features: - Parses ~/.claude/skills/ for personal skills (supports symlinks) - Parses ~/.claude/settings.json for MCP servers - Syncs skills as symlinks (single source of truth) - Converts MCP to JSON (OpenCode) or TOML (Codex) - Dedicated sync functions bypass existing converter architecture Usage: compound-plugin sync --target opencode compound-plugin sync --target codex 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * fix: address security and quality review issues Security fixes: - Add path traversal validation with isValidSkillName() - Warn when MCP servers contain potential secrets (API keys, tokens) - Set restrictive file permissions (600) on config files - Safe forceSymlink refuses to delete real directories - Proper TOML escaping for quotes/backslashes/control chars Code quality fixes: - Extract shared symlink utils to src/utils/symlink.ts - Replace process.exit(1) with thrown error - Distinguish ENOENT from other errors in catch blocks - Remove unused `root` field from ClaudeHomeConfig - Make Codex sync idempotent (remove+rewrite managed section) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> * fix: revert version bump (leave to maintainers) * feat: bump root version to 0.2.0 for sync command --------- Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
20
README.md
20
README.md
@@ -30,10 +30,28 @@ Local dev:
|
||||
bun run src/index.ts install ./plugins/compound-engineering --to opencode
|
||||
```
|
||||
|
||||
OpenCode output is written to `~/.opencode` by default, with `opencode.json` at the root and `agents/`, `skills/`, and `plugins/` alongside it.
|
||||
OpenCode output is written to `~/.config/opencode` by default, with `opencode.json` at the root and `agents/`, `skills/`, and `plugins/` alongside it.
|
||||
Both provider targets are experimental and may change as the formats evolve.
|
||||
Codex output is written to `~/.codex/prompts` and `~/.codex/skills`, with each Claude command converted into both a prompt and a skill (the prompt instructs Codex to load the corresponding skill). Generated Codex skill descriptions are truncated to 1024 characters (Codex limit).
|
||||
|
||||
## Sync Personal Config
|
||||
|
||||
Sync your personal Claude Code config (`~/.claude/`) to OpenCode or Codex:
|
||||
|
||||
```bash
|
||||
# Sync skills and MCP servers to OpenCode
|
||||
bunx @every-env/compound-plugin sync --target opencode
|
||||
|
||||
# Sync to Codex
|
||||
bunx @every-env/compound-plugin sync --target codex
|
||||
```
|
||||
|
||||
This syncs:
|
||||
- Personal skills from `~/.claude/skills/` (as symlinks)
|
||||
- MCP servers from `~/.claude/settings.json`
|
||||
|
||||
Skills are symlinked (not copied) so changes in Claude Code are reflected immediately.
|
||||
|
||||
## Workflow
|
||||
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user