From b065496deb80bd2800c375b0733b9eeac314288e Mon Sep 17 00:00:00 2001 From: vitya Date: Wed, 27 May 2026 12:45:19 +0300 Subject: [PATCH] =?UTF-8?q?fix(skills):=20meta-host-routing=20v0.3.0=20?= =?UTF-8?q?=E2=80=94=20naming=20is=20meta-,=20not=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit v0.2.0 wrongly said the dedicated meta-host shares the project's name. Per meta-out-of-repo design the convention is meta- (e.g. OpeItcLoc03/meta-yt-tools), so the bare name stays free for a code mirror. Fixed resolve step, example, and bootstrap instruction. Co-Authored-By: Claude Opus 4.7 (1M context) --- skills/meta-host-routing/SKILL.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/skills/meta-host-routing/SKILL.md b/skills/meta-host-routing/SKILL.md index 85bb54f..faee148 100644 --- a/skills/meta-host-routing/SKILL.md +++ b/skills/meta-host-routing/SKILL.md @@ -1,6 +1,6 @@ --- name: meta-host-routing -version: 0.2.0 +version: 0.3.0 description: > Use before any tasks_create / knowledge_ingest / brainstorm-promotion against a project — resolve WHERE that project's meta lives before writing. A @@ -38,7 +38,7 @@ Per the `meta-out-of-repo` design: `.tasks/`, `.wiki/`, `.claude/` must not be c 1. **Detect.** Check the target's local remote (`git remote -v`) and/or a `projects-meta` dry-run. Github remote OR "not in cache" → meta-out-of-repo project; continue. Otherwise → direct Gitea route, this skill does not apply. 2. **Resolve the meta-host**, in priority order: - - **(a) Dedicated meta-host (preferred).** Is there a Gitea repo with the **same name** as the project, holding only `.wiki/`+`.tasks/` (no code)? That is its meta-host. Once synced, `projects-meta` tracks it as a project of that name — `meta_status` / a `tasks_create` dry-run against `/` resolves. Canonical example: code `github.com/OpeItcLoc03/yt-tools` → meta-host **Gitea `OpeItcLoc03/yt-tools`** (a meta-only repo, same name, code on github). + - **(a) Dedicated meta-host (preferred).** Is there a Gitea repo named **`meta-`**, holding only `.wiki/`+`.tasks/` (no code)? That is its meta-host. Once synced, `projects-meta` tracks it as a project `/meta-` — a `tasks_create` dry-run against that resolves. Canonical example: code `github.com/OpeItcLoc03/yt-tools` → meta-host **Gitea `OpeItcLoc03/meta-yt-tools`**. **Naming is `meta-`, NOT ``** — per the `meta-out-of-repo` design: the bare `` name on Gitea must stay free for a possible code **mirror** of the github repo. (Local clone convention, if ever needed: `~/projects/.meta//`.) - **(b) Shared host (transitional).** No dedicated host yet → grep sibling Gitea repos, **start with `.common`** (`~/projects/.common/`), for the project name: ``` grep -ril "" ~/projects/.common/.tasks/ ~/projects/.common/.wiki/ @@ -46,9 +46,9 @@ Per the `meta-out-of-repo` design: `.tasks/`, `.wiki/`, `.claude/` must not be c The host is whichever Gitea repo already holds that project's tasks/wiki. - **(c) Neither** → the project has no meta-host yet (Failure modes — STOP and ask, or bootstrap one per "Bootstrapping a new meta-host"). - > Note: `.common` was yt-tools' shared host until 2026-05-27, when yt-tools graduated to its own dedicated host (`OpeItcLoc03/yt-tools`). `.common` now holds only yt-tools' done-task archive. Prefer giving a maturing project its own host over piling onto `.common`. + > Note: `.common` was yt-tools' shared host until 2026-05-27, when yt-tools graduated to its own dedicated host (`OpeItcLoc03/meta-yt-tools`). `.common` now holds only yt-tools' done-task archive. Prefer giving a maturing project its own host over piling onto `.common`. -3. **Route there.** Send every `tasks_create` / `knowledge_ingest` to the host's qualified `/` (a dedicated host = `/`; a shared host = e.g. `OpeItcLoc03/common`). On a shared host, namespace entries with a `-` slug prefix. +3. **Route there.** Send every `tasks_create` / `knowledge_ingest` to the host's qualified `/` (a dedicated host = `/meta-`; a shared host = e.g. `OpeItcLoc03/common`). On a shared host, namespace entries with a `-` slug prefix. 4. **Never** write `.tasks/`/`.wiki/` files into the github working tree, and **never** invent a target when resolution is ambiguous (Failure modes below). @@ -56,7 +56,7 @@ Per the `meta-out-of-repo` design: `.tasks/`, `.wiki/`, `.claude/` must not be c When a project graduates to its own dedicated host (or a github project needs one): -1. Create a Gitea repo named after the project (meta-only, `auto_init:false`) via the API with the admin token (`~/.config/projects-mcp/auth.toml`). +1. Create a Gitea repo named **`meta-`** (meta-only, `auto_init:false`) via the API with the admin token (`~/.config/projects-mcp/auth.toml`). Do **not** use the bare `` name — keep it free for a code mirror. 2. Clone it, build canonical `.wiki/` (CLAUDE.md, index.md, log.md, overview.md, raw/, concepts/, entities/, packages/, sources/) + `.tasks/STATUS.md` (emoji legend header). 3. **`git add -f .wiki .tasks`** — the global `core.excludesFile` (`~/.config/git/ignore`) ignores `.wiki/`/`.tasks/`. Existing hosts track them because they were added *before* that ignore existed; a fresh clone needs `-f` or `git add -A` silently stages nothing. This is the one gotcha that will waste a commit if missed. 4. Commit, push. `projects-meta` picks it up on its next sync (it may not be in cache until then — see Failure modes).