[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6X16ZP6FRAVMZG8Q2AB8F8V":3,"skill-same:01M6X16ZP6FRAVMZG8Q2AB8F8V":187},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":87,"commitSha":88,"skillDirectory":89,"forksCount":14,"repositoryHtmlUrl":90,"repositoryHomepageUrl":91,"ownerHtmlUrl":92,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":93,"install":94,"resources":107},"01M6X16ZP6FRAVMZG8Q2AB8F8V","model-recommender",null,"Recommend the right AI model for a task by scoring candidates across six dimensions (Reasoning, Engineering, Speed, Breadth, Reliability, Governance) and displaying a spider-chart profile.","projectious-work\u002Fprocesskit","projectious-work","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F263889726?v=4","01M6N97TJJ118WQ35CHRV8RD0E","projectious.work","01M6N97TPWJPF0BMKYQ4PBY5W8",0,"MIT","https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Farchive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.22.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fmodel-recommender\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"model recommender","model","reliability","recommend","chart","get","across","dimensions","scoring","route","query","workflow","list","work","configure","access","plan","SET","run","config","2026-11-10 10:12:30",false,"---\nname: model-recommender\ndescription: >\n  Recommend the right AI model for a task by scoring candidates across\n  six dimensions (Reasoning, Engineering, Speed, Breadth, Reliability,\n  Governance) and displaying a spider-chart profile.\nmetadata:\n  processkit:\n    apiVersion: processkit.projectious.work\u002Fv1\n    id: SKILL-model-recommender\n    version: \"1.2.0\"\n    created: 2026-04-09T00:00:00Z\n    category: processkit\n    layer: null\n    uses: []\n    provides:\n      primitives: []\n      mcp_tools: [list_models, get_profile, compare_models, query_models, get_pricing, check_availability, get_config, set_config]\n      assets: []\n      processes: [model-profiling, task-routing, roster-refresh, setup-questionnaire]\n    commands:\n      - name: pk-route\n        args: \"task-description\"\n        description: \"Route a task or task plan to the optimal AI model\"\n      - name: pk-model-setup\n        args: \"\"\n        description: \"Run the guided questionnaire to configure model access and preferences\"\n      - name: pk-model-refresh\n        args: \"\"\n        description: \"Run Workflow C to research and refresh the model roster from live benchmarks\"\n---\n\n# Model Recommender\n\n## Intro\n\nThis skill scores AI models across six capability dimensions, two gate\ndimensions (Availability and User Access), and per-token pricing — then\nhelps you pick the right model. It has three workflows: **Profile View**\n(spider-chart for one or more models, with optional sub-dimension drill-down),\n**Task Router** (cluster a task plan and route each cluster to the optimal\nmodel), and **Roster Refresh** (live internet research to update benchmark\nscores and discover new models). Gates always apply before capability scoring:\na model the user can't access or that is currently down is excluded regardless\nof how well it scores.\n\n## Overview\n\n### The six dimensions\n\nEvery model and every task is evaluated against the same six axes. Each\nscores 1–5.\n\n| Dim | Symbol | What it measures | Sub-dimensions |\n|-----|--------|-----------------|----------------|\n| **Reasoning** | R | Hard thinking: math, science, logic, novel problem-solving | Mathematical reasoning, scientific\u002Fdomain-expert reasoning, abstract\u002Fnovel reasoning, multi-step logical chains, debugging chains |\n| **Engineering** | E | Software work: code, tools, agents, codebases | Function-level code generation, repo-scale task completion, tool use \u002F function calling (BFCL), agentic planning and self-correction, large-codebase navigation |\n| **Speed** | S | Response latency, throughput, and cost efficiency | Time to First Token (TTFT), Inter-Token Latency (ITL), tokens\u002Fsec, cost per 1M input tokens, cost per 1M output tokens, rate limits |\n| **Breadth** | B | Context window, modalities, language coverage | Context window size, long-doc faithfulness, vision, audio, video, structured output (JSON\u002Ffunction calling), multilingual |\n| **Reliability** | L | Instruction fidelity, factual accuracy, consistency | Instruction following, hallucination rate, multi-turn consistency, safety\u002Fharmlessness, format adherence |\n| **Governance** | G | Privacy, sovereignty, compliance, auditability | Data retention policy, data sovereignty \u002F region, self-hostable \u002F open weights, compliance certs (SOC 2, HIPAA, GDPR), prompt injection resistance |\n\n**Score rubric:**\n\n| Score | Label | Meaning |\n|-------|-------|---------|\n| 5 | Exceptional | Best-in-class or near-best; make this a primary reason to choose the model |\n| 4 | Strong | Above average; reliable strength, not a risk |\n| 3 | Moderate | Adequate; not a differentiator; works for routine tasks |\n| 2 | Limited | Can do it, but expect trade-offs; consider alternatives |\n| 1 | Minimal | Poor fit; the model is not designed for this; choose differently |\n\n---\n\n### Gate dimensions (applied before capability scoring)\n\nGates are binary — they disqualify a model entirely, not partially. Apply\nthem first; only models that pass both gates are scored on the six dimensions.\n\n**Gate 1 — User Access:** Does the user have an active subscription, API key,\nand sufficient quota for this model? Ask at the start of any routing session\nif unknown. Maintain user access state in `mcp\u002Fuser_config.json` via\n`set_config(available_models=[...])`. The MCP `query_models` and `list_models`\ntools respect this automatically.\n\n**Gate 2 — Availability:** Is the provider's API currently operational? Check\nwith `check_availability()` for live status. Three sub-states:\n- `operational` — no known issues\n- `degraded` — elevated error rate or latency; usable but risky for production\n- `major_outage` — do not route here; escalate to fallback\n\n**Additional flags to surface when relevant:**\n- Rate limit exhausted — user has hit their per-minute or daily cap; fallback required\n- Quota \u002F budget exceeded — subscription limit reached; model is effectively unavailable\n- Subscription expired — no access until renewed\n\nWhen a model's gate status is unknown, ask the user rather than assuming it passes.\n\n---\n\n### Cost and value\n\nCost is a sub-dimension of Speed (S.cost_efficiency) in the spider chart but\nis also surfaced explicitly because raw per-token prices and derived value\nmatter independently of speed.\n\n**Per-token pricing:** stored in `mcp\u002Fmodel_scores.json` under each model's\n`pricing` field. Use `get_pricing()` to view and sort. Self-hosted models\n(Llama) have null API pricing — infra cost applies instead.\n\n**Value score:** `(R + E + L) \u002F 3 \u002F output_cost_per_1M × 10`. Higher is\nbetter. Surfaces models with frontier-class capability at low cost. DeepSeek\nmodels score highest on value but are excluded for G-sensitive work.\n\n| Model | Input \u002F1M | Output \u002F1M | Value score | G |\n|-------|-----------|------------|-------------|---|\n| Gemini Flash 2.0 | $0.08 | $0.30 | ~43 | 2 |\n| DeepSeek V3 | $0.14 | $0.28 | ~50 | 1 |\n| Claude Haiku 4.5 | $0.25 | $1.25 | ~11 | 5 |\n| DeepSeek R1 | $0.55 | $2.19 | ~15 | 1 |\n| o4-mini | $1.10 | $4.40 | ~5 | 2 |\n| Mistral Large 3 | $2.00 | $6.00 | ~3 | 4 |\n| Claude Sonnet 4.6 | $3.00 | $15.00 | ~1.5 | 5 |\n| Gemini 2.5 Pro | $1.25 | $10.00 | ~2 | 2 |\n| GPT-4o | $2.50 | $10.00 | ~1.4 | 2 |\n| o3 | $10.00 | $40.00 | ~0.5 | 2 |\n| Claude Opus 4.6 | $15.00 | $75.00 | ~0.3 | 5 |\n| Llama 3.3 70B | self-hosted | self-hosted | — | 5 |\n\nWhen the user asks \"what's the best value for money\" or has a per-hour budget,\nuse `get_pricing(sort_by=\"value_score\")` and filter by accessible models.\n\n---\n\n### MCP tools\n\nThe `mcp\u002Fserver.py` provides structured queries over the roster. Use these\ninstead of reading markdown files when the user asks for comparisons,\nfiltered lists, or pricing analysis.\n\n| Tool | When to use |\n|------|-------------|\n| `list_models()` | First step when access config is unknown; shows what's usable |\n| `query_models(R=4, G=5)` | \"Find models with strong reasoning and full privacy\" |\n| `get_profile(\"claude-sonnet-4.6\", scope=\"E\")` | Sub-dimension drill-down on Engineering |\n| `compare_models([\"claude-sonnet-4.6\", \"gemini-2.5-pro\"], scope=\"B\")` | Side-by-side Breadth sub-dims |\n| `get_pricing(sort_by=\"value_score\")` | Value-for-money ranking |\n| `check_availability()` | Live status before routing a plan |\n| `get_config()` \u002F `set_config(...)` | Show or update user access list |\n\n---\n\n### Workflow A — Profile View\n\nUse when the user wants to understand a specific model or compare two.\n\n**Output format (render one block per model):**\n\n```\nModel: Claude Sonnet 4.6\nProvider: Anthropic · Tier: Frontier mid-size · Updated: 2026-Q1\n────────────────────────────────────────────────\n  Reasoning    ▓▓▓▓▓▓▓▓░░  4\u002F5  Strong\n  Engineering  ▓▓▓▓▓▓▓▓▓▓  5\u002F5  Exceptional\n  Speed        ▓▓▓▓▓▓░░░░  3\u002F5  Moderate\n  Breadth      ▓▓▓▓▓▓▓▓░░  4\u002F5  Strong\n  Reliability  ▓▓▓▓▓▓▓▓░░  4\u002F5  Strong\n  Governance   ▓▓▓▓▓▓▓▓▓▓  5\u002F5  Exceptional\n────────────────────────────────────────────────\nBest for:   Complex coding, code review, refactoring, agentic workflows,\n            tasks touching sensitive data or enterprise privacy requirements\nAvoid for:  Extreme cost sensitivity at very high volume, real-time \u003C100ms\n            UX, native audio\u002Fvideo processing\n```\n\nBar widths: 5→▓▓▓▓▓▓▓▓▓▓, 4→▓▓▓▓▓▓▓▓░░, 3→▓▓▓▓▓▓░░░░, 2→▓▓▓▓░░░░░░, 1→▓▓░░░░░░░░\n\nFor head-to-head comparison of two models, render both blocks, then add a\none-paragraph verdict: which model wins overall and for what use cases.\n\n**Sub-dimension drill-down:** When the user wants detail on a specific\ndimension (e.g., \"which of these two is better at tool use?\"), call\n`compare_models([...], scope=\"E\")` and render the sub-dimension table:\n\n```\nEngineering sub-dimensions: Claude Sonnet 4.6 vs GPT-4o\n─────────────────────────────────────────────────────\nSub-dimension          Sonnet 4.6   GPT-4o\nFunction codegen            5          4\nRepo-scale tasks            5          4\nTool use \u002F BFCL             5          4\nAgentic planning            5          3\nCodebase navigation         5          4\n─────────────────────────────────────────────────────\nTop-level E score           5          4\n```\n\nTrigger: \"drill down on [dimension]\", \"compare at the detail level\",\n\"which is better at [sub-dimension]\", \"I need strong tool use specifically\".\n\n---\n\n### Workflow B — Task Router\n\nUse when the user has a plan, task list, or backlog and wants to know\nwhich model to use for which work. This is the Dispatch matching mode:\ntasks are missions, models are heroes.\n\n**Steps:**\n\n1. **Parse** the task list. Accept any format: markdown bullets, numbered\n   list, WorkItems, or a free-form plan.\n\n2. **Score each task** against the six dimensions: which dimensions does\n   this task *require*? Use the Task Scoring Quick-Reference below.\n\n3. **Cluster** tasks by their dominant dimension profile. Tasks with the\n   same top-2 dimensions belong in the same cluster. Typical clusters:\n   - Deep-Think (R+E dominant) — complex architecture, novel algorithms\n   - Production-Coder (E dominant) — routine implementation, bug fixes\n   - High-Volume (S dominant) — repetitive generation, bulk transforms\n   - Long-Context (B dominant) — large codebase sweeps, doc analysis\n   - Privacy-First (G dominant) — PII, PHI, regulated data, secrets\n\n4. **Recommend** a model per cluster from the user's accessible models.\n   Call `query_models(R=..., E=..., G=..., apply_user_filter=True)` to\n   find the best available match. State the primary recommendation and one fallback.\n\n5. **Theoretical-best hint.** After recommending from the user's accessible\n   models, run the same query with `apply_user_filter=False`. If the\n   theoretical-best model differs from the recommended one, show the hint:\n\n   ```\n   ⚡ Theoretical best (not in your access): Claude Opus 4.6\n      Gap: R:5 E:5 vs your best R:4 E:5 — 1 point on Reasoning matters for\n      this cluster (novel algorithm design). Consider adding Opus access if\n      the task justifies it → anthropic.com\u002Fapi\n   ```\n\n   Omit the hint if the user's accessible model already matches the theoretical\n   best, or if the gap is only 1 point on a non-dominant dimension.\n\n6. **Output** the routing table:\n\n```\nTask Routing Analysis\n══════════════════════════════════════════════\n\nCluster 1 — Deep-Think (Reasoning + Engineering)   [N tasks]\n  Profile:    R:5  E:5  S:2  B:3  L:4  G:4\n  Your model: Claude Sonnet 4.6  (fallback: Qwen 2.5 Coder 32B self-hosted)\n  ⚡ Theoretical best: Claude Opus 4.6 — R gap: 4→5; worth it for novel algorithms\n  Tasks:\n    • Design consensus algorithm for distributed cache\n    • Refactor auth middleware to zero-trust model\n\nCluster 2 — Production-Coder (Engineering)          [N tasks]\n  Profile:    R:3  E:5  S:3  B:3  L:4  G:4\n  Your model: Claude Sonnet 4.6  (no gap — this is the theoretical best)\n  Tasks:\n    • Implement JWT refresh token rotation\n    • Add pagination to \u002Fapi\u002Fv2\u002Fusers endpoint\n\nCluster 3 — High-Volume (Speed)                     [N tasks]\n  Profile:    R:2  E:3  S:5  B:3  L:3  G:3\n  Your model: Claude Haiku 4.5  (fallback: Gemini Flash 2.0)\n  ⚡ Theoretical best: Gemini Flash 2.0 — slightly cheaper at this volume;\n     only matters if processing >10M tokens\u002Fmonth\n  Tasks:\n    • Generate unit test stubs for all 200 endpoints\n    • Reformat 5,000 changelog entries to new template\n\nCluster 4 — Privacy-First (Governance)              [N tasks]\n  Profile:    R:3  E:3  S:3  B:3  L:4  G:5\n  Your model: Llama 3.3 70B self-hosted  (no gap — self-hosted is optimal)\n  Tasks:\n    • Process patient consent records\n    • Summarize HIPAA audit logs\n\n══════════════════════════════════════════════\nTotal: N tasks across M clusters.\nSuggested sequence: Cluster 4 → Cluster 1 → Cluster 2 → Cluster 3.\n```\n\n---\n\n---\n\n### Workflow D — Setup Questionnaire\n\nUse when the user says \"set up my models\", \"configure my access\", \"which models do\nI have access to\", \"help me set up the recommender\", \"onboard me\", or \"I only have\naccess to X\". Replaces manual JSON editing with a guided conversation.\n\n**Steps:**\n\n1. **Show current state.** Call `get_config()`. If `available_models` is non-empty,\n   say \"You currently have [N] models configured — I'll update your settings.\"\n   If empty, say \"Your model access isn't set up yet. Let me walk you through it.\"\n\n2. **Ask about provider access.** One question, accept a free-form answer:\n   > \"Which AI providers do you have active API access to?\n   > Options: Anthropic, OpenAI, Google (Gemini), Meta\u002Fself-hosted (Llama),\n   > Mistral, xAI (Grok), Cohere, Alibaba\u002FQwen, MiniMax, DeepSeek, Microsoft (Phi),\n   > or other.\"\n\n3. **For each confirmed provider, ask about model tiers:**\n   - Anthropic: \"Do you have Haiku only, Haiku + Sonnet, or full access (all three)?\"\n   - OpenAI: \"Standard (GPT-4o), reasoning tier (o3\u002Fo4-mini), or both?\"\n   - Google: \"Gemini 2.5 Pro, Flash, or both?\"\n   - Open-source (Llama\u002FQwen\u002FPhi\u002FGemma): \"Self-hosted or via a third-party API\n     (Together, Groq, etc.)?\" — this determines the effective G score.\n   - Others: accept the provider-level answer.\n\n4. **Data sensitivity floor.** One question:\n   > \"What's the highest sensitivity of data you typically work with in this project?\n   > (a) Public only — open-source code, public information\n   > (b) Internal \u002F proprietary — code or business data that isn't public\n   > (c) Personal data — names, emails, addresses, any PII\n   > (d) Regulated — HIPAA (medical), financial, legal, or government data\"\n   Map: (a)→G:0, (b)→G:3, (c)→G:4, (d)→G:5.\n\n5. **Budget preference.** One question:\n   > \"Budget preference?\n   > (a) Cost-first — use the cheapest model that meets the requirement\n   > (b) Balanced — trade off cost and quality\n   > (c) Quality-first — use the best model regardless of cost\"\n   Map: (a)→low, (b)→medium, (c)→high. Set `budget_tier`.\n\n6. **Exclusions.** One question:\n   > \"Any models to always exclude? (e.g., 'no DeepSeek', 'nothing from China',\n   > 'only Anthropic')\"\n   Parse response and add to `blocked_models`.\n\n7. **Summarise and confirm.** Display a brief summary:\n   ```\n   Here's your configuration:\n     Accessible models: [list]\n     Governance floor:  G:4 (personal data)\n     Budget:            balanced\n     Blocked:           deepseek-v3, deepseek-r1\n   Apply this? (yes \u002F adjust)\n   ```\n\n8. **Apply.** On confirmation, call `set_config(...)` with all fields.\n   Then call `list_models()` and show the effective roster so the user can\n   verify it looks right.\n\n---\n\n### Workflow C — Roster Refresh\n\nUse when the user says \"update the model scores\", \"check for new models\",\n\"are there newer benchmarks\", or \"refresh the roster\". This is the only\nworkflow that requires internet access.\n\n**Steps:**\n\n1. **Check validated date.** Read `_meta.validated` from `model_scores.json`.\n   If less than 3 months old, ask the user if they want to proceed anyway.\n\n2. **Discover new models.** Web-search for \"new LLM models [current year]\" and\n   \"AI model releases [last 3 months]\". For each new model found:\n   - Note it as a candidate addition (do NOT auto-write to model_scores.json)\n   - Report it to the user with a one-line capability summary\n   - Ask: \"Do you want me to add [model] to the roster?\"\n   - Only add after explicit confirmation; adds are additive (never overwrite existing entries)\n\n3. **Refresh benchmark scores.** Fetch current leaderboard pages listed in\n   `_meta.leaderboards`. For each model already in the roster:\n   - Check if its SWE-bench rank has changed significantly\n   - Check if its LMSYS Arena Elo has moved by >50 points\n   - Check Artificial Analysis for latency\u002Fcost updates\n   - Propose score changes as a diff — do NOT auto-apply\n\n4. **Check for new benchmarks.** Search for benchmarks that have gained\n   traction since the last validated date (e.g., new agentic evals, new\n   multimodal evals). If found, assess whether they warrant a new sub-dimension.\n   Report to user; do NOT add sub-dimensions without discussion.\n\n5. **Check pricing.** Fetch the provider pricing pages in `_meta.pricing_pages`.\n   Compare to stored `pricing` fields. Report any price changes.\n\n6. **Present proposed changes.** List:\n   - New models to add (awaiting confirmation)\n   - Score adjustments (with before\u002Fafter and source)\n   - Price updates (before\u002Fafter)\n   - New benchmark candidates\n\n7. **Apply only confirmed changes.** Update `model_scores.json` for approved\n   changes. Bump `_meta.validated` to the current quarter.\n\n**Constraint:** refresh is additive. Never delete models from the roster\nduring refresh — that is a separate cleanup task for the user to do manually.\n\n### Task Scoring Quick-Reference\n\n| Task contains… | Raise these dimensions |\n|---|---|\n| \"design\", \"architect\", \"algorithm\", \"prove\", \"derive\", \"optimize (complexity)\" | R |\n| \"implement\", \"fix\", \"debug\", \"refactor\", \"review code\", \"write tests\", \"agentic\" | E |\n| \"generate N items\", \"bulk\", \"batch\", \"fast\", \"cheap\", \"thousands of\" | S |\n| \"entire codebase\", \"all files\", \"image\", \"screenshot\", \"audio\", \"video\", \"long doc\" | B |\n| \"exactly\", \"format must be\", \"strict schema\", \"no hallucination\", \"cite sources\" | L |\n| PII, PHI, credentials, regulated, GDPR, HIPAA, internal\u002Fconfidential | G |\n\nA task can score high on multiple dimensions. When in doubt, assign the\ntop-2 and cluster on those.\n\n---\n\n### Model roster summary\n\nThe roster contains **34 models** across 12 providers (25 validated, 9 estimated\nfor post-Aug-2025 releases). Estimated models are marked `_estimated: true` in\n`mcp\u002Fmodel_scores.json` and should be validated via Workflow C before using in\nproduction routing.\n\n**Live table:** `list_models()` — returns the roster filtered by your user config.  \n**Full table with context windows:** see `references\u002Froster-quick-ref.md`.  \n**Narrative profiles:** see `references\u002Fmodel-profiles.md`.\n\n**Providers covered:** Anthropic, OpenAI, Google (API + open weights),\nxAI (Grok), Meta (Llama), Alibaba\u002FQwen (open), Microsoft\u002FPhi (open),\nMiniMax, Mistral (all tiers + Codestral + Deep Think), Cohere, DeepSeek.\n\n**⚠️ G:1 warning:** DeepSeek APIs, Alibaba Cloud API, and MiniMax API operate\nunder Chinese jurisdiction. Never route sensitive, regulated, or personal data\nto these APIs. Self-hosting their open weights raises governance to G:3–4.\n\n---\n\n### Commands\n\n- `\u002Fmodel-recommender-profile model-id [scope]` — show the spider-chart capability profile for a model\n- `\u002Fmodel-recommender-route task-description` — route a task or task plan to the optimal AI model\n- `\u002Fmodel-recommender-setup` — run the guided questionnaire to configure model access and preferences\n- `\u002Fmodel-recommender-refresh` — run Workflow C to research and refresh the model roster from live benchmarks\n\n## Gotchas\n\n- **Skipping the gate check before routing.** Always check User Access and\n  Availability before scoring capability. A model scoring E:5 G:5 is useless\n  if the user's API key is expired or the provider is in a major outage.\n  Call `check_availability()` and `get_config()` at the start of any\n  Task Router session, or ask the user explicitly if MCP is unavailable.\n\n- **Assuming access from context.** If the user mentions \"Claude\" it does\n  not mean they have Opus, Sonnet, and Haiku — they may only have one tier.\n  Ask or call `get_config()` before recommending a specific tier.\n\n- **Recommending a model the user has rate-limited.** Rate limits and quota\n  exhaustion are not visible on status pages — they are per-account states.\n  If the user says \"it keeps failing\", check for rate-limit errors before\n  re-routing to the same model. Suggest the next model in the fallback chain.\n\n- **Conflating low cost with high value.** DeepSeek models have the highest\n  raw value score but score G:1, which disqualifies them for most enterprise\n  work. Always surface the governance warning alongside the value score when\n  a low-cost model has a G:1 or G:2 rating. Cost optimization within a G\n  floor is the correct framing, not raw cost minimization.\n\n- **Not telling the user the actual price.** When recommending a model for\n  a bulk task (\"generate 10,000 descriptions\"), compute an estimate:\n  (estimated tokens × price per 1M \u002F 1,000,000). Even a rough estimate\n  ($0.50 vs. $8.00) changes the decision. Use `get_pricing()` for current rates.\n\n- **Treating the roster as current truth.** Model scores change with every\n  release. The profiles in `references\u002Fmodel-profiles.md` have a\n  \"validated\" date. If the user's model is newer or the date is >6 months\n  old, caveat your recommendation and point to Artificial Analysis or\n  LMSYS Arena for live data.\n\n- **Recommending a model the user can't access.** Before recommending o3\n  or Opus 4.6, ask (or check context) whether the user has access and\n  budget. A perfect score on paper is useless if the quota is exhausted or\n  the model is not provisioned. Offer a concrete fallback every time.\n\n- **Scoring the task instead of the task cluster.** When routing a plan,\n  assess what the *cluster as a whole* needs, not individual task quirks.\n  One unusual subtask should not pull an entire cluster to a different model.\n\n- **Ignoring the Governance dimension for \"internal\" work.** Many teams\n  assume internal code is not sensitive. But source code with credentials,\n  unreleased algorithms, or regulated business logic can be just as\n  sensitive as PII. When in doubt, ask whether the organization has an AI\n  data classification policy before routing to non-sovereign models.\n\n- **Conflating Speed with Engineering.** A fast model (S:5) is not\n  necessarily a good coder (E:5). Haiku and Flash are excellent at\n  high-volume, low-complexity code tasks but will struggle with novel\n  architecture or debugging subtle async races. Always check both dimensions\n  before routing engineering work to a speed-optimized model.\n\n- **Presenting scores as objective benchmarks.** The 1-5 scores in this\n  skill are informed calibrations, not direct benchmark readings. When the\n  user needs precision (e.g., choosing between two models scoring 4 vs. 4\n  on the same dimension), surface the underlying benchmarks\n  (SWE-bench Verified, GPQA Diamond, BFCL v4) and link to current\n  leaderboards. The skill's scores are a starting point, not the final word.\n\n- **Over-routing to expensive models.** The task router should push work\n  toward the cheapest model that meets the required profile, not the highest-\n  scoring model globally. Opus 4.6 is not the right answer for a task that\n  only needs E:3 S:4 — that is Haiku or Sonnet territory.\n\n- **Skipping the sequence suggestion.** After clustering, always add a\n  recommended execution sequence. Some clusters are prerequisites for others\n  (e.g., design decisions made with Opus should precede implementation with\n  Sonnet). The sequence is often more valuable than the per-cluster picks.\n\n- **Calling `set_config` without user confirmation.** `set_config` overwrites `user_config.json` in full — it is marked `destructiveHint: true`. Always show the proposed configuration to the user and wait for explicit approval before calling `set_config`. Never chain `set_config` into a batch of other calls.\n\n- **Treating `check_availability` failures as errors.** `check_availability` makes live HTTP requests to provider status pages. Network failures, rate limits, and subscription expiry are not detectable from status pages. Treat any failure or non-operational status as `unknown`, report it to the user, and do not retry more than once without explicit user awareness.\n\n## Full reference\n\n### Sub-dimension detail\n\nFull sub-dimension specs, benchmark mappings, and scoring guidelines are\nin `references\u002Fdimension-specs.md`. For structured sub-dimension comparison,\nuse `compare_models(model_ids, scope=\"R\")` (or E\u002FS\u002FB\u002FL\u002FG).\n\n### Complete model profiles\n\nNarrative descriptions, per-sub-dimension scores, and best-for\u002Favoid-for\nlists for all twelve models are in `references\u002Fmodel-profiles.md`.\nStructured scores are in `mcp\u002Fmodel_scores.json` — the MCP server is the\npreferred interface for queries; the markdown file is the human-readable view.\n\n### Pricing and value analysis\n\n- `get_pricing(sort_by=\"value_score\")` — ranked by capability per dollar\n- `get_pricing(sort_by=\"output_per_1m\")` — ranked cheapest output first\n- Provider pricing pages are in `mcp\u002Fmodel_scores.json` under `_meta.pricing_pages`\n- For bulk cost estimates: tokens × (output_price \u002F 1,000,000)\n- Self-hosted models (Llama): no API cost, but require GPU infra (~$1–3\u002Fhr\u002FA100)\n\n### Availability and user access\n\n- `check_availability()` — fetches live status from provider status pages\n- `get_config()` \u002F `set_config(...)` — manage user access list and governance floor\n- Provider status pages: `mcp\u002Fmodel_scores.json` under `_meta.status_pages`\n- Rate limits and quota: must be checked manually via the provider's API dashboard\n  (Anthropic: console.anthropic.com, OpenAI: platform.openai.com, etc.)\n\n### Dimension trade-off map\n\nCommon trade-offs to surface when the user is torn between two options:\n\n| Trade-off | Typical tension | Resolution heuristic |\n|---|---|---|\n| Reasoning vs. Speed | o3 vs. Haiku | Choose by task complexity: reasoning chains >5 steps → o3 tier; routine → Haiku |\n| Breadth vs. Governance | Gemini 2.5 Pro vs. Llama | If context >200K AND data is non-sensitive → Gemini; otherwise → Llama + chunking |\n| Engineering vs. Governance | GPT-4o vs. Mistral | If task is routine coding AND data is non-sensitive → GPT-4o; regulated → Mistral or Llama |\n| Speed vs. Reliability | Flash vs. Sonnet | For customer-facing output → Sonnet; for internal draft generation → Flash |\n| Cost vs. Capability | DeepSeek vs. Claude | If data is non-sensitive AND cost is paramount → DeepSeek; otherwise avoid |\n\n### How scores were derived\n\nScores are calibrated from:\n- Public benchmarks: SWE-bench Verified (E), GPQA Diamond (R), MATH\u002FAIME (R),\n  BFCL v4 (E+B), LMSYS Arena Elo (L), Artificial Analysis Intelligence Index (R+E)\n- Provider documentation and model cards for Speed and Governance dimensions\n- Practitioner reports and Artificial Analysis latency\u002Fcost benchmarks\n\n### Keeping profiles current\n\nWhen a major new model releases or an existing model is updated:\n1. Add or update its entry in `references\u002Fmodel-profiles.md`\n2. Update the summary table in SKILL.md Overview\n3. Bump the validated date in model-profiles.md\n4. If scores change significantly, note what changed and why\n\n### Anti-patterns\n\n- **Single-dimension routing.** Never pick a model on one dimension alone.\n  A model that excels at reasoning but scores L:2 on reliability will\n  produce confident, wrong answers. Always check the dimensions that matter\n  for the task's tolerance for error.\n- **Assuming \"best overall model\" = right model.** The highest-ranked model\n  on LMSYS Arena is not always the right pick. A task requiring G:5 rules\n  out the entire LMSYS top tier (all score G:2 or lower). Optimize for the\n  user's actual constraints, not global rankings.\n- **Ignoring fallbacks.** Always provide a fallback. The recommended model\n  may be unavailable, rate-limited, or over budget mid-session. A router\n  with no fallback fails the user at the worst moment.\n- **Not re-routing when a cluster grows.** If a new task is added to the\n  plan that doesn't fit the cluster's profile, surface it rather than\n  silently absorbing it. A Governance-sensitive task silently absorbed into\n  a DeepSeek-routed cluster is a data breach waiting to happen.\n","# Model Recommender\n\n## Intro\n\nThis skill scores AI models across six capability dimensions, two gate\ndimensions (Availability and User Access), and per-token pricing — then\nhelps you pick the right model. It has three workflows: **Profile View**\n(spider-chart for one or more models, with optional sub-dimension drill-down),\n**Task Router** (cluster a task plan and route each cluster to the optimal\nmodel), and **Roster Refresh** (live internet research to update benchmark\nscores and discover new models). Gates always apply before capability scoring:\na model the user can't access or that is currently down is excluded regardless\nof how well it scores.\n\n## Overview\n\n### The six dimensions\n\nEvery model and every task is evaluated against the same six axes. Each\nscores 1–5.\n\n| Dim | Symbol | What it measures | Sub-dimensions |\n|-----|--------|-----------------|----------------|\n| **Reasoning** | R | Hard thinking: math, science, logic, novel problem-solving | Mathematical reasoning, scientific\u002Fdomain-expert reasoning, abstract\u002Fnovel reasoning, multi-step logical chains, debugging chains |\n| **Engineering** | E | Software work: code, tools, agents, codebases | Function-level code generation, repo-scale task completion, tool use \u002F function calling (BFCL), agentic planning and self-correction, large-codebase navigation |\n| **Speed** | S | Response latency, throughput, and cost efficiency | Time to First Token (TTFT), Inter-Token Latency (ITL), tokens\u002Fsec, cost per 1M input tokens, cost per 1M output tokens, rate limits |\n| **Breadth** | B | Context window, modalities, language coverage | Context window size, long-doc faithfulness, vision, audio, video, structured output (JSON\u002Ffunction calling), multilingual |\n| **Reliability** | L | Instruction fidelity, factual accuracy, consistency | Instruction following, hallucination rate, multi-turn consistency, safety\u002Fharmlessness, format adherence |\n| **Governance** | G | Privacy, sovereignty, compliance, auditability | Data retention policy, data sovereignty \u002F region, self-hostable \u002F open weights, compliance certs (SOC 2, HIPAA, GDPR), prompt injection resistance |\n\n**Score rubric:**\n\n| Score | Label | Meaning |\n|-------|-------|---------|\n| 5 | Exceptional | Best-in-class or near-best; make this a primary reason to choose the model |\n| 4 | Strong | Above average; reliable strength, not a risk |\n| 3 | Moderate | Adequate; not a differentiator; works for routine tasks |\n| 2 | Limited | Can do it, but expect trade-offs; consider alternatives |\n| 1 | Minimal | Poor fit; the model is not designed for this; choose differently |\n\n---\n\n### Gate dimensions (applied before capability scoring)\n\nGates are binary — they disqualify a model entirely, not partially. Apply\nthem first; only models that pass both gates are scored on the six dimensions.\n\n**Gate 1 — User Access:** Does the user have an active subscription, API key,\nand sufficient quota for this model? Ask at the start of any routing session\nif unknown. Maintain user access state in `mcp\u002Fuser_config.json` via\n`set_config(available_models=[...])`. The MCP `query_models` and `list_models`\ntools respect this automatically.\n\n**Gate 2 — Availability:** Is the provider's API currently operational? Check\nwith `check_availability()` for live status. Three sub-states:\n- `operational` — no known issues\n- `degraded` — elevated error rate or latency; usable but risky for production\n- `major_outage` — do not route here; escalate to fallback\n\n**Additional flags to surface when relevant:**\n- Rate limit exhausted — user has hit their per-minute or daily cap; fallback required\n- Quota \u002F budget exceeded — subscription limit reached; model is effectively unavailable\n- Subscription expired — no access until renewed\n\nWhen a model's gate status is unknown, ask the user rather than assuming it passes.\n\n---\n\n### Cost and value\n\nCost is a sub-dimension of Speed (S.cost_efficiency) in the spider chart but\nis also surfaced explicitly because raw per-token prices and derived value\nmatter independently of speed.\n\n**Per-token pricing:** stored in `mcp\u002Fmodel_scores.json` under each model's\n`pricing` field. Use `get_pricing()` to view and sort. Self-hosted models\n(Llama) have null API pricing — infra cost applies instead.\n\n**Value score:** `(R + E + L) \u002F 3 \u002F output_cost_per_1M × 10`. Higher is\nbetter. Surfaces models with frontier-class capability at low cost. DeepSeek\nmodels score highest on value but are excluded for G-sensitive work.\n\n| Model | Input \u002F1M | Output \u002F1M | Value score | G |\n|-------|-----------|------------|-------------|---|\n| Gemini Flash 2.0 | $0.08 | $0.30 | ~43 | 2 |\n| DeepSeek V3 | $0.14 | $0.28 | ~50 | 1 |\n| Claude Haiku 4.5 | $0.25 | $1.25 | ~11 | 5 |\n| DeepSeek R1 | $0.55 | $2.19 | ~15 | 1 |\n| o4-mini | $1.10 | $4.40 | ~5 | 2 |\n| Mistral Large 3 | $2.00 | $6.00 | ~3 | 4 |\n| Claude Sonnet 4.6 | $3.00 | $15.00 | ~1.5 | 5 |\n| Gemini 2.5 Pro | $1.25 | $10.00 | ~2 | 2 |\n| GPT-4o | $2.50 | $10.00 | ~1.4 | 2 |\n| o3 | $10.00 | $40.00 | ~0.5 | 2 |\n| Claude Opus 4.6 | $15.00 | $75.00 | ~0.3 | 5 |\n| Llama 3.3 70B | self-hosted | self-hosted | — | 5 |\n\nWhen the user asks \"what's the best value for money\" or has a per-hour budget,\nuse `get_pricing(sort_by=\"value_score\")` and filter by accessible models.\n\n---\n\n### MCP tools\n\nThe `mcp\u002Fserver.py` provides structured queries over the roster. Use these\ninstead of reading markdown files when the user asks for comparisons,\nfiltered lists, or pricing analysis.\n\n| Tool | When to use |\n|------|-------------|\n| `list_models()` | First step when access config is unknown; shows what's usable |\n| `query_models(R=4, G=5)` | \"Find models with strong reasoning and full privacy\" |\n| `get_profile(\"claude-sonnet-4.6\", scope=\"E\")` | Sub-dimension drill-down on Engineering |\n| `compare_models([\"claude-sonnet-4.6\", \"gemini-2.5-pro\"], scope=\"B\")` | Side-by-side Breadth sub-dims |\n| `get_pricing(sort_by=\"value_score\")` | Value-for-money ranking |\n| `check_availability()` | Live status before routing a plan |\n| `get_config()` \u002F `set_config(...)` | Show or update user access list |\n\n---\n\n### Workflow A — Profile View\n\nUse when the user wants to understand a specific model or compare two.\n\n**Output format (render one block per model):**\n\n```\nModel: Claude Sonnet 4.6\nProvider: Anthropic · Tier: Frontier mid-size · Updated: 2026-Q1\n────────────────────────────────────────────────\n  Reasoning    ▓▓▓▓▓▓▓▓░░  4\u002F5  Strong\n  Engineering  ▓▓▓▓▓▓▓▓▓▓  5\u002F5  Exceptional\n  Speed        ▓▓▓▓▓▓░░░░  3\u002F5  Moderate\n  Breadth      ▓▓▓▓▓▓▓▓░░  4\u002F5  Strong\n  Reliability  ▓▓▓▓▓▓▓▓░░  4\u002F5  Strong\n  Governance   ▓▓▓▓▓▓▓▓▓▓  5\u002F5  Exceptional\n────────────────────────────────────────────────\nBest for:   Complex coding, code review, refactoring, agentic workflows,\n            tasks touching sensitive data or enterprise privacy requirements\nAvoid for:  Extreme cost sensitivity at very high volume, real-time \u003C100ms\n            UX, native audio\u002Fvideo processing\n```\n\nBar widths: 5→▓▓▓▓▓▓▓▓▓▓, 4→▓▓▓▓▓▓▓▓░░, 3→▓▓▓▓▓▓░░░░, 2→▓▓▓▓░░░░░░, 1→▓▓░░░░░░░░\n\nFor head-to-head comparison of two models, render both blocks, then add a\none-paragraph verdict: which model wins overall and for what use cases.\n\n**Sub-dimension drill-down:** When the user wants detail on a specific\ndimension (e.g., \"which of these two is better at tool use?\"), call\n`compare_models([...], scope=\"E\")` and render the sub-dimension table:\n\n```\nEngineering sub-dimensions: Claude Sonnet 4.6 vs GPT-4o\n─────────────────────────────────────────────────────\nSub-dimension          Sonnet 4.6   GPT-4o\nFunction codegen            5          4\nRepo-scale tasks            5          4\nTool use \u002F BFCL             5          4\nAgentic planning            5          3\nCodebase navigation         5          4\n─────────────────────────────────────────────────────\nTop-level E score           5          4\n```\n\nTrigger: \"drill down on [dimension]\", \"compare at the detail level\",\n\"which is better at [sub-dimension]\", \"I need strong tool use specifically\".\n\n---\n\n### Workflow B — Task Router\n\nUse when the user has a plan, task list, or backlog and wants to know\nwhich model to use for which work. This is the Dispatch matching mode:\ntasks are missions, models are heroes.\n\n**Steps:**\n\n1. **Parse** the task list. Accept any format: markdown bullets, numbered\n   list, WorkItems, or a free-form plan.\n\n2. **Score each task** against the six dimensions: which dimensions does\n   this task *require*? Use the Task Scoring Quick-Reference below.\n\n3. **Cluster** tasks by their dominant dimension profile. Tasks with the\n   same top-2 dimensions belong in the same cluster. Typical clusters:\n   - Deep-Think (R+E dominant) — complex architecture, novel algorithms\n   - Production-Coder (E dominant) — routine implementation, bug fixes\n   - High-Volume (S dominant) — repetitive generation, bulk transforms\n   - Long-Context (B dominant) — large codebase sweeps, doc analysis\n   - Privacy-First (G dominant) — PII, PHI, regulated data, secrets\n\n4. **Recommend** a model per cluster from the user's accessible models.\n   Call `query_models(R=..., E=..., G=..., apply_user_filter=True)` to\n   find the best available match. State the primary recommendation and one fallback.\n\n5. **Theoretical-best hint.** After recommending from the user's accessible\n   models, run the same query with `apply_user_filter=False`. If the\n   theoretical-best model differs from the recommended one, show the hint:\n\n   ```\n   ⚡ Theoretical best (not in your access): Claude Opus 4.6\n      Gap: R:5 E:5 vs your best R:4 E:5 — 1 point on Reasoning matters for\n      this cluster (novel algorithm design). Consider adding Opus access if\n      the task justifies it → anthropic.com\u002Fapi\n   ```\n\n   Omit the hint if the user's accessible model already matches the theoretical\n   best, or if the gap is only 1 point on a non-dominant dimension.\n\n6. **Output** the routing table:\n\n```\nTask Routing Analysis\n══════════════════════════════════════════════\n\nCluster 1 — Deep-Think (Reasoning + Engineering)   [N tasks]\n  Profile:    R:5  E:5  S:2  B:3  L:4  G:4\n  Your model: Claude Sonnet 4.6  (fallback: Qwen 2.5 Coder 32B self-hosted)\n  ⚡ Theoretical best: Claude Opus 4.6 — R gap: 4→5; worth it for novel algorithms\n  Tasks:\n    • Design consensus algorithm for distributed cache\n    • Refactor auth middleware to zero-trust model\n\nCluster 2 — Production-Coder (Engineering)          [N tasks]\n  Profile:    R:3  E:5  S:3  B:3  L:4  G:4\n  Your model: Claude Sonnet 4.6  (no gap — this is the theoretical best)\n  Tasks:\n    • Implement JWT refresh token rotation\n    • Add pagination to \u002Fapi\u002Fv2\u002Fusers endpoint\n\nCluster 3 — High-Volume (Speed)                     [N tasks]\n  Profile:    R:2  E:3  S:5  B:3  L:3  G:3\n  Your model: Claude Haiku 4.5  (fallback: Gemini Flash 2.0)\n  ⚡ Theoretical best: Gemini Flash 2.0 — slightly cheaper at this volume;\n     only matters if processing >10M tokens\u002Fmonth\n  Tasks:\n    • Generate unit test stubs for all 200 endpoints\n    • Reformat 5,000 changelog entries to new template\n\nCluster 4 — Privacy-First (Governance)              [N tasks]\n  Profile:    R:3  E:3  S:3  B:3  L:4  G:5\n  Your model: Llama 3.3 70B self-hosted  (no gap — self-hosted is optimal)\n  Tasks:\n    • Process patient consent records\n    • Summarize HIPAA audit logs\n\n══════════════════════════════════════════════\nTotal: N tasks across M clusters.\nSuggested sequence: Cluster 4 → Cluster 1 → Cluster 2 → Cluster 3.\n```\n\n---\n\n---\n\n### Workflow D — Setup Questionnaire\n\nUse when the user says \"set up my models\", \"configure my access\", \"which models do\nI have access to\", \"help me set up the recommender\", \"onboard me\", or \"I only have\naccess to X\". Replaces manual JSON editing with a guided conversation.\n\n**Steps:**\n\n1. **Show current state.** Call `get_config()`. If `available_models` is non-empty,\n   say \"You currently have [N] models configured — I'll update your settings.\"\n   If empty, say \"Your model access isn't set up yet. Let me walk you through it.\"\n\n2. **Ask about provider access.** One question, accept a free-form answer:\n   > \"Which AI providers do you have active API access to?\n   > Options: Anthropic, OpenAI, Google (Gemini), Meta\u002Fself-hosted (Llama),\n   > Mistral, xAI (Grok), Cohere, Alibaba\u002FQwen, MiniMax, DeepSeek, Microsoft (Phi),\n   > or other.\"\n\n3. **For each confirmed provider, ask about model tiers:**\n   - Anthropic: \"Do you have Haiku only, Haiku + Sonnet, or full access (all three)?\"\n   - OpenAI: \"Standard (GPT-4o), reasoning tier (o3\u002Fo4-mini), or both?\"\n   - Google: \"Gemini 2.5 Pro, Flash, or both?\"\n   - Open-source (Llama\u002FQwen\u002FPhi\u002FGemma): \"Self-hosted or via a third-party API\n     (Together, Groq, etc.)?\" — this determines the effective G score.\n   - Others: accept the provider-level answer.\n\n4. **Data sensitivity floor.** One question:\n   > \"What's the highest sensitivity of data you typically work with in this project?\n   > (a) Public only — open-source code, public information\n   > (b) Internal \u002F proprietary — code or business data that isn't public\n   > (c) Personal data — names, emails, addresses, any PII\n   > (d) Regulated — HIPAA (medical), financial, legal, or government data\"\n   Map: (a)→G:0, (b)→G:3, (c)→G:4, (d)→G:5.\n\n5. **Budget preference.** One question:\n   > \"Budget preference?\n   > (a) Cost-first — use the cheapest model that meets the requirement\n   > (b) Balanced — trade off cost and quality\n   > (c) Quality-first — use the best model regardless of cost\"\n   Map: (a)→low, (b)→medium, (c)→high. Set `budget_tier`.\n\n6. **Exclusions.** One question:\n   > \"Any models to always exclude? (e.g., 'no DeepSeek', 'nothing from China',\n   > 'only Anthropic')\"\n   Parse response and add to `blocked_models`.\n\n7. **Summarise and confirm.** Display a brief summary:\n   ```\n   Here's your configuration:\n     Accessible models: [list]\n     Governance floor:  G:4 (personal data)\n     Budget:            balanced\n     Blocked:           deepseek-v3, deepseek-r1\n   Apply this? (yes \u002F adjust)\n   ```\n\n8. **Apply.** On confirmation, call `set_config(...)` with all fields.\n   Then call `list_models()` and show the effective roster so the user can\n   verify it looks right.\n\n---\n\n### Workflow C — Roster Refresh\n\nUse when the user says \"update the model scores\", \"check for new models\",\n\"are there newer benchmarks\", or \"refresh the roster\". This is the only\nworkflow that requires internet access.\n\n**Steps:**\n\n1. **Check validated date.** Read `_meta.validated` from `model_scores.json`.\n   If less than 3 months old, ask the user if they want to proceed anyway.\n\n2. **Discover new models.** Web-search for \"new LLM models [current year]\" and\n   \"AI model releases [last 3 months]\". For each new model found:\n   - Note it as a candidate addition (do NOT auto-write to model_scores.json)\n   - Report it to the user with a one-line capability summary\n   - Ask: \"Do you want me to add [model] to the roster?\"\n   - Only add after explicit confirmation; adds are additive (never overwrite existing entries)\n\n3. **Refresh benchmark scores.** Fetch current leaderboard pages listed in\n   `_meta.leaderboards`. For each model already in the roster:\n   - Check if its SWE-bench rank has changed significantly\n   - Check if its LMSYS Arena Elo has moved by >50 points\n   - Check Artificial Analysis for latency\u002Fcost updates\n   - Propose score changes as a diff — do NOT auto-apply\n\n4. **Check for new benchmarks.** Search for benchmarks that have gained\n   traction since the last validated date (e.g., new agentic evals, new\n   multimodal evals). If found, assess whether they warrant a new sub-dimension.\n   Report to user; do NOT add sub-dimensions without discussion.\n\n5. **Check pricing.** Fetch the provider pricing pages in `_meta.pricing_pages`.\n   Compare to stored `pricing` fields. Report any price changes.\n\n6. **Present proposed changes.** List:\n   - New models to add (awaiting confirmation)\n   - Score adjustments (with before\u002Fafter and source)\n   - Price updates (before\u002Fafter)\n   - New benchmark candidates\n\n7. **Apply only confirmed changes.** Update `model_scores.json` for approved\n   changes. Bump `_meta.validated` to the current quarter.\n\n**Constraint:** refresh is additive. Never delete models from the roster\nduring refresh — that is a separate cleanup task for the user to do manually.\n\n### Task Scoring Quick-Reference\n\n| Task contains… | Raise these dimensions |\n|---|---|\n| \"design\", \"architect\", \"algorithm\", \"prove\", \"derive\", \"optimize (complexity)\" | R |\n| \"implement\", \"fix\", \"debug\", \"refactor\", \"review code\", \"write tests\", \"agentic\" | E |\n| \"generate N items\", \"bulk\", \"batch\", \"fast\", \"cheap\", \"thousands of\" | S |\n| \"entire codebase\", \"all files\", \"image\", \"screenshot\", \"audio\", \"video\", \"long doc\" | B |\n| \"exactly\", \"format must be\", \"strict schema\", \"no hallucination\", \"cite sources\" | L |\n| PII, PHI, credentials, regulated, GDPR, HIPAA, internal\u002Fconfidential | G |\n\nA task can score high on multiple dimensions. When in doubt, assign the\ntop-2 and cluster on those.\n\n---\n\n### Model roster summary\n\nThe roster contains **34 models** across 12 providers (25 validated, 9 estimated\nfor post-Aug-2025 releases). Estimated models are marked `_estimated: true` in\n`mcp\u002Fmodel_scores.json` and should be validated via Workflow C before using in\nproduction routing.\n\n**Live table:** `list_models()` — returns the roster filtered by your user config.  \n**Full table with context windows:** see `references\u002Froster-quick-ref.md`.  \n**Narrative profiles:** see `references\u002Fmodel-profiles.md`.\n\n**Providers covered:** Anthropic, OpenAI, Google (API + open weights),\nxAI (Grok), Meta (Llama), Alibaba\u002FQwen (open), Microsoft\u002FPhi (open),\nMiniMax, Mistral (all tiers + Codestral + Deep Think), Cohere, DeepSeek.\n\n**⚠️ G:1 warning:** DeepSeek APIs, Alibaba Cloud API, and MiniMax API operate\nunder Chinese jurisdiction. Never route sensitive, regulated, or personal data\nto these APIs. Self-hosting their open weights raises governance to G:3–4.\n\n---\n\n### Commands\n\n- `\u002Fmodel-recommender-profile model-id [scope]` — show the spider-chart capability profile for a model\n- `\u002Fmodel-recommender-route task-description` — route a task or task plan to the optimal AI model\n- `\u002Fmodel-recommender-setup` — run the guided questionnaire to configure model access and preferences\n- `\u002Fmodel-recommender-refresh` — run Workflow C to research and refresh the model roster from live benchmarks\n\n## Gotchas\n\n- **Skipping the gate check before routing.** Always check User Access and\n  Availability before scoring capability. A model scoring E:5 G:5 is useless\n  if the user's API key is expired or the provider is in a major outage.\n  Call `check_availability()` and `get_config()` at the start of any\n  Task Router session, or ask the user explicitly if MCP is unavailable.\n\n- **Assuming access from context.** If the user mentions \"Claude\" it does\n  not mean they have Opus, Sonnet, and Haiku — they may only have one tier.\n  Ask or call `get_config()` before recommending a specific tier.\n\n- **Recommending a model the user has rate-limited.** Rate limits and quota\n  exhaustion are not visible on status pages — they are per-account states.\n  If the user says \"it keeps failing\", check for rate-limit errors before\n  re-routing to the same model. Suggest the next model in the fallback chain.\n\n- **Conflating low cost with high value.** DeepSeek models have the highest\n  raw value score but score G:1, which disqualifies them for most enterprise\n  work. Always surface the governance warning alongside the value score when\n  a low-cost model has a G:1 or G:2 rating. Cost optimization within a G\n  floor is the correct framing, not raw cost minimization.\n\n- **Not telling the user the actual price.** When recommending a model for\n  a bulk task (\"generate 10,000 descriptions\"), compute an estimate:\n  (estimated tokens × price per 1M \u002F 1,000,000). Even a rough estimate\n  ($0.50 vs. $8.00) changes the decision. Use `get_pricing()` for current rates.\n\n- **Treating the roster as current truth.** Model scores change with every\n  release. The profiles in `references\u002Fmodel-profiles.md` have a\n  \"validated\" date. If the user's model is newer or the date is >6 months\n  old, caveat your recommendation and point to Artificial Analysis or\n  LMSYS Arena for live data.\n\n- **Recommending a model the user can't access.** Before recommending o3\n  or Opus 4.6, ask (or check context) whether the user has access and\n  budget. A perfect score on paper is useless if the quota is exhausted or\n  the model is not provisioned. Offer a concrete fallback every time.\n\n- **Scoring the task instead of the task cluster.** When routing a plan,\n  assess what the *cluster as a whole* needs, not individual task quirks.\n  One unusual subtask should not pull an entire cluster to a different model.\n\n- **Ignoring the Governance dimension for \"internal\" work.** Many teams\n  assume internal code is not sensitive. But source code with credentials,\n  unreleased algorithms, or regulated business logic can be just as\n  sensitive as PII. When in doubt, ask whether the organization has an AI\n  data classification policy before routing to non-sovereign models.\n\n- **Conflating Speed with Engineering.** A fast model (S:5) is not\n  necessarily a good coder (E:5). Haiku and Flash are excellent at\n  high-volume, low-complexity code tasks but will struggle with novel\n  architecture or debugging subtle async races. Always check both dimensions\n  before routing engineering work to a speed-optimized model.\n\n- **Presenting scores as objective benchmarks.** The 1-5 scores in this\n  skill are informed calibrations, not direct benchmark readings. When the\n  user needs precision (e.g., choosing between two models scoring 4 vs. 4\n  on the same dimension), surface the underlying benchmarks\n  (SWE-bench Verified, GPQA Diamond, BFCL v4) and link to current\n  leaderboards. The skill's scores are a starting point, not the final word.\n\n- **Over-routing to expensive models.** The task router should push work\n  toward the cheapest model that meets the required profile, not the highest-\n  scoring model globally. Opus 4.6 is not the right answer for a task that\n  only needs E:3 S:4 — that is Haiku or Sonnet territory.\n\n- **Skipping the sequence suggestion.** After clustering, always add a\n  recommended execution sequence. Some clusters are prerequisites for others\n  (e.g., design decisions made with Opus should precede implementation with\n  Sonnet). The sequence is often more valuable than the per-cluster picks.\n\n- **Calling `set_config` without user confirmation.** `set_config` overwrites `user_config.json` in full — it is marked `destructiveHint: true`. Always show the proposed configuration to the user and wait for explicit approval before calling `set_config`. Never chain `set_config` into a batch of other calls.\n\n- **Treating `check_availability` failures as errors.** `check_availability` makes live HTTP requests to provider status pages. Network failures, rate limits, and subscription expiry are not detectable from status pages. Treat any failure or non-operational status as `unknown`, report it to the user, and do not retry more than once without explicit user awareness.\n\n## Full reference\n\n### Sub-dimension detail\n\nFull sub-dimension specs, benchmark mappings, and scoring guidelines are\nin `references\u002Fdimension-specs.md`. For structured sub-dimension comparison,\nuse `compare_models(model_ids, scope=\"R\")` (or E\u002FS\u002FB\u002FL\u002FG).\n\n### Complete model profiles\n\nNarrative descriptions, per-sub-dimension scores, and best-for\u002Favoid-for\nlists for all twelve models are in `references\u002Fmodel-profiles.md`.\nStructured scores are in `mcp\u002Fmodel_scores.json` — the MCP server is the\npreferred interface for queries; the markdown file is the human-readable view.\n\n### Pricing and value analysis\n\n- `get_pricing(sort_by=\"value_score\")` — ranked by capability per dollar\n- `get_pricing(sort_by=\"output_per_1m\")` — ranked cheapest output first\n- Provider pricing pages are in `mcp\u002Fmodel_scores.json` under `_meta.pricing_pages`\n- For bulk cost estimates: tokens × (output_price \u002F 1,000,000)\n- Self-hosted models (Llama): no API cost, but require GPU infra (~$1–3\u002Fhr\u002FA100)\n\n### Availability and user access\n\n- `check_availability()` — fetches live status from provider status pages\n- `get_config()` \u002F `set_config(...)` — manage user access list and governance floor\n- Provider status pages: `mcp\u002Fmodel_scores.json` under `_meta.status_pages`\n- Rate limits and quota: must be checked manually via the provider's API dashboard\n  (Anthropic: console.anthropic.com, OpenAI: platform.openai.com, etc.)\n\n### Dimension trade-off map\n\nCommon trade-offs to surface when the user is torn between two options:\n\n| Trade-off | Typical tension | Resolution heuristic |\n|---|---|---|\n| Reasoning vs. Speed | o3 vs. Haiku | Choose by task complexity: reasoning chains >5 steps → o3 tier; routine → Haiku |\n| Breadth vs. Governance | Gemini 2.5 Pro vs. Llama | If context >200K AND data is non-sensitive → Gemini; otherwise → Llama + chunking |\n| Engineering vs. Governance | GPT-4o vs. Mistral | If task is routine coding AND data is non-sensitive → GPT-4o; regulated → Mistral or Llama |\n| Speed vs. Reliability | Flash vs. Sonnet | For customer-facing output → Sonnet; for internal draft generation → Flash |\n| Cost vs. Capability | DeepSeek vs. Claude | If data is non-sensitive AND cost is paramount → DeepSeek; otherwise avoid |\n\n### How scores were derived\n\nScores are calibrated from:\n- Public benchmarks: SWE-bench Verified (E), GPQA Diamond (R), MATH\u002FAIME (R),\n  BFCL v4 (E+B), LMSYS Arena Elo (L), Artificial Analysis Intelligence Index (R+E)\n- Provider documentation and model cards for Speed and Governance dimensions\n- Practitioner reports and Artificial Analysis latency\u002Fcost benchmarks\n\n### Keeping profiles current\n\nWhen a major new model releases or an existing model is updated:\n1. Add or update its entry in `references\u002Fmodel-profiles.md`\n2. Update the summary table in SKILL.md Overview\n3. Bump the validated date in model-profiles.md\n4. If scores change significantly, note what changed and why\n\n### Anti-patterns\n\n- **Single-dimension routing.** Never pick a model on one dimension alone.\n  A model that excels at reasoning but scores L:2 on reliability will\n  produce confident, wrong answers. Always check the dimensions that matter\n  for the task's tolerance for error.\n- **Assuming \"best overall model\" = right model.** The highest-ranked model\n  on LMSYS Arena is not always the right pick. A task requiring G:5 rules\n  out the entire LMSYS top tier (all score G:2 or lower). Optimize for the\n  user's actual constraints, not global rankings.\n- **Ignoring fallbacks.** Always provide a fallback. The recommended model\n  may be unavailable, rate-limited, or over budget mid-session. A router\n  with no fallback fails the user at the worst moment.\n- **Not re-routing when a cluster grows.** If a new task is added to the\n  plan that doesn't fit the cluster's profile, surface it rather than\n  silently absorbing it. A Governance-sensitive task silently absorbed into\n  a DeepSeek-routed cluster is a data breach waiting to happen.\n",{"name":5,"metadata":49,"description":86},{"processkit":50},{"id":51,"uses":52,"layer":6,"created":53,"version":54,"category":55,"commands":56,"provides":68,"apiVersion":85},"SKILL-model-recommender",[],1775692800000,"1.2.0","processkit",[57,61,65],{"args":58,"name":59,"description":60},"task-description","pk-route","Route a task or task plan to the optimal AI model",{"args":62,"name":63,"description":64},"","pk-model-setup","Run the guided questionnaire to configure model access and preferences",{"args":62,"name":66,"description":67},"pk-model-refresh","Run Workflow C to research and refresh the model roster from live benchmarks",{"assets":69,"mcp_tools":70,"processes":79,"primitives":84},[],[71,72,73,74,75,76,77,78],"list_models","get_profile","compare_models","query_models","get_pricing","check_availability","get_config","set_config",[80,81,82,83],"model-profiling","task-routing","roster-refresh","setup-questionnaire",[],"processkit.projectious.work\u002Fv1","Recommend the right AI model for a task by scoring candidates across six dimensions (Reasoning, Engineering, Speed, Breadth, Reliability, Governance) and displaying a spider-chart profile.\n","main","4876a92620ee792aac2ac9a1a806322d8a572367","archive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.22.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fmodel-recommender","https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit","https:\u002F\u002Fprojectious-work.github.io\u002Fprocesskit\u002F","https:\u002F\u002Fgithub.com\u002Fprojectious-work","2026-11-09 00:53:29",{"source":8,"skillName":5,"commands":95,"prompt":105,"zipAvailable":106},[96,99,102],{"tool":97,"command":98},"npx","npx skills add projectious-work\u002Fprocesskit --skill model-recommender",{"tool":100,"command":101},"bunx","bunx skills add projectious-work\u002Fprocesskit --skill model-recommender",{"tool":103,"command":104},"pnpm","pnpm dlx skills add projectious-work\u002Fprocesskit --skill model-recommender","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Farchive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.22.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fmodel-recommender\u002FSKILL.md",true,[108,114,117,121,125,129,133,137,141,145,151,155,159,163,167,171,175,179,183],{"path":109,"resourceType":110,"resourceTypeDesc":111,"sizeBytes":112,"sourceHtmlUrl":113},"commands\u002Fpk-model-refresh.md","REFERENCE","参考文档",169,"https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Farchive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.22.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fmodel-recommender\u002Fcommands\u002Fpk-model-refresh.md",{"path":115,"resourceType":110,"resourceTypeDesc":111,"sizeBytes":112,"sourceHtmlUrl":116},"commands\u002Fpk-model-setup.md","https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Farchive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.22.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fmodel-recommender\u002Fcommands\u002Fpk-model-setup.md",{"path":118,"resourceType":110,"resourceTypeDesc":111,"sizeBytes":119,"sourceHtmlUrl":120},"commands\u002Fpk-route.md",185,"https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Farchive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.22.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fmodel-recommender\u002Fcommands\u002Fpk-route.md",{"path":122,"resourceType":110,"resourceTypeDesc":111,"sizeBytes":123,"sourceHtmlUrl":124},"default-bindings\u002FMANIFEST.yaml",16151,"https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Farchive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.22.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fmodel-recommender\u002Fdefault-bindings\u002FMANIFEST.yaml",{"path":126,"resourceType":110,"resourceTypeDesc":111,"sizeBytes":127,"sourceHtmlUrl":128},"examples\u002Fprofile-view.md",3627,"https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Farchive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.22.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fmodel-recommender\u002Fexamples\u002Fprofile-view.md",{"path":130,"resourceType":110,"resourceTypeDesc":111,"sizeBytes":131,"sourceHtmlUrl":132},"examples\u002Ftask-routing.md",5791,"https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Farchive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.22.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fmodel-recommender\u002Fexamples\u002Ftask-routing.md",{"path":134,"resourceType":110,"resourceTypeDesc":111,"sizeBytes":135,"sourceHtmlUrl":136},"mcp\u002Fmcp-config.json",217,"https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Farchive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.22.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fmodel-recommender\u002Fmcp\u002Fmcp-config.json",{"path":138,"resourceType":110,"resourceTypeDesc":111,"sizeBytes":139,"sourceHtmlUrl":140},"mcp\u002Fmodel_scores.json",66710,"https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Farchive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.22.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fmodel-recommender\u002Fmcp\u002Fmodel_scores.json",{"path":142,"resourceType":110,"resourceTypeDesc":111,"sizeBytes":143,"sourceHtmlUrl":144},"mcp\u002FSERVER.md",2824,"https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Farchive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.22.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fmodel-recommender\u002Fmcp\u002FSERVER.md",{"path":146,"resourceType":147,"resourceTypeDesc":148,"sizeBytes":149,"sourceHtmlUrl":150},"mcp\u002Fserver.py","SCRIPT","脚本",29404,"https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Farchive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.22.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fmodel-recommender\u002Fmcp\u002Fserver.py",{"path":152,"resourceType":110,"resourceTypeDesc":111,"sizeBytes":153,"sourceHtmlUrl":154},"mcp\u002Fuser_config.json",334,"https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Farchive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.22.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fmodel-recommender\u002Fmcp\u002Fuser_config.json",{"path":156,"resourceType":110,"resourceTypeDesc":111,"sizeBytes":157,"sourceHtmlUrl":158},"references\u002Fdimension-specs.md",11831,"https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Farchive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.22.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fmodel-recommender\u002Freferences\u002Fdimension-specs.md",{"path":160,"resourceType":110,"resourceTypeDesc":111,"sizeBytes":161,"sourceHtmlUrl":162},"references\u002Fmodel-profiles.md",17972,"https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Farchive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.22.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fmodel-recommender\u002Freferences\u002Fmodel-profiles.md",{"path":164,"resourceType":110,"resourceTypeDesc":111,"sizeBytes":165,"sourceHtmlUrl":166},"references\u002Froster-quick-ref.md",3558,"https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Farchive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.22.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fmodel-recommender\u002Freferences\u002Froster-quick-ref.md",{"path":168,"resourceType":147,"resourceTypeDesc":148,"sizeBytes":169,"sourceHtmlUrl":170},"scripts\u002Fmigrate_models.py",15849,"https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Farchive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.22.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fmodel-recommender\u002Fscripts\u002Fmigrate_models.py",{"path":172,"resourceType":147,"resourceTypeDesc":148,"sizeBytes":173,"sourceHtmlUrl":174},"scripts\u002Fresolver.py",28782,"https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Farchive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.22.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fmodel-recommender\u002Fscripts\u002Fresolver.py",{"path":176,"resourceType":147,"resourceTypeDesc":148,"sizeBytes":177,"sourceHtmlUrl":178},"scripts\u002Ftest_default_bindings_coverage.py",3054,"https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Farchive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.22.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fmodel-recommender\u002Fscripts\u002Ftest_default_bindings_coverage.py",{"path":180,"resourceType":147,"resourceTypeDesc":148,"sizeBytes":181,"sourceHtmlUrl":182},"scripts\u002Ftest_migrate_models.py",10620,"https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Farchive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.22.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fmodel-recommender\u002Fscripts\u002Ftest_migrate_models.py",{"path":184,"resourceType":147,"resourceTypeDesc":148,"sizeBytes":185,"sourceHtmlUrl":186},"scripts\u002Ftest_resolver.py",29146,"https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Farchive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.22.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fmodel-recommender\u002Fscripts\u002Ftest_resolver.py",[188,209,229,249,266,284],{"skillNo":189,"name":190,"nameZh":6,"description":191,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":192,"categories":193,"keywords":195,"publishedAt":44},"01M6X5MTC89B4ZGXW3JVSQCPF8","skill-management","Manage Skill package manifests as v1 ontology entities.","https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Fsrc\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fskill-management\u002FSKILL.md",[194],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[196,197,198,199,200,201,37,36,202,203,190,29,204,205,206,207,208],"management","skill management","create","update","package","alpha","manage","ontology","as","manifests","v1","skill package","transition",{"skillNo":210,"name":211,"nameZh":6,"description":212,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":213,"categories":214,"keywords":216,"publishedAt":44},"01M6X5MCV74NHW5MEDNHZRF2C8","schema-management","Manage generated processkit schema contracts through deterministic MCP rebuild and inspection workflows.","https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Fsrc\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fschema-management\u002FSKILL.md",[215],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[196,217,218,219,220,221,201,37,222,223,202,224,225,226,29,227,228],"schema","schema management","MCP","workflows","validation","generated","rebuild","contracts","wed","deterministic","contract","mode",{"skillNo":230,"name":231,"nameZh":6,"description":232,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":233,"categories":234,"keywords":235,"publishedAt":44},"01M6X5M5G6YJ96AMZGSCZJ1D13","proposition-management","Record claims, risks, beliefs, world facts, WSJF estimates, and assumptions through the Proposition interface.","https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Fsrc\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fproposition-management\u002FSKILL.md",[],[196,236,237,198,199,238,201,37,239,240,241,34,29,242,243,244,245,246,247,248],"proposition","proposition management","index","log","world","record","creation","event","interface","updates","facts","claims","WSJF",{"skillNo":250,"name":251,"nameZh":6,"description":252,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":253,"categories":254,"keywords":255,"publishedAt":44},"01M6X5KMQ83QN9M6MPWZM7344F","ontology-management","Manage generated v1 ontology entities that do not require a dedicated domain server.","https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Fsrc\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fontology-management\u002FSKILL.md",[],[196,203,256,198,201,257,258,222,259,239,202,260,261,29,262,263,243,264,206,265],"ontology management","lifecycle","archive","roadmap","do","domain","iteration","keep","measurement","generic",{"skillNo":267,"name":268,"nameZh":6,"description":269,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":270,"categories":271,"keywords":272,"publishedAt":44},"01M6X5KCY2DN3SM21RERSFNEBT","okf-compatibility","Import, export, and validate conformant Open Knowledge Format bundles.","https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Fsrc\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fokf-compatibility\u002FSKILL.md",[],[273,274,275,276,201,277,278,279,37,280,281,282,283],"okf","compatibility","okf compatibility","validate","open","knowledge","format","export","bundles","bundle","import",{"skillNo":285,"name":286,"nameZh":6,"description":287,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":288,"categories":289,"keywords":290,"publishedAt":44},"01M6X5JA8S5PNGJVFW4EQY8T83","capability-management","Manage versioned Capability entities and their governed lifecycle.","https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Fsrc\u002Fcontext\u002Fskills\u002Fprocesskit\u002Fcapability-management\u002FSKILL.md",[],[196,291,292,198,199,238,201,257,37,36,239,293,202,241,29,263,243,244,294,208],"capability","capability management","queries","changes"]