원클릭으로
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 직업 분류 기준
| 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).
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