Files
ttg-marketplace/plugins/ttg-ops/skills/ttg-move-repo/SKILL.md
T
mr.zeroandClaude Opus 5 4192fc366e Add the ttg-ops plugin: six skills for the forge estate
The marketplace held only MCP servers so far. These are skills for the
work that keeps costing manual effort and quietly breaking:

- ttg-publish-module — releasing a library, and verifying from a clean
  external project that the release is actually fetchable. Encodes the
  trap that cost the most: Gitea redirects old repo paths, but not Go
  module paths, so a repo can be reachable while `go get` fails.
- ttg-move-repo — moving a repo and following it through every place
  that names it, including the ones redirects do not cover.
- ttg-new-repo — creating one in the right org and registering it, so
  it cannot end up absent from the clone list the way batocera-store did.
- ttg-ci-enroll — wiring a repo into the build, and the usual failure
  where the config exists but the repo was never registered.
- ttg-audit-forge — the drift check between forge, clone list, wiki,
  catalog and CI.
- ttg-update-docs — README, wiki page and the public site (Vue page plus
  both locale files) after a change.

The rules stay in REPO_REFACT.md, WIKI_CONNECTION.md and
ECOSYSTEM_PLAN.md; the skills read them instead of carrying a second
copy that drifts.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-16 11:07:39 +02:00

64 lines
3.9 KiB
Markdown

---
name: ttg-move-repo
description: Move or rename a repo on the TTG forge and follow the change through everywhere it is referenced — clone list, local remotes, wiki links, Go module paths, Gemfiles, CI config and the docs. Knows what Gitea's redirect covers and what it silently does not. Use when a repo changes org or name ("tedd át a X orgba", "nevezd át", "move repo", "rename repo").
allowed-tools: Bash, Read, Edit, Write, Grep, Glob
---
# ttg-move-repo
Egy repo áthelyezése vagy átnevezése a forge-on, és — ami a munka nagyobbik fele — az utókövetés.
## Mit fed az átirányítás és mit nem
A Gitea az átnevezés/áthelyezés után is kiszolgálja a régi `owner/repo` utat (`repo_redirect`), ugyanarra a SHA-ra. **Ezért túléli:** a meglévő klónok `pull`/`push`-a, a wiki szövegbeli linkjei, a `repos.list` régi URL-jei, a HTTPS böngészőlinkek (301).
**Amit nem fed — ezeket kézzel kell:**
| Mi | Hol keresd |
|---|---|
| Go modulnév | `go.mod` első sora + minden belső import + a fogyasztók `require`/`replace` sorai |
| Konténer-csomag útvonalak | `git.teletypegames.org/internal/<név>` — a csomagnévtér nem költözik a repóval |
| Gem registry névtér | `api/packages/<org>/rubygems` a gemspecben és a pipeline-ban |
| CI push URL | a mirror/publikáló pipeline `git push` sora |
| Woodpecker repo-kötés | az új tulajdonos alatt újra kell regisztrálni |
## Lépések
1. **Cél eldöntése.** Az org a repo *rendeltetését* jelöli, nem a titkosságát (azt a repo `private` kapcsolója). A besorolási szabályok és a mai kiosztás a workspace gyökér `REPO_REFACT.md`-jében. Ha a besorolás nem egyértelmű, kérdezz, ne tippelj.
2. **Áthelyezés.**
```sh
tea api --login ttg -X POST -d '{"new_owner":"<org>"}' /repos/<owner>/<repo>/transfer
```
Átnevezéshez `-X PATCH -d '{"name":"<új-név>"}' /repos/<owner>/<repo>`.
Ha a cél org még nincs: `tea api --login ttg -X POST -d '{"username":"<org>","visibility":"public"}' /orgs` — és **utána add meg neki a nevet és a `Teletypers` csapatot** a `games` mintájára (lásd `ttg-new-repo`).
3. **Átirányítás ellenőrzése**, mielőtt bármi másba kezdesz:
```sh
git ls-remote ssh://git@git.teletypegames.org:2222/<régi>/<repo> HEAD
git ls-remote ssh://git@git.teletypegames.org:2222/<új>/<repo> HEAD
```
Azonos SHA = működik.
4. **`devarea/scripts/repos.list`** — írd át az érintett sor URL-jét, majd `devarea/scripts/check-repos.sh`. A szkript org-agnosztikus (`tea repo list`-ből olvas `owner/name`-et), nem kell hozzányúlni. Zöld futás = a lista és a szerver fedik egymást.
5. **Lokális remote-ok.** A workspace-checkoutok `origin`-ja a régi URL-en marad. Állítsd át `git remote set-url origin <új URL>`. Söpörd végig a többi repót is elfekvő remote-ért (`git remote` ≠ csak `origin`, vagy az upstream nem `origin/...`) — volt már régi hosztra mutató alias, amire egy sima `git push` ment volna.
6. **Hivatkozások.** Keress a `wiki-pages` és a `teletypegames` repóban, meg a workspace többi részében:
```sh
grep -rn "<régi-org>/<repo>" --exclude-dir=.git
```
Ne feledd a **linkszövegeket** sem (`` `internal/wiki-pages` ``), ne csak az URL-eket. Óvatosan az általános szabályokkal: a `bbs/session.rb` alakú backtickes hivatkozások forrásfájlok, nem org-utak.
7. **Dokumentáció.** Futtasd a `ttg-update-docs` skillt — az intézi a README-t, a wikit és a publikus oldalt. A `devarea/WIKI_CONNECTION.md` `Org` oszlopát is frissíteni kell.
8. **Ellenőrzés.** Az átírt URL-eket kérd le élesben (HTTP HEAD). A 404 nem mindig hiba: privát repo névtelenül 404, és a placeholder URL-ek (`games/example`) szándékosak.
## Ha org szűnne meg
Mielőtt kiürült orgot törölnél, **nézd meg a csomagjait**:
```sh
tea api --login ttg "/packages/<org>?limit=50"
```
Az `internal` org nulla repóval is él, mert nyolc builder image-et tart — a törlése minden buildet megölne.