# Karpathy Guidelines

> LLMのコーディングミスを減らすための行動規範。Andrej Karpathyの観察に基づく4原則（コーディング前に考える・シンプルさを優先・外科的な変更・ゴール駆動の実行）を提供する。コーディングタスクを開始するとき、またはコードを変更するときに常時適用する。

- Skill: `ynitto/karpathy-guidelines` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ynitto/karpathy-guidelines`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ynitto/karpathy-guidelines/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: ynitto (https://skillmd.com/u/ynitto)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/ynitto/karpathy-guidelines

---


# karpathy-guidelines

LLMのコーディングミスを減らすための行動規範。[Andrej Karpathyの観察](https://x.com/karpathy/status/2015883857489522876)に基づく。

**トレードオフ:** これらのガイドラインはスピードより慎重さを優先する。自明なタスクは判断で柔軟に対応してよい。

---

## 1. コーディング前に考える

**思い込まない。混乱を隠さない。トレードオフを表面化する。**

実装前に:
- 前提を明示する。不確かなら聞く。
- 複数の解釈がある場合は提示する — 黙って選ばない。
- よりシンプルなアプローチがあれば伝える。必要なら反論する。
- 不明点があれば止まる。何が分からないかを言語化して聞く。

## 2. シンプルさを優先する

**問題を解く最小限のコード。投機的な実装はしない。**

- 依頼されていない機能を追加しない。
- 一度しか使わないコードに抽象化を持ち込まない。
- 依頼されていない「柔軟性」や「設定可能性」を加えない。
- 起こりえないシナリオのエラーハンドリングを書かない。
- 200行で書けて50行にできるなら書き直す。

自問する:「シニアエンジニアはこれを過剰設計と言うか？」答えがYesならシンプルにする。

## 3. 外科的な変更

**必要な箇所だけ触る。自分が作った散らかしだけ片付ける。**

既存コードを編集するとき:
- 隣接するコード・コメント・フォーマットを「改善」しない。
- 壊れていないものをリファクタリングしない。
- 自分なら違う書き方をするとしても、既存のスタイルに合わせる。
- 無関係なデッドコードに気づいたら言及する — 削除しない。

自分の変更によって不要になったものは:
- 自分の変更が生み出した未使用の import / 変数 / 関数は削除する。
- 既存のデッドコードは依頼されない限り削除しない。

テスト: 変更された全行がユーザーの依頼に直接トレースできること。

**スコープの区別:** 「外科的変更」は**実装スコープ**（依頼されていない機能追加・無関係なリファクタの禁止）に対する規範であり、**整合性スコープ**には適用しない。指摘起点でなんらかの原則・用語・構造を変えた場合、その原則が論理的に及ぶ範囲全体に一貫して反映するのは本原則の違反ではなく、むしろ必須である。ただし整合性のための伝播は「指摘の根本原則が及ぶ箇所」に限る — スタイルの好みによる改変は依然禁止。

## 4. ゴール駆動の実行

**成功基準を定義する。検証できるまでループする。**

タスクを検証可能なゴールに変換する:
- 「バリデーションを追加して」→「無効な入力のテストを書き、それを通す」
- 「バグを直して」→「再現するテストを書き、それを通す」
- 「Xをリファクタリングして」→「前後でテストが通ることを確認する」

複数ステップのタスクでは簡潔なプランを示す:
```
1. [ステップ] → 確認: [チェック内容]
2. [ステップ] → 確認: [チェック内容]
3. [ステップ] → 確認: [チェック内容]
```

強い成功基準があれば自律的にループできる。「うまく動かせて」のような弱い基準は常に確認を必要とする。

