Resolve
alexziskind1/model-shelf
Always resolve Hugging Face models via model-shelf before any download.
Check model compatibility with xinfer before loading. An agent skill from guoqingbao/xinfer.
$ npx skills add guoqingbao/xinfer --skill check-model -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install guoqingbao/xinfer check-model --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/guoqingbao/xinfer.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.cursor/skills/check-model .claude/skills/check-model && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "check-model" agent skill from https://github.com/guoqingbao/xinfer/tree/main/.cursor/skills/check-model into .claude/skills/check-model/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "check-model", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/guoqingbao/xinfer/tree/main/.cursor/skills/check-modelType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add guoqingbao/xinfer --skill check-model -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install guoqingbao/xinfer check-model --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/guoqingbao/xinfer.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.cursor/skills/check-model .agents/skills/check-model && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "check-model" agent skill from https://github.com/guoqingbao/xinfer/tree/main/.cursor/skills/check-model into .agents/skills/check-model/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "check-model", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add guoqingbao/xinfer --skill check-model -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install guoqingbao/xinfer check-model --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/guoqingbao/xinfer.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.cursor/skills/check-model .cursor/skills/check-model && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "check-model" agent skill from https://github.com/guoqingbao/xinfer/tree/main/.cursor/skills/check-model into .cursor/skills/check-model/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "check-model", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/guoqingbao/xinfer.git --path .cursor/skills/check-model--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add guoqingbao/xinfer --skill check-model -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install guoqingbao/xinfer check-model --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/guoqingbao/xinfer.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.cursor/skills/check-model .gemini/skills/check-model && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "check-model" agent skill from https://github.com/guoqingbao/xinfer/tree/main/.cursor/skills/check-model into .gemini/skills/check-model/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "check-model", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install guoqingbao/xinfer check-modelInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add guoqingbao/xinfer --skill check-model -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/guoqingbao/xinfer.git skills-src && mkdir -p .github/skills && cp -r skills-src/.cursor/skills/check-model .github/skills/check-model && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "check-model" agent skill from https://github.com/guoqingbao/xinfer/tree/main/.cursor/skills/check-model into .github/skills/check-model/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "check-model", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add guoqingbao/xinfer --skill check-model -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install guoqingbao/xinfer check-model --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/guoqingbao/xinfer.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.cursor/skills/check-model .opencode/skills/check-model && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "check-model" agent skill from https://github.com/guoqingbao/xinfer/tree/main/.cursor/skills/check-model into .opencode/skills/check-model/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "check-model", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
check-modelCheck model compatibility with xinfer before loading. An agent skill from guoqingbao/xinfer.
Check Model is an agent skill from guoqingbao/xinfer. Check model compatibility with xinfer before loading. Validates config.json, weight tensor shapes and naming, quantization format correctness, and multi-rank (tensor-parallel) divisibility. Use when the user asks to check, validate, audit, or verify a model will load correctly — from a HuggingFace URL/config, local path, or pasted tensor info.
Its SKILL.md is about 3.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in AI & LLM Engineering, covering LLM inference and serving and Model hubs and datasets. It works with Hugging Face, Qwen, vLLM and Rust. The repository describes itself as: Blazing-fast LLM inference in pure Rust. No PyTorch and Python runtime. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit b88c153. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are python).
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
huggingface.coFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Check Model loads about 3.8k tokens when it runs. Until then it costs about 89 tokens; SKILL.md has 1,342 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from guoqingbao/xinfer at commit b88c153, republished under its MIT licence (© guoqingbao). 1,342 words, ~3,776 tokens.
.claude/skills/check-model/SKILL.md (or your agent's skills folder).Collect model config and tensor info. Accept any of:
| Input | How to use |
|---|---|
| HuggingFace config URL | Fetch config.json from the URL (e.g. https://huggingface.co/<id>/blob/main/config.json) |
| HuggingFace model ID | Fetch config from https://huggingface.co/<id>/raw/main/config.json |
| Local model path | Read <path>/config.json directly |
| Pasted config JSON | Parse inline |
| Tensor info | User pastes tensor names/shapes/dtypes from HuggingFace safetensor viewer or provides local weights |
If tensor info is missing, ask the user to provide it. They can get it by clicking any .safetensors file in the HuggingFace model page and copying the tensor tree.
For local models, extract tensor info with:
import json, struct, sys, glob, os
path = sys.argv[1]
for sf in sorted(glob.glob(os.path.join(path, "*.safetensors"))):
with open(sf, "rb") as f:
n = struct.unpack("<Q", f.read(8))[0]
header = json.loads(f.read(n))
for k, v in sorted(header.items()):
if k != "__metadata__":
print(f"{k}\t{v.get('shape')}\t{v.get('dtype')}")Extract from config.json:
| Field | Required | Notes |
|---|---|---|
architectures | Yes | Determines model type and loader path |
hidden_size | Yes | Or nested under text_config for multimodal |
num_attention_heads | Yes | Q heads for full attention |
num_key_value_heads | Yes | KV heads for GQA |
head_dim | If available | Defaults to hidden_size / num_attention_heads |
num_hidden_layers | Yes | Total layer count |
vocab_size | Yes | Embedding table size |
| Field | When present | Notes |
|---|---|---|
layer_types | Qwen3.5/Qwen3Next | Array of "linear_attention" / "full_attention" |
linear_num_key_heads | Hybrid models | GDN K heads (may differ from V heads) |
linear_num_value_heads | Hybrid models | GDN V heads |
linear_key_head_dim | Hybrid models | Per-head K dimension |
linear_value_head_dim | Hybrid models | Per-head V dimension |
linear_conv_kernel_dim | Hybrid models | Conv1d kernel size (typically 4) |
full_attention_interval | Hybrid models | How often full attention appears |
| Field | When present | Notes |
|---|---|---|
num_experts | MoE models | Expert count per layer |
num_experts_per_tok | MoE models | Top-K routing |
moe_intermediate_size | MoE models | Per-expert FFN hidden dim |
shared_expert_intermediate_size | Some MoE | Shared expert dim |
| Field | Notes |
|---|---|
quantization_config.quant_method | "modelopt", "compressed-tensors", "fp8", "gptq", "awq" |
quantization_config.quant_algo | For modelopt: "NVFP4", "FP4" |
quantization_config.format | For compressed-tensors: "nvfp4-pack-quantized", "mxfp4-pack-quantized" |
quantization_config.config_groups | Weight/activation quant specs |
quantization_config.ignore | Layers excluded from quantization (stored as BF16/FP16) |
quantization_config.weight_block_size | FP8 block dimensions (e.g. [128, 128]) |
Apply the same normalization as QuantConfig::normalize_compressed_tensors():
Raw quant_method | quant_algo / format | Normalized |
|---|---|---|
modelopt | NVFP4 or FP4 | nvfp4 |
modelopt | (detect from config_groups) | nvfp4 |
compressed-tensors | format contains nvfp4 | nvfp4 |
compressed-tensors | format contains mxfp4 | mxfp4 |
fp8 | - | fp8 |
gptq | - | gptq |
awq | - | awq |
For each layer type, check that tensor names and dtypes match the expected format.
Parse the ignore list from quantization_config. Layers in the ignore list should have BF16/FP16 weights (weight tensor only). Layers NOT in the ignore list should have quantized tensors.
The ignore list supports:
"model.language_model.layers.0.linear_attn.in_proj_qkv""re:.*linear_attn.*""model.visual*", "mtp.layers.0*"Expected tensors per linear layer:
weight — dtype BF16 or F16, shape [out_dim, in_dim]bias (optional) — dtype BF16 or F16Check: No extra scale/packed tensors should be present.
Expected tensors per linear layer:
weight — dtype U8 (F8_E4M3), shape [out_dim, in_dim]weight_scale or weight_scale_inv — dtype F32, shape [out_dim/by, in_dim/bx] where [by, bx] = weight_block_size (default [128, 128])bias (optional)Check: weight_block_size must have exactly 2 elements. Scale dimensions must match ceil(out_dim/by) x ceil(in_dim/bx).
Expected tensors per quantized linear layer:
weight — dtype U8, shape [out_dim, in_dim/2] (packed FP4, 2 values per byte)weight_scale — dtype F8_E4M3 (U8), shape [out_dim, in_dim/16] (group_size=16)weight_scale_2 — dtype F32, scalar (global weight scale, direct multiplier)input_scale — dtype F32, scalar (activation scale)Check: weight shape dim1 must be exactly in_dim/2. Scale dim1 must be in_dim/16.
Expected tensors per quantized linear layer:
weight_packed — dtype U8, shape [out_dim, in_dim/2]weight_scale — dtype F8_E4M3 (U8), shape [out_dim, in_dim/16]weight_global_scale — dtype F32, scalar or [1] (divisor, inverted at load time)input_global_scale — dtype F32, scalar or [1] (divisor, inverted at load time)Check: Same shape rules as ModelOpt, but different tensor names.
Expected tensors per quantized linear layer:
weight_packed or blocks — dtype U8, shape [out_dim, in_dim/2]weight_scale or scales — dtype U8 (F8_E8M0), shape [out_dim, in_dim/32] (group_size=32)Check: Scale dim1 must be in_dim/32.
GGUF models are self-contained (no config.json). Weight tensor names use blk.{i} prefix mapped to model.layers.{i}. Quantization is per-tensor via GGML dtypes (Q4_K, Q6_K, Q8_0, etc.).
Check: Not applicable for safetensors checks. GGUF has its own loader path via QLinear / QMatMul.
The xinfer loaders try tensor names in priority order. Verify the model's tensors match at least one:
| Component | Tensor name priority (first match wins) |
|---|---|
| NVFP4/MXFP4 packed weights | weight_packed > weight > blocks |
| NVFP4/MXFP4 scales | weight_scale > scales |
| NVFP4 global scale | weight_global_scale (inverted) > weight_scale_2 (direct) |
| NVFP4 input scale | input_scale (direct) > input_global_scale (inverted) |
| FP8 scale | weight_scale > weight_scale_inv |
Flag any mismatch where the model uses a tensor name not in the priority list.
For Qwen3.5/Qwen3Next models with quantization config, the GatedDeltaNet layer has its own quantization detection (is_weight_quantized) that checks each linear_attn sublayer independently:
| quant_method | Detection logic |
|---|---|
fp8 | Has weight_scale or weight_scale_inv |
mxfp4 | Has weight_packed or blocks |
nvfp4 | (weight_packed or blocks) AND (weight_scale or scales) OR (weight_scale_2 or input_scale) AND (weight_scale or scales) |
If a linear_attn sublayer is in the ignore list and has only BF16 weight, the detection returns false, and the layer loads as unquantized. Verify this matches the tensor info.
For each candidate world_size in [1, 2, 4, 8], check all TP-sharded dimensions.
| Component | Global dim | Shard dim | Divisibility requirement |
|---|---|---|---|
| Q projection | num_attention_heads * head_dim | dim 0 | num_attention_heads % world_size == 0 |
| K/V projection | num_kv_heads * head_dim | dim 0 | num_kv_heads >= world_size: num_kv_heads % world_size == 0; num_kv_heads < world_size: world_size % num_kv_heads == 0 (replicated KV mode) |
| O projection | num_attention_heads * head_dim | dim 1 | Same as Q |
For quantized (FP8/NVFP4/MXFP4) Q/K/V:
out_dim / world_size must be cleanly divisibleweight_block_size[0] (default 128)| Component | Global dim | Requirement |
|---|---|---|
num_v_heads | linear_num_value_heads | % world_size == 0 |
num_k_heads | linear_num_key_heads | % world_size == 0 |
in_proj_qkv (merged) | Q=key_dim_global, K=key_dim_global, V=value_dim_global | Each chunk % world_size == 0 |
in_proj_z | value_dim_global | % world_size == 0 |
in_proj_b/a | num_v_heads_global | % world_size == 0 |
A_log / dt_bias | num_v_heads_global | % world_size == 0 |
conv1d (Q block) | key_dim_global | key_dim / world_size channels per rank |
conv1d (V block) | value_dim_global | % world_size == 0 |
out_proj | value_dim_global | Row linear dim 1 % world_size == 0 |
Where:
key_dim_global = linear_num_key_heads * linear_key_head_dimvalue_dim_global = linear_num_value_heads * linear_value_head_dim| Component | Global dim | Shard dim | Requirement |
|---|---|---|---|
| gate/up_proj | moe_intermediate_size | dim 0 | % world_size == 0 |
| down_proj | moe_intermediate_size | dim 1 | % world_size == 0 |
For NVFP4/MXFP4 MoE:
moe_intermediate_size / world_size per rank(moe_intermediate_size / pack_factor) / world_size per rankSame rules as standard MLP with shared_expert_intermediate_size:
shared_expert_intermediate_size % world_size == 0shared_expert_intermediate_size % world_size == 0For NVFP4 (group_size=16): after sharding, verify per_rank_in_dim % 16 == 0 for dim-1 shards.
For MXFP4 (group_size=32): verify per_rank_in_dim % 32 == 0 for dim-1 shards.
For FP8: verify per-rank boundaries align to weight_block_size.
embed_tokens: replicated (not sharded), no divisibility constraint.lm_head: replicated, no constraint. But if tie_word_embeddings is true, verify lm_head doesn't exist as a separate tensor (should reuse embed_tokens.weight).Present results in a structured format:
Architecture: Qwen3_5MoeForConditionalGeneration
Model Type: qwen3_5_moe (Hybrid MoE with linear attention)
Quantization: nvfp4 (compressed-tensors format)
Layers: 48 (36 linear_attention + 12 full_attention)
Hidden size: 3072
Full attention: 32 Q heads, 2 KV heads, head_dim=256
Linear attention: 16 K heads, 64 V heads, head_dim=128
MoE: 256 experts, top-8, intermediate=1024
Shared expert: intermediate=1024[OK] Linear attention layers (BF16, in ignore list)
[OK] Full attention layers (NVFP4 compressed-tensors: weight_packed + weight_scale + weight_global_scale)
[OK] MoE experts (NVFP4 compressed-tensors: per-expert weight_packed)
[OK] Shared expert MLP (NVFP4 compressed-tensors: weight_packed)
[WARN] lm_head: in ignore list, stored as BF16| Component | 1 GPU | 2 GPUs | 4 GPUs | 8 GPUs |
|-----------|-------|--------|--------|--------|
| Full attn Q heads (32) | OK | 16 | 8 | 4 |
| Full attn KV heads (2) | OK | 1 | repl(2) | repl(4) |
| GDN K heads (16) | OK | 8 | 4 | 2 |
| GDN V heads (64) | OK | 32 | 16 | 8 |
| MoE inter (1024) | OK | 512 | 256 | 128 |
| Overall | OK | OK | OK | OK |Flag any problems:
[ERROR] — Will fail to load (missing tensors, wrong names, indivisible dims)[WARN] — May cause issues (unusual format, edge case)[INFO] — Informational (features detected, fallback paths)| Model source | Packed weight name | xinfer loader support |
|---|---|---|
| ModelOpt NVFP4 | weight (U8) | Single-GPU: OK. Multi-GPU merged chunks: requires weight fallback in load_merged_chunks |
| Compressed-tensors NVFP4 | weight_packed | OK everywhere |
| Legacy MXFP4/NVFP4 | blocks | OK (final fallback) |
The in_proj_qkv tensor requires special merged-chunk loading for multi-GPU:
MergedParallelColumnLinear::load_merged_chunks splits Q, K, V independentlyWhen num_kv_heads < world_size:
kv_head_shard uses replicated mode: ranks_per_kv_head = world_size / num_kv_headsranks_per_kv_head consecutive ranksworld_size % num_kv_heads == 0| File | Relevance |
|---|---|
src/models/layers/distributed.rs | TP column/row linear, load_merged_chunks, kv_head_shard |
src/models/layers/linear.rs | LnFp8, LnNvfp4, LnMxfp4 loaders, tensor name resolution |
src/models/layers/deltanet.rs | GatedDeltaNet loading, is_weight_quantized, projection sharding |
src/models/layers/attention.rs | Full attention QKV loading, packed QKV for FP8 |
src/models/layers/moe.rs | FusedMoeNvfp4, FusedMoeMxfp4, FusedMoeFp8 expert loading |
src/utils/config.rs | QuantConfig, normalize_compressed_tensors, should_skip_module |
© guoqingbao, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .cursor/skills/check-model of guoqingbao/xinfer.
Open the folder on GitHubat commit b88c153
Check Model next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Check Model this skillguoqingbao/xinfer | 334 | — | ~3.8k | Automated safety check: Pass | MIT | |
| Resolvealexziskind1/model-shelf | 130 | — | ~792 | Automated safety check: Pass | MIT | |
| SageMaker Serving Image Selectionhuggingface/skills | 11k | 1 repos | ~4.6k | Automated safety check: Pass | Apache-2.0 | |
| Hugging Face Local Model Evalshuggingface/skills | 11k | 2 repos | ~1.6k | Automated safety check: Pass | Apache-2.0 | |
| Qwen Mtp GgufR6410418/Jackrong-llm-finetuning-guide | 1.7k | — | ~1.7k | Automated safety check: Pass | MIT | |
| Aqua Model Lifecycleoracle/accelerated-data-science | 125 | — | ~1.4k | Automated safety check: Pass | UPL-1.0 |
alexziskind1/model-shelf
Always resolve Hugging Face models via model-shelf before any download.
huggingface/skills
Chooses the right serving container and current image URI for deploying a Hugging Face model to a SageMaker endpoint, preferring Hugging Face images over generic ones.
huggingface/skills
Runs evaluations of Hugging Face Hub models on local hardware with inspect-ai or lighteval, and helps choose between vLLM, Transformers and accelerate backends.
R6410418/Jackrong-llm-finetuning-guide
Complete agent-ready workflow for Qwen-family MTP or nextn GGUF conversion and release.
oracle/accelerated-data-science
Register, list, get, and manage LLM models in OCI AI Quick Actions (AQUA) using the ADS SDK.
NVIDIA-AI-Blueprints/video-search-and-summarization
A skill your agent uses when adding, debugging, or validating a bring-your-own VLM in VSS RT-VLM, including custom Hugging Face or NGC checkpoints, vLLM adapters or plugins, model shims, and…
guoqingbao/xinfer
Adapt and port new LLM model architectures to this xinfer project.
guoqingbao/xinfer
Test LLM models served by xinfer for correctness, output quality, and performance.
Works with
Categories
Check model compatibility with xinfer before loading. An agent skill from guoqingbao/xinfer. Check Model is an agent skill from guoqingbao/xinfer. Check model compatibility with xinfer before loading.
Check Model fits situations like: the user asks to check; verify a model will load correctly — from a HuggingFace URL/config; pasted tensor info.
Run `npx skills add guoqingbao/xinfer --skill check-model -a claude-code`. Or copy the skill folder (.cursor/skills/check-model in guoqingbao/xinfer) into .claude/skills/check-model in your project. Claude Code loads it when a task matches its description.
Run `npx skills add guoqingbao/xinfer --skill check-model -a codex`. Or copy the skill folder (.cursor/skills/check-model in guoqingbao/xinfer) into .agents/skills/check-model in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add guoqingbao/xinfer --skill check-model -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/check-model, .gemini/skills/check-model, .github/skills/check-model and .opencode/skills/check-model in your project.
SKILL.md names no scripts, command-line tools or credentials: Check Model is instructions for the agent only. Our summary lists: Python 3.
SKILL.md names 1 domain. In commands or code: huggingface.co; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Check Model is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Check Model: Resolve (alexziskind1/model-shelf, 130 stars), SageMaker Serving Image Selection (huggingface/skills, 11k stars), Hugging Face Local Model Evals (huggingface/skills, 11k stars) and Qwen Mtp Gguf (R6410418/Jackrong-llm-finetuning-guide, 1.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
guoqingbao (a GitHub user) maintains it in guoqingbao/xinfer, which has 334 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on September 9, 2026.
Source: guoqingbao/xinfer on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.