Migrate from Claude Code
Syntic Code is drop-in compatible with most Claude Code setups. Your .claude/ directory, hooks, slash commands, skills, and MCP server config can all be reused — usually with zero edits.
TL;DR
- Install Syntic Code (
curl -fsSL https://syntic.ai/install.sh | sh) - Run
syntic migratein any repo that has a.claude/folder - Done. The CLI now reads the same configs and ships the same workflows.
What syntic migrate Does
syntic migrate [--dry-run] [--keep-claude]- Copies
.claude/settings.json→.syntic/settings.json(translates field names) - Symlinks
.claude/commands/⇄.syntic/commands/(no duplication) - Symlinks
.claude/skills/⇄.syntic/skills/ - Symlinks
.claude/agents/⇄.syntic/agents/ - Detects hooks that reference
claudeand offers to update them
By default both directories remain functional, so you can run either CLI on the same repo. Use --keep-claude to skip the deprecation warning.
Side-by-Side Concepts
| Claude Code | Syntic Code | Notes |
|---|---|---|
claude binary | syntic binary | Same UX, faster startup |
.claude/settings.json | .syntic/settings.json | Same schema |
.claude/commands/*.md | .syntic/commands/*.md | Same format |
.claude/skills/*/SKILL.md | .syntic/skills/*/SKILL.md | Same frontmatter |
.claude/agents/*.md | .syntic/agents/*.md | Same frontmatter |
claude --resume | syntic --resume | Same session IDs |
/help, /clear, /model | Same | All built-in slash commands match |
| Plan Mode | Plan Mode | Identical UX |
| MCP servers | MCP servers | Same transport, same configs |
| Hooks (PreToolUse, etc.) | Hooks (PreToolUse, etc.) | Same event names |
What’s Different
| Area | Difference |
|---|---|
| Model default | kimi-k2-6 (Syntic) instead of claude-sonnet-4-6 |
| Provider keys | Bring your own Anthropic key to keep using Claude |
| Cloud Desktop | Syntic Cloud Desktop is included; Claude has no equivalent |
| Enterprise | SSO, SCIM, managed policy, self-hosted are first-class |
| Pricing | Per-token or flat-rate seat license; no API metering surprise |
Configuration Translation
Most fields are 1:1. The migration tool handles the renames:
| Claude Code field | Syntic Code field |
|---|---|
permissions.allow | permissions.allow (same) |
model (string) | model.default |
cleanupPeriodDays | sessions.retentionDays |
enableTelemetry | telemetry.enabled |
Keeping Both Side-by-Side
The migration creates symlinks rather than copying, so:
- Edits in
.claude/skills/foo/SKILL.mdimmediately apply to Syntic - Edits in
.syntic/skills/foo/SKILL.mdimmediately apply to Claude Code - Either CLI can be the daily driver while the other stays as backup
Rolling Back
syntic migrate --undoRemoves the symlinks, restores .syntic/ to its pre-migrate state. Your .claude/ directory is never modified.
Common Questions
Will my hooks work? Yes — hook event names and stdin/stdout contracts match.
Will my custom slash commands work?
Yes — same markdown frontmatter, same $ARGUMENTS semantics.
Will my skills work?
Yes — same SKILL.md format with name and description frontmatter.
Can I still use Claude models?
Yes — set model.default: claude-sonnet-4-6 and provide ANTHROPIC_API_KEY.
What about sub-agents?
Sub-agent definitions (.claude/agents/*.md) work as-is. The built-in sub-agent names match.
Need Help?
- File an issue: github.com/syntic-ai/syntic-code
- Email: support@syntic.ai
- Migration office hours: Tuesdays 11am PT, link at syntic.ai/migrate