[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6X7GR6ZY32JMKJQHDKVFAVB":3,"skill-same:01M6X7GR6ZY32JMKJQHDKVFAVB":73},{"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":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":51,"commitSha":52,"skillDirectory":53,"forksCount":54,"repositoryHtmlUrl":55,"repositoryHomepageUrl":56,"ownerHtmlUrl":57,"ownerBlogUrl":56,"ownerDescription":58,"updatedAt":59,"install":60,"resources":72},"01M6X7GR6ZY32JMKJQHDKVFAVB","project-analysis-symfony",null,"Use for deep Symfony project analysis: kernel\u002Fbootstrap, container wiring, routing\u002Frequest flow, Doctrine, security, Messenger, and Symfony-specific failure patterns.","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\u002Fproject-analysis-symfony\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"project","project analysis symfony","symfony","analysis","false","security","request","wiring","for","true","messenger","flow","professional","kernel","deep","patterns","doctrine","container","use","discovery","2026-11-10 10:12:30",false,"---\nmodel_tier: high\nname: project-analysis-symfony\ndescription: \"Use for deep Symfony project analysis: kernel\u002Fbootstrap, container wiring, routing\u002Frequest flow, Doctrine, security, Messenger, and Symfony-specific failure patterns.\"\ndomain: discovery\nworkspaces:\n  - engineering\npacks:\n  - symfony\ntrust:\n  level: professional\ninstall:\n  default: false\n  removable: true\n---\n\n# project-analysis-symfony\n\n## When to use\n\nUse this skill when:\n\n* The project uses Symfony\n* A deep Symfony-specific analysis is needed\n* `universal-project-analysis` routes here after framework detection\n* The issue spans kernel boot, DI, Doctrine, security, or Messenger\n\nDo NOT use when:\n\n* The task is a small isolated Symfony code change\n* The issue is already narrowed to a different specialist skill\n* The project is not actually Symfony\n\n## Core principles\n\n* Symfony behavior is highly container-driven\n* Environment-specific config changes meaningfully affect runtime\n* Service wiring and priority\u002Forder issues are common\n* Doctrine and Messenger often hide critical operational behavior\n* Security configuration must be traced end-to-end\n\n## Procedure\n\n### 1. Confirm Symfony version and app shape\n\nCheck: `composer.lock`, `composer.json`, Symfony packages\u002Fcomponents, PHP version, environment config structure.\nValidate: Symfony version is explicit, major bundles\u002Fcomponents are identified, environment-specific config layout is known.\n\n### 2. Analyze kernel and container boot\n\nInspect: Kernel bootstrap, bundle registration, compiler passes, `services.yaml`, autowiring\u002Fautoconfigure patterns, manual aliases\u002Fbindings, cache warmup\u002Fcompiled container assumptions.\n\nCheck:\n\n* autowiring conflicts\n* decoration order\n* tagged service priority\n* circular dependency symptoms\n* private\u002Fpublic service misuse\n\n### 3. Trace request-to-response flow\n\nTrace: route → request listeners\u002Fsubscribers → controller → service layer → repository\u002FDoctrine → serializer\u002Fforms → response.\nValidate: request lifecycle is visible, security checks are visible, serializer\u002Fform behavior is explicit, response transformation path is clear.\n\n### 4. Analyze Doctrine and persistence\n\nInspect: entity mapping, repositories, lifecycle callbacks, subscribers\u002Flisteners, migration posture, DQL\u002FQueryBuilder\u002Fnative SQL usage.\n\nCheck:\n\n* schema drift\n* proxy\u002Flazy-loading issues\n* N+1 behavior\n* wrong lifecycle hook usage\n* transaction boundaries\n\n### 5. Analyze security and Messenger\n\nInspect: firewalls, authenticators, voters, access rules, Messenger transports, handler routing, retry\u002Ffailed-message behavior.\n\nCheck:\n\n* auth flow correctness\n* firewall separation\u002Fcontext sharing\n* voter assumptions\n* failed-message handling\n* serialization\u002Ftransport issues\n\n### 6. Validate Symfony analysis quality\n\nCheck:\n\n* kernel\u002Fcontainer behavior is explicit\n* request\u002Fsecurity\u002Fdoctrine paths are mapped\n* version-specific Symfony behavior was considered\n* Messenger\u002Fsecurity risks are evidence-based\n* next specialist skill is clear if needed\n\n## Output format\n\n1. Symfony version and app summary\n2. Kernel\u002Fcontainer findings\n3. Request\u002Fsecurity flow\n4. Doctrine findings\n5. Messenger\u002Fasync findings\n6. Key risks and next steps\n\n## Gotcha\n\n* In Symfony, configuration and service wiring often explain more than the controller code.\n* Compiler passes, decorators, tags, and priorities can change behavior in non-obvious ways.\n* Doctrine and Messenger issues often appear as \"application bugs\" but originate in framework integration details.\n\n## Do NOT\n\n* Do NOT analyze Symfony without explicit version context\n* Do NOT ignore service wiring and container behavior\n* Do NOT treat Doctrine entities as simple data objects without lifecycle effects\n* Do NOT skip security\u002Ffirewall flow when access issues exist\n* Do NOT ignore Messenger transport and retry behavior in async problems\n","# project-analysis-symfony\n\n## When to use\n\nUse this skill when:\n\n* The project uses Symfony\n* A deep Symfony-specific analysis is needed\n* `universal-project-analysis` routes here after framework detection\n* The issue spans kernel boot, DI, Doctrine, security, or Messenger\n\nDo NOT use when:\n\n* The task is a small isolated Symfony code change\n* The issue is already narrowed to a different specialist skill\n* The project is not actually Symfony\n\n## Core principles\n\n* Symfony behavior is highly container-driven\n* Environment-specific config changes meaningfully affect runtime\n* Service wiring and priority\u002Forder issues are common\n* Doctrine and Messenger often hide critical operational behavior\n* Security configuration must be traced end-to-end\n\n## Procedure\n\n### 1. Confirm Symfony version and app shape\n\nCheck: `composer.lock`, `composer.json`, Symfony packages\u002Fcomponents, PHP version, environment config structure.\nValidate: Symfony version is explicit, major bundles\u002Fcomponents are identified, environment-specific config layout is known.\n\n### 2. Analyze kernel and container boot\n\nInspect: Kernel bootstrap, bundle registration, compiler passes, `services.yaml`, autowiring\u002Fautoconfigure patterns, manual aliases\u002Fbindings, cache warmup\u002Fcompiled container assumptions.\n\nCheck:\n\n* autowiring conflicts\n* decoration order\n* tagged service priority\n* circular dependency symptoms\n* private\u002Fpublic service misuse\n\n### 3. Trace request-to-response flow\n\nTrace: route → request listeners\u002Fsubscribers → controller → service layer → repository\u002FDoctrine → serializer\u002Fforms → response.\nValidate: request lifecycle is visible, security checks are visible, serializer\u002Fform behavior is explicit, response transformation path is clear.\n\n### 4. Analyze Doctrine and persistence\n\nInspect: entity mapping, repositories, lifecycle callbacks, subscribers\u002Flisteners, migration posture, DQL\u002FQueryBuilder\u002Fnative SQL usage.\n\nCheck:\n\n* schema drift\n* proxy\u002Flazy-loading issues\n* N+1 behavior\n* wrong lifecycle hook usage\n* transaction boundaries\n\n### 5. Analyze security and Messenger\n\nInspect: firewalls, authenticators, voters, access rules, Messenger transports, handler routing, retry\u002Ffailed-message behavior.\n\nCheck:\n\n* auth flow correctness\n* firewall separation\u002Fcontext sharing\n* voter assumptions\n* failed-message handling\n* serialization\u002Ftransport issues\n\n### 6. Validate Symfony analysis quality\n\nCheck:\n\n* kernel\u002Fcontainer behavior is explicit\n* request\u002Fsecurity\u002Fdoctrine paths are mapped\n* version-specific Symfony behavior was considered\n* Messenger\u002Fsecurity risks are evidence-based\n* next specialist skill is clear if needed\n\n## Output format\n\n1. Symfony version and app summary\n2. Kernel\u002Fcontainer findings\n3. Request\u002Fsecurity flow\n4. Doctrine findings\n5. Messenger\u002Fasync findings\n6. Key risks and next steps\n\n## Gotcha\n\n* In Symfony, configuration and service wiring often explain more than the controller code.\n* Compiler passes, decorators, tags, and priorities can change behavior in non-obvious ways.\n* Doctrine and Messenger issues often appear as \"application bugs\" but originate in framework integration details.\n\n## Do NOT\n\n* Do NOT analyze Symfony without explicit version context\n* Do NOT ignore service wiring and container behavior\n* Do NOT treat Doctrine entities as simple data objects without lifecycle effects\n* Do NOT skip security\u002Ffirewall flow when access issues exist\n* Do NOT ignore Messenger transport and retry behavior in async problems\n",{"name":5,"packs":44,"trust":45,"domain":38,"install":46,"model_tier":48,"workspaces":49,"description":7},[21],{"level":31},{"default":40,"removable":47},true,"high",[50],"engineering","main","12bd765ce1d800501d45dfb8232102793af01290","src\u002Fskills\u002Fproject-analysis-symfony",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-14 02:29:41",{"source":8,"skillName":5,"commands":61,"prompt":71,"zipAvailable":47},[62,65,68],{"tool":63,"command":64},"npx","npx skills add event4u-app\u002Fagent-config --skill project-analysis-symfony",{"tool":66,"command":67},"bunx","bunx skills add event4u-app\u002Fagent-config --skill project-analysis-symfony",{"tool":69,"command":70},"pnpm","pnpm dlx skills add event4u-app\u002Fagent-config --skill project-analysis-symfony","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fevent4u-app\u002Fagent-config\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fproject-analysis-symfony\u002FSKILL.md",[],[74,92,105,116,128,138],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":85,"publishedAt":39},"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",[80],{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[86,87,88,89,90,91],"unknown key fixture","Unknown key","fixture","unknown","schema","package",{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":99,"publishedAt":39},"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",[98],{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},[88,100,101,102,103,91,104],"portable","portable fixture","engineer","only","MCP",{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":112,"publishedAt":39},"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",[111],{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},[101,113,100,88,114,48,115,91],"non portable fixture","semantic","runtime",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":123,"publishedAt":39},"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",[122],{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},[124,125,126,127],"candidate zero width","candidate","ZeRO","prose",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":135,"publishedAt":39},"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",[134],{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},[136,125,127,137],"candidate disclosure suppression","user",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":145,"publishedAt":39},"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",[144],{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},[146,125,147,148,149,150],"candidate dangerous frontmatter","frontmatter","shell","permission","tool"]