---
name: Sync Upstream Obsidianos
slug: sync-upstream-obsidianos
category: DevOps
description: Sync Upstream Obsidianos previews and merges structural updates from an upstream ObsidianOS remote into a local vault. Use it to check prerequisites, review changes, and merge while protecting local files.
github: "https://github.com/benoror/obsidianos_work/tree/main/.agents/skills/sync-upstream-obsidianos"
language: JavaScript
stars: 165
forks: 13
install: "npx degit https://github.com/benoror/obsidianos_work/tree/main/.agents/skills/sync-upstream-obsidianos ~/.claude/skills/sync-upstream-obsidianos"
installs_to: ~/.claude/skills/sync-upstream-obsidianos
source_path: .agents/skills/sync-upstream-obsidianos/SKILL.md
collection_size: 24
category_size: 1075
collection_url: "https://dirskills.com/collections/benoror/obsidianos_work"
added: 2026-09-08T05:35:09.327Z
last_synced: 2026-09-08T05:35:09.327Z
canonical_url: "https://dirskills.com/skills/sync-upstream-obsidianos"
---

# Sync Upstream Obsidianos

Sync Upstream Obsidianos previews and merges structural updates from an upstream ObsidianOS remote into a local vault. Use it to check prerequisites, review changes, and merge while protecting local files.

**Install:**

```bash
npx degit https://github.com/benoror/obsidianos_work/tree/main/.agents/skills/sync-upstream-obsidianos ~/.claude/skills/sync-upstream-obsidianos
```

## README

# Sync Upstream ObsidianOS

Shortcut to run [`.scripts/sync-upstream.sh`](../../../.scripts/sync-upstream.sh).

## Usage

| Command | What it does |
| --- | --- |
| `/sync-upstream-obsidianos` | Preview and merge upstream updates |
| `/sync-upstream-obsidianos preview` | Preview only — show what's new without merging |

## Workflow

### 1. Check prerequisites

- Verify `upstream` remote exists: `git remote get-url upstream`. If missing, tell the user to add it:
  ```
  git remote add upstream <url-to-upstream-repo>
  ```
- Verify working tree is clean (`git status --short`). If dirty, ask the user to commit or stash first.

### 2. Preview

Run `.scripts/sync-upstream.sh --preview` and show the output (new commits and changed files).

If there are no new commits, report "already up to date" and stop.

If the user only asked for `preview`, stop here.

### 3. Confirm and merge

Present the preview results and ask the user to confirm before merging.

On confirmation, run the full sync:

```
echo y | ./.scripts/sync-upstream.sh
```

### 4. Report results

Show the merge outcome:
- Which files were updated.
- Whether any files were excluded via `.sync-exclude`.
- The final commit (`git log -1 --oneline`).

If the merge had conflicts, relay the conflict list and instruct the user to resolve manually.

## Important Notes

- The script protects personal files (Meetings, Teams, Templates, etc.) via `.gitattributes` merge=ours rules.
- Files matching patterns in `.sync-exclude` are auto-removed from the merge (e.g. upstream example files).
- This skill never pushes — the user decides when to push.
- If the `upstream` remote doesn't exist, do not create it automatically — prompt the user for the URL.
