Multi-Platform Sync
Edit once, deploy everywhere. Praxl keeps your skills in sync across 8 AI coding platforms.
How Sync Works
Praxl uses bidirectional sync between the cloud and your local filesystem. The cloud acts as the canonical source of truth. When you edit a skill in the web editor, the change propagates down to every configured platform directory. When you edit a local file, the CLI detects the change and pushes it up to the cloud, which then fans it out to all other targets.
The sync flow is: local file change → CLI detects → cloud update → other platform directories updated. Or in the reverse direction: web editor change→ cloud update → CLI pulls → local files updated.
Supported Platforms
| Platform | Directory |
|---|---|
| Claude Code | ~/.claude/commands/ |
| Cursor | ~/.cursor/rules/ |
| Codex CLI | ~/.codex/skills/ |
| GitHub Copilot | ~/.github/copilot/ |
| Windsurf | ~/.windsurf/skills/ |
| OpenCode | ~/.opencode/skills/ |
| Gemini CLI | ~/.gemini/skills/ |
| Claude.ai | Synced via Praxl web app |
Setting Up Sync Targets
Sync targets are configured in the Praxl web app. Navigate to a skill, open the Sync Targets panel, and toggle the platforms you want that skill deployed to. You can also set default targets that apply to all new skills.
From the CLI, run praxl status to see which platforms are connected and which skills are assigned to each target.
CLI Sync Modes
One-Time Sync
praxl syncRuns a single sync cycle - pulls cloud changes, pushes local changes, then exits. Useful for cron jobs or CI/CD pipelines.
Watch Mode
praxl sync --watchWatches local directories for file changes and polls the cloud at regular intervals. Keeps running until you stop it. This is the recommended mode for daily development.
Daemon Mode
Daemon mode is watch mode running in the background. Use your system's process manager (systemd, launchd, pm2) to keep the sync process alive across reboots. The default polling interval is 30 seconds - adjust with --interval.
Conflict Resolution
Conflicts occur when the same skill is edited in two places before a sync cycle runs. Praxl resolves conflicts with a last-write-wins strategy based on timestamps. The most recent edit takes precedence, and a version history entry is created for the overwritten version so nothing is lost.
You can always recover a previous version from the version history in the web editor.
Sync Status Indicators
The web app shows a sync status badge on each skill:
- Synced - the skill is up to date on all targets
- Pending - a change has been saved but not yet deployed
- Error - sync failed for one or more targets (hover to see details)
- Undeployed - the skill has no sync targets configured
Deploying to Specific Platforms
Not every skill needs to be on every platform. In the web app, each skill has a list of assigned sync targets. Toggle platforms on or off to control exactly where each skill is deployed. For example, you might want a "Cursor-specific refactoring" skill only on Cursor, while a general "code review" skill goes everywhere.
Skill-Target Assignments
Skill-target assignments define which skills are synced to which platforms. You can manage assignments in two ways:
- Per-skill - open a skill in the editor, toggle platforms in the Sync Targets panel.
- Bulk- from the skill library view, select multiple skills and use the "Assign targets" bulk action to add or remove platforms in one step.
Default targets (set in Settings) are automatically applied to newly created or imported skills.
See also: CLI Reference · Writing Effective Skills · Skill Editor

Praxl