| name | harness-review |
| description | Multi-perspective review supporting code, plan, and scope analysis. Auto-detects review type from context. Use when user mentions reviews, code review, plan review, scope analysis, security, performance, quality checks, PRs, diffs, or change review. Do NOT load for: implementation work, new feature development, bug fixes, or setup. |
| allowed-tools | ["Read","Grep","Glob","Bash","Task"] |
| context | fork |
Review Skills
ã³ãŒãã¬ãã¥ãŒãèšç»ã¬ãã¥ãŒãã¹ã³ãŒãåæãæ
åœããã¹ãã«çŸ€ã§ãã
ã³ã³ããã¹ãããã¬ãã¥ãŒã¿ã€ããèªåå€å®ããŸãã
ã¬ãã¥ãŒã¿ã€ãïŒContext-AwareïŒ
ã¬ãã¥ãŒã¿ã€ãã¯ã³ã³ããã¹ãããèªåå€å®ãããŸãïŒ
| Recent Activity | Review Type | 4 Experts |
|---|
/plan-with-agent åŸ | Plan Review | Clarity, Feasibility, Dependencies, Acceptance |
/work åŸ | Code Review | Security, Performance, Quality, Accessibility |
| ã¿ã¹ã¯è¿œå åŸ | Scope Review | Scope-creep, Priority, Feasibility, Impact |
æåæå®
/harness-review
/harness-review code
/harness-review plan
/harness-review scope
æ©èœè©³çްïŒCode ReviewïŒ
æ©èœè©³çްïŒPlan/Scope ReviewïŒ
Plan Review ãš Scope Review 㯠Codex ãšãã¹ããŒãã䜿çšããŸãïŒ
| ã¬ãã¥ãŒã¿ã€ã | ãšãã¹ããŒã | åç
§ |
|---|
| Plan Review | Clarity, Feasibility, Dependencies, Acceptance | ../codex-review/references/experts/clarity-expert.md ç |
| Scope Review | Scope-creep, Priority, Feasibility, Impact | ../codex-review/references/experts/scope-creep-expert.md ç |
詳现: ../codex-review/references/codex-parallel-review.md
å®è¡æé
- å質å€å®ã²ãŒãïŒStep 0ïŒ
- æ®ã³ã³ããã¹ã確èªïŒCodex ã¢ãŒãæïŒïŒStep 1ïŒ
- ãŠãŒã¶ãŒã®ãªã¯ãšã¹ããåé¡
- ïŒClaude-mem æå¹æïŒéå»ã®ã¬ãã¥ãŒææãæ€çŽ¢
- 䞊åå®è¡ã®å€å®ïŒäžèšåç
§ïŒ
- äžèšã®ãæ©èœè©³çްãããé©åãªåç
§ãã¡ã€ã«ãèªãããŸãã¯äžŠåãµããšãŒãžã§ã³ãèµ·å
- çµæãçµ±åããŠã¬ãã¥ãŒå®äº
å
¥åã®åªå
é äœ
files ãæž¡ãããŠããå Žå㯠ãã®ãã¡ã€ã«ã®ã¿ ã察象ã«ã¬ãã¥ãŒãã
files ãæž¡ãããŠããªãå Žå㯠git_diff ãã倿Žç®æãæšå®ãã
context_from: code_content ãæž¡ãããŠããå Žå㯠ãã®å
容ãåªå
ããŠã¬ãã¥ãŒãã
Step 0: å質å€å®ã²ãŒãïŒã¬ãã¥ãŒéç¹é åã®ç¹å®ïŒ
ã¬ãã¥ãŒéå§åã«å€æŽå
容ãåæããéç¹é åãç¹å®:
倿Žãã¡ã€ã«åæ
â
âââââââââââââââââââââââââââââââââââââââââââ
â å質å€å®ã²ãŒã â
âââââââââââââââââââââââââââââââââââââââââââ€
â å€å®é
ç®: â
â âââ ã«ãã¬ããžäžè¶³ïŒïŒãã¹ããªãïŒ â
â âââ ã»ãã¥ãªãã£æ³šæïŒïŒauth/api/ïŒ â
â âââ a11y 泚æïŒïŒUI ã³ã³ããŒãã³ãïŒ â
â âââ ããã©ãŒãã³ã¹æ³šæïŒïŒDB/ã«ãŒãïŒ â
âââââââââââââââââââââââââââââââââââââââââââ
â
éç¹ã¬ãã¥ãŒé åãæ±ºå®
ã«ãã¬ããžå€å®
| ç¶æ³ | ææå
容 |
|---|
| æ°èŠãã¡ã€ã«ã«ãã¹ããªã | ããã¹ããäžè¶³ããŠããŸãã |
| 倿Žãã¡ã€ã«ã®ãã¹ããå€ã | ããã¹ãã®æŽæ°ãæ€èšããŠãã ããã |
| ã«ãã¬ããž < 60% | ãã«ãã¬ããžåäžãæšå¥šã |
ã»ãã¥ãªãã£éç¹ã¬ãã¥ãŒ
| ãã¹ | 远å ãã§ãã¯é
ç® |
|---|
| auth/, api/ | OWASP Top 10 ãã§ãã¯ãªã¹ã |
| å
¥ååŠç | ãµãã¿ã€ãºãããªããŒã·ã§ã³ |
| DB ã¯ãšãª | ãã©ã¡ãŒã¿åç¢ºèª |
a11y éç¹ã¬ãã¥ãŒ
| ãã¹ | ãã§ãã¯é
ç® |
|---|
| src/components/ | alt, aria, ããŒããŒãæäœ |
| src/pages/ | èŠåºãæ§é , ãã©ãŒã«ã¹ç®¡ç |
ããã©ãŒãã³ã¹éç¹ã¬ãã¥ãŒ
| ãã¿ãŒã³ | èŠåå
容 |
|---|
| ã«ãŒãå
DB ã¯ãšãª | N+1 ã¯ãšãªã®å¯èœæ§ |
| å€§èŠæš¡ããŒã¿åŠç | ããŒãžããŒã·ã§ã³æ€èš |
| useEffect ä¹±çš | ã¬ã³ããªã³ã°æé©å |
SEO/OGP éç¹ã¬ãã¥ãŒ
| ãã¹ | ãã§ãã¯é
ç® |
|---|
| src/pages/, app/ | title, description, canonical |
| public/ | robots.txt, sitemap.xml, OGP ç»å |
| layout.tsx, _document.tsx | viewport, OGP ã¿ã°, Twitter Card |
ã¯ãã¹ãã©ãããã©ãŒã éç¹ã¬ãã¥ãŒ
| ãã¹ | ãã§ãã¯é
ç® |
|---|
| src/components/, app/ | ã¬ã¹ãã³ã·ãïŒåºå®å¹
ãã§ãã¯ïŒ |
| *.css, *.scss, tailwind | 100vw 䜿çšãoverflow èšå® |
| public/ | favicon, apple-touch-icon |
éç¹ã¬ãã¥ãŒçµ±ååºå
ð å質å€å®çµæ â éç¹ã¬ãã¥ãŒé å
| å€å® | è©²åœ | 察象ãã¡ã€ã« |
|------|------|-------------|
| ã»ãã¥ãªã㣠| â ïž | src/api/auth.ts |
| ã«ãã¬ããž | â ïž | src/utils/helpers.ts (ãã¹ããªã) |
| a11y | â
| - |
| ããã©ãŒãã³ã¹ | â
| - |
| SEO/OGP | â ïž | app/layout.tsx (OGP æªèšå®) |
| ã¯ãã¹ãã©ãããã©ãŒã | â
| - |
â ã»ãã¥ãªãã£ã»ã«ãã¬ããžã»SEO ãéç¹çã«ã¬ãã¥ãŒ
LSP ããŒã¹ã®åœ±é¿åæïŒæšå¥šïŒ
倿Žã¬ãã¥ãŒæã« LSP ããŒã«ã§åœ±é¿ç¯å²ã確èª:
| 倿Žã¿ã€ã | LSP æäœ | 確èªå
容 |
|---|
| 颿°ã·ã°ããã£å€æŽ | findReferences | å
šåŒã³åºãå
ãå¯Ÿå¿æžã¿ã |
| åå®çŸ©å€æŽ | findReferences | 䜿çšç®æã§ã®åäºææ§ |
| API å€æŽ | incomingCalls | 圱é¿ãåãããšã³ããã€ã³ã |
ã¬ãã¥ãŒãããŒ:
- 倿Žãã¡ã€ã«ãç¹å®
LSP.findReferences ã§åœ±é¿ç¯å²ãåæ
- 圱é¿ãåãããã¡ã€ã«ãå«ããŠã¬ãã¥ãŒ
䜿çšäŸ:
# 1. 倿Žããã颿°ã®åç
§ç®æã確èª
LSP operation=findReferences filePath="src/api/user.ts" line=42 character=15
# 2. 颿°ã®åŒã³åºãéå±€ã確èª
LSP operation=incomingCalls filePath="src/api/user.ts" line=42 character=15
# 3. åå®çŸ©ã®äœ¿çšç®æã確èª
LSP operation=findReferences filePath="src/types/api.ts" line=10 character=12
åºåäŸ:
ð LSP 圱é¿åæçµæ
倿Ž: updateUserProfile() ã®ã·ã°ããã£å€æŽ
圱é¿ãåããç®æ:
âââ src/pages/profile.tsx:89 â ïž åŒæ°æŽæ°å¿
èŠ
âââ src/pages/settings.tsx:145 â ïž åŒæ°æŽæ°å¿
èŠ
âââ tests/user.test.ts:67 â
æŽæ°æžã¿
âââ src/api/admin.ts:23 â ïž åŒæ°æŽæ°å¿
èŠ
â 3ç®æã§åŒæ°ã®æŽæ°ãå¿
èŠ
泚: LSP ãµãŒããŒãèšå®ãããŠããèšèªã§ã®ã¿åäœããŸãã
Step 1: æ®ã³ã³ããã¹ã確èªïŒCodex ã¢ãŒãæïŒ
Codex ã¢ãŒãïŒreview.mode: codexïŒã®å Žåã¯ãæ®ã³ã³ããã¹ãã 30%以äžãªã /compact ãå
ã«å®è¡ããŠãã ããã
泚æ: /compact åŸãäœè£ãå°ãªãå Žåã¯çž®éããç¶è¡ããŸãã
Step 2: éå»ã®ã¬ãã¥ãŒæææ€çŽ¢ïŒMemory-EnhancedïŒ
Claude-mem ãæå¹ãªå Žåãã¬ãã¥ãŒéå§åã«éå»ã®é¡äŒŒææãæ€çŽ¢:
# mem-search ã§éå»ã®ã¬ãã¥ãŒææãæ€çŽ¢
mem-search: type:review "{倿Žãã¡ã€ã«ã®ãã¿ãŒã³}"
mem-search: concepts:security "{ã»ãã¥ãªãã£é¢é£ã®ããŒã¯ãŒã}"
mem-search: concepts:gotcha "{倿Žç®æã«é¢é£ããããŒã¯ãŒã}"
衚瀺äŸ:
ð éå»ã®ã¬ãã¥ãŒææïŒé¢é£ããïŒ
| æ¥ä» | ææå
容 | ãã¡ã€ã« |
|------|---------|---------|
| 2024-01-15 | XSSè匱æ§: innerHTML 䜿çšçŠæ¢ | src/components/*.tsx |
| 2024-01-20 | N+1ã¯ãšãª: prefetch å¿
é | src/api/*.ts |
ð¡ ä»åã®ã¬ãã¥ãŒã§äžèšãã¿ãŒã³ãéç¹ãã§ãã¯
泚: Claude-mem ãæªèšå®ã®å Žåããã®ã¹ãããã¯ã¹ããããããŸãã
ã¬ãã¥ãŒã¢ãŒãã®éžæ
ã¬ãã¥ãŒã¹ãã«ã¯ 2 ã€ã®ã¢ãŒãã§åäœããŸã:
èšå®ç¢ºèª: .claude-code-harness.config.yaml
â
âââ review.mode: default â Claude åäœã¬ãã¥ãŒ
âââ review.mode: codex â Codex 䞊åã¬ãã¥ãŒïŒã¬ãã¥ãŒã¿ã€ãããšã«4ãšãã¹ããŒãïŒ
Default ã¢ãŒãïŒClaude åäœïŒ
Claude ãçŽæ¥ã¬ãã¥ãŒãå®è¡ãå°ãäžèŠæš¡ã®å€æŽã«æé©ã
Codex ã¢ãŒãïŒäžŠåãšãã¹ããŒãïŒ
Codex MCP çµç±ã§ã¬ãã¥ãŒã¿ã€ãã«å¿ãã4ã€ã®ãšãã¹ããŒãã åå¥ã«äžŠååŒã³åºã:
| Review Type | ãšãã¹ããŒã |
|---|
| Code Review | Security, Performance, Quality, Accessibility |
| Plan Review | Clarity, Feasibility, Dependencies, Acceptance |
| Scope Review | Scope-creep, Priority, Feasibility, Impact |
â ïž Codex ã¢ãŒãå®è¡æã®å¿
é ã«ãŒã«
絶察ã«1åã® MCP åŒã³åºãã§è€æ°ãšãã¹ããŒãããŸãšããªãããšã
â
æ£ãã: 4åã® MCP åŒã³åºãã1ã€ã®ã¬ã¹ãã³ã¹å
ã§äžŠåå®è¡
â ééã: 1åã®åŒã³åºãã§ãå
šèгç¹ãã¬ãã¥ãŒããŠããšäŸé Œ
å®è¡æé :
- åŒã³åºããšãã¹ããŒããå€å®ïŒå
šéšã§ã¯ãªãå¿
èŠãªãã®ã®ã¿ïŒ:
- èšå®ã§
enabled: false â é€å€
- CLI/ããã¯ãšã³ã â Accessibility, SEO é€å€
- ããã¥ã¡ã³ãã®ã¿å€æŽ â Quality, Architect, Plan Reviewer, Scope Analyst ãåªå
ïŒSecurity, Performance ã¯é€å€å¯ïŒ
- æå¹ãªãšãã¹ããŒãã®
experts/*.md ããããã³ããã åå¥ã«èªã¿èŸŒã
- æå¹ãªãšãã¹ããŒãã®ã¿
mcp__codex__codex ã 1ã€ã®ã¬ã¹ãã³ã¹å
ã§äžŠåå®è¡
- åçµæãçµ±åããŠå€å®
詳现: codex-review/references/codex-parallel-review.md
Codex ã¢ãŒãæå¹å:
/codex-mode on
詳现: references/codex-integration.md
䞊åãµããšãŒãžã§ã³ãèµ·åïŒDefault ã¢ãŒãïŒ
以äžã®æ¡ä»¶ãäž¡æ¹æºããå ŽåãTask tool ã§ code-reviewer ã䞊åèµ·å:
- ã¬ãã¥ãŒèŠ³ç¹ >= 2ïŒäŸ: ã»ãã¥ãªã㣠+ ããã©ãŒãã³ã¹ïŒ
- 倿Žãã¡ã€ã« >= 5
èµ·åãã¿ãŒã³ïŒ1ã€ã®ã¬ã¹ãã³ã¹å
ã§è€æ°ã® Task tool ãåæåŒã³åºãïŒ:
Task tool 䞊ååŒã³åºã:
#1: subagent_type="code-reviewer"
prompt="ã»ãã¥ãªãã£èгç¹ã§ã¬ãã¥ãŒ: {files}"
#2: subagent_type="code-reviewer"
prompt="ããã©ãŒãã³ã¹èгç¹ã§ã¬ãã¥ãŒ: {files}"
#3: subagent_type="code-reviewer"
prompt="ã³ãŒãå質芳ç¹ã§ã¬ãã¥ãŒ: {files}"
å°èŠæš¡ãªå ŽåïŒæ¡ä»¶ãæºãããªãïŒ:
- åã¹ãã«ïŒdoc.mdïŒãé æ¬¡èªã¿èŸŒãã§çŽåå®è¡
ð§ MCP Code Intelligence ããŒã«ã®æŽ»çš
ã¬ãã¥ãŒã§ã¯ MCP ããŒã«ïŒAST-Grep, LSPïŒã掻çšããŠç²ŸåºŠãåäžããŸãã
éèŠ: /dev-tools-setup ã§ MCP ãµãŒããŒãèšå®ãããŠããå ŽåãæšæºããŒã«ïŒGrep, ReadïŒã§ã¯ãªã MCP ããŒã«ãåªå
䜿çšããŠãã ãããMCP ããŒã«ã¯æ§é çãªæ€çŽ¢ãå¯èœã§ãããæ£ç¢ºãªçµæãåŸãããŸãã
AST-Grep MCP ããŒã«ïŒharness_ast_searchïŒ
æ§é çãªã³ãŒããã¿ãŒã³æ€çŽ¢ã«äœ¿çšããŸããæ£èŠè¡šçŸããŒã¹ã® Grep ãã粟床ãé«ããã³ãŒãã¹ã¡ã«æ€åºã«æé©ã§ãã
| æ€åºãã¿ãŒã³ | AST-Grep ãã¿ãŒã³ | çšé |
|---|
| Debug logs | console.log($$$) | ãªãªãŒã¹åã®æ®çãã°æ€åº |
| Empty catch | catch ($ERR) { } | ãšã©ãŒæ¡ãã€ã¶ãæ€åº |
| Unused async | async function $NAME($$$) { $BODY } | await ãªã async æ€åº |
| Magic numbers | æ°å€ãªãã©ã«æ€çŽ¢ | ããŒãã³ãŒã宿°æ€åº |
䜿çšäŸ:
harness_ast_search pattern="console.log($$$)" language="typescript" path="src/"
harness_ast_search pattern="catch ($ERR) { }" language="typescript" path="src/"
åºåäŸ:
ð AST-Grep Code Smell Scan
Patterns checked:
- console.log($$$) â Debug logs
- catch ($ERR) { } â Empty catch blocks
Results:
âââ 3x console.log found (src/api/*.ts)
âââ 1x empty catch block (src/utils/error.ts:45)
âââ 0x unused async
泚: harness_ast_search ãå©çšã§ããªãå Žåã¯ãsg ã³ãã³ãïŒBashïŒãŸã㯠Grep ã«ãã©ãŒã«ããã¯ããŸãã
ð§ LSP æ©èœã®æŽ»çš
ã¬ãã¥ãŒã§ã¯ LSPïŒLanguage Server ProtocolïŒã掻çšããŠç²ŸåºŠãåäžããŸãã
MCP çåªå
: harness_lsp_* MCP ããŒã«ãå©çšå¯èœãªå Žåã¯ãæšæº LSP ããŒã«ããåªå
ããŠäœ¿çšããŠãã ããã
LSP ãã¬ãã¥ãŒã«çµ±å
| ã¬ãã¥ãŒèŠ³ç¹ | LSP æŽ»çšæ¹æ³ |
|---|
| å質 | Diagnostics ã§åãšã©ãŒã»æªäœ¿çšå€æ°ãèªåæ€åº |
| ã»ãã¥ãªã㣠| Find-references ã§æ©å¯ããŒã¿ã®æµãã远跡 |
| ããã©ãŒãã³ã¹ | Go-to-definition ã§éãåŠçã®å®è£
ãç¢ºèª |
LSP Diagnostics ã®åºåäŸ
ð LSP 蚺æçµæ
| ãã¡ã€ã« | ãšã©ãŒ | èŠå |
|---------|--------|------|
| src/components/Form.tsx | 0 | 2 |
| src/utils/api.ts | 1 | 0 |
â ïž 1ä»¶ã®ãšã©ãŒãæ€åº
â ã¬ãã¥ãŒã§ææäºé
ã«è¿œå
Find-references ã«ãã圱é¿åæ
ð 倿Žåœ±é¿åæ
倿Ž: validateInput()
åç
§ç®æ:
âââ src/pages/signup.tsx:34
âââ src/pages/settings.tsx:56
âââ tests/validate.test.ts:12
â ãã¹ãã§ã«ããŒæžã¿ â
詳现: docs/LSP_INTEGRATION.md
VibeCoder åã
ð ã³ãŒããã§ãã¯ãäŸé Œãããšãã®èšãæ¹
1. **ããã§ãã¯ããŠã**
- å
šäœçã«åé¡ããªããèŠãŠããã
2. **ãã»ãã¥ãªãã£å€§äžå€«ïŒã**
- æªæããæ»æã«èããããããã§ãã¯
3. **ãé
ããªãïŒã**
- é床ã«åé¡ããªãããã§ãã¯
4. **ã誰ã§ã䜿ããïŒã**
- é害ã®ããæ¹ã§ã䜿ããããã§ãã¯
ð¡ ãã³ã: ãå
šéšãã§ãã¯ããŠããšèšãã°ã
4ã€ã®èгç¹ãã¹ãŠãèªåã§ç¢ºèªããŸã