code-review
npx skills add https://github.com/taira0222/juku-cloud-backend --skill code-review
Agent 安装分布
Skill 文档
Code Review Skill
ç®ç
å®è£ ã³ã¼ãã4ã¤ã®è¦³ç¹ã§ã¬ãã¥ã¼ããå質ãä¿è¨¼ããï¼
- SDD仿§æ¸ï¼design.mdï¼ã¨ã®ä¸è²«æ§ – 仿§æ¸ã¨å®è£ ã®æ´åæ§ãæ¤è¨¼
- ã³ã¼ãã£ã³ã°è¦ç´éµå® – development-guidelines.mdã«åºã¥ãè¨è¨ã»ã¹ã¿ã¤ã«ãã§ãã¯
- ã»ãã¥ãªãã£ãã¹ããã©ã¯ãã£ã¹ – èªè¨¼ã»èªå¯ã»ãã©ã¡ã¼ã¿æ¤è¨¼ã»æ©å¯æ å ±ç®¡ç
- ãã¹ãã«ãã¬ãã¸ã»å質 – ãã¹ãã®åå¨ã»ã«ãã¬ãã¸ã»å質確èª
å ¥å
- 対象ã³ã¼ã: git diffããã¡ã¤ã«ãã¹ãã¾ãã¯ãã£ã¬ã¯ããª
- 仿§æ¸:
.steering/[date]-[feature]/design.mdï¼åå¨ããå ´åï¼ - è¦ç´:
docs/development-guidelines.md - ç¨èªé:
docs/glossary.md
åºå
ãã¼ã¯ãã¦ã³å½¢å¼ã®è©³ç´°ã¬ãã¥ã¼ã¬ãã¼ãï¼é大度å¥ã»ã«ãã´ãªå¥ï¼
å®è¡æé
Step 1: ã³ã³ããã¹ãåé
-
対象ã³ã¼ããç¹å®
- git diffã®å ´å: 夿´ããããã¡ã¤ã«ãªã¹ããåå¾
- ãã¡ã¤ã«æå®ã®å ´å: ãã®ãã¡ã¤ã«ã対象ã¨ãã
- ãã£ã¬ã¯ããªæå®ã®å ´å: é ä¸ã®å ¨Rubyãã¡ã¤ã«ï¼*.rbï¼ã対象ã¨ãã
-
対å¿ãã仿§æ¸ãæ¤ç´¢
- PR説æã«
.steering/ã¸ã®ãªã³ã¯ãããã°ä½¿ç¨ - ãªããã°ãã¡ã¤ã«åããæ©è½åãæ¨æ¸¬ãã
.steering/*-[feature]*/design.mdãæ¤ç´¢ - è¤æ°ãããæã¯ææ°ï¼ãã£ã¬ã¯ããªåã®æ¥ä»ã§å¤å®ï¼
- ããããªãæã¯SDDæ´åæ§ãã§ãã¯ãã¹ããã
- PR説æã«
-
åç §ããã¥ã¡ã³ããèªã¿è¾¼ã¿
docs/development-guidelines.md– ã³ã¼ãã£ã³ã°è¦ç´ã»ã»ãã¥ãªãã£è¦ä»¶docs/glossary.md– ãã¡ã¤ã³ç¨èªï¼ç¨èªã®æ£ç¢ºæ§ãã§ãã¯ç¨ï¼
Step 2: SDD仿§æ¸æ´åæ§ãã§ãã¯
ãã§ãã¯ãªã¹ã: checklists/sdd-consistency.md
.steering/*/design.mdãåå¨ããå ´åã以ä¸ãæ¤è¨¼ï¼
-
API仿§ãã§ãã¯
- design.mdã®APIå®ç¾©ã¨controllerãæ¯è¼
- HTTPã¡ã½ããããã¹ããã©ã¡ã¼ã¿ãã¬ã¹ãã³ã¹æ§é ã®ä¸è´ç¢ºèª
- ã¹ãã¼ã¿ã¹ã³ã¼ãã®ä¸è´ç¢ºèª
-
ãã¼ã¿ã¢ãã«ãã§ãã¯
- design.mdã®ãã¼ãã«å®ç¾©ã¨migration/modelãæ¯è¼
- ã«ã©ã åãåãå¶ç´ãã¤ã³ããã¯ã¹ã®ä¸è´ç¢ºèª
- ãªã¬ã¼ã·ã§ã³ï¼belongs_to, has_manyçï¼ã®ä¸è´ç¢ºèª
-
ãã¸ãã¹ã«ã¼ã«ãã§ãã¯
- design.mdã®BR-XXXï¼ãã¸ãã¹ã«ã¼ã«ï¼ã¨serviceå®è£ ãç §å
- ããªãã¼ã·ã§ã³ãã¸ãã¯ã®ä¸è´ç¢ºèª
-
ãã¹ãã±ã¼ã¹ãã§ãã¯
- design.mdã®TC-XXXï¼ãã¹ãã±ã¼ã¹ï¼ã¨specå®è£ ãç §å
- ãã¹ãç¶²ç¾ æ§ã®ç¢ºèª
éè¦: 仿§æ¸ãåå¨ããªãå ´åããã®ã¹ãããã¯ã¹ãããããã³ã¼ãã£ã³ã°è¦ç´ã»ã»ãã¥ãªãã£ã»ãã¹ãã®ã¿ã¬ãã¥ã¼ãã¾ãã
Step 3: ã³ã¼ãã£ã³ã°è¦ç´ãã§ãã¯
ãã§ãã¯ãªã¹ã: checklists/coding-standards.md
-
ã¬ã¤ã¤ã¼ã¢ã¼ããã¯ãã£
- Controller: èãããã¸ãã¹ãã¸ãã¯ãªã
- Service: ãã¸ãã¹ãã¸ãã¯éç´
- Query: è¤éãªã¯ã¨ãªåé¢
- Model: Thin Modelï¼validationsã®ã¿ï¼
- Serializer: JSONæ´å½¢ï¼Albaï¼
-
å½åè¦å
- 夿°ã»ã¡ã½ãã:
snake_case - ã¯ã©ã¹:
PascalCase - 宿°:
UPPER_SNAKE_CASE - çå½å¤ã¡ã½ãã:
?ã§çµãã - ç ´å£çã¡ã½ãã:
!ã§çµãã
- 夿°ã»ã¡ã½ãã:
-
ç¦æ¢ãã¿ã¼ã³æ¤åº
- Fat Controllerï¼Controllerã«ãã¸ãã¹ãã¸ãã¯è¨è¿°ï¼
- Fat Modelï¼Modelã«è¤éãªå¦çï¼
- ãã¸ãã¯ãã³ãã¼ï¼å®æ°åããã¦ããªãæ°å¤ï¼
- ãã¼ãã³ã¼ãã£ã³ã°ï¼è¨å®å¤ãURLçï¼
- ã°ãã¼ãã«å¤æ°ä½¿ç¨
-
ã³ã¼ãã¹ã¿ã¤ã«
- ã¤ã³ãã³ãï¼ã¹ãã¼ã¹2ã¤ï¼
- è¡ã®é·ãï¼120æå以ä¸ï¼
- æååãªãã©ã«ï¼ããã«ã¯ã©ã¼ãåªå ï¼
- ããã·ã¥è¨æ³ï¼æ°è¨æ³
key: valueï¼
Step 4: ã»ãã¥ãªãã£ã¬ãã¥ã¼
ãã§ãã¯ãªã¹ã: checklists/security.md
-
èªè¨¼ã»èªå¯
authenticate_user!ã®ä½¿ç¨ç¢ºèªrequire_admin_role!çã®é©åãªé ç½®- before_actionã§ã®èªè¨¼ã»èªå¯å¶å¾¡
-
ãã©ã¡ã¼ã¿æ¤è¨¼
- Strong Parameters使ç¨ç¢ºèªï¼ãã¯ã¤ããªã¹ãæ¹å¼ï¼
permit!ã®ä½¿ç¨ç¦æ¢
-
æ©å¯æ å ±ç®¡ç
- ENV夿°ä½¿ç¨ç¢ºèª
- ãã¼ãã³ã¼ãã£ã³ã°ãããæ©å¯æ å ±ï¼ãã¹ã¯ã¼ããAPI Keyçï¼ã®æ¤åº
.envãã¡ã¤ã«ã®ã³ããã確èª
-
ã»ãã¥ãªãã£ãªã¹ã¯
- SQLã¤ã³ã¸ã§ã¯ã·ã§ã³ãªã¹ã¯ï¼ãã©ã¡ã¼ã¿åã¯ã¨ãªä½¿ç¨ç¢ºèªï¼
- XSSãªã¹ã¯ï¼ãµãã¿ã¤ã¼ã¼ã·ã§ã³ç¢ºèªï¼
- ãã¹ã¯ã¼ãã»ãã¼ã¯ã³ã®ããã·ã¥åï¼bcrypt, JWTæå¹æéï¼
Step 5: ãã¹ãå質ãã§ãã¯
ãã§ãã¯ãªã¹ã: checklists/testing.md
-
ãã¹ããã¡ã¤ã«åå¨ç¢ºèª
- 夿´ããããã¡ã¤ã«ã«å¯¾å¿ããspecãã¡ã¤ã«ã®åå¨ç¢ºèª
-
ã«ãã¬ãã¸æ¨å®
- Modelãã¹ã: validations, associations, scopesã®ãã¹ãåå¨
- Serviceãã¹ã: æ£å¸¸ç³»ãç°å¸¸ç³»ãã¨ãã¸ã±ã¼ã¹ã®ãã¹ãåå¨
- Requestãã¹ã: æåã±ã¼ã¹ãã¨ã©ã¼ã±ã¼ã¹ãèªè¨¼ã»èªå¯ã®ãã¹ãåå¨
-
ãã¹ãå質
- RSpecå½¢å¼ï¼describe, context, itï¼ã®ä½¿ç¨ç¢ºèª
- AAAãã¿ã¼ã³ï¼Arrange, Act, Assertï¼ã®éµå®ç¢ºèª
- FactoryBot使ç¨ç¢ºèª
- 1ãã¹ã1ã¢ãµã¼ã·ã§ã³ã®åå確èª
-
ã¨ãã¸ã±ã¼ã¹ã«ãã¬ãã¸
- å¢çå¤ãã¹ã
- nil/空æåå/空é åã®ãã¹ã
- 並è¡å¦çã®ãã¹ãï¼å¿ è¦ã«å¿ãã¦ï¼
-
N+1åé¡åé¿ã®ãã¹ã
includes,preload,eager_loadã®ä½¿ç¨ç¢ºèª
Step 6: ã¬ãã¼ãçæ
ãã³ãã¬ã¼ã: templates/review-report.md
-
çµæãé大度å¥ã«åé¡
- Critical: ãã¼ã¸åã«å¿ ãä¿®æ£ï¼ä»æ§éåãã»ãã¥ãªãã£åé¡ãå¿ é ãã¹ãæ¬ å¦ï¼
- Warning: 対å¦ãã¹ãï¼N+1ã¯ã¨ãªããã¸ãã¯ãã³ãã¼ãã¨ãã¸ã±ã¼ã¹ãã¹ãæ¬ å¦ï¼
- Info: æ¨å¥¨ï¼ããã¥ã¡ã³ãæ¹åããªãã¡ã¯ã¿ãªã³ã°æ©ä¼ï¼
-
ã«ãã´ãªå¥ã«ã°ã«ã¼ãå
- SDD仿§æ¸æ´åæ§
- ã³ã¼ãã£ã³ã°è¦ç´
- ã»ãã¥ãªãã£
- ãã¹ãå質
-
ãã¡ã¤ã«å¥ã«åé¡ãæ´ç
- ååé¡ã«
templates/issue-format.mdã®ãã©ã¼ããããé©ç¨ - ãã¡ã¤ã«ãã¹ãè¡çªå·ãåé¡èª¬æãæ¨å¥¨å¯¾å¿ãå«ãã
- ååé¡ã«
-
ãµããªã¼ã¨æ¬¡ã®ã¢ã¯ã·ã§ã³
- Executive Summaryï¼é大度å¥ã®å顿°éè¨ï¼
- Must Fix Before Mergeï¼Criticalåé¡ãªã¹ãï¼
- Should Addressï¼Warningåé¡ãªã¹ãï¼
- Recommendedï¼Infoåé¡ãªã¹ãï¼
- èªåãã¼ã«ï¼RuboCop, Brakeman, RSpec+Coverageï¼å®è¡ã®æ¨å¥¨
åç §ãã¡ã¤ã«
- guide.md – 詳細ãªã¬ãã¥ã¼ã¬ã¤ãã©ã¤ã³ã»ãã¹ããã©ã¯ãã£ã¹
- checklists/sdd-consistency.md – SDD仿§æ¸æ¤è¨¼ã«ã¼ã«
- checklists/coding-standards.md – ã³ã¼ãã£ã³ã°è¦ç´ãã§ãã¯ãªã¹ã
- checklists/security.md – ã»ãã¥ãªãã£ã¬ãã¥ã¼ãã§ãã¯ãªã¹ã
- checklists/testing.md – ãã¹ãå質ãã§ãã¯ãªã¹ã
- templates/review-report.md – ã¬ãã¥ã¼ã¬ãã¼ããã³ãã¬ã¼ã
- templates/issue-format.md – åå¥åé¡ãã©ã¼ããã
ä½¿ãæ¹
ãã®ã¹ãã«ã¯é常 /code-review ã¨ã¼ã¸ã§ã³ãçµç±ã§å¼ã³åºããã¾ãã
# PRå
¨ä½ãã¬ãã¥ã¼ï¼git diff使ç¨ï¼
/code-review
# ç¹å®ãã¡ã¤ã«ãã¬ãã¥ã¼
/code-review app/controllers/api/v1/reports_controller.rb
# è¤æ°ãã¡ã¤ã«ãã¬ãã¥ã¼
/code-review app/controllers/api/v1/reports_controller.rb app/services/reports/generate_service.rb
# ç¹å®æ©è½ãã¬ãã¥ã¼ï¼.steering/é
ä¸ï¼
/code-review .steering/20250131-student-report/
# ãã£ã¬ã¯ããªå
¨ä½ãã¬ãã¥ã¼
/code-review app/services/reports/
注æäºé
- ã¬ãã¥ã¼ã¯å¯¾è±¡ãã¡ã¤ã«æ°ã«ããæ°åãããå ´åãããã¾ã
- Criticalåé¡ãè¦ã¤ãã£ãå ´åããã¼ã¸åã«å¿ ãä¿®æ£ãã¦ãã ãã
- ãã®ã¹ãã«ã¯èªåãã¼ã«ï¼RuboCop, Brakemançï¼ã®è£å®ã¨ãã¦ä½¿ç¨ãã¾ã
- æ¢åãã¼ã«ãä½µç¨ãããã¨ã§ãããå æ¬çãªå質ä¿è¨¼ãå¯è½ã§ã