mcpField
M
mstack-best-model-for

mstack-best-model-for

github.com/mubedaOther011 installsUpdated today
Repository

About mstack-best-model-for

A model selector for choosing a model and effort level for Claude, Codex, or both, based on a shared reference table. It handles direct questions and calls from other mstack skills, and applies model exclusions and effort caps.

Key features

  1. 01Selects models from a shared table
  2. 02Supports Claude, Codex, or both
  3. 03Matches a task or named tier
  4. 04Applies model exclusions and effort caps
  5. 05Returns settings and a next-step suggestion

Use cases

  1. 01Choosing a model for coding or other tasks
  2. 02Comparing model choices for Claude and Codex
  3. 03Finding an eligible model under constraints

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/mubeda/mstack --skill mstack-best-model-for

After installing, type/mstack-best-model-forin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

LICENSE
THIRD_PARTY_NOTICES.md
evals/capped-tier/
case.yaml
place-files.sh
prompt.md
evals/capped-tier/graders/
01-result-block.md
02-not-fable.md
03-effort-medium.md
04-capped-yes.md
05-next-step.md
06-no-question.md
evals/log-search/
case.yaml
place-files.sh
prompt.md
evals/log-search/graders/
01-model.md
02-effort-setting.md
03-table-date.md
04-next-step.md
05-not-session-model.md
evals/no-model-fits/
case.yaml
place-files.sh
prompt.md
evals/no-model-fits/graders/
01-no-model-fits.md
02-names-limits.md
03-no-model-named.md
04-no-question.md
references/
model-table.md

Details

From the project README

mstack-best-model-for

Answers which model and effort fit a task, for Claude, Codex or both, from one table: references/model-table.md. Every other mstack skill takes its model choices from here, so a change to the table reaches all of them.

RoleClaude CodeCodex
Question toolAskUserQuestiona numbered question in chat, then wait

Two modes

  • User mode: the user invoked the skill. If the task or the vendor is missing, ask for both in one question with your question tool and wait. Do nothing else until the answer arrives. Vendor both is a valid answer.
  • Called mode: another skill loaded this one and said which skill is calling. Ask nothing, ever. Answer every request in the message and end with the result block. A request with no vendor gets a row for each vendor.

A called message gives, per request: a vendor (claude, codex or both), a tier (cheap, standard, most capable) or a task description, and optional limits never: <models> and max effort: <level>.

Pick the row

Read references/model-table.md before you answer. Then, for each request:

  1. A tier named by the caller picks that tier's row. Tier names are exact: never map standard to a task row.
  2. Otherwise take the task row that fits the description best.
  3. Otherwise take "general starting point, or unsure", and write in Reason that it is the default because no row fits.

Where a cell gives two models, take the first and name the second in Reason. Where it gives an effort range, take the lower end and name the higher one in Next step.

Never answer with the model you are running on because it is the session's model. The table decides.

Limits

Apply the caller's limits to the row's choice, in this order:

  1. never: if the chosen model is in the list, walk the vendor's capability order in references/model-table.md downward from it and take the first model not in the list. If none is below it, walk upward. If every model is excluded, the answer is no model fits.
  2. max effort: if the effort is above the limit, lower it to the limit. Levels rise as low, medium, high, xhigh, max.
  3. Mark Capped yes when either step changed the table's choice, else no.

For no model fits, write no model fits in the Model column, leave Effort and How to set empty, and put the limits in Reason. Return no model for that request.

Result block

In both modes, end with this block. Fill Next step in every row with the one action from "When a result falls short" in the table file that fits this row (usually: raise the effort one level, or move one model up).

## mstack-best-model-for result

| Request | Vendor | Model | Effort | How to set | Reason | Next step | Capped | Table date |
|---|---|---|---|---|---|---|---|---|
| <tier or task, as asked> | claude | <model> | <effort> | <the setting from "How to set it"> | <one line> | <one action> | yes/no | <Last verified date> |

How to set gives the exact setting for that vendor: for a Claude subagent the model and effort parameters, for Codex the -m and -c model_reasoning_effort= flags. In user mode, add one line after the block on what the Capped and Next step columns mean when either is not obvious.

Every answer shows the table date. When the date is more than three months old, say in one line that model names may have changed and the user should check the sources listed in the table file.

Comments

Markdown supported