[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CAYN9KMB97PCPD5D8YWC5G":3,"skill-same:01M6CAYN9KMB97PCPD5D8YWC5G":139},{"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":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":48,"repositoryHtmlUrl":49,"repositoryHomepageUrl":50,"ownerHtmlUrl":51,"ownerBlogUrl":52,"ownerDescription":53,"updatedAt":54,"install":55,"resources":68},"01M6CAYN9KMB97PCPD5D8YWC5G","nl-router",null,"Route natural language requests to appropriate skills and workflows by parsing intent and matching trigger patterns","jmagly\u002Faiwg","jmagly","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1159087?v=4","01M6C10AK8N2WCSQN11FYGTJWN","Joseph Magly","01M6C10AQ8A2RMED1Y1BSVY7NF",229,"MIT","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Futils\u002Fskills\u002Fnl-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],"nl router","router","nl","workflows","parsing","intent","language","patterns","natural language","route","matching","trigger","requests","2026-11-10 10:12:30",false,"---\nnamespace: aiwg\nname: nl-router\nplatforms: [all]\ndescription: Route natural language requests to appropriate skills and workflows by parsing intent and matching trigger patterns\n---\n\n# nl-router\n\nRoute natural language requests to appropriate skills and workflows.\n\n## Triggers\n\n\nAlternate expressions and non-obvious activations (primary phrases are matched automatically from the skill description):\n\n- \"route this\" → explicit NL routing request\n- \"what skill handles [X]\" → skill discovery\n\n## Purpose\n\nThis skill interprets natural language requests and routes them to the appropriate skills or workflows by:\n- Parsing user intent from natural language\n- Matching to available skills and commands\n- Handling ambiguous requests with clarification\n- Suggesting relevant actions\n- Learning from routing patterns\n\n## Behavior\n\nWhen triggered, this skill:\n\n1. **Parses user intent**:\n   - Extract action verbs\n   - Identify objects\u002Ftargets\n   - Detect qualifiers and constraints\n   - Recognize context from conversation\n\n2. **Matches to skills**:\n   - Search skill trigger patterns\n   - Score match confidence\n   - Consider context relevance\n\n3. **Routes request**:\n   - High confidence: Route directly\n   - Medium confidence: Confirm with user\n   - Low confidence: Offer options\n   - No match: Suggest alternatives\n\n4. **Handles follow-ups**:\n   - Track routing context\n   - Enable corrections\n   - Learn from feedback\n\n## Routing Patterns\n\n### SDLC Workflows\n\n```yaml\nsdlc_patterns:\n  phase_transitions:\n    patterns:\n      - \"transition to {phase}\"\n      - \"move to {phase}\"\n      - \"start {phase}\"\n      - \"begin {phase}\"\n      - \"ready for {phase}\"\n    routes_to: flow-{from}-to-{to}\n    extract: [from_phase, to_phase]\n\n  gate_checks:\n    patterns:\n      - \"check gate\"\n      - \"can we transition\"\n      - \"ready for {phase}\"\n      - \"validate {gate}\"\n      - \"gate check\"\n    routes_to: gate-evaluation\n    extract: [gate_name, phase]\n\n  project_status:\n    patterns:\n      - \"where are we\"\n      - \"what's next\"\n      - \"project status\"\n      - \"current phase\"\n      - \"status update\"\n    routes_to: project-awareness\n    action: status_report\n\n  risk_management:\n    patterns:\n      - \"update risks\"\n      - \"risk review\"\n      - \"new risk\"\n      - \"mitigate {risk}\"\n    routes_to: risk-cycle\n    extract: [risk_id, action]\n\n  security_review:\n    patterns:\n      - \"security review\"\n      - \"run security\"\n      - \"threat model\"\n      - \"security scan\"\n    routes_to: security-assessment\n    extract: [scope]\n```\n\n### Artifact Operations\n\n```yaml\nartifact_patterns:\n  create:\n    patterns:\n      - \"create {artifact}\"\n      - \"generate {artifact}\"\n      - \"new {artifact}\"\n      - \"draft {artifact}\"\n    routes_to: artifact-orchestration\n    extract: [artifact_type]\n\n  review:\n    patterns:\n      - \"review {artifact}\"\n      - \"check {artifact}\"\n      - \"validate {artifact}\"\n    routes_to: artifact_type_specific_review\n    extract: [artifact_type]\n\n  trace:\n    patterns:\n      - \"trace {requirement}\"\n      - \"what implements {id}\"\n      - \"coverage for {id}\"\n    routes_to: traceability-check\n    extract: [requirement_id]\n```\n\n### Marketing Workflows\n\n```yaml\nmarketing_patterns:\n  brand_review:\n    patterns:\n      - \"brand review\"\n      - \"check brand compliance\"\n      - \"is this on-brand\"\n      - \"brand audit\"\n    routes_to: brand-compliance\n    extract: [asset_path]\n\n  approval:\n    patterns:\n      - \"submit for approval\"\n      - \"approval workflow\"\n      - \"get sign-off\"\n      - \"approval status\"\n    routes_to: approval-workflow\n    extract: [asset_id]\n\n  performance:\n    patterns:\n      - \"how are we doing\"\n      - \"marketing report\"\n      - \"performance summary\"\n      - \"campaign results\"\n    routes_to: performance-digest\n    extract: [period, channel]\n\n  competitive:\n    patterns:\n      - \"competitor analysis\"\n      - \"what are competitors doing\"\n      - \"competitive landscape\"\n    routes_to: competitive-intel\n    extract: [competitor_name]\n```\n\n### Research & Investigation\n\n```yaml\nresearch_patterns:\n  lookup:\n    patterns:\n      - \"look up {topic}\"\n      - \"what does {thing} do\"\n      - \"how does {thing} work\"\n      - \"find documentation for {topic}\"\n      - \"search for {query}\"\n      - \"check the docs for {topic}\"\n      - \"read about {topic}\"\n      - \"research {topic}\"\n    routes_to: research-investigation\n    extract: [topic, scope]\n    rule_activation: research-before-decision\n\n  codebase_exploration:\n    patterns:\n      - \"how is {feature} implemented\"\n      - \"where is {thing} defined\"\n      - \"find {pattern} in the codebase\"\n      - \"what pattern does this project use for {thing}\"\n      - \"show me examples of {pattern}\"\n    routes_to: codebase-exploration\n    extract: [feature, pattern]\n    rule_activation: research-before-decision\n\n  error_investigation:\n    patterns:\n      - \"why is {thing} failing\"\n      - \"investigate {error}\"\n      - \"debug {issue}\"\n      - \"what's causing {problem}\"\n      - \"root cause of {error}\"\n    routes_to: error-diagnosis\n    extract: [error, context]\n    rule_activation: research-before-decision\n```\n\n### Planning & Strategy\n\n```yaml\nplanning_patterns:\n  approach_planning:\n    patterns:\n      - \"plan how to {task}\"\n      - \"design approach for {task}\"\n      - \"think through {task}\"\n      - \"strategize {task}\"\n      - \"how should I approach {task}\"\n      - \"what's the best way to {task}\"\n    routes_to: approach-planning\n    extract: [task, constraints]\n\n  implementation_planning:\n    patterns:\n      - \"plan the implementation of {feature}\"\n      - \"break down {task}\"\n      - \"outline the steps for {task}\"\n      - \"what do I need to do for {task}\"\n    routes_to: implementation-planning\n    extract: [feature, scope]\n\n  decision_support:\n    patterns:\n      - \"help me decide between {options}\"\n      - \"compare {a} and {b}\"\n      - \"trade-off analysis for {topic}\"\n      - \"which should I choose\"\n      - \"pros and cons of {approach}\"\n    routes_to: decision-support\n    extract: [decision_topic, options]\n```\n\n### Clarification & Recovery\n\n```yaml\nclarification_patterns:\n  re_read:\n    patterns:\n      - \"re-read my instructions\"\n      - \"that's not what I asked\"\n      - \"I said {correction}\"\n      - \"go back and read what I wrote\"\n      - \"you missed {thing}\"\n      - \"I already told you {thing}\"\n    routes_to: instruction-reparse\n    rule_activation: instruction-comprehension\n    priority: high\n\n  confusion:\n    patterns:\n      - \"I'm confused about {topic}\"\n      - \"can you explain {thing}\"\n      - \"what do you mean by {thing}\"\n      - \"I don't understand {thing}\"\n    routes_to: clarification\n    extract: [topic]\n\n  correction:\n    patterns:\n      - \"no, I meant {correction}\"\n      - \"not {wrong}, use {right}\"\n      - \"change that to {correction}\"\n      - \"that's wrong, it should be {correction}\"\n    routes_to: instruction-correction\n    rule_activation: instruction-comprehension\n    priority: high\n    extract: [correction]\n```\n\n### Utility Operations\n\n```yaml\nutility_patterns:\n  decision:\n    patterns:\n      - \"help me decide\"\n      - \"compare options\"\n      - \"trade-off analysis\"\n      - \"which should I choose\"\n    routes_to: decision-support\n    extract: [decision_topic]\n\n  test_coverage:\n    patterns:\n      - \"test coverage\"\n      - \"what's not tested\"\n      - \"coverage report\"\n    routes_to: test-coverage\n    extract: [scope]\n\n  incident:\n    patterns:\n      - \"production issue\"\n      - \"system down\"\n      - \"incident\"\n      - \"P0\"\n      - \"SEV1\"\n    routes_to: incident-triage\n    priority: urgent\n\n  config:\n    patterns:\n      - \"validate config\"\n      - \"check setup\"\n      - \"config issues\"\n    routes_to: config-validator\n```\n\n## Intent Classification\n\n### Action Verbs\n\n```yaml\naction_verbs:\n  create:\n    words: [create, generate, new, draft, make, build, write]\n    intent: creation\n\n  review:\n    words: [review, check, validate, verify, audit, assess]\n    intent: validation\n\n  update:\n    words: [update, change, modify, edit, revise]\n    intent: modification\n\n  delete:\n    words: [delete, remove, deprecate, archive]\n    intent: removal\n\n  analyze:\n    words: [analyze, understand, explain, investigate, explore]\n    intent: analysis\n\n  research:\n    words: [research, look up, find out, search for, read about, check docs]\n    intent: investigation\n    rule_activation: research-before-decision\n\n  plan:\n    words: [plan, design, strategize, outline, think through, approach]\n    intent: planning\n\n  clarify:\n    words: [clarify, re-read, explain, what did I, I said, not what I asked]\n    intent: clarification\n    rule_activation: instruction-comprehension\n\n  transition:\n    words: [transition, move, progress, advance, start, begin]\n    intent: workflow_progression\n\n  compare:\n    words: [compare, contrast, versus, vs, trade-off]\n    intent: comparison\n```\n\n### Object Mappings\n\n```yaml\nobject_mappings:\n  artifacts:\n    sad: software-architecture-document\n    adr: architecture-decision-record\n    test_plan: test-plan\n    requirements: software-requirements-spec\n    threat_model: threat-model\n\n  phases:\n    inception: inception\n    elaboration: elaboration\n    construction: construction\n    transition: transition\n    production: production\n\n  gates:\n    lom: lifecycle-objective-milestone\n    abm: architecture-baseline-milestone\n    ioc: initial-operational-capability\n    prm: product-release-milestone\n```\n\n## Confidence Scoring\n\n```yaml\nconfidence_levels:\n  high:\n    threshold: 0.85\n    action: route_directly\n    example: \"create SAD\" → artifact-orchestration (SAD)\n\n  medium:\n    threshold: 0.60\n    action: confirm_before_routing\n    example: \"review this\" → \"Did you mean brand review or code review?\"\n\n  low:\n    threshold: 0.40\n    action: offer_options\n    example: \"help\" → \"Here are things I can help with...\"\n\n  none:\n    threshold: 0.0\n    action: clarify\n    example: \"do the thing\" → \"I'm not sure what you'd like to do. Can you clarify?\"\n```\n\n## Routing Response Format\n\n### Direct Route (High Confidence)\n\n```yaml\nrouting_response:\n  confidence: high\n  matched_skill: artifact-orchestration\n  extracted_params:\n    artifact_type: sad\n  message: \"Creating Software Architecture Document...\"\n  next_action: invoke_skill\n```\n\n### Confirmation Route (Medium Confidence)\n\n```yaml\nrouting_response:\n  confidence: medium\n  candidates:\n    - skill: brand-compliance\n      confidence: 0.72\n      reason: \"brand\" keyword matched\n    - skill: code-reviewer\n      confidence: 0.65\n      reason: \"review\" action detected\n  message: \"I found multiple possible actions. Did you mean...\"\n  next_action: await_clarification\n```\n\n### Options Route (Low Confidence)\n\n```yaml\nrouting_response:\n  confidence: low\n  suggestions:\n    - category: Documentation\n      actions: [create SAD, generate ADR, draft requirements]\n    - category: Review\n      actions: [brand review, code review, security review]\n    - category: Status\n      actions: [project status, coverage report, risk review]\n  message: \"I'm not sure what you'd like to do. Here are some options...\"\n  next_action: await_selection\n```\n\n## Usage Examples\n\n### Clear Intent\n\n```\nUser: \"Generate the architecture document\"\n\nSkill routes:\n- Intent: create\n- Object: architecture document → SAD\n- Confidence: 0.95 (high)\n\nOutput:\n\"Routing to artifact-orchestration to generate Software Architecture Document.\n\nStarting SAD generation...\"\n\n[Invokes artifact-orchestration with artifact_type=sad]\n```\n\n### Ambiguous Intent\n\n```\nUser: \"Review the landing page\"\n\nSkill analyzes:\n- Intent: review\n- Object: landing page\n- Possible skills: brand-compliance, qa-protocol, code-reviewer\n- Confidence: 0.65 (medium)\n\nOutput:\n\"I found a few review options for 'landing page':\n\n1. **Brand Review** - Check brand compliance\n2. **QA Review** - Check quality and specs\n3. **Content Review** - Check copy and messaging\n\nWhich would you like?\"\n```\n\n### Unclear Intent\n\n```\nUser: \"Help with the project\"\n\nSkill analyzes:\n- Intent: unclear\n- Object: project (generic)\n- Confidence: 0.30 (low)\n\nOutput:\n\"I can help with many things! Here are some common actions:\n\n**Project Status**\n- Where are we? → Project status\n- What's next? → Phase recommendations\n\n**Documentation**\n- Create SAD → Architecture document\n- Generate ADR → Decision record\n\n**Reviews**\n- Security review → Threat assessment\n- Brand review → Compliance check\n\nWhat would you like to do?\"\n```\n\n### Contextual Routing\n\n```\nUser: (After discussing a bug) \"Create a ticket for this\"\n\nSkill analyzes:\n- Context: Bug discussion\n- Intent: create\n- Object: ticket\n- Inference: incident or defect ticket\n- Confidence: 0.80 (high with context)\n\nOutput:\n\"Based on our discussion, I'll create an incident ticket for the authentication issue.\n\nRouting to incident-triage...\"\n```\n\n## Integration\n\nThis skill is the central router and integrates with all other skills:\n- All SDLC skills\n- All MMK skills\n- All utility skills\n- All workflow commands\n\n## Configuration\n\n### Custom Patterns\n\nAdd custom routing patterns in `.aiwg\u002Fconfig\u002Frouting.yaml`:\n\n```yaml\ncustom_patterns:\n  - trigger: \"standup update\"\n    routes_to: project-awareness\n    action: standup_summary\n\n  - trigger: \"weekly report\"\n    routes_to: performance-digest\n    params:\n      period: weekly\n```\n\n### Priority Overrides\n\n```yaml\npriority_overrides:\n  # Urgent patterns always match first\n  urgent:\n    - \"production down\"\n    - \"SEV1\"\n    - \"security breach\"\n\n  # Exact matches before fuzzy\n  exact_first: true\n\n  # Prefer skill in current context\n  context_boost: 0.15\n```\n\n## Output Locations\n\n- Routing logs: `.aiwg\u002Flogs\u002Frouting\u002F`\n- Pattern analytics: `.aiwg\u002Fanalytics\u002Frouting-patterns.json`\n\n## References\n\n- Skill catalog: Available skills from all frameworks\n- Command catalog: Available workflow commands\n- Translation table: docs\u002Fsimple-language-translations.md\n","# nl-router\n\nRoute natural language requests to appropriate skills and workflows.\n\n## Triggers\n\n\nAlternate expressions and non-obvious activations (primary phrases are matched automatically from the skill description):\n\n- \"route this\" → explicit NL routing request\n- \"what skill handles [X]\" → skill discovery\n\n## Purpose\n\nThis skill interprets natural language requests and routes them to the appropriate skills or workflows by:\n- Parsing user intent from natural language\n- Matching to available skills and commands\n- Handling ambiguous requests with clarification\n- Suggesting relevant actions\n- Learning from routing patterns\n\n## Behavior\n\nWhen triggered, this skill:\n\n1. **Parses user intent**:\n   - Extract action verbs\n   - Identify objects\u002Ftargets\n   - Detect qualifiers and constraints\n   - Recognize context from conversation\n\n2. **Matches to skills**:\n   - Search skill trigger patterns\n   - Score match confidence\n   - Consider context relevance\n\n3. **Routes request**:\n   - High confidence: Route directly\n   - Medium confidence: Confirm with user\n   - Low confidence: Offer options\n   - No match: Suggest alternatives\n\n4. **Handles follow-ups**:\n   - Track routing context\n   - Enable corrections\n   - Learn from feedback\n\n## Routing Patterns\n\n### SDLC Workflows\n\n```yaml\nsdlc_patterns:\n  phase_transitions:\n    patterns:\n      - \"transition to {phase}\"\n      - \"move to {phase}\"\n      - \"start {phase}\"\n      - \"begin {phase}\"\n      - \"ready for {phase}\"\n    routes_to: flow-{from}-to-{to}\n    extract: [from_phase, to_phase]\n\n  gate_checks:\n    patterns:\n      - \"check gate\"\n      - \"can we transition\"\n      - \"ready for {phase}\"\n      - \"validate {gate}\"\n      - \"gate check\"\n    routes_to: gate-evaluation\n    extract: [gate_name, phase]\n\n  project_status:\n    patterns:\n      - \"where are we\"\n      - \"what's next\"\n      - \"project status\"\n      - \"current phase\"\n      - \"status update\"\n    routes_to: project-awareness\n    action: status_report\n\n  risk_management:\n    patterns:\n      - \"update risks\"\n      - \"risk review\"\n      - \"new risk\"\n      - \"mitigate {risk}\"\n    routes_to: risk-cycle\n    extract: [risk_id, action]\n\n  security_review:\n    patterns:\n      - \"security review\"\n      - \"run security\"\n      - \"threat model\"\n      - \"security scan\"\n    routes_to: security-assessment\n    extract: [scope]\n```\n\n### Artifact Operations\n\n```yaml\nartifact_patterns:\n  create:\n    patterns:\n      - \"create {artifact}\"\n      - \"generate {artifact}\"\n      - \"new {artifact}\"\n      - \"draft {artifact}\"\n    routes_to: artifact-orchestration\n    extract: [artifact_type]\n\n  review:\n    patterns:\n      - \"review {artifact}\"\n      - \"check {artifact}\"\n      - \"validate {artifact}\"\n    routes_to: artifact_type_specific_review\n    extract: [artifact_type]\n\n  trace:\n    patterns:\n      - \"trace {requirement}\"\n      - \"what implements {id}\"\n      - \"coverage for {id}\"\n    routes_to: traceability-check\n    extract: [requirement_id]\n```\n\n### Marketing Workflows\n\n```yaml\nmarketing_patterns:\n  brand_review:\n    patterns:\n      - \"brand review\"\n      - \"check brand compliance\"\n      - \"is this on-brand\"\n      - \"brand audit\"\n    routes_to: brand-compliance\n    extract: [asset_path]\n\n  approval:\n    patterns:\n      - \"submit for approval\"\n      - \"approval workflow\"\n      - \"get sign-off\"\n      - \"approval status\"\n    routes_to: approval-workflow\n    extract: [asset_id]\n\n  performance:\n    patterns:\n      - \"how are we doing\"\n      - \"marketing report\"\n      - \"performance summary\"\n      - \"campaign results\"\n    routes_to: performance-digest\n    extract: [period, channel]\n\n  competitive:\n    patterns:\n      - \"competitor analysis\"\n      - \"what are competitors doing\"\n      - \"competitive landscape\"\n    routes_to: competitive-intel\n    extract: [competitor_name]\n```\n\n### Research & Investigation\n\n```yaml\nresearch_patterns:\n  lookup:\n    patterns:\n      - \"look up {topic}\"\n      - \"what does {thing} do\"\n      - \"how does {thing} work\"\n      - \"find documentation for {topic}\"\n      - \"search for {query}\"\n      - \"check the docs for {topic}\"\n      - \"read about {topic}\"\n      - \"research {topic}\"\n    routes_to: research-investigation\n    extract: [topic, scope]\n    rule_activation: research-before-decision\n\n  codebase_exploration:\n    patterns:\n      - \"how is {feature} implemented\"\n      - \"where is {thing} defined\"\n      - \"find {pattern} in the codebase\"\n      - \"what pattern does this project use for {thing}\"\n      - \"show me examples of {pattern}\"\n    routes_to: codebase-exploration\n    extract: [feature, pattern]\n    rule_activation: research-before-decision\n\n  error_investigation:\n    patterns:\n      - \"why is {thing} failing\"\n      - \"investigate {error}\"\n      - \"debug {issue}\"\n      - \"what's causing {problem}\"\n      - \"root cause of {error}\"\n    routes_to: error-diagnosis\n    extract: [error, context]\n    rule_activation: research-before-decision\n```\n\n### Planning & Strategy\n\n```yaml\nplanning_patterns:\n  approach_planning:\n    patterns:\n      - \"plan how to {task}\"\n      - \"design approach for {task}\"\n      - \"think through {task}\"\n      - \"strategize {task}\"\n      - \"how should I approach {task}\"\n      - \"what's the best way to {task}\"\n    routes_to: approach-planning\n    extract: [task, constraints]\n\n  implementation_planning:\n    patterns:\n      - \"plan the implementation of {feature}\"\n      - \"break down {task}\"\n      - \"outline the steps for {task}\"\n      - \"what do I need to do for {task}\"\n    routes_to: implementation-planning\n    extract: [feature, scope]\n\n  decision_support:\n    patterns:\n      - \"help me decide between {options}\"\n      - \"compare {a} and {b}\"\n      - \"trade-off analysis for {topic}\"\n      - \"which should I choose\"\n      - \"pros and cons of {approach}\"\n    routes_to: decision-support\n    extract: [decision_topic, options]\n```\n\n### Clarification & Recovery\n\n```yaml\nclarification_patterns:\n  re_read:\n    patterns:\n      - \"re-read my instructions\"\n      - \"that's not what I asked\"\n      - \"I said {correction}\"\n      - \"go back and read what I wrote\"\n      - \"you missed {thing}\"\n      - \"I already told you {thing}\"\n    routes_to: instruction-reparse\n    rule_activation: instruction-comprehension\n    priority: high\n\n  confusion:\n    patterns:\n      - \"I'm confused about {topic}\"\n      - \"can you explain {thing}\"\n      - \"what do you mean by {thing}\"\n      - \"I don't understand {thing}\"\n    routes_to: clarification\n    extract: [topic]\n\n  correction:\n    patterns:\n      - \"no, I meant {correction}\"\n      - \"not {wrong}, use {right}\"\n      - \"change that to {correction}\"\n      - \"that's wrong, it should be {correction}\"\n    routes_to: instruction-correction\n    rule_activation: instruction-comprehension\n    priority: high\n    extract: [correction]\n```\n\n### Utility Operations\n\n```yaml\nutility_patterns:\n  decision:\n    patterns:\n      - \"help me decide\"\n      - \"compare options\"\n      - \"trade-off analysis\"\n      - \"which should I choose\"\n    routes_to: decision-support\n    extract: [decision_topic]\n\n  test_coverage:\n    patterns:\n      - \"test coverage\"\n      - \"what's not tested\"\n      - \"coverage report\"\n    routes_to: test-coverage\n    extract: [scope]\n\n  incident:\n    patterns:\n      - \"production issue\"\n      - \"system down\"\n      - \"incident\"\n      - \"P0\"\n      - \"SEV1\"\n    routes_to: incident-triage\n    priority: urgent\n\n  config:\n    patterns:\n      - \"validate config\"\n      - \"check setup\"\n      - \"config issues\"\n    routes_to: config-validator\n```\n\n## Intent Classification\n\n### Action Verbs\n\n```yaml\naction_verbs:\n  create:\n    words: [create, generate, new, draft, make, build, write]\n    intent: creation\n\n  review:\n    words: [review, check, validate, verify, audit, assess]\n    intent: validation\n\n  update:\n    words: [update, change, modify, edit, revise]\n    intent: modification\n\n  delete:\n    words: [delete, remove, deprecate, archive]\n    intent: removal\n\n  analyze:\n    words: [analyze, understand, explain, investigate, explore]\n    intent: analysis\n\n  research:\n    words: [research, look up, find out, search for, read about, check docs]\n    intent: investigation\n    rule_activation: research-before-decision\n\n  plan:\n    words: [plan, design, strategize, outline, think through, approach]\n    intent: planning\n\n  clarify:\n    words: [clarify, re-read, explain, what did I, I said, not what I asked]\n    intent: clarification\n    rule_activation: instruction-comprehension\n\n  transition:\n    words: [transition, move, progress, advance, start, begin]\n    intent: workflow_progression\n\n  compare:\n    words: [compare, contrast, versus, vs, trade-off]\n    intent: comparison\n```\n\n### Object Mappings\n\n```yaml\nobject_mappings:\n  artifacts:\n    sad: software-architecture-document\n    adr: architecture-decision-record\n    test_plan: test-plan\n    requirements: software-requirements-spec\n    threat_model: threat-model\n\n  phases:\n    inception: inception\n    elaboration: elaboration\n    construction: construction\n    transition: transition\n    production: production\n\n  gates:\n    lom: lifecycle-objective-milestone\n    abm: architecture-baseline-milestone\n    ioc: initial-operational-capability\n    prm: product-release-milestone\n```\n\n## Confidence Scoring\n\n```yaml\nconfidence_levels:\n  high:\n    threshold: 0.85\n    action: route_directly\n    example: \"create SAD\" → artifact-orchestration (SAD)\n\n  medium:\n    threshold: 0.60\n    action: confirm_before_routing\n    example: \"review this\" → \"Did you mean brand review or code review?\"\n\n  low:\n    threshold: 0.40\n    action: offer_options\n    example: \"help\" → \"Here are things I can help with...\"\n\n  none:\n    threshold: 0.0\n    action: clarify\n    example: \"do the thing\" → \"I'm not sure what you'd like to do. Can you clarify?\"\n```\n\n## Routing Response Format\n\n### Direct Route (High Confidence)\n\n```yaml\nrouting_response:\n  confidence: high\n  matched_skill: artifact-orchestration\n  extracted_params:\n    artifact_type: sad\n  message: \"Creating Software Architecture Document...\"\n  next_action: invoke_skill\n```\n\n### Confirmation Route (Medium Confidence)\n\n```yaml\nrouting_response:\n  confidence: medium\n  candidates:\n    - skill: brand-compliance\n      confidence: 0.72\n      reason: \"brand\" keyword matched\n    - skill: code-reviewer\n      confidence: 0.65\n      reason: \"review\" action detected\n  message: \"I found multiple possible actions. Did you mean...\"\n  next_action: await_clarification\n```\n\n### Options Route (Low Confidence)\n\n```yaml\nrouting_response:\n  confidence: low\n  suggestions:\n    - category: Documentation\n      actions: [create SAD, generate ADR, draft requirements]\n    - category: Review\n      actions: [brand review, code review, security review]\n    - category: Status\n      actions: [project status, coverage report, risk review]\n  message: \"I'm not sure what you'd like to do. Here are some options...\"\n  next_action: await_selection\n```\n\n## Usage Examples\n\n### Clear Intent\n\n```\nUser: \"Generate the architecture document\"\n\nSkill routes:\n- Intent: create\n- Object: architecture document → SAD\n- Confidence: 0.95 (high)\n\nOutput:\n\"Routing to artifact-orchestration to generate Software Architecture Document.\n\nStarting SAD generation...\"\n\n[Invokes artifact-orchestration with artifact_type=sad]\n```\n\n### Ambiguous Intent\n\n```\nUser: \"Review the landing page\"\n\nSkill analyzes:\n- Intent: review\n- Object: landing page\n- Possible skills: brand-compliance, qa-protocol, code-reviewer\n- Confidence: 0.65 (medium)\n\nOutput:\n\"I found a few review options for 'landing page':\n\n1. **Brand Review** - Check brand compliance\n2. **QA Review** - Check quality and specs\n3. **Content Review** - Check copy and messaging\n\nWhich would you like?\"\n```\n\n### Unclear Intent\n\n```\nUser: \"Help with the project\"\n\nSkill analyzes:\n- Intent: unclear\n- Object: project (generic)\n- Confidence: 0.30 (low)\n\nOutput:\n\"I can help with many things! Here are some common actions:\n\n**Project Status**\n- Where are we? → Project status\n- What's next? → Phase recommendations\n\n**Documentation**\n- Create SAD → Architecture document\n- Generate ADR → Decision record\n\n**Reviews**\n- Security review → Threat assessment\n- Brand review → Compliance check\n\nWhat would you like to do?\"\n```\n\n### Contextual Routing\n\n```\nUser: (After discussing a bug) \"Create a ticket for this\"\n\nSkill analyzes:\n- Context: Bug discussion\n- Intent: create\n- Object: ticket\n- Inference: incident or defect ticket\n- Confidence: 0.80 (high with context)\n\nOutput:\n\"Based on our discussion, I'll create an incident ticket for the authentication issue.\n\nRouting to incident-triage...\"\n```\n\n## Integration\n\nThis skill is the central router and integrates with all other skills:\n- All SDLC skills\n- All MMK skills\n- All utility skills\n- All workflow commands\n\n## Configuration\n\n### Custom Patterns\n\nAdd custom routing patterns in `.aiwg\u002Fconfig\u002Frouting.yaml`:\n\n```yaml\ncustom_patterns:\n  - trigger: \"standup update\"\n    routes_to: project-awareness\n    action: standup_summary\n\n  - trigger: \"weekly report\"\n    routes_to: performance-digest\n    params:\n      period: weekly\n```\n\n### Priority Overrides\n\n```yaml\npriority_overrides:\n  # Urgent patterns always match first\n  urgent:\n    - \"production down\"\n    - \"SEV1\"\n    - \"security breach\"\n\n  # Exact matches before fuzzy\n  exact_first: true\n\n  # Prefer skill in current context\n  context_boost: 0.15\n```\n\n## Output Locations\n\n- Routing logs: `.aiwg\u002Flogs\u002Frouting\u002F`\n- Pattern analytics: `.aiwg\u002Fanalytics\u002Frouting-patterns.json`\n\n## References\n\n- Skill catalog: Available skills from all frameworks\n- Command catalog: Available workflow commands\n- Translation table: docs\u002Fsimple-language-translations.md\n",{"name":5,"namespace":42,"platforms":43,"description":7},"aiwg",[44],"all","main","6754967c344ccb087a8de06972f55a41067b291b","agentic\u002Fcode\u002Fplugins\u002Futils\u002Fskills\u002Fnl-router",36,"https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg","https:\u002F\u002Faiwg.io","https:\u002F\u002Fgithub.com\u002Fjmagly","https:\u002F\u002Fintegrolabs.io","ml\u002Fai, industrial automation, safety\u002Fsecurity, ssi\r\n\r\nmagly.net\r\nintegrolabs.io\r\naiwg.io\r\nfortemi.com\r\npagenary.com\r\nbytecask.com","2026-11-12 00:33:10",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add jmagly\u002Faiwg --skill nl-router",{"tool":61,"command":62},"bunx","bunx skills add jmagly\u002Faiwg --skill nl-router",{"tool":64,"command":65},"pnpm","pnpm dlx skills add jmagly\u002Faiwg --skill nl-router","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Futils\u002Fskills\u002Fnl-router\u002FSKILL.md",true,[69,75,79,83,87,91,97,101,105,109,113,117,123,127,131,135],{"path":70,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":73,"sourceHtmlUrl":74},"assets\u002Fbeamer_template_conference.tex","ASSET","资产文件",9983,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fscientific-slides\u002Fassets\u002Fbeamer_template_conference.tex",{"path":76,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":77,"sourceHtmlUrl":78},"assets\u002Fbeamer_template_defense.tex",26503,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fscientific-slides\u002Fassets\u002Fbeamer_template_defense.tex",{"path":80,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":81,"sourceHtmlUrl":82},"assets\u002Fbeamer_template_seminar.tex",23247,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fscientific-slides\u002Fassets\u002Fbeamer_template_seminar.tex",{"path":84,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":85,"sourceHtmlUrl":86},"assets\u002Fpowerpoint_design_guide.md",18989,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fscientific-slides\u002Fassets\u002Fpowerpoint_design_guide.md",{"path":88,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":89,"sourceHtmlUrl":90},"assets\u002Ftiming_guidelines.md",14723,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fscientific-slides\u002Fassets\u002Ftiming_guidelines.md",{"path":92,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":95,"sourceHtmlUrl":96},"references\u002Fbeamer_guide.md","REFERENCE","参考文档",19321,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fscientific-slides\u002Freferences\u002Fbeamer_guide.md",{"path":98,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":99,"sourceHtmlUrl":100},"references\u002Fdata_visualization_slides.md",17863,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fscientific-slides\u002Freferences\u002Fdata_visualization_slides.md",{"path":102,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":103,"sourceHtmlUrl":104},"references\u002Fpresentation_structure.md",22220,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fscientific-slides\u002Freferences\u002Fpresentation_structure.md",{"path":106,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":107,"sourceHtmlUrl":108},"references\u002Fslide_design_principles.md",23878,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fscientific-slides\u002Freferences\u002Fslide_design_principles.md",{"path":110,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":111,"sourceHtmlUrl":112},"references\u002Ftalk_types_guide.md",20146,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fscientific-slides\u002Freferences\u002Ftalk_types_guide.md",{"path":114,"resourceType":93,"resourceTypeDesc":94,"sizeBytes":115,"sourceHtmlUrl":116},"references\u002Fvisual_review_workflow.md",20170,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fscientific-slides\u002Freferences\u002Fvisual_review_workflow.md",{"path":118,"resourceType":119,"resourceTypeDesc":120,"sizeBytes":121,"sourceHtmlUrl":122},"scripts\u002Fgenerate_slide_image_ai.py","SCRIPT","脚本",29060,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fscientific-slides\u002Fscripts\u002Fgenerate_slide_image_ai.py",{"path":124,"resourceType":119,"resourceTypeDesc":120,"sizeBytes":125,"sourceHtmlUrl":126},"scripts\u002Fgenerate_slide_image.py",5309,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fscientific-slides\u002Fscripts\u002Fgenerate_slide_image.py",{"path":128,"resourceType":119,"resourceTypeDesc":120,"sizeBytes":129,"sourceHtmlUrl":130},"scripts\u002Fpdf_to_images.py",6644,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fscientific-slides\u002Fscripts\u002Fpdf_to_images.py",{"path":132,"resourceType":119,"resourceTypeDesc":120,"sizeBytes":133,"sourceHtmlUrl":134},"scripts\u002Fslides_to_pdf.py",7423,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fscientific-slides\u002Fscripts\u002Fslides_to_pdf.py",{"path":136,"resourceType":119,"resourceTypeDesc":120,"sizeBytes":137,"sourceHtmlUrl":138},"scripts\u002Fvalidate_presentation.py",13115,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fscientific-slides\u002Fscripts\u002Fvalidate_presentation.py",[140,168,192,198,205,219],{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":144,"categories":145,"keywords":147,"publishedAt":37},"01M70QA0BSYJ49EES9V4RE8QH1","host-hardening","Read-only system hardening baseline and plan-first host hardening recommendations for SSH, Docker bind addresses, firewall persistence, datastores, exporters and audit retention.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Fsecurity-engineering\u002Fskills\u002Fhost-hardening\u002FSKILL.md",[146],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167],"host","host hardening","hardening","read","re","recommendations","remediation","plan","port","verification","Bash","access","only","retention","audit","never","firewall","bind","secrets","request",{"skillNo":169,"name":170,"nameZh":6,"description":171,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":172,"categories":173,"keywords":178,"publishedAt":37},"01M70PNT2Z4HMZPRBTAF6073NN","exposure-analysis","Read-only firewall analysis and effective host exposure reconstruction for Docker published ports, UFW bypass, stale rules, CDN scope, IPv6 asymmetry and external probe allowlists.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Fforensics\u002Fskills\u002Fexposure-analysis\u002FSKILL.md",[174,177],{"categoryNo":175,"categoryName":176,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[179,180,181,151,182,156,183,184,158,185,148,186,160,187,188,163,164,189,190,191],"exposure analysis","analysis","unknown","credentials","collection","ufw","ports","internet","local","scope","reconstruction","operator","write",{"skillNo":193,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":194,"categories":195,"keywords":197,"publishedAt":37},"01M70P8QATMPKA78E4FT5D2TNA","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsecurity-engineering\u002Fskills\u002Fhost-hardening\u002FSKILL.md",[196],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[150,148,149,159,151,167,154,153,162,155,156,157,158,166,160,161,152,163,164,165],{"skillNo":199,"name":170,"nameZh":6,"description":171,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":200,"categories":201,"keywords":204,"publishedAt":37},"01M70NMPVJ5H0JH131P60FW4R8","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fforensics-complete\u002Fskills\u002Fexposure-analysis\u002FSKILL.md",[202,203],{"categoryNo":175,"categoryName":176,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[180,179,163,182,156,183,158,181,148,186,160,187,188,151,164,185,184,189,190,191],{"skillNo":206,"name":207,"nameZh":6,"description":208,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":209,"categories":210,"keywords":212,"publishedAt":37},"01M6CB4DDR0B4NNCFK7ZK7449H","fixture-skill","Exercise rule delivery.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Frule-delivery\u002Fskills\u002Ffixture-skill\u002FSKILL.md",[211],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[213,214,215,216,217,218],"fixture skill","fixture","rule","delivery","true","exercise",{"skillNo":220,"name":221,"nameZh":6,"description":222,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":223,"categories":224,"keywords":226,"publishedAt":37},"01M6CB4AVK1W76MFMPP0JP32CJ","pi-local","Pi-local duplicate-precedence fixture.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Fproviders\u002Fpi\u002Fproject\u002F.pi\u002Fskills\u002Fpi-local\u002FSKILL.md",[225],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[227,228,187,229,214],"pi","pi local","duplicate"]