بنقرة واحدة
add-model
Add a custom OpenAI-compatible model (OpenRouter, Ollama, vLLM, LM Studio, etc.) to ~/.ntrp/models.json
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Add a custom OpenAI-compatible model (OpenRouter, Ollama, vLLM, LM Studio, etc.) to ~/.ntrp/models.json
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Use this skill when the user wants a memory feed — a scheduled automation that fetches targeted data from their integrations (gmail/calendar/slack/web) and keeps ONE memory page current, updated in place. Examples; "track my PR queue", "keep an invoices page", "week-ahead brief".
Implement a spec end-to-end — recon readers map the codebase, an architect pins every cross-file contract in a blueprint, parallel builders implement disjoint workstreams from it, adversarial review, then a final test gate. Use for multi-file feature work. Run via the workflow tool by name.
Find -> adversarially verify -> rank issues over a target (a diff, dir, file, or glob). Use for code review, a scoped bug hunt, a security or perf pass. Run via the workflow tool by name.
Answer a question about a target by fanning out parallel readers over derived angles, then synthesizing a cited answer. Use to understand a subsystem, research a question, or trace how/where something works. Run via the workflow tool by name.
Decide between approaches — generate N diverse proposals from different lenses, score each against criteria with independent judges, then synthesize a decisive recommendation. Use for design choices, tradeoff calls, "which approach should we take". Run via the workflow tool by name.
Use this skill when the user wants to turn the current conversation into a scheduled automation. Analyze the session and call create_automation to propose one — the user reviews the full prompt + schedule in the approval card before it's saved.
| name | add-model |
| description | Add a custom OpenAI-compatible model (OpenRouter, Ollama, vLLM, LM Studio, etc.) to ~/.ntrp/models.json |
Help the user register a custom model in ~/.ntrp/models.json. Supports both completion (chat) models and embedding models.
Ask the user whether they want to add a completion model or an embedding model.
openrouter/deepseek-r1, ollama/llama3)https://openrouter.ai/api/v1, http://localhost:11434/v1)OPENROUTER_API_KEY). Not needed for local models like Ollama.128000). If the user doesn't know, suggest checking the model's docs.Completion models are top-level keys:
{
"model-id": {
"base_url": "https://...",
"api_key_env": "ENV_VAR_NAME",
"context_window": 128000,
"max_output_tokens": 8192
}
}
Only include api_key_env if the user provided one. Only include max_output_tokens if it differs from the default (8192).
model-id.env as NTRP_CHAT_MODEL=model-id (or NTRP_MEMORY_MODEL, NTRP_RESEARCH_MODEL)api_key_env, remind them to set that environment variablejina-embeddings-v3, nomic-embed-text)https://api.jina.ai/v1)JINA_API_KEY)1024). Check the model's docs if unsure.Embedding models go under the "embedding" key:
{
"embedding": {
"model-id": {
"base_url": "https://...",
"api_key_env": "ENV_VAR_NAME",
"dim": 1024
}
}
}
Only include api_key_env if the user provided one.
model-id.env as NTRP_EMBEDDING_MODEL=model-idapi_key_env, remind them to set that environment variableIf the user mentions a known provider, pre-fill what you can:
base_url: "https://openrouter.ai/api/v1", api_key_env: "OPENROUTER_API_KEY"base_url: "http://localhost:11434/v1", no api_key_env neededbase_url: "http://localhost:8000/v1", no api_key_env neededbase_url: "http://localhost:1234/v1", no api_key_env neededbase_url: "https://api.together.xyz/v1", api_key_env: "TOGETHER_API_KEY"base_url: "https://api.jina.ai/v1", api_key_env: "JINA_API_KEY"base_url: "https://api.voyageai.com/v1", api_key_env: "VOYAGE_API_KEY"base_url: "https://api.cohere.com/v2", api_key_env: "COHERE_API_KEY"~/.ntrp/models.json if it exists (it may not — create it as {} if missing)"embedding" for embedding)