course-analysis
Free会場別のコース適性を分析する。会場を省略すると全会場の成績を表示する。「コース分析」「会場別の適性を見たい」といった依頼で発動する。
The English summary is being prepared. Showing the original description.
有馬記念分析システムの命名ドメイン適合性レビュー。
関数名・変数名・型名が競馬ドメインの意図(馬・騎手・調教師・血統・レース・出走・着順・上がり3F・馬場・会場・枠順・ローテ)を表現しているか、汎用名・技術接尾辞・命名規則の逸脱(snake_case 混入・アンダースコア付きメソッド名)・同一概念に別名が混在していないか(venue と course、同名異義の型)を検証。
Use when user says '命名レビュー', 'review naming', '名前チェック', or 'ドメイン命名確認'.
The English summary is being prepared. Showing the original description.
See how to installReview the instructions the agent will receive before you install.
src/ 配下の TypeScript を探索し、docs/DEVELOPMENT.md のファイル命名規約と以下のチェックリストに基づいてレビューする。
| ドメイン概念 | 英語表記 | 備考 |
|---|---|---|
| 馬 | horse | |
| 騎手 | jockey | |
| 調教師 | trainer | |
| 種牡馬(父) | sire | |
| 母 | mare | 母の父は mareSire |
| レース | race | |
| 出走(出走登録) | entry | |
| 着順 | finishPosition | DB は finish_position |
| 上がり3F | last3F | last3FTime / last3FAbilityScore |
| 馬場状態 | trackCondition | 良 / 稍重 / 重 / 不良 |
| 会場 | venue | 中山 / 東京 / 阪神 … |
| 枠順 | postPosition | 枠番は frameNumber、馬番は horseNumber |
| ローテーション | rotation | 出走間隔は intervalDays |
docs/DEVELOPMENT.md のファイル命名規約)起動時に「対象スコープ」と「対象ファイル一覧」が渡される場合がある(review-all 等からの dispatch 時)。その扱いは次の通り:
N-A)Summary: SKIPPED を出力するsrc/ 全体を対象にするvenue と course の混在、同名異義の型など)は、本変更で範囲を広げていなければ WARN 以下に留め、備考に「既存債務(本変更非起因)」と明記する。新規コードが既存の揺れた側に追随した場合は通常の重度で計上するsrc/domain/ src/commands/ src/repositories/ src/models/ src/utils/ src/types/ src/constants/ を Glob で探索するsrc/domain/ 配下は重点的に確認する(ドメイン語彙の発信源であり、層をまたぐ用語のブレはここを基準に判定する)process, handle, do, exec)だけで意図が読めない名前になっていないか(get* / parse* / display* は、目的語でドメインの意図が読めるなら対象外)execute から呼ばれるステップ関数)が、呼び出し側を読むだけでフローが理解できる名前かNG例: src/utils/HorseDataExtractor.ts:164 parseRaceInfo_Horse — アンダースコア修飾で parseRaceInfo(:267、レース概要の解析)との違いが名前から読めない(既存債務)
OK例: calculateVenueAptitudeScore / calculateRotationAptitudeScore(src/domain/entities/Horse.ts)、isOptimalRotation(src/constants/DistanceConstants.ts:45)、getHorseReliabilityFactor(src/constants/ScoringConstants.ts:136)
data, result, info, item, obj, tmp などの汎用名が使われていないかNG例: src/commands/AnalyzePerformance.ts:108 const wins_count(snake_case 混入。winsCount が正)/src/utils/JRAFetcher.ts:150 const data = this.convertEncoding(...) と :263 displayBasicInfo(data)(html / decodedHtml 等、中身が読める名前に。いずれも既存債務)
OK例: src/domain/entities/Horse.ts:228 const venueStats、:263 const similarDistanceResults、:307 const withLast3F
DB* 接頭辞(DBHorse / DBRace / DBJockey)、リポジトリ戻り値型が src/types/RepositoryTypes.ts という既存の役割分担に従っているかManager, Impl, Helper)を不必要に新設していないか。本リポジトリで確立している接尾辞は *Repository / *Stats / *Score(s) / *Components / *Constants / *Data(抽出・構築用のデータ形状)であり、これ以外の役割接尾辞を発明しないScore の中身が何のスコアか、Stats の集計軸が何かが名前から分かるか)*QueryRepository は repositories/queries/ に置く等)は review-arch 1.6 管轄。本スキルは語の選択のみ見るNG例: RaceInfo が src/types/HorseData.ts:23(枠番・馬番・斤量・オッズ=出走情報)と src/commands/CalculateScore.ts:23(ID・レース名・会場・距離=レース基本情報)の 2 つの異なる概念に使われている/HorseData が src/types/HorseData.ts:61(抽出 JSON の馬データ)と src/domain/entities/Horse.ts:64(エンティティ構築データ)で別物を指す(いずれも既存債務。新規の型名で同名異義を増やさない)
OK例: 出走情報は RaceEntryInfo、レース基本情報は RaceSummary のように概念ごとに別名を与える
NG例: 会場の概念に venue と course が混在している。値オブジェクトは venueAptitudeScore(src/domain/valueObjects/ScoreComponents.ts:16)、エンティティのメソッドは calculateVenueAptitudeScore(src/domain/entities/Horse.ts:226)である一方、DB 列は course_aptitude_score、テーブルは horse_course_stats、型は CourseStats、リポジトリは getHorsesCourseStatsBatch、CLI は course-analysis / AnalyzeCourse。src/commands/CalculateScore.ts:131 の course_aptitude_score: components.venueAptitudeScore が両語彙の突き当たり(既存債務。新規コードは domain 側の venue に揃える)
OK例: last3F(last3FTime / last3FAbilityScore / LAST_3F_PARAMS)、trainer(Trainer / trainerScore / TRAINER_SCORE_WEIGHTS / trainer_id)のように層をまたいで同じ語が通っている
※ テストコードの確立した慣習(ハーネス変数の局所短名等)は指摘対象外。
## 命名 / ドメイン適合性 レビュー結果
| # | チェック項目 | ステータス | 該当箇所 | 現在の名前 | 推奨名 | 備考 |
| - | ------------ | ---------- | -------- | ---------- | ------ | ---- |
### 詳細所見
(`src/domain/` への言及を必ず含めること)
### 他観点への申し送り
### 推奨アクション
- HIGH: <FAIL 行を全列挙>
- MEDIUM: <WARN 行のうち層をまたぐもの>
- LOW: <WARN 行のうち局所的なもの>
(該当が無い優先度は「なし」と明示)
レポート末尾に必ず以下の 1 行を出力する:
Summary: OK=<n> WARN=<n> FAIL=<n>
Summary: SKIPPED。その場合もレポート骨格(空テーブル + 推奨アクション各「なし」)を維持し、SKIPPED の根拠を詳細所見に 1 行書く(src/domain/ への言及要求は通常実施時のみ)No reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
会場別のコース適性を分析する。会場を省略すると全会場の成績を表示する。「コース分析」「会場別の適性を見たい」といった依頼で発動する。
The English summary is being prepared. Showing the original description.
抽出済みJSONファイル(馬・血統・レース出走データ)をSQLiteデータベースにインポートする。「DBインポート」「データベースに保存」「JSONをDBに登録」といった依頼で発動する。
The English summary is being prepared. Showing the original description.
実装前に参照する設計原則。理解容易性 = 読み手の思考量の少なさを基準に、AI が作りがちな失敗4パターン(引数・依存5個以上、コマンド層肥大・ドメイン貧血症、ポリモーフィズム機会の見逃し、トリッキーな実装)と、実装後セルフチェックの7観点(名称・役割・参照・状態・面積・階層・秩序)を言語化。Use when starting any implementation task, when user says '設計原則', 'design principles', or before writing new entities/commands/repositories.
The English summary is being prepared. Showing the original description.
agent 向けテキスト指示(skill / slash command / task プロンプト / コード生成プロンプト)を、バイアスを排した実行者に動かしてもらい、両面(実行者の自己申告 + 指示側メトリクス)で評価して反復改善する手法。改善が頭打ちになるまで回す。Use when user says 'プロンプトを改善して', 'スキルをチューニング', 'empirical-prompt-tuning', or after creating/heavily revising a skill or prompt.
The English summary is being prepared. Showing the original description.
JRA公式サイトから特定レースの出馬表HTMLを取得して馬データを抽出する。「データ取得」「JRAからデータを取ってきて」「出馬表を取得して」といった依頼で発動する。
The English summary is being prepared. Showing the original description.
有馬記念分析システムで利用可能なスキル一覧と使い方、スコア配分、基本ワークフローを表示する。「ヘルプ」「使い方を教えて」「何ができるの」といった依頼で発動する。
The English summary is being prepared. Showing the original description.