en un clic
tdd
機能追加・バグ修正の前に使用。テストファーストで実装する規律スキル。
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Menu
機能追加・バグ修正の前に使用。テストファーストで実装する規律スキル。
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Basé sur la classification professionnelle SOC
作業の完了を宣言する前に使用。証拠なき完了宣言を防ぐ規律スキル。
AI agent の action space・tool 定義・observation format を設計し、completion rate を上げる。 agent harness を構築・最適化するときの語彙と判断軸を提供する。
AI agent 自身の failure (loop / drift / max tool call / 環境ズレ) に対する構造化 self-debug。 capture → diagnose → contained recovery → introspection report の 4 phase で、 retry blind を防ぎ human escalation の前に agent が自己修正する。
Chronistaとして活動するための包括的スキルセット。永続記憶、開発フロー、ドキュメント管理、インフラを統合。
Mac M-series で Rust binary を zigbuild で linux/amd64 に cross-compile → slim Dockerfile に COPY → docker buildx --push する開発ループ標準化。 sccache + zig cache + cargo target/ + buildx registry cache の多層 cache を仕込み、 2 回目以降は秒単位の image 更新を実現する。 GH Actions (cargo-chef + GHA cache 10 GiB 制限) からの脱却 path として使う。
コードレビューの実行手法と規律。スコープに応じて Quick / Standard / Deep モードを選択、team-bucciarati の Stand を観点別に dispatch。レビューする側 / 受ける側の両方をカバー。
| name | tdd |
| description | 機能追加・バグ修正の前に使用。テストファーストで実装する規律スキル。 |
| version | 1.0.1 |
| tags | ["discipline","testing","tdd","red-green-refactor"] |
テストを先に書け。失敗を見ろ。最小限のコードで通せ。
Core principle: 失敗を見ていないテストは、正しいものをテストしているか分からない。
ルールの文言を破ることは、ルールの精神を破ることだ。
常に:
例外(ユーザーに確認):
「今回だけTDDスキップ」と思った? それは合理化だ。
テストが先に失敗しない限り、プロダクションコードを書くな
テストより先にコードを書いた? 削除しろ。最初からやり直せ。
例外なし:
テストからフレッシュに実装しろ。以上。
digraph tdd_cycle {
rankdir=LR;
red [label="RED\nテストを書く\n(失敗する)", shape=box, style=filled, fillcolor="#ffcccc"];
green [label="GREEN\n最小限のコード", shape=box, style=filled, fillcolor="#ccffcc"];
refactor [label="REFACTOR\nきれいにする", shape=box, style=filled, fillcolor="#ccccff"];
red -> green [label="失敗を確認"];
green -> refactor [label="通過を確認"];
refactor -> red [label="次のテスト"];
}
1つの振る舞いを表す最小限のテストを書く。
// 良い例: 明確な名前、実際の振る舞いをテスト
test("3回リトライして成功する", async () => {
let attempts = 0;
const operation = () => {
attempts++;
if (attempts < 3) throw new Error("fail");
return "success";
};
const result = await retryOperation(operation);
expect(result).toBe("success");
expect(attempts).toBe(3);
});
要件: 1つの振る舞い、明確な名前、本物のコード(モックは最終手段)
必須。絶対にスキップするな。
bun test path/to/test.test.ts
確認:
テストが通る? → 既存の振る舞いをテストしている。テストを修正。
テストを通す最もシンプルなコードを書く。
// 良い例: テストを通すのに十分なだけ
async function retryOperation<T>(fn: () => Promise<T>): Promise<T> {
for (let i = 0; i < 3; i++) {
try {
return await fn();
} catch (e) {
if (i === 2) throw e;
}
}
throw new Error("unreachable");
}
テスト以上の機能追加、他コードのリファクタ、「改善」は禁止。
bun test path/to/test.test.ts
確認: テスト通過、他テストも通過、出力がクリーン。
GREENの後のみ: 重複除去、命名改善、ヘルパー抽出。テストは常にGREEN。振る舞い追加禁止。
| 言い訳 | 現実 |
|---|---|
| 「シンプルすぎてテスト不要」 | シンプルなコードも壊れる。テストは30秒。 |
| 「後でテスト書く」 | 後から書いたテストは即座に通る。それは何も証明しない。 |
| 「手動テスト済み」 | アドホック ≠ 体系的。記録なし、再実行不可。 |
| 「参考として残す」 | 見ながら書いたらテスト後書きと同じ。削除は削除。 |
| 「TDDは教条的」 | TDDは実用的。デバッグより速い。 |
| 「X時間の作業を捨てるのは無駄」 | サンクコストの誤謬。信頼できないコードこそ無駄。 |
すべて = コードを削除。TDDでやり直し。
バグ: 空メールが受け入れられる
RED:
test("空メールを拒否する", async () => {
const result = await submitForm({ email: "" });
expect(result.error).toBe("メールアドレスは必須です");
});
RED確認: FAIL: expected 'メールアドレスは必須です', got undefined
GREEN:
function submitForm(data: FormData) {
if (!data.email?.trim()) {
return { error: "メールアドレスは必須です" };
}
// ...
}
GREEN確認: PASS
REFACTOR: 複数フィールドのバリデーション抽出(必要なら)。
全部チェックできない? TDDをスキップした。やり直せ。
重要なテスト戦略の決定は creo-memories に記録を推奨:
t-wadaに突っ込まれないテストを書く。 テストの価値は「通ること」ではなく「失敗で問題を教えてくれること」。