一键导入
teleport-update
Update already-pushed private/public repos with local changes that haven't been synced yet
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Update already-pushed private/public repos with local changes that haven't been synced yet
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Deprecated alias for /teleport-update. Pushes local Claude Code changes to your private hub.
Beam your Claude Code setup across machines. Routes to the appropriate teleport command.
First-time setup: create private hub repo, scan and export your Claude Code environment
Import configs from another user's public teleport repo
Pull configs from your hub to this machine
Publish safe configs to a public repo for other users to import
| name | teleport-update |
| description | Update already-pushed private/public repos with local changes that haven't been synced yet |
| allowed-tools | ["Bash","Read","Write","AskUserQuestion"] |
Detect and push local changes that haven't been synced to your already-pushed claude-teleport-private or claude-teleport-public repos.
This is the canonical push skill: it finds what changed locally since the last push and selectively syncs the diff to the private hub, the public repo, or both. The older /teleport-push skill is a deprecated alias that forwards here; /teleport-share remains the curation-focused flow for standing up or refreshing the public repo.
Hub-connect preamble: Run node "${CLAUDE_PLUGIN_ROOT}/dist/cli.js" context. Parse JSON.
auth.ghInstalled is false or auth.authenticated is false: show instructions. STOP.auth.username and machine.alias.Clone/pull private hub: Run node "${CLAUDE_PLUGIN_ROOT}/dist/cli.js" hub-init --clone-to /tmp/teleport-hub-update. Store localPath as hubPath.
Check public repo: Run node "${CLAUDE_PLUGIN_ROOT}/dist/cli.js" hub-check-public --username <username>. Parse JSON.
exists is true: clone/pull public repo to /tmp/teleport-public-update via gh repo clone <username>/claude-teleport-public /tmp/teleport-public-update (or git pull --rebase if already cloned). Store path as pubHubPath.exists is false: store pubHubPath as null. Note: "No public repo found. Only private hub will be checked."Scan local: Run node "${CLAUDE_PLUGIN_ROOT}/dist/cli.js" scan --output /tmp/teleport-update-local.json.
Diff against private hub: Run node "${CLAUDE_PLUGIN_ROOT}/dist/cli.js" hub-read-branch --hub-path <hubPath> --branch <machineAlias> --output /tmp/hub-private-snap.json.
hub-read-main --hub-path <hubPath> --machine <machineAlias> --output /tmp/hub-private-snap.json.node "${CLAUDE_PLUGIN_ROOT}/dist/cli.js" diff --source-file /tmp/teleport-update-local.json --target-file /tmp/hub-private-snap.json --output /tmp/diff-private.json.Diff against public repo (if pubHubPath exists): Run node "${CLAUDE_PLUGIN_ROOT}/dist/cli.js" hub-read-public --hub-path <pubHubPath> --machine <machineAlias> --output /tmp/hub-public-snap.json.
diff --source-file /tmp/teleport-update-local.json --target-file /tmp/hub-public-snap.json --output /tmp/diff-public.json.Check empty: Read both diff files. The diff output has this structure:
{
"added": [...],
"modified": [...],
"removed": [...],
"unchanged": [...],
"summary": {
"added": {"agents": 3, "rules": 1},
"modified": {"skills": 2},
"removed": {},
"hasChanges": true
}
}
Check summary.hasChanges on each diff file. If both diffs have summary.hasChanges === false: respond "Everything is up to date. No local changes to push." STOP.
Present changes summary: Use summary.added and summary.modified from each diff to build the display. Format each category count as +N for added and ~N for modified:
Private hub (claude-teleport-private):
+3 agents, ~2 rules, +1 skill (not yet pushed)
Public repo (claude-teleport-public):
+5 agents, ~1 settings (not yet published)
Only show targets where summary.hasChanges is true.
Select target: Always ask the user which target(s) to update using AskUserQuestion (single-select).
pubHubPath exists (public repo found): show options "Private hub only", "Public repo only", "Both". Indicate which targets have detected changes (e.g., append "(changes detected)" or "(no changes)") so the user can make an informed choice — but let them pick any option regardless.pubHubPath is null (no public repo): show options "Private hub only", "Create & push public repo too". If user picks public, run the public repo creation flow (same as /teleport-share init) before proceeding.Category & item selection (per selected target):
AskUserQuestion with multiSelect: true to present categories with counts (e.g., "agents (+3)", "rules (~2)"). Only show categories that have changes.AskUserQuestion with multiSelect: true listing individual items with their status (added/modified).Secret scan: Run node "${CLAUDE_PLUGIN_ROOT}/dist/cli.js" secret-scan --snapshot-file /tmp/teleport-update-local.json --output /tmp/teleport-update-secrets.json. If findings: show each finding. Auto-exclude flagged items from the push.
RCE scan (public target only): For each selected hook, agent, or CLAUDE.md going to the public repo, run node "${CLAUDE_PLUGIN_ROOT}/dist/cli.js" rce-scan --file <path>. If findings: show flagged lines. Require explicit "yes" to include.
Push to private hub (if selected): Run node "${CLAUDE_PLUGIN_ROOT}/dist/cli.js" hub-push --hub-path <hubPath> --machine <machineAlias> --username <username> --snapshot-file /tmp/teleport-update-local.json. Show result.
Push to public repo (if selected): Run node "${CLAUDE_PLUGIN_ROOT}/dist/cli.js" hub-push-public --hub-path <pubHubPath> --machine <machineAlias> --username <username> --snapshot-file /tmp/teleport-update-local.json. Show result.
Success: Show summary per target:
✓ Private hub updated: +3 agents, ~2 rules pushed to branch '<machineAlias>'
✓ Public repo updated: +5 agents published
Cleanup: Remove temp files (/tmp/teleport-update-*, /tmp/hub-private-snap.json, /tmp/hub-public-snap.json, /tmp/diff-private.json, /tmp/diff-public.json, /tmp/teleport-hub-update, /tmp/teleport-public-update).