# Development Principles

> 開発における基本原則（曖昧さ禁止、矛盾検出、推察禁止）を定義する。要件定義時、仕様確認時、設計レビュー時、またはユーザーが曖昧な要件、仕様の矛盾、不明点の確認、推測回避に言及した際に使用する。

- Skill: `majiayu000/development-principles` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/development-principles`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/development-principles/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/development-principles

---


# Development Principles

## 概要

このSkillは、開発を進める上での基本原則を定義する。曖昧さを排除し、矛盾を検出し、推察を避けることで、手戻りとバグを最小化し、開発効率を最大化することを目的とする。

## 責任範囲

このSkillは以下の範囲をカバーする:

- 曖昧な状態での開発禁止の原則
- 矛盾の検出と報告の方法
- 推察による回答禁止の原則
- 不明点の確認と明確化のプロセス

## 基本方針

- 仕様や要件が不明確な状態で開発を進めない
- ドキュメント間、仕様間、実装間の矛盾を発見した場合は即座に報告する
- ユーザーの意図や要件を推察せず、明示された情報のみに基づいて回答する
- 不明点があれば必ず質問し、明確化してから作業を開始する

## 曖昧な状態での開発禁止

### 原則

仕様、要件、期待される動作が不明確な場合、実装やドキュメント作成を進めず、必ずユーザーに質問する。

### 理由

曖昧さは手戻りとバグの温床となり、開発効率を著しく低下させる。

### 対応方法

不明点があれば必ず質問し、明確化してから作業を開始する。

### 曖昧さの検出

以下の場合は曖昧であると判断する:

- 仕様や要件が複数の解釈が可能
- 期待される動作が明示されていない
- 前提条件や制約事項が不明確
- 用語の定義が曖昧
- データ形式や範囲が明示されていない

良い例:

```text
ユーザー: 「ユーザー管理機能を実装して」

応答: 「ユーザー管理機能について、以下のどちらを想定されていますか？

A. **ユーザーの登録・編集・削除（CRUD）**: 基本的なユーザー管理機能
B. **ロールベースのアクセス制御（RBAC）**: 権限管理機能
C. **両方**: CRUD + RBAC
D. **その他**

推奨: **C（両方）**
一般的にユーザー管理機能には両方が含まれることが多いため。」
```

悪い例:

```text
ユーザー: 「ユーザー管理機能を実装して」

応答: 「承知しました。ユーザー管理機能を実装します。」
（曖昧な状態で実装を進めてしまう）
```

### 不明確な要件への対応

以下のプロセスで対応する:

1. **曖昧さを検出**: 要件や仕様に不明確な部分がないか確認する
2. **質問を作成**: 不明点を明確にするための質問を作成する
3. **選択肢を提示**: 想定される選択肢を提示し、ユーザーが選びやすくする
4. **確認を得る**: ユーザーからの回答を得て、要件を明確化する
5. **作業を開始**: 明確化された要件に基づいて作業を開始する

## 矛盾を無視しない

### 矛盾検出の原則

ドキュメント間、仕様間、実装間の矛盾を発見した場合、即座に報告し、解決方法をユーザーに確認する。

### 矛盾を放置する影響

矛盾を放置すると、後続の開発に悪影響を及ぼし、問題が拡大する。

### 矛盾発見時の対応

矛盾を発見した時点でユーザーに確認を求める。

### 矛盾の検出

以下の場合は矛盾があると判断する:

- ドキュメント間で記述が異なる
- 仕様と実装が一致しない
- 要件定義と設計書の内容が矛盾する
- 複数の制約条件が同時に満たせない
- 前提条件と実装方針が矛盾する

良い例:

```text
「要件定義書では『ユーザー登録時にメール認証を必須とする』と記載されていますが、
設計書では『メール認証はオプション』と記載されています。
どちらが正しいか確認させてください。

A. **メール認証を必須**: 要件定義書の記述が正しい
B. **メール認証はオプション**: 設計書の記述が正しい
C. **その他**

推奨: **A（メール認証を必須）**
セキュリティの観点から、メール認証を必須とする方が安全なため。」
```

悪い例:

```text
「要件定義書ではメール認証が必須と記載されていますが、設計書ではオプションと記載されています。
設計書の方が新しいので、オプションとして実装します。」
（矛盾を発見したが、確認せずに進めてしまう）
```

### 矛盾への対応

以下のプロセスで対応する:

1. **矛盾を検出**: ドキュメント、仕様、実装間の矛盾を発見する
2. **矛盾を報告**: どこに矛盾があるかを明確に報告する
3. **選択肢を提示**: 矛盾を解決するための選択肢を提示する
4. **確認を得る**: ユーザーからの回答を得て、矛盾を解決する
5. **作業を継続**: 矛盾を解決した後、作業を継続する

## 推察による回答の禁止

### 推察禁止の原則

ユーザーの意図や要件を推察せず、明示された情報のみに基づいて回答する。ユーザーが明示的に述べていない要件、仕様、または期待される動作を推察して回答・実装しない。過去のやり取りから推測される内容であっても、現在の文脈で明示されていない限り、確認を求める。

### 推察による悪影響

不正確な情報は誤った意思決定を招き、プロジェクト全体に悪影響を与える。

### 不明点への対応方法

「わからない」「確認が必要」と明言し、適切な情報源を示す。

### 推察が必要な状況の検出

以下の場合は推察が必要であると判断する:

- ユーザーが明示的に述べていない要件や仕様が必要
- 過去のやり取りから推測される内容がある
- 暗黙の前提条件がある可能性がある
- 類似のケースから推測できる内容がある
- 一般的な慣習や標準があるが、明示されていない

良い例:

```text
ユーザー: 「データベースにユーザー情報を保存して」

応答: 「ユーザー情報の保存について、以下の点を確認させてください。

1. 保存するユーザー情報の項目はどれですか？

A. **基本情報のみ**: 名前、メールアドレス、パスワード
B. **基本情報 + プロフィール**: 基本情報に加えて、生年月日、住所、電話番号
C. **その他**

推奨: **A（基本情報のみ）**
最小限の情報から始めて、必要に応じて追加する方が安全なため。」
```

悪い例:

```text
ユーザー: 「データベースにユーザー情報を保存して」

応答: 「承知しました。ユーザー情報（名前、メールアドレス、パスワード、生年月日、住所、電話番号）を
データベースに保存します。」
（ユーザーが明示していない項目を推察して決定してしまう）
```

### 推察が必要な場合の対応

以下のプロセスで対応する:

1. **推察が必要な箇所を特定**: ユーザーが明示していない情報を特定する
2. **質問を作成**: 不明点を明確にするための質問を作成する
3. **選択肢を提示**: 想定される選択肢を提示し、ユーザーが選びやすくする
4. **確認を得る**: ユーザーからの回答を得て、情報を明確化する
5. **作業を開始**: 明確化された情報に基づいて作業を開始する

## チェックリスト

### 作業開始前

- [ ] 仕様や要件が明確に定義されている
- [ ] 期待される動作が明示されている
- [ ] 前提条件や制約事項が明確である
- [ ] 用語の定義が明確である
- [ ] データ形式や範囲が明示されている
- [ ] ドキュメント間、仕様間、実装間に矛盾がない

### 作業中

- [ ] 曖昧な部分を発見した場合、即座に質問している
- [ ] 矛盾を発見した場合、即座に報告している
- [ ] 推察が必要な箇所を特定し、確認を求めている
- [ ] ユーザーの意図や要件を推察せず、明示された情報のみに基づいて作業している
- [ ] 不明点があれば必ず質問し、明確化してから作業を進めている

### 作業完了後

- [ ] 実装が仕様や要件と一致している
- [ ] ドキュメントと実装に矛盾がない
- [ ] 曖昧な部分が残っていない
- [ ] すべての不明点が解決されている

