Skip to content
cross-repo-sync logo

Cross-Repository Sync

cross-repo-sync

Sync files between BobTheSkull5 and BobFast5 repositories, especially audio files and shared components. Use when syncing audio, copying static files, or managing dual-repo workflow.

SKILL.md

Full skill instructions

Cross-Repository Sync

Handles syncing files between BobTheSkull5 and BobFast5 repositories, particularly audio files and shared components.

When to Use

  • Syncing audio files between repos
  • Copying static assets (greetings, startup audio, testing audio)
  • Updating shared components
  • Managing the dual-repo workflow
  • Deploying to Raspberry Pi

Repository Structure

BobTheSkull5 (Main repo):

  • Full system with MQTT, distributed architecture
  • Web configuration interface
  • All components and services

BobFast5 (Legacy/​Testing repo):

  • Simpler architecture
  • Used for quick audio testing
  • Shares audio files with BobTheSkull5

Common Sync Paths

Audio Files

Greetings:

From: BobTheSkull5/​audio/​static/​greetings/
To:   BobFast5/​audio/​static/​greetings/

Startup:

From: BobTheSkull5/​audio/​static/​startup/
To:   BobFast5/​audio/​static/​startup/

Testing:

From: BobTheSkull5/​audio/​static/​testing/
To:   BobFast5/​audio/​static/​testing/

Sync Commands

Windows (cmd)

Copy single file:

copy "BobTheSkull5\audio\static\testing\filename.mp3" "BobFast5\audio\static\testing\"

Copy all files in directory:

xcopy "BobTheSkull5\audio\static\greetings\*.mp3" "BobFast5\audio\static\greetings\" /​Y

Sync entire audio tree:

xcopy "BobTheSkull5\audio\static" "BobFast5\audio\static" /​E /​Y

Git Bash / WSL

Copy single file:

cp "BobTheSkull5/​audio/​static/​testing/​filename.mp3" "BobFast5/​audio/​static/​testing/"

Copy all MP3s:

cp BobTheSkull5/​audio/​static/​greetings/​*.mp3 BobFast5/​audio/​static/​greetings/

Sync with rsync:

rsync -av BobTheSkull5/​audio/​static/ BobFast5/​audio/​static/

Safe Sync Workflow

  1. Check current directory:

    pwd  # Should be in parent directory containing both repos
    ls   # Should see both BobTheSkull5 and BobFast5
    
  2. Verify source files exist:

    ls BobTheSkull5/​audio/​static/​testing/​*.mp3
    
  3. Verify destination directory exists:

    ls BobFast5/​audio/​static/​testing/
    
  4. Perform sync with confirmation:

    # Windows - shows files before copying
    dir "BobTheSkull5\audio\static\testing\*.mp3"
    xcopy "BobTheSkull5\audio\static\testing\*.mp3" "BobFast5\audio\static\testing\" /​Y
    
  5. Verify sync succeeded:

    ls BobFast5/​audio/​static/​testing/
    

Audio Generation Workflow

When generating new audio files:

  1. Generate in BobTheSkull5:

    cd BobTheSkull5
    python generate_greeting_audio.py
    # or
    python generate_startup_audio.py
    
  2. Verify generated files:

    ls audio/​static/​greetings/  # Check new files exist
    
  3. Sync to BobFast5:

    cd ..  # Go to parent directory
    cp BobTheSkull5/​audio/​static/​greetings/​*.mp3 BobFast5/​audio/​static/​greetings/
    
  4. Test in BobFast5:

    cd BobFast5
    # Run tests or play audio
    

Deploy to Pi Workflow

The deploy_to_pi.bat script handles syncing to Raspberry Pi:

# From BobTheSkull5 directory
deploy_to_pi.bat

This copies:

  • All Python files
  • Configuration files (requirements, .env.bob)
  • Setup scripts
  • Component directories (events, wake_word, stt, llm, tts, state_machine, vision, hardware, web)

What NOT to Sync

Never copy these:

  • .git/ directories
  • Virtual environments (venv/, .venv/)
  • __pycache__/ directories
  • .pyc files
  • Local configuration (.env, config.yaml)
  • Database files (*.db, *.sqlite)
  • Log files (logs/)
  • Face data (facedata/)
  • Embeddings (EmbeddingsDB/, LongTermDB/)

Selective Sync Pattern

Only sync specific audio categories:

REM Greetings only
xcopy "BobTheSkull5\audio\static\greetings\*.mp3" "BobFast5\audio\static\greetings\" /​Y

REM Testing files only
xcopy "BobTheSkull5\audio\static\testing\*.mp3" "BobFast5\audio\static\testing\" /​Y

REM Startup sounds only
xcopy "BobTheSkull5\audio\static\startup\*.mp3" "BobFast5\audio\static\startup\" /​Y

Bi-directional Sync Caution

Usually sync is one-way: BobTheSkull5 → BobFast5

Reverse sync (BobFast5 → BobTheSkull5) is rare and should be done carefully:

  • Only for audio testing results
  • Only for experimental audio files
  • Never for code changes (different architectures)

Common Sync Scenarios

After generating new greetings:

cd /​c/​Users/​Knarl/​Code
cp BobTheSkull5/​audio/​static/​greetings/​*.mp3 BobFast5/​audio/​static/​greetings/

After generating test audio:

cd /​c/​Users/​Knarl/​Code
cp BobTheSkull5/​audio/​static/​testing/​*.mp3 BobFast5/​audio/​static/​testing/

Before deploying to Pi:

cd /​c/​Users/​Knarl/​Code/​BobTheSkull5
cmd /​c deploy_to_pi.bat

Full audio sync:

cd /​c/​Users/​Knarl/​Code
rsync -av --include='*.mp3' --include='*.wav' --include='*/' --exclude='*' \
  BobTheSkull5/​audio/​static/ BobFast5/​audio/​static/

Automation Script Example

@echo off
REM sync_audio.bat - Sync all audio files
REM Usage: sync_audio.bat

echo Syncing audio files from BobTheSkull5 to BobFast5...

echo [1/​3] Syncing greetings...
xcopy "%CD%\BobTheSkull5\audio\static\greetings\*.mp3" "%CD%\BobFast5\audio\static\greetings\" /​Y /​Q

echo [2/​3] Syncing startup sounds...
xcopy "%CD%\BobTheSkull5\audio\static\startup\*.mp3" "%CD%\BobFast5\audio\static\startup\" /​Y /​Q

echo [3/​3] Syncing testing audio...
xcopy "%CD%\BobTheSkull5\audio\static\testing\*.mp3" "%CD%\BobFast5\audio\static\testing\" /​Y /​Q

echo.
echo Sync complete!
pause

Verification Commands

Check file counts match:

# Linux/​Git Bash
diff <(ls BobTheSkull5/​audio/​static/​greetings/) <(ls BobFast5/​audio/​static/​greetings/)

# Windows PowerShell
Compare-Object (Get-ChildItem BobTheSkull5\audio\static\greetings) (Get-ChildItem BobFast5\audio\static\greetings)

Check file sizes match:

# Linux/​Git Bash
ls -lh BobTheSkull5/​audio/​static/​greetings/​*.mp3
ls -lh BobFast5/​audio/​static/​greetings/​*.mp3

Troubleshooting

"File not found" error:

  • Check current working directory with pwd or cd
  • Verify source path exists: ls BobTheSkull5/​audio/​static/​testing/
  • Use tab completion to verify paths

"Permission denied" error:

  • Files may be in use (close audio players)
  • Check file permissions
  • Run command prompt as Administrator (Windows)

Files don't appear after copy:

  • Check destination directory: ls BobFast5/​audio/​static/​testing/
  • Verify copy command succeeded (check exit code)
  • Try absolute paths instead of relative

Wrong files copied:

  • Double-check source and destination paths
  • Use /​Y flag to overwrite without prompting
  • Test with single file first before bulk copy

Pro Tips

  1. Always run from parent directory containing both repos
  2. Use tab completion to avoid typos in paths
  3. Verify before bulk operations - test with one file first
  4. Check file counts after sync to ensure completeness
  5. Use wildcards carefully - *.mp3 not * to avoid copying unwanted files
  6. Keep audio in sync - sync immediately after generation
  7. Document custom sync scripts if you create automation

More skills from majiayu000

xiaohongshu logo
majiayu000/claude-arsenal

xiaohongshu

xiaohongshu

286 148
View
agent-task-conductor logo
majiayu000/claude-skill-registry

agent-task-conductor

Conduct multi-agent task orchestration and workflow coordination.

663 1
View
conductor-setup logo
majiayu000/claude-skill-registry

conductor-setup

Initialize project with Conductor artifacts (product definition,

663 1
View
animation-designer logo
majiayu000/claude-skill-registry

animation-designer

Expert in web animations, transitions, and motion design using Framer Motion and CSS

663 1
View
diagramming logo
majiayu000/claude-skill-registry

diagramming

Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...

663 1
View
h3-pg logo
majiayu000/claude-skill-registry-data

h3-pg

PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.

23 1
View
conductor-development logo
majiayu000/claude-skill-registry

conductor-development

Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...

663 1
View
conductor-status logo
majiayu000/claude-skill-registry

conductor-status

Display project status, active tracks, and next actions

663 1
View
dockerization logo
majiayu000/claude-skill-registry

dockerization

Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.

663 1
View

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgänger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View