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>
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
---
|
||||
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.
|
||||
Reference in New Issue
Block a user