[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7BP73M7SWF44CVXHWHHF60C":3,"skill-same:01M7BP73M7SWF44CVXHWHHF60C":45},{"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":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":27,"repositoryHtmlUrl":28,"repositoryHomepageUrl":6,"ownerHtmlUrl":29,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":30,"install":31,"resources":44},"01M7BP73M7SWF44CVXHWHHF60C","maven-build-lifecycle",null,"Use when reproducing and repairing Maven CI build failures, especially legacy multi-module builds and Maven Invoker integration tests.","linyouxue\u002Fskill-repair-benchmark","linyouxue","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F216151464?v=4","01M7BJEVCXKD74KH6FG9CBVSQB","林宥学","01M7BJEVE02NP217V93BKZFC0J",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fcontrolled-skill-repair-experiments\u002Fresult\u002Fwml-claude4.7\u002Fexperiments\u002Frepair\u002Fsingle-fix-build-google-auto-all\u002Frun\u002Finputs\u002Fskills\u002Fmaven-build-lifecycle\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: maven-build-lifecycle\ndescription: Use when reproducing and repairing Maven CI build failures, especially legacy multi-module builds and Maven Invoker integration tests.\n---\n\n# Maven Build Lifecycle — Legacy CI Repair Workflow\n\n## Build-repair artifact contract\n\nThis workflow requires both a diagnosis artifact and an applicable patch.\nTreat the task description as the source of truth for paths. The task will give\nyou a repository location of the form:\n\n```\n\u002Fhome\u002Ftravis\u002Fbuild\u002Ffailed\u002F\u003Crepo>\u002F\u003Cid>\n```\n\nResolve `\u003Crepo>` and `\u003Cid>` from the current task before running any command.\nDo **not** hardcode any specific repository or build id (e.g., do not assume a\nparticular organization\u002Fproject name). Everywhere the steps below reference\n`\u003Crepo>` and `\u003Cid>`, substitute the values given by the task.\n\nBefore finishing, ensure that:\n\n1. `\u002Fhome\u002Ftravis\u002Fbuild\u002Ffailed\u002Ffailed_reasons.txt` contains your diagnosis and\n   remediation plan (written in Step 1 and consulted in Step 2).\n2. At least one non-empty standard unified diff exists at\n   `\u002Fhome\u002Ftravis\u002Fbuild\u002Ffailed\u002F\u003Crepo>\u002F\u003Cid>\u002Fpatch_1.diff` (increment the index\n   `patch_2.diff`, `patch_3.diff`, … only if you genuinely need multiple\n   patches). The diff must describe the intended source\u002Fconfiguration change.\n3. The patch has been applied to the repository rooted at\n   `\u002Fhome\u002Ftravis\u002Fbuild\u002Ffailed\u002F\u003Crepo>\u002F\u003Cid>`.\n4. `git -C \u002Fhome\u002Ftravis\u002Fbuild\u002Ffailed\u002F\u003Crepo>\u002F\u003Cid> status` and\n   `git -C \u002Fhome\u002Ftravis\u002Fbuild\u002Ffailed\u002F\u003Crepo>\u002F\u003Cid> diff` confirm that the\n   intended project file(s)—not only the `patch_*.diff` artifact—were changed.\n\n## Minimal diagnostic sequence\n\nAll commands assume `\u003Crepo>` and `\u003Cid>` are the values from the current task.\n\n```bash\n# 1. Enter the failing repository (never hardcode a specific repo\u002Fid).\ncd \u002Fhome\u002Ftravis\u002Fbuild\u002Ffailed\u002F\u003Crepo>\u002F\u003Cid>\n\n# 2. Select the build toolchain. Prefer the project-pinned Maven Wrapper\n#    when it is present and executable, otherwise fall back to system mvn.\nif [ -x .\u002Fmvnw ]; then\n  MVN=\".\u002Fmvnw\"\nelif [ -f .\u002Fmvnw ]; then\n  MVN=\"sh .\u002Fmvnw\"\nelse\n  MVN=\"mvn\"\nfi\n\n# 3. Reproduce the failure to capture the real error signal. Use batch mode,\n#    full errors, and fail-at-end so every module reports its first failure.\n#    Adjust the lifecycle phase to match the project (compile \u002F test \u002F verify\n#    \u002F install). Record the output for the diagnosis note.\n$MVN -B -e -fae -U clean verify 2>&1 | tee \u002Ftmp\u002Fmvn-build.log\n\n# 4. Summarize the actionable errors (compiler messages, missing artifacts,\n#    plugin failures, Invoker IT reports) into\n#    \u002Fhome\u002Ftravis\u002Fbuild\u002Ffailed\u002Ffailed_reasons.txt before editing anything.\n```\n\nOnly after the reproduction above yields a concrete error should you decide\nwhether the fix belongs in source code, a POM, or a plugin configuration.\n\n## General Maven lifecycle reminders\n\n- **Toolchain parity.** Use the same wrapper\u002Fversion the CI uses. If `.\u002Fmvnw`\n  exists, invoking system `mvn` can mask or change the failure. Record which\n  binary you used in `failed_reasons.txt`.\n- **Reproduce before editing.** Never patch based on static reading alone;\n  always confirm the failure signature from a fresh build log.\n- **Use `-B -e -fae`.** Batch mode plus full error traces plus fail-at-end\n  surface every module's first failure in one run, which is critical for\n  multi-module projects.\n- **Smallest viable patch.** Change the narrowest file that removes the error.\n  Prefer POM\u002Fproperty fixes over source rewrites when the root cause is a\n  dependency, plugin version, or Java\u002Fcompiler setting.\n- **Verify after applying.** Re-run the same reproduction command and confirm\n  the previously failing goal now passes (or at minimum the targeted error is\n  gone) before declaring the repair complete.\n\n### Nested Maven Invoker IT projects (`src\u002Fit\u002F*`)\n\nLegacy multi-module builds frequently drive integration tests through the\n`maven-invoker-plugin`, which executes each `src\u002Fit\u002F\u003Cproject>\u002Fpom.xml` as an\nindependent Maven build. When the failure originates in one of these nested\nprojects, scope the repair carefully:\n\n1. **Locate the actual failing POM from the Invoker log.** The outer build\n   log will reference a `build.log` under\n   `target\u002Fit\u002F\u003Cproject>\u002F` (or a configured `cloneProjectsTo` directory).\n   Read that nested `build.log` to find the real error — the outer failure\n   is only a wrapper.\n2. **Understand version\u002Fplugin inheritance.** Nested IT POMs often rely on\n   the outer build via `@project.version@` token filtering, an explicit\n   `\u003Cparent>` reference, or `invoker.properties`. Before editing, determine\n   whether the failing version\u002Fplugin configuration is defined:\n   - inside the nested `src\u002Fit\u002F\u003Cproject>\u002Fpom.xml` itself,\n   - in a parent POM referenced by the nested project, or\n   - supplied by the outer build via the invoker plugin's `pomIncludes`,\n     `settingsFile`, or filtered properties.\n3. **Edit the smallest POM that fixes it.** If the fault is isolated to one\n   IT scenario, patch only that `src\u002Fit\u002F\u003Cproject>\u002Fpom.xml`. Modify the outer\n   parent POM only when the defect truly lives in shared configuration\n   (e.g., a managed dependency\u002Fplugin version consumed by multiple ITs).\n   Do not blindly rewrite the aggregator POM when a single invoker project\n   is at fault.\n4. **Preserve filtering tokens.** Keep `@...@` placeholders intact in\n   `src\u002Fit\u002F**\u002Fpom.xml` so the invoker plugin can still substitute them at\n   runtime; replacing them with literal versions can break other ITs.\n","# Maven Build Lifecycle — Legacy CI Repair Workflow\n\n## Build-repair artifact contract\n\nThis workflow requires both a diagnosis artifact and an applicable patch.\nTreat the task description as the source of truth for paths. The task will give\nyou a repository location of the form:\n\n```\n\u002Fhome\u002Ftravis\u002Fbuild\u002Ffailed\u002F\u003Crepo>\u002F\u003Cid>\n```\n\nResolve `\u003Crepo>` and `\u003Cid>` from the current task before running any command.\nDo **not** hardcode any specific repository or build id (e.g., do not assume a\nparticular organization\u002Fproject name). Everywhere the steps below reference\n`\u003Crepo>` and `\u003Cid>`, substitute the values given by the task.\n\nBefore finishing, ensure that:\n\n1. `\u002Fhome\u002Ftravis\u002Fbuild\u002Ffailed\u002Ffailed_reasons.txt` contains your diagnosis and\n   remediation plan (written in Step 1 and consulted in Step 2).\n2. At least one non-empty standard unified diff exists at\n   `\u002Fhome\u002Ftravis\u002Fbuild\u002Ffailed\u002F\u003Crepo>\u002F\u003Cid>\u002Fpatch_1.diff` (increment the index\n   `patch_2.diff`, `patch_3.diff`, … only if you genuinely need multiple\n   patches). The diff must describe the intended source\u002Fconfiguration change.\n3. The patch has been applied to the repository rooted at\n   `\u002Fhome\u002Ftravis\u002Fbuild\u002Ffailed\u002F\u003Crepo>\u002F\u003Cid>`.\n4. `git -C \u002Fhome\u002Ftravis\u002Fbuild\u002Ffailed\u002F\u003Crepo>\u002F\u003Cid> status` and\n   `git -C \u002Fhome\u002Ftravis\u002Fbuild\u002Ffailed\u002F\u003Crepo>\u002F\u003Cid> diff` confirm that the\n   intended project file(s)—not only the `patch_*.diff` artifact—were changed.\n\n## Minimal diagnostic sequence\n\nAll commands assume `\u003Crepo>` and `\u003Cid>` are the values from the current task.\n\n```bash\n# 1. Enter the failing repository (never hardcode a specific repo\u002Fid).\ncd \u002Fhome\u002Ftravis\u002Fbuild\u002Ffailed\u002F\u003Crepo>\u002F\u003Cid>\n\n# 2. Select the build toolchain. Prefer the project-pinned Maven Wrapper\n#    when it is present and executable, otherwise fall back to system mvn.\nif [ -x .\u002Fmvnw ]; then\n  MVN=\".\u002Fmvnw\"\nelif [ -f .\u002Fmvnw ]; then\n  MVN=\"sh .\u002Fmvnw\"\nelse\n  MVN=\"mvn\"\nfi\n\n# 3. Reproduce the failure to capture the real error signal. Use batch mode,\n#    full errors, and fail-at-end so every module reports its first failure.\n#    Adjust the lifecycle phase to match the project (compile \u002F test \u002F verify\n#    \u002F install). Record the output for the diagnosis note.\n$MVN -B -e -fae -U clean verify 2>&1 | tee \u002Ftmp\u002Fmvn-build.log\n\n# 4. Summarize the actionable errors (compiler messages, missing artifacts,\n#    plugin failures, Invoker IT reports) into\n#    \u002Fhome\u002Ftravis\u002Fbuild\u002Ffailed\u002Ffailed_reasons.txt before editing anything.\n```\n\nOnly after the reproduction above yields a concrete error should you decide\nwhether the fix belongs in source code, a POM, or a plugin configuration.\n\n## General Maven lifecycle reminders\n\n- **Toolchain parity.** Use the same wrapper\u002Fversion the CI uses. If `.\u002Fmvnw`\n  exists, invoking system `mvn` can mask or change the failure. Record which\n  binary you used in `failed_reasons.txt`.\n- **Reproduce before editing.** Never patch based on static reading alone;\n  always confirm the failure signature from a fresh build log.\n- **Use `-B -e -fae`.** Batch mode plus full error traces plus fail-at-end\n  surface every module's first failure in one run, which is critical for\n  multi-module projects.\n- **Smallest viable patch.** Change the narrowest file that removes the error.\n  Prefer POM\u002Fproperty fixes over source rewrites when the root cause is a\n  dependency, plugin version, or Java\u002Fcompiler setting.\n- **Verify after applying.** Re-run the same reproduction command and confirm\n  the previously failing goal now passes (or at minimum the targeted error is\n  gone) before declaring the repair complete.\n\n### Nested Maven Invoker IT projects (`src\u002Fit\u002F*`)\n\nLegacy multi-module builds frequently drive integration tests through the\n`maven-invoker-plugin`, which executes each `src\u002Fit\u002F\u003Cproject>\u002Fpom.xml` as an\nindependent Maven build. When the failure originates in one of these nested\nprojects, scope the repair carefully:\n\n1. **Locate the actual failing POM from the Invoker log.** The outer build\n   log will reference a `build.log` under\n   `target\u002Fit\u002F\u003Cproject>\u002F` (or a configured `cloneProjectsTo` directory).\n   Read that nested `build.log` to find the real error — the outer failure\n   is only a wrapper.\n2. **Understand version\u002Fplugin inheritance.** Nested IT POMs often rely on\n   the outer build via `@project.version@` token filtering, an explicit\n   `\u003Cparent>` reference, or `invoker.properties`. Before editing, determine\n   whether the failing version\u002Fplugin configuration is defined:\n   - inside the nested `src\u002Fit\u002F\u003Cproject>\u002Fpom.xml` itself,\n   - in a parent POM referenced by the nested project, or\n   - supplied by the outer build via the invoker plugin's `pomIncludes`,\n     `settingsFile`, or filtered properties.\n3. **Edit the smallest POM that fixes it.** If the fault is isolated to one\n   IT scenario, patch only that `src\u002Fit\u002F\u003Cproject>\u002Fpom.xml`. Modify the outer\n   parent POM only when the defect truly lives in shared configuration\n   (e.g., a managed dependency\u002Fplugin version consumed by multiple ITs).\n   Do not blindly rewrite the aggregator POM when a single invoker project\n   is at fault.\n4. **Preserve filtering tokens.** Keep `@...@` placeholders intact in\n   `src\u002Fit\u002F**\u002Fpom.xml` so the invoker plugin can still substitute them at\n   runtime; replacing them with literal versions can break other ITs.\n",{"name":5,"description":7},"main","cdcb6d230f3b15c3c33f8a2bdd16439f43602cbe","controlled-skill-repair-experiments\u002Fresult\u002Fwml-claude4.7\u002Fexperiments\u002Frepair\u002Fsingle-fix-build-google-auto-all\u002Frun\u002Finputs\u002Fskills\u002Fmaven-build-lifecycle",1,"https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark","https:\u002F\u002Fgithub.com\u002Flinyouxue","2026-11-14 20:28:35",{"source":8,"skillName":5,"commands":32,"prompt":42,"zipAvailable":43},[33,36,39],{"tool":34,"command":35},"npx","npx skills add linyouxue\u002Fskill-repair-benchmark --skill maven-build-lifecycle",{"tool":37,"command":38},"bunx","bunx skills add linyouxue\u002Fskill-repair-benchmark --skill maven-build-lifecycle",{"tool":40,"command":41},"pnpm","pnpm dlx skills add linyouxue\u002Fskill-repair-benchmark --skill maven-build-lifecycle","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fcontrolled-skill-repair-experiments\u002Fresult\u002Fwml-claude4.7\u002Fexperiments\u002Frepair\u002Fsingle-fix-build-google-auto-all\u002Frun\u002Finputs\u002Fskills\u002Fmaven-build-lifecycle\u002FSKILL.md",true,[],[46,53,60,67,72,77],{"skillNo":47,"name":48,"nameZh":6,"description":49,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":50,"categories":51,"keywords":52,"publishedAt":19},"01M7E1HGVRY73NBJ022CJG13X6","video-frame-extraction","Extract frames from video files and save them as images using OpenCV","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_03\u002Finputs\u002Fskills\u002Fvideo-frame-extraction\u002FSKILL.md",[],[],{"skillNo":54,"name":55,"nameZh":6,"description":56,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":57,"categories":58,"keywords":59,"publishedAt":19},"01M7E1HAG5R7CJ9C8NYJS771MB","openai-vision","Analyze images and multi-frame sequences using OpenAI GPT vision models","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_03\u002Finputs\u002Fskills\u002Fopenai-vision\u002FSKILL.md",[],[],{"skillNo":61,"name":62,"nameZh":6,"description":63,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":64,"categories":65,"keywords":66,"publishedAt":19},"01M7E1H7DADKB6QBWKC2KQ63SZ","image-ocr","Extract text content from images using Tesseract OCR via Python, including structured field extraction from receipts and forms","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_03\u002Finputs\u002Fskills\u002Fimage-ocr\u002FSKILL.md",[],[],{"skillNo":68,"name":48,"nameZh":6,"description":49,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":19},"01M7E1H0WBNT43TENGQY7AVZHD","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_02\u002Finputs\u002Fskills\u002Fvideo-frame-extraction\u002FSKILL.md",[],[],{"skillNo":73,"name":55,"nameZh":6,"description":56,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":19},"01M7E1GTC7D4N4Q2EF03875J9E","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_02\u002Finputs\u002Fskills\u002Fopenai-vision\u002FSKILL.md",[],[],{"skillNo":78,"name":62,"nameZh":6,"description":63,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":19},"01M7E1GQ92CWFMGH53KSSE4WER","https:\u002F\u002Fgithub.com\u002Flinyouxue\u002Fskill-repair-benchmark\u002Fblob\u002Fmain\u002Fjpg-ocr-stat\u002Fresult\u002Fskilltta-claude4.7\u002Fgroup_03\u002Frun_02\u002Finputs\u002Fskills\u002Fimage-ocr\u002FSKILL.md",[],[]]