add-npm-package
Freemodules/npm/packages/ に新しい npm/pnpm パッケージを追加するスキル
The English summary is being prepared. Showing the original description.
テストの追加・修正・削除、または実装後の検証方針を判断するときに使う。タスクごとに反射的な回帰テストを増やさず、守るべき仕様、不安な仕様、実際に使われる経路、事前条件と事後条件を中心にテストを設計するためのスキル。
The English summary is being prepared. Showing the original description.
See how to installReview the instructions the agent will receive before you install.
テストは「実装したから書く」ものではなく、「壊れてほしくない仕様を固定する」ために書く。
依頼された挙動を毎回そのまま回帰テストとして追加しない。まず、そのテストが将来どの誤変更を防ぐのか、既存テストや型で既に守られていないかを確認する。
タスクが正しく行われたかの確認と、将来の仕様を守るテストは別物である。確認は実行、出力や生成物の確認、一時的なスクリプトで行ってよい。テストスイートに残すのは、テスト追加の判断を通ったものだけにする。
テスト対象は内部実装ではなく、利用者から見える振る舞い、ドメインルール、不変条件、境界処理、外部システムとの接点にする。テストでは事前条件と事後条件を表し、途中でどの関数が何回呼ばれたかを知りすぎないようにする。
仕様を守る手段には順序がある。上の手段で守れた仕様は、下の手段で重ねて守らない。
テストの維持コストは、ドメインに近いほど低く、presentation に近いほど高い。書く時点の手間はどの層でもほとんど変わらないため、書きやすさを層選びの根拠にしない。同じ仕様を守れるなら、最も内側の層で書く。同じ仕様を複数の層でテストするのは、各層で守る仕様が異なると言い切れる場合に限る。
テストを書く前に、その仕様を型で消せないかを先に検討する(「仕様を守る手段の順序」を参照)。型で消せるなら、テストではなく設計で守る。
優先してテストを書く場面:
テストを足さない判断をしてよい場面:
テストを追加する場合は、そのテストが将来どの誤変更を防ぐのか説明できるようにする。
次のシグナルに当てはまるテストは、タスクの確認をテストの形で残そうとしている可能性が高い。書く前に、テスト追加の判断へ戻る。
「利用者から見える」「外部との境界に関わる」に見えても、その内容が型や生成器から機械的に導かれるなら、まず型側の保証で足りないかを確認する。なお、公開 API の後方互換のためにスキーマ全体を契約として検査する仕組み(スキーマ diff の CI チェックなど)は仕様の保護であり、これはフィールドごとの存在 assert をタスクごとに積むこととは別物である。
エラーレスポンスのマッピングも同じ区別で扱う。status code や errorCode が外部との契約なら、守る手段はマッピング表全体を 1 箇所で検査する契約テストやスキーマ検査であり、タスクごとに個別のエラーを assert することではない。契約テストでも、対象は安定した識別子(status code、errorCode)に限定し、説明文の文言は assert しない。
タスクの確認が必要なら、テストを残す代わりに一時的な手段で検証し、報告では「どう検証したか」「テストとして残すもの」「残さない理由」を分けて述べる。
守りたい仕様がある場合は、できるだけ実際に使われる経路に沿ってテストする。
「入口から確認する」と「最も内側の層で書く」は矛盾しない。ドメイン層でテストした仕様について、実際の経路がその層を必ず通ることを型が保証しているなら、入口からの重複テストは不要である。型が保証していない配線は、外側の層の固有の責務としてテストする。
テストは、原則として事前条件と事後条件に集中する。
避けるもの:
望ましいもの:
mock は外部境界を切り離すための道具であり、内部実装を固定するための道具ではない。
テストを書いた後、または書かない判断をした後に行う。差分と守るべき仕様だけを渡された第三者でも同じ結果になるように、対象を列挙してから、対象ごとの問いに答える。誰がこのレビューを行うかは、このスキルでは決めない。実装の進め方を管理する側に従う。
手順:
追加・変更したテストごとの問い:
削除したテストごとの問い:
テストを書かない判断ごとの問い:
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.
modules/npm/packages/ に新しい npm/pnpm パッケージを追加するスキル
The English summary is being prepared. Showing the original description.
install/ 配下に新しいセットアップ用シェルスクリプトを追加するスキル
The English summary is being prepared. Showing the original description.
GitHub issue を新規作成・下書きするとき、または既存 issue の本文を書き直すときに必ず使うスキル。「issue を作って」「issue 化して」「これを issue にまとめて」のような依頼で発火し、`gh issue create` を直接呼ぶ前に必ず参照する。人間が合意した内容だけを、意味を足さずに issue へ残すための基準を定める。
The English summary is being prepared. Showing the original description.
GitHub に Pull Request を作成するスキル。ユーザーが「PRを作って」「プルリクエストを出して」「PR作成して」と言ったとき、またはコミット済みの変更をレビューに出したいときに使用する。
The English summary is being prepared. Showing the original description.
ドメインモデル、可視性、操作可能性、不変条件、層境界、API 設計に関わる実装時に使う。不正な状態や誤った呼び出し方を、型、関数の境界、ドメイン語彙で表し、正しい使い方が自然になる設計へ寄せるためのスキル。
The English summary is being prepared. Showing the original description.
コミットやPR作成の前に、作業ブランチが適切かどうかを確認・切り替えるスキル。git-commit や create-pr からサブルーチンとして呼び出される。
The English summary is being prepared. Showing the original description.