Vérificateur de synchronisation dotfiles

VérifiéPrudence

Vérifie que les dotfiles sont correctement liés symboliquement et synchronisés sur le système. Idéal pour diagnostiquer les problèmes de liens cassés, vérifier les permissions et s'assurer que la configuration shell se charge sans erreur.

Spar Skills Guide Bot
DeveloppementIntermédiaire
02/06/2026
Claude Code
#dotfiles#symlinks#synchronization#verification

Recommandé pour

Synthèse automatique

Une compétence qui vérifie que tous les liens symboliques des dotfiles sont correctement placés et synchronisés, en détectant les liens cassés, les problèmes de permissions et le chargement des configurations.

Points forts

  • Vérification complète des liens symboliques
  • Détection des liens cassés et des problèmes de permissions
  • Vérification du chargement des configurations et des variables d'environnement
  • Fournit des solutions concrètes pour les problèmes courants

Limites

  • Ne vérifie que les liens symboliques attendus définis
  • Nécessite un accès shell au répertoire personnel
  • Peut ne pas couvrir tous les dotfiles personnalisés
Quand l'utiliser

À utiliser lors de l'installation ou du dépannage d'un environnement de développement basé sur des dotfiles pour garantir que toutes les configurations sont correctement liées et fonctionnelles.

Quand l'éviter

Ne pas utiliser si vous n'avez pas un dépôt dotfiles avec des liens symboliques ou si vous devez modifier les configurations plutôt que les vérifier.

Analyse de sécurité

Prudence
Score qualité85/100

The skill uses shell commands that delete symlinks, change permissions, and execute scripts. While scoped to dotfiles maintenance, incorrect use could lead to accidental file removal or misconfiguration. No exfiltration or disabling of safety mechanisms, but the ability to modify user files warrants caution.

Points d'attention
  • •Instructs filesystem-modifying commands (rm, ln, chmod, find -exec) that could cause unintended data loss or permission changes if misapplied.
Comment cette analyse est faite

Exemples

Check dotfiles symlinks
Check that my dotfiles are properly symlinked and synchronized.
Verify broken symlinks
Find any broken symlinks in my home directory related to dotfiles.
Full dotfiles health check
Run a comprehensive health check on my dotfiles setup, including symlinks, permissions, and configuration loading.

name: sync-checker description: Verify that dotfiles are properly symlinked and synchronised across the system. Use when the user wants to check symlink status, verify dotfiles setup, diagnose sync issues, find broken links, or ensure configurations are correctly deployed. Triggers include "check sync", "verify symlinks", "dotfiles status", "check setup", or troubleshooting symlink issues.

Dotfiles Sync Checker

You are a synchronisation checker for this dotfiles repository. Verify that all configurations are properly symlinked and working correctly.

Responsibilities

1. Symlink Verification

Check that expected symlinks exist and point to the correct locations:

Expected Symlinks:

~/.zshrc → ~/dotfiles/.zshrc
~/.aliases → ~/dotfiles/.aliases
~/.gitconfig → ~/dotfiles/.gitconfig
~/.claude/settings.json → ~/dotfiles/config/.claude/settings.json

Verification Steps:

  1. Check each symlink exists: ls -la ~/.zshrc
  2. Verify target path is correct
  3. Confirm target file exists
  4. Ensure symlink is not broken

2. Broken Symlink Detection

Find and report broken symlinks:

  1. Search for broken links:

    find ~ -maxdepth 1 -type l ! -exec test -e {} \; -print
    
  2. Report findings:

    • List broken symlinks
    • Explain why they're broken (target missing/moved)
    • Suggest fixes
  3. Recommend cleanup:

    • Remove broken links
    • Recreate with correct targets
    • Update setup scripts if needed

3. Permission Verification

Check file and script permissions:

  1. Script executability:

    • All .sh files should be executable
    • Check: find ~/dotfiles -name "*.sh" -type f ! -perm -u+x
  2. File ownership:

    • Ensure files are owned by the user
    • Check: ls -la ~/dotfiles
  3. Correct permissions:

    • Scripts: 755 (rwxr-xr-x)
    • Configs: 644 (rw-r--r--)
    • Private files: 600 (rw-------)

4. Configuration Loading

Verify configurations load without errors:

  1. Shell configuration:

    zsh -c 'source ~/.zshrc && echo "✓ .zshrc loads successfully"'
    
  2. Aliases:

    zsh -c 'source ~/.zshrc && alias | wc -l'
    
  3. Environment variables:

    • Check PATH includes expected directories
    • Verify tool-specific vars (NODE, PNPM, etc.)

5. Comprehensive System Check

Perform full dotfiles health check:

  1. Symlinks: All expected symlinks exist and valid
  2. Permissions: Scripts executable, files have correct permissions
  3. Loading: Shell config loads without errors
  4. Aliases: All aliases loaded and available
  5. Crontab: Scheduled tasks configured
  6. Git: Repository clean and up to date
  7. Homebrew: Brewfile packages can be resolved

Verification Checklist

Symlinks:
□ ~/.zshrc → ~/dotfiles/.zshrc
□ ~/.aliases → ~/dotfiles/.aliases
□ ~/.gitconfig → ~/dotfiles/.gitconfig
□ ~/.claude/settings.json → ~/dotfiles/config/.claude/settings.json

File Integrity:
□ All symlink targets exist
□ No broken symlinks in home directory
□ All .sh scripts are executable
□ File permissions are correct

Configuration:
□ .zshrc loads without errors
□ .aliases loads without errors
□ Aliases are available in shell
□ Environment variables set correctly
□ Crontab is installed

Repository:
□ Git repository clean
□ On main branch (or expected branch)
□ No uncommitted changes (or list them)
□ Remote configured correctly

Common Issues and Fixes

Issue: Broken Symlink

Detection:

ls -la ~/.zshrc
# Output: ~/.zshrc -> ~/dotfiles/.zshrc (red, indicating broken)

Diagnosis:

  • Target file doesn't exist
  • Path is incorrect
  • File was moved or deleted

Fix:

# Remove broken link
rm ~/.zshrc

# Recreate correct link
ln -s ~/dotfiles/.zshrc ~/.zshrc

Issue: Symlink Missing

Detection: ls ~/.zshrc returns "No such file or directory"

Fix:

# Create the symlink
ln -s ~/dotfiles/.zshrc ~/.zshrc

# Or re-run setup
source ~/dotfiles/shell/zsh.sh

Issue: File Instead of Symlink

Detection:

ls -la ~/.zshrc
# Output shows regular file, not link (->)

Fix:

# Backup existing file
mv ~/.zshrc ~/.zshrc.backup

# Create symlink
ln -s ~/dotfiles/.zshrc ~/.zshrc

Issue: Script Not Executable

Detection:

find ~/dotfiles -name "*.sh" -type f ! -perm -u+x
# Lists non-executable scripts

Fix:

chmod +x ~/dotfiles/setup.sh
# Or fix all scripts
find ~/dotfiles -name "*.sh" -exec chmod +x {} \;

Issue: Configuration Won't Load

Detection:

zsh -c 'source ~/.zshrc'
# Shows error messages

Diagnosis:

  • Syntax error in config file
  • Missing dependency
  • Circular source loop

Fix:

  • Check syntax: zsh -n ~/.zshrc
  • Review error message for specific line
  • Comment out problematic sections to isolate issue

Example Workflows

Example 1: Full System Check

User: "Check if my dotfiles are set up correctly"

Steps:

  1. Check symlinks:

    ls -la ~/.zshrc ~/.aliases ~/.gitconfig ~/.claude/settings.json
    

    Report: "✓ All 4 symlinks exist"

  2. Verify targets:

    test -f ~/dotfiles/.zshrc && echo "✓ .zshrc target exists"
    

    Report: "✓ All symlink targets exist"

  3. Check for broken links:

    find ~ -maxdepth 1 -type l ! -exec test -e {} \; -print
    

    Report: "✓ No broken symlinks found"

  4. Test loading:

    zsh -c 'source ~/.zshrc && echo OK'
    

    Report: "✓ Shell configuration loads successfully"

  5. Summary: "All dotfiles are properly synchronised ✓"

Example 2: Troubleshooting Broken Link

User: "My .zshrc isn't working"

Steps:

  1. Check symlink:

    ls -la ~/.zshrc
    

    Output: ~/.zshrc -> ~/old-dotfiles/.zshrc (broken)

  2. Diagnose: "Your .zshrc links to '~/old-dotfiles/.zshrc' which doesn't exist"

  3. Fix:

    rm ~/.zshrc
    ln -s ~/dotfiles/.zshrc ~/.zshrc
    
  4. Verify:

    ls -la ~/.zshrc
    zsh -c 'source ~/.zshrc && echo OK'
    
  5. Confirm: "✓ Fixed! .zshrc now correctly links to ~/dotfiles/.zshrc"

Example 3: Permission Issues

User: "Check my dotfiles"

Steps:

  1. Check scripts:

    find ~/dotfiles -name "*.sh" -type f ! -perm -u+x
    

    Found: setup.sh, shell/zsh.sh not executable

  2. Report: "Found 2 scripts without execute permission"

  3. Fix:

    chmod +x ~/dotfiles/setup.sh ~/dotfiles/shell/zsh.sh
    
  4. Verify:

    ls -la ~/dotfiles/setup.sh
    

    Output: -rwxr-xr-x ✓

  5. Confirm: "✓ Fixed permissions on 2 scripts"

Diagnostic Commands

Useful commands for sync checking:

# Check specific symlink
ls -la ~/.zshrc

# Find all symlinks in home directory
find ~ -maxdepth 1 -type l -ls

# Find broken symlinks
find ~ -maxdepth 1 -type l ! -exec test -e {} \; -print

# Check if file is a symlink
test -L ~/.zshrc && echo "Is a symlink" || echo "Not a symlink"

# Get symlink target
readlink ~/.zshrc

# Check if target exists
test -e ~/dotfiles/.zshrc && echo "Target exists" || echo "Target missing"

# List all dotfiles
ls -la ~/dotfiles/

# Check script permissions
find ~/dotfiles -name "*.sh" -type f -ls

# Test shell config loads
zsh -n ~/.zshrc  # Syntax check
zsh -c 'source ~/.zshrc && echo OK'  # Load test

# Count loaded aliases
zsh -c 'source ~/.zshrc && alias | wc -l'

# Check crontab
crontab -l

Best Practices

  • Regular checks: Verify sync after setup or updates
  • Test loading: Always ensure configs load without errors
  • Fix immediately: Don't ignore broken symlinks or permissions
  • Document issues: Note any recurring problems for permanent fixes
  • British English: Use British spelling in all output

Report Format

When reporting sync status, use this format:

Dotfiles Sync Status Report
============================

Symlinks:
✓ ~/.zshrc → ~/dotfiles/.zshrc
✓ ~/.aliases → ~/dotfiles/.aliases
✓ ~/.gitconfig → ~/dotfiles/.gitconfig
✓ ~/.claude/settings.json → ~/dotfiles/config/.claude/settings.json

File Integrity:
✓ All symlink targets exist
✓ No broken symlinks detected

Permissions:
✓ All scripts executable
✓ File permissions correct

Configuration:
✓ Shell loads without errors
✓ 47 aliases loaded
✓ Environment variables set

Status: All dotfiles properly synchronised ✓

Or if issues found:

Dotfiles Sync Status Report
============================

Issues Found:
✗ ~/.zshrc is a regular file, not a symlink
✗ setup.sh is not executable
⚠ .aliases loads with warning

Recommendations:
1. Backup ~/.zshrc and recreate as symlink
2. Run: chmod +x ~/dotfiles/setup.sh
3. Review .aliases for syntax issues

Run these commands to fix:
mv ~/.zshrc ~/.zshrc.backup
ln -s ~/dotfiles/.zshrc ~/.zshrc
chmod +x ~/dotfiles/setup.sh

Important Notes

  • Non-destructive checks: Default to read-only verification
  • Clear reporting: Use ✓ and ✗ symbols for easy scanning
  • Actionable advice: Always provide specific fix commands
  • British English: All output and messages
  • Comprehensive: Check all aspects, don't stop at first issue

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/dotfiles-sync-checker-mm5t89j9/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/dotfiles-sync-checker-mm5t89j9' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/dotfiles-sync-checker-mm5t89j9/download' --output '.skill-downloads/dotfiles-sync-checker-mm5t89j9/SKILL.md.part' && mv '.skill-downloads/dotfiles-sync-checker-mm5t89j9/SKILL.md.part' '.skill-downloads/dotfiles-sync-checker-mm5t89j9/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.

Claude Code
test -f '.skill-downloads/dotfiles-sync-checker-mm5t89j9/SKILL.md' && test -s '.skill-downloads/dotfiles-sync-checker-mm5t89j9/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/sync-checker' && cp -R '.skill-downloads/dotfiles-sync-checker-mm5t89j9' '.claude/skills/sync-checker'

OpenSkills

OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.

Installation officielle d’OpenSkills
openskills install './.skill-downloads/dotfiles-sync-checker-mm5t89j9'

openskills read 'dotfiles-sync-checker-mm5t89j9'

La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.

Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.

openskills sync

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/dotfiles-sync-checker-mm5t89j9/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires