mcpField
K
keep-it-working

keep-it-working

github.com/growthx-clubテスト・品質0167 回インストール5 週間前に更新
リポジトリ

keep-it-working について

keep-it-workingは、スプリント開発者やコーディングエージェント向けのテストスキルです。リスクに応じて必要最小限の確認方法を選び、過去に起きた不具合にはテストを追加します。

主な機能

  1. 01リスクに応じたテスト段階
  2. 02テストファーストの判断指針
  3. 03過去の不具合への回帰テスト
  4. 04テストの妥当性を保つ助言

活用シーン

  1. 01新機能に適した確認方法の選択
  2. 02不具合の再現と修正の固定
  3. 03テストランナー導入の判断

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/growthx-club/build-sprint-skills --skill keep-it-working

インストール後、Claude Code で/keep-it-workingを入力して読み込まれたか確認します。

詳細

動作を維持する

目標はテストではありません。今日動くようになったものが、あと40回変更を加えた後も、何に触れてはいけないのかを知らないエージェントがいても、デモ当日に動くことです。

だから機能を追加するたびに考えるのは、「テストを書くべきか」ではありません。これが壊れたら気づけるか、気づかなかった場合にどれほどまずいかです。この2つに答えれば、どのレベルにするかは自ずと決まります。

段階

失敗を実際に検出できる、最も手軽な段階を選びます。リスクに見合わないほど上の段階に進むと、2週間のスプリントがテストプロジェクトになってしまいます。

段階使う場面やること
1. 見て確認するレイアウト、文言、色、余白など、見ればすぐに失敗がわかる場合ページを開いて、見る。それだけです。ここではテストを書いても割に合いません
2. 一連の流れをたどるサインアップ → 作成 → 一覧で確認、のように、クリックして最後までたどれる複数ステップのフロー実行中のアプリを最初から最後まで一度操作し、確認できたことを報告します。セットアップもファイルも不要です。playwright を参照してください
3. テストを1つ書く壊れても気づきにくい場合や、手作業での確認に1分以上かかる場合 — バックグラウンドジョブ、Webhook、データベースへの往復処理など正常系のテストを1つ書きます。テストスイートではありません。フロー全体の場合は playwright を使います
4. 先にテストを書くコードが存在する前にルールを明確に述べられる場合、または再現できるバグを修正する場合失敗するテストを書き、失敗することを確認してから、テストが通るようにします

テストファーストが本当に役立つとき

これは信条ではなく、計算です。次のような場合は、先にテストを書きます。

  • 入力と出力を含む文でルールを説明できる。 「₹2000を超える注文は送料無料。ただし海外配送を除く。」料金、スコアリング、利用枠、上限、権限、日付計算などです。その文自体がテストになるため、先に書く手間はほとんどかからず、コードが勝手に逸れてしまう前にルールを明確にできます。
  • バグを再現できる。 必ずそうします。引き起こせるバグなら1分でテストを書けます。また、それが修正の効果を確認し、その後も修正されたままであることを確かめる唯一の方法です。これは、スプリントプロジェクトにおいて最も価値の高いテストです。
  • 分岐が多い。 空、1件、複数件、多すぎる、型が違う、有効期限切れ、使用済みなどです。クリックして5つのケースを確認するくらいなら、2回目以降はコードで確認するほうが速くなります。
  • 何度も変更する予定がある。 すでに一度書き直したものは、また書き直すことになります。

次のような場合は、先にテストを書きません。

  • 見た目に関すること。 テストには見えません。段階1または2を使います。
  • まだ何が正しいのかわからない。 調査して動くようにしてから、テストを書く価値があるなら、テストで明確にします。先に調査するのは問題ありません。ただし、調査のままで終わりにしないでください。
  • 一度きりのもの。 一度だけ実行するマイグレーション、偽データを投入するスクリプト、破棄することがすでに決まっているプロトタイプなどです。

譲れないルール

一度でも壊れたものには、必ずテストを付けます。 判断の余地も段階分けもありません。一度壊れたものは、また壊れる可能性があります。そして今なら、どうすればその状態を引き起こせるかが正確にわかっています。

これが、スプリントで最悪のパターンを防ぎます。火曜日に何かを直し、木曜日にエージェントが気づかないうちにまた壊し、デモまで誰も気づかない、というパターンです。

テスト環境は、必要になるまで構築しない

スプリント用スタックにはテストランナーが含まれていません。それで正しいのです。ほとんどの作業は段階1と2で済むからです。

変更が初めて本当に段階3または4に該当したとき、必要最小限のランナーをインストールし、そのテストを1つ書きます。設定ファイルでも、テストスイートでも、カバレッジでもありません。セットアップにスプリントの数分以上かかりそうなら、そのことを伝えて段階2を提案し、どちらにするかは相手に選んでもらいます。

テストが存在するようになったら

  • 変更の内容に関係なく、変更のたびにテストを実行してください。
  • テストスイートが失敗したら、そこで止めてください。新しいものを追加する前に修正してください。失敗したテストスイートの上に積み重ねると、午後があっという間に消えてしまいます。
  • 自分が原因ではないものも含め、失敗はすべて名前を挙げて報告してください。赤いテストが何も言われないままスクロールして流れていくのは、言わないことで嘘をつくようなものです。
  • テストに誠実さを保ちましょう。名前は動作を表し、アサーションはモックではなく実際の動作を対象にし、1つのテストでは1つの動作だけを検証します。失敗しないテストは、誤った安心感を与えるぶん、テストがないよりも悪いものです。

これについてどう話すか

「テストを書いておくべきでしたね」とは絶対に言わないでください。彼らは出荷する方法を学んでいる最中です。そして、罪悪感を抱えなくて済むように、この段階的な手順があります。

守る価値のあるものと、そのためにかかるコストを伝えてください。「料金ルールは気づかないうちに壊れやすいタイプです。2分でしっかりテストできますが、やってみますか?」と。それから、相手の答えを尊重してください。断られたら、それを記録して次に進みましょう。どちらの場合でも、checkpoint はそのまま利用できます。

テストがリグレッションを検出したら、そのことを声に出して伝えてください。その瞬間に、この考え方の価値が自ずと伝わります。


これは私たち独自のものです。レッド・グリーンの規律とテストの誠実さに関するルールは、obra/superpowers(MIT License)を参考にしています。段階的な手順と「いつ効果を発揮するか」という判断の仕組みは私たち独自のもので、スプリントで開発する人たちには、まず出荷し、その後に証明する必要があるからです。

コメント