← ClaudeAtlas

sync-team-profileslisted

Fetch (or refresh) registered team-profile sources — git clone on first run, shallow git fetch + reset on subsequent runs — and register discovered profiles under a namespace. TRIGGER when the user says "sync team profiles", "pull the latest team profiles", "refresh team profiles", "update team profiles", "sync from <team-name> profile source", "fetch profiles from the team repo", "/nyann:sync-team-profiles". Do NOT trigger on "add a new team profile source" (that's `add-team-source` — registers without pulling). Do NOT trigger on "sync my branch" (that's the `sync` skill — feature-branch rebase/merge). Do NOT trigger on "install a profile" from a URL when no source is registered yet — walk the user through `add-team-source` first.
thettwe/nyann · ★ 6 · Data & Documents · score 71
Install: claude install-skill thettwe/nyann
# sync-team-profiles Wraps `bin/sync-team-profiles.sh`. On first run it shallow-clones each registered team-profile source (`git clone --depth=1`); on subsequent runs it does a shallow fetch (`git fetch --depth=1`) and `git reset --hard FETCH_HEAD` to advance to the latest commit. Every profile under the cache is then validated against `profiles/_schema.json`, and valid profiles are registered under `<source-name>/<profile-name>`. ## 1. Pre-flight - Config at `~/.claude/nyann/config.json` must have at least one entry in `team_profile_sources[]`. If empty, route to `add-team-source` first. - Uses the sync interval from each source. When the user says "force refresh" / "ignore the interval" / "pull now", pass `--force`. - When the user names a specific source ("sync just the platform- team profiles"), pass `--name <source>` so unrelated sources don't get pulled. ## 2. Invoke ``` bin/sync-team-profiles.sh \ [--user-root <dir>] \ [--force] \ [--name <source>] ``` Network operation. Expect up to a few seconds per source. The backend is resilient — a failing source logs the error and moves on to the next. ## 3. Interpret the JSON summary Top-level shape is four arrays (see `schemas/team-sync-result.schema.json`): - `synced[]` — sources that pulled this run. Each entry: `{name, synced_at}`. - `skipped[]` — sources within their interval window. Each entry: `{name, reason: "within-interval", next_due}`. Tell the user the next-due timestamp; they can re-r