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

PlatformDirectory
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.aiSynced 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 sync

Runs a single sync cycle - pulls cloud changes, pushes local changes, then exits. Useful for cron jobs or CI/CD pipelines.

Watch Mode

praxl sync --watch

Watches 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:

  1. Per-skill - open a skill in the editor, toggle platforms in the Sync Targets panel.
  2. 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