# mistakes-index
instinct: ページの種別クロスリファレンス。89件を8カテゴリに分類。
> セッション開始時のミス参照用。エラー系トリガー時に で引っかかるようにこのページも索引として機能する。
## DB・SQL(10件)
- [[instinct: PostgreSQLのFILTER句集約で個別COUNTクエリを1本に削減できる]]
- [[instinct: PostgreSQLのWHERE条件評価順序は保証されないためキャスト前に型チェックが必要]]
- [[instinct: PostgreSQL接続確認前にパスワード環境変数の有効性を検証する]]
- [[instinct: Pythonインポートエラー対処前に依存関係(SQLAlchemy等)のインストール状態を確認する]]
- [[instinct: SQLを実行する前にカラム名を正確に確認する(特にPostgreSQLの統計ビュー)]]
- [[instinct: URLエンコードをHTMLテンプレートのdata属性に適用するとDBに二重エンコードで保存される]]
- [[instinct: last_triggered_atがDBで古く見えても defer_record=True時は正常な場合がある]]
- [[instinct: psycopg2はautocommit=Falseのためcommit漏れがidle-in-transactionを引き起こす]]
- [[instinct: scraper.pyのSITES定義を更新する前にDBの最新group_idと一致しているか確認する]]
- [[instinct: ツリー構造を変更する前にキーワード収集クエリや権限テーブルへの影響を確認する]]
## セキュリティ(8件)
- [[instinct: Cookieではなく LocalStorage に認証トークンを保存するサイトは save_auth.py が機能しない]]
- [[instinct: GitHub Actions secret は利用するリポジトリごとに個別登録が必要]]
- [[instinct: GitHub Actions secret名のtypoはcurlのURL rejectedで発覚する]]
- [[instinct: JWTのSECRET_KEYが開発用プレースホルダーのまま本番稼働するとCRITICAL脆弱性になる]]
- [[instinct: Jinja2はautoescapeを明示設定しないとHTMLテンプレートでXSSが成立する]]
- [[instinct: LocalStorageにJWTを保存するSPAはCookieベースのsave_authでは認証できない]]
- [[instinct: auth JSONファイルをgit追跡すると認証情報がリポジトリ履歴に残存する]]
- [[instinct: nginxのみに頼った内部API認証はアプリ層でもトークン検証を追加して多層防御にする]]
## スクレイピング・Playwright(9件)
- [[instinct: Playwright ローカルモードでEPIPEエラーが出たらリモートPlaywrightに切り替える]]
- [[instinct: Scraplingを使う前に対象サイトがSPAかどうかを確認しJSレンダリングが必要ならPlaywrightFetcherを明示的に指定する]]
- [[instinct: URLパターンマッチを修正する前に実際のリンク構造をcurlまたはブラウザで検証する]]
- [[instinct: dev/prodのscraper_bot_schedule設定乖離はマイグレーション漏れと手動変更の混在で発生する]]
- [[instinct: manage.pyからscraper.pyを呼ぶ前に--group-id引数を明示的に渡しているか確認する]]
- [[instinct: playwright-serviceのProtocol errorは強制再起動+リトライで対処する]]
- [[instinct: playwright_serviceのwait_untilデフォルトをdmkt-sp等SPAに使うとタイムアウトが多発する]]
- [[instinct: スクレイピング対象サイトがCloudflare/403を返す場合事前にプロキシ要否とUser-Agentを検証する]]
- [[instinct: 新規ボットを追加する前にscraper_bots_helpers.pyのBOTS定義とscraper_bot_scheduleへの行を確認する]]
## PM2・デプロイ・CI(11件)
- [[instinct: CI deployはarcanaのみ反映でshadow/cureはdev/qaブランチpush時のみ同期される]]
- [[instinct: GitHub ActionsのCI変数をシェル直埋込みするとsyntax errorになる]]
- [[instinct: GitHub ActionsのPR本文に日本語・バッククォートが含まれるとシェル展開でexit 127になる]]
- [[instinct: GitHub Actions内でコミットメッセージを直接シングルクォートに埋め込むとshell escape破壊が起きる]]
- [[instinct: PM2 reloadの並列実行はReload already in progressエラーになる]]
- [[instinct: PM2 reloadコマンドは並列デプロイで競合エラーになるため直列化+リトライが必要]]
- [[instinct: PM2サービス再起動前にinvestlab-dailyが停止している理由をログで確認する]]
- [[instinct: PM2ログ全履歴参照で修正済みエラーが誤起票される]]
- [[instinct: idle-learn cronの実行頻度がClaude MAX枠を1日で食い尽くすことがある]]
- [[instinct: サービスONBOARDINGドキュメントを追加する前にリポジトリのdocsディレクトリ存在を確認する]]
- [[instinct: 外部API(EDINET等)を呼ぶプロセスをpm2登録する前にレートリミット対策と自動リスタート抑制設定を確認する]]
## LLM・AI・MCP(16件)
- [[instinct: AsyncLLMClientを初期化する前にプロバイダーがreasoning_effortパラメータに対応しているか確認する]]
- [[instinct: ENVIRONMENT×DATABASE_URL不整合は起動時のfail fastで本番誤書込みを防ぐ]]
- [[instinct: Gemini/Codexクォータ枯渇をファイルで記録してスキップすることで無駄な468エラーを防ぐ]]
- [[instinct: Hermes x_search は uvx 直接呼び出しが Hermes LLM 解釈層より速くて精度が高い]]
- [[instinct: LLMクライアントのリトライは用途別に系統A(固定2秒)と系統B(指数バックオフ)を分ける]]
- [[instinct: LLMモデルのEOLはHTTP 410 Goneで返り無告知で使えなくなる]]
- [[instinct: LLMモデル名を変更する前に全ボット共通のllm_client.pyを修正し他のタスクへの影響を確認する]]
- [[instinct: SPAサイトはwait_until=domcontentloadedでJS実行前のHTMLしか取得できずセレクタが空になる]]
- [[instinct: daily_once ボットのスケジュール判定は厳密時刻一致のためtick遅延でスキップが発生する]]
- [[instinct: human-onlyラベルのIssueはAIパイプラインの自動pickup対象から除外する]]
- [[instinct: in-progressラベルで人間とAIパイプラインの二重PR作成を防止する]]
- [[instinct: mcp wiki_add タイムアウトは古いMCPプロセスが旧IPを向いている]]
- [[instinct: task_driven_devのMAX_FAILURE_COUNT未設定は無限ループを引き起こす]]
- [[instinct: thumbnail UPDATEの行ロック競合は複数ボットが同一video_idを並列処理する時に発生する]]
- [[instinct: thumbnail_statusをsuccess固定にするとURL取得失敗分が287,034件蓄積する]]
- [[instinct: 新しいLLMプロバイダーを追加する前に/v1/modelsエンドポイントでモデルリストを取得できるかcurlで検証する]]
## GitHub・Git(9件)
- [[instinct: VitePressビルドスクリプトのログ先が/var/logの場合はnpm run buildで直接ビルドする]]
- [[instinct: VitePressビルドスクリプトのログ先が/var/logの場合は直接npm run buildで回避する]]
- [[instinct: branch-guardはsquash/rebaseマージのコミットメッセージパターンを正規表現で除外する]]
- [[instinct: bug_watchdogのdedupはcloseされたIssueをリセットしないと再発時に起票されない]]
- [[instinct: config.yamlのマルチプロバイダー設定を読む前にdoctorやpreflight_checkが環境変数しか見ていないか確認する]]
- [[instinct: git checkoutやresetを実行する前にworking treeに未追跡ファイルやstaged differencesがないかgit statusで確認する]]
- [[instinct: シークレットをMarkdown/Skillファイルに直書きするとgit historyに残り永続漏洩になる]]
- [[instinct: ハードコードシークレットはgitleaksで検出され履歴ごと消去が必要になる]]
- [[instinct: 廃止済みディレクトリに書き込む処理を追加する前にそのディレクトリが.gitignoreや削除済みか確認する]]
## 環境・設定・ファイル(10件)
- [[instinct: .envファイルのシークレットローテーションはpython-dotenvで読み込みをスクリプト内に閉じ込める]]
- [[instinct: SSH環境でPATHが通らずローカルインストールのCLIツールが見つからない]]
- [[instinct: devサーバー接続前にSSH不要設定を確認する]]
- [[instinct: pickle.loadはwith文を使わないとファイルディスクリプタが枯渇する]]
- [[instinct: settings.jsonにフックを登録する前にスクリプトファイルが存在することを確認する]]
- [[instinct: venvのpython3がシンボリックリンクの場合sys.executableで判定するとvenv検出が失敗する]]
- [[instinct: watchdogがssh自己接続しても自分のHost keyを検証できず失敗する]]
- [[instinct: yt-dlpパスをハードコードする前に環境変数またはwhichコマンドで実在パスを確認する]]
- [[instinct: ファイルに書き込む前に必ずread_fileで内容を読み込んでからwrite_fileを呼ぶ]]
- [[instinct: 定期実行タスクのロックファイルを作成する前に既存のロックファイルが残っていないか確認する]]
## vvv-bots固有(3件)
- [[instinct: BOTS辞書への登録漏れはtick APIで一切実行されない死角になる]]
- [[instinct: scheduler_tick から別リポジトリのモジュールをimportするとNo module named エラーになる]]
- [[instinct: 新規botを追加する前にbots/bot_registry.pyのBOTS辞書にキーが含まれているか確認する]]
## その他(13件)
- [[instinct: Alpine.jsはCSPのunsafe-evalなしで全インタラクティブ機能が無効になる]]
- [[instinct: FOR UPDATE SKIP LOCKEDでN件一括取得すると行ロックがHTTP処理全体に及ぶ]]
- [[instinct: INSERT/UPDATEを含むバッチ実行前にUNIQUE制約や外部キー制約を確認する]]
- [[instinct: SELECT→INSERTのTOCTOU競合はON CONFLICT DO NOTHINGで原子的に解決する]]
- [[instinct: bug_watchdogのdedupキーに時刻を含めるとDEDUP_MINUTESが機能しない]]
- [[instinct: pytest.iniとsetup.cfgの両方にマーカーを追加する前にどちらが優先されるか確認する]]
- [[instinct: サブモジュールのfeatureブランチを親リポジトリでマージする前にsubrepo側でも同ブランチを作成・マージ済みか確認する]]
- [[instinct: スクリプト実行前に仮想環境がactivateされているか確認する]]
- [[instinct: デイリードキュメント更新とDiscord通知を同一スクリプトにまとめる]]
- [[instinct: バッチINSERTの重複制約違反はON CONFLICT DO NOTHINGだけでは不十分な場合がある]]
- [[instinct: プロジェクトルート移動前に正しい作業ディレクトリ(/home/ubuntu/workspace)にいることを確認する]]
- [[instinct: 価格抽出ロジックを修正する前にScraplingオブジェクトのメソッドの違いを確認する]]
- [[instinct: 新メンバー向けオンボーディングの必須要素を確認する]]
mistakes-index