Skip to content
Back to skills

Usync

ASecurity

Sync ClaudeCode/OpenCode/Codex/Gemini CLI settings and skills to GitHub Gist. Use when backing up, restoring, or syncing AI CLI tool configurations across machines.

  • 7 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added February 9, 2026
toolsgobashgitsecurity

Works with

  • cli

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 9 files and shows the line behind each finding

Scanned February 12, 2026

npx -y skills add lifefloating/usync --skill usync --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Usync?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Usync
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/lifefloating-usync/badge)](https://www.skillsdirectory.com/skills/lifefloating-usync)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: usync
description: Sync ClaudeCode/OpenCode/Codex/Gemini CLI settings and skills to GitHub Gist. Use when backing up, restoring, or syncing AI CLI tool configurations across machines.
---

# usync - AI CLI Config Sync

Sync configurations and skills from ClaudeCode, OpenCode, Codex, and Gemini CLI to GitHub Gist for backup and cross-machine sync.

## When to Use

- Backing up AI CLI tool settings and skills to the cloud
- Syncing configurations across multiple machines
- Restoring AI CLI configs on a new machine
- Auto-syncing config changes with watch mode
- Managing settings for multiple AI CLI tools in one place

## Quick Start

```bash
# Install
pnpm add -g usync-cli

# Initialize — verify token and create a Gist
usync init

# Scan — list all discovered config files
usync scan

# Upload — sync local configs to Gist
usync upload --gist-id <id>

# Download — restore configs from Gist
usync download --gist-id <id>

# Watch mode — auto-upload on changes
usync upload --gist-id <id> --watch
```

## Supported Providers

| Provider | Global Config | Project Config |
|----------|---------------|----------------|
| ClaudeCode | `~/.claude/settings.json`, `~/.claude/skills/` | `.claude/settings.json`, `.claude/skills/` |
| OpenCode | `~/.config/opencode/` (macOS), `%APPDATA%/opencode/` (Windows) | `opencode.json`, `.opencode/skills/` |
| Codex | `~/.codex/config.json`, `~/.codex/skills/` | `.codex/config.json`, `.codex/skills/` |
| Gemini CLI | `~/.gemini/settings.json`, `~/.gemini/skills/` | `.gemini/settings.json`, `.gemini/skills/` |

## Commands

| Command | Description | Reference |
|---------|-------------|-----------|
| `usync init` | Verify token, create or validate Gist | [command-init](references/command-init.md) |
| `usync scan` | List discovered local config files | [command-scan](references/command-scan.md) |
| `usync upload` | Upload configs to GitHub Gist | [command-upload](references/command-upload.md) |
| `usync download` | Download and restore configs from Gist | [command-download](references/command-download.md) |

## References

| Topic | Description | Reference |
|-------|-------------|-----------|
| Getting Started | Setup, token creation, first sync | [guide-getting-started](references/guide-getting-started.md) |
| Providers | All supported providers and config paths | [reference-providers](references/reference-providers.md) |
| Architecture | Template paths, manifest, incremental sync | [reference-architecture](references/reference-architecture.md) |

## Token Setup

usync requires a GitHub Personal Access Token with `gist` scope:

1. Go to https://github.com/settings/tokens/new
2. Select scope: **gist**
3. Generate and save the token

Token resolution order:
1. `--token <PAT>` flag
2. Environment variable (default: `GITHUB_TOKEN`, or custom via `--token-env`)
3. `GH_TOKEN` fallback

## Common Patterns

### First-time setup

```bash
# Set token in environment
export GITHUB_TOKEN=ghp_xxx

# Initialize and create a new Gist
usync init

# Upload all configs
usync upload --gist-id <id-from-init>
```

### Restore on new machine

```bash
export GITHUB_TOKEN=ghp_xxx
usync download --gist-id <id>
```

### Watch mode for continuous sync

```bash
usync upload --gist-id <id> --watch --interval 30
```

### Filter specific providers

```bash
usync scan --providers claudecode,opencode
usync upload --gist-id <id> --providers claudecode
```

## Security

- Sensitive files are auto-excluded: `.env*`, `.key`, `.pem`, `.p12`
- File contents are base64-encoded in the Gist
- Use private Gists (default) for security
- Tokens are never stored locally — use env vars

## Tech Stack

- **CLI Framework**: citty (unjs)
- **Interactive Prompts**: @clack/prompts
- **Logging**: consola + colorette
- **Build**: tsdown
- **Path Handling**: pathe (cross-platform)
- **Package Manager**: pnpm
- **Versioning**: changesets

Files in this skill

  • README.md1.3 KB
  • SKILL.md3.8 KB
  • references/command-download.md1.6 KB
  • references/command-init.md1.2 KB
  • references/command-scan.md1 KB
  • references/command-upload.md1.7 KB
  • references/guide-getting-started.md1.1 KB
  • references/reference-architecture.md1.7 KB
  • references/reference-providers.md2.2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.