Borrowing it
Nothing to install: this file belongs to r0shi/harborclerk. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/r0shi/harborclerk/main/.claude/skills/model-refresh/SKILL.mdgit clone --depth 1 https://github.com/r0shi/harborclerkWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/r0shi/harborclerk/model-refresh)<a href="https://agentmods.dev/skills/r0shi/harborclerk/model-refresh"><img src="https://agentmods.dev/badge/skills/r0shi/harborclerk/model-refresh/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/r0shi/harborclerk/model-refresh"><img src="https://agentmods.dev/badge/skills/r0shi/harborclerk/model-refresh.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00078 | $0.02161 |
| Opus 5.5 | $0.00031 | $0.00864 |
| Sonnet 5.5 | $0.00016 | $0.00432 |
| Haiku 4.5 | $0.00008 | $0.00216 |
Grade A, and why
model-refresh scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 129 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Model refresh
Three stages with a human gate between each. This skill runs stage 1 end to end and prepares stages 2 and 3; it never changes the registry or runs an eval on its own. All commands run from the repository root.
| Stage | What | Cost | Gate |
|---|---|---|---|
| 1. Research | Facts from the Hub and GitHub, screened and ranked by policy; a dated report | minutes, no spend, read-only | the owner reads the report |
| 2. Implement | Registry, pin and docs changes for the chosen candidates, as a PR | an hour | CI, unprimed review, owner approval |
| 3. Evaluate | The benchmark loop on the mini, within the cloud-spend cap (ADR 0001) | hours of GPU, capped USD | the owner decides promote / keep / retire |
Stage 1: research
- The loop's state is in the reports: each ends with a versioned State
block recording what the run was given, what it examined, what it left out
by name or task, and what it could not settle. With no flags the tool finds the newest
docs/reports/*-model-survey-*.mdand follows it:- the window opens 30 days before that report, because the Hub dates a repo by its creation and vendors publish days after creating (Gemma 3: eleven); what earlier runs examined is skipped, so nothing is ranked twice. A repo made public more than 30 days after it was created is still missed;
- every release listed under May pass later (no trusted GGUF yet, an architecture llama.cpp cannot load yet, a template or context a publisher may fix) or Over the per-vendor cap is examined again however old;
- a vendor it did not watch gets a first-run window of 90 days, so adding
an org to the watchlist surveys that org's recent past.
A first run uses 90 days.
The state is the report in this checkout, not the one on
main. Merge last week's report PR before this week's run and run from a checkout of freshorigin/main. If the followed report is not onorigin/main(its PR is still open, or a closed PR left the file behind) the run still follows it, and its header says so with a ⚠: decide whether that is what you want before publishing. A release that cannot be read for a run, from the window or the carried list, is named in the report and carried to the next run; it is not dropped and not logged as examined. WithHF_TOKENset, a 401 makes the tool check the token once: a rejected token ends the run, a good one leaves the 401 to mean the repo is absent. A re-run after a fix to the policy or a rule replaces the report instead of following it. It repeats that report's inputs exactly (window, carried releases, known vendors), so nothing it found is lost. A report dated today is replaced automatically; on a later day pass--redo. Withdraw the replaced report in the same PR. If the previous report has no state block this tool can read, the run stops;--sinceopens a fresh window and the report says nothing was carried.
- Run it. The cache makes a re-run free for six hours;
HF_TOKEN, if the environment has one, raises the Hub's rate limit and is never stored. A rejected token or a failed listing ends the run with an error; it never produces an empty report. A run makes a few hundred requests, paced under the Hub's limit, so it takes several minutes.
The per-vendor cap defers, it does not drop: what was over the cap is examined by the next run, all of it, so a vendor that publishes dozens of eligible repos at once makes that run longer. It prints the window it chose and the report path. It refuses to overwrite: one file per run. Read the header's Coverage line: what was left out by name, by task or by the per-vendor cap is listed at the end of the report, with a count per vendor, and a ⚠ there is something to act on (a vendor that lists nothing was renamed; a listing that does not reach the window needs a narrower window).RUN=$(date -u +%Y%m%d-%H%M) uv run python -m scripts.model_survey --out docs/reports/ --run-id $RUN \ --json "${TMPDIR:-/tmp}/$RUN.json" --cache "${TMPDIR:-/tmp}/hc-model-survey-cache-$(id -u)" - Read the whole report, then write its Reading section. That section is
the only part a person writes; everything below it is generated. It states:
- the headline: the top candidate and why it ranks there, in one paragraph;
- for each curated tier, the size-matched successor and whether the swap is mechanical (same family and architecture, the pin already loads it) or needs evaluation (new family, new architecture, a llama.cpp upgrade);
- what the curated-set audit found that is simply wrong (a context window below the GGUF's, a stale publisher) and can be fixed without an eval;
- whether the llama.cpp pin blocks anything in the ranking;
- what is carried forward: candidates on the tracking issue (#551) that nobody has evaluated yet. The window only finds what is new, so an open candidate from an earlier survey disappears unless the Reading names it;
- what was not verified. No model is run in this stage: tool-calling behaviour under llama-server, French quality, throughput on the mini and every vendor benchmark are unverified until stage 3, and the Reading says so. Judgement the script cannot make and the Reading must: a dense model decodes at roughly memory-bandwidth / file-size tokens per second, so a dense 27B at 16 GB is several times slower on the mini than a 35B mixture-of-experts with 3B active; a coding, GUI-agent or world model is not a document-research model whatever its name or popularity; a third-party distill is not a vendor release.
- If a ranking looks wrong, fix the policy (
scripts/model_survey/watchlist.yaml) or the rule (screen.py, with a test), not the report, then run again (step 1 explains which window that run gets). A new vendor seen under "Trending outside the watchlist" is added to the watchlist only after its model card has been read; popularity alone is not a reason. A ⚠ about a vendor that lists nothing means the org was renamed: fix the watchlist. - Publish as the machine user, from a scratch worktree, exactly as the
acceptanceskill's "Publish" section does: branch from freshorigin/main, add the one report file (and any policy change), commit asJohn-Doebotwithcommit.gpgsign=false, push through the inline Keychain credential helper, open the PR with--body-file. The body repeats the Reading's headline and lists the mechanical fixes and the evaluation candidates separately. - Comment on the standing tracking issue (#551) with the headline and a link to the report, so the queue and the evidence stay together.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago Changed 1adf9ea49f0d
- 1mo ago First seen · 129 lines · 78 tokens per session scan A 2032d43aa4ca
model-refresh is a skill published in the GitHub repository r0shi/harborclerk (3 stars, last pushed 2d ago), licensed MIT. It adds 78 tokens to every session and 2,161 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-19.
model-refresh compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| model-refreshr0shi/harborclerk | Skill | 3 | 2d ago | MIT | A | 78 | Claude Code |
| memobasemaximskorohod/memobase | Skill | 22 | 17d ago | MIT | A | 25 | Claude Code, Codex |
| run-llmsav/harbor | Skill | 3.3k | 6d ago | Apache-2.0 | A | 114 | Claude Code, Codex |
| harborav/harbor | Skill | 3.3k | 6d ago | Apache-2.0 | A | 114 | Claude Code |
| rag-knowledgevstorm-co/full-stack-ai-agent-template | Skill | 2.0k | 7d ago | MIT | A | 76 | Claude Code |
| gnogmickel/gno | Skill | 117 | 4d ago | MIT | A | 86 | Claude Code |
| difyznlgis/opengis-skills | Skill | 76 | 10d ago | MIT | A | 115 | Claude Code, Codex |