بنقرة واحدة
pull-all-repos
Clone/pull git repos, verify local folders, auto-register orphans, and regenerate repos.md
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Clone/pull git repos, verify local folders, auto-register orphans, and regenerate repos.md
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Create an implementation plan in _plans/ with embedded repo context and step-by-step task lists
Execute a plan from _plans/, implementing steps, checking off tasks, running tests, and documenting fixes
Clone a git repo or register a local folder into repos/ and update repos.md with its description
Find and remove stale entries from repos.yaml whose directories no longer exist on disk
Iterate through all sub-repos in repos/ and stage/commit/push each one, then do the same for the master repo
Stage, commit, and push changes for the master repo only (excludes sub-repos in repos/)
| name | pull-all-repos |
| description | Clone/pull git repos, verify local folders, auto-register orphans, and regenerate repos.md |
| user-invocable | true |
| origin | template |
Read repos/repos.yaml at the project root and ensure all declared repositories and local source folders are present and up to date.
repos/repos.yaml — read the repos: listtype: git (or unset type) entry where repos/<name>/ doesn't exist, clone itrepos/<name>/ already exists, fetch and pulltype: local entry, verify repos/<name>/ exists on diskrepos/ not in the manifest, auto-detect type, analyze, and add to repos/repos.yaml.gitignorerepos/repos.md with current repo/folder analysisRead repos/repos.yaml from the project root. Each entry has:
name (required) — directory name under repos/type (optional, default: git) — "git" or "local"url (required for git, ignored for local) — git clone URLbranch (optional, default: main, git only) — branch to trackprefix (optional) — short prefix for the repo (used in references)description (optional) — one-line summaryIf repos/repos.yaml has an empty list (repos: []), skip steps 2–4 and proceed directly to step 5 (orphan detection). The manifest being empty does NOT mean the workspace is empty — there may be repos on disk that need to be registered.
For each entry where type is git (or unset) and repos/<name>/ does NOT exist:
git clone <url> repos/<name>branch is specified and it's not the default, run git -C repos/<name> checkout <branch>For each entry where type is git (or unset) and repos/<name>/ already exists:
.git directory)git -C repos/<name> fetch --all --prunegit -C repos/<name> branch --show-currentgit -C repos/<name> pull --ff-only
For each entry where type is local:
repos/<name>/ exists on diskmkdir -p repos/<name>) and report: created empty directory — user should add source filesLocal entries are never cloned, pulled, or synced from a remote. They are source folders managed directly.
List directories in repos/ and compare against repos/repos.yaml entries. For any directory that exists on disk but isn't in the manifest:
Auto-detect type — check if the directory has a .git/ subdirectory
.git/ → type: git.git/ → type: localFor git orphans:
git -C repos/<name> remote get-url origingit -C repos/<name> branch --show-currentrepos/repos.yaml:
- name: <name>
url: <remote URL>
branch: <current branch>
prefix: <inferred from name>
description: <1-line summary from analysis>
For local orphans:
repos/<name>/ be tracked by git, or gitignored?"repos/repos.yaml:
- name: <name>
type: local
gitignore: <true|false based on user's answer>
prefix: <inferred from name>
description: <1-line summary from analysis>
Analyze each orphan the same way as existing entries — read README, detect tech stack, scan directory structure (see Regenerate repos.md section)
Infer a prefix from the directory name (first 2-4 characters or a natural abbreviation, e.g., frontend → fe, shared-config → cfg). Avoid collisions with existing prefixes. If unsure, use the full name truncated.
Report what was registered:
✅ Registered
repos/<name>astype: git(remote:<url>) — added torepos/repos.yaml✅ Registeredrepos/<name>astype: local— added torepos/repos.yaml
Do NOT delete any directories. Registration is additive only.
After processing all entries, ensure the root .gitignore is correct:
.gitignorerepos/<name>/ is listed in .gitignore (add if missing) — git repos are always gitignoredgitignore field in repos/repos.yaml:
gitignore: true → ensure repos/<name>/ IS in .gitignoregitignore: false (or unset) → ensure repos/<name>/ is NOT in .gitignoregitignore field and the directory was just registered as an orphan, the user was already asked in the orphan detection step — use their answerAfter all sync operations, regenerate repos/repos.md. For each entry (git or local):
package.json, Cargo.toml, go.mod, pyproject.toml, or equivalent for tech stackgit -C repos/<name> remote get-url originCLAUDE.md, AGENTS.md, .github/copilot-instructions.mdWrite repos/repos.md with this format:
# Repositories
This file describes each repository and local source folder in `repos/`. Auto-generated by `/pull-all-repos`. Do not edit manually.
## <repo-name>
- **Type**: git | local
- **Remote**: <git remote URL> *(git only)*
- **Tech stack**: <languages, frameworks, key dependencies>
- **Description**: <1-2 sentence summary>
- **Key paths**: <notable top-level directories>
- **Agent instructions**: <which of CLAUDE.md, AGENTS.md, .github/copilot-instructions.md exist, or "None">
Omit the Remote line for local entries. If repos/ has no directories, keep the placeholder comment.
Report a table at the end:
| Entry | Type | Status |
|---|---|---|
<name> | git | Cloned / Updated (N new commits) / Already up to date / Error: <reason> |
<name> | local | Present / Created empty directory |
<name> | git | ✅ Registered (was orphan) |
<name> | local | ✅ Registered (was orphan) |
repos/repos.yaml doesn't exist, create it.