[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CWPJDZ1ADJTE0KX52N3MBC":3,"skill-same:01M6CWPJDZ1ADJTE0KX52N3MBC":63},{"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":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":43,"commitSha":44,"skillDirectory":5,"forksCount":45,"repositoryHtmlUrl":46,"repositoryHomepageUrl":6,"ownerHtmlUrl":47,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":48,"install":49,"resources":62},"01M6CWPJDZ1ADJTE0KX52N3MBC","code-review",null,"Code review best practices and guidelines","ffsshhttiikk\u002Fopencode-agents-skills","ffsshhttiikk","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F226346827?v=4","01M6CWD9RR3Y7VRQX3MXYC8FYH","01M6CWD9WVPYAZW0J82G1VKGHY",3,"MIT","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\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],"code review","review","code","guidelines","best practices","code-quality","quality","opencode","2026-11-10 10:12:30",false,"---\nname: code-review\ndescription: Code review best practices and guidelines\nlicense: MIT\ncompatibility: opencode\nmetadata:\n  audience: developers\n  category: code-quality\n---\n## What I do\n- Review code for quality, correctness, and maintainability\n- Provide constructive and actionable feedback\n- Check for security vulnerabilities\n- Ensure tests are adequate\n- Verify code follows project conventions\n- Suggest improvements without being prescriptive\n- Balance thoroughness with velocity\n- Learn from others' code\n\n## When to use me\nWhen performing code reviews or addressing feedback.\n\n## What to Look For\n\n### Correctness\n- Does the code do what it's supposed to?\n- Are edge cases handled?\n- Are error conditions properly handled?\n- Is the logic sound and bug-free?\n\n### Security\n- Input validation and sanitization\n- Authentication and authorization\n- Sensitive data handling\n- SQL injection, XSS, CSRF protection\n\n### Performance\n- Unnecessary database queries (N+1 problem)\n- Inefficient algorithms or data structures\n- Missing indexes or caching\n- Memory leaks\n\n### Maintainability\n- Readable and understandable code\n- Proper naming conventions\n- Code duplication\n- Dead code\n- Comments where needed\n\n### Testing\n- Adequate test coverage\n- Meaningful test cases\n- Edge cases and error scenarios\n\n## Feedback Guidelines\n\n### DO\n- Be specific about what needs to change\n- Explain why something should be changed\n- Offer alternative solutions\n- Acknowledge good code\n- Focus on the code, not the person\n- Distinguish between must-haves and suggestions\n\n### DON'T\n- Be rude or dismissive\n- Nitpick style preferences\n- Make personal comments\n- Block PRs for minor issues\n- Demand changes without explaining why\n- Be overly critical without suggestions\n\n## Example Review Comments\n\n### Critical Finding\n```markdown\n**High: SQL Injection Vulnerability**\n\nThe user input is directly concatenated into the SQL query:\n\n```python\nquery = f\"SELECT * FROM users WHERE email = '{email}'\"\n```\n\n**Risk**: An attacker could inject malicious SQL to extract or modify database data.\n\n**Fix**: Use parameterized queries:\n\n```python\ncursor.execute(\"SELECT * FROM users WHERE email = ?\", (email,))\n```\n\nRequired change - this is a security issue that must be fixed before merge.\n```\n\n### Improvement Suggestion\n```markdown\n**Medium: Consider using a context manager**\n\nThe current code manually manages the database connection:\n\n```python\nconnection = get_db_connection()\ntry:\n    process_data(connection)\nfinally:\n    connection.close()\n```\n\n**Suggestion**: Using a context manager ensures proper cleanup even on exceptions:\n\n```python\nwith get_db_connection() as connection:\n    process_data(connection)\n```\n\nThis is more Pythonic and handles edge cases automatically. Not blocking, but recommended.\n```\n\n### Style\u002FConvention\n```markdown\n**Low: Line length**\n\nThis line exceeds our 100 character limit:\n\n```python\nsome_function(argument_one, argument_two, argument_three=some_value, argument_four=other_value)\n```\n\n**Fix**: Break onto multiple lines:\n\n```python\nsome_function(\n    argument_one,\n    argument_two,\n    argument_three=some_value,\n    argument_four=other_value,\n)\n```\n\nWe use Black formatter - running `black .` will auto-fix this.\n```\n\n### Positive Reinforcement\n```markdown\n**Great work!** The error handling here is excellent. Using a custom exception hierarchy makes the code very clear about what can go wrong and where. Thanks for the thorough docstrings too!\n```\n\n## Review Checklist\n```\n[] Code compiles\u002Fruns without errors\n[] Tests pass (unit, integration, e2e)\n[] No security vulnerabilities\n[] Performance is acceptable\n[] Follows naming conventions\n[] Adequate error handling\n[] Input validation present\n[] No hardcoded secrets\n[] No debug code left in\n[] Documentation updated\n[] Comments are helpful\n[] No dead code\n[] No code duplication\n[] Logging is appropriate\n[] Metrics\u002Fmonitoring if needed\n```\n\n## Responding to Reviews\n\n### When You Disagree\n1. Understand the reviewer's perspective\n2. Explain your reasoning\n3. Provide evidence or examples\n4. Seek common ground\n5. Escalate if necessary (don't flame wars)\n\n### When Making Changes\n1. Address all feedback\n2. Explain what you changed\n3. Request re-review\n4. Thank the reviewer\n\n### Quick Wins\n- Fix typos and formatting\n- Rename variables for clarity\n- Add missing tests\n- Remove debug code\n- Add comments\n","## What I do\n- Review code for quality, correctness, and maintainability\n- Provide constructive and actionable feedback\n- Check for security vulnerabilities\n- Ensure tests are adequate\n- Verify code follows project conventions\n- Suggest improvements without being prescriptive\n- Balance thoroughness with velocity\n- Learn from others' code\n\n## When to use me\nWhen performing code reviews or addressing feedback.\n\n## What to Look For\n\n### Correctness\n- Does the code do what it's supposed to?\n- Are edge cases handled?\n- Are error conditions properly handled?\n- Is the logic sound and bug-free?\n\n### Security\n- Input validation and sanitization\n- Authentication and authorization\n- Sensitive data handling\n- SQL injection, XSS, CSRF protection\n\n### Performance\n- Unnecessary database queries (N+1 problem)\n- Inefficient algorithms or data structures\n- Missing indexes or caching\n- Memory leaks\n\n### Maintainability\n- Readable and understandable code\n- Proper naming conventions\n- Code duplication\n- Dead code\n- Comments where needed\n\n### Testing\n- Adequate test coverage\n- Meaningful test cases\n- Edge cases and error scenarios\n\n## Feedback Guidelines\n\n### DO\n- Be specific about what needs to change\n- Explain why something should be changed\n- Offer alternative solutions\n- Acknowledge good code\n- Focus on the code, not the person\n- Distinguish between must-haves and suggestions\n\n### DON'T\n- Be rude or dismissive\n- Nitpick style preferences\n- Make personal comments\n- Block PRs for minor issues\n- Demand changes without explaining why\n- Be overly critical without suggestions\n\n## Example Review Comments\n\n### Critical Finding\n```markdown\n**High: SQL Injection Vulnerability**\n\nThe user input is directly concatenated into the SQL query:\n\n```python\nquery = f\"SELECT * FROM users WHERE email = '{email}'\"\n```\n\n**Risk**: An attacker could inject malicious SQL to extract or modify database data.\n\n**Fix**: Use parameterized queries:\n\n```python\ncursor.execute(\"SELECT * FROM users WHERE email = ?\", (email,))\n```\n\nRequired change - this is a security issue that must be fixed before merge.\n```\n\n### Improvement Suggestion\n```markdown\n**Medium: Consider using a context manager**\n\nThe current code manually manages the database connection:\n\n```python\nconnection = get_db_connection()\ntry:\n    process_data(connection)\nfinally:\n    connection.close()\n```\n\n**Suggestion**: Using a context manager ensures proper cleanup even on exceptions:\n\n```python\nwith get_db_connection() as connection:\n    process_data(connection)\n```\n\nThis is more Pythonic and handles edge cases automatically. Not blocking, but recommended.\n```\n\n### Style\u002FConvention\n```markdown\n**Low: Line length**\n\nThis line exceeds our 100 character limit:\n\n```python\nsome_function(argument_one, argument_two, argument_three=some_value, argument_four=other_value)\n```\n\n**Fix**: Break onto multiple lines:\n\n```python\nsome_function(\n    argument_one,\n    argument_two,\n    argument_three=some_value,\n    argument_four=other_value,\n)\n```\n\nWe use Black formatter - running `black .` will auto-fix this.\n```\n\n### Positive Reinforcement\n```markdown\n**Great work!** The error handling here is excellent. Using a custom exception hierarchy makes the code very clear about what can go wrong and where. Thanks for the thorough docstrings too!\n```\n\n## Review Checklist\n```\n[] Code compiles\u002Fruns without errors\n[] Tests pass (unit, integration, e2e)\n[] No security vulnerabilities\n[] Performance is acceptable\n[] Follows naming conventions\n[] Adequate error handling\n[] Input validation present\n[] No hardcoded secrets\n[] No debug code left in\n[] Documentation updated\n[] Comments are helpful\n[] No dead code\n[] No code duplication\n[] Logging is appropriate\n[] Metrics\u002Fmonitoring if needed\n```\n\n## Responding to Reviews\n\n### When You Disagree\n1. Understand the reviewer's perspective\n2. Explain your reasoning\n3. Provide evidence or examples\n4. Seek common ground\n5. Escalate if necessary (don't flame wars)\n\n### When Making Changes\n1. Address all feedback\n2. Explain what you changed\n3. Request re-review\n4. Thank the reviewer\n\n### Quick Wins\n- Fix typos and formatting\n- Rename variables for clarity\n- Add missing tests\n- Remove debug code\n- Add comments\n",{"name":5,"license":14,"metadata":41,"description":7,"compatibility":35},{"audience":42,"category":33},"developers","main","5f7a3e453c98261f93d19a6a7de44ad8f7b72d41",2,"https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk","2026-03-01 06:55:40",{"source":8,"skillName":5,"commands":50,"prompt":60,"zipAvailable":61},[51,54,57],{"tool":52,"command":53},"npx","npx skills add ffsshhttiikk\u002Fopencode-agents-skills --skill code-review",{"tool":55,"command":56},"bunx","bunx skills add ffsshhttiikk\u002Fopencode-agents-skills --skill code-review",{"tool":58,"command":59},"pnpm","pnpm dlx skills add ffsshhttiikk\u002Fopencode-agents-skills --skill code-review","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fcode-review\u002FSKILL.md",true,[],[64,75,85,94,104,113],{"skillNo":65,"name":66,"nameZh":6,"description":67,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":70,"publishedAt":36},"01M6CXT9TXDF79BWJTMQAPB49G","xamarin","Xamarin cross-platform development","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fxamarin\u002FSKILL.md",[],[66,71,72,73,35,74],"platform","cross-platform","mobile","development",{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":36},"01M6CXT8AD04MFYDA32VW3FKAG","wrangling","Data wrangling fundamentals","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwrangling\u002FSKILL.md",[],[77,82,35,83,84],"data wrangling","science","data",{"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":91,"publishedAt":36},"01M6CXT717GCN7SRRNPBDP4508","windows","Windows operating system administration and scripting","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwindows\u002FSKILL.md",[],[87,92,35,93],"system","scripting",{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":36},"01M6CXT54K794NMEM3XAPZZDKT","wide-column","Wide-column data model","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwide-column\u002FSKILL.md",[],[101,102,35,103,84],"wide column","databases","model",{"skillNo":105,"name":106,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":110,"publishedAt":36},"01M6CXT28FMT2P4V9GZE67WA8E","wide-column-stores","Wide-column database stores","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwide-column-stores\u002FSKILL.md",[],[111,102,35,112],"wide column stores","database",{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":119,"publishedAt":36},"01M6CXT0D0M0Q4T2N7C2RX7DSN","websockets","WebSocket implementation and best practices","https:\u002F\u002Fgithub.com\u002Fffsshhttiikk\u002Fopencode-agents-skills\u002Fblob\u002Fmain\u002Fwebsockets\u002FSKILL.md",[],[115,120,121,122,35,32,123],"websocket","real-time","time","implementation"]