[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GGSCFPK7MDSZH96XTNZR9B":3,"skill-same:01M6GGSCFPK7MDSZH96XTNZR9B":67},{"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":41,"linkOnly":42,"markdownContent":43,"markdownBody":44,"frontMatter":45,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":6,"ownerHtmlUrl":51,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":52,"install":53,"resources":66},"01M6GGSCFPK7MDSZH96XTNZR9B","test-engineer",null,"When designing test strategy, analysing coverage, or writing tests outside the TDD cycle. Also use when working with CI pipelines or validating changes end-to-end.","ahmadulhoq\u002Fagentskel","ahmadulhoq","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F3884252?v=4","01M6GGC32SQTQ52FY4JB14FYSY","Ahmadul Hoq","01M6GGC37CJEYM63V3WEHY4Y8V",13,"MIT","https:\u002F\u002Fgithub.com\u002Fahmadulhoq\u002Fagentskel\u002Fblob\u002Fmain\u002Froles\u002Fdev\u002Fskills\u002Ftest-engineer\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],"engineer","test engineer","test","writing tests","ci","strategy","coverage","use","writing","pipelines","test strategy","cycle","tdd cycle","tests","end","with","tdd","2026-11-10 10:12:30",false,"---\nname: test-engineer\nlicense: MIT\ndescription: When designing test strategy, analysing coverage, or writing tests outside the TDD cycle. Also use when working with CI pipelines or validating changes end-to-end.\n---\n\n# Test Engineer Standards\n\n## Testing Rules\n- All new logic must include unit and integration tests.\n- Simulated or test data must be clearly marked and never promoted to production.\n- All tests must pass in CI pipelines before deployment.\n- Code coverage should exceed 85% on business logic modules.\n- Regression tests must be defined for all high-impact updates.\n- Log test outcomes in separate test logs, not production logs.\n\n## Test Structure\n\n\u003C!-- PLATFORM: Android -->\n### Android\n- Prefer unit tests over instrumented tests when business logic is isolated.\n- Use **MockK** for mocking. Use **Espresso** for UI testing.\n- Name test functions with backticks: `@Test fun `when input is X, expect Y`() {}`\n- Use Given\u002FWhen\u002FThen (Arrange-Act-Assert) structure.\n\u003C!-- END PLATFORM: Android -->\n\n\u003C!-- PLATFORM: iOS -->\n### iOS\n- Use **XCTest** for unit and integration tests. Use **XCUITest** for UI testing.\n- Use protocol-based fakes over mocking frameworks where possible.\n- Name tests descriptively: `test_scenario_expectedOutcome`.\n- Use Given\u002FWhen\u002FThen (Arrange-Act-Assert) structure.\n\u003C!-- END PLATFORM: iOS -->\n\n\u003C!-- PLATFORM: Web -->\n### Web\n- Use **Jest** or **Vitest** for unit tests. Use **Playwright** or **Cypress** for E2E.\n- Name tests descriptively: `it('should do X when Y')`.\n- Mock external dependencies; prefer dependency injection over module mocks.\n- Use Given\u002FWhen\u002FThen (Arrange-Act-Assert) structure.\n\u003C!-- END PLATFORM: Web -->\n\n\u003C!-- PLATFORM: Backend -->\n### Backend\n- Use the language's standard test framework.\n- Name tests descriptively — the name should explain the scenario and expected outcome.\n- Use the project's standard mocking library for test doubles.\n- Use Given\u002FWhen\u002FThen (Arrange-Act-Assert) structure.\n\u003C!-- END PLATFORM: Backend -->\n\n## Verification\n- Diff behavior between main and your changes when relevant.\n- Ask yourself: \"Would a staff engineer approve this?\"\n- Run tests, check logs, demonstrate correctness.\n\n## Error Handling Design\n- Error handling logic must be designed using test-first principles.\n- Retry logic must include exponential backoff and failure limits.\n","# Test Engineer Standards\n\n## Testing Rules\n- All new logic must include unit and integration tests.\n- Simulated or test data must be clearly marked and never promoted to production.\n- All tests must pass in CI pipelines before deployment.\n- Code coverage should exceed 85% on business logic modules.\n- Regression tests must be defined for all high-impact updates.\n- Log test outcomes in separate test logs, not production logs.\n\n## Test Structure\n\n\u003C!-- PLATFORM: Android -->\n### Android\n- Prefer unit tests over instrumented tests when business logic is isolated.\n- Use **MockK** for mocking. Use **Espresso** for UI testing.\n- Name test functions with backticks: `@Test fun `when input is X, expect Y`() {}`\n- Use Given\u002FWhen\u002FThen (Arrange-Act-Assert) structure.\n\u003C!-- END PLATFORM: Android -->\n\n\u003C!-- PLATFORM: iOS -->\n### iOS\n- Use **XCTest** for unit and integration tests. Use **XCUITest** for UI testing.\n- Use protocol-based fakes over mocking frameworks where possible.\n- Name tests descriptively: `test_scenario_expectedOutcome`.\n- Use Given\u002FWhen\u002FThen (Arrange-Act-Assert) structure.\n\u003C!-- END PLATFORM: iOS -->\n\n\u003C!-- PLATFORM: Web -->\n### Web\n- Use **Jest** or **Vitest** for unit tests. Use **Playwright** or **Cypress** for E2E.\n- Name tests descriptively: `it('should do X when Y')`.\n- Mock external dependencies; prefer dependency injection over module mocks.\n- Use Given\u002FWhen\u002FThen (Arrange-Act-Assert) structure.\n\u003C!-- END PLATFORM: Web -->\n\n\u003C!-- PLATFORM: Backend -->\n### Backend\n- Use the language's standard test framework.\n- Name tests descriptively — the name should explain the scenario and expected outcome.\n- Use the project's standard mocking library for test doubles.\n- Use Given\u002FWhen\u002FThen (Arrange-Act-Assert) structure.\n\u003C!-- END PLATFORM: Backend -->\n\n## Verification\n- Diff behavior between main and your changes when relevant.\n- Ask yourself: \"Would a staff engineer approve this?\"\n- Run tests, check logs, demonstrate correctness.\n\n## Error Handling Design\n- Error handling logic must be designed using test-first principles.\n- Retry logic must include exponential backoff and failure limits.\n",{"name":5,"license":15,"description":7},"main","d94c109a4fad51623dc6048315860e53b32673fb","roles\u002Fdev\u002Fskills\u002Ftest-engineer",3,"https:\u002F\u002Fgithub.com\u002Fahmadulhoq\u002Fagentskel","https:\u002F\u002Fgithub.com\u002Fahmadulhoq","2026-11-07 00:53:22",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add ahmadulhoq\u002Fagentskel --skill test-engineer",{"tool":59,"command":60},"bunx","bunx skills add ahmadulhoq\u002Fagentskel --skill test-engineer",{"tool":62,"command":63},"pnpm","pnpm dlx skills add ahmadulhoq\u002Fagentskel --skill test-engineer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fahmadulhoq\u002Fagentskel\u002Fblob\u002Fmain\u002Froles\u002Fdev\u002Fskills\u002Ftest-engineer\u002FSKILL.md",true,[],[68,87,112,137,151,177],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":41},"01M6GGSN2D57Y8BR50X08Y695H","setup-project","When setting up agentskel on a new project that does not yet have .memory\u002F or .agents\u002F. Use when the user says \"set up agentskel\", \"install agentskel\", or \"add agent memory to this project\".","https:\u002F\u002Fgithub.com\u002Fahmadulhoq\u002Fagentskel\u002Fblob\u002Fmain\u002Fskills\u002Fsetup-project\u002FSKILL.md",[],[75,76,77,78,79,80,31,81,82,83,84,85,86],"setup","setup project","project","memory","add","up","install","add agent","user","new project","SET","agent memory",{"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":93,"publishedAt":41},"01M6GGSJ6HD2DFVZQTESJ81GYM","using-git-worktrees","When running long feature implementations, parallel branch work, or build\u002Ftest scripts that must not interfere with the user's active working directory. Creates isolated execution environments via git worktrees in sibling directories.","https:\u002F\u002Fgithub.com\u002Fahmadulhoq\u002Fagentskel\u002Fblob\u002Fmain\u002Froles\u002Fdev\u002Fskills\u002Fusing-git-worktrees\u002FSKILL.md",[],[94,95,96,97,98,99,100,101,102,26,103,104,105,106,39,107,108,109,110,111],"git worktrees","worktrees","git","Using git","using git worktrees","execution","branch","work","parallel","directory","build","directories","environments","via","long","scripts","feature","active",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":122,"publishedAt":41},"01M6GGS8YA9XZB6DWV22JC0YTB","test-driven-development","When implementing logic changes during develop-feature or implement-task. Use the Red-Green-Refactor cycle to write a failing test before any production code.","https:\u002F\u002Fgithub.com\u002Fahmadulhoq\u002Fagentskel\u002Fblob\u002Fmain\u002Froles\u002Fdev\u002Fskills\u002Ftest-driven-development\u002FSKILL.md",[118,121],{"categoryNo":119,"categoryName":120,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[26,123,124,125,126,127,128,110,129,35,130,31,131,132,133,134,135,136],"test driven development","driven","development","Production","green","logic","red","red-green-refactor","write","develop","refactor","code","implement","task",{"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":143,"publishedAt":41},"01M6GGS61D41ZJG4D8XAS97H62","task-planner","When decomposing a feature or spec into implementable subtasks, estimating scope, or orchestrating multi-step work across subagents.","https:\u002F\u002Fgithub.com\u002Fahmadulhoq\u002Fagentskel\u002Fblob\u002Fmain\u002Froles\u002Fdev\u002Fskills\u002Ftask-planner\u002FSKILL.md",[],[144,136,145,146,147,110,148,149,101,150],"planner","task planner","scope","multi","across","subagents","spec",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":157,"publishedAt":41},"01M6GGS30NJW4Q7QN4KVT0CV08","systematic-debugger","When applying debugging techniques during any investigation — root cause tracing, bisect, defense-in-depth. Enforces hypothesis-first analysis and prohibits guess-and-check changes. Use standalone or inside the debug-issue workflow.","https:\u002F\u002Fgithub.com\u002Fahmadulhoq\u002Fagentskel\u002Fblob\u002Fmain\u002Froles\u002Fdev\u002Fskills\u002Fsystematic-debugger\u002FSKILL.md",[],[158,159,160,161,162,163,164,165,166,167,168,169,170,31,171,172,173,174,175,176],"systematic debugger","systematic","debugger","debugging","check","bisect","investigation","analysis","first","defense","hypothesis","defense-in-depth","tracing","debug","workflow","standalone","root","issue workflow","issue",{"skillNo":178,"name":179,"nameZh":6,"description":180,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":181,"categories":182,"keywords":183,"publishedAt":41},"01M6GGS04EDQVVJRW5CTB3V60K","domain-expert","When working on features that require domain knowledge — business rules, terminology, or invariants specific to this project. [Replace this description and the content below with your project's domain.]","https:\u002F\u002Fgithub.com\u002Fahmadulhoq\u002Fagentskel\u002Fblob\u002Fmain\u002Froles\u002Fdev\u002Fskills\u002Fdomain-expert\u002FSKILL.md",[],[184,185,186,187,39,77,188,189,190,191,192],"expert","domain expert","domain","invariants","terminology","business","Rules","knowledge","content"]