بنقرة واحدة
bug-fix-protocol
バグ修正時のリグレッションテスト作成義務と、グローバル状態共有の禁止ルール。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
バグ修正時のリグレッションテスト作成義務と、グローバル状態共有の禁止ルール。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
CSW のユーザー向け UI・コピーの正典。ユーザー向け語彙(「環境」)、共有モードの3語(共有/分離/コピー)、選択行の見せ方(塗りのみ)、メニューバーを主機構にしない、コピーの一次ソースは LP、Claude 本体の現行用語への追従、並列 UI の分量・文体、禁止記号(em-dash/※/絵文字)を定める。アプリ UI・LP・docs のラベル/モード名/説明文/マイクロコピーを作る/変える前に読む。
用語・概念・UI・コピーを1箇所変えたら、全サーフェス(アプリ UI・トレイ・docs ja/en・README ja/en・LP ja/en・スクリーンショット・OG 画像)へ同時反映し、旧表現を全リポ grep で残存ゼロ確認する。スクショ等の非テキスト派生物は grep に映らないので明示列挙して再生成する。UI・用語・コピーを変えたら発動。
PR をマージする際のレビュー・マージ実行チェックリスト (Rust + Tauri v2 / CSW)。スコープ外変更・安全装置の格下げ・テスト負債・高リスクインフラファイル改変を検出し、CI green を確認したうえで自律的に squash merge する手順を定義する。
CI (GitHub Actions の Test / Build / Security job) が想定時間を大幅に超過した場合のハング検出と cancel / rerun フロー。macos-latest runner の混雑や cargo の依存取得・コンパイル stall 等、transient な GHA 側障害の典型対処。CI が想定より長く `in_progress` のまま動かない時に発動。
日本語の見出し・本文の折り返し / タイポグラフィ品質ゲート。日本語 UI・LP・ドキュメントのコピーやフォントサイズ、改行、行間に触れる前に必ず読む。英語の折り返しルールをそのまま日本語に当てると崩れる(禁則・文節・字面密度が違う)ため、JP 専用の規則・モダン CSS・モジュラースケール・実機検証手順を正典化する。design-taste-frontend を補完する JP 特化スキル。
LP(website/) と人間向けドキュメント(docs/・README) と実装(crates/) が「同じ一つの事実」を語っているかを横断監査する。用語・アーキテクチャ・CLI 表面・機能主張・ja/en 整合・禁止表現を点検し、不整合を file:line と修正案つきで報告する。リリース前やドキュメント/LP/実装を変えた後に実行する read-only 監査。
| name | bug_fix_protocol |
| description | バグ修正時のリグレッションテスト作成義務と、グローバル状態共有の禁止ルール。 |
[!CAUTION] テストの Source of Truth は「現在のコード」ではなく「仕様(
docs/SPECIFICATION.md)」である。
バグ修正は必ずこの順序で行う:
cargo test --workspace で既存テストへの影響を確認[!CAUTION] 「修正してからテストを書く」は禁止。 テストがバグを検出できるか保証できなくなる。
AIが「現在のコードの挙動」を正解としてテストを書くと、バグを保護するテストが生まれる。
docs/SPECIFICATION.md / README.md の仕様から導出するdocs/SPECIFICATION.md に仕様を追記してから実装CSW はプロファイルごとにデータ(ディレクトリ・Keychain)を完全に分離するアプリであり、共有されたグローバル状態はプロファイル間の漏洩バグの温床になる。テストでもプロセスグローバルな可変状態を共有しない(並列テストで競合・偽合格を生む)。
// ❌ プロセスグローバルで全テストが状態を共有 → 並列実行で競合
static MOCK_STORE: Lazy<Mutex<HashMap<String, String>>> = Lazy::new(|| Mutex::new(HashMap::new()));
// ✅ スレッドローカルでテストごとに独立(MockKeychainProvider が採用している方式)
thread_local! {
static MOCK_STORE: RefCell<HashMap<String, String>> = RefCell::new(HashMap::new());
}
実コードでも、あるプロファイルの操作が別プロファイルの Keychain / データに波及しないことを常に保証する。
| 観点 | テスト内容 |
|---|---|
| データ分離 | プロファイル A への操作がプロファイル B に影響しない |
| 初期状態 | 新規プロファイルは空データ(または明示した共有元)で開始 |
| 永続化整合性 | 退避したデータが復元で正しく戻る |
| 並列安全性 | テストを並列実行しても Keychain モック等の共有状態が競合しない |
| default の特別扱い | default プロファイルが実ユーザーディレクトリを指す分岐が正しく動く |