Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add receptron/mulmoterminal --skill mulmoterminal-modelgit clone --depth 1 https://github.com/receptron/mulmoterminalWrote 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/receptron/mulmoterminal/mulmoterminal-model)<a href="https://agentmods.dev/skills/receptron/mulmoterminal/mulmoterminal-model"><img src="https://agentmods.dev/badge/skills/receptron/mulmoterminal/mulmoterminal-model/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/receptron/mulmoterminal/mulmoterminal-model"><img src="https://agentmods.dev/badge/skills/receptron/mulmoterminal/mulmoterminal-model.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
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.00302 | $0.03706 |
| Opus 5 | $0.00151 | $0.01853 |
| Sonnet 5 | $0.00060 | $0.00741 |
| Haiku 4.5 | $0.00030 | $0.00371 |
Grade A, and why
mulmoterminal-model 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 12d 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 — 229 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Run on another model
Three keys, three jobs:
~/.mulmoterminal/config.json→providers— register a backend once. No Settings UI.<project>/.mulmoterminal.json→provider/model— what this project launches on. Both are defaults; the launch form can override them for a single session.~/.mulmoterminal/config.json→customAgents— the user's own COMMAND for starting Claude Code, offered in the Agent Picker. For when the model is reached by running something else (ollama launch claude …, a wrapper script, a second Claude Code install) rather than by an HTTP endpoint. No Settings UI.
None is needed to use Anthropic's default. Only do this when the user asked for another model.
Which one. A backend that speaks the Anthropic API over HTTP is a providers entry — that is
the smaller change and it composes with the model picker. Reach for customAgents only when the
thing that runs the model is a command, and the user cannot express it as a base URL and a
token.
Registering a backend
{
"providers": [
{
"id": "openrouter",
"label": "OpenRouter",
"baseUrl": "https://openrouter.ai/api",
"tokenEnv": "OPENROUTER_API_KEY",
"maxOutputTokens": 16000
}
]
}
Each rule below was measured against a working setup, and each breaks the session in a way that is hard to diagnose from inside it:
baseUrlmust not end in/v1. Claude Code appends/v1/messagesitself, so a trailing/v1produces/v1/v1/messagesand every request 404s.- Never write the API key into a config or skill file.
tokenEnvis the name of an environment variable, not the value: the key reaches the server through its environment. Put it in the shell that starts the server, or in a.envin the directory it is started from — and if you write a.env, check it is gitignored before you do. If the user pastes a key at you, tell them where it goes; do not store it anywhere yourself. - Keep
maxOutputTokensat 16000 or above. A thinking model given less spends the whole budget thinking and returns empty visible text, which reads as a hung session. modelsis REQUIRED under anyidother thanopenrouter. Every preset incommon/modelPresets.tscarriesprovider: "openrouter", and they are matched by that id — so a backend registered asdeepseek,moonshotor a company gateway starts with no models at all, and a provider with no models is not offered in the picker (it cannot start a session either: naming a provider without a model is refused at spawn). Ask which model ids the user wants to run and list them.- Under the id
openrouter, do not write amodelsarray unless the user names a model outside the built-in list — every preset appears in the picker on its own, with its measured pass rate, andmodelsthere exists only to ADD ids nobody has measured. - A model id is letters, digits and
. _ : / - ~, optionally ending in[1m]. Anything else inmodels— an object like{"id": "…"}, a value with a space, amodelsthat is not an array — is dropped when the config loads, leaving a backend that lists models in the file and offers none in the picker. The server log names what it dropped; check it after writing. [1m]is Claude Code's extended-context syntax, and the only bracketed suffix there is. It goes toclaude --modelverbatim — Claude Code strips it before the id reaches the backend, so nothing on this side interprets it. Valid on an alias or a full name (opus[1m],opusplan[1m],claude-opus-5[1m]), refused anywhere but the end, and refused in invented forms like[2m]or[200k]. A provideridmay not carry it. Only suggest it when the user asks for the 1M window: on Opus 5 / Sonnet 5 the Anthropic API already runs 1M, so it changes nothing there — the models it decides for are Opus 4.6 / 4.8 and Sonnet 4.6, and a gateway serving Sonnet 5. https://code.claude.com/docs/en/model-config#extended-context- This is a partial
POST /api/configmerge — write onlyproviders. Send the array complete (existing entries included): it replaces rather than appends. - The server reads the environment at startup: after adding a key, it has to be restarted.
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.
- 12d ago First seen · 229 lines · 302 tokens per session scan A dde8d4ef986c
mulmoterminal-model is a skill published in the GitHub repository receptron/mulmoterminal (212 stars, last pushed today), licensed MIT. It adds 302 tokens to every session and 3,706 once invoked, about $0.0015 per session on Opus 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-08-30.
Other skills, from other repositories
delegating-to-otto
Drive Astronomer's Otto agent (astro otto) as a delegated sub-agent for Airflow, dbt, and data-engineering work. Use when the user says 'use Otto', 'ask Otto', 'delegate to Otto', or 'run this through Otto'. Also offer Otto for Airflow 2→3 migrations even when not named. Covers headless invocation, session continuity…
dag-factory
Author Airflow DAGs from dag-factory YAML. Use when creating or editing YAML DAG configs, loaders, callbacks, custom operators in YAML, dynamic mapping, datasets, or validating dag-factory files. Covers both map-style tasks (taskid as YAML key) used by in-repo plugins and the PyPI dag-factory v1 list format. Not for…
eval-integrity
Audit an LLM evaluation or benchmark repo for integrity and credibility practices. Use when asked to "audit my benchmark," "is my eval trustworthy," "check my leaderboard for contamination," "review this benchmark's methodology," or "what would a reviewer attack in my eval." Greps the target repo for evidence across…
ronald
Invoke when comparing models or prompts and you want evidence, not a vibe check — choosing a model for a task (opus vs sonnet vs haiku; Claude vs Codex vs Gemini), A/B testing prompt variants, running a model/prompt bake-off or eval, or confirming a prompt change actually helped rather than got lucky. Runs a…
mle-workflow
Production machine-learning engineering workflow for data contracts, reproducible training, model evaluation, deployment, monitoring, and rollback. Use when building, reviewing, or hardening ML systems beyond one-off notebooks.
architecture-design
Use only when creating new registrable ML components that require Factory or Registry patterns.