بنقرة واحدة
ruins-review
ruins 固有のレビュー観点チェックリスト。Ark の strict semantics、serde 安全性、生成物、型アサーションなど繰り返し出た論点をまとめる。コードレビューや自己点検のときに使う
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
ruins 固有のレビュー観点チェックリスト。Ark の strict semantics、serde 安全性、生成物、型アサーションなど繰り返し出た論点をまとめる。コードレビューや自己点検のときに使う
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
ruins のコード規約。doc.go・コメント・ゲッター/コンストラクタ・YAGNI・公開API・lint・テストの書き方。Goコードを書く/直すときに使う
docs/design/YYYYMMDD_NN.md の設計ドキュメントを規約どおり採番・雛形展開して作成する。新しい設計を書き起こすときに使う
フィードバックや学びから skill を新規作成・更新する手順。同種の指摘が2回以上出たとき、手順を skill 化したいとき、既存 skill を改訂/整理したいときに使う
ruins に新しい ECS コンポーネントを追加する手順。型定義・登録表・生成・serde除外・クエリ設計・テストの漏れを防ぐ。コンポーネントやマーカーを増やすときに使う
استنادا إلى تصنيف SOC المهني
| name | ruins-review |
| description | ruins 固有のレビュー観点チェックリスト。Ark の strict semantics、serde 安全性、生成物、型アサーションなど繰り返し出た論点をまとめる。コードレビューや自己点検のときに使う |
徹底的に批判的にレビューする。 以下はこのプロジェクトのレビューで繰り返し登場した論点。
world.ECS.Alive() / Has() で事前に弾くか gc.Upsert を使う。Add は値をアーキタイプ領域へコピーする(呼び出し側ポインタ ≠ 格納先)。Get はその領域へのポインタを返し、構造変更で無効化される。構造変更後は再取得する。値をコピーして書き換えても格納先には反映されない。json:"-" + ロード時再構築。skipComponents() に入れる。make generate(add-component skill 参照)。components_gen.go を手編集しない。*_gen.go)を sed 等で直接書き換えない。生成元を直して再生成する。ある概念が複数のスイッチ/クエリに散在し、1種別足すと全箇所に足す必要がある。1つでも漏れると、発動しない・表示されないといった silent な不具合になり、手動プレイで初めて発覚しがち。
機械化を最優先する。 enum を switch する箇所は default を置かず exhaustive linter に全 case を強制させる。.golangci.yml は default-signifies-exhaustive: true(default があれば網羅とみなす)なので、強制したい switch は default を消すのが要点。値を返す switch は switch の後に fall-through 用の一文を置く:
panic("未知の X: " + string(k))。Go 版の never 相当。Config() はこの型で、末尾 return InteractionConfig{}。exhaustive は既知種別の網羅を強制しつつ、未知入力は末尾へ落ちる。これで新種別の対応漏れが make lint で止まる。
InteractionKind は全スイッチ exhaustive 強制済み: interactable.go の Config()、states/action_handlers.go の getInteractionActions、activity/execute_interaction.go、activity/player_actions.go の足元ログ、いずれも default を持たない。新種別を足すと4箇所すべてで lint が漏れを検知する。手動照合は不要。inputmapper.ActionID の入力ハンドラは多数のアクションから一部だけ処理し残りを default で流すのが正常。exhaustive 強制は不適切なので default を残す。「全 case 列挙が意味を持つドメイン enum」だけ default を外す。ecs.NewFilterN でなく query.ActiveFilter を使う。Suspended 除外を1箇所に集約している。linter 強制は無いので grep -rn "ecs.NewFilter" internal/ | grep -iE "GridElement|Door|SoloAI|Interactable" 等で洗う。座標検索・破壊的操作(一括削除/平行移動)の漏れが特に致命的。