plugins/sjawhar/skills/devenv-restore/SKILL.md
Restore dev environment from S3 backup
npx skillsauth add sjawhar/dotfiles plugins/sjawhar/skills/devenv-restoreInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Restore development environment state from an S3 backup.
1. Gather all inputs in ONE prompt:
Ask the user for:
s3://bucket/users/[email protected]/Example prompt:
To restore your dev environment, I need:
1. S3 base path (e.g., s3://bucket/users/[email protected]/)
2. Machine name [press Enter for current hostname]
3. Session date filter (e.g., 2026-01-15) [press Enter to restore all]
2. Bootstrap dotfiles if needed:
Before running restore, check if ~/.dotfiles exists but lacks .git:
if [ -d ~/.dotfiles ] && [ ! -d ~/.dotfiles/.git ]; then
echo "Bootstrapping dotfiles..."
cd ~/.dotfiles
git init
git remote add origin https://github.com/sjawhar/dotfiles
git fetch origin main
git reset --hard origin/main
./install.sh
fi
3. List backups and select:
uv run ~/.dotfiles/scripts/devenv-backup/devenv.py list-backups --base <s3-base-path> --machine <machine>
Show available backups and ask which to restore:
Available backups for devpod:
2026-01-20 (latest)
2026-01-18
before-refactor
Which backup? [default: latest]
Then proceed immediately - no separate confirmation needed.
4. Run restore:
# Basic restore:
uv run ~/.dotfiles/scripts/devenv-backup/devenv.py restore \
--base <s3-base-path> \
--name <backup-name> \
--machine <machine>
# With session date filter:
uv run ~/.dotfiles/scripts/devenv-backup/devenv.py restore \
--base <s3-base-path> \
--name <backup-name> \
--machine <machine> \
--sessions-after 2026-01-15
This single command:
{base}/opencode/{machine}/share/ to ~/.local/share/opencode/ and {base}/opencode/{machine}/state/ to ~/.local/state/opencode/)5. Follow agent instructions:
If the manifest contains agent_instructions, they'll be displayed prominently. Follow them (typically ~/.dotfiles/install.sh).
6. Summary:
Report:
Note any uncommitted changes recorded in the manifest.
Done when: All repositories cloned, workspaces created, files restored, Claude Code data restored, and OpenCode session data restored.
development
Use when searching flights, hotels, or rental cars; comparing fares across flexible dates; discovering cheap destinations from a fixed origin; or hunting hidden-city ticketing deals. Trigger on multi-city itineraries, fare calendars, "where can I fly cheaply", price-sensitive trip planning, or any time the user wants a sanity-check against Google Flights pricing — Skiplagged surfaces hidden-city deals other engines deliberately hide.
development
Search the web via Ceramic Search (lexical/keyword-based). Use when looking up current events, recent news, time-sensitive facts, specific people/products/companies, technical docs, or any topic requiring fresh web results. Triggers on "search the web", "look up", "find recent", "latest news", "current", or when built-in knowledge is likely stale.
tools
Use when reading WhatsApp messages, searching conversations, sending messages, listing chats, or interacting with WhatsApp workspaces
tools
Watch CI status, fix failures, and merge when green