[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6X2CVKGSAPDVTNBYFKSMWRB":3,"skill-same:01M6X2CVKGSAPDVTNBYFKSMWRB":95},{"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":42,"linkOnly":43,"markdownContent":44,"markdownBody":45,"frontMatter":46,"refName":59,"commitSha":60,"skillDirectory":61,"forksCount":14,"repositoryHtmlUrl":62,"repositoryHomepageUrl":63,"ownerHtmlUrl":64,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":65,"install":66,"resources":78},"01M6X2CVKGSAPDVTNBYFKSMWRB","task-router",null,"Route a task description to the right processkit skill, project-specific process override, and MCP tool in a single deterministic call — use this at the start of every processkit domain task.","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.23.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Ftask-router\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],"task router","router","task","route","single","v1","at","true","project","domain","deterministic","MCP","call","use","process","work","tool","start","2026-11-10 10:12:30",false,"---\nname: task-router\ndescription: >\n  Route a task description to the right processkit skill, project-specific\n  process override, and MCP tool in a single deterministic call — use this\n  at the start of every processkit domain task.\nmetadata:\n  processkit:\n    apiVersion: processkit.projectious.work\u002Fv1\n    id: SKILL-task-router\n    version: \"1.0.0\"\n    created: 2026-04-11T00:00:00Z\n    category: processkit\n    core: true\n    provides:\n      mcp_tools:\n        - route_task\n---\n\n# Task Router\n\n## Intro\n\n`task-router` is the primary routing entry point for processkit agents.\nCall `route_task(task_description)` once at the start of any domain\ntask. It returns — in a single call, without an LLM — the matching\nskill, the project-specific process override (if any), and the\nrecommended MCP tool. Use it instead of calling `find_skill()` directly.\n\n## Overview\n\n### When to use\n\nCall `route_task()` before any `create_*`, `transition_*`, `link_*`,\nor `record_*` MCP tool. The 1% rule applies: if there is even a 1%\nchance a processkit skill covers this task, route first.\n\n### Routing algorithm\n\nTwo-phase heuristic, no LLM call required:\n\n1. **Phase 1 — domain group match** (cheap keyword classifier).\n   Scores the task against 13 domain groups by keyword overlap.\n   Eliminates ~90% of candidates in one pass.\n\n2. **Phase 2 — tool ranking** (token overlap within the matched group).\n   Scores the ~3–6 tools in the matched group. Returns the top tool\n   with rationale and two runner-up candidates.\n\n3. **Fallback** — if no group scores ≥ 0.3, falls back to the\n   skill-finder trigger-phrase table for cross-domain or meta tasks.\n\n### Reading the result\n\n| Field | What it means |\n|---|---|\n| `skill` | Load this skill's SKILL.md before acting |\n| `skill_description_excerpt` | First 150 chars of skill description — judge fit without loading the full file |\n| `process_override` | If present: read this file before the skill — it contains project-specific overrides |\n| `tool_qualified` | `{server}__{tool}` — collision-safe tool identifier |\n| `confidence` | 0.0–1.0 geometric mean of group and tool scores |\n| `routing_basis` | `keyword_match` = confident; `needs_llm_confirm` = escalate to user\u002FLLM |\n| `candidate_tools[]` | Top-3 scored tools with rationales for fallback |\n\n### When `confidence \u003C 0.5`\n\n`routing_basis` will be `needs_llm_confirm`. Show `candidate_tools[]`\nto the user or pass them to an LLM for disambiguation. Do NOT call a\n`create_*` tool without confirmation when confidence is low.\n\n### When `process_override` is present\n\nRead the process override file **before** the generic skill. It\ncontains project-specific step overrides, gates, and blockers that\nsupersede the skill defaults. Example: `context\u002Fprocesses\u002FPROC-release.md`\noverrides `release-semver` for this project.\n\n## Gotchas\n\n- **Do not call `find_skill()` directly** in normal flow — `route_task()`\n  calls it internally as a fallback. Direct `find_skill()` calls skip\n  the process override lookup and the domain group fast path.\n- **Low confidence is a signal, not a failure.** Confidence \u003C 0.5 means\n  the task straddles multiple domains or uses uncommon vocabulary. Use\n  `candidate_tools[]` to present options.\n- **Task description quality matters.** Verb-noun phrases score best:\n  \"create work item\", \"record decision\", \"log event\". Single words\n  (\"task\", \"log\") are ambiguous — add context.\n\n## Full reference\n\n### MCP server\n\nSee `mcp\u002FSERVER.md` for tool schema and return-shape details.\n\n### Domain groups\n\nThe 13 registered groups: `workitem`, `decision`, `discussion`,\n`event`, `actor`, `scope`, `index`, `skill`, `gate`, `model`,\n`id`, `role`, `binding`.\n\n### Extending the router\n\nTo add a new domain group:\n1. Add an entry to `DOMAIN_GROUPS` in `mcp\u002Fserver.py`.\n2. Add trigger phrases to the `skill-finder` trigger table.\n3. Run the smoke tests: `uv run scripts\u002Fsmoke-test-servers.py`.\n","# Task Router\n\n## Intro\n\n`task-router` is the primary routing entry point for processkit agents.\nCall `route_task(task_description)` once at the start of any domain\ntask. It returns — in a single call, without an LLM — the matching\nskill, the project-specific process override (if any), and the\nrecommended MCP tool. Use it instead of calling `find_skill()` directly.\n\n## Overview\n\n### When to use\n\nCall `route_task()` before any `create_*`, `transition_*`, `link_*`,\nor `record_*` MCP tool. The 1% rule applies: if there is even a 1%\nchance a processkit skill covers this task, route first.\n\n### Routing algorithm\n\nTwo-phase heuristic, no LLM call required:\n\n1. **Phase 1 — domain group match** (cheap keyword classifier).\n   Scores the task against 13 domain groups by keyword overlap.\n   Eliminates ~90% of candidates in one pass.\n\n2. **Phase 2 — tool ranking** (token overlap within the matched group).\n   Scores the ~3–6 tools in the matched group. Returns the top tool\n   with rationale and two runner-up candidates.\n\n3. **Fallback** — if no group scores ≥ 0.3, falls back to the\n   skill-finder trigger-phrase table for cross-domain or meta tasks.\n\n### Reading the result\n\n| Field | What it means |\n|---|---|\n| `skill` | Load this skill's SKILL.md before acting |\n| `skill_description_excerpt` | First 150 chars of skill description — judge fit without loading the full file |\n| `process_override` | If present: read this file before the skill — it contains project-specific overrides |\n| `tool_qualified` | `{server}__{tool}` — collision-safe tool identifier |\n| `confidence` | 0.0–1.0 geometric mean of group and tool scores |\n| `routing_basis` | `keyword_match` = confident; `needs_llm_confirm` = escalate to user\u002FLLM |\n| `candidate_tools[]` | Top-3 scored tools with rationales for fallback |\n\n### When `confidence \u003C 0.5`\n\n`routing_basis` will be `needs_llm_confirm`. Show `candidate_tools[]`\nto the user or pass them to an LLM for disambiguation. Do NOT call a\n`create_*` tool without confirmation when confidence is low.\n\n### When `process_override` is present\n\nRead the process override file **before** the generic skill. It\ncontains project-specific step overrides, gates, and blockers that\nsupersede the skill defaults. Example: `context\u002Fprocesses\u002FPROC-release.md`\noverrides `release-semver` for this project.\n\n## Gotchas\n\n- **Do not call `find_skill()` directly** in normal flow — `route_task()`\n  calls it internally as a fallback. Direct `find_skill()` calls skip\n  the process override lookup and the domain group fast path.\n- **Low confidence is a signal, not a failure.** Confidence \u003C 0.5 means\n  the task straddles multiple domains or uses uncommon vocabulary. Use\n  `candidate_tools[]` to present options.\n- **Task description quality matters.** Verb-noun phrases score best:\n  \"create work item\", \"record decision\", \"log event\". Single words\n  (\"task\", \"log\") are ambiguous — add context.\n\n## Full reference\n\n### MCP server\n\nSee `mcp\u002FSERVER.md` for tool schema and return-shape details.\n\n### Domain groups\n\nThe 13 registered groups: `workitem`, `decision`, `discussion`,\n`event`, `actor`, `scope`, `index`, `skill`, `gate`, `model`,\n`id`, `role`, `binding`.\n\n### Extending the router\n\nTo add a new domain group:\n1. Add an entry to `DOMAIN_GROUPS` in `mcp\u002Fserver.py`.\n2. Add trigger phrases to the `skill-finder` trigger table.\n3. Run the smoke tests: `uv run scripts\u002Fsmoke-test-servers.py`.\n",{"name":5,"metadata":47,"description":58},{"processkit":48},{"id":49,"core":50,"created":51,"version":52,"category":53,"provides":54,"apiVersion":57},"SKILL-task-router",true,1775865600000,"1.0.0","processkit",{"mcp_tools":55},[56],"route_task","processkit.projectious.work\u002Fv1","Route a task description to the right processkit skill, project-specific process override, and MCP tool in a single deterministic call — use this at the start of every processkit domain task.\n","main","4876a92620ee792aac2ac9a1a806322d8a572367","archive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.23.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Ftask-router","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":67,"prompt":77,"zipAvailable":50},[68,71,74],{"tool":69,"command":70},"npx","npx skills add projectious-work\u002Fprocesskit --skill task-router",{"tool":72,"command":73},"bunx","bunx skills add projectious-work\u002Fprocesskit --skill task-router",{"tool":75,"command":76},"pnpm","pnpm dlx skills add projectious-work\u002Fprocesskit --skill task-router","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Farchive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.23.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Ftask-router\u002FSKILL.md",[79,85,89],{"path":80,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":83,"sourceHtmlUrl":84},"mcp\u002Fmcp-config.json","REFERENCE","参考文档",205,"https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Farchive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.23.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Ftask-router\u002Fmcp\u002Fmcp-config.json",{"path":86,"resourceType":81,"resourceTypeDesc":82,"sizeBytes":87,"sourceHtmlUrl":88},"mcp\u002FSERVER.md",2486,"https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Farchive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.23.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Ftask-router\u002Fmcp\u002FSERVER.md",{"path":90,"resourceType":91,"resourceTypeDesc":92,"sizeBytes":93,"sourceHtmlUrl":94},"mcp\u002Fserver.py","SCRIPT","脚本",24643,"https:\u002F\u002Fgithub.com\u002Fprojectious-work\u002Fprocesskit\u002Fblob\u002Fmain\u002Farchive\u002Fprocesskit-install-20261101\u002Fcontext\u002Ftemplates\u002Fprocesskit\u002Fv0.23.0\u002Fcontext\u002Fskills\u002Fprocesskit\u002Ftask-router\u002Fmcp\u002Fserver.py",[96,118,136,157,173,191],{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":103,"publishedAt":42},"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",[102],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[104,105,106,107,108,109,39,110,111,112,98,113,114,115,29,116,117],"management","skill management","create","update","package","alpha","list","manage","ontology","get","as","manifests","skill package","transition",{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":125,"publishedAt":42},"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",[124],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[104,126,127,35,128,129,109,39,130,131,111,132,133,34,113,134,135],"schema","schema management","workflows","validation","generated","rebuild","contracts","wed","contract","mode",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":142,"publishedAt":42},"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",[],[104,143,144,106,107,145,109,39,146,147,148,149,113,150,151,152,153,154,155,156],"proposition","proposition management","index","log","world","record","query","creation","event","interface","updates","facts","claims","WSJF",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":163,"publishedAt":42},"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",[],[104,112,164,106,109,165,166,130,167,146,111,168,33,113,169,170,151,171,29,172],"ontology management","lifecycle","archive","roadmap","do","iteration","keep","measurement","generic",{"skillNo":174,"name":175,"nameZh":6,"description":176,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":177,"categories":178,"keywords":179,"publishedAt":42},"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",[],[180,181,182,183,109,184,185,186,39,187,188,189,190],"okf","compatibility","okf compatibility","validate","open","knowledge","format","export","bundles","bundle","import",{"skillNo":192,"name":193,"nameZh":6,"description":194,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":195,"categories":196,"keywords":197,"publishedAt":42},"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",[],[104,198,199,106,107,145,109,165,39,110,146,200,111,148,113,170,151,152,201,117],"capability","capability management","queries","changes"]