$npx -y skills add Raishin/vanguard-frontier-agentic --skill model-registry-refreshRe-verify and extend catalog/model-registry.json — the fail-closed model-name and reasoning-effort matrix scripts/model-policy.mjs validates against — via delegated Context7-backed research, orchestrator-owned registry edits, and the full validation chain; use when a policy check
| 1 | # Model Registry Refresh |
| 2 | |
| 3 | ## Doctrine |
| 4 | |
| 5 | `catalog/model-registry.json` is the single source of truth `scripts/model-policy.mjs` fails closed |
| 6 | against. Every model name and reasoning-effort value it accepts must trace to official documentation |
| 7 | with a citation — never to memory, never to a plausible-sounding guess at a slug. This skill is the |
| 8 | repeatable workflow for keeping that registry accurate without letting research cost dominate the |
| 9 | orchestrator's context. |
| 10 | |
| 11 | ## When to run |
| 12 | |
| 13 | - `npm run model-policy:check` fails with an error naming a model "not in the verified model |
| 14 | registry" — the registry is missing a model the policy (or an operator) wants to use. |
| 15 | - A provider (OpenAI, Anthropic, Cursor) ships new models or retires old ones and the catalog |
| 16 | needs to reflect current reality. |
| 17 | - Quarterly staleness check — `last_refreshed` in `catalog/model-registry.json` is more than |
| 18 | ~3 months old. |
| 19 | |
| 20 | ## Step 1 — delegate research to Haiku Explore agents |
| 21 | |
| 22 | Fan out one Haiku `Explore` agent per harness (or per namespace, for codex) using the Context7 MCP |
| 23 | tools (`mcp__Context7__resolve-library-id` then `mcp__Context7__query-docs`) plus official docs |
| 24 | URLs already cited in the registry. Each research task must: |
| 25 | |
| 26 | - Ask for **exact slugs/IDs**, not families — `gpt-5.5` not "the gpt-5 line". |
| 27 | - Ask for **reasoning-effort support per model**, not per harness — some models in a family |
| 28 | predate newer effort levels (see `o1`/`o3`/`o4-mini` lacking `none`/`minimal`/`xhigh` in the |
| 29 | current registry). |
| 30 | - Ask for **failure-mode evidence** — what error shape a bad model name or unsupported effort |
| 31 | actually produces (HTTP status, error code/type), so `docs/model-policy-matrix.md`'s failure |
| 32 | table stays accurate. |
| 33 | - **Require a source citation per claim** — a Context7 library ID + section, or an official docs |
| 34 | URL. A finding without one is not actionable. |
| 35 | - **Require an explicit `UNVERIFIED` flag** on anything the agent could not confirm from a primary |
| 36 | source (e.g. inferred from a changelog mention, or contradicted between two docs). Do not let |
| 37 | an agent silently round an uncertain claim into a confident one. |
| 38 | |
| 39 | Example prompt template (adapt per harness/namespace): |
| 40 | |
| 41 | ``` |
| 42 | Research current [codex OpenAI models | codex Ollama routing | codex OpenRouter routing | |
| 43 | claude-code subagent model/effort fields | cursor subagent model field] using Context7 |
| 44 | (resolve-library-id then query-docs) and official docs. Report, for each model/field: |
| 45 | exact slug or ID, supported reasoning-effort values (if any), and the error shape observed |
| 46 | or documented for an invalid value (HTTP status + error code/type). Cite the Context7 library |
| 47 | ID + section or the exact docs URL for every claim. If you cannot confirm a claim from a |
| 48 | primary source, prefix it UNVERIFIED and say why. Do not guess slugs from training data. |
| 49 | ``` |
| 50 | |
| 51 | Run these Explore agents in parallel; each is scoped to one harness or namespace so the |
| 52 | citations stay traceable to a narrow question. |
| 53 | |
| 54 | ## Step 2 — orchestrator updates the registry |
| 55 | |
| 56 | The orchestrator, not a delegate, edits `catalog/model-registry.json`: |
| 57 | |
| 58 | - Add new models with `last_verified` (today's date) and a `source` where the schema allows it; |
| 59 | update the relevant namespace's `sources` array if a new canonical URL was used. |
| 60 | - Bump the registry-level `last_refreshed` date. |
| 61 | - **Never remove a model still referenced by `catalog/model-policy.json`** without first |
| 62 | migrating the policy rule(s) that reference it to a replacement model — check with |
| 63 | `npm run model-policy:report` before deleting anything. |
| 64 | - Treat every `UNVERIFIED`-flagged finding from Step 1 as a blocker, not a data point to |
| 65 | merge as-is — either verify it directly or leave the registry unchanged for that item. |
| 66 | - Validate the edit against `schemas/model-registry.schema.json` structurally (required fields, |
| 67 | anchored `match` patterns, `last_verified` date format) before moving on. |
| 68 | |
| 69 | ## Step 3 — sync the human-readable matrix |
| 70 | |
| 71 | Delegate to a Sonnet writer subagent to update `docs/model-policy-matrix.md` so its tables match |
| 72 | the registry exactly (namespace tables, verified-model tables, failure modes, enforcement |
| 73 | boundaries). Give the delegate the exact diff you made to `catalog/model-registry.json` in Step 2 |
| 74 | and instruct it to touch only `docs/model-policy-matrix.md` — no other file, no commits. |
| 75 | |
| 76 | ## Step 4 — verify |
| 77 | |
| 78 | Run in order, orchestrator-owned: |
| 79 | |
| 80 | ```bash |
| 81 | npm run model-policy:check # registry schema + policy resolves against it |
| 82 | npm run validate # full gate suite |
| 83 | npm run asset-integrity:writ |