소스 정보
- 저장소
- xybrid-ai/xybrid
- 최근 소스 활동
- 2026년 8월 10일 15:20
- 감지된 SKILL.md 언어
- 영어
- 스타
- 433
- 포크
- 47
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/xybrid-ai/xybrid --skill xybrid-init명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | xybrid-init |
| description | Generate model metadata for an ML model so it works with xybrid. |
Generate a model_metadata.json for any ML model so it works with xybrid.
The user may provide a HuggingFace repo, a local directory, or nothing (in which case ask).
Input: $ARGUMENTS (optional — HuggingFace repo ID, URL, or local path)
If $ARGUMENTS is provided, use it. Otherwise ask:
What model do you want to set up?
- Paste a HuggingFace repo (e.g.
hexgrad/Kokoro-82M-v1.0-ONNX)- Or a local directory path (e.g.
./my-model/)
Detect the source type:
huggingface.co/ or matches org/repo pattern → HuggingFaceFetch these three resources (use WebFetch for each):
https://huggingface.co/{repo}/raw/main/README.mdhttps://huggingface.co/api/models/{repo} (look at the siblings array for file names and sizes)https://huggingface.co/{repo}/raw/main/config.jsonAlso check for these files (fetch if they exist in the file listing):
tokenizer_config.jsontokenizer.jsongeneration_config.jsonREADME.md, config.json, tokenizer_config.json if present.onnx file, inspect it:
python3 -c "import onnx; m = onnx.load('MODEL.onnx'); print('Inputs:', [(i.name, [d.dim_value for d in i.type.tensor_type.shape.dim]) for i in m.graph.input]); print('Outputs:', [(o.name, [d.dim_value for d in o.type.tensor_type.shape.dim]) for o in m.graph.output])"
Using ALL the gathered context (model card, file list, config, ONNX inputs/outputs), generate a valid model_metadata.json.
Use the model card description, file extensions, and config to determine the model type:
File-based detection:
.gguf file → LLM (Gguf template)ggml-*.bin, or a .bin whose model card says whisper.cpp / GGML) → ASR (GgmlWhisper template) — the default ASR path.safetensors + whisper architecture → ASR (SafeTensors template, Candle runtime) — opt-in only, needs --features candle; prefer the GGML bundle above.onnx file → continue to task detection below.mlmodel / .mlpackage → CoreML template.tflite → TfLite templateTask detection (from model card + config):
The model_metadata.json must conform to this exact schema:
{
"model_id": "string (required) — kebab-case identifier",
"version": "string (required) — model version",
"description": "string (optional) — human-readable description",
"execution_template": { "type": "...", ... },
"preprocessing": [ ... ],
"postprocessing": [ ... ],
"files": [ "list of all required files" ],
"metadata": { "task": "...", ... },
"voices": { "... (TTS only)" }
}
Common optional metadata fields:
tool_calling (boolean, LLMs only): advisory declaration that xybrid's local tool calling works end-to-end for this model — the template accepts a tools context AND the model emits a call format xybrid parses (currently LFM2-family pythonic and gemma-4-family call: notation). Declare true only for those verified families; omit when unknown (never infer from architecture); a model whose template renders tools but whose emissions xybrid cannot parse must NOT declare true — it would produce silent no-call responses.Choose ONE:
// ONNX model
{ "type": "Onnx", "model_file": "model.onnx" }
// GGML Whisper (whisper.cpp — the default ASR path, feature `asr-whispercpp`)
// `language`: omit or null to auto-detect. `audio_ctx`: 0 = no encoder
// truncation (the safe default — truncating is the biggest streaming speed
// lever but too much of it makes the decoder loop, so opt in per model after
// a quality check). `translate`: true translates to English instead of
// transcribing in the source language.
{ "type": "GgmlWhisper", "model_file": "model.bin", "language": "en", "audio_ctx": 0, "translate": false }
// SafeTensors (Candle runtime — Whisper only; opt-in `candle` feature, in no platform preset)
{ "type": "SafeTensors", "model_file": "model.safetensors", "architecture":
Choose the appropriate chain based on task:
TTS (text-to-speech):
[{ "type": "Phonemize", "tokens_file": "tokens.txt", "backend": "MisakiDictionary", "add_padding": true, "normalize_text": true }]
Backends: MisakiDictionary (default, pure Rust), EspeakNG (multi-language, needs system install), CmuDictionary (legacy), OpenPhonemizer (hybrid dictionary + neural)
ASR (speech recognition) with ONNX:
[{ "type": "AudioDecode", "sample_rate": 16000, "channels": 1 }]
ASR with Whisper SafeTensors: empty [] (Candle handles internally)
Text embedding / NLP:
[{ "type": "Tokenize", "vocab_file": "tokenizer.json", "tokenizer_type": "WordPiece", "max_length": 512 }]
Tokenizer types: WordPiece (BERT), BPE (GPT), SentencePiece (T5)
Image classification / vision:
[
{ "type": "Resize", "width": 224, "height": 224 },
{ "type": "Normalize", "mean": [0.485, 0.456, 0.406], "std": [0.229, 0.224, 0.225] }
]
Use ImageNet normalization values unless model card specifies otherwise.
LLM (GGUF): empty [] (llama.cpp handles internally)
TTS:
[{ "type": "TTSAudioEncode", "sample_rate": 24000, "apply_postprocessing": true }]
ASR (CTC-based, e.g. Wav2Vec2):
[{ "type": "CTCDecode", "vocab_file": "vocab.json", "blank_index": 0 }]
ASR (Whisper SafeTensors): empty []
Text embedding:
[{ "type": "MeanPool", "dim": 1 }]
Image classification:
[{ "type": "Softmax", "dim": 1 }]
Or { "type": "Argmax" } if you just need the class index.
LLM: empty []
If the model has voice embeddings (e.g. voices.bin):
{
"voices": {
"format": "embedded",
"file": "voices.bin",
"loader": "binary_f32_256",
"default": "voice_id",
"selection_strategy": "TokenLength",
"catalog": [
{ "id": "voice_id", "name": "Display Name", "index": 0, "gender": "female", "language": "en-US", "style": "neutral" }
]
}
}
Before presenting the result, verify:
files array exist (in the HF repo or local directory)model_file matches an actual file name{
"model_id": "kokoro-82m",
"version": "1.0",
"description": "Kokoro 82M - High-quality TTS with 24 voices",
"execution_template": { "type": "Onnx", "model_file": "model.onnx" },
"preprocessing": [{ "type": "Phonemize", "tokens_file": "tokens.txt", "backend": "MisakiDictionary", "add_padding": true, "normalize_text": true }],
"postprocessing": [{ "type"
{
"model_id": "qwen3.5-0.8b",
"version": "1.0",
"description": "Qwen 3.5 0.8B - Lightweight multilingual LLM",
"execution_template": { "type": "Gguf", "model_file": "Qwen3.5-0.8B-Q4_K_M.gguf", "context_length": 4096 },
"preprocessing": [],
"postprocessing": [],
"files": ["Qwen3.5-0.8B-Q4_K_M.gguf"],
"metadata": { "task": "text-generation", "architecture": "qwen35", "backend"
{
"model_id": "all-minilm",
"version": "L6-v2",
"execution_template": { "type": "Onnx", "model_file": "model.onnx" },
"preprocessing": [{ "type": "Tokenize", "vocab_file": "tokenizer.json", "tokenizer_type": "WordPiece", "max_length": 512 }],
"postprocessing": [{ "type": "MeanPool", "dim": 1 }],
"files":
{
"model_id": "whisper-tiny",
"version": "1.0",
"description": "Whisper Tiny - Fast multilingual ASR (Candle runtime)",
"execution_template": { "type": "SafeTensors", "model_file": "model.safetensors", "config_file": "config.json", "tokenizer_file": "tokenizer.json" },
"preprocessing": [],
"postprocessing": [],
"files": ["model.safetensors", "config.json", "tokenizer.json", "melfilters.bytes"],
"metadata":
{
"model_id": "mnist-digit-recognition",
"version": "12",
"description": "MNIST handwritten digit recognition",
"execution_template": { "type": "Onnx", "model_file": "model.onnx" },
"preprocessing": [
{ "type": "Reshape", "shape": [1, 1, 28, 28] },
{ "type": "Normalize", "mean": [0.0], "std":
Show the generated model_metadata.json to the user with a brief explanation of the key decisions made (e.g., "Using MisakiDictionary phonemizer because the model card says it's a Kokoro-based TTS model").
Then ask:
Save to
{directory}/model_metadata.json?
If the user confirms, write the file.
If the source is HuggingFace and the model files aren't local yet, offer to download:
Download model files (~{size})? This will fetch:
model.onnx(150 MB)voices.bin(24 KB)- ...
If the user confirms, download each file listed in the files array:
curl -L "https://huggingface.co/{repo}/resolve/main/{file}" -o "{directory}/{file}"
For files in subdirectories (e.g. misaki/us_gold.json), create the subdirectory first.
After saving, print:
Your model is ready. Next steps:
# Test it works (use --input-audio <file>.wav for ASR models)
xybrid run --model {model_id} --input-text "test input"
# Or from Rust
cargo run --example your_test -p xybrid-core
# Or use /test-model to validate end-to-end
If /test-model is available (the user has xybrid cloned), suggest running it.