ab-equivalence
Compare two versions of an LLM-directed document - an original (teacher) and a candidate (student) - across a transfer set and return a per-case…
Bulk clone and keep in sync every GitHub repo you can access across an org or personal account. For an org it unions the repos reachable through the teams you belong to with the org's repo list (so direct-collaborator and public repos count even with no team membership); for a
$ npx -y skills add bjcoombs/ai-native-toolkit --skill ghsync --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/ghsyncContext preview
The summary Claude sees to decide when to auto-load this skill.
Bulk clone and keep in sync every GitHub repo you can access across an org or personal account. For an org it unions the repos reachable through the teams you belong to with the org's repo list (so direct-collaborator and public repos count even with no team membership); for a
name: ghsync description: "Bulk clone and keep in sync every GitHub repo you can access across an org or personal account. For an org it unions the repos reachable through the teams you belong to with the org's repo list (so direct-collaborator and public repos count even with no team membership); for a personal account it uses the account's repo list. Deduplicates them, then clones new ones and fast-forward syncs existing ones (and their worktrees) into a consistent <repo>/<repo>-main + <repo>/worktree layout. The org defaults to the directory you run from, so dropping into ~/dev/github.com/<org> mirrors that org. TRIGGER when the user types /ghsync, wants to clone or sync all org repos or their own personal repos, asks to mirror everything they have access to, is onboarding into a new enterprise/org, or wants to refresh their local checkouts to latest."
Onboarding into a new enterprise means finding and cloning dozens of repos by hand, then drifting out of date. This skill does both halves: it **discovers** everything you can reach and **keeps it in sync**.
branch, updates their worktrees, and clones anything new. It never clobbers local work: repos with uncommitted changes or on a non-default branch are fetched but not pulled, and reported in the summary.
It is **org-agnostic** — point it at any GitHub org, GitHub Enterprise host, or **personal account**. The script detects the account type itself: for an organization it unions the teams you belong to with the org's repo list (so direct-collaborator and public repos are included even with no team membership); for a personal account it uses the account's repo list (private repos included when it's your own account).
The script lives next to this file. Resolve its directory the same way the other skills do (works whether installed as a plugin or hand-placed under `~/.claude/skills/`):
SKILL_DIR="${CLAUDE_PLUGIN_ROOT:+$CLAUDE_PLUGIN_ROOT/skills/ghsync}"
SKILL_DIR="${SKILL_DIR:-$(dirname "$(realpath ~/.claude/skills/ghsync/SKILL.md)")}"
# Org is derived from the directory you run in. To mirror the "meridianhub"
# org, run from a directory named meridianhub:
cd ~/dev/github.com/meridianhub
bash "$SKILL_DIR/scripts/ghsync.sh"The org defaults to the **basename of the directory you launch from**. So running inside `~/dev/github.com/meridianhub` syncs the `meridianhub` org into that directory. Override the org name or target directory explicitly when they differ:
bash "$SKILL_DIR/scripts/ghsync.sh" --org meridianhub --root ~/dev/github.com/meridianhub
1. **Confirm the target.** Run with `--list-repos` first (or `--list-teams` for an org) so the user sees which account and how many repos before any cloning. This doubles as a check that the derived account name is correct. 2. **Dry run on first use against a new org** (`--dry-run`) to preview clones and updates without touching disk. 3. **Run the real sync.** Stream the output; the run ends with a summary (up-to-date / updated / failed / uncommitted / branch issues / worktrees). 4. **Surface the exceptions.** Call out anything under *Failed*, *Uncommitted changes*, or *Not on default branch* — these are the repos the user may need to deal with manually.
| Flag | Effect | |------|--------| | `--org NAME` | Org or personal account to sync (default: basename of `--root` / cwd) | | `--root DIR` | Directory to clone into (default: current directory) | | `--list-teams` | List your teams in the org (with repo counts) and exit; orgs only | | `--list-repos` | List the deduplicated accessible repos and exit | | `--porcelain` | Machine-readable repo list: one name per line to stdout, all chatter to stderr; implies `--list-repos`. Consumed by downstream tooling such as `/ghreport`. | | `--dry-run` | Show what would be cloned/updated without making changes | | `--limit N` | Process only the first N repos (useful for a quick test) | | `--quiet` | Suppress per-repository chatter; keep the final summary |
<root>/<repo>/ ├── <repo>-main/ # default-branch checkout, kept clean and up to date └── worktree/ # ready for `git worktree add ...`
This matches the worktree convention the rest of the toolkit assumes: `<repo>-main` stays on the default branch and clean, and feature work happens in sibling worktrees.
*Uncommitted changes*).
under *Not on default branch*).
no rebases, never a force.
(*Wrong structure*) rather than touched.
script checks both up front.
setting `GH_HOST=github.example.com` or running `gh auth login --hostname github.example.com` first.
two sources and deduplicating: the **teams you belong to** (`gh api user/teams`) and the **org repo list** (`gh repo list <org>`), which also surfaces public repos and repos reachable via direct collaborator grants outside any team. Team membership is **not** a precondition — a user on no team still syncs every repo they can otherwise access. For a **personal account**, repos come from `gh repo lis
A Claude Code plugin - and a set of standalone skills for any AI assistant: skills, agents, and commands for AI-native development. In Claude Code it runs locally against your own codebase using whichever model you already pay for.
Repo: bjcoombs/ai-native-toolkit
Compare two versions of an LLM-directed document - an original (teacher) and a candidate (student) - across a transfer set and return a per-case…
Renders the /assess report from the deterministic run-context.json and the layer scorecard - the scorecard, the verbatim cross-layer findings, lying signals,…
The /assess end-of-run offers - open a PR with the report, track the Top 3 Actions in the user's issue tracker, freeze the assessment into a CI gate, and file…
Assess a codebase's readiness for AI agent contributors using the layered contract model, and generate a complexity hotspot SVG treemap (size = LOC, hue =…
Detect and remove the telltale signs of AI-generated 'slop' from any written text - articles, reports, emails, essays, bios, marketing copy, documentation,…