Swift AI SDK Upstream
teunlao/swift-ai-sdk
A skill your agent uses for Swift AI SDK upstream parity management: refresh or inspect Vercel AI SDK baselines, scan upstream package coverage, classify drift, plan provider/core/docs audits, land…
Sync the Switchboard client with a newer official LibreChat server version — a stable release, a release candidate, or a PARTIAL sync up to an untagged upstream commit (e.g.
$ npx skills add garfiec/Librechat-Mobile --skill sync-upstream -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install garfiec/Librechat-Mobile sync-upstream --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/garfiec/Librechat-Mobile.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/sync-upstream .claude/skills/sync-upstream && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "sync-upstream" agent skill from https://github.com/garfiec/Librechat-Mobile/tree/develop/.claude/skills/sync-upstream into .claude/skills/sync-upstream/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sync-upstream", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/garfiec/Librechat-Mobile/tree/develop/.claude/skills/sync-upstreamType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add garfiec/Librechat-Mobile --skill sync-upstream -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install garfiec/Librechat-Mobile sync-upstream --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garfiec/Librechat-Mobile.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/sync-upstream .agents/skills/sync-upstream && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "sync-upstream" agent skill from https://github.com/garfiec/Librechat-Mobile/tree/develop/.claude/skills/sync-upstream into .agents/skills/sync-upstream/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sync-upstream", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add garfiec/Librechat-Mobile --skill sync-upstream -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install garfiec/Librechat-Mobile sync-upstream --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garfiec/Librechat-Mobile.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/sync-upstream .cursor/skills/sync-upstream && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "sync-upstream" agent skill from https://github.com/garfiec/Librechat-Mobile/tree/develop/.claude/skills/sync-upstream into .cursor/skills/sync-upstream/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sync-upstream", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/garfiec/Librechat-Mobile.git --path .claude/skills/sync-upstream--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add garfiec/Librechat-Mobile --skill sync-upstream -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install garfiec/Librechat-Mobile sync-upstream --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garfiec/Librechat-Mobile.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/sync-upstream .gemini/skills/sync-upstream && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "sync-upstream" agent skill from https://github.com/garfiec/Librechat-Mobile/tree/develop/.claude/skills/sync-upstream into .gemini/skills/sync-upstream/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sync-upstream", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install garfiec/Librechat-Mobile sync-upstreamInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add garfiec/Librechat-Mobile --skill sync-upstream -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/garfiec/Librechat-Mobile.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/sync-upstream .github/skills/sync-upstream && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "sync-upstream" agent skill from https://github.com/garfiec/Librechat-Mobile/tree/develop/.claude/skills/sync-upstream into .github/skills/sync-upstream/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sync-upstream", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add garfiec/Librechat-Mobile --skill sync-upstream -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install garfiec/Librechat-Mobile sync-upstream --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/garfiec/Librechat-Mobile.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/sync-upstream .opencode/skills/sync-upstream && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "sync-upstream" agent skill from https://github.com/garfiec/Librechat-Mobile/tree/develop/.claude/skills/sync-upstream into .opencode/skills/sync-upstream/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sync-upstream", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
sync-upstreamSync the Switchboard client with a newer official LibreChat server version — a stable release, a release candidate, or a PARTIAL sync up to an untagged upstream commit (e.g.
Sync Upstream is an agent skill from garfiec/Librechat-Mobile. Sync the Switchboard client with a newer official LibreChat server version — a stable release, a release candidate, or a PARTIAL sync up to an untagged upstream commit (e.g. current dev HEAD). If the client is ALREADY at the target commit, runs an AUDIT of the last synced delta to catch anything that was missed. Coordinates two dynamic workflows (discovery, implementation) around human decision gates.
Its SKILL.md is about 3.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files (for example `reference/android-architecture.md`, `reference/api-mapping.md` and `reference/model-mapping.md`).
It sits in Mobile. It works with OpenAI. The repository describes itself as: Native Android & iOS client for LibreChat, built with Kotlin Multiplatform and Compose Multiplatform. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit a677510. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadGlobGrepWriteEditWebFetchWebSearchWorkflowAskUserQuestionFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitghFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Sync Upstream loads about 3.4k tokens when it runs. Until then it costs about 105 tokens; SKILL.md has 1,397 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, Read, Glob, Grep, Write, Edit, WebFetch, WebSearch, Workflow, AskUserQuestionAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from garfiec/Librechat-Mobile at commit a677510, republished under its MIT licence (© garfiec). 1,397 words, ~3,440 tokens.
.claude/skills/sync-upstream/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.Synchronize the Switchboard app with a newer version of the official LibreChat server.
You are the coordinator. You run the lightweight deterministic work yourself with Bash
(prereqs, target/mode resolution, final consistency asserts) and own the three human decision
points. All heavy parallel work is delegated to two dynamic workflows — you never read or
write app code yourself.
[you] 0. Prereqs + resolve target + detect mode (Bash — fail loud on ambiguity)
│
[WF1] 1. sync-upstream-discovery — parallel multi-angle sweep → converged findings
│
[you] 2. HITL INTERVIEW — the one real gate: target + scope + direction (AskUserQuestion)
│
[WF2] 3. sync-upstream-implement — implement → build+consistency gates → ≥2 independent review passes
│
[you] 4. TEST + PUSH TAIL — present test plan, facilitate device testing, hold the push gateTwo workflows do the work; you hold the seams. A workflow cannot pause to ask the user — that is exactly why the target choice, the proposal approval, and the no-push/device-test boundary live in your main loop between invocations, never inside a script.
Resolve these before anything else (Phase 0), because they change the whole run:
| Mode | Trigger | Goal | Version bookkeeping |
|---|---|---|---|
| sync | resolved target commit ≠ current pin | absorb new upstream changes | advances (version.properties, UPSTREAM_VERSION, submodule, commit map) |
| audit | resolved target commit == current pin (or audit in $ARGUMENTS) | re-check that the LAST synced delta was fully/correctly absorbed — find misses | none — the pin does not move |
Audit's default range is the last synced delta (previous pin → current pin), recovered from
UPSTREAM_VERSION's own git history. --full widens it to full-pin reconciliation.
| Mode | Target looks like | backendTargetVersion | UPSTREAM_VERSION | Gating strategy |
|---|---|---|---|---|
| release | v0.8.8 (default: latest stable tag) | 0.8.8 | tag=v0.8.8, commit=<tag commit> | isCompatibleOrNewer(version, "0.8.8-rc1") |
| rc | v0.8.8-rc1 | 0.8.8-rc1 | tag=v0.8.8-rc1, commit=<tag commit> | isCompatibleOrNewer(version, "0.8.8-rc1") |
| partial | dev, main, or a SHA | <base>+dev.<sha8> | tag=<last v-tag at/before commit>, commit=<target SHA> | supportsFeature(detected, "<next-rc-line>", landedDate) |
Shared invariants: the diff base is always commit= from UPSTREAM_VERSION (never tag=);
BackendVersion.parse() handles all three forms; a later sync from a partial baseline is normal.
Working directory is already the mobile repo root — do not cd elsewhere; rely on relative paths.
Fail LOUD on any ambiguity below — never guess a baseline or target for the user.
git submodule status. If upstream/ missing:
git submodule add https://github.com/LibreChat-AI/LibreChat.git upstream && git submodule update --init.cat UPSTREAM_VERSION. If missing, create from version.properties
backendTargetVersion + submodule HEAD (tag=v<version>, commit=<HEAD>, date=$(date +%Y-%m-%d)).git status --porcelain. If dirty → ask the user to commit/stash; wait.X.Y.Z+dev.<sha8> → <sha8> must be a prefix of commit=; verify the sha, not tag equality.X.Y.Z-rcN / plain X.Y.Z → must equal tag= without v.commit=.cd upstream && git fetch origin --tags && git fetch origin dev main.
Resolve $ARGUMENTS (see Target Modes) to a full {target_commit}:-rc/-beta/-alpha), but still enumerate newer rc tags and how
far dev/main are ahead (git rev-list --count {base_commit}..origin/dev) for the interview.{base_version} from git show {sha}:package.json,
{anchor_tag} = git describe --tags --abbrev=0 --match "v[0-9]*" {sha}
(--match is required — upstream also tags Helm charts like chart-2.0.7).{target_commit} == commit= (submodule HEAD) or $ARGUMENTS contains
audit → audit mode; the audit base is the previous commit= from
git log -p --format=%H -- UPSTREAM_VERSION (or full-pin if --full). Else sync mode.
If sync mode and no newer tags AND branch heads == base → tell the user "already up to date" and
offer an audit instead of stopping.mkdir -p .claude/sync-upstream/artifacts.scripts/check-mirrors.py --from {base_commit} --to {target_commit} --diff
Some upstream values are never served over the API, so the client hardcodes a copy — which
providers take documents natively, which MIME types the parser extracts, which feedback reasons
the write route accepts. These drift silently: nothing fails to decode, nothing errors, the
app just makes worse decisions as it ages, so the ordinary diff sweep reads them as inert
constant edits and defers them. Exit 1 means at least one moved; the output names the Kotlin
file to reconcile. Exit 2 is not drift — it is a fatal (empty submodule, unresolvable
revision, bad registry); fix the setup and re-run rather than reporting it as a finding.
Carry every DRIFT and ?? row into the Phase 2 interview as its own item — a ?? means upstream
renamed or deleted the symbol, so the registry entry is wrong either way.
Registry: scripts/mirrors.json. Adding a mirror to the codebase means adding an entry there in
the same PR.If a prior run's artifacts exist (ls .claude/sync-upstream/artifacts/), offer to resume from them.
Invoke the discovery workflow. It runs the parallel multi-angle sweep, converges + cross-references
the mobile codebase, and runs a completeness critic. Watch its phase tree live via /workflows.
Workflow({ name: "sync-upstream-discovery", args: {
mode, baseCommit, targetCommit, targetMode, baseVersion, anchorTag,
skillDir: "<abs path to .claude/skills/sync-upstream>",
artifactsDir: "<abs path to .claude/sync-upstream/artifacts>",
} })It returns { mode, range, findings[], counts, criticComplete, reportPath } and writes
artifacts/discovery-report.md. Each finding is machine-complete: category, severity, mobile-gap
status, iosMain coverage, landing commit + UTC landedDate, first-target-line, gate form. Do not
paraphrase-and-lose those — thread the structured objects straight into WF2.
This is the single human gate. Present the converged report, then use AskUserQuestion to settle:
backend-blocked are shown as knowingly-skipped, never built.Persist the approved, scoped list to artifacts/approved-{target}.md. If the user cancels, archive the
report and stop cleanly. Do not invoke WF2 until the user approves.
Invoke the implementation workflow with the approved list. It implements per group, runs build + consistency gates, then ≥2 mandatory independent review passes (stateless ⇒ independent by construction; CONFIRMED vs PLAUSIBLE; iteration-capped). It ends at local commits — it never pushes.
Workflow({ name: "sync-upstream-implement", args: {
approvedItems, mode, targetMode, targetCommit, baseVersion, anchorTag,
targetTag, // release/rc only; null for partial
sha8, // partial only
bumpVersion, // FALSE in audit mode
branchName, // chore/sync-upstream-{tag} | -dev-{sha8} | -audit-{sha8}
skillDir, artifactsDir,
reportPath, // artifacts/discovery-report.md
} })Returns { branchName, buildResults, buildGreen, consistency, reviewPasses, reviewClean, unresolvedConfirmed, testPlan }.
Then re-assert independently (you, with Bash) — do not trust the workflow's self-report blindly:
sha8 is a prefix of commit=; cd upstream && git rev-parse HEAD == commit=;
BackendCommitMap.kt contains the 12-char prefix of commit= (same check release.yml runs);
README upper bound matches; each supportsFeature row's landedDate ≤ synced commit's UTC date.commit=, backendTargetVersion, submodule HEAD, and
BackendCommitMap.kt are all unchanged from before the audit.If buildGreen is false or unresolvedConfirmed is true, report it and route back into WF2 (scoped
to the failures) rather than proceeding.
Phase 3 ends at local commits. DO NOT push. DO NOT open a PR. Build + detekt + tests confirm scaffolding, not feature correctness. A sync must be device-tested against a real backend on BOTH Android and iOS (incl. older-server compat) before a PR is offered. The branch stays local-only until the user walks the test plan and explicitly says "push it" / "open the PR".
Present:
## Sync Ready for Device Testing: {baseline} → {target} [{mode}]
Branch `{branchName}` is local-only. Not pushed. No PR opened.
### Files changed {grouped by module}
### Test plan {WF2 testPlan — Android / iOS / compat}
### How to build & run Android: assembleDebug + install. iOS: linkDebugFrameworkIosSimulatorArm64, run in Xcode.
Connect to a target-version server + an older supported server; walk the plan.
Partial: verify new features HIDDEN on the older server, visible on a server the
regenerated BackendCommitMap COVERS (between landing and the pin). A server NEWER
than the pin resolves to no-version → features fail closed by design (not a bug),
and your own dev server drifts past the pin within days.
### Version updates {sync: the bumps; audit: "none — pin unchanged"}Then:
git push / gh pr create. Not before.Dispatch on-device test facilitation as needed (split by platform, or platform × feature area for large syncs). Device testing is the human's; you facilitate and route blockers back into WF2.
${CLAUDE_SKILL_DIR}/reference/: upstream-paths.md (diff surface), api-mapping.md,
model-mapping.md, ui-mapping.md, upstream-backend-gaps.md (client-only vapor features — do not
build), android-architecture.md (implementer patterns). Root: DISCOVERY.md, VERSION_GATES.md,
BackendVersion.kt, scripts/mirrors.json (hand-mirrored upstream constants — see Phase 0 step 8).
| Situation | Recovery |
|---|---|
| Submodule / UPSTREAM_VERSION missing | Recreate (Phase 0 steps 1–2) |
| Dirty tree / baseline inconsistency / SHA not found | Ask the user — never auto-resolve |
| Already up to date | Offer an audit (don't just stop) |
| No newer tags but dev/main ahead | Offer a partial sync |
| WF1/WF2 returns partial (agent died) | Re-invoke with resumeFromRunId (cached agents replay); artifacts under artifacts/ show the phase reached |
| BackendCommitMap missing the pin (release.yml net) | WF2's regen step runs AFTER submodule checkout; re-run if needed |
| Build/consistency/review fail | Reported in WF2's return; re-invoke WF2 scoped to the failures |
| Session compacted mid-run | Artifacts dir is the resume authority; resumeFromRunId only within a single workflow invocation |
© garfiec, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 6 other files in .claude/skills/sync-upstream of garfiec/Librechat-Mobile.
Open the folder on GitHubat commit a677510
Sync Upstream next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Sync Upstream this skillgarfiec/Librechat-Mobile | 112 | — | ~3.4k | Automated safety check: Notes | MIT | |
| Swift AI SDK Upstreamteunlao/swift-ai-sdk | 154 | — | ~1.6k | Automated safety check: Pass | Apache-2.0 | |
| Agent Recorder FixturesSwiftedMind/SwiftAgent | 227 | — | ~906 | Automated safety check: Pass | MIT | |
| Publish ReleaseAyuilos/Miffan | 192 | — | ~635 | Automated safety check: Pass | AGPL-3.0 | |
| Ipaship Auditatharvnaik1/ipaship-audit | 108 | — | ~1.5k | Automated safety check: Notes | MIT | |
| Developing Genkit Dartevanca/flutter-ai-rules | 649 | — | ~961 | Automated safety check: Pass | MIT |
teunlao/swift-ai-sdk
A skill your agent uses for Swift AI SDK upstream parity management: refresh or inspect Vercel AI SDK baselines, scan upstream package coverage, classify drift, plan provider/core/docs audits, land…
SwiftedMind/SwiftAgent
Record real OpenAI/Anthropic HTTP back-and-forth (requests + responses, including streaming text/event-stream) and print paste-ready Swift fixtures for SwiftAgent unit tests (ReplayHTTPClient) using…
Ayuilos/Miffan
Publish a GitHub release for this fork, with a bilingual changelog that separates fork-owned changes from changes introduced by upstream merges.
atharvnaik1/ipaship-audit
A skill your agent uses when auditing iOS/Android app submissions for compliance with Apple App Store Review Guidelines or Google Play Developer Policies.
evanca/flutter-ai-rules
A skill your agent uses when building AI agents in Dart, implementing Genkit flows or tools, integrating LLMs into Dart or Flutter applications, or using Genkit Dart plugins.
heypandax/pairlet
Answer CC Pocket setup, usage, safety, and troubleshooting questions from the public manual and current code evidence.
garfiec/Librechat-Mobile
Add a hand-written Highlights section to a GitHub release whose notes were auto-generated, summarizing the release's PRs in user-facing language above the generated changelog.
garfiec/Librechat-Mobile
Audit open dependabot PRs in this repo. An agent skill from garfiec/Librechat-Mobile.
garfiec/Librechat-Mobile
Update the third-party JavaScript vendored into the app for the artifact, diagram, and math WebViews (KaTeX, mermaid, marked, highlight.js, Tailwind, Babel, React).
garfiec/Librechat-Mobile
Audit localization / i18n coverage across the compose-resources surface (10 modules x 9 locales).
Works with
Categories
Sync the Switchboard client with a newer official LibreChat server version — a stable release, a release candidate, or a PARTIAL sync up to an untagged upstream commit (e.g. Sync Upstream is an agent skill from garfiec/Librechat-Mobile.g.
Sync Upstream fits situations like: mobile work in your project.
Run `npx skills add garfiec/Librechat-Mobile --skill sync-upstream -a claude-code`. Or copy the skill folder (.claude/skills/sync-upstream in garfiec/Librechat-Mobile) into .claude/skills/sync-upstream in your project. Claude Code loads it when a task matches its description.
Run `npx skills add garfiec/Librechat-Mobile --skill sync-upstream -a codex`. Or copy the skill folder (.claude/skills/sync-upstream in garfiec/Librechat-Mobile) into .agents/skills/sync-upstream in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add garfiec/Librechat-Mobile --skill sync-upstream -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sync-upstream, .gemini/skills/sync-upstream, .github/skills/sync-upstream and .opencode/skills/sync-upstream in your project.
Going by SKILL.md and its folder, Sync Upstream needs the command-line tools its instructions call (git and gh). Its frontmatter pre-approves these tools: Bash, Read, Glob, Grep, Write, Edit, WebFetch, WebSearch, Workflow, AskUserQuestion.
SKILL.md names 1 domain. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Sync Upstream is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.4k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Sync Upstream: Swift AI SDK Upstream (teunlao/swift-ai-sdk, 154 stars), Agent Recorder Fixtures (SwiftedMind/SwiftAgent, 227 stars), Publish Release (Ayuilos/Miffan, 192 stars) and Ipaship Audit (atharvnaik1/ipaship-audit, 108 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
garfiec (a GitHub user) maintains it in garfiec/Librechat-Mobile, which has 112 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 8, 2026.
Source: garfiec/Librechat-Mobile on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.