[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6X65E44DQMASD46J28DMSAK":3,"skill-same:01M6X65E44DQMASD46J28DMSAK":86},{"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":53,"commitSha":54,"skillDirectory":55,"forksCount":56,"repositoryHtmlUrl":57,"repositoryHomepageUrl":58,"ownerHtmlUrl":59,"ownerBlogUrl":58,"ownerDescription":60,"updatedAt":61,"install":62,"resources":75},"01M6X65E44DQMASD46J28DMSAK","analysis-skill-router",null,"Use when picking which analysis or project-analysis-* skill fits a request — routes by scope, framework, and symptom — even if the user just says 'analyze this' or 'dig into the codebase'.","event4u-app\u002Fagent-config","event4u-app","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F199339632?v=4","01M6X5TWBNCQCE1VDKT4E9KF7N","event4u.app","01M6X5TWF4HRM266RG2Q5VVH1X",19,"MIT","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fanalysis-skill-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,42,43],"skill router","analysis skill router","router","analysis","project","framework","when","request","codebase","high","which","scope","dig","config","Meta","use","user","just","analyze","discovery","2026-11-10 10:12:30",false,"---\nmodel_tier: high\nname: analysis-skill-router\ndescription: \"Use when picking which analysis or project-analysis-* skill fits a request — routes by scope, framework, and symptom — even if the user just says 'analyze this' or 'dig into the codebase'.\"\ndomain: discovery\nworkspaces:\n  - agent-config-maintainer\npacks:\n  - meta\n---\n\n# analysis-skill-router\n\nA chooser, not a worker. It answers exactly one question — *which skill* — and\nthen gets out of the way. How to actually carry out the work belongs to\nwhichever skill this picks; a chooser that also explains the work reads like\nits own fallback target, which is the defect this file was cut back from.\n\n## When to use\n\nUse this skill when:\n\n* A request may need deep analysis\n* It is unclear which analysis skill should be used\n* Multiple analysis skills could plausibly apply\n* The stack\u002Fframework is known but the correct analysis path is unclear\n* `analysis-autonomous-mode` needs a routing decision\n\nDo NOT use when:\n\n* The correct specialist skill is already obvious\n* The task is not an analysis task\n* The task is normal implementation work without investigation needs\n\n## Procedure\n\n### 1. Classify the scope\n\nPick one: full project · architecture review · broad multi-layer debugging ·\nframework-specific deep dive · narrow root cause · performance\u002Fsecurity\nspecialist · simple local issue.\n\n**Broad scope requires a reason.** At least one must hold, or the answer is a\nnarrow specialist: the user asked for breadth · the system is unknown · the\nissue spans layers · architecture must be reconstructed · the cause is\nnon-local.\n\n### 2. Detect the framework\n\nLaravel · Symfony · Zend\u002FLaminas · Node\u002FExpress · React · Next.js · unknown or\nmixed.\n\n### 3. Read the decision table\n\n| Signal | Route to |\n|---|---|\n| Full audit, or unclear stack | `universal-project-analysis` |\n| Unknown system, discovery-focused | `project-analysis-core` |\n| Concrete problem, several plausible causes | `project-analysis-hypothesis-driven` |\n| Bug-focused, not full-project | `bug-analyzer` |\n| Laravel | `project-analysis-laravel` |\n| Symfony | `project-analysis-symfony` |\n| Zend\u002FLaminas | `project-analysis-zend-laminas` |\n| Node\u002FExpress | `project-analysis-node-express` |\n| React state \u002F render \u002F hooks | `project-analysis-react` |\n| Next.js SSR \u002F cache \u002F hydration | `project-analysis-nextjs` |\n| Bottleneck | `performance-analysis` |\n| Security concern | `security-audit` |\n\nTie-break: **the narrowest row that still covers the request wins.**\n\n## Output format\n\n1. The selected skill.\n2. The signal from step 1–2 that selected it.\n3. Why the next-broader row lost, when one was plausible.\n4. Any skill to chain afterwards — or \"none\".\n\nOne or two lines total. A routing verdict longer than the request it routes is\nitself a routing failure.\n\n## Examples\n\n| Request | Route |\n|---|---|\n| \"Analyze this whole Laravel project\" | `universal-project-analysis`, chain `project-analysis-laravel` |\n| \"Hydration mismatch in Next.js\" | `project-analysis-nextjs` — no full-project step |\n| \"Could be cache, queue, or a version mismatch\" | `project-analysis-hypothesis-driven` |\n| \"Change one React component\" | none — implementation skill |\n\n## Gotcha\n\n* **Size adjectives read as scope.** \"Our *whole* Laravel app is slow\" picks the\n  broad row on the word \"whole\", and the audit then spends its passes\n  rediscovering a stack the request already named. The step-2 framework signal\n  outranks size words — those are how frustration sounds, not scope.\n* **Breadth feels safe and costs sharpness.** The most expensive choice is\n  rarely the best one once the problem is already localised.\n* **Steps 1 and 2 disagreeing is a question, not a tie-break.** Ask which the\n  user meant instead of picking the broader row to be safe.\n\n## Do NOT\n\n* Do NOT default to `universal-project-analysis`\n* Do NOT choose a generic skill when a framework-specific row fits\n* Do NOT confuse discovery with root-cause investigation\n* Do NOT re-import procedure, validation checklists, or output contracts from\n  the skills in the table — that is what this file was cut back from\n","# analysis-skill-router\n\nA chooser, not a worker. It answers exactly one question — *which skill* — and\nthen gets out of the way. How to actually carry out the work belongs to\nwhichever skill this picks; a chooser that also explains the work reads like\nits own fallback target, which is the defect this file was cut back from.\n\n## When to use\n\nUse this skill when:\n\n* A request may need deep analysis\n* It is unclear which analysis skill should be used\n* Multiple analysis skills could plausibly apply\n* The stack\u002Fframework is known but the correct analysis path is unclear\n* `analysis-autonomous-mode` needs a routing decision\n\nDo NOT use when:\n\n* The correct specialist skill is already obvious\n* The task is not an analysis task\n* The task is normal implementation work without investigation needs\n\n## Procedure\n\n### 1. Classify the scope\n\nPick one: full project · architecture review · broad multi-layer debugging ·\nframework-specific deep dive · narrow root cause · performance\u002Fsecurity\nspecialist · simple local issue.\n\n**Broad scope requires a reason.** At least one must hold, or the answer is a\nnarrow specialist: the user asked for breadth · the system is unknown · the\nissue spans layers · architecture must be reconstructed · the cause is\nnon-local.\n\n### 2. Detect the framework\n\nLaravel · Symfony · Zend\u002FLaminas · Node\u002FExpress · React · Next.js · unknown or\nmixed.\n\n### 3. Read the decision table\n\n| Signal | Route to |\n|---|---|\n| Full audit, or unclear stack | `universal-project-analysis` |\n| Unknown system, discovery-focused | `project-analysis-core` |\n| Concrete problem, several plausible causes | `project-analysis-hypothesis-driven` |\n| Bug-focused, not full-project | `bug-analyzer` |\n| Laravel | `project-analysis-laravel` |\n| Symfony | `project-analysis-symfony` |\n| Zend\u002FLaminas | `project-analysis-zend-laminas` |\n| Node\u002FExpress | `project-analysis-node-express` |\n| React state \u002F render \u002F hooks | `project-analysis-react` |\n| Next.js SSR \u002F cache \u002F hydration | `project-analysis-nextjs` |\n| Bottleneck | `performance-analysis` |\n| Security concern | `security-audit` |\n\nTie-break: **the narrowest row that still covers the request wins.**\n\n## Output format\n\n1. The selected skill.\n2. The signal from step 1–2 that selected it.\n3. Why the next-broader row lost, when one was plausible.\n4. Any skill to chain afterwards — or \"none\".\n\nOne or two lines total. A routing verdict longer than the request it routes is\nitself a routing failure.\n\n## Examples\n\n| Request | Route |\n|---|---|\n| \"Analyze this whole Laravel project\" | `universal-project-analysis`, chain `project-analysis-laravel` |\n| \"Hydration mismatch in Next.js\" | `project-analysis-nextjs` — no full-project step |\n| \"Could be cache, queue, or a version mismatch\" | `project-analysis-hypothesis-driven` |\n| \"Change one React component\" | none — implementation skill |\n\n## Gotcha\n\n* **Size adjectives read as scope.** \"Our *whole* Laravel app is slow\" picks the\n  broad row on the word \"whole\", and the audit then spends its passes\n  rediscovering a stack the request already named. The step-2 framework signal\n  outranks size words — those are how frustration sounds, not scope.\n* **Breadth feels safe and costs sharpness.** The most expensive choice is\n  rarely the best one once the problem is already localised.\n* **Steps 1 and 2 disagreeing is a question, not a tie-break.** Ask which the\n  user meant instead of picking the broader row to be safe.\n\n## Do NOT\n\n* Do NOT default to `universal-project-analysis`\n* Do NOT choose a generic skill when a framework-specific row fits\n* Do NOT confuse discovery with root-cause investigation\n* Do NOT re-import procedure, validation checklists, or output contracts from\n  the skills in the table — that is what this file was cut back from\n",{"name":5,"packs":49,"domain":43,"model_tier":33,"workspaces":51,"description":7},[50],"meta",[52],"agent-config-maintainer","main","12bd765ce1d800501d45dfb8232102793af01290","src\u002Fskills\u002Fanalysis-skill-router",1,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config","https:\u002F\u002Fevent4u.app","https:\u002F\u002Fgithub.com\u002Fevent4u-app","Your events in your hand","2026-11-11 22:25:41",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add event4u-app\u002Fagent-config --skill analysis-skill-router",{"tool":68,"command":69},"bunx","bunx skills add event4u-app\u002Fagent-config --skill analysis-skill-router",{"tool":71,"command":72},"pnpm","pnpm dlx skills add event4u-app\u002Fagent-config --skill analysis-skill-router","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fanalysis-skill-router\u002FSKILL.md",true,[76,82],{"path":77,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":80,"sourceHtmlUrl":81},"evals\u002Fevals.json","REFERENCE","参考文档",602,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fanalysis-skill-router\u002Fevals\u002Fevals.json",{"path":83,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":84,"sourceHtmlUrl":85},"evals\u002Ftriggers.json",932,"https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fanalysis-skill-router\u002Fevals\u002Ftriggers.json",[87,101,114,125,137,146],{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":94,"publishedAt":44},"01M6X84PK96XBPENXH66JCTSD1","unknown-key-fixture","Declares a key the schema does not know.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Fscripts\u002Ffixtures\u002Fbody-portable\u002Funknown-key\u002FSKILL.md",[93],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[95,96,97,98,99,100],"unknown key fixture","Unknown key","fixture","unknown","schema","package",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":108,"publishedAt":44},"01M6X84HW7NAHZ7GZMQ9RXK1XJ","portable-fixture","Declares only semantics the MCP-lite carrier transports whole.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Fscripts\u002Ffixtures\u002Fbody-portable\u002Fportable\u002FSKILL.md",[107],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[97,109,110,111,112,100,113],"portable","portable fixture","engineer","only","MCP",{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":121,"publishedAt":44},"01M6X84F29FE0RGGZ1ZTFGZTX2","non-portable-fixture","Declares a runtime semantic the carrier drops.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Fscripts\u002Ffixtures\u002Fbody-portable\u002Fnon-portable\u002FSKILL.md",[120],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[110,122,109,97,123,33,124,100],"non portable fixture","semantic","runtime",{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":132,"publishedAt":44},"01M6X848F706PT9MDCX75JKJ6B","candidate-zero-width","A candidate whose prose carries an invisible joiner.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill-scout-candidates\u002Fzero-width-injection\u002FSKILL.md",[131],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[133,134,135,136],"candidate zero width","candidate","ZeRO","prose",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":144,"publishedAt":44},"01M6X841SSC2T31VDF41SA6DG1","candidate-disclosure-suppression","A candidate whose prose tells the agent to withhold from the user.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill-scout-candidates\u002Fdisclosure-suppression\u002FSKILL.md",[143],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[145,134,136,40],"candidate disclosure suppression",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":153,"publishedAt":44},"01M6X83TFS5AGPBPVTQNWP0BB3","candidate-dangerous-frontmatter","A candidate claiming an unscoped tool grant and a permission bypass.","https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fskill-scout-candidates\u002Fdangerous-frontmatter\u002FSKILL.md",[152],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[154,134,155,156,157,158],"candidate dangerous frontmatter","frontmatter","shell","permission","tool"]