Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/getsentry/warden/llms.txt

Use this file to discover all available pages before exploring further.

warden sync

Update cached remote skills to their latest versions. Syncs unpinned remote skills from GitHub repositories to ensure you have the most recent versions.

Usage

# Sync all remote skills
warden sync

# Sync specific remote
warden sync <remote>
warden sync --remote <remote>

What It Does

  1. Identifies cached remotes - Finds all remote skills in .warden/skills/
  2. Checks for updates - Fetches latest commit SHA from GitHub
  3. Updates unpinned remotes - Downloads new versions if SHA changed
  4. Preserves pinned remotes - Skips skills pinned to specific commits

Arguments

remote
string
Remote repository to sync (optional). Can be specified as positional argument or --remote flag.Formats:
  • owner/repo - Repository in owner/repo format
  • https://github.com/owner/repo - Full GitHub URL
warden sync getsentry/skills
warden sync --remote getsentry/skills
warden sync https://github.com/getsentry/skills

Options

--remote
string
Alternative way to specify remote (same as positional argument)
warden sync --remote owner/repo
--quiet
boolean
default:"false"
Suppress non-error output
warden sync --quiet
--color / --no-color
boolean
Force color output on or off
warden sync --no-color

Remote Types

Unpinned Remotes

Remotes without a specific SHA are automatically updated:
[[skills]]
name = "security-review"
remote = "getsentry/skills"  # No @sha - will be synced
$ warden sync

SYNC REMOTE SKILLS

Syncing getsentry/skills...
getsentry/skills: updated abc1234 -> def5678

 Updated 1 remote.

Pinned Remotes

Remotes pinned to a specific commit SHA are skipped:
[[skills]]
name = "security-review"
remote = "getsentry/skills@abc123def456"  # Pinned - won't be synced
$ warden sync

SYNC REMOTE SKILLS

All cached remotes are pinned to specific versions.
Pinned remotes do not need syncing as they are immutable.
  - getsentry/skills@abc123def456 (pinned)

Exit Codes

0
Success
  • All remotes synced successfully
  • No remotes to sync
  • All remotes already up to date
1
Error
  • Network error fetching remote
  • Invalid remote reference
  • Remote not found in cache
  • One or more remotes failed to sync

Examples

Sync All Remotes

$ warden sync

SYNC REMOTE SKILLS

Syncing getsentry/skills...
getsentry/skills: updated abc1234 -> def5678

Syncing acme/custom-skills...
acme/custom-skills: already up to date

Skipped pinned remotes:
  - other/repo@xyz9876

 Updated 1 remote.

Sync Specific Remote

$ warden sync getsentry/skills

SYNC REMOTE SKILLS

Syncing getsentry/skills...
getsentry/skills: updated abc1234 -> def5678

 Updated 1 remote.

All Up to Date

$ warden sync

SYNC REMOTE SKILLS

Syncing getsentry/skills...
getsentry/skills: already up to date

Syncing acme/custom-skills...
acme/custom-skills: already up to date

 All remotes up to date.

No Remote Skills

$ warden sync

No remote skills cached.
Add remote skills with: warden add --remote owner/repo --skill name

Network Error

$ warden sync

SYNC REMOTE SKILLS

Syncing getsentry/skills...
getsentry/skills: Failed to fetch: Network error

Synced with 1 error.

Remote Caching

Remote skills are cached in .warden/skills/:
.warden/
├── skills/
│   ├── getsentry-skills-abc1234/    # Cached at commit abc1234
│   │   ├── security-review/
│   │   └── bug-detection/
│   └── acme-custom-skills-def5678/  # Cached at commit def5678
│       └── performance-review/
└── state.json  # Cache metadata with SHAs
The state.json tracks the commit SHA for each cached remote:
{
  "skills": {
    "getsentry/skills": {
      "sha": "abc1234def5678",
      "updatedAt": "2026-03-05T14:30:22.000Z"
    }
  }
}

When to Sync

Manual Sync

Run sync when you want the latest skill updates:
# Before important analysis
warden sync
warden

Automated Sync

Add to CI/CD pipelines:
# .github/workflows/warden.yml
- name: Update Warden skills
  run: warden sync
  
- name: Run Warden
  run: warden

Team Sync

Sync after adding new team members or changing skill configurations:
# Share updated cache
warden sync
git add .warden/state.json
git commit -m "Update cached skill versions"

Comparison with Add

The difference between sync and add --force:

warden sync

  • Updates all unpinned remotes at once
  • Only updates cache, doesn’t modify warden.toml
  • Preserves pinned versions
  • Shows summary of updates

warden add —force

  • Updates one skill at a time
  • Re-adds skill to warden.toml (may duplicate)
  • Forces refresh even for pinned versions
  • Used when first adding a skill
# Update all remote skills
warden sync

# Force refresh specific skill
warden add --remote owner/repo --skill name --force

Pinning Skills

To prevent automatic updates, pin skills to specific commits:

Pin Existing Skill

Edit warden.toml to add @sha:
[[skills]]
name = "security-review"
- remote = "getsentry/skills"
+ remote = "getsentry/skills@abc123def456"
Get the current SHA from cache:
cat .warden/state.json | jq '.skills["getsentry/skills"].sha'

Add Pinned Skill

warden add --remote getsentry/skills@abc123 --skill security-review

Unpin Skill

Remove the @sha suffix:
[[skills]]
name = "security-review"
- remote = "getsentry/skills@abc123def456"
+ remote = "getsentry/skills"
Then sync to get latest:
warden sync

Offline Mode

When working offline, Warden uses cached skills automatically:
# Use cached skills without syncing
warden --offline
No need to run sync when using --offline.

Troubleshooting

Remote Not Found

$ warden sync unknown/repo

Remote not found in cache: unknown/repo

Cached remotes:
  - getsentry/skills
  - acme/custom-skills
Solution: Verify the remote name matches what’s in your warden.toml.

Network Errors

If sync fails due to network issues:
# Retry
warden sync

# Or use cached versions
warden --offline

Pinned Skills Not Updating

If a pinned skill isn’t updating:
# Check if it's pinned
grep -A2 'name = "skill-name"' warden.toml

# If pinned, remove @sha and sync
warden sync

Cache Corruption

If the cache is corrupted:
# Remove cache and re-add skills
rm -rf .warden/skills/ .warden/state.json
warden add --remote owner/repo --skill name --force