yun-sync-repo
Brings an external repository into the workspace as work material. The repo is cloned
into repos/<name>/, which is gitignored — the workspace versions only the harness,
never the projects' code.
Preconditions
- You MUST be at the workspace root (the directory containing
AGENTS.mdandskills/). Verify with the shell test[ -e AGENTS.md ] && [ -d skills ], never a lister piped to a matcher — given no path argument it prints nothing and still exits 0. If you are not at the root, STOP and tell the user to open their agent from the workspace root (see AGENTS.md rule 1). Do not clone from anywhere else.
Inputs
- A git URL (
https://…/repo.git,git@…:owner/repo.git), OR - A GitHub shorthand
owner/repo, OR - An explicit
<name>for the target folder (optional; defaults to the repo basename).
Steps
Resolve the target name. Use the explicit name if the user gave one; otherwise derive it from the URL basename without the
.gitsuffix. Keep it kebab-case.Check for collision. Look at
repos/<name>/:- If it already exists and is a clone of the same remote → do NOT re-clone. Report it
is already synced, and offer
git -C repos/<name> fetch --all --pruneto update. - If it exists but points to a different remote, or is a dirty non-repo directory → STOP and ask the user how to proceed. Never overwrite blindly.
- If it already exists and is a clone of the same remote → do NOT re-clone. Report it
is already synced, and offer
Clone.
git clone <url> repos/<name>— a full clone (worktrees need full history; do NOT use--depth). Expand a GitHub shorthand first —owner/repo→https://github.com/owner/repo.git— orgit clonereads it as a local path.Verify the clone.
git -C repos/<name> rev-parse --is-inside-work-treereturnstrue.git -C repos/<name> remote -vshows the expected remote.
Confirm isolation.
repos/is gitignored at the workspace level, sogit statusat the workspace root must NOT list the new repo. If it does, the workspace.gitignoreis broken — fix it before continuing.Report. Give the ready path
repos/<name>/and its default branch.
Notes
- Never clone into the workspace root or into
skills/. Only intorepos/<name>/. - Do NOT
cdintorepos/<name>/to keep working — stay at the workspace root so the harness stays loaded (AGENTS.md rule 1). Operate on the repo viagit -C repos/<name>, or spawn an isolated worktree withyun-spawn-worktree.