[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71V4E2FSCAETRWN155NAG49":3,"skill-same:01M71V4E2FSCAETRWN155NAG49":84},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":27,"publishedAt":48,"linkOnly":49,"markdownContent":50,"markdownBody":51,"frontMatter":52,"refName":65,"commitSha":66,"skillDirectory":67,"forksCount":13,"repositoryHtmlUrl":68,"repositoryHomepageUrl":6,"ownerHtmlUrl":69,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":70,"install":71,"resources":83},"01M71V4E2FSCAETRWN155NAG49","code-review",null,"Review code changes for correctness, test coverage, security, performance, and maintainability","strings77wzq\u002Fgoal-run","strings77wzq","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F184192027?v=4","01M71V4218PHCX3JS0WGM99C41","01M71V421WHQ3QPRVP9GWKQVGV",0,"MIT","https:\u002F\u002Fgithub.com\u002Fstrings77wzq\u002Fgoal-run\u002Fblob\u002Fmain\u002Fskills\u002Fcode-review\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000007","代码审查","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],"review","code review","code","human code","for","implementing","true","correctness","you","critical","as","do","files","use","coverage","assessment","pr","change","test","performance","2026-11-10 13:02:02",false,"---\nname: code-review\ndescription: Review code changes for correctness, test coverage, security, performance, and maintainability\nversion: '1.1.0'\nrisk: low\npermissions:\n  - read_files\nverify_commands: []\nfile_boundaries:\n  read_files:\n    - '**\u002F*'\n  write_files: [] # Review is strictly read-only\nlessons_required: true\nwhen_to_use: |\n  Use after implementing a change, before merging a PR, or whenever you need\n  an independent quality assessment of code changes.\nwhen_not_to_use: |\n  Do not use as a replacement for human code review on critical paths.\n  Do not use for changes that have not been tested.\n---\n\n# Code Review\n\nPerform a structured review of code changes against quality dimensions.\n\n## Workflow\n\n0. **Check lessons (MANDATORY)**\n   - Read `.goalrun\u002Flessons.json` for matching failure patterns\n   - Search for lessons matching the changed files, error types, or review dimensions\n   - If matches found, include them as review checkpoints\n   - If no lessons file exists, skip this step\n\n1. **Understand the change**\n   - Read the goal specification and implementation strategy\n   - Review the diff to understand what changed and why\n   - Run the test suite to confirm tests pass\n\n2. **Review dimensions**\n\n   a. **Correctness**\n   - Does the change correctly implement the goal?\n   - Are edge cases handled?\n   - Is error handling appropriate?\n   - Are there any off-by-one errors, null reference risks, or race conditions?\n\n   b. **Test Gaps**\n   - Does the change include adequate tests?\n   - Are edge cases tested?\n   - Are negative paths tested? (what happens on failure?)\n   - Is there test coverage for rollback\u002Frecovery?\n\n   c. **Security**\n   - Does the change introduce any OWASP Top 10 vulnerabilities?\n   - Are there injection risks (SQL, command, path)?\n   - Are secrets or credentials exposed?\n   - Is input validated at system boundaries?\n\n   d. **Performance**\n   - Are there obvious performance issues (N+1 queries, large allocations)?\n   - Is the algorithmic complexity appropriate for the data scale?\n   - Are there blocking operations that could be async?\n\n   e. **Maintainability**\n   - Is the code clear and self-documenting?\n   - Are names descriptive and consistent with the codebase?\n   - Is there unnecessary abstraction or duplication?\n   - Will a future developer understand this code?\n\n   f. **Observability**\n   - Are errors logged with enough context to debug?\n   - Are important state transitions observable?\n\n   g. **API Compatibility**\n   - Are public APIs changed? If so, is the change backward-compatible?\n   - Are deprecations properly signaled?\n\n3. **Produce review report**\n   - Summary: APPROVED \u002F CHANGES REQUESTED \u002F BLOCKED\n   - Per-dimension findings with severity (error\u002Fwarning\u002Finfo)\n   - Specific file:line references for each finding\n   - Recommendations for each issue\n\n## Required Outputs\n\n- Review report with all dimensions assessed\n- An overall verdict: APPROVED, CHANGES REQUESTED, or BLOCKED\n- For each finding: severity, location, and recommendation\n\n## Verification Expectations\n\n- Every finding must reference a specific file and line\n- BLOCKED verdict requires at least one error-level finding\n- APPROVED verdict means no error-level findings\n- Security findings are always at least warning severity\n\n## Safety Notes\n\n- This skill only reads files. It does not modify code.\n- If a security vulnerability is found, mark it as error severity.\n- Do not approve changes that delete or weaken existing tests.\n- If tests are missing for the changed behavior, request changes.\n","# Code Review\n\nPerform a structured review of code changes against quality dimensions.\n\n## Workflow\n\n0. **Check lessons (MANDATORY)**\n   - Read `.goalrun\u002Flessons.json` for matching failure patterns\n   - Search for lessons matching the changed files, error types, or review dimensions\n   - If matches found, include them as review checkpoints\n   - If no lessons file exists, skip this step\n\n1. **Understand the change**\n   - Read the goal specification and implementation strategy\n   - Review the diff to understand what changed and why\n   - Run the test suite to confirm tests pass\n\n2. **Review dimensions**\n\n   a. **Correctness**\n   - Does the change correctly implement the goal?\n   - Are edge cases handled?\n   - Is error handling appropriate?\n   - Are there any off-by-one errors, null reference risks, or race conditions?\n\n   b. **Test Gaps**\n   - Does the change include adequate tests?\n   - Are edge cases tested?\n   - Are negative paths tested? (what happens on failure?)\n   - Is there test coverage for rollback\u002Frecovery?\n\n   c. **Security**\n   - Does the change introduce any OWASP Top 10 vulnerabilities?\n   - Are there injection risks (SQL, command, path)?\n   - Are secrets or credentials exposed?\n   - Is input validated at system boundaries?\n\n   d. **Performance**\n   - Are there obvious performance issues (N+1 queries, large allocations)?\n   - Is the algorithmic complexity appropriate for the data scale?\n   - Are there blocking operations that could be async?\n\n   e. **Maintainability**\n   - Is the code clear and self-documenting?\n   - Are names descriptive and consistent with the codebase?\n   - Is there unnecessary abstraction or duplication?\n   - Will a future developer understand this code?\n\n   f. **Observability**\n   - Are errors logged with enough context to debug?\n   - Are important state transitions observable?\n\n   g. **API Compatibility**\n   - Are public APIs changed? If so, is the change backward-compatible?\n   - Are deprecations properly signaled?\n\n3. **Produce review report**\n   - Summary: APPROVED \u002F CHANGES REQUESTED \u002F BLOCKED\n   - Per-dimension findings with severity (error\u002Fwarning\u002Finfo)\n   - Specific file:line references for each finding\n   - Recommendations for each issue\n\n## Required Outputs\n\n- Review report with all dimensions assessed\n- An overall verdict: APPROVED, CHANGES REQUESTED, or BLOCKED\n- For each finding: severity, location, and recommendation\n\n## Verification Expectations\n\n- Every finding must reference a specific file and line\n- BLOCKED verdict requires at least one error-level finding\n- APPROVED verdict means no error-level findings\n- Security findings are always at least warning severity\n\n## Safety Notes\n\n- This skill only reads files. It does not modify code.\n- If a security vulnerability is found, mark it as error severity.\n- Do not approve changes that delete or weaken existing tests.\n- If tests are missing for the changed behavior, request changes.\n",{"name":5,"risk":53,"version":54,"description":7,"permissions":55,"when_to_use":57,"file_boundaries":58,"verify_commands":62,"when_not_to_use":63,"lessons_required":64},"low","1.1.0",[56],"read_files","Use after implementing a change, before merging a PR, or whenever you need\nan independent quality assessment of code changes.\n",{"read_files":59,"write_files":61},[60],"**\u002F*",[],[],"Do not use as a replacement for human code review on critical paths.\nDo not use for changes that have not been tested.",true,"main","ea8458ad5d16f32f8e464369b6dfb656b907bf0a","skills\u002Fcode-review","https:\u002F\u002Fgithub.com\u002Fstrings77wzq\u002Fgoal-run","https:\u002F\u002Fgithub.com\u002Fstrings77wzq","2026-05-31 10:20:34",{"source":8,"skillName":5,"commands":72,"prompt":82,"zipAvailable":64},[73,76,79],{"tool":74,"command":75},"npx","npx skills add strings77wzq\u002Fgoal-run --skill code-review",{"tool":77,"command":78},"bunx","bunx skills add strings77wzq\u002Fgoal-run --skill code-review",{"tool":80,"command":81},"pnpm","pnpm dlx skills add strings77wzq\u002Fgoal-run --skill code-review","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fstrings77wzq\u002Fgoal-run\u002Fblob\u002Fmain\u002Fskills\u002Fcode-review\u002FSKILL.md",[],[85,101,123,141,157,174],{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":94,"publishedAt":48},"01M71V4NKDTPEZPWE5NQX3AACH","my-skill","A custom GoalRun skill","https:\u002F\u002Fgithub.com\u002Fstrings77wzq\u002Fgoal-run\u002Fblob\u002Fmain\u002Ftemplates\u002Fskill\u002FSKILL.md",[91],{"categoryNo":92,"categoryName":93,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[95,96,97,40,98,99,100],"my","my skill","read","custom","describe","when",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":110,"publishedAt":48},"01M71V4K3CXN6KZBSJTZ8XN98B","tdd-change","Implement changes using strict test-driven development — red, green, refactor","https:\u002F\u002Fgithub.com\u002Fstrings77wzq\u002Fgoal-run\u002Fblob\u002Fmain\u002Fskills\u002Ftdd-change\u002FSKILL.md",[107],{"categoryNo":108,"categoryName":109,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量",[111,45,112,37,113,114,42,41,115,116,40,39,117,118,119,34,32,120,121,122],"tdd change","tdd","development","regression","only","test suite","green","tests","complete","fixes","Existing","test-driven",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":129,"publishedAt":48},"01M71V4G13PXZTXWRT067RS9WT","implementation-strategy","Plan implementation strategy for medium-to-high risk changes before writing code","https:\u002F\u002Fgithub.com\u002Fstrings77wzq\u002Fgoal-run\u002Fblob\u002Fmain\u002Fskills\u002Fimplementation-strategy\u002FSKILL.md",[],[130,131,132,120,100,133,134,135,32,136,30,137,138,41,115,40,139,39,140,34],"implementation","strategy","implementation strategy","updates","auth","writing","documentation","blast radius","risk","openspec","plan implementation",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":149,"publishedAt":48},"01M71V4CZGBGV3GZ4P6HW8STPR","valid-skill","A valid skill for testing purposes","https:\u002F\u002Fgithub.com\u002Fstrings77wzq\u002Fgoal-run\u002Fblob\u002Fmain\u002Fpackages\u002Fharness\u002Ftest\u002Ffixtures\u002Fskills\u002Fvalid-skill\u002FSKILL.md",[147,148],{"categoryNo":108,"categoryName":109,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":92,"categoryName":93,"taxonomyType":20,"taxonomyTypeDesc":21},[150,151,152,153,154,97,155,41,40,39,32,156],"valid","valid skill","testing","harness","Production","write","static",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":164,"publishedAt":48},"01M71V4C3HXW8CG0YCW5N0Y26Y","dangerous-skill","A skill with dangerous content","https:\u002F\u002Fgithub.com\u002Fstrings77wzq\u002Fgoal-run\u002Fblob\u002Fmain\u002Fpackages\u002Fharness\u002Ftest\u002Ffixtures\u002Fskills\u002Fdangerous-skill\u002FSKILL.md",[163],{"categoryNo":92,"categoryName":93,"taxonomyType":20,"taxonomyTypeDesc":21},[165,166,167,168,169,170,37,171,40,172,173],"dangerous","dangerous skill","shell","content","delete","with","commands","execute","a skill",{"skillNo":175,"name":176,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":177,"categories":178,"keywords":180,"publishedAt":48},"01M71V4APGS84GHZFRZP356A1X","bad-skill","https:\u002F\u002Fgithub.com\u002Fstrings77wzq\u002Fgoal-run\u002Fblob\u002Fmain\u002Fpackages\u002Fharness\u002Ftest\u002Ffixtures\u002Fskills\u002Fbad-skill\u002FSKILL.md",[179],{"categoryNo":92,"categoryName":93,"taxonomyType":20,"taxonomyTypeDesc":21},[181,182,183],"bad","bad skill","unknown"]