[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6ACQCSSDZQMD8VX2K3WRR93":3,"skill-same:01M6ACQCSSDZQMD8VX2K3WRR93":56},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":21,"frontMatter":22,"refName":23,"commitSha":24,"skillDirectory":25,"forksCount":26,"repositoryHtmlUrl":27,"repositoryHomepageUrl":28,"ownerHtmlUrl":29,"ownerBlogUrl":30,"ownerDescription":6,"updatedAt":31,"install":32,"resources":45},"01M6ACQCSSDZQMD8VX2K3WRR93","manage-strategies",null,"apache\u002Fofbiz-plugins","apache","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F47359?v=4","01M6AC83E6K4FDKK7HZ8WNMQKE","The Apache Software Foundation","01M6ACMJJ1Q4WYATY4GXZ2FAVD",178,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fapache\u002Fofbiz-plugins\u002Fblob\u002Ftrunk\u002Fai-agent-skills\u002Fmanage-strategies\u002FSKILL.md",[],[18],"manage strategies","2026-11-10 10:12:30",false,"\u003C!--\nLicensed to the Apache Software Foundation (ASF) under one\nor more contributor license agreements.  See the NOTICE file\ndistributed with this work for additional information\nregarding copyright ownership.  The ASF licenses this file\nto you under the Apache License, Version 2.0 (the\n\"License\"); you may not use this file except in compliance\nwith the License.  You may obtain a copy of the License at\n\nhttp:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\n\nUnless required by applicable law or agreed to in writing,\nsoftware distributed under the License is distributed on an\n\"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, either express or implied.  See the License for the\nspecific language governing permissions and limitations\nunder the License.\n-->\n\n---\nname: manage-strategies\ndescription: General development strategies and preferences for OFBiz. Use when deciding between multiple implementation options (e.g., XML vs Groovy services).\n---\n\n# Skill: manage-strategies\n## Goal\nProvide clear guidance on preferred implementation patterns and architecture decisions when multiple options exist in OFBiz.\n\n## Triggers\n**ALWAYS** read this skill when:\n- Designing a new service, screen, or logic component.\n- Choosing between XML, Groovy, or Java for implementation.\n- Reviewing code for architectural alignment.\n\n## Core Preferences\n### 1. Services: XML vs. Java\u002FGroovy\n- **XML (MiniLang\u002FSimple Method)**: **DEPRECATED**. Do not use for new logic.\n- **Java**: Preferred for complex, performance-critical, or core domain logic.\n- **Groovy**: Preferred for orchestration, business rules, and script-based services.\n- **Preference Order**: Groovy > Java > XML (Legacy only).\n\n### 2. Logic Placement\n- **Prefer Groovy\u002FJava**: For service implementation.\n- **Avoid XML Actions**: While `controller.xml` or screens allow some XML actions, keep these to a minimum. Move logic to Groovy scripts.\n\n## Dos and Don'ts\n| Area | DO | DON'T |\n| :--- | :--- | :--- |\n| **Services** | Implement in **Groovy** or **Java**. | Implement in **MiniLang (XML)**. |\n| **Logic** | Keep logic in `.groovy` or `.java` files. | Embed complex logic in `\u003Cactions>` tags of XML files. |\n| **UI** | Use Freemarker (FTL) for custom layout logic. | Use complex inline Java in FTL files. |\n| **Data** | Use `EntityQuery` for all data retrieval. | Use `delegator.findByAnd` or legacy low-level methods. |\n| **Extensions** | Use `\u003Cextend-entity>` and plugin overrides. | Modify core framework files directly. |\n\n## Guardrails\n- **Modern First**: Always choose the modern (Java\u002FGroovy\u002FFTL) approach over the legacy XML-heavy approach.\n- **Service Engine**: Use `engine=\"groovy\"` or `engine=\"java\"` in your service definitions.\n\n## Examples\n**Example: Preferred Service Definition**\n```xml\n\u003C!-- Proper service definition using Groovy engine -->\n\u003Cservice name=\"myCustomService\" engine=\"groovy\" \n         location=\"component:\u002F\u002Fmyplugin\u002Fsrc\u002Fmain\u002Fgroovy\u002Forg\u002Fapache\u002Fofbiz\u002Fmyplugin\u002FMyServices.groovy\" invoke=\"myServiceLogic\">\n    \u003Cdescription>My preferred modern service implementation\u003C\u002Fdescription>\n    \u003Cattribute name=\"id\" mode=\"IN\" type=\"String\"\u002F>\n\u003C\u002Fservice>\n```\n",{},"trunk","6c6c27710443de03e9247605d33a2e2f5bc3d1e2","ai-agent-skills\u002Fmanage-strategies",222,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fofbiz-plugins","https:\u002F\u002Fofbiz.apache.org\u002F","https:\u002F\u002Fgithub.com\u002Fapache","https:\u002F\u002Fwww.apache.org\u002F","2026-11-10 15:50:39",{"source":7,"skillName":5,"commands":33,"prompt":43,"zipAvailable":44},[34,37,40],{"tool":35,"command":36},"npx","npx skills add apache\u002Fofbiz-plugins --skill manage-strategies",{"tool":38,"command":39},"bunx","bunx skills add apache\u002Fofbiz-plugins --skill manage-strategies",{"tool":41,"command":42},"pnpm","pnpm dlx skills add apache\u002Fofbiz-plugins --skill manage-strategies","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fapache\u002Fofbiz-plugins\u002Fblob\u002Ftrunk\u002Fai-agent-skills\u002Fmanage-strategies\u002FSKILL.md",true,[46,52],{"path":47,"resourceType":48,"resourceTypeDesc":49,"sizeBytes":50,"sourceHtmlUrl":51},"references\u002FPERSUASION-PRINCIPLES.md","REFERENCE","参考文档",5901,"https:\u002F\u002Fgithub.com\u002Fl-lin\u002Fdotfiles\u002Fblob\u002Fmain\u002Fhome-manager\u002Fmodules\u002Fshare\u002Fai\u002F.config\u002Fai\u002Fskills\u002Fcraft-skill\u002Freferences\u002FPERSUASION-PRINCIPLES.md",{"path":53,"resourceType":48,"resourceTypeDesc":49,"sizeBytes":54,"sourceHtmlUrl":55},"references\u002FSKILL-CHECKLIST.md",1678,"https:\u002F\u002Fgithub.com\u002Fl-lin\u002Fdotfiles\u002Fblob\u002Fmain\u002Fhome-manager\u002Fmodules\u002Fshare\u002Fai\u002F.config\u002Fai\u002Fskills\u002Fcraft-skill\u002Freferences\u002FSKILL-CHECKLIST.md",[57,64,71,78,85,92],{"skillNo":58,"name":59,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":60,"categories":61,"keywords":62,"publishedAt":19},"01M6ACQSN90YKJZ92MQ52D9R8H","prepush-readiness","https:\u002F\u002Fgithub.com\u002Fapache\u002Fofbiz-plugins\u002Fblob\u002Ftrunk\u002Fai-agent-skills\u002Fprepush-readiness\u002FSKILL.md",[],[63],"prepush readiness",{"skillNo":65,"name":66,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":67,"categories":68,"keywords":69,"publishedAt":19},"01M6ACQPR1WRA751V4DXVC3AHF","manage-webapps","https:\u002F\u002Fgithub.com\u002Fapache\u002Fofbiz-plugins\u002Fblob\u002Ftrunk\u002Fai-agent-skills\u002Fmanage-webapps\u002FSKILL.md",[],[70],"manage webapps",{"skillNo":72,"name":73,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":19},"01M6ACQMCX8Z7NY2CE08NCV6ND","manage-themes","https:\u002F\u002Fgithub.com\u002Fapache\u002Fofbiz-plugins\u002Fblob\u002Ftrunk\u002Fai-agent-skills\u002Fmanage-themes\u002FSKILL.md",[],[77],"manage themes",{"skillNo":79,"name":80,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":19},"01M6ACQHYN20AFWF6TKK4RGQ8A","manage-tests","https:\u002F\u002Fgithub.com\u002Fapache\u002Fofbiz-plugins\u002Fblob\u002Ftrunk\u002Fai-agent-skills\u002Fmanage-tests\u002FSKILL.md",[],[84],"manage tests",{"skillNo":86,"name":87,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":90,"publishedAt":19},"01M6ACQFRMW7R45YD3HRAXPGWF","manage-templates","https:\u002F\u002Fgithub.com\u002Fapache\u002Fofbiz-plugins\u002Fblob\u002Ftrunk\u002Fai-agent-skills\u002Fmanage-templates\u002FSKILL.md",[],[91],"manage templates",{"skillNo":93,"name":94,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":97,"publishedAt":19},"01M6ACQA1CZ2QW6GAM6HPFR21V","manage-services","https:\u002F\u002Fgithub.com\u002Fapache\u002Fofbiz-plugins\u002Fblob\u002Ftrunk\u002Fai-agent-skills\u002Fmanage-services\u002FSKILL.md",[],[98],"manage services"]