en un clic
sync-workspace
// Sync local and remote project files bidirectionally. Handles code, resources, papers, and experiment outputs. Use when user says "sync", "push files", "pull files", "upload code", "download results".
// Sync local and remote project files bidirectionally. Handles code, resources, papers, and experiment outputs. Use when user says "sync", "push files", "pull files", "upload code", "download results".
Autonomous multi-round research review loop. Supports two modes: (1) Plan-driven: takes an implementation plan file, executes TODO items respecting dependency DAG, uses Codex MCP to verify completion of each item. (2) Free-form: iterates review → fix → re-review until positive assessment. Use when user says 'auto review loop', 'review until it passes', or wants iterative improvement.
Show GPU availability across all SSH servers listed in this project's CLAUDE.md. Use when user says "check GPUs", "which GPUs are free", "gpu status", "GPU 状态", or needs to know where to run experiments.
"Register or update an ARIS run on the web dashboard. Internal utility used by other skills and CLAUDE.md auto-registration. Call at skill start to register, at skill end to report completion. If ~/.claude/aris-api.json is absent, does nothing (zero-impact)."
Initialize a new research repository with the recommended AIRS project structure. Use when starting a new project, setting up a repo, or user says "init repo", "scaffold project", "create project structure".
Search and analyze research papers, find related work, summarize key ideas. Use when user says "find papers", "related work", "literature review", "what does this paper say", or needs to understand academic papers.
Set up a reproducible Python project environment on the remote server using pixi or uv. Use when executing a project environment setup node generated by the jumpstart mechanism.
| name | sync-workspace |
| description | Sync local and remote project files bidirectionally. Handles code, resources, papers, and experiment outputs. Use when user says "sync", "push files", "pull files", "upload code", "download results". |
Instruction: $ARGUMENTS
Synchronize project files between the local client workspace and the remote ARIS target server. Supports selective sync of code, resources, papers, and experiment outputs with conflict detection.
If no direction is specified, default to both.
Files are organized into sync categories. Each can be synced independently:
| Category | Local Path | Remote Path | Default Direction |
|---|---|---|---|
| code | main/, scripts/ | main/, scripts/ | push |
| resource | resource/ | resource/ | push |
| papers | papers/ | papers/ | both |
| outputs | outputs/ | outputs/ | pull |
| config | pixi.toml, .gitignore | same | push |
Parse $ARGUMENTS for:
If no arguments, sync all categories in their default direction.
Test SSH connection to the target server before starting sync.
localProjectPathremoteProjectPathIf paths are not set, report the error and stop.
rsync -avz --progress \
--exclude='.pixi/' \
--exclude='__pycache__/' \
--exclude='*.pyc' \
--exclude='.git/' \
--exclude='outputs/' \
--exclude='checkpoints/' \
<local_path>/ <user>@<host>:<remote_path>/
Instead of rsync, use Git to transfer files from remote to local. This lets
.gitignore filter out large/unnecessary files (datasets, checkpoints, caches,
virtual environments, etc.) automatically.
On the remote server (via SSH), commit and push any uncommitted work:
ssh <user>@<host> "cd <remote_path> && \
git add -A && \
git diff --cached --quiet || git commit -m 'sync: remote changes' && \
git push origin HEAD"
On local, pull from the same branch:
cd <local_path>
git fetch origin
git pull origin <branch> --no-rebase
For files that are git-ignored but still needed (like specific outputs the user explicitly requested), fall back to rsync for just those paths.
When syncing both directions:
Respect the project's syncExcludes patterns from the ARIS project settings.
For each category, report:
.git/ directories via rsync — they diverge between local and remote.syncExcludes from ARIS settings.--dry-run, show what would be transferred without actually transferring.
For git pull, use git fetch + git diff --stat to preview..gitignore prevents transferring unnecessary
files like datasets, checkpoints, __pycache__/, .pixi/, .venv/, etc.