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:
2026-08-16 11:07:39 +02:00
co-authored by Claude Opus 5
parent e25cc494d2
commit 4192fc366e
9 changed files with 405 additions and 2 deletions
@@ -0,0 +1,71 @@
---
name: ttg-new-repo
description: Create a repo on the TTG forge in the right org and register it everywhere it has to appear — clone list, wiki page, WIKI_CONNECTION table, and CI if it builds something. Use when the user wants a new repository, project or tool ("új repo", "create repo", "kezdjünk egy új projektet").
allowed-tools: Bash, Read, Edit, Write, Grep, Glob
---
# ttg-new-repo
Új repo létrehozása úgy, hogy ne maradjon árván. A tapasztalat szerint a repo elkészül, a nyilvántartásból meg kimarad — ez a skill ezt előzi meg.
## 1. Melyik org
Az org a repo **rendeltetését** jelöli; a titkosságot a repo `private` kapcsolója adja, nem az org. A mai kiosztás és az egymondatos definíciók a workspace gyökér `REPO_REFACT.md`-jében vannak. Röviden:
| Org | Mi kerül bele |
|---|---|
| `games` | katalógus-termék, amivel valaki játszik |
| `demos` | platformbemutató (katalógus-státusz `demo`) |
| `engines` | újrafelhasználható motor/könyvtár, amitől más repók függnek |
| `bbs` | BBS szerverek és showcase-ek |
| `build` | CI toolchain és builder image |
| `services` | ami a mi szerverünkön fut |
| `tools` | amit egy ember telepít és futtat magának |
| `infra` | maga a kiszolgáló-környezet |
Ha a besorolás vitatható, **kérdezd meg a felhasználót** — a rossz org később org-váltást és utókövetést jelent.
## 2. Létrehozás
```sh
tea api --login ttg -X POST -d '{"name":"<repo>","private":false,"auto_init":false}' /orgs/<org>/repos
```
A `private` a tartalom érzékenységéről szóljon, ne az orgról.
## 3. Nyilvántartásba vétel
- **`devarea/scripts/repos.list`** — új sor `<workspace-útvonal>|ssh://git@git.teletypegames.org:2222/<org>/<repo>` alakban, ábécérendben a blokkján belül. A workspace-mappa és az org **szándékosan nem azonos**: a mappák aszerint csoportosítanak, hogyan dolgozol rajtuk, az orgok aszerint, mi a repo.
- **`devarea/scripts/check-repos.sh`** — futtasd. Ha zöld, a lista fedi a szervert. Ez a lépés fogja el a „elkészült, de sehol nincs nyilvántartva" hibát.
- **`devarea/WIKI_CONNECTION.md`** — ha lesz wiki-oldala, új sor a táblázatba (`Folder`, `Org`, `Title`, `Wiki file`, `URL`). Ha nem lesz, vedd fel a „Folders without a wiki page" felsorolásba.
## 4. Wiki-oldal
Ha a repo dokumentálást érdemel, hozz létre `wiki-pages/pages/<szekció>/<repo>/default.md`-t. Szekció-választás a rendeltetés szerint: `development/` platformok, `infrastructure/` kiszolgáló, `others/` eszközök, `projects/` termékek.
A frontmatter kötelező mezői: `title`, `visible`, `id`, `description`, `date`, `locale`, `repo`, `taxonomy.tag`. **Az `id` legyen egyedi** — ellenőrizd (`grep -rh "^id:" pages/ | sort | uniq -d`), a legnagyobb használt fölött adj újat. A `config/sitenav.yaml`-ba is kerüljön bejegyzés, ha a menüben a helye.
## 5. CI
Ha a repo buildel valamit, futtasd a `ttg-ci-enroll` skillt.
## 6. Kezdő tartalom
Legyen `README.md` az első committól. Ha a repo egy meglévő minta rokona (pl. új `*-tools` vagy új store), nézd meg a testvért, és kövesd a szerkezetét — ne találj ki újat.
## Ha új orgot kell létrehozni
Nem elég a puszta org: adj neki **megjelenítendő nevet és `Teletypers` csapatot** a `games` mintájára, különben kilóg a sorból.
```sh
tea api --login ttg -X POST -d '{"username":"<org>","visibility":"public"}' /orgs
tea api --login ttg -X PATCH -d '{"full_name":"Teletype Games <Név>","description":"<egy mondat>"}' /orgs/<org>
```
A csapat konfigurációját **ne gépeld be** — olvasd ki a mintából és másold:
```sh
tea api --login ttg /orgs/games/teams # a Teletypers csapat units_map-je és beállításai
tea api --login ttg /teams/<id>/members # a tagok
tea api --login ttg -X POST -d '<spec>' /orgs/<org>/teams
tea api --login ttg -X PUT /teams/<új-id>/members/<login>
```